Found by #60's close-out audit of M5.
What
#56's design reference asks for a floating tool palette on the canvas's left
edge: "select, then one tool per geometry the schema's classes actually allow, help
at the bottom". AnnotationPage does not have one.
Why it is not a blocker
The capability is fully present, twice over: the side panel's Labels tab (#126)
lists every class with its colour and its digit, and clicking a row does exactly what
the digit does — activate-class for a drawable class, toggle-tag for a tag. The
class hotkeys (#46) reach the same place. #59's browser cycle drives a bbox, a
polygon and a tag through the Labels tab end to end.
So what is missing is the gesture and the placement, not the ability. M5's exit
criterion is met and proven.
What it would take
frontend/app/src/demo/ToolStrip.tsx already is one — #50 built it for the showcase,
including the argument that a tool button over a derived tool must report rather
than own, and that a press whose tool is already active is a no-op. Moving it would
mean deciding where it lives:
ui-core, beside AnnotatorPanel, so the annotation page composes it — and
then the showcase imports product UI, which weakens exactly what the showcase
exists to demonstrate (that the annotator owns no chrome).
- Duplicated, which is a second spelling of the derived-tool rule.
@visionset/annotator's adapters, which the panel's own docstring argues
against: the engine ships headless with no tokens, and a styled strip there is the
first thing an embedder has to fight.
The third option is out; the first two are a real trade and worth deciding
deliberately rather than in a close-out.
Where it sits
Post-beta, with #127 and #123 — #70's triage is their catch. It is ergonomics over a
capability that already has two working spellings.
Found by #60's close-out audit of M5.
What
#56's design reference asks for a floating tool palette on the canvas's left
edge: "select, then one tool per geometry the schema's classes actually allow, help
at the bottom".
AnnotationPagedoes not have one.Why it is not a blocker
The capability is fully present, twice over: the side panel's Labels tab (#126)
lists every class with its colour and its digit, and clicking a row does exactly what
the digit does —
activate-classfor a drawable class,toggle-tagfor a tag. Theclass hotkeys (#46) reach the same place. #59's browser cycle drives a bbox, a
polygon and a tag through the Labels tab end to end.
So what is missing is the gesture and the placement, not the ability. M5's exit
criterion is met and proven.
What it would take
frontend/app/src/demo/ToolStrip.tsxalready is one — #50 built it for the showcase,including the argument that a tool button over a derived tool must report rather
than own, and that a press whose tool is already active is a no-op. Moving it would
mean deciding where it lives:
ui-core, besideAnnotatorPanel, so the annotation page composes it — andthen the showcase imports product UI, which weakens exactly what the showcase
exists to demonstrate (that the annotator owns no chrome).
@visionset/annotator's adapters, which the panel's own docstring arguesagainst: the engine ships headless with no tokens, and a styled strip there is the
first thing an embedder has to fight.
The third option is out; the first two are a real trade and worth deciding
deliberately rather than in a close-out.
Where it sits
Post-beta, with #127 and #123 — #70's triage is their catch. It is ergonomics over a
capability that already has two working spellings.