| Age | Commit message (Expand) | Author |
| 10 hours | Add Node#attach_asset! attaching across all lifecycle rows | erdgeist |
| 14 hours | Retire nodes#recent, superseded by the action log | erdgeist |
| 26 hours | Fix Node#title ignoring autosave | erdgeist |
| 29 hours | Render PDF headlines as document cards, not lightbox images | erdgeist |
| 30 hours | PDFs currently should have no credits attached to them in display | erdgeist |
| 30 hours | More PDF headline eligibility | erdgeist |
| 30 hours | Make PDFs eligible for headline and allow searching assets by filename | erdgeist |
| 32 hours | Implement model side of PDF raster preview generation | erdgeist |
| 32 hours | Add storage isolation for tests, preventing live data destruction | erdgeist |
| 35 hours | Resolve preview's page-to-node lookup for every layer | erdgeist |
| 37 hours | Remove Page#update_assets | erdgeist |
| 2 days | Make headline images explicit, add asset credits | erdgeist |
| 4 days | Fix render gallery rename issue. We saw 500s | erdgeist |
| 5 days | Accept blank template names in the allowlist validations | erdgeist |
| 5 days | Emit a report-only Content-Security-Policy with nonced inline scripts | erdgeist |
| 5 days | Give action log entries per-verb icons | erdgeist |
| 5 days | Annotate the History list with each revision's lifecycle | erdgeist |
| 5 days | Give Trash a proper title on lazy construction | erdgeist |
| 5 days | Keep the Trash out of the drafts surfaces | erdgeist |
| 5 days | Teach the action log reader the Trash vocabulary | erdgeist |
| 5 days | Add Trash affordances: cockpit, listing, dashboard entry | erdgeist |
| 5 days | Route and control trash, restore, and permanent deletion | erdgeist |
| 5 days | Add trash!, restore_from_trash!, and destroy_from_trash! with log entries | erdgeist |
| 5 days | Bootstrap the Trash node: reserved slug, identity, guards | erdgeist |
| 5 days | Refuse destroying nodes that still have children | erdgeist |
| 5 days | Drop the orphaned nested-set columns lft and rgt | erdgeist |
| 5 days | Allowlist aggregate order columns and template names | erdgeist |
| 5 days | Allow updating migrated users without supplying a password | erdgeist |
| 5 days | Implement transparent password hash migration | erdgeist |
| 5 days | Add some more tests for the login basics while refactoring | erdgeist |
| 5 days | Improve test coverage for two-ordinal week selection in rrule humanizier | erdgeist |
| 6 days | Aggregate selected weeks in a more human friendly form | erdgeist |
| 6 days | managed RRULE constructs now include week selection | erdgeist |
| 7 days | Condense the action log into a scannable table | erdgeist |
| 7 days | Add a reader for the action log at admin/log | erdgeist |
| 7 days | Record the full lifecycle contract in NodeAction entries | erdgeist |
| 8 days | Add NodeAction: an append-only log of who did what to a node | erdgeist |
| 8 days | Extend static-asset cache-busting to the public layout | erdgeist |
| 9 days | Add a :large FileAttachment style for full-width inline body images | erdgeist |
| 9 days | Retire wipe_draft! and find_or_create_draft from production code | erdgeist |
| 9 days | Make revisions locale aware | erdgeist |
| 9 days | Add cache-buster using mtime of css and js files outside the asset pipeline | erdgeist |
| 9 days | Make revision diffs locale-aware, defaulting to whichever locale changed | erdgeist |
| 9 days | clone_attributes_from: update translations in place, not delete+recreate | erdgeist |
| 9 days | Fix shared preview redirecting to admin for an ordinary new draft | erdgeist |
| 9 days | Wire real autosave into translation editing | erdgeist |
| 10 days | Add per-node translation management: list, edit, destroy, compare | erdgeist |
| 10 days | Carry over other-locale translations when creating an autosave | erdgeist |
| 10 days | Asset picker: attach/detach/reorder UI, read-only view, autosave fix | erdgeist |
| 10 days | Add loadOnFocus to initSearchPicker; asset search shows recent by default | erdgeist |