Skip to content

FIX: CPU and latency (#9-#16), #17 backlog, v0.1.4 - #72

Merged
CodingDiego merged 3 commits into
masterfrom
perf/cpu-latency-backlog
Oct 11, 2026
Merged

CodingDiego merged 3 commits into
masterfrom
perf/cpu-latency-backlog

Conversation

@CodingDiego

Copy link
Copy Markdown
Owner

Lower CPU use and quicker responses, from a performance audit of the daily-use build, plus most of the #17 backlog and the v1.0 roadmap. Version bumped to 0.1.4; .github/release-notes.md has the release text.

Perf fixes (#9-#16)

Backlog (#17)

  • Sort on the load worker; per-row lazy cell cache; selection restore via a hash set; type-to-select reads cached names.
  • Superseded loads stop early; the Home probe moved off the UI thread.
  • Background tabs keep their change watch and a dirty flag. Switching tabs reloads only a tab that changed, has no watch on its folder, is virtual, or is on a network path.
  • Thumbnail requests limited to the visible window (plus lookahead) and fitted on the worker; the tree is not synced while hidden.
  • Search stops at its hit cap; the USN search can be cancelled.
  • CMF_OPTIMIZEFORINVOKE for copy/cut/paste/delete/properties; the crumb dropdown skips network crumbs.
  • Text preview capped at 64 KB with no redundant SetWindowTextW.
  • Second-launch hand-off retries a busy, not hung, first window.

Left in #17: clipboard-change command refresh, sidebar Pin/Unpin enumerating on the UI thread, and a minimum search length.

Fixes found in review

  • Sorting carries selection and focus over to the same files. Before, they stayed on row positions, so a Delete right after a sort hit another file.
  • Sorting resets the icon views' image slots, so thumbnails no longer stay at their old positions.
  • A shell-wide notification no longer restarts an active search tab. Starting a search clears a pending change reload, so typed characters are no longer lost.
  • Open terminal also finds wt.exe in PATH's absolute folders.

Roadmap

VERSION-1-X.md lists what a stable 1.0 needs. Each item has an issue (#18-#70, milestone v1.0), tracked in #71.

Verification

All runs used scratch APPDATA profiles, comparing the old and new builds side by side.

  • cargo build --release with -D warnings is clean; cargo test --workspace gives 83 + 86 passed.
  • Smoke test (guarded copy) vs the official v0.1.3 build: no regression. The 29 checks that ran give identical results. sidebar-shell fails on both builds on this machine; the keyboard checks SKIP on both (no foreground).
  • Measured against 0.1.1:
    • idle CPU: 2.2 s to 0.33 s per minute;
    • Details churn: 1.5 s to about 0.5 s per 20 s, at a 1 s pace;
    • minimized churn: about 0;
    • first-launch CPU: 4.5 s to 0.5 s;
    • terminal handler: 65 ms to 0.4 ms;
    • Copy: 350 ms to 80 ms.
  • Hover R1-R3 checked with a control build that does prefetch:
    • new build: no read while moving, a read about 2 s after the pointer stops, no read for PDF/TIFF, no read while another window is in front;
    • control: reads in each case.
  • Tab switches: 20 switches, 0 reloads (was 20). Changes made in a background tab are listed on return, including when a load lands while the tab is in the background.
  • Thumbnails after sort: 0 of 18 wrong tiles (was 18 of 18). Search in a churning folder: 0 restarts in 5 trials (was 5 of 5).

Closes #9
Closes #10
Closes #11
Closes #12
Closes #13
Closes #14
Closes #15
Closes #16

🤖 Generated with Claude Code

CodingDiego and others added 3 commits October 11, 2026 10:07
…acklog

Perf fixes for #9-#16: change-notification reloads debounced to at most
1/s and paused while minimized; sidebar rebuilt every 30 s while shown;
hover prefetch only for text and light images, after the pointer stops,
with the window in front; preview handler kept for the same file; Home
build and icon repaints cheaper; system icon export only for
icon_theme=default; icons instead of thumbnails for heavy types in the
Icons view; terminal launched off the UI thread by absolute path.

#17 backlog: sort and cell cache on the load worker, superseded loads
stop early, background tabs keep their change watch and reload only
when changed, thumbnails limited to the visible window and fitted on the
worker, search hit cap, cancellable USN search, CMF_OPTIMIZEFORINVOKE
for canonical verbs, network crumbs not enumerated, 64 KB text preview,
second-launch hand-off waits for a busy (not hung) first window.

Review fixes: sorting keeps selection and focus on the same items and
resets the icon views' image slots; a shell-wide notification no longer
restarts a search tab; network tabs catch up on every show; Open
terminal also finds wt.exe in PATH's absolute folders.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@CodingDiego
CodingDiego merged commit 1f16b71 into master Oct 11, 2026
2 checks passed
@CodingDiego
CodingDiego deleted the perf/cpu-latency-backlog branch October 11, 2026 13:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment