Commit Graph
547 Commits
Author SHA1 Message Date
Matthew Meszaros 0ca6e7e642 feat: let the confirm-it-is-you prompt offer only the methods an account has, adding passkey, Google/Apple/SSO popup and native iOS Apple/Google re-authentication bound to the session and linked identity, across backend, dashboard, admin, iOS and docs 2026-10-15 15:26:25 +02:00
Matthew Meszaros 2acacc87a7 feat: refresh the shared warmup seven-day snapshot on a detached context while serving the previous one, and derive the Emails tab status chunk layout from committed state instead of writing a ref during render 2026-10-14 12:39:53 +02:00
Matthew Meszaros 3d238f403d feat: cut database CPU by serving the warmup partner cap from a live today count plus a shared seven-day snapshot, batching the Emails tab status reads into a fixed query count per page, indexing the tasks and warmup scans, bounding the contact verification sweep, skipping existing leads in segment sync, and throttling pool-link and Graph cursor writes 2026-10-14 12:14:18 +02:00
Devin AI 6a6cc3d94a feat: stabilize mailbox status query options and combine callback to avoid repeated aggregation 2026-10-14 03:35:28 +00:00
Devin AI ca0bc79f3c feat: reuse dashboard paginated lists across unchanged renders without altering fetch lifecycle 2026-10-14 03:35:28 +00:00
Matthew Meszaros 19d8d24fac feat: add Apollo integration (API key connect, list imports with hourly sync, contact enrichment) and two-way Clay integration (inbound row URL creating contacts, outbound event rows, automation action) with dashboard pages, brand logos, Discover ranking, org transfer registration and docs 2026-10-11 12:41:56 +02:00
Matthew Meszaros 3ba5913569 feat: add a skippable chaptered dashboard product tour narrated by Remie with sample-data scenes, plan comparison and selection (hosted links and Warmbly Cloud on self-host), saved per account via PUT /auth/me/product-tour 2026-10-10 18:52:21 +02:00
Matthew MeszarosandDevin AI 44bb752482 feat: keep campaign mailboxes sending around durable recovery holds and reconcile uncertain outcomes
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-10 04:20:12 +00:00
Devin AI 4758216dbf feat: integrate current monitoring and member access changes with durable mailbox synchronization 2026-10-09 16:56:53 +00:00
Matthew Meszaros 1c325b7a87 Merge pull request #903 from warmbly/devin/1791559441-admin-monitoring-final
feat: show evidence-based admin monitoring and truthful mailbox refresh states
2026-10-09 16:38:53 +00:00
Matthew Meszaros a8ddfc65ec feat: isolate admin sign-in caches, retain cached probe outcomes and clear recovered mailbox issues per measured source 2026-10-09 16:27:20 +00:00
Matthew Meszaros 2033fb8a36 feat: retain recent mailbox issues as dated historical evidence during refresh and remove misleading aggregate monitoring links 2026-10-09 16:27:20 +00:00
Matthew Meszaros cdb102ca56 feat: keep mailbox health and usage unknown until Cloud and account status checks finish with refresh and incomplete-data regressions 2026-10-09 16:27:20 +00:00
Devin AI 445e014b5e feat: recover mailbox synchronization across Gmail Outlook and IMAP with encrypted arrival replay and safe worker lifecycle 2026-10-09 14:24:10 +00:00
Matthew Meszaros bb4156cc6a feat: add resource-scoped member access that restricts a member to selected campaign folders, campaigns and mailboxes read-only, enforced in the API route gate, SQL filters, permission trigger, realtime channels and dashboard 2026-10-09 13:34:05 +02:00
Matthew MeszarosandDevin AI d7a9563e3f feat: expire stale warmup failure warnings and alert persistent fleet stalls while safely retrying blocked dispatches
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-09 05:37:56 +00:00
Matthew Meszaros 676445a6ee Merge pull request #888 from warmbly/devin/1791517488-campaign-mailbox-admission
feat: enforce per-mailbox campaign caps and configurable variable sending defaults
2026-10-09 04:56:33 +00:00
Matthew Meszaros b95655c358 Merge remote-tracking branch 'origin/main' into fix888 2026-10-09 06:40:54 +02:00
Matthew Meszaros c513fd2d93 Merge pull request #893 from warmbly/fix/oauth-dynamic-client-registration
feat: mark unverified OAuth apps as not affiliated with Warmbly and reserve the Warmbly name in app names
2026-10-09 04:30:25 +00:00
Matthew Meszaros 1386dac607 Merge pull request #892 from warmbly/feature/campaign-positive-reply-analytics
feat: positive replies, positive reply rate and interested leads in campaign analytics
2026-10-09 04:28:22 +00:00
Matthew Meszaros db32f2347d feat: mark unverified OAuth apps as not affiliated with Warmbly on the consent screen, reserve the Warmbly name in third-party app names (registration, edit, import, and self-registered clients), and show no website for self-registered clients 2026-10-09 06:19:09 +02:00
Matthew Meszaros b9cc87db1a feat: enable configurable 28–32 daily mailbox sending plans with admission rechecks, clear limit controls and consistent UTC placement budgets 2026-10-09 04:18:52 +00:00
Matthew Meszaros fd1c333402 feat: add positive replies, positive reply rate, interested leads and a reply-class breakdown to campaign analytics (summary, per-step, daily series, AI tool, OpenAPI, Zapier/Make samples), show them on the campaign overview with a reply quality card, positive chart series and step column, mirror them in the iOS models, document them, and seed classified replies plus a proof flow 2026-10-09 06:08:28 +02:00
Matthew Meszaros 6d88588350 feat: filter the Analytics dashboard by campaigns and campaign folders (campaign_ids/folder_ids on GET /analytics/dashboard, resolved server-side to one deduplicated org-scoped set), with a picker on web, a filter sheet on iOS, CLI flags, an AI tool argument, and API, OpenAPI and guide docs 2026-10-09 06:04:31 +02:00
Matthew Meszaros f3f4e8cafd feat: persist user and workspace scoped inbox filters search sort and nested browsing controls while recomposing URL scopes tag membership and relative dates across refreshes 2026-10-08 07:37:36 +00:00
Matthew MeszarosandDevin AI b4ef37fe82 feat: restore existing self-host realtime connections through normalized legacy gateway URLs and an authenticated API-origin WebSocket proxy, preserve ticket-bound client IP limits and direct retry fallback, and remember workspace mailbox tag filters across navigation with deterministic default account grouping
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-08 06:57:48 +00:00
Matthew Meszaros 706beca2f7 feat: integrate workspace-scoped Cloud ownership with durable consent restrictive standing and send safety while preserving legacy enrollments and renumbering unreleased upgrade migrations 2026-10-07 16:32:30 +00:00
Devin AI d090b8e021 feat: complete native and Cloud diagnostic consent immutable shared provider attempt accounting authorized bounded IMAP timing retries conservative feedback pacing and released-schema correction fixtures 2026-10-07 15:12:45 +00:00
Matthew MeszarosandDevin AI 2926f888c2 feat: allow unlimited self-hosted workspaces and bind Cloud billing access to individual workspace links while preserving legacy enrollments
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-07 13:49:42 +00:00
Devin AI 8e53fc7027 feat: integrate warmup observation evidence canonical diagnostics send-result recovery cloud trust exact-parent lineage durable dispatch portability and legacy compatibility 2026-10-07 12:38:58 +00:00
Matthew Meszaros cfa948602d Merge pull request #855 from warmbly/devin/1791292066-filter-report-notifications
feat: filter system reports from reply notifications and default the bell to unread
2026-10-06 14:00:00 +00:00
Matthew MeszarosandDevin AI 25514e13f6 feat: align reply notifications and queued delivery with Unibox machine-mail filtering and open the bell on unread
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-06 13:21:14 +00:00
Matthew Meszaros 705651e01a Merge remote-tracking branch 'origin/main' into feat/flow-builder-redesign
# Conflicts:
#	web/src/app/app/campaigns/[id]/steps/page.tsx
2026-10-06 05:24:33 -07:00
Matthew MeszarosandDevin AI 0f12b3b250 feat: preserve static CSP preview and runtime configuration cache rules with current main
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-06 06:05:17 +00:00
Matthew MeszarosandDevin AI 589bc823ed feat: generate static dashboard CSP hashes and isolate email preview styling across Vite nginx and Pages
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-06 05:46:52 +00:00
Matthew Meszaros 8d8135c30c feat: document the self-laying campaign and automation canvases in the sequences, campaigns, collaboration and realtime guides, correct the step position and empty-branch model comments, and add a campaign steps proof flow 2026-10-05 22:13:44 -07:00
Matthew Meszaros d25055c122 feat: rebuild the campaign step builder on the shared tree canvas with conditions as columns, waits on the lines, a step picker, path and step side panels with unsaved-change guards, reconnect-on-delete, and switch cases that keep their paths through a rename 2026-10-05 22:10:23 -07:00
Matthew Meszaros b553c61db1 feat: drop the automation canvas layout hook and client now that the builder derives positions from the flow's structure 2026-10-05 21:57:32 -07:00
Matthew MeszarosandDevin AI 9d0f43780b feat: provision onboarding-complete reviewer workspaces with expiring Test access, bounded credits and Test header labels
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 16:15:56 +00:00
Matthew Meszaros e19c55ebd6 feat: match the text/html media type case-insensitively in the dashboard client's web-page guard and cover a mixed-case Content-Type in Client.test.ts 2026-10-05 17:14:41 +02:00
Matthew Meszaros 0731a8c788 feat: refuse an HTML page as an API response in the dashboard client (api_url_not_api) so a missing or wrong API_URL falls back to the unreachable login state instead of crashing, and serve config.js with Cache-Control no-store from the dashboard and admin Pages _headers to match the nginx images 2026-10-05 17:04:05 +02:00
Matthew Meszaros 549a0f7293 Merge pull request #833 from warmbly/devin/1791173929-safari-oauth-popups
fix: open OAuth sign-in windows inside the click so Safari stops blocking them, and keep listening when one is blocked
2026-10-05 10:00:02 +00:00
Matthew Meszaros 01aae25483 Merge pull request #834 from warmbly/devin/1791174213-turnstile-trusted-device
feat: light, input-width Turnstile, one captcha per sign-in, and opt-in remembered devices
2026-10-05 08:37:40 +00:00
Matthew Meszaros 76ae0fcef2 Merge remote-tracking branch 'origin/main' into devin/1791173929-safari-oauth-popups
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

# Conflicts:
#	web/src/router.tsx
2026-10-05 06:10:59 +00:00
Matthew MeszarosandDevin AI 9eb109559f feat: send OAuth sign-in windows that lost their opener (allowed from a blocked-popup prompt) back to the waiting dashboard tab via a new /oauth-return page and same-origin BroadcastChannel, marking dashboard-started mailbox states so the native app keeps its warmbly:// callback
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 05:40:23 +00:00
Matthew MeszarosandDevin AI 55d1b9a634 feat: link Slack members to Warmbly automatically by matching email, add Continue with Slack (Sign in with Slack) for mismatched emails, and move the Slack link page to a standalone /slack/link screen
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 05:00:22 +00:00
Matthew MeszarosandDevin AI e77e2dd98b feat: light, input-width Turnstile on the auth screens, one captcha per sign-in instead of a second one on the code step, and an opt-in 30-day remembered device that skips the emailed login code with a random server-hashed account-bound token, revoked on password reset or change and on signing out everywhere or other sessions
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 04:32:15 +00:00
Matthew MeszarosandDevin AI b54b840bd1 Merge origin/main into refactor/dashboard-tanstack-start-spa
Port the Pipedrive CRM work onto TanStack Router: add the
integrations/pipedrive route, move ConnectionDetail, CrmSettings and
crmMode off react-router-dom, and drop hubspotCrm.tsx (replaced by
crmMode.tsx on main).

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-04 18:17:21 +00:00
Matthew Meszaros b828723889 feat: keep the dashboard unibox loader to a cold cache so opening a thread never reloads the list, retry a dashboard boot that failed, undo optimistic edits only where the cache still holds them, hold blocked navigations during the unsaved-changes confirm, keep shell scroll offsets apart from list offsets, share the label count query, and trim new comments 2026-10-04 10:59:19 -07:00
Matthew Meszaros 7980079f3e feat: move the dashboard to TanStack Router with lazy route chunks, hover preloading, route loaders that prefetch each page's data, a parallel session boot behind an app-frame skeleton, self-hosted preloaded Inter to end the load flash, and optimistic updates for frequent mailbox, campaign, CRM, label and template actions 2026-10-04 10:38:14 -07:00