Matthew Meszaros
|
68c87cb751
|
feat: merge resolved-peer address checks on every mail dial, strict bounded autoconfig XML, shell-free updater commands and refusal of repeated single-valued query parameters and credential headers
|
2026-10-23 16:04:08 +02:00 |
|
Matthew Meszaros
|
9bb0a39e96
|
feat: answer a repeated single-valued query parameter with 400 duplicate_query_parameter and a repeated Authorization, X-Warmbly-Token, Idempotency-Key or Origin header with 400 duplicate_header on the API and forms service, keep the documented list parameters repeatable, fold X-Forwarded-For lines and read the last line of the other forwarding headers there and in the tracking service
|
2026-10-23 16:03:06 +02:00 |
|
Matthew Meszaros
|
d1a4097658
|
feat: run the updater's UPDATER_COMMAND as an argv of an absolute executable and plain arguments without a shell, pass the self-recreate compose arguments to a constant script positionally, and validate the compose project, profiles and git remote names at updater start
|
2026-10-23 16:03:02 +02:00 |
|
Matthew Meszaros
|
d7bacf6112
|
feat: check every mailbox SMTP and IMAP dial against its resolved peer address in netbind, refusing loopback, private, link-local, CGNAT, multicast and metadata addresses on hosted production and wherever MAIL_ALLOW_PRIVATE_HOSTS=false, render that resolved policy into each joining node's env, and honour WARMBLY_ALLOW_UNSAFE_WEBHOOK_URLS only on self-hosted or development instances
|
2026-10-23 16:02:52 +02:00 |
|
Matthew Meszaros
|
123965fb81
|
feat: merge absolute session expiry, revoke-before-write password changes with optional API credential revocation, bounded Pipedrive tokens, always-Secure broker cookie, body-carried reset sessions and atomic Slack state
|
2026-10-23 15:52:51 +02:00 |
|
Matthew Meszaros
|
0c40e53e02
|
feat: bind each realtime ws ticket to the session that minted it and accept it once while that session is live, require a second-factor session to join admin:platform, confine API key and OAuth sockets to their own workspace with member permissions narrowed to their read scopes, and refuse those credentials in the socket URL unless REALTIME_ALLOW_QUERY_CREDENTIALS=true
|
2026-10-23 15:48:00 +02:00 |
|
Matthew Meszaros
|
a786d26fa3
|
feat: require every Pipedrive panel and modal token to carry an issued-at within 15 minutes or an expiry within 24 hours and refuse one with neither, and answer the Pipedrive app routes with Referrer-Policy no-referrer and no-store so the signed query token is never passed on
|
2026-10-23 15:47:31 +02:00 |
|
Matthew Meszaros
|
e0a97ef520
|
feat: end other sessions before a signed-in password change is stored and refuse the change when that fails, add an optional revoke_api_credentials to the change and reset that also revokes the user's OAuth grants and the API keys they created, exchange the emailed reset link for an opaque reset session through POST /auth/reset-password/session so the confirm step carries no token in its URL, and add the sign-out-apps checkbox to the dashboard's change-password dialog
|
2026-10-23 15:45:51 +02:00 |
|
Matthew Meszaros
|
208ed1e344
|
feat: treat a session's expires_at as an absolute deadline so access tokens and POST /auth/refresh are refused past it, cap rotated access and refresh tokens at the session's expiry, and document the 180-day session lifetime
|
2026-10-23 15:35:37 +02:00 |
|
Matthew Meszaros
|
19c7eb13dc
|
Merge pull request #1030 from warmbly/feat/mailbox-credentials-org-dek
feat: seal mailbox credentials under KMS-protected workspace keys
|
2026-10-22 17:46:26 +00:00 |
|
Matthew Meszaros
|
219f428208
|
feat: store each warmup receipt's placement group and host at arrival so rescue outcomes land on the same placement row, leave rescues that never ran unreported instead of failed, and label rescue outcomes as confirmed out of spam with a wrapping summary in the mailbox placement tab
|
2026-10-22 19:11:28 +02:00 |
|
Matthew Meszaros
|
2f42afa78f
|
feat: report each warmup spam rescue's outcome from the recipient worker into placement history and the mailbox placement tab, rescue only mail that arrived in spam, and follow bounded Graph continuations when resolving warmup messages by Message-ID
|
2026-10-22 19:11:28 +02:00 |
|
Matthew Meszaros
|
b6196f8666
|
feat: count workspace-sealed mailbox credentials separately in warmblyctl keys status and reseal, scan KeyDomainMailbox columns under the instance key, and report sealed-format values no key opens as unreadable instead of legacy plaintext
|
2026-10-22 19:11:23 +02:00 |
|
Matthew Meszaros
|
03170c5482
|
feat: share one cancellation-proof bounded DEK lookup per organization, bound worker token sealing, reseal empty mailbox credential values, refuse an invalid MAILBOX_CREDENTIALS_SEALING in warmblyctl, keep credential exports gated on the instance key and log workspace-key failures in mailbox erasure
|
2026-10-22 19:11:23 +02:00 |
|
Matthew Meszaros
|
537a622409
|
feat: seal mailbox SMTP/IMAP logins and OAuth tokens under KMS-protected workspace DEKs behind MAILBOX_CREDENTIALS_SEALING, carry them sealed in ADD_EMAIL and token refreshes, reseal stored credentials in a resumable consumer job, and cache DEKs in process with singleflight in front of Redis and KMS
|
2026-10-22 19:11:23 +02:00 |
|
Matthew Meszaros
|
3518708a99
|
feat: add warmblyctl keys status, reseal and generate to count instance-key ciphertext by the key that opens it and move read-key values onto the primary with resumable compare-and-swap writes, and keep sealed-format OAuth values no key opens untouched
|
2026-10-22 15:24:33 +02:00 |
|
Matthew Meszaros
|
fdea749005
|
feat: preserve encrypted credentials and MFA enrollments across staged key rotation with scoped token grace periods
|
2026-10-22 12:37:19 +02:00 |
|
Matthew Meszaros
|
ee8581136e
|
feat: require direct database sessions and verify authenticated worker dependencies during AWS deployment
|
2026-10-22 11:01:04 +02:00 |
|
Matthew Meszaros
|
90413bc6fe
|
feat: align AWS migration setup with current self-hosted mailbox organization handling
|
2026-10-22 09:01:37 +02:00 |
|
Matthew Meszaros
|
99357a6823
|
feat: add Terraform AWS hosting with optional Postgres pooling and migration-gated deployments
|
2026-10-22 08:57:54 +02:00 |
|
Matthew Meszaros
|
417c002213
|
feat: carry the mailbox organization through repository lookups so hosted and cloud-connected warmup settings saves retain workspace identity
|
2026-10-22 07:09:30 +02:00 |
|
Matthew Meszaros
|
0d8a1c5dd9
|
feat: make the 000320 rollback refuse instead of deleting credentials_reverified history and say sending resumes after a verified reconnect only when no other send safety hold remains
|
2026-10-21 12:01:29 +02:00 |
|
Matthew Meszaros
|
09e9a299a7
|
feat: release an authentication send hold when a reconnect passes the provider's login check, recorded as credentials_reverified in migration 000320, expose send_recovery_reason on mailbox status and show the reconnect button under the drawer's health when sending is held for authentication
|
2026-10-21 12:01:28 +02:00 |
|
Matthew Meszaros
|
494ed2c06f
|
feat: re-place parked warmup and campaign wakeups when mailbox behaviour, warmup hours, timezone, caps, tags, campaign pacing or the workspace timezone change, retire stranded warmup preparations with refunded charges or unsent tokens so they stop blocking mailboxes, spread window-opening reply-backs and deferred sends, and show the next queued warmup send in the mailbox list and drawer
|
2026-10-21 10:34:22 +02:00 |
|
Matthew Meszaros
|
2fcc56518e
|
feat: log and leave to the warmup reconciler a failed reschedule after a warmup thread closes, and describe recovery replies in the warmup guide as a 60 percent chance when the recipient's next send is free
|
2026-10-21 07:34:06 +02:00 |
|
Matthew Meszaros
|
43112e5c4d
|
feat: keep recovery spam rescue at a 95 percent floor through each mailbox's persona bias instead of rescuing every landing, so no pool mailbox rescues a recovering sender's mail every single time
|
2026-10-21 07:32:47 +02:00 |
|
Matthew Meszaros
|
dbed87ce55
|
feat: keep watch-band mailboxes warming at full volume with recovery replies, spam rescue and importance from the pool, hold one pending warmup task per mailbox so replies stop stacking and crowding out new threads, close expired replies on first fire, cancel existing duplicate schedules in migration 000319, and count slowed mailboxes as warming rather than needing attention on Emails
|
2026-10-21 07:32:47 +02:00 |
|
Matthew Meszaros
|
f8fbca7cbb
|
feat: adopt the linked Cloud workspace's own SMTP/IMAP mailbox on self-hosted enrollment when the server presents its exact stored credentials and no active Cloud campaign sends from it, instead of answering pool_link_mailbox_conflict, with tests and Warmbly Cloud and error code docs
|
2026-10-21 06:20:14 +02:00 |
|
Devin AI
|
7e19faa5e9
|
feat: incorporate released warmup retirement migration before reconciling Unibox search versions
|
2026-10-20 07:45:04 +00:00 |
|
Devin AI
|
52a4df2f1a
|
feat: permanently retire uncertain warmup sends without replay or refund and automatically resume eligible mailbox schedules
|
2026-10-20 06:36:25 +00:00 |
|
Devin AI
|
acbb701a82
|
feat: index Unibox participant searches, propagate interrupted reads and page conversations before aggregating thread state
|
2026-10-20 05:57:27 +00:00 |
|
 Matthew MeszarosandDevin AI
|
bf6a450aa9
|
feat: recover abandoned warmup preparations and expose durable send safety holds in mailbox health
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
|
2026-10-20 03:50:35 +00:00 |
|
Matthew Meszaros
|
b2a89f8ce4
|
feat: stamp cloud_link_mailboxes.settings_observed_at before mirroring Warmbly Cloud warmup settings so an older report cannot overwrite a newer one, give each cloud link its own deadline in the settings sync, keep drawer edits made during a save or reverted to the stored value, and correct the cloud_warmup_not_applied docs
|
2026-10-19 11:48:47 +02:00 |
|
geetansh
|
4f926b3efc
|
feat: make Warmbly Cloud the owner of an enrolled mailbox's warmup ramp, window and days by relaying PATCH /emails/:id and warmup lifecycle edits to Cloud, mirroring Cloud's reported settings into the local columns on enroll, listing and a 15-minute consumer sync, keeping re-enrollment from overwriting them, and showing the Cloud-managed state on the Warmup tab
|
2026-10-19 10:53:05 +02:00 |
|
devin-ai-integration[bot]
|
e31d2ec479
|
Merge pull request #1000 from geetansh/warmup-cleanup-progress
feat: keep warmup inbox cleanup moving when one mailbox's Cloud checks fail or run slow
|
2026-10-19 07:29:58 +00:00 |
|
devin-ai-integration[bot]
|
f2304c0d0a
|
Merge pull request #1004 from 555aaditya/fix/orgtransfer-register-transfer-jobs
feat: register org_export_jobs and org_import_jobs as excluded from workspace archives, and check in CI that every org table is registered
|
2026-10-19 07:27:57 +00:00 |
|
devin-ai-integration[bot]
|
5f70e3821e
|
Merge pull request #1008 from warmbly/devin/1792390038-cloud-standing-fallback
feat: keep unavailable Cloud reports as sending holds without misclassifying them as reputation rests, including scheduler fallback reads
|
2026-10-19 06:54:43 +00:00 |
|
devin-ai-integration[bot]
|
5a1619da9d
|
Merge pull request #1009 from warmbly/devin/1792390038-graph-complaint-retries
feat: detect Microsoft Graph complaint reports from bounded raw MIME and retry temporary provider failures before admitting messages
|
2026-10-19 06:50:58 +00:00 |
|
Devin AI
|
a2e81c2ef5
|
feat: keep Graph complaint reports retryable across temporary raw message failures and bound MIME depth, parts and decoded content before admitting an arrival
|
2026-10-19 06:19:42 +00:00 |
|
Devin AI
|
5f1ff79387
|
feat: align integration create and update contracts with actual import side effects and Clay clearing semantics while preserving the existing OpenAPI layout
|
2026-10-19 06:12:22 +00:00 |
|
555aaditya
|
3386052ce8
|
feat: detect spam-complaint feedback reports on Microsoft Graph mailboxes by reading the report parts from the message's raw MIME when the synced rendered body cannot name the send, and drop the deliverability docs callout saying Graph complaints are not detected
|
2026-10-19 01:52:36 +05:30 |
|
555aaditya
|
4c0df6762d
|
feat: list org_export_jobs and org_import_jobs in the workspace archive's ExcludedTables, and add the live check (run in CI with the other spec checks) that every table with an organization_id is registered or excluded
|
2026-10-19 01:44:51 +05:30 |
|
geetansh
|
aafcb4f759
|
feat: treat a missing Warmbly Cloud report as a send hold only, never a rest, while every real hold still applies in full and the send gate stays closed until a current report arrives
|
2026-10-18 10:13:00 +00:00 |
|
geetansh
|
2050fcf23e
|
feat: keep warmup inbox cleanup moving when one mailbox's Cloud checks fail or run slow, retry each held mailbox on its own progress-aware schedule and keep it visible in the job panel
|
2026-10-18 10:12:59 +00:00 |
|
Claude
|
e41855d01f
|
feat: split the Apollo import source create and update request schemas, type the enrichment selection fields and list limit, and document the 409 import_running response on Salesforce and Apollo import runs in the OpenAPI document
|
2026-10-18 02:21:34 +00:00 |
|
Claude
|
49f325d225
|
feat: describe the Salesforce, Apollo and Clay integration routes in the OpenAPI document, note the recent-confirmation requirement on webhook secret routes, and point openapi.mdx at the official SDKs
|
2026-10-18 02:09:10 +00:00 |
|
devin-ai-integration[bot]
|
169376ef9e
|
Merge pull request #995 from warmbly/devin/1792205408-mailbox-recovery
feat: automatically clear recovered legacy mailbox and provider-limit warnings
|
2026-10-17 18:14:01 +00:00 |
|
Devin AI
|
edd1060e3e
|
feat: synchronize recovered mailbox warnings with current main and reserve migration 313 after the new performance indexes
|
2026-10-17 17:50:09 +00:00 |
|
devin-ai-integration[bot]
|
3e0f5302dd
|
Merge pull request #998 from warmbly/devin/1792255623-grant-delete-reauth-layer
feat: keep grant-removal identity confirmation above the pending confirmation dialog
|
2026-10-17 17:48:45 +00:00 |
|
devin-ai-integration[bot]
|
2fa359a3b5
|
Merge pull request #997 from warmbly/devin/1792207123-remie-tool-limit
feat: keep Remie within OpenAI tool limits without losing built-in or MCP capabilities
|
2026-10-17 17:48:44 +00:00 |
|