feat: one-click copy of effective auto-annotate params (REQ-186)

- ClassParamsTable: Copy button above per-class overrides table —
  clipboard text, one line per class (class/conf/iou/minbox/container),
  effective values (override else global), present in both the
  per-batch and mass auto-annotate modals via the shared component
- clipboard.js: extract legacyCopy + copyText from ArchiveControls
  (insecure-context execCommand fallback), ArchiveControls now imports it
- docs: REQ-186 added; design/ui-spec/tasks synced
This commit is contained in:
asus committed 2026-10-02 14:28:46 +07:00
1 parent 6a36f102c9
commit 8fb65d2de9
7 files changed
+110 -35

No files matched your search

+8 -2
View File
@@ -331,7 +331,7 @@ Pages:
The canvas editor is hand-written; the normalized-coordinate conventions already exist in
`sessions.py` (`annotations_payload`, `detections_payload`) as a reference.
**Auto-annotate modal (REQ-171, REQ-172, REQ-182, REQ-184).** `AutoAnnotateModal.jsx` splits into
**Auto-annotate modal (REQ-171, REQ-172, REQ-182, REQ-184, REQ-186).** `AutoAnnotateModal.jsx` splits into
`PreviewShapes.jsx` (the result overlay, shared with the mass modal),
`ClassPromptPanel.jsx` (class chips + the editable SAM3 prompt) and `ExemplarCanvas.jsx`
(the drag-to-draw layer). All three overlays and the `<img>` share one shrink-wrapped
@@ -353,7 +353,13 @@ plain full-set preview (the session's last full-set run, blank if none ran yet);
Run Preview with examples runs the exemplared classes
sequentially and merges, without examples it is the unchanged full-set request. The
per-class overrides table also carries a **Container** checkbox (REQ-184) that toggles
`project_classes.container` through `PATCH /api/projects/{id} { containers: … }`.
`project_classes.container` through `PATCH /api/projects/{id} { containers: … }`. The same
table carries a **Copy** button (REQ-186): one click puts every selected class's effective
settings (per-class override where set, else the global slider; container = the checkbox
state) on the clipboard as short lines `class <name> conf … iou … minbox … container
true|false`, through `clipboard.js`'s `copyText` (Clipboard API with an `execCommand`
fallback for insecure contexts) — read-only, no network, no setting changed. Because
`ClassParamsTable` is shared, the mass modal carries the button too.
**Review sidebar class rows (REQ-180, REQ-183, REQ-185).** Each class row's frame-clear `×`
(REQ-180) gains an eye toggle in front of it: session-only `Set` state in `ReviewPage`, so it