Commit Graph
1681 Commits
Author SHA1 Message Date
Matthew Meszaros fc18b8e470 Merge pull request #23 from warmbly/feature/passkey-login-experience-2 2026-06-01 09:15:21 +02:00
Matthew Meszaros 379d2e8bb7 feat: declare motion dependency for the marketing site
site/src/pages/index.astro imports { animate, inView, stagger } from
'motion' for its scroll/entrance animations, but the package was never
declared in site/package.json. astro build (Site CI) therefore failed to
resolve the import (Rollup: failed to resolve import "motion"). Add
motion@^12.34.0 (matching web/) and sync site/pnpm-lock.yaml so the
frozen-lockfile install + build pass.
2026-06-01 06:05:21 +02:00
Matthew Meszaros 218af13dd9 feat: add session management
Add authenticated session listing and revocation APIs, track the auth provider on sessions, and expose active session controls in account security settings.
2026-06-01 05:53:49 +02:00
Matthew Meszaros 6483f34dfb feat: portal popover menus
Render fixed-position popover menus through document.body so transformed layout containers cannot offset or clip the menu.
2026-06-01 05:51:05 +02:00
Matthew Meszaros 8b28b86b7f feat: support exposed local dev hosts
Add PUBLIC_HOST wiring for local web, admin, site, realtime, and backend CORS so the native dev stack can be reached over Tailscale or LAN without changing localhost defaults.
2026-06-01 05:51:02 +02:00
Matthew Meszaros eee357a3ac Merge pull request #22 from warmbly/feature/integrations-2
feat: add integration oauth connections
2026-06-01 04:52:04 +02:00
Matthew Meszaros e237986f46 feat: merge main into integrations oauth 2026-06-01 04:49:50 +02:00
Matthew Meszaros 0916b07a9e Merge pull request #21 from warmbly/feature/audit-log
feat: add organization audit trail
2026-06-01 04:46:10 +02:00
Matthew Meszaros 4500aeba0f feat: add integration oauth connections
Adds OAuth-backed integration connection management across the API, repository, event dispatch, migrations, docs, and dashboard UI.

Includes realtime invalidation and small dashboard type compatibility fixes needed for the web typecheck gate.
2026-06-01 04:25:14 +02:00
Matthew Meszaros 541bddbe34 feat: force explicit passkey prompt in Safari
Use a direct navigator.credentials.get call with required mediation for explicit passkey clicks, while keeping conditional autofill on SimpleWebAuthn.
2026-06-01 04:24:09 +02:00
Matthew Meszaros e0ced97ba1 feat: add organization audit trail
Move audit logs into org-scoped Postgres storage, wire audit events across backend handlers, and surface actor details in the dashboard activity log.

Add realtime audit invalidation and retention pruning so the trail stays current and bounded.
2026-06-01 04:23:00 +02:00
Matthew Meszaros e627f05509 feat: keep passkey button clickable while preparing
Split visual loading from disabled state so the passkey spinner can show during challenge preparation without preventing Safari from receiving the explicit click.
2026-06-01 04:00:31 +02:00
Matthew Meszaros 01de325164 feat: use visible passkey spinner
Keep the working passkey wiring from the previous commit and replace the fragile shared loading SVG with a lucide spinner that is visible inside the fixed icon slot.
2026-06-01 03:38:34 +02:00
Matthew Meszaros 3465ee27ab feat: preserve passkey loading animation
Keep the animated passkey spinner while preserving the Safari-safe native click listener and challenge preparation hooks.
2026-06-01 03:33:23 +02:00
Matthew Meszaros b11f728342 feat: surface Safari passkey failures
Add visible passkey progress states, skip background conditional UI on Safari, and cancel explicit sign-in if Safari never presents a credential prompt.
2026-06-01 03:13:40 +02:00
Matthew Meszaros 87f9bf58b0 feat: add Safari-ready passkey login
Add passkey enrollment and login wiring, including a Safari-safe explicit login path that prefetches the WebAuthn challenge before the click and calls the credential ceremony immediately from the user gesture.
2026-06-01 03:09:17 +02:00
Matthew Meszaros ed066ad71a feat: mark warmup account risk immediately
Update account risk bands as warmup monitoring signals arrive, including spam placement, user complaints, invalid tokens, and worker rate-limit abuse. Trigger risk rebalancing after warmup health sweep transitions so risky accounts move out of clean pools sooner.
2026-05-31 18:10:58 +02:00
Matthew Meszaros 0cb53a25a6 feat: improve warmup pool scheduling
Add explicit warmup participant roles so connected accounts can provide recipient-only pool capacity without becoming senders. Cap warmup scheduling by eligible recipients, avoid same-day recipient reuse, reschedule exhausted pools, and reconcile missing warmup task chains.
2026-05-31 18:07:13 +02:00
Matthew Meszaros f93a01e966 Merge pull request #20 from warmbly/feature/remote-infra-dev-config
feat: support remote dev infra
2026-05-31 09:30:24 +02:00
Matthew Meszaros c1a744b656 feat: refresh repository banner assets
Update the repository banner artwork and stop tracking the stray root node_modules install by adding a root ignore rule.
2026-05-31 09:24:01 +02:00
Matthew Meszaros 1f4d06e881 feat: add repository banner
Replace the README mark heading with a branded banner asset and refresh the repository badges.
2026-05-31 09:11:20 +02:00
Matthew Meszaros 73d8ea3b5e feat: restore site header logo in repo docs
Use the same Warmbly paper-plane mark from the site header in the README and docs header.
2026-05-31 09:01:42 +02:00
Matthew Meszaros 3beb3bed0d feat: remove repository logo from docs
Remove the README logo block, delete the repository logo asset, and drop the docs header image reference so no broken logo path remains.
2026-05-31 08:59:54 +02:00
Matthew Meszaros fe6b2cca54 feat: update repository docs branding
Replace the repository logo with the site mark on a sky background and move contribution guidance into CONTRIBUTING.md.
2026-05-31 08:57:26 +02:00
Matthew Meszaros adedcc337e feat: support remote dev infra
Allow native dev services to target infrastructure running on another host by parameterizing local endpoints with INFRA_HOST and SELF_HOST.

Document the workflow and make Kafka advertise a configurable host for off-box clients.
2026-05-31 08:53:21 +02:00
Matthew Meszaros 88741ee960 Merge pull request #19 from warmbly/feature/dashboard-plans
feat: improve unibox scheduling and campaign wakeups
2026-05-31 07:26:51 +02:00
Matthew Meszaros 545dcea940 feat: show scheduled replies in threads
Add a thread_id filter for scheduled Unibox sends and expose a per-thread hook for the dashboard.

Render queued sends inline in ThreadView with cancellation, refreshing the thread, scheduled list, and overview caches after cancel.
2026-05-31 05:19:39 +00:00
Matthew Meszaros 2d11ed8166 feat: add mobile unibox scope picker
Expose the Unibox scope rail through a mobile sheet so smaller screens can switch between inbox scopes, mailboxes, tags, and scheduled views.

Simplify template rows in the reply composer to keep the picker compact.
2026-05-31 05:17:32 +00:00
Matthew Meszaros 6249d3e1a2 feat: refine unibox reply workflow
Open the reply composer only after the user chooses a message to reply to or forward, and wire per-message actions through the thread view.

Also clean up cancelled scheduled sends from Cloud Tasks on a best-effort basis while keeping the database status as the source of truth.
2026-05-31 05:14:22 +00:00
Matthew Meszaros 72073c669e feat: bootstrap campaign wakeups
Create the initial per-campaign Cloud Tasks wakeup when a campaign starts, using the same idempotent task chain as subsequent sends. Pause or complete campaigns instead of leaving active campaigns with no scheduler when no work can be queued.
2026-05-31 04:51:03 +00:00
Matthew Meszaros 946cd087e5 feat: cap active campaign schedulers
Limit organizations to 50 active campaigns before starting another campaign, make campaign wakeups idempotent per campaign, keep warmup wakeups idempotent per mailbox, and no-op stale non-pending campaign/warmup dispatches.
2026-05-31 04:48:39 +00:00
Matthew Meszaros 70bfa39163 feat: update unibox scheduled UI
Add scheduled-send scope, queued-send review and cancel flows, richer reply composer controls, snooze picker polish, and API client models for the new Unibox endpoints.
2026-05-31 04:26:46 +00:00
Matthew Meszaros 7b5a87d1d1 feat: add unibox scheduled send backend
Add Unibox overview, snooze, and scheduled-send endpoints with task repository support, queue caps, execution-time guards, and snooze persistence.
2026-05-31 04:26:26 +00:00
Matthew Meszaros bf40834557 feat: update unibox experience 2026-05-30 16:37:50 +00:00
Matthew Meszaros 4663333d2c feat: update billing and email settings 2026-05-30 15:45:10 +00:00
Matthew Meszaros 0740a8bbbe feat: fix local migrations and kafka topics 2026-05-30 14:11:47 +00:00
Matthew Meszaros a227938778 feat: seed unibox trial fixtures 2026-05-30 14:06:36 +00:00
Matthew Meszaros 17ce31a942 feat: extend dashboard session lifetime 2026-05-30 14:06:27 +00:00
Matthew Meszaros d08c984c42 feat: snapshot current dashboard changes 2026-05-30 13:56:27 +00:00
Matthew Meszaros 44c837d8ac Merge branch 'main' into feature/dashboard-plans
# Conflicts:
#	AGENTS.md
2026-05-30 09:49:12 +00:00
Matthew Meszaros 9027086d77 feat: remove worker installer api alias 2026-05-30 09:40:46 +00:00
Matthew Meszaros b168f4d466 feat: simplify worker installer route 2026-05-30 09:37:26 +00:00
Matthew Meszaros e35a91f6bc feat: make worker enrollment default 2026-05-30 05:13:18 +00:00
Matthew Meszaros d8a546eca5 feat: add worker enrollment install 2026-05-30 05:10:27 +00:00
Matthew Meszaros d28c607013 feat: document api release standards 2026-05-30 04:35:26 +00:00
Matthew Meszaros cb0c2b4fac feat: harden webhook endpoints 2026-05-30 04:33:43 +00:00
Matthew Meszaros 640da62b32 feat: add api idempotency keys 2026-05-30 04:31:43 +00:00
Matthew Meszaros 878e8d921e feat: enforce api key email scopes 2026-05-30 04:28:25 +00:00
Matthew Meszaros 3076cff5d6 feat: add api request ids 2026-05-30 04:26:12 +00:00
Matthew Meszaros 67bbd72777 feat: harden api permission gates 2026-05-30 04:24:41 +00:00