• v1.5.1 57b43e0b9c

    Improve frontend display
    All checks were successful
    Build and publish image / ci (push) Successful in 3m7s
    Build and publish image / docker (push) Successful in 2m56s
    Stable

    stb released this 2026-08-22 17:14:51 +02:00 | 0 commits to main since this release

    Features

    • Each message in a mailbox now shows its expiry date, alongside its date, sender, and subject — just like temporary mailboxes already show theirs on the overview page.

    Fixes

    • Fixed the "Permanent mailboxes" and "My temporary mailboxes" headings on the overview page rendering at different sizes. They're now both the same heading level.
    • Fixed mailbox and message list rows not filling the width of their container, instead shrinking to fit their content — most noticeable on wider screens, where entries would sit awkwardly narrow on the left.
  • v1.5.0 afdefa79be

    Improve detection of target virtual mailboxes
    All checks were successful
    Build and publish image / ci (push) Successful in 3m5s
    Build and publish image / docker (push) Successful in 2m41s
    Stable

    stb released this 2026-08-22 16:48:06 +02:00 | 1 commits to main since this release

    Fixes

    • Mail is no longer wrongly deleted on mail setups where the Delivered-To header doesn't name the actual destination address — notably catch-all mailboxes, where Delivered-To commonly ends up holding just the mailbox's own base address. Deaddrop now also checks the first Received: header's for <address> clause, X-Original-To, To, and Cc, in that order, and matches against the first address among those that resolves to a live virtual inbox.

    Other

    • When a message still can't be matched to any inbox, the deletion log now includes the value of every one of these headers (not just whichever one was checked), to make delivery-configuration problems diagnosable straight from the log.
  • v1.4.1 b6da897175

    More logging improvments
    All checks were successful
    Build and publish image / ci (push) Successful in 3m2s
    Build and publish image / docker (push) Successful in 2m45s
    Stable

    stb released this 2026-08-22 16:00:57 +02:00 | 2 commits to main since this release

  • v1.4.0 7572d70f90

    Add config auto-reload, improve logging
    All checks were successful
    Build and publish image / ci (push) Successful in 3m10s
    Build and publish image / docker (push) Successful in 2m45s
    Stable

    stb released this 2026-08-22 15:40:06 +02:00 | 3 commits to main since this release

    Features

    • The config file is now watched for changes and reloaded automatically, controlled by a new general.auto_reload option (default: on). Most settings — IMAP connection details, address patterns, lifetimes, the expunge interval, the base URL, and permanent addresses — take effect live, without a restart. general.secret, http.listen_addr, and the [oidc] section are deliberately excluded and require a restart, since applying them live would be unsafe or destructive (rotating the secret, for instance, would invalidate every session and delete every existing temporary mailbox).

    Fixes

    • Log messages for mail deleted because it was addressed to an expired or unrecognized inbox now include the destination address, making it much easier to tell why a message didn't reach its inbox.

    Other

    • Renamed "Temporary mailboxes" to "My temporary mailboxes" on the overview page, to make clearer what the list contains.
  • v1.3.1 42f5b82464

    Add a /v1/health endpoint
    All checks were successful
    Build and publish image / ci (push) Successful in 3m7s
    Build and publish image / docker (push) Successful in 2m50s
    Stable

    stb released this 2026-08-22 14:29:33 +02:00 | 7 commits to main since this release

    Features

    • Added a GET /v1/health endpoint for load balancers and monitoring: returns 200 {"status":"ok"} when the app and its backing IMAP connection are healthy, or 500 {"status":"backend not available"} if the IMAP connection is down. Unauthenticated, and discloses nothing beyond that up/down status.
  • v1.3.0 6df5b75913

    Remember temporary mailboxes in a cookie
    All checks were successful
    Build and publish image / ci (push) Successful in 3m2s
    Build and publish image / docker (push) Successful in 2m42s
    Stable

    stb released this 2026-08-22 13:31:30 +02:00 | 8 commits to main since this release

    Features

    • Temporary mailboxes you've created are now remembered across visits. The overview page has a new "Temporary mailboxes" section, listed just below the permanent ones, showing every temporary mailbox this browser has created and its expiry time — no more needing to keep the link around yourself. Entries can be removed individually, and mailboxes that have since expired are dropped from the list automatically.
  • v1.2.0 dd0f27eae8

    Add localization for German
    All checks were successful
    Build and publish image / ci (push) Successful in 3m1s
    Build and publish image / docker (push) Successful in 2m46s
    Stable

    stb released this 2026-08-22 13:04:34 +02:00 | 9 commits to main since this release

    Features

    • Added localization, starting with English and German. The frontend UI (overview page, mailbox and message views, the create-mailbox dialog) is now fully translated in both languages, with a language switcher in the header. The locale is auto-detected from the browser on first visit and falls back to English; an explicit choice is remembered across visits. Dates now format according to the selected language rather than just the raw browser locale.
  • v1.1.0 e7e840ae7e

    Improve security
    All checks were successful
    Build and publish image / ci (push) Successful in 2m59s
    Build and publish image / docker (push) Successful in 2m51s
    Stable

    stb released this 2026-08-22 12:27:36 +02:00 | 10 commits to main since this release

    Security

    • Sandboxed message rendering + a site-wide Content-Security-Policy. HTML email bodies now render inside a sandboxed <iframe> with scripting disabled outright, instead of being injected into the app's own page, and every response now carries a strict CSP. Together these mean a bug in the HTML sanitizer alone is no longer enough to execute script or exfiltrate data from a viewed message.
    • Removed the last third-party dependency (the API docs page's Swagger UI is now fully self-hosted instead of loaded from a CDN) — this is what made the strict CSP possible without carving out exceptions.
    • Fixed an open redirect in the OIDC login flow: the post-login return URL is now validated to a same-origin path, closing a phishing vector where a legitimate-looking Deaddrop login link could end in a redirect to an attacker-controlled site.
    • Fixed the most significant finding of a full security audit: the raw message-part API endpoint now always forces a file download, even for a message's own inline HTML body (which has no filename). Previously, navigating directly to that URL could render a sender's raw, unsanitized HTML inline in the app's own origin.
    • Message expiry no longer trusts the sender's Date: header. A sender could previously set an arbitrary future date on their own message to keep it around past its configured lifetime; expiry is now based on the mail server's own receipt timestamp instead.
    • Added size limits on IMAP-sourced message bodies and API request bodies, to prevent a maliciously large message or request from exhausting memory.
    • general.secret now requires a minimum length (32 bytes) at startup, since it's the root key behind all signing, session, and OAuth-state security.
    • Added automated dependency vulnerability scanning (govulncheck, npm audit) to the test suite — this immediately caught the Go toolchain being a few patch releases behind on several standard-library CVE fixes, now updated.
    • Published SECURITY.md, documenting Deaddrop's full security model (access control, control-message integrity, session/OIDC handling, and input handling from both IMAP and the API).

    Fixes

    • Fixed a bug affecting most real-world HTML email: message bodies encoded as quoted-printable or base64 (the vast majority of HTML emails, and any non-ASCII plain text) were served back still-encoded instead of decoded, so they displayed corrupted rather than as their actual content.

    Other

    • Various fixes to the CI/build pipeline (Forgejo Actions compatibility, and ensuring the full test suite runs cleanly from a fresh checkout).
  • v1.0.0 b0fa8062f3

    Initial release
    All checks were successful
    Build and publish image / docker (push) Successful in 2m44s
    Stable

    stb released this 2026-08-21 18:40:51 +02:00 | 22 commits to main since this release