| Age | Commit message (Expand) | Author |
| 2 days | Accept blank template names in the allowlist validations | erdgeist |
| 2 days | Emit a report-only Content-Security-Policy with nonced inline scripts | erdgeist |
| 2 days | Give action log entries per-verb icons | erdgeist |
| 2 days | Annotate the History list with each revision's lifecycle | erdgeist |
| 3 days | Give Trash a proper title on lazy construction | erdgeist |
| 3 days | Keep the Trash out of the drafts surfaces | erdgeist |
| 3 days | Teach the action log reader the Trash vocabulary | erdgeist |
| 3 days | Add Trash affordances: cockpit, listing, dashboard entry | erdgeist |
| 3 days | Route and control trash, restore, and permanent deletion | erdgeist |
| 3 days | Add trash!, restore_from_trash!, and destroy_from_trash! with log entries | erdgeist |
| 3 days | Bootstrap the Trash node: reserved slug, identity, guards | erdgeist |
| 3 days | Fix the cleanup cascade for a real node destroy | erdgeist |
| 3 days | Refuse destroying nodes that still have children | erdgeist |
| 3 days | Drop the orphaned nested-set columns lft and rgt | erdgeist |
| 3 days | Allowlist aggregate order columns and template names | erdgeist |
| 3 days | Allow updating migrated users without supplying a password | erdgeist |
| 3 days | Add migraton for bcrypt password digest on user model | erdgeist |
| 3 days | Implement transparent password hash migration | erdgeist |
| 3 days | Add some more tests for the login basics while refactoring | erdgeist |
| 3 days | Use SecureRandom instead of the hand rolled implementation | erdgeist |
| 3 days | Improve test coverage for two-ordinal week selection in rrule humanizier | erdgeist |
| 3 days | Fix computed_unique_name code and consumer | erdgeist |
| 3 days | Fix grammar for unknown action and discard_autosave | erdgeist |
| 3 days | Retire recent changes widget, replace with action log | erdgeist |
| 3 days | Retire recent changes widget, replace with action log | erdgeist |
| 4 days | Give all text and password inputs border-radii | erdgeist |
| 4 days | Cutover to new Recent Changes widget | erdgeist |
| 4 days | Construct DOM elements using escaping helpers to prevent XSS | erdgeist |
| 4 days | Add a script to backfill action log from existing records | erdgeist |
| 4 days | Move rrule builder to a partial and share between events#new and events#edit | 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 | Split current_unique_name in a setter and an accessor | erdgeist |
| 4 days | nodes#show's revisions subsection renamed to history | erdgeist |
| 4 days | Condense the action log into a scannable table | erdgeist |
| 4 days | Don't reference your own user as 'du' in action log. It breaks grammar. | erdgeist |
| 5 days | Add a reader for the action log at admin/log | erdgeist |
| 5 days | Record the full lifecycle contract in NodeAction entries | erdgeist |
| 5 days | Provide parent_unique_name in nodes#new if parent is already pre-set | erdgeist |
| 5 days | Remove some remnants of legacy admin wizard interface | erdgeist |
| 6 days | Add NodeAction: an append-only log of who did what to a node | erdgeist |
| 6 days | Make the recent-changes page match the widget it links from | erdgeist |
| 6 days | Remove dead admin/_recent_changes partial | erdgeist |
| 6 days | Add scaffolding for a proper tech documentation from everything I could remember | erdgeist |
| 6 days | Supply related-asset URLs/name and public inline-image CSS | erdgeist |
| 6 days | Add inline image insertion for page bodies, plus a headline-conflict badge | erdgeist |
| 6 days | Extend static-asset cache-busting to the public layout | erdgeist |
| 6 days | Crop headline images to aspect ratio instead of distorting them | erdgeist |
| 6 days | Add a :large FileAttachment style for full-width inline body images | erdgeist |
| 6 days | Retire wipe_draft! and find_or_create_draft from production code | erdgeist |