fa2e9e133e
Selecting thumbs and flipping SINGLE <-> ALL THUMBS crashed the view with React #185 ("Maximum update depth exceeded") and left the app white. useWallWindow measures after every render through a layout effect with no dependency array, and it ended by setting state with a value it had just found. A set made from a layout effect renders again whether or not the value moved, so an unchanged measurement re-rendered, which remeasured, which set again: the loop. It is now guarded on the last window actually written (a ref), and nothing is set that the wall already stands at. Reproduced with the throwaway storm probe against a 3000-file roll (the tree vanished at round 2, ~50 identical renders). After the fix: 12 rounds of hard SINGLE/ALL THUMBS toggling on the production bundle, no error, no white screen.