openpencil/crates
Kayshen-X 48580f613c test(shell-core): paint-output integration test for multi-select
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.
2026-05-12 04:06:42 +08:00
..
openpencil-app feat(openpencil-app): skeleton crate (Stage F entry placeholder) 2026-05-03 22:05:00 +08:00
openpencil-desktop feat(shell): selection handles + drag-create + per-node flags + LayerPanel polish 2026-05-11 21:30:06 +08:00
openpencil-shell-core test(shell-core): paint-output integration test for multi-select 2026-05-12 04:06:42 +08:00
openpencil-shell-native fix(shell): defensive commit_layer_drag source-validity guard 2026-05-12 02:21:59 +08:00
openpencil-shell-web fix(shell): defensive commit_layer_drag source-validity guard 2026-05-12 02:21:59 +08:00
pen-codegen chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-core chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-engine chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-figma chore(workspace): cargo-deny 0.18 activation (Phase 1 Task 1.8 Step 6) 2026-05-03 23:05:00 +08:00
pen-types feat(pen-types): skeleton crate (bucket A) 2026-05-03 22:35:00 +08:00
wasm-libc-shim style(shell): cargo fmt --all (rustfmt-clean) 2026-05-10 18:47:33 +08:00
CLAUDE.md docs(shell): note document.rs directory split in crates/CLAUDE.md 2026-05-11 21:42:44 +08:00