Skip to content

FIX: rest of the #17 backlog - #74

Merged
CodingDiego merged 1 commit into
masterfrom
fix/17-leftovers
Oct 11, 2026
Merged

CodingDiego merged 1 commit into
masterfrom
fix/17-leftovers

Conversation

@CodingDiego

Copy link
Copy Markdown
Owner

Closes #17.

These are the items #72 left open, plus the minor findings from its review. Each change was checked against the official v0.1.4 build by driving the real exe on a scratch profile (Opus verifier, messages only).

Item v0.1.4 This PR
Clipboard change, 20,000 rows selected 63.6 ms of UI-thread CPU per change 1.6 ms (only Paste is re-evaluated)
Unpin from the sidebar the window stalls up to 303 ms under 3 ms (worker thread, one verb at a time)
Typing one character in the search box starts a full recursive search no search; 2 characters or Enter search
Folder written every ~20 ms with shell notifications can show nothing until the writes stop reloads about once a second
First session with icon_theme=default types listed during the export keep the generic icon until restart they get their own icon when the export lands; folder, search and archive tabs, no reload
Refresh in a case-sensitive folder with a.txt and A.txt the selection moves to A.txt the selection stays on a.txt (a case-only rename still reselects)
After a sort the Shift+click anchor stays on the old row, and the focused row can be off screen the anchor follows the focused item, which is scrolled into view
Sort with all 20,000 rows selected 227 ms 20 ms
Volume index (elevated search) built while holding the cache lock, so every search waits built per drive outside the lock; same-drive searches share one build

Not changed: if the first window is frozen while idle (a suspended process), a second launch waits 13 s (see the comment on #17). Windows does not report such a window as hung, so it cannot be told apart from a busy one.

Tests:

  • cargo build/test --release --locked with -D warnings: app 83, core 87, all pass.
  • New unit tests: forgetting_misses_finds_a_png_written_since, and selection_matches_exact_first_then_ascii_case_insensitively.
  • Regression smoke subset (13 checks): all pass except sidebar-shell, which fails the same way on v0.1.4.

🤖 Generated with Claude Code

- A clipboard change only re-evaluates Paste (it re-read every selected
  item's attributes: 64 ms per change with 20k selected, now 1.6 ms).
- Pin/Unpin runs on a worker, one at a time (Quick Access can hold network
  folders; the window stalled 300 ms, now under 3 ms).
- As-you-type search starts at 2 characters; Enter searches any text.
- A change notification no longer restarts an armed change timer, so a folder
  written every few ms still reloads about once a second.
- When the first session's icon export lands, cached misses and every tab's
  row icons are dropped, so new types get their icons without a restart.
- The volume index is built per drive outside the cache lock; same-drive
  searches share one build.
- Refresh reselects exact names first (a case-sensitive folder can hold a.txt
  and A.txt), falling back to a case-insensitive match.
- After a sort the Shift+click anchor follows the focused item, which is
  scrolled into view; with every row selected only the focus moves (227 ms ->
  20 ms on 20k rows).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@CodingDiego
CodingDiego merged commit 9781cc2 into master Oct 11, 2026
2 checks passed
@CodingDiego
CodingDiego deleted the fix/17-leftovers branch October 11, 2026 18:42
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.

Performance backlog: lower-impact findings from the audit

1 participant