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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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 Meszaros and Devin 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