Context
#636's unreleased CHANGELOG correctly warns:
Legacy detections from prior versions are preserved but pre-filtered. Run "Reclassify" once per folder to regenerate them with the new raw storage if you want to take full advantage of low-threshold browsing.
But there's no in-product surface for this. For users with existing libraries, the headline feature (instant detector_confidence changes) will appear to do nothing — pre-migration detections were stored post-threshold, so lowering the threshold won't reveal new boxes for those photos. Users have to read the CHANGELOG to know they need to act.
Fix
A non-blocking banner / one-time card in Settings or on the Pipeline page:
N folders have legacy detections. Run Reclassify on these folders to enable instant threshold changes.
with a "Reclassify all legacy folders" action and a per-folder list.
Identification
A folder has legacy detections iff any of its photos has predictions with labels_fingerprint = 'legacy' (the migration sentinel, set in vireo/db.py around the predictions rewrite). That's the cheapest proxy and doesn't need a new column.
Alternative: stamp the migration timestamp on a meta table at install, then compare detector_runs.run_at < migration_ts.
Acceptance
After a fresh upgrade on a non-empty pre-#636 library, the user sees the nudge without reading the CHANGELOG, and clicking it queues a reclassify for the affected folders.
Context
#636's unreleased CHANGELOG correctly warns:
But there's no in-product surface for this. For users with existing libraries, the headline feature (instant
detector_confidencechanges) will appear to do nothing — pre-migration detections were stored post-threshold, so lowering the threshold won't reveal new boxes for those photos. Users have to read the CHANGELOG to know they need to act.Fix
A non-blocking banner / one-time card in Settings or on the Pipeline page:
with a "Reclassify all legacy folders" action and a per-folder list.
Identification
A folder has legacy detections iff any of its photos has predictions with
labels_fingerprint = 'legacy'(the migration sentinel, set invireo/db.pyaround the predictions rewrite). That's the cheapest proxy and doesn't need a new column.Alternative: stamp the migration timestamp on a
metatable at install, then comparedetector_runs.run_at < migration_ts.Acceptance
After a fresh upgrade on a non-empty pre-#636 library, the user sees the nudge without reading the CHANGELOG, and clicking it queues a reclassify for the affected folders.