db:migrate-from-mysql: long index and key names stay distinct (FW-165 §3)
translate_mysql: an upsert added to after it was translated (FW-165 §7)
translate_mysql: SHA2, CAST AS SIGNED, DAY/MONTH/YEAR, named locks, JSON_EXTRACT, DELETE through a join, an alias in HAVING, FOREIGN_KEY_CHECKS (FW-165 §8)
db:dialect-lint: SQL built over several lines, prose left alone, ORDER BY, --schema (FW-165 §9)
Binary in prepareQuery()
Slow dashboard cards: shared figures and dashboard:precompute (FW-167)
What's new: help pages announced to the administrators (FW-168)
The second-factor gate: trusted browsers, a stopped session that stays stopped, a lockout said (FW-169)
dashboard:precompute: the application's cards, a controller, variants nobody saved (FW-170)
db:migrate-from-mysql: binary and bit defaults carry over (FW-172)
The page cache: a flush that clears only the pages, the shared Redis, pages kept gzipped (FW-171)
A second step owed before the application is up; the precomputed cards' controller (FW-173)
A message's body read from the file an application keeps it in
Click links issued from the message's send date, the same each time
The debug toolbar's timers measured with the monotonic clock
A sent message's body in the body store, read back as it was sent
mail:bodies-to-database: bodies from files into the compressed table
A templated message: kept once, filled for each recipient
Bounces and blocked addresses: no mail goes to them, a password reset included
Helpers::getBrowser() parses an agent once a day, not once a call
device-detector's rules kept in the application's cache
Erasure and retention reach the body store
WebhookHandler::onBranchStaged(): composer runs beside the live tree (FW-174)
mail:hypertable: the mail log as a TimescaleDB hypertable, with the site up
mail:bounces --imap: the bounce mailbox over IMAP, with a password or XOAUTH2
The Roadmap's mail-body entry removed: the body store shipped
The change log: events without a model, on behalf of somebody, and a page at a time
Helpers::objectDiff(): a null property is not a removed one
Writing history into compressed hypertables: the policy paused for a move, the queue for spooled late rows
The notification bell in every header and in the SPA, settling what is dealt with, and keeping the feed tidy
A record's history, in the administration, on the site and in the SPA
The Roadmap's remember-me entry brought up to date
The auth screens in Greek, and whose server it is on every card
/Status: a public status page
New scaffolds register no auth addon: remember-me works without one
Setting up an authorization server, end to end
A recreated test database starts with nothing remembered about the old one
mail:bounces --imap --limit reads the newest unseen messages
An organisation's roles, written and checked for a fraction of the queries
A controller segment reaches its class in any case
The auth screens, finished: the theme's colour, closed registration, the account overview and organisation screens in Greek
The page cache stores no page that prints who its visitor is