Skip to content

Editor notices anchor top-right; forward-action bar gains a success-filled "Save and stay" #481

Description

@JArmandoAnaya

The annotation editor renders its errors in four different places, and the one a
person is most likely to meet — the suggest tool's refusal card — sits in the corner
the zoom and fullscreen cluster already occupies. At the same time the top bar's two
forward actions are a bar apart, and the more consequential of the pair is the quieter
one.

Where an in-editor error can appear today

Surface Where What it carries
suggest-panel (SuggestPanel, warn tone) bottom-right of the stage, bottom-16 right-3, max-w-80 a suggest refusal, and the two blocker states
save-state (SaveState, destructive badge) top bar, left zone, inside the ● annotated · Saved microtext why a save did not happen
opening-refusal (OpeningRefusal, destructive badge) top bar, left zone why the batch or the job could not be opened
action-refusal a full-bleed strip under the header why Skip / Un-skip / Accept / Finish job refused

Four placements, three visual treatments, one class of message. Nothing in the editor
is rendered through a sonner toast: the only two toast calls on the page are
toast.success, so no error class has to be moved off a disappearing surface.

The bottom-right placement is the sharpest of the four. ZoomWidget sits at
bottom-3 right-3 and the suggest card clears it by an explicit bottom-16 — a
constant one component holds about another. The corner is occupied, and the card is
there because it was the last corner free at the time.

The notice's width clips a model reference

The card is max-w-80 (320px) and the body has no wrap rule. A model reference is a
single unbroken token —
IDEA-Research/grounding-dino-tiny@0123456789abcdef0123456789abcdef01234567 — so a
refusal quoting one overflows its own card. Widening helps and does not fix it: no
fixed width guarantees the next reference fits, so wrapping is the invariant and width
is comfort.

The forward actions

The bar's action group reads Skip · [primary next-action] in the centre cluster, with
Save and stay a zone away on the right as a ghost carrying a ⌘S keycap chip. The
two halves of the forward gesture — advance, or persist in place — are not adjacent,
and the one that keeps work where it is reads as the least important control on the bar.

Scope

Frontend only. No save semantics change, no suggest-flow change, no wire change, no new
dependency. The viewport-reset defect this editor also has is tracked separately and is
not fixed here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    design-systemDESIGN.md, tokens, primitives — the shared visual contractenhancementNew feature or requestfrontendannotator / ui-core / app packagesui-corefrontend/ui-core workuxUser experience / interaction design

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions