The measured defect: LaneView's empty-space double-click was a second sequential .onTapGesture(count: 2) stacked over the single tap, and that recogniser held every click in the lane — its own empty space and every card face alike — hostage to the system double-click interval while it disambiguated (~475 ms click-to-selection on a hosted board). The fix is structural: the empty-space surfaces live on a background layer behind the masonry, so a card's click never shares a gesture path with a lane recogniser; one .onTapGesture branches on PointerClick.count (AppKit's own clickCount, read the way ClickModifier reads the keyboard) — first click selects, second creates, Finder's cadence with nothing to disambiguate; and the layer carries a load-bearing empty .onDrag, because without a drag source macOS holds primary clicks pending multi-click disambiguation (measured: never fires alone, ~90 ms with one present). A measured viewport floor makes each lane's blank space actually belong to the layer — a ScrollView proposes nothing along its scroll axis, so only an explicit minimum stretches the content — with the trash column as its twin, less the padding that sits inside its scroll content. The template chooser's stacked pair collapses to the same one-recogniser branch, and the attachment rows move their double-click to a simultaneous gesture (instant there, because the row's real .onDrag forces immediate delivery). PointerLatencyTests pins the recovery with synthetic pointer events on a hosted board. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
86 lines
5.0 KiB
Markdown
86 lines
5.0 KiB
Markdown
**August 2026**
|
|
|
|
A board can now wear a background image, painted across the whole window with a frosted strip keeping the title bar legible.
|
|
|
|
The background field is now written as a mapping — *{color: green}* instead of a bare *green* — and a board's may name an image beside the color.
|
|
|
|
Clicking a card or lane now selects it immediately, instead of pausing for about half a second.
|
|
|
|
**July 2026**
|
|
|
|
Version 2.0: Lanework's first release — a kanban app whose boards are ordinary folders of Markdown files on your Mac.
|
|
|
|
Edit a board from any other app, script, or AI agent and the open window updates live; outside edits are first-class, never overwritten.
|
|
|
|
Cards open in their own window with a formatted preview, a Markdown editor with checkable task lists, and a raw-source view.
|
|
|
|
Attach files to a card by dropping them onto its face or into its card window.
|
|
|
|
Drag cards and lanes to rearrange them, move or copy them between boards, or drop files from Finder to create new cards.
|
|
|
|
Cut, copy, and paste cards and lanes — within a board, across boards, or as plain text into other apps.
|
|
|
|
Deleted cards land in a trash lane you can show beside your lanes; drag a card out (or cut and paste it) to restore it.
|
|
|
|
Undo and redo cover every board action, including bringing back a deleted lane with all its cards.
|
|
|
|
A card window keeps its own undo trail while open; closing it folds everything you did there into one board-level undo step.
|
|
|
|
Start new boards from ten bundled templates, or save any board as a template of your own.
|
|
|
|
Search filters the board as you type, and new cards you create clear the filter so they never vanish under it.
|
|
|
|
Style cards and lanes from a twelve-color palette, tint lanes with a band, and give each board its own background.
|
|
|
|
The whole app works from the keyboard — arrow-key navigation, drag-free card moves, and Full Keyboard Access on every control.
|
|
|
|
VoiceOver reads boards as lanes of cards, announces outside changes in one polite digest, and names a focused card that was deleted externally.
|
|
|
|
Every board gets a guide file teaching AI agents the folder format, kept up to date automatically.
|
|
|
|
A hand-made card file no longer needs an order or schema line — the card simply lands at the end of its lane until you place it.
|
|
|
|
Every board carries a .gitignore naming which files count as noise, so system files like .DS_Store stay put instead of being gathered into a card's attachments.
|
|
|
|
Boards open into their own window right away, with a quiet spinner while a large one is read, and ⌘W cancels an open in progress.
|
|
|
|
A board that won't open now explains itself in that window, listing every problem file by file and grouped by what's wrong.
|
|
|
|
Each listed file offers Reveal in Finder and Open in Editor, so you can fix it yourself and press Re-check.
|
|
|
|
Repair and Open makes the fixes that are safe to make — a folder missing its board file, a board missing its format line — and opens the board.
|
|
|
|
You can skip a file Lanework can't fix and open the board without it; the board then names what was left out, and asks again next time.
|
|
|
|
Every card can carry a comment thread, shown beside or below the card's text in its window.
|
|
|
|
The comment composer keeps its draft inside the board itself, so a half-written comment is waiting whenever and wherever you reopen the card.
|
|
|
|
Comments render Markdown like the card body, take file drops of their own, and note when they've been edited.
|
|
|
|
Board search now matches comment text, and ⌘F in a card window steps through matches across the whole thread.
|
|
|
|
Deleting a comment takes effect immediately, stays undoable in the card's window, and board-level undo can still bring it back after the window closes.
|
|
|
|
Lanework Pro is an optional subscription in Settings; its first feature — git-backed board history — is included below, with remote sync still to come.
|
|
|
|
Pro adds git version history to any board from the board popover, with no git installation needed.
|
|
|
|
A board that's already a git repository opens with its history live automatically — cloning a shared board just works.
|
|
|
|
Every settled change on a git board becomes a history entry with a plain-language description, like *Move card 'Fix login' to Doing*.
|
|
|
|
Edits from agents and other apps are recorded under their own authorship, so a git board's history always says who changed what.
|
|
|
|
Undo and redo on git boards restore earlier states as new history entries — nothing is ever erased — and the undo trail survives relaunching the app.
|
|
|
|
Every card window on a git board gains a History section listing the changes that touched that card, newest first.
|
|
|
|
On git boards, everything done in a card window becomes a single history entry when the window closes.
|
|
|
|
Switch or create branches from the board popover, with an explicit save-or-discard step protecting unsaved card edits.
|
|
|
|
The name and email on a board's history entries are editable in the board popover and stored in the board's own repository.
|
|
|
|
Zoom the board in and out from the View menu (⌘+ and ⌘−, ⌘0 for actual size), and the size you settle on is remembered across launches.
|