Draw the board as the canvas draws boxes, and drag cards live

The user found the board's look off from the canvas's: a block's C was
gray around a white card, borders ignored the node's style, a folded
column said nothing, and dragging felt wrong.

Columns and cards now go through the canvas's line layer, with the same
rules as Scene::add_borders: the node's border style and color, thick in
the accent color for the cursor, thick in the visual color for the
selection. A block's bracket and foot are drawn in its card's own line
and color, so the C is one shape and its joint comes out as ├, ┣ or ╠.
Tags and badges sit in the bottom border through a footer() shared with
the canvas renderer. Columns show their tags and badge too, so a folded
column says +N, and a column's title can be typed in its top border
(it wasn't shown as typed before).

A drag now moves the card live, as on the canvas (the user's pick), all
one undo step: by the row under the mouse, before a card on its top
half, after it or into its block on its bottom half, out at a foot,
first on a column's title, last below the cards. Columns keep their
widths while dragging, or a column that narrowed would slide the one
under the mouse away and the card would chase it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
skkeyeandClaude Opus 5.5 committed 2026-10-02 13:49:48 -04:00
1 parent 3716919db3
commit 38eca3c8c3
8 files changed
+424 -233

No files matched your search

+21 -8
View File
@@ -343,9 +343,15 @@ lines.
left past its cards (two cells further in), and a foot closing it. Blocks
nest as deep as the tree does. The columns by tag or by color the first
design had are dropped (the user's pick).
- A card is a node's box, as on the canvas: its title, its tags and badge
in the bottom border, its color on the border, thick for the cursor.
Folds fold here too (a folded block is a card with `+N`).
- A card is a node's box, and a column a node's box with the title in its
top border, drawn exactly as the canvas draws them (the user asked for
them to match): its border as its style says (rounded for the root,
dashed for a question, double…), in its color, thick in the accent color
for the cursor; the tags in its color and the badge in its bottom border.
The borders go through the canvas's line layer, so a block's "C" is in
its card's own line and color, joined where they meet (`├`, `┣`, `╠`).
Folds fold here too: a folded block is a card with `+N`, and a folded
column says `+N` in its bottom border.
- `j` and `k` go down and up a column in reading order (into the blocks),
`h` and `l` to the column beside, onto the card nearest the cursor's
height. Titles are typed right in their cards, and `<Space>vb` or
@@ -354,9 +360,15 @@ lines.
the end of the column beside, `j` and `k` past the cards around it, into
a block (as its first card going down, its last going up) and out of one
at its end; a column's own node trades places with the column beside
(the root's stays first). Enter is done, one undo step. A drag does the
same with the mouse: dropped on a card, it goes after it; on a block's
card, into it; on a column, at its end. Every move goes through the tree.
(the root's stays first). Enter is done, one undo step. Every move goes
through the tree.
- A drag moves the card live, as the canvas does (the user's pick): it goes
through the board as the mouse goes, by the row the mouse is on in the
column under it. On a card's top half it goes before that card; on its
bottom half after it, or into its block as the first card; on a block's
foot, after the block; on a column's title, first; below the cards,
last. The whole drag is one undo step. The columns keep their widths
while a card is dragged, so the one under the mouse stays put.
- In visual mode the board selects in reading order, as the outline does.
**Views, panes and popups** (settled in stage 7)
@@ -556,8 +568,9 @@ pans up and down, and sideways with a wheel that tilts, a touchpad, or the
wheel with Shift or Alt held (Alt for terminals that keep Shift for selecting
text), Ctrl+drag selects a rectangle, Ctrl+click adds or removes one node,
right-click opens a menu built from the same actions as the keys. Zoom is on
the `+` and `-` keys. On the board, dragging a card moves it in the tree:
after the card it's dropped on, into a block, or to the end of a column.
the `+` and `-` keys. On the board, dragging a card moves it through the
tree as the mouse goes: before or after the card under it (by which half),
into a block, out at its foot, or to a column's top or end.
## Modes and keys