Codex flagged that `panel.capabilities()` assertions don't actually prove `paint()` uses the result. Closed the loop with a real paint-output test: - Inline `CountingBackend` (RenderBackend impl) records draw_text and fill_round_rect call counts. - `multi_select_paint_diverges_from_full_section_paint` paints a multi-select panel + a single-select Frame panel through it and asserts the op counts differ. If `paint()` regressed to bypass `capabilities()` and call `for_kind(Frame)` for the multi case, the two paints would emit identical ops and the test would fail. Floor sanity: asserts the multi panel still emits ≥ 6 text ops (headers + Position/Size labels) and ≥ 1 round-rect (Size section W/H inputs). Without the multi carve-out the Size section was hidden, so this directly catches the bug codex caught earlier. 135 tests pass; cargo fmt + boundary check clean. |
||
|---|---|---|
| .. | ||
| openpencil-app | ||
| openpencil-desktop | ||
| openpencil-shell-core | ||
| openpencil-shell-native | ||
| openpencil-shell-web | ||
| pen-codegen | ||
| pen-core | ||
| pen-engine | ||
| pen-figma | ||
| pen-types | ||
| wasm-libc-shim | ||
| CLAUDE.md | ||