Commit Graph
995 Commits
Author SHA1 Message Date
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 e05c22a761 feat: sync the site's automation and campaign builder mocks and campaigns page to the two-line cards, quiet lines, dot-grid canvas and toolbar row, and document canvas navigation 2026-10-06 05:23:57 -07:00
Matthew MeszarosandDevin AI f52ef240b4 feat: add audited repeat-safe sample data provisioning for active dedicated Test workspaces in Admin Testers
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-06 09:23:31 +00:00
Matthew Meszaros 2d76c535c8 feat: quiet the flow canvas with two-line cards, a + that shows on hover, waits as plain text beside the line, pill-wide columns, an amber dot for steps needing setup and faded unconnected steps 2026-10-06 01:47:29 -07:00
Matthew MeszarosandDevin AI 925e0edc31 feat: proxy dashboard and editor image previews with SSRF-safe bounded fetching while preserving original customer email URLs
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-06 07:28:25 +00: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 63ae572345 feat: keep the connector + button under the pointer on hover, open the step picker beside the cards, top-anchor the first view, and update the automation docs, the site's builder demo and branching copy, and a proof flow for the tree builder 2026-10-05 21:56:30 -07:00
Matthew MeszarosandDevin AI bb0b822cb0 feat: reject unsupported request text and secure local dashboard responses
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-06 04:45:36 +00:00
Matthew Meszaros c1606851d8 Merge pull request #845 from warmbly/devin/1791212676-structured-sender-variables
feat: add native Sender mailbox personalization to campaign emails
2026-10-05 16:37:09 +00: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 MeszarosandDevin AI d807aa2852 feat: expose typed sender mailbox details in campaign templates, previews and email editor variables
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 15:15:12 +00:00
Matthew Meszaros fc18d8c186 Merge pull request #842 from warmbly/devin/1791201936-google-oauth-frontend-flag
feat: configure Google mailbox OAuth and trusted multi-dashboard returns
2026-10-05 13:31:17 +00:00
Matthew MeszarosandDevin AI d6c8d9e54c feat: document trusted dashboard origin refusals for Google and Microsoft mailbox OAuth under HTTP 400 errors
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 12:58:22 +00:00
Matthew MeszarosandDevin AI 849cf18f55 feat: bind password recovery, invitations, mailbox and integration OAuth, referral and billing returns to trusted initiating dashboards
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 12:51:37 +00:00
Matthew Meszaros b2bde4ed92 Merge pull request #840 from warmbly/devin/1791198671-admin-health-notices
feat: correct admin setup and health notices and add safe invitation cleanup
2026-10-05 12:35:00 +00:00
Matthew MeszarosandDevin AI caa1633dac feat: verify main and TAC assessment dashboard origins share configurable backend CORS and OAuth routing
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 12:24:11 +00:00
Matthew MeszarosandDevin AI 6a5d76004a feat: cover Google reauthorization origin rejection and unchanged Microsoft routing with clearer error documentation
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 12:20:28 +00:00
Matthew MeszarosandDevin AI f58a6c1ff9 feat: control Gmail mailbox OAuth per frontend deployment and bind callbacks to allowlisted dashboard origins
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 12:16:34 +00:00
Matthew MeszarosandDevin AI f56278488f feat: keep worker farewell heartbeats independent of IP discovery and identify CPU-set resource scope accurately
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 11:43:16 +00:00
Matthew MeszarosandDevin AI 5ae09e0e15 feat: separate fleet mailbox targets from measured CPU and RAM, report node public egress IPv4 and add workload share analytics
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 11:24:32 +00:00
Matthew MeszarosandDevin AI ded4e5f700 feat: correct split-host admin health checks and registration notices, distinguish informational context from problems, and add audited expired-invitation cleanup
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 11:17:13 +00:00
Matthew Meszaros 4e59bfd4d5 Merge pull request #839 from warmbly/feature/admin-redesign
feat: redesign the admin panel in a black and white dark-first theme with grouped sidebar sections, header tabs, a collapsible animated sidebar and a rebuilt sign-in, alert operators on admin sign-ins and admin access changes through opsnotify, and carry first-touch attribution from the marketing site to every dashboard link
2026-10-05 10:26:14 +00:00
Matthew Meszaros 1de33d9f41 feat: guard configuration tab links against losing unsaved edits, keep the login captcha mounted for resend, confirm warmup appeal decisions by mailbox, show header tabs only on section pages, show the update pill in the mobile drawer, make admin sign-in alerts opt-in per channel, check the admin bit before loading the account, and alert on admin access only when it changes 2026-10-05 03:21:44 -07:00
Matthew Meszaros d6533a4aa5 Merge pull request #838 from warmbly/devin/1791190573-release-pages-dashboard
feat: deploy configured Cloudflare Pages projects only after stable releases
2026-10-05 10:01:26 +00:00
Matthew Meszaros e506544119 Merge origin/main into feature/admin-redesign 2026-10-05 03:01:22 -07:00
Matthew Meszaros 8910b02198 feat: redesign the admin panel in a black and white dark-first theme with grouped sidebar sections, header tabs, a collapsible animated sidebar and a rebuilt sign-in, alert operators on admin sign-ins and admin access changes through opsnotify, and carry first-touch attribution from the marketing site to every dashboard link 2026-10-05 03:01:22 -07: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 MeszarosandDevin AI a865db3386 feat: deploy configurable Cloudflare Pages project lists from exact releases with isolated dashboard, admin, site and docs builds
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 09:48:40 +00:00
Matthew MeszarosandDevin AI 94cd8b1692 feat: reuse Cloudflare Pages production configuration for exact-release dashboard builds and cover safe runtime imports in CI
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 09:14:37 +00:00
Matthew MeszarosandDevin AI e7b6877ba4 feat: deploy the dashboard to the existing Cloudflare Pages production project only after stable releases with opt-in configuration and cutover docs
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-10-05 09:00:34 +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 38f1cdb517 Merge remote-tracking branch 'origin/main' into devin/1791174213-turnstile-trusted-device 2026-10-05 05:58:16 +00:00
Matthew Meszaros e8a9dbc810 Merge pull request #837 from warmbly/devin/1791175783-slack-link-auto-and-oidc
feat: auto-link Slack members by email, Continue with Slack for mismatched emails, standalone /slack/link page
2026-10-05 05:56:40 +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 Meszaros cbee2d3073 feat: answer a node heartbeat sent with INTERNAL_API_TOKEN where NODE_BROKER_TOKEN is required with the node's desired version only, recording nothing, through NodeHeartbeatAuthMiddleware and fleetnode UpdateOnly, so a node on an older release always updates itself onto the broker token without NODE_ACCEPT_INTERNAL_TOKEN, and say so in the configuration and split-deployment docs 2026-10-05 06:54:31 +02: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 Meszaros 36149cdebd feat: add Pipedrive CRM mode (migration 000262) with write-through deals, activities and notes, outreach logged as Pipedrive activities, per-connection webhooks, filter import, a Warmbly person panel and modals, a provider registry behind the shared /crm routes, a provider-aware dashboard, and centered popups replacing the integration side drawer 2026-10-04 19:20:48 +02:00
Matthew Meszaros f23c04ddd8 Merge remote-tracking branch 'origin/main' into feature/slack-app-agent
# Conflicts:
#	deploy/slack/manifest.json
#	docs/content/docs/development/slack-app.mdx
#	docs/content/docs/guides/slack.mdx
#	internal/app/integration/slack.go
#	internal/app/slackapp/agent.go
#	internal/app/slackapp/client.go
#	internal/app/slackapp/slackapp_test.go
#	web/src/lib/integrations/oauthPopup.ts
2026-10-04 06:54:19 -07:00
Matthew Meszaros f092b71a30 feat: answer a spent confirmation budget with reauth_limited and say so in the dashboard and admin dialogs, keep an open confirmation dialog from timing out under the person, and stop the OAuth app webhook secret reveal from re-prompting after a cancel 2026-10-04 05:25:32 -07:00
Matthew Meszaros 3de01f25b3 feat: gate MCP and /ai/tools per tool for keys and tokens, with AI_AGENT on the web and playbook tools, and require use_ai for member sessions on /ai/tools 2026-10-04 05:21:18 -07:00
Matthew Meszaros 8cb5893e37 feat: keep accepting API keys and OAuth tokens in the realtime socket URL as a deprecated fallback for existing clients, preferring the x-warmbly-token header and keeping the value out of logs 2026-10-04 05:20:20 -07:00
Matthew Meszaros c178dadf81 feat: keep the key and blob brokers on NODE_BROKER_TOKEN only, and let an operator admit INTERNAL_API_TOKEN on the other node routes with NODE_ACCEPT_INTERNAL_TOKEN=true while nodes joined before the split upgrade 2026-10-04 05:18:01 -07:00
Matthew Meszaros a6e72f1a92 feat: keep linking and unlinking Warmbly Cloud and adopting the cloud workspace's mailboxes with the instance administrator, and let members with manage_emails read the link and put their own workspace's mailboxes on it 2026-10-04 05:17:20 -07:00
Matthew Meszaros cbf0667d8f feat: hold every API key to its creator's current workspace role on each gated route and AI tool, and stop a key, including on the realtime socket, once its creator leaves the workspace (api_key_holder_left) 2026-10-04 05:15:30 -07:00
Matthew Meszaros 801c87ffe1 feat: make the Warmbly Slack bot a mention-driven agent that DMs the account link, answers the held question once linked, auto-links the installer, reacts while working, lets teammates take over a thread, sets up Slack and links integrations through permission-gated assistant tools with strict approvals in channels, drops the /warmbly slash command, and replaces the integration connect drawer and label field with a connect popup 2026-10-04 05:15:07 -07:00
Matthew Meszaros 5d4b0ad6e5 feat: hold the invite_member, update_member_role and rotate_webhook_secret AI tools to the same recent confirmation their REST routes require, answering reauth_required on /ai/tools and refusing them where no confirmed session exists 2026-10-04 05:14:30 -07:00