| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-08-07 | Move the pending address from the node onto the draft | erdgeist | |
| 2026-07-27 | Surface held locks in the dashboard's work-in-progress widget | erdgeist | |
| A lock with no draft or autosave behind it was invisible to everyone including its holder, until the next editor collided with it. work_in_progress now admits those nodes, and the widget names the holder rather than the last editor on any locked row. Also flips the ordering to stalest-first, so a backlog reads as a queue rather than a feed, and gives the heading a real total: the count came from the already-limited relation and could never exceed five. | |||
| 2026-07-18 | Keep the Trash out of the drafts surfaces | erdgeist | |
| 2026-07-18 | Add Trash affordances: cockpit, listing, dashboard entry | erdgeist | |
| nodes#show gains a Trash section on trashed nodes: provenance from the trash entry, a restore form whose parent picker pre-fills the old parent while it still lives, and permanent deletion. A Move-to-Trash button joins the status actions on living nodes. nodes#trashed lists trashed subtree roots with weight, provenance, and deletion; the dashboard housekeeping row links to it, and trash/destroy redirect there. Deletion from Trash now removes the whole subtree, deepest first, each node through a real destroy! so every per-node cascade runs -- amending the never-recursive rule for this one sanctioned path (both confirms state the count; the root entry carries destroyed_descendants). Bare Node#destroy still refuses children. | |||
| 2026-07-17 | Add trash!, restore_from_trash!, and destroy_from_trash! with log entries | erdgeist | |
| Also update the node action contract to include the trash related verbs. | |||
