The tombstone model is retired wholesale: deletion is a move into the reserved <root>/.trash/, always entering at the top (rank minting — no deleted: key, no timestamp sort), with modified stamped for the future age-based purge. Lanes are never trashed — lane delete is physical, native undo in-session the net. Put Back is gone: restore is drag-out or cut+paste (⌘X now enabled in the trash as the keyboard restore path). Trash cards are ordinary cards — search, selection, clipboard, and rendering uniform — and one container boundary replaces the effective-liveness, ancestor-walk, and kind-homogeneity machinery across 02 and 04. Delete stages by place (board moves, trash deletes permanently under the recoverability confirm); legacy deleted: keys migrate without destroying (cards relocate, lanes return live, notices). Templates exclude .trash; Duplicate carries it; the agent guide teaches delete-as-move. Materialized reserved lanes are named as a pattern — .archive is WISHLIST #8, and the backed-out release-presentation question is marked open in 03. Ruling: Redesign board Resolved card e8f1a6c2; 19 mooted tombstone-era rulings moved to the board's new Mooted lane. Claude-Session: https://claude.ai/code/session_01CqjXB7ASoWtbyoGod68k97
3.1 KiB
Lanework — Design Documents
A ground-up rewrite of the Kanban app, to ship as Lanework on the Mac App Store. The old repo (../../Kanban, one level above this repository — not the rewrite's own Kanban/ source folder, which shares the codename) was a pathfinder — it never shipped, but it is the reference implementation and the source of hard-won decisions. This design starts from a clean slate and keeps only what earned its place. The rewrite keeps the internal codename Kanban (bundle id dev.rzen.indie.Kanban).
Each document covers one aspect of the design. Within each:
- Decisions — settled, either carried over from the old app or newly made.
- Changes from Kanban — where this rewrite deliberately diverges.
- Open questions — flagged for iteration; nothing here is implicitly settled.
Index
| Doc | Aspect |
|---|---|
| 00-vision.md | What Lanework is, who it's for, goals and non-goals |
| 01-storage-format.md | On-disk contract: folders, frontmatter, ordering, the materialized trash |
| 02-architecture.md | App structure: source of truth, stores, watchers, concurrency |
| 03-board-ui.md | Board window: layout, lanes, cards, styling, templates |
| 04-interactions.md | Selection, drag & drop, keyboard, clipboard, search |
| 05-card-window.md | The card window: Markdown preview/edit, attachments |
| 06-history-undo.md | Git-backed undo/redo and history — Pro edition |
| 07-sync-collab.md | Board modes: local-only, git; iCloud Drive warned against — Pro edition |
| 08-agent-integration.md | AI agents as first-class users of the board |
| 09-templates.md | Board templates: inventory and definition format |
| 10-accessibility.md | VoiceOver, text scaling, visual accommodations |
| 11-command-nexus.md | The command Nexus — every command and action: bindings, contexts, customizability |
| 12-editions.md | The three editions (Lanework / Pro / Teams): distribution, provider seam, feature matrix |
| 13-native-undo.md | macOS-native undo/redo — the base edition's history substrate |
Deferred design iterations
The card window (05-card-window.md), toolbar (03-board-ui.md ▸ Toolbar), and styling controls (03-board-ui.md ▸ Styling ▸ Controls) each had their focused pass and are settled. The 2026-07-27 edition split (12-editions.md) added two deferred passes: the attachment-undo staging design and the EchoLedger foreign-undo bridge (both flagged in 13-native-undo.md), plus Teams' tracker integration (no design yet).
Wishlist
Ideas worth keeping but outside the committed design live in ../WISHLIST.md.
Terminology
The rewrite adopts lane as the canonical term for what the old app called a column (it's in the name: Lane-work). "Column" survives only when referring to the old app or to interior card-grid columns inside a wide lane.