The capture worker exits once its queue is empty, so no thread outlives
its work; the next output starts a fresh one. The mixed-case source test
expects no folder listing where the exact name already resolves (macOS,
Windows).
Final review fixes for automatic previews:
- A video preview that cannot be made is the placeholder frame (no-store),
never the video; OpenCV failures fall through to ffmpeg and the
placeholder. Cards and the inspector cover swap back to the video
element when the preview image fails.
- View requests are admitted on the event loop (3 writers, one flight per
file, at most 64 waiting; past that the fallback at once). Writes run on
a small dedicated pool, never the default executor. The history route
shares the admission, flight key and link checks.
- Drive, UNC, empty and dot segments are refused as text; the folder
listing runs inside the admission.
- Holds are checked after the slot and again before the rename; only
decode failures are remembered.
- Bounded, logged shutdown: ffmpeg is killed, no worker restarts after
cleanup, and a reload stops the old worker.
- The listing says whether the preview file exists (thumbnail_ready) for
the legacy gallery's dot; media in a nested thumbnails folder keeps its
original; file names the server quotes match in the inspector.
A video listed without a preview still renders its own element and is
released on refresh. Test teardowns and the browser reset stop the
automatic preview worker before the temp tree goes, so no preview lands
after cleanup (Windows). TESTING.md documents automatic previews.
New outputs never got a preview, so the workspace grid loaded full-size
originals (844 of 19,907 images on a live install, exactly the newest).
- Listings always give images and videos a thumbnail URL; a missing
preview is made by the serve route on first view (bounded, single
flight per file) and falls back to the original, remembering files
that cannot be decoded.
- The image monitor queues each settled output's preview on one
background worker that follows Worker threads.
- A scan that leaves 200 or more previews missing starts the visible
thumbnail job; fewer go through the worker.
- Automatic previews wait for a restore, a duplicate removal, a sources
change, the gallery's clear and exclusive jobs.
- The inspector cover uses the preview; the Overview row counts
previews that failed.