fix(thumbnails): report per-frame read time and time left during Update Thumbnails - #6
Closed
thetalkingdrum wants to merge 2 commits into
Closed
thetalkingdrum wants to merge 2 commits into
thetalkingdrum wants to merge 2 commits into
Conversation
…te Thumbnails A roll-scope refresh on a slow SMB share (marcinz606#1232: 49 ARWs, ~15 min at ~3% CPU) spent almost all its time on 15-20 s network reads and showed only "Updating N thumbnails..." for the first frame, so it looked hung. - ThumbnailRenderWorker times the decode and the pipeline separately and carries both on `progress(done, total, name, decode_s, render_s)`; a failed or skipped frame reports what it measured, or 0.0. - New `frame_started(index, total, name)` fires before each decode. - The controller keeps a per-generation running mean and formats the status through `thumbnail_refresh_status`: time left from the second frame on, and "(reading source files, N s/frame)" when decode dominates and exceeds 3 s. - Update Thumbnails tooltip and User Guide no longer claim a stale-only roll refresh; the roll scope re-renders every thumbnail. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W1MEH5L17tDmpmz1H47dap
thetalkingdrum
marked this pull request as draft
September 30, 2026 19:44
A frame whose decode or render raised reported 0 s, so on a slow share a roll with many unreadable files showed too little time left and could hide the read-bound hint. The worker now reports the time the failed step took. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01W1MEH5L17tDmpmz1H47dap
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of marcinz606#1232. A roll-scope Update Thumbnails on a slow SMB share took ~15 min for 49 ARWs at ~3% CPU. Each frame is one 15–20 s network read plus ~1 s of decode/render, and the status bar showed no timing, so the refresh looked hung.
Changes
ThumbnailRenderWorker.process): times_decode_asset_preview_with_metaandrun_pipelineseparately withtime.perf_counter().progressis now(done, total, name, decode_s, render_s). A frame that fails reports the time the failed step took, so unreadable files on a slow share still count toward the estimate; a step that never ran reports 0.0.frame_started(index, total, name): emitted before each decode, so the first frame's read isn't silent.refresh_thumbnails_forstarts a generation; a pre-emption resume starts a new one). Formatting lives in the purethumbnail_refresh_status(...):— ~N min left/— ~N s left) fromdone >= 2;(reading source files, N s/frame)when mean decode > 3 s and > 2× mean render;frame_starteduses the same function within_flight=True: the frame being decoded counts as left, and only finished frames count as samples.setToolTipsites anddocs/USER_GUIDE.mdnow say the roll refresh does every thumbnail, not "every stale" one.Out of scope: stale-only refresh and render fingerprints (
feat/thumbnail-fingerprint). Which frames the roll scope dispatches is unchanged.Tests
perf_counterchecks the decode/render durations in the payload;frame_startedfires before each decode; a failed decode and a failed render each report the time they took.thumbnail_refresh_status: no ETA atdone=1or on the last frame; seconds vs minutes; the read-bound hint only when decode dominates.frame_startedshows the in-flight frame with time left.progressconnection.make all: lint and type clean, 7327 passed.🤖 Generated with Claude Code
https://claude.ai/code/session_01W1MEH5L17tDmpmz1H47dap