| Age | Commit message (Expand) | Author |
| 2026-07-30 | Canonicalise per locale and declare hreflang alternates | erdgeist |
| 2026-07-30 | Emit per-page Open Graph metadata | erdgeist |
| 2026-07-30 | Remove dangling page references from the node fixtures | erdgeist |
| 2026-07-28 | Let editors manage menu titles in both locales | erdgeist |
| 2026-07-27 | Pin admin content reads to the default locale | erdgeist |
| 2026-07-27 | Surface held locks in the dashboard's work-in-progress widget | erdgeist |
| 2026-07-25 | Extract admin strings to i18n: revisions, page_translations, and menu items, | erdgeist |
| 2026-07-25 | Retire the unroutable occurrences scaffolding | erdgeist |
| 2026-07-25 | Extract flashes to i18n and stop dispatching on submit labels | erdgeist |
| 2026-07-25 | Extract admin strings to i18n: users and tags clusters | erdgeist |
| 2026-07-25 | Extract admin strings to i18n: the nodes cluster | erdgeist |
| 2026-07-24 | Extract admin strings to i18n: sessions, otp, users/edit | erdgeist |
| 2026-07-24 | Rename layout classes to what they actually do | erdgeist |
| 2026-07-24 | Give all sessions a uniform absolute lifetime of one week | erdgeist |
| 2026-07-24 | Complete the login only after the second factor | erdgeist |
| 2026-07-24 | Add self-service TOTP enrollment UI and witnessed admin reset | erdgeist |
| 2026-07-24 | Add TOTP enrollment and verification to User, witnessed in the action log | erdgeist |
| 2026-07-23 | Zoom the action log on assets | erdgeist |
| 2026-07-23 | Keep in-editor asset curation off the head, layering it like every edit | erdgeist |
| 2026-07-23 | Record asset deltas at publish, with changed assets as participants | erdgeist |
| 2026-07-23 | Witness asset uploads and out-of-band attaches in the action log | erdgeist |
| 2026-07-23 | Witness asset destruction, naming every node it strips | erdgeist |
| 2026-07-23 | Convert the log's node zoom to participants, completing subtree histories | erdgeist |
| 2026-07-23 | Add action_participants, recording every node a trash/destroy touches | erdgeist |
| 2026-07-22 | Add tests for the asset<->nodes attach cycle and the flash notice survival fix | erdgeist |
| 2026-07-22 | Add attached nodes subsection in assets#show and thumbnail in nodes#create | erdgeist |
| 2026-07-22 | Add Node#attach_asset! attaching across all lifecycle rows | erdgeist |
| 2026-07-22 | Retire nodes#recent, superseded by the action log | erdgeist |
| 2026-07-22 | Fix Node#title ignoring autosave | erdgeist |
| 2026-07-21 | Render PDF headlines as document cards, not lightbox images | erdgeist |
| 2026-07-21 | PDFs currently should have no credits attached to them in display | erdgeist |
| 2026-07-21 | More PDF headline eligibility | erdgeist |
| 2026-07-21 | Make PDFs eligible for headline and allow searching assets by filename | erdgeist |
| 2026-07-21 | Implement model side of PDF raster preview generation | erdgeist |
| 2026-07-21 | Add storage isolation for tests, preventing live data destruction | erdgeist |
| 2026-07-21 | Resolve preview's page-to-node lookup for every layer | erdgeist |
| 2026-07-21 | Remove Page#update_assets | erdgeist |
| 2026-07-20 | Make headline images explicit, add asset credits | erdgeist |
| 2026-07-19 | Fix render gallery rename issue. We saw 500s | erdgeist |
| 2026-07-18 | Accept blank template names in the allowlist validations | erdgeist |
| 2026-07-18 | Emit a report-only Content-Security-Policy with nonced inline scripts | erdgeist |
| 2026-07-18 | Give action log entries per-verb icons | erdgeist |
| 2026-07-18 | Annotate the History list with each revision's lifecycle | erdgeist |
| 2026-07-18 | Give Trash a proper title on lazy construction | erdgeist |
| 2026-07-18 | Keep the Trash out of the drafts surfaces | erdgeist |
| 2026-07-18 | Teach the action log reader the Trash vocabulary | erdgeist |
| 2026-07-18 | Add Trash affordances: cockpit, listing, dashboard entry | erdgeist |
| 2026-07-17 | Route and control trash, restore, and permanent deletion | erdgeist |
| 2026-07-17 | Add trash!, restore_from_trash!, and destroy_from_trash! with log entries | erdgeist |
| 2026-07-17 | Bootstrap the Trash node: reserved slug, identity, guards | erdgeist |