Repository navigation
Shell: the sidebar is there the moment the page shows - #798
Conversation
The layout starts hidden (`#layout` until the person is signed in), so its first fit measured a grid 0 px wide, found no room, and hid the sidebar. The ResizeObserver fitted it again once shown, a frame later, through requestAnimationFrame: for that frame the page showed without its sidebar. `deploying_start_ui` read the sidebar right after the notice changed and sometimes met that frame (#797; CI runs 41154120681 and 41158183481). `fitted()` now leaves the saved widths as they are while the grid measures nothing: the sidebar is shown with the page, and the first measure fits the sides as before. The check reads what the page shows at the moment its notice first says Updating, in the page (a MutationObserver installed before the shell runs), not by a later look, and says which part was missing: without this fix it fails every time (`first.chrome: false`), with it it passes. Closes #797 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
alexlwn123
left a comment
There was a problem hiding this comment.
Pass at f9d62de3969664e85edd4645a89175719398ec7c.
The zero-width guard fixes the hidden-grid startup race while preserving saved open/closed choices and the existing fit once the grid is measurable. The regression check captures the first Updating notice in a MutationObserver and reports layout, sidebar visibility, and release-text exposure separately. I traced the startup, resize, narrow-screen, and retry paths and found no blocking regression. The implementation is appropriately small and uses the existing layout and browser-test helpers.
Validation: git diff HEAD^ HEAD --check passed. CI check and all four e2e shards are still pending; I did not run the suites locally. The referenced external engineering-style document was unavailable at its configured path.
Closes #797.
The race
#layoutstarts hidden until the person is signed in.layout.js's firstwrite()measured a grid 0 px wide, found no room for the left pane, and hid the sidebar (display: nonewithoutleft-open).showLayout()revealed the grid, the ResizeObserver fitted it again, but throughrequestAnimationFrame, so a frame later.deploying_start_uiread the sidebar's buttons right after it saw the notice change, and now and then landed in that frame:chrome: falseon sessions: an import writes its archive's search #774's run 41154120681 and its rerun;Fix (
cell/shell/layout.js,fitted()only)A grid that measures nothing has no window to fit, so its sides stay as saved: the sidebar is shown with the page. Its first measure then fits the sides as before, so a window too narrow for both panes still hides the left one.
The check, made exact (
crates/e2e/src/lanes/shell.rs)A script installed before the shell runs (
DEPLOY_SEEN) does three things:/api/identities/me.The detail reports each part separately, which answers #797's "which half was false".
Proof (local
cargo xtask e2e --only shell-ui)first: {"layout": true, "chrome": false, "released": false}(317 passed, 1 failed). Nothing else differs.cargo xtask checkpasses.🤖 Generated with Claude Code