Commit Graph
613 Commits
Author SHA1 Message Date
Matthew Meszaros 2730de2bff feat: add campaign rich text editor
Add a TipTap-based campaign step editor with formatting controls, link editing, personalization variables, and spintax insertion.
2026-06-04 18:57:30 +02:00
Matthew Meszaros 25cf6d044f feat: polish campaign step controls
Persist wait-day edits only at commit points and use the shared in-app confirm flow for deleting campaign steps. Update sequence deletion cache handling so one mutation instance can remove any step.
2026-06-04 18:57:24 +02:00
Matthew Meszaros cdb2eaa229 feat: add analytics share preview
Add preview sizing, copy-to-clipboard, and improved PNG rendering for analytics share cards. Refresh the exported share card visuals and keep chart bars constrained for compact layouts.
2026-06-04 18:57:08 +02:00
Matthew Meszaros f72952803e feat: add explicit campaign sender picker
Load campaign senders for explicit sender strategy and persist the selected mailbox pool through the campaign sender endpoint. Add a reusable account selector in campaign preferences.
2026-06-04 18:57:02 +02:00
Matthew Meszaros 40413db071 feat: add weekly campaign schedule editor
Add the dashboard editor for per-day campaign sending windows and wire campaign models to the new schedule_windows API shape. Refresh the shared calendar/date controls used by the campaign schedule screen.
2026-06-04 18:56:57 +02:00
Matthew Meszaros 5b9029d2a8 feat: add campaign schedule windows backend
Store per-day schedule windows on campaigns and validate updates before persistence. Use the schedule windows in campaign scheduling, including legacy day/time derivation for existing campaigns.
2026-06-04 18:56:43 +02:00
Matthew Meszaros 203a3e0471 feat: add contacts sheet sync UI 2026-06-04 11:50:14 +02:00
Matthew Meszaros 7fe63a98eb feat: add lead sync frontend clients 2026-06-04 11:50:09 +02:00
Matthew Meszaros 6a4c370152 feat: share contact import mapping utilities 2026-06-04 11:50:04 +02:00
Matthew Meszaros e598b3bd5c feat: remove sheets from integrations UI 2026-06-04 11:50:00 +02:00
Matthew Meszaros d6f055da19 feat: add lead sync backend 2026-06-04 11:49:55 +02:00
Matthew Meszaros b2c885dda2 feat: hide sheets automation integration 2026-06-04 11:49:49 +02:00
Matthew Meszaros 379e056a24 feat: fix organization sync query handling 2026-06-04 09:30:36 +02:00
Matthew Meszaros a1c9a898b5 feat: refresh app favicon assets 2026-06-04 08:55:31 +02:00
Matthew Meszaros 0c49d3c607 feat: improve app routing and browser chrome 2026-06-04 08:55:26 +02:00
Matthew Meszaros f15753dc76 feat: polish dashboard menus and actions 2026-06-04 08:55:13 +02:00
Matthew Meszaros 276758e8b8 feat: improve contact drawer interactions 2026-06-04 08:54:48 +02:00
Matthew Meszaros 981ab01c8c feat: add bulk mailbox warmup controls 2026-06-04 08:54:42 +02:00
Matthew Meszaros ca310748fe feat: polish campaign schedule controls 2026-06-04 08:54:33 +02:00
Matthew Meszaros d630619a30 feat: redesign campaign sequence builder 2026-06-04 08:54:25 +02:00
Matthew Meszaros 33ccb99e7b feat: refresh campaign detail overview 2026-06-04 08:54:17 +02:00
Matthew Meszaros ef58d64988 feat: add campaign send control settings 2026-06-04 08:53:56 +02:00
Matthew Meszaros 2ad67762d4 feat: add dashboard analytics visuals 2026-06-04 08:53:42 +02:00
Matthew Meszaros e1e02c5c18 feat: add campaign send controls backend 2026-06-04 08:53:23 +02:00
Matthew Meszaros 78decdb0f5 feat: document dashboard interaction rules 2026-06-04 08:52:57 +02:00
Matthew Meszaros 558dfeda4e Merge pull request #26 from warmbly/feature/warmup-messages
feat: add warmup deliverability controls
2026-06-03 16:51:51 +02:00
Matthew Meszaros 1afe453eb0 feat: add deliverability controls
Add seed inbox-placement testing with admin management, placement result polling, and seed mailbox persistence.

Add pre-send email verification, invalid-recipient skipping, warmup-health campaign gating, and RFC 8058 one-click unsubscribe headers/endpoints.
2026-06-03 16:47:53 +02:00
Matthew Meszaros f96bdfd2c1 feat: improve warmup content safeguards
Use subject-specific humanization so short warmup subjects are not mangled by body-level opener stripping.

Add rDNS verification logging after provisioning and remove the unused public campaign breaker interface method.
2026-06-03 11:32:19 +02:00
Matthew Meszaros b0b712a43f feat: refine warmup content admin
Treat warmup content as a shared library in settings and admin tables, and realign the conversation pick index with segment-based selection.

Add generation job details and fix warmup placement displays so backend percentages and provider counts render correctly.
2026-06-03 11:32:09 +02:00
Matthew Meszaros ff7ae430f1 feat: simplify warmup worker actions
Remove the worker-side dwell timer now that delayed warmup engagement is scheduled durably by the consumer.

Keep DelaySeconds only for wire compatibility and run received warmup action batches immediately on the worker.
2026-06-03 11:31:41 +02:00
Matthew Meszaros 0b6dc6ddfd feat: split warmup content admin pages
Replace the monolithic warmup content admin page with routed overview, library, generate, jobs, and settings pages.

Add shared warmup content layout, tab navigation, and reusable presentation helpers for the section.
2026-06-03 11:14:47 +02:00
Matthew Meszaros 2009780beb feat: add warmup batch generation
Add OpenAI Batch API support for warmup content generation, including job metadata, polling, cancellation, and completed-batch ingestion.

Share the generation prompt between sync and batch modes and humanize/lint generated threads before storing them in the warmup content library.
2026-06-03 11:14:33 +02:00
Matthew Meszaros 35fbf73347 feat: persist warmup engagement dwell
Store delayed warmup engagement actions in Postgres and drain them from the consumer so read, important, and star actions survive worker restarts.

Keep foldering and spam rescue immediate while routing delayed actions to the mailbox's current worker at fire time.
2026-06-03 11:14:02 +02:00
Matthew Meszaros 59d253ef1d feat: harden warmup action handling
Wire warmup health webhooks in the consumer and log skipped warmup actions when a recipient mailbox has no assigned worker.

Run foldering and spam rescue immediately while keeping only low-stakes engagement signals behind the dwell delay.
2026-06-03 06:40:35 +02:00
Matthew Meszaros 52bcc163fb feat: fix warmup reply threading
Persist outbound warmup Message-IDs so later warmup replies can find thread parents.

Normalize reply headers and re-check partner health during recipient selection before using a mailbox as a warmup recipient.
2026-06-03 06:40:27 +02:00
Matthew Meszaros 24422ed427 feat: add campaign template scoring
Add an advisory content score endpoint that reuses warmup linting heuristics for campaign templates.

Surface the score in the sequence editor so users can check subject and body deliverability before sending.
2026-06-03 06:27:07 +02:00
Matthew Meszaros de7e28d294 feat: add campaign deliverability breaker
Track complaint events in campaign progress and evaluate rolling bounce and complaint rates before auto-pausing campaigns.

Emit an early warning webhook when campaign deliverability enters the warning band.
2026-06-03 06:26:56 +02:00
Matthew Meszaros 38cbcd281e feat: add warmup star engagement
Add star-rate settings to warmup content controls and include star actions in generated engagement plans.

Execute Gmail stars via STARRED labels while keeping IMAP behavior a no-op to avoid duplicate flagging.
2026-06-03 06:26:47 +02:00
Matthew Meszaros 47bdf66899 feat: improve warmup health analytics
Record warmup spam placements by recipient provider and surface provider breakdowns in the admin health summary.

Track warmup replies and use stable static conversation ids so warmup analytics can correlate content reliably.
2026-06-03 06:26:39 +02:00
Matthew Meszaros e81f6d54cf feat: add mailbox deliverability checks
Add an email auth-check endpoint and dashboard panel for SPF, DKIM, and DMARC validation.

Expose warmup content segment editing on mailboxes so segment-aware warmup content can be selected intentionally.
2026-06-03 06:26:23 +02:00
Matthew Meszaros 15ef9d4994 feat: add warmup content controls
Add warmup content generation and admin review surfaces, plus mailbox warmup appeal/status APIs.

Track warmup engagement and tampering signals so unsafe mailboxes can be handled by the warmup flow.
2026-06-03 05:05:53 +02:00
Matthew Meszaros 9a9d8653db Merge pull request #25 from warmbly/feature/admin-dashboard
feat: expand admin control plane
2026-06-02 16:58:36 +02:00
Matthew Meszaros 6109601e87 feat: pin lint command to installed tool
Restore the golangci-lint config format expected by the pinned v1 CI tool and make the lint target invoke the installed binary directly.
2026-06-02 16:50:42 +02:00
Matthew Meszaros eac99628bb feat: enforce worker pool assignment safety
Reserve dedicated worker allocation for the control plane, auto-promote spare capacity when needed, and keep risky or quarantined mailboxes off clean shared workers.
2026-06-02 16:38:49 +02:00
Matthew Meszaros 3943b8a2e7 feat: update docs for postgres-backed secrets
Refresh developer docs, deployment notes, and public-site copy to describe the Postgres-backed encrypted key and message-map model after DynamoDB removal.
2026-06-02 15:55:01 +02:00
Matthew Meszaros cf5ca0e649 feat: consolidate admin infrastructure settings
Replace separate backend settings pages with a single infrastructure view, remove the egresses route, and update admin navigation/readme copy.
2026-06-02 15:54:47 +02:00
Matthew Meszaros e740aebba8 feat: upgrade admin management explorers
Wire expanded admin API contracts into campaigns, discounts, enterprise, limit request, outreach, plan, worker detail, and provisioning admin views.
2026-06-02 15:54:40 +02:00
Matthew Meszaros bc435747ea feat: expand admin management queries
Add richer backend models, handlers, services, and repository queries for admin campaigns, discounts, outreach, organizations, limit requests, and provisioning surfaces.
2026-06-02 15:54:29 +02:00
Matthew Meszaros 2430095197 feat: move infrastructure state off dynamodb
Remove DynamoDB-backed storage paths, add Postgres/HTTP repositories for mailbox state maps, wire the internal message-map API, and add provisioning runner/migration plumbing.
2026-06-02 15:54:12 +02:00
Matthew Meszaros 0e31748662 feat: add worker explorer filters
Convert the managed workers page into a faceted explorer with client-side filtering, sorting, CSV metadata, and worker detail navigation.
2026-06-02 05:44:43 +02:00