From ae755d2ce0436c13cd9b318efb05ee3005e97e72 Mon Sep 17 00:00:00 2001 From: Vito Date: Tue, 27 Oct 2026 00:59:39 -0700 Subject: [PATCH] feat(system): Auto-tagging screen, native in System (#328, PR 3) (#368) * feat(system): configure auto-tagging natively * test(system): compare Auto-tagging with the concept against the real backend --- TESTING.md | 125 +++- py/api/annotation_suggest.py | 2 +- tests/browser/system-tagging-concept.spec.mjs | 385 ++++++++++++ tests/browser/tagging-concept.spec.mjs | 2 +- .../browser/workspace-system-tagging.spec.mjs | 356 +++++++++++ tests/browser/workspace-system.spec.mjs | 6 +- tests/browser/workspace-tagging-bulk.spec.mjs | 2 +- tests/browser/workspace-tagging.spec.mjs | 2 +- tests/browser/workspace.spec.mjs | 12 +- tests/js/api-client.test.js | 10 + .../js/workspace-image-tagging-state.test.js | 2 +- .../js/workspace-images-tagging-bulk.test.js | 4 +- tests/js/workspace-system-state.test.js | 16 + tests/js/workspace-system-tagging.test.js | 583 ++++++++++++++++++ tests/test_api_annotation_suggest.py | 2 +- tests/test_image_tag_jobs.py | 2 +- tools/vendor/frontend-coverage-baseline.json | 6 + web/js/api-client.js | 6 + web/js/workspace/image-tagging-state.mjs | 2 +- web/js/workspace/system-integrations.mjs | 24 +- web/js/workspace/system-state.mjs | 11 +- web/js/workspace/system-tagging.mjs | 503 +++++++++++++++ web/js/workspace/system.mjs | 32 +- web/js/workspace/vocabulary.mjs | 3 +- web/js/workspace/workspace-dialogs.mjs | 29 + web/js/workspace/workspace.css | 7 + 26 files changed, 2080 insertions(+), 54 deletions(-) create mode 100644 tests/browser/system-tagging-concept.spec.mjs create mode 100644 tests/browser/workspace-system-tagging.spec.mjs create mode 100644 tests/js/workspace-system-tagging.test.js create mode 100644 web/js/workspace/system-tagging.mjs diff --git a/TESTING.md b/TESTING.md index 648ef49..edf4822 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1504,8 +1504,8 @@ targets of the longest legal path (1024 code points, even escaped as `\uXXXX`) f Its fields show the server's defaults (`GET /prompt_manager/autotag/models`, the D91 Suggestions count included) once that read lands; Start waits for it. A model the status lists as not downloaded keeps Start `aria-disabled` and - `#tag-generation-status` says " is not downloaded. Download it from the - legacy Auto-tag page." (the server's own sentence), so no job starts only to fail. + `#tag-generation-status` says " is not downloaded. Download it in System › + Auto-tagging." (the server's own sentence), so no job starts only to fail. Start validates the fields as Generate does (native validity; nothing is sent). The concept comparison (`images-concept.spec.mjs`) uses the concept page itself as the oracle, with Add to collection and Remove links… removed and a copy of its Add @@ -2587,7 +2587,7 @@ the connection's `total_changes` is 0 at close and the data reads back unchanged `-shm` bytes are not compared: every WAL reader rewrites its read marks there, so no reader can keep it byte-identical (`test_health_check_never_writes`). -Recorded deviations (plan D60–D75, D79–D82 renumbered D92–D107 and D111–D114; D121–D131 assigned): +Recorded deviations (plan D60–D75, D79–D82 renumbered D92–D107 and D111–D114; D121–D134 assigned): - **D92** (shell): no "Sample configuration" chip. The Save status is truthful: "No unsaved changes.", "Unsaved changes.", "Saved in this browser." / "Saved to the server @@ -2621,7 +2621,8 @@ Recorded deviations (plan D60–D75, D79–D82 renumbered D92–D107 and D111– output folder is used." when that is the case. - **D94** (all sections): a section not delivered yet shows the hand-off panel "Your current tools are ready" with a link to each legacy tool that still owns it (the - plan's legacy coverage table); retired section by section, gone after S12. + plan's legacy coverage table); retired section by section, gone after S12. Since S11 + (#328) only Diagnostics & logs hands off (`SECTION_HANDOFFS`, to the admin page). - **D95** (health report): the concept's `health-check` dialog titled "Health report", with no sample note. It lists every check in the server's order: Integrity check, Foreign keys & pair references, Canonical hashes, Pair uniqueness (added), Missing @@ -2997,6 +2998,59 @@ Recorded deviations (plan D60–D75, D79–D82 renumbered D92–D107 and D111– dialog on that scope. Pinned by the thumbnail dialog comparison (mapped) and its mutation check (system-concept.spec) and `the thumbnail row counts outdated previews` (workspace-system.spec). +- **D132** (Auto-tagging, S11, #328, OQ1/OQ5/OQ6/OQ10): "Tagging model" (`#tag-model`) + lists the four real engines in the concept's order, each `