TODO.md had reached 1050 lines and 72 open items across 28 sections, read mostly on a phone. It is now a directory: todo/<theme>/<item>.md, one card per file, with frontmatter carrying id, status, created date and order, and the prose body copied across verbatim. TODO.md becomes a generated index (bun run todo:index). Dates: where an item's prose stated one it is used; otherwise its old section's; otherwise 2026-08-20, floored at the day before the split rather than invented. date_source records which. Shaped for a two-way Kanban board, filed as todo/tooling — a card is a file, id is the identity, frontmatter is the machine's half and the body is the owner's. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
876 B
876 B
id, title, theme, status, created, date_source, order
| id | title | theme | status | created | date_source | order |
|---|---|---|---|---|---|---|
| known-bugs/vnc-mirror-can-orphan-duplicate-x11vnc-across | VNC mirror can orphan/duplicate x11vnc across sidecar restarts | known-bugs | done | 2026-08-01 | stated | 3 |
VNC mirror can orphan/duplicate x11vnc across sidecar restarts. FIXED 2026-08-01 in the
Xvnc rewrite. The diagnosis was right and survived the move off mirroring: the running desktop is
tracked in module-level state, so a sidecar restart forgot it while the server kept running
orphaned, and waitForPort treated ANY listener on 5900 as success — so the next start reported
success while the browser talked to the stale process. Now reclaimPort frees 5900 (TERM, then
KILL after 2s) before spawning, and waitForPort also fails if the process we spawned has
exited, so a listener that is not ours can no longer be mistaken for a healthy start.