This website requires JavaScript.
Explore
Help
Sign In
starred
/
warmbly
Watch
1
Star
0
Fork
0
mirror of
https://github.com/warmbly/warmbly.git
synced
2026-09-08 08:03:28 +00:00
Code
Issues
Packages
Projects
Releases
Wiki
Activity
Files
446ecad33c0457e63d60bd7ea859ade2ceea7214
warmbly
/
internal
T
History
Matthew Meszaros
446ecad33c
feat: tell the user what to do when they try to connect a Gmail or Microsoft mailbox on a deployment with no OAuth client, replacing the generic 500 with a 503 carrying a stable mailbox_provider_not_configured code, the exact BOX_* variables to set, and a link to the environment setup guide, rendered as an inline panel in the add-mailbox modal instead of a truncated toast
2026-08-13 09:36:13 +02:00
..
api
feat: make self-hosting work end to end by shipping the free-trial plan in a migration so the first signup no longer violates the subscriptions FK, treating every org as paid and skipping stale-heartbeat workers so mailbox placement can find the bundled worker at all, sending a farewell heartbeat on shutdown, putting the decryption keys and blob config into enrolled worker envs plus a blob mount in the installer, fixing the duplicate org-channel realtime delivery, driving the whole stack from one root .env, and rewriting the self-hosting guide as a tested step-by-step walkthrough
2026-08-13 06:42:46 +02:00
app
feat: tell the user what to do when they try to connect a Gmail or Microsoft mailbox on a deployment with no OAuth client, replacing the generic 500 with a 503 carrying a stable mailbox_provider_not_configured code, the exact BOX_* variables to set, and a link to the environment setup guide, rendered as an inline panel in the add-mailbox modal instead of a truncated toast
2026-08-13 09:36:13 +02:00
bitmask
New Repository: Add Backend Code
2026-01-17 14:11:14 +00:00
client
feat: make the inbound mail pipeline work end to end by never publishing the eventbus partition key as Nats-Msg-Id (JetStream deduped every event after the first per mailbox), fetching IMAP message bodies after the outer FETCH closes instead of nesting one inside it (which deadlocked sync on the first message), wrapping NEW_EMAIL in JobEventNewEmail across all three providers so the consumer stops nil-derefing, coalescing nil arrays before the NOT NULL unibox columns, sealing validation credentials on a copy so stored SMTP/IMAP passwords are not double encrypted, routing the email task type to the user email handler, and returning false instead of closing a nil conn in VerifySMTP (
#88
)
2026-07-31 09:41:36 +02:00
config
feat: make the inbound mail pipeline work end to end by never publishing the eventbus partition key as Nats-Msg-Id (JetStream deduped every event after the first per mailbox), fetching IMAP message bodies after the outer FETCH closes instead of nesting one inside it (which deadlocked sync on the first message), wrapping NEW_EMAIL in JobEventNewEmail across all three providers so the consumer stops nil-derefing, coalescing nil arrays before the NOT NULL unibox columns, sealing validation credentials on a copy so stored SMTP/IMAP passwords are not double encrypted, routing the email task type to the user email handler, and returning false instead of closing a nil conn in VerifySMTP (
#88
)
2026-07-31 09:41:36 +02:00
email
feat: make the inbound mail pipeline work end to end by never publishing the eventbus partition key as Nats-Msg-Id (JetStream deduped every event after the first per mailbox), fetching IMAP message bodies after the outer FETCH closes instead of nesting one inside it (which deadlocked sync on the first message), wrapping NEW_EMAIL in JobEventNewEmail across all three providers so the consumer stops nil-derefing, coalescing nil arrays before the NOT NULL unibox columns, sealing validation credentials on a copy so stored SMTP/IMAP passwords are not double encrypted, routing the email task type to the user email handler, and returning false instead of closing a nil conn in VerifySMTP (
#88
)
2026-07-31 09:41:36 +02:00
errx
feat: tell the user what to do when they try to connect a Gmail or Microsoft mailbox on a deployment with no OAuth client, replacing the generic 500 with a 503 carrying a stable mailbox_provider_not_configured code, the exact BOX_* variables to set, and a link to the environment setup guide, rendered as an inline panel in the add-mailbox modal instead of a truncated toast
2026-08-13 09:36:13 +02:00
events
refactor: publish mailbox validation over the bus and drop the raw kafka producer
2026-07-20 09:56:16 +02:00
infrastructure
feat: make self-hosting work end to end by shipping the free-trial plan in a migration so the first signup no longer violates the subscriptions FK, treating every org as paid and skipping stale-heartbeat workers so mailbox placement can find the bundled worker at all, sending a farewell heartbeat on shutdown, putting the decryption keys and blob config into enrolled worker envs plus a blob mount in the installer, fixing the duplicate org-channel realtime delivery, driving the whole stack from one root .env, and rewriting the self-hosting guide as a tested step-by-step walkthrough
2026-08-13 06:42:46 +02:00
jobs
feat: notification email channel becomes digest-first: email-channel notifications queue as pending rows (migration 000076 adds group_key/email_state/email_due_at/email_attempts) with a due time from a new per-user email_digest cadence (instant/smart 15m/hourly/daily, security sign-ins always immediate), a 30s flush loop with SKIP LOCKED claims bundles a user's pending rows into one digest email and coalesces org-shared group_key events into a single email with every recipient in To, reading a notification in-app cancels its pending email, and NotifyOrg targets only members holding a permission (Slack fires once per group) with new producers: dead-worker downtime to manage_emails members (SetNX-deduped per incident), trial expiry to manage_billing members via new billing_alert category (replacing the direct owner email), and invitation accepts to manage_team members via new team_activity category
2026-07-20 07:16:25 +02:00
models
feat: add the Advisor, continuous sending checks surfaced on the row they are about (
#86
)
2026-07-30 17:15:09 +02:00
notify
docs: refresh the documentation site, fix inaccurate claims and contact addresses, add SEO primitives (
#90
)
2026-08-05 10:37:27 +02:00
observability
Add local Sentry logging
2026-02-14 05:49:49 +01:00
pkg
Merge pull request
#83
from warmbly/ai-content-blocks
2026-07-22 17:59:36 +02:00
repository
feat: make self-hosting work end to end by shipping the free-trial plan in a migration so the first signup no longer violates the subscriptions FK, treating every org as paid and skipping stale-heartbeat workers so mailbox placement can find the bundled worker at all, sending a farewell heartbeat on shutdown, putting the decryption keys and blob config into enrolled worker envs plus a blob mount in the installer, fixing the duplicate org-channel realtime delivery, driving the whole stack from one root .env, and rewriting the self-hosting guide as a tested step-by-step walkthrough
2026-08-13 06:42:46 +02:00
sandbox
feat: add the Advisor, continuous sending checks surfaced on the row they are about (
#86
)
2026-07-30 17:15:09 +02:00
scheduler
Merge pull request
#72
from warmbly/research/warmup-abuse-cold-effectiveness
2026-07-17 05:29:58 +02:00
seed
feat: make self-hosting work end to end by shipping the free-trial plan in a migration so the first signup no longer violates the subscriptions FK, treating every org as paid and skipping stale-heartbeat workers so mailbox placement can find the bundled worker at all, sending a farewell heartbeat on shutdown, putting the decryption keys and blob config into enrolled worker envs plus a blob mount in the installer, fixing the duplicate org-channel realtime delivery, driving the whole stack from one root .env, and rewriting the self-hosting guide as a tested step-by-step walkthrough
2026-08-13 06:42:46 +02:00
tasks
feat: make the inbound mail pipeline work end to end by never publishing the eventbus partition key as Nats-Msg-Id (JetStream deduped every event after the first per mailbox), fetching IMAP message bodies after the outer FETCH closes instead of nesting one inside it (which deadlocked sync on the first message), wrapping NEW_EMAIL in JobEventNewEmail across all three providers so the consumer stops nil-derefing, coalescing nil arrays before the NOT NULL unibox columns, sealing validation credentials on a copy so stored SMTP/IMAP passwords are not double encrypted, routing the email task type to the user email handler, and returning false instead of closing a nil conn in VerifySMTP (
#88
)
2026-07-31 09:41:36 +02:00
tasksched
feat: add an in-process postgres task scheduler so delayed sends need no cloud tasks
2026-07-20 09:56:02 +02:00
utils
feat: AI credit economy with monthly plan grants, non-expiring purchased top-ups, and Stripe billing - two-pool credit_ledger (monthly allowance reset each cycle on invoice.paid, purchased pool via checkout mode=payment fulfilled webhook-only), consume drains monthly-then-purchased, 3 fixed top-up packs, /subscription/credits balance+checkout+paginated transactions gated on manage_billing, one-time trial grant, billing credits card with balance ring and pack buttons, credit_purchase/credit_grant audit entities and spine, wired plan.monthly_credits through pg_plan reads/writes, retry-safe webhook idempotency, and an AI credits guide
2026-07-13 17:40:20 +02:00