Skip to content

fix(paths): a tab showing many folders no longer repaints forever (core 0.40.9) - #230

Merged
Maxaubert merged 1 commit into
mainfrom
fix/anchor-loop
Oct 16, 2026
Merged

Maxaubert merged 1 commit into
mainfrom
fix/anchor-loop

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Owner, 2026-10-16: "All my Claude tabs have become completely unresponsive ... I can't type and I can't scroll ... It's clearly a bug somewhere".

Measured on the Stable copy (0.52.1): the page process at 9.7 GB, then 15.9 GB twenty minutes later, growing about 2.5 MB/s and burning about 1.5 cores with nobody using it. Main, the shells and all 8 Claude processes were healthy; 22 GB of RAM free.

Cause (mine, from #221, core 0.40.3): a full path on screen teaches the tab its folder; the newest four are kept; teaching a folder that was not among the four woke the tab to paint again. A tab showing five or more folders pushed one out on every paint, so every repaint re-taught an evicted folder and woke the tab again: an endless paint loop. A unit test reproduces it: 2,496 repaints in five seconds from one tab with five folders, never settling.

Fix: each folder wakes its tab once in the tab's life (taught, capped at 256), however often it is pushed out and taught again.

Tests: a regression test (nine folders: the tab settles, at most one wake per folder) that fails on the old code and passes now; unit 2149 pass; e2e pathLinks 11/11.

Core 0.40.8 -> 0.40.9 (Prism has the same bug until it takes this core; told the Prism session), app 0.53.0 -> 0.53.1. The Stable copy needs the update and a restart to drop the loop it is in.

🤖 Generated with Claude Code

https://claude.ai/code/session_017XYVRPzvhLpPCr75uB6uaA

…re 0.40.9)

Owner, 2026-10-16: "All my Claude tabs have become completely unresponsive
... I can't type and I can't scroll". MEASURED on the Stable copy: the page
process at 9.7 GB, then 15.9 GB twenty minutes later, growing 2.5 MB/s on
about 1.5 cores of CPU with nobody using it; main, the shells and the Claude
processes healthy, 22 GB of RAM free.

Cause, from #221 (core 0.40.3): a full path on screen teaches the tab its
folder, the newest four are kept, and teaching a folder not among the four
woke the tab to paint again. A tab showing five or more folders pushed one
out on every paint, so each repaint taught an evicted folder again and woke
the tab: an endless paint loop (2,496 repaints in five seconds in the unit
test). Each folder now wakes its tab once in the tab's life (`taught`,
capped at 256).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017XYVRPzvhLpPCr75uB6uaA
@Maxaubert
Maxaubert merged commit e5b0262 into main Oct 16, 2026
2 checks passed
github-actions Bot pushed a commit that referenced this pull request Oct 16, 2026
…re 0.40.9) (#230)

Owner, 2026-10-16: "All my Claude tabs have become completely unresponsive
... I can't type and I can't scroll". MEASURED on the Stable copy: the page
process at 9.7 GB, then 15.9 GB twenty minutes later, growing 2.5 MB/s on
about 1.5 cores of CPU with nobody using it; main, the shells and the Claude
processes healthy, 22 GB of RAM free.

Cause, from #221 (core 0.40.3): a full path on screen teaches the tab its
folder, the newest four are kept, and teaching a folder not among the four
woke the tab to paint again. A tab showing five or more folders pushed one
out on every paint, so each repaint taught an evicted folder again and woke
the tab: an endless paint loop (2,496 repaints in five seconds in the unit
test). Each folder now wakes its tab once in the tab's life (`taught`,
capped at 256).


Claude-Session: https://claude.ai/code/session_017XYVRPzvhLpPCr75uB6uaA

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@Maxaubert
Maxaubert deleted the fix/anchor-loop branch October 16, 2026 00:25
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.

1 participant