73b8847d7b
The terminal fix was only one instance. An audit of the other pane toggles found ⌘G and ⌘J diverging the same way, proven with a probe: with review stacked behind files in the right column, or either pane inside a minimized zone, the store reads open while nothing is on screen, so the press re-asserts a value it already held and the key does nothing. isPaneVisible / togglePaneVisible replace the tool-panel-only pair and now back every toggle. Close still routes through closeTreePane, so each pane keeps its own semantics: a tool panel collapses to its rail, files and review close through their store, anything else is dismissed. files and review were bound with a closer and no opener, so the boolean went stale as soon as anything but the toggle revealed them. bindPaneVisibility moves into the tree store beside bindToolPaneCollapse, documents the two as a pair, and both panes now pass both halves. Keeping the binding in the store also means the tests drive the real function — the earlier copy in the test file passed with the fix reverted, which is how the missing opener survived the first pass. setTreePaneHidden keeps its quiet path: a reactive unhide (a cwd arriving) must not front or un-minimize over what the user is looking at. Only user intent goes through the reveal path.