board: 41 → review (istos)
This commit is contained in:
+27
-1
@@ -1,6 +1,6 @@
|
||||
# 41 — The drawer renders a wrapped list item as one item
|
||||
|
||||
**Status:** In Progress
|
||||
**Status:** Review
|
||||
**Assignee:** istos
|
||||
**Priority:** High — the drawer is where every card is actually read, and
|
||||
it currently mangles the section reviews judge against
|
||||
@@ -114,3 +114,29 @@ on one line.
|
||||
Worth checking after the fix: the same wrapped-line assumption may show up
|
||||
in the card face's activity line and in the ticker, which also carry text
|
||||
extracted from these files.
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Work report — 2026-07-31 15:01 (Nell)
|
||||
|
||||
()` in `manager/core/board.html` no longer treats a physical source line as a unit:
|
||||
|
||||
- **Lists group into logical items first.** A new item begins only at a marker; a line without one is continuation text joined to the item above with a space. That single change removes the phantom bullets and the ragged edge inside items together.
|
||||
- **Indentation is honoured.** A marker indented past its level opens a nested list and a shallower one closes back, so children indent under their parent. Depth beyond two levels nests correctly rather than degrading. Bullets and ordered lists now share one entry point, so an `<ol>` nests under a `<ul>` properly.
|
||||
- **`- [ ]` / `- [x]` render as a checkbox glyph** — a `<span class="box">` inside `<li class="tick">`, never an `<input>` and with no handler, so clicking it cannot do anything or touch the file. A ticked box takes `--calm`; an open one stays neutral. New CSS sits with the other `#drawer .dbody` rules.
|
||||
- **Paragraphs and blockquotes reflow**, joining source lines with a space instead of `<br>`.
|
||||
- Fences, tables, headings and rules are untouched, including the fence state machine that spans blocks. One incidental cleanup: the non-fence branches now work off the block with trailing whitespace stripped, which removes a stray trailing `<br>`/space the old code emitted on a document's last block.
|
||||
|
||||
**How it was verified**
|
||||
|
||||
The renderer is a pure function, so the tests lift `esc()` and `md()` straight out of `board.html` and run them under node, asserting on real output rather than on source shape. Node is not a bench dependency, so those checks `skipUnless` it is present (GitHub's `ubuntu-latest` runner has it); four source-level invariants in the same style as the board's other `board.html` tests always run and would catch the bug's return without node. The strongest check renders **every card in `tasks/` plus `AGENTS.md`** and asserts one `<li>` per source marker and no `<br>` anywhere — the acceptance criterion applied to the whole corpus, not a fixture. Card 41's own Acceptance section and card 30's wrong/right table are both covered as the named live cases.
|
||||
|
||||
**For the reviewer, in order**
|
||||
|
||||
1. `manager/core/board.html:1936-1973` — `listTree()` and `listHtml()`. The indent stack is the only non-obvious part; `NestingTests` in the new file pins its behaviour.
|
||||
2. The rendering has not been eyeballed in a running browser — I am headless, so the checkbox alignment (`li.tick` uses `margin-left:-18px` against the list's `padding-left:18px`) and the `--calm` tick in both Night and Daylight are worth thirty seconds in the drawer via **⛭ drive**.
|
||||
|
||||
**One thing to know**
|
||||
|
||||
The task's closing note suspected the same wrapped-line assumption in the card face's activity line and the ticker. It does not reproduce: the only other `split('\n')` sites in `board.html` are the failed-run excerpt (`:740`) and a TodoWrite plan detail (`:1780`), both machine output where line breaks are meaningful. Nothing there needs a follow-up card.
|
||||
Reference in New Issue
Block a user