Per-shape hide + dimmed shape list in review editor (REQ-185, amended REQ-183)

- ReviewPage: hiddenShapeIds/overriddenShapeIds session Sets, H toggles
  selected/marked shapes, purge effect removed (dimmed rows selectable
  from list), auto-override on draw/assist/copy into hidden class,
  class-eye toggle clears that class's overrides
- ReviewSidebar: all rows listed, dimmed rows get restore eye, header
  count = total shapes
- ShortcutsPanel: H entry
- docs: REQ-183 amended + REQ-185 added; design/ui-spec/tasks synced
This commit is contained in:
asus committed 2026-10-02 13:22:50 +07:00
1 parent 96a00267d9
commit 6a36f102c9
7 files changed
+175 -57

No files matched your search

+21 -5
View File
@@ -1285,14 +1285,16 @@ failure modes to the counting path. The saving was always on the browser side.
## Task — Per-class hide toggle in review editor (REQ-183) `[DONE]`
1. Eye button on each sidebar class row — a hidden class's shapes leave the canvas, the
"Shapes on this frame" list and every selection path while the row keeps its real
per-frame count and eye state; the choice is session-only (survives frame changes, resets
1. Eye button on each sidebar class row — a hidden class's shapes leave the canvas and every
canvas selection path but stay in the "Shapes on this frame" list, dimmed, each with its
own restore eye (amended by REQ-185; the old leave-the-list and "not deletable" semantics
are superseded — see the REQ-185 entry below), while the row keeps its real per-frame count
and eye state; the choice is session-only (survives frame changes, resets
when the review page is left, stored data untouched) → verify: **[DONE]** `cd frontend &&
npm run build` passes (✓ 535 ms, 69 modules); `wc -l` caps hold —
`frontend/src/components/Icons.jsx` (172) and
`frontend/src/components/ReviewSidebar.jsx` (129) ≤ 400,
`frontend/src/pages/ReviewPage.jsx` (666) exempt (pre-existing over the 400 cap, not
`frontend/src/components/ReviewSidebar.jsx` (145) ≤ 400,
`frontend/src/pages/ReviewPage.jsx` (725) exempt (pre-existing over the 400 cap, not
split by this task); rebuilt Docker frontend serves the new bundle (HTTP 200 on :9000,
`aria-pressed` present in the shipped JS); browser click-test of the eye toggle is NOT
automated — manual click-test pending.
@@ -1321,6 +1323,20 @@ The REQ-031 amendment rides on this entry: cross-class greedy NMS with the per-c
override and the containment carve-out is only real once the flag exists and both live sites
read it.
## Task — Per-shape hide + dimmed shape list (REQ-183 amended, REQ-185) `[DONE]`
1. `H` hides/shows the selected or marked shapes; hidden shapes (by `H` or by their class)
stay listed dimmed in "Shapes on this frame", each dimmed row with a restore eye that
un-hides or overrides; shapes created into a hidden class (draw, assist, copy)
auto-override; the class-eye toggle clears that class's overrides; the old purge effect
and its "not deletable" invariant are gone → verify: **[DONE]** `cd frontend && npm run
build` passes (✓ 545 ms, 69 modules); `wc -l` — `frontend/src/components/ReviewSidebar.jsx`
≤ 400 (145), `frontend/src/components/ShortcutsPanel.jsx` ≤ 400 (69),
`frontend/src/pages/ReviewPage.jsx` exempt (725, pre-existing over the 400 cap, not
split); `grep` proofs that `'h', 'H'` is in `isShortcutKey` (`ReviewPage.jsx:407`) and
that the removed purge effect (`while a class is hidden`) has zero hits left in
`ReviewPage.jsx`; browser `H`/eye click-test is NOT automated — manual click-test pending.
## Known open points
- *Not closed by any task, by choice:* **any rebuild kills the running job.** Task 14's resume