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 |
|
Devin AI
|
8a45508e79
|
feat: enforce shared outbound capacity and directional diagnostic consent across campaign manual warmup and seed dispatch with transactional result outbox bounded Gmail Graph DKIM audited repair holds and legacy upgrade gates
|
2026-10-07 14:02:11 +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 MeszarosandDevin AI
|
b8303060dc
|
feat: integrate current main with a single consumer schema and relation visibility guard while preserving migration cancellation diagnostics and regression coverage
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-07 07:49:50 +00:00 |
|
Matthew Meszaros
|
bbd0d9f785
|
Merge pull request #863 from warmbly/devin/1791356256-posthog-root-causes
feat: fix PostHog root causes in API validation, Gmail recovery and frontend asset delivery
|
2026-10-07 07:35:04 +00:00 |
|
 Matthew MeszarosandDevin AI
|
dfed1e1593
|
feat: validate API UUIDs, recover expired Gmail history and guard consumer startup and stale frontend assets
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-07 07:19:15 +00:00 |
|
 Matthew MeszarosandDevin AI
|
7667a836ec
|
feat: resolve backend-compatible fleet images before node enrollment so failed joins cannot create duplicate orphan nodes on retry
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-07 07:05:38 +00:00 |
|
 Matthew MeszarosandDevin AI
|
3acfe64109
|
feat: preserve self-host upgrades with exact realtime CSP discovery, consumer migration readiness and backend-compatible fleet targets
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-07 06:53:14 +00:00 |
|
Matthew Meszaros
|
a92e40b4d1
|
feat: show Cloud warmup analytics and placement alongside local history on linked self-hosted instances with scoped report APIs
|
2026-10-07 06:12:04 +00:00 |
|
 Matthew MeszarosandDevin AI
|
416c4feee3
|
feat: prevent private API response storage and remove wildcard CORS from the static Pages dashboard
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-06 12:05:54 +00: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 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
|
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 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
|
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
|
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
|
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
|
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
|
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
|
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
|
8d034059f3
|
fix(auth): fail revocation when remembered devices can't be forgotten; resend never sends the device token
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-05 05:51:31 +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
|
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 |
|
Matthew Meszaros
|
aca1aff4d6
|
feat: count a completed sign-in as a fresh confirmation for the first five minutes of the session, so accounts with no password or second factor can confirm an action by signing in again
|
2026-10-04 05:13:23 -07:00 |
|
Matthew Meszaros
|
663c3013d1
|
feat: bind each Remie approval to its tool call and run it once, show every argument and the resolved send on dashboard and Slack approval cards, keep always-allow to settings managers with a revocable list and never for tools that start sending or change access, withhold secrets and unpermitted tool results from the assistant and shared conversations, gate /mcp, /ai/tools and the web and playbook tools on AI_AGENT or use_ai, and scope get_mailbox by organization
|
2026-10-04 03:45:02 -07:00 |
|
Matthew Meszaros
|
886756ae0f
|
feat: share one api_key_mailbox_limited code and keyMailboxLimited check across the campaign, AI tool and MCP handlers
|
2026-10-04 03:43:26 -07:00 |
|
Matthew Meszaros
|
497f58bb5a
|
feat: hold a mailbox-limited API key to explicit sender lists of its own mailboxes when it creates, edits or starts a campaign, and refuse it on /ai/tools and /mcp, which act across the workspace, with api_key_mailbox_limited
|
2026-10-04 03:24:25 -07:00 |
|
Matthew Meszaros
|
a70811f56a
|
feat: write the mailbox connect and reauth audit entry under the mailbox's own organization when an OAuth flow finishes, so its spine event reaches that workspace
|
2026-10-04 03:22:09 -07:00 |
|
Matthew Meszaros
|
48c65611b5
|
feat: require view_contacts / READ_CONTACTS for an AI variable preview rendered against a named contact, matching test sends and template previews
|
2026-10-04 03:22:09 -07:00 |
|
Matthew Meszaros
|
1c555934a5
|
feat: authorize warmup ban status and warmup appeals by the caller's organization and its view_campaigns / manage_emails gates, so any member who manages mailboxes can appeal, answering 404 for a mailbox outside the workspace
|
2026-10-04 03:22:09 -07:00 |
|
Matthew Meszaros
|
6c36be44aa
|
feat: require the actor to hold every permission a role edit, re-role or member removal takes away as well as every one it grants, matching role deletion, with the workspace owner holding all permissions
|
2026-10-04 03:22:09 -07:00 |
|
Matthew Meszaros
|
5f180f5c76
|
feat: hold an API key with allowed_email_accounts to its mailboxes across the unibox (list, thread, message, count and overview reads; compose with auto pick within the list, drafts, agent-draft approve and discard, seen, folder, labels and snooze writes), campaign sender pools, analytics account statuses and GET /analytics/accounts/:id, and store a compose draft's mailbox only when it belongs to the caller's organization
|
2026-10-04 03:22:09 -07:00 |
|
Matthew Meszaros
|
ec77a3e3d2
|
feat: key unibox snoozes by organization as well as user and thread (migration 000259 backfills from each thread's mailbox organization), scope every snooze read and write and the org-transfer scope to it, and resolve unibox list cursors only within the caller's organization or user
|
2026-10-04 03:22:09 -07:00 |
|
Matthew Meszaros
|
9d461ad40e
|
feat: gate advisor apply and undo on view_analytics / READ_ANALYTICS and run the fix as the caller: a member under their org permissions, or an API key or OAuth grant under its own scope mask, with a fix for a mailbox outside the key's allowlist refused
|
2026-10-04 03:21:58 -07:00 |
|