v2026.10.04.97 – v2026.10.04.98 — 2026-10-04
- docs(notes): close the circuit breaker and footer review and record the status
- fix(notifications): add a circuit breaker for unreachable reseller servers and drop the standard footer after an edited closing line
- feat(notifications): translate the reseller mail-server notices into 13 more languages
- docs(notes): review the security fixes and hold the circuit breaker open
- fix(notifications): count the acknowledgment as delivery, bound the whole SMTP session, report a lost key
- docs(notes): record the shared SSRF guard fix in the SMTP review
- fix(security): refuse IPv6-written internal addresses and reserved ranges in the shared SSRF guard
- docs(notes): record the security review of the reseller SMTP step
- docs(notes): review the SMTP fixes and flag the slow-failure path
- fix(notifications): key the SMTP fingerprint and keep stored passwords home
- docs(notes): review the reseller SMTP step and brief the security review
- feat(notifications): own SMTP server per reseller with a fenced transport and a visible fallback
- feat(notifications): editor for the mail header and footer, admin and reseller
- docs(notes): close the decimal separator finding and record what stays open
- docs(notes): record mail envelope step C
- docs(notes): renumber three of my decision records that collided with the mail envelope ADR
- fix(notifications): format report numbers the way the recipient's language writes them
- docs(notes): review the reseller envelope backend
- feat(notifications): reseller header and footer, editor API on both levels
- docs(notes): brief the envelope editor and review the step C API contract
- feat(notifications): translate the monthly report and the migration notice into 13 more languages
- docs(adr): fix the envelope API contract for step C
- docs: stop claiming OpenLiteSpeed support that was never built
- docs(mail): put the template-seed comment back on its function
- fix(lint): use the US spelling in the profile comment
- fix(mail): show the mail domain, not the product, as the profile organization
- fix(i18n): add the logo_url_must_be_https error message in all 15 languages
- fix(mail): return a specific error code for a rejected mail logo URL
- docs(notes): review step B of the mail envelope
- docs(notes): record mail envelope step B and silence contextcheck on the migration mail
- fix(mail): refuse http mail logos at save time and log when one is dropped
- docs(notes): brief the translation of the two step B mail templates
- fix(mail): stop placeholder-prefixed URLs from bypassing the envelope allowlist
- docs(notes): set the order after step A and review the retired-event cleanup
- fix(notifications): remove templates and settings of retired events on seed
- feat(notifications): add the monitoring and security mails in the 13 missing languages
- docs(notes): review step A of the mail envelope
- fix(notifications): use the full-width comma in the Chinese closing line
- docs(notes): correct two counts in the envelope step A record
- refactor(notifications): move the header and the closing line out of the templates
- feat(notifications): wrap every mail in a maintained header and footer
- docs(adr): fix the acceptance criteria for the mail envelope
- docs(adr): approve the mail envelope and stage the rollout
- docs(notes): record the staging review verdicts, the live validation and the open findings
- docs(notes): record gates and test scripts that report green without testing
- docs(adr): mail envelope, sender paths and per-reseller SMTP
- docs(notes): record the live verification of the three security fixes
- fix(mail): take the vendor name out of messages a reseller sends under their brand
- feat(notifications): preview and per-event test mails over the real render path
- build(lint): stop misspell from flagging the translated mail templates
- feat(notifications): show the sign-in address in system mails and cover all 15 languages
- fix(notifications): brand the sender, resolve optional blocks, mail in the recipient's language
- feat(extensions): per-extension auto-update switch and worker
- feat(extensions): opt-in auto-update switch per installed extension
- feat(dashboard): translate the What's-new notes into all 15 panel languages
- fix(dashboard): show curated news in all 15 panel languages and label changelog lines
- fix(packaging): still attempt role setup when the agent is slow to answer
- fix(packaging): respect a deliberately disabled service on upgrade
- feat(reseller): settings form for the reseller's own mail server