Skip to content

Restyle#515

Open
lindkvis wants to merge 111 commits into
mainfrom
restyle
Open

Restyle#515
lindkvis wants to merge 111 commits into
mainfrom
restyle

Conversation

@lindkvis

Copy link
Copy Markdown
Contributor

No description provided.

lindkvis added 30 commits June 18, 2026 17:52
Builds the human half of the dataset-refinement loop on top of the
TagSuggestion model: review near-neighbour disagreements one tag at a
time and write fixes back to the labels.

Backend (services/tag_suggestion_service.py, routes/tag_suggestions.py):
- list/summary/accept/dismiss/reopen plus fix-twin and swap, all undoable
  (reopen reverses the exact label change: ACCEPTED/TWIN_FIXED/SWAPPED).
- Surfaces each pair's picture format (for full-res rendering) and the
  tagger's per-image confidence.
- bulk-accept: decide each pair from the two images' tagger confidence
  (the near-neighbour link only selects the pair), place it in one of four
  corners (both / left-only / right-only / neither) and auto-apply the
  confident ones above a threshold; dry-run returns a sample of the
  least-confident would-be resolutions to preview, and bulk-reopen batch-undoes.

Merges (db_models/tag.py): DEFAULT_TAG_MERGES mirrors pixltagger's
tag_remap as an editable constant; the scanner treats a child tag (e.g.
"extra digit") as the parent for voting + "missing" eligibility but uses
the literal tag for "remove" eligibility. Scanner also gains --tag-remap
and --replace.

Frontend (ReviewFixesOverlay.vue + useReviewFixesStore.js): a Toolbar-
launched overlay framed as "the left is flagged - but is it?", with the
2x2 which-has-it answer (incl. swap), per-image tagger confidence, click-
to-zoom/pan, keyboard review, undo, and the bulk-resolve bar with a
preview modal.

vite.config.js: restore outDir to ../pixlstash/frontend/dist (the in-repo
package's served dist) with a comment to prevent the doubled-path mistake.
Tagger-flywheel progress checkpoint, framed by the new design notes.

PixlStash as system of record (stats):
- TaggerRun model + migration 0059 (chained after 0058_split_caption_sidecars)
- POST/GET /tagger-runs: upsert by run name, stores every run incl. rejected,
  keeps the full report.json payload for the trend/stats panel
- Registered in server.py; exported from db_models; 2 API tests

Review-queue refinements (on top of 23bdf73):
- 4-corner per-image decision in the overlay/store (drop the old direction filter)
- pair dedupe in the shared near-neighbour kernel; in-app tag scan; autocomplete

Design notes (docs/reviews/):
- pixlstash-model-platform-plan: reframes PixlStash as a diffusion dataset &
  training platform (tagger + LoRA share a GPU-exclusive TrainingJob run via the
  task manager); records where we are and the build sequence
- tagger-flywheel-implementation-plan, data-centric-tagger-refinement: the
  feature arc this checkpoint implements

Tests: 14 passed (tagger-runs + tag-suggestions).
Builds the human half of the dataset-refinement loop on top of the
TagSuggestion model: review near-neighbour disagreements one tag at a
time and write fixes back to the labels.

Backend (services/tag_suggestion_service.py, routes/tag_suggestions.py):
- list/summary/accept/dismiss/reopen plus fix-twin and swap, all undoable
  (reopen reverses the exact label change: ACCEPTED/TWIN_FIXED/SWAPPED).
- Surfaces each pair's picture format (for full-res rendering) and the
  tagger's per-image confidence.
- bulk-accept: decide each pair from the two images' tagger confidence
  (the near-neighbour link only selects the pair), place it in one of four
  corners (both / left-only / right-only / neither) and auto-apply the
  confident ones above a threshold; dry-run returns a sample of the
  least-confident would-be resolutions to preview, and bulk-reopen batch-undoes.

Merges (db_models/tag.py): DEFAULT_TAG_MERGES mirrors pixltagger's
tag_remap as an editable constant; the scanner treats a child tag (e.g.
"extra digit") as the parent for voting + "missing" eligibility but uses
the literal tag for "remove" eligibility. Scanner also gains --tag-remap
and --replace.

Frontend (ReviewFixesOverlay.vue + useReviewFixesStore.js): a Toolbar-
launched overlay framed as "the left is flagged - but is it?", with the
2x2 which-has-it answer (incl. swap), per-image tagger confidence, click-
to-zoom/pan, keyboard review, undo, and the bulk-resolve bar with a
preview modal.

vite.config.js: restore outDir to ../pixlstash/frontend/dist (the in-repo
package's served dist) with a comment to prevent the doubled-path mistake.
Tagger-flywheel progress checkpoint, framed by the new design notes.

PixlStash as system of record (stats):
- TaggerRun model + migration 0059 (chained after 0058_split_caption_sidecars)
- POST/GET /tagger-runs: upsert by run name, stores every run incl. rejected,
  keeps the full report.json payload for the trend/stats panel
- Registered in server.py; exported from db_models; 2 API tests

Review-queue refinements (on top of 23bdf73):
- 4-corner per-image decision in the overlay/store (drop the old direction filter)
- pair dedupe in the shared near-neighbour kernel; in-app tag scan; autocomplete

Design notes (docs/reviews/):
- pixlstash-model-platform-plan: reframes PixlStash as a diffusion dataset &
  training platform (tagger + LoRA share a GPU-exclusive TrainingJob run via the
  task manager); records where we are and the build sequence
- tagger-flywheel-implementation-plan, data-centric-tagger-refinement: the
  feature arc this checkpoint implements

Tests: 14 passed (tagger-runs + tag-suggestions).
* Need this to be able to check whether an golden review set is properly evaluated.
* Helps check confidence of tagging decisions and train models
lindkvis added 30 commits June 21, 2026 22:17
Remove the pin toggle buttons from the sidebar and add a Sidebar
Visibility switch in Settings. Persist the preference as sidebar_pinned
on the User model (migration 0064) and sync it through the config API.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant