| Age | Commit message (Expand) | Author |
| 41 hours | Accept blank template names in the allowlist validations | erdgeist |
| 42 hours | Give action log entries per-verb icons | erdgeist |
| 2 days | Annotate the History list with each revision's lifecycle | erdgeist |
| 2 days | Give Trash a proper title on lazy construction | erdgeist |
| 2 days | Keep the Trash out of the drafts surfaces | erdgeist |
| 2 days | Teach the action log reader the Trash vocabulary | erdgeist |
| 2 days | Add Trash affordances: cockpit, listing, dashboard entry | erdgeist |
| 2 days | Add trash!, restore_from_trash!, and destroy_from_trash! with log entries | erdgeist |
| 2 days | Bootstrap the Trash node: reserved slug, identity, guards | erdgeist |
| 2 days | Refuse destroying nodes that still have children | erdgeist |
| 3 days | Allowlist aggregate order columns and template names | erdgeist |
| 3 days | Allow updating migrated users without supplying a password | erdgeist |
| 3 days | Implement transparent password hash migration | erdgeist |
| 3 days | Add some more tests for the login basics while refactoring | erdgeist |
| 3 days | Improve test coverage for two-ordinal week selection in rrule humanizier | erdgeist |
| 4 days | Aggregate selected weeks in a more human friendly form | erdgeist |
| 4 days | managed RRULE constructs now include week selection | erdgeist |
| 4 days | Condense the action log into a scannable table | erdgeist |
| 4 days | Add a reader for the action log at admin/log | erdgeist |
| 4 days | Record the full lifecycle contract in NodeAction entries | erdgeist |
| 5 days | Add NodeAction: an append-only log of who did what to a node | erdgeist |
| 6 days | Extend static-asset cache-busting to the public layout | erdgeist |
| 6 days | Retire wipe_draft! and find_or_create_draft from production code | erdgeist |
| 6 days | Add cache-buster using mtime of css and js files outside the asset pipeline | erdgeist |
| 7 days | clone_attributes_from: update translations in place, not delete+recreate | erdgeist |
| 7 days | Carry over other-locale translations when creating an autosave | erdgeist |
| 7 days | Asset picker: attach/detach/reorder UI, read-only view, autosave fix | erdgeist |
| 7 days | Rebuild the admin dashboard: icon nav, search, signposts, widgets | erdgeist |
| 7 days | Add a locale-aware relative-time helper; drop stale locale overrides | erdgeist |
| 8 days | Extract drafts/recent query logic from controller into Node | erdgeist |
| 8 days | Give the sitemap its own view, with collapse and descendant counts | erdgeist |
| 8 days | Add drafts/recent/mine/chapters admin node views | erdgeist |
| 9 days | Prevent a staged parent move from crashing on its own descendant | erdgeist |
| 10 days | Add the missing assertions two tests were silently running without | erdgeist |
| 10 days | Fix rrule/url column overflow on events#index | erdgeist |
| 10 days | Include assets, tags and template in diff between revisions | erdgeist |
| 10 days | Stop diff output from corrupting the document on structural tag changes | erdgeist |
| 10 days | Add head/draft/autosave layer comparison at three UI entry points | erdgeist |
| 10 days | Retire vendored cacycle_diff.js for a diff-lcs-based diff view | erdgeist |
| 12 days | Add revert!/discard and rebuild nodes#edit around the new hierarchy | erdgeist |
| 12 days | Fix authorship and published_at loss in autosave promotion | erdgeist |
| 12 days | Add head/draft/autosave hierarchy to Node | erdgeist |
| 14 days | Fix shared preview links breaking after a second publish | erdgeist |
| 2026-07-06 | Remove dead custom_rrule references after column drop | erdgeist |
| 2026-07-04 | Add self-service event creation from nodes#show | erdgeist |
| 2026-07-01 | Add RRULE humanizer and wire events into nodes#show | erdgeist |
| 2026-06-30 | Phase 1: standalone events, external_url on nodes | erdgeist |
| 2026-06-26 | Stage 4: Rails 5.2 -> 6.1 on Ruby 2.7.2 | erdgeist |
| 2026-06-25 | Rails 5.2 test updates | erdgeist |