Adopt the shared chrome in Docs
The estilo bar replaces rastrillo's topbar: 52px everywhere, with in-bar rename, Share... as the bar action, an account menu that holds the only Sign out, per-app Appearance, and 'All apps'. The menubar is rebuilt on estilo: unbuilt items are hidden, checks are live, and shortcuts are labelled for the platform. Errors render as real pages (404, 405, a recoverer inside the session group); callouts use real tones; borderless toolbar buttons are square. Sign-in uses the suite copy and lands on the deep link (sealed return cookie), without looping for revoked guests. The Share page is rebuilt on rastrillo partials with Copy link, and the phone toolbar is one scrolling row. Also fixes a CLS of 0.137 on document load that was already on main. Reviewed by GPT-6-Astra via Codex (#65); fix delta checked by the coordinating session, with a model re-check pending. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Squashed from feat/r2-shared-chrome into main.
cmd/docs/main.go+6 −0fixtures/browser-drive.mjs+28 −8fixtures/build-bundles.mjs+3 −0fixtures/editor-entry.js+10 −2fixtures/jump-to.mjs+13 −0fixtures/menu.mjs+68 −37fixtures/menu.test.mjs+41 −12fixtures/share-link.mjs+45 −0fixtures/shortcuts.mjs+10 −12fixtures/toolbar.mjs+8 −1fixtures/toolbar.test.mjs+17 −8go.mod+1 −1go.sum+2 −4internal/docs/app.go+66 −5internal/docs/assets.go+4 −1internal/docs/assets_test.go+1 −0internal/docs/auth.go+87 −34internal/docs/auth_navigation.go+3 −3internal/docs/auth_test.go+2 −2internal/docs/chrome.go+178 −0internal/docs/chrome_test.go+288 −0internal/docs/errors.go+216 −0internal/docs/errors_test.go+426 −0internal/docs/export.go+3 −3internal/docs/grants_edges_test.go+5 −1internal/docs/handlers.go+73 −29internal/docs/home_config.go+36 −0internal/docs/home_local_navigation.go+6 −1internal/docs/home_render.go+22 −4internal/docs/home_router_integration_test.go+13 −3internal/docs/home_routes.go+10 −0internal/docs/list_test.go+15 −42internal/docs/menu.go+79 −76internal/docs/menu_test.go+3 −19internal/docs/pages_test.go+11 −13internal/docs/publish.go+9 −7internal/docs/render.go+142 −93internal/docs/share.go+39 −11internal/docs/share_nav_test.go+14 −10internal/docs/share_page_test.go+52 −0internal/docs/signin_loop_test.go+160 −0internal/docs/signin_return.go+186 −0internal/docs/static/{editor.7b3340607b1f951f.js => editor.1407830d50c4f292.js}+13 −13internal/docs/static/jumpto.58ca95c441b1bd49.js+1 −0internal/docs/static/jumpto.5da80b47f2ea7b28.js+0 −1internal/docs/static/share.b7f152cdd9e793ac.js+1 −0internal/docs/team_access.go+4 −6internal/docs/team_router_test.go+1 −1internal/docs/testing.go+20 −0internal/docs/views/error.html+3 −0internal/docs/views/head.html+0 −1internal/docs/views/home_link.html+5 −2internal/docs/views/layout.html+42 −0internal/docs/views/list.html+5 −21internal/docs/views/partials/jumpto.html+8 −1internal/docs/views/public.html+6 −12internal/docs/views/share.html+121 −62internal/docs/views/show.html+138 −317internal/docs/views/signin.html+16 −130
cmd/docs/main.goLoading diff…
fixtures/browser-drive.mjsLoading diff…
fixtures/build-bundles.mjsLoading diff…
fixtures/editor-entry.jsLoading diff…
fixtures/jump-to.mjsLoading diff…
fixtures/menu.mjsLoading diff…
fixtures/menu.test.mjsLoading diff…
fixtures/share-link.mjsLoading diff…
fixtures/shortcuts.mjsLoading diff…
fixtures/toolbar.mjsLoading diff…
fixtures/toolbar.test.mjsLoading diff…
go.modLoading diff…
go.sumLoading diff…
internal/docs/app.goLoading diff…
internal/docs/assets.goLoading diff…
internal/docs/assets_test.goLoading diff…
internal/docs/auth.goLoading diff…
internal/docs/auth_navigation.goLoading diff…
internal/docs/auth_test.goLoading diff…
internal/docs/chrome.goLoading diff…
internal/docs/chrome_test.goLoading diff…
internal/docs/errors.goLoading diff…
internal/docs/errors_test.goLoading diff…
internal/docs/export.goLoading diff…
internal/docs/grants_edges_test.goLoading diff…
internal/docs/handlers.goLoading diff…
internal/docs/home_config.goLoading diff…
internal/docs/home_local_navigation.goLoading diff…
internal/docs/home_render.goLoading diff…
internal/docs/home_router_integration_test.goLoading diff…
internal/docs/home_routes.goLoading diff…
internal/docs/list_test.goLoading diff…
internal/docs/menu.goLoading diff…
internal/docs/menu_test.goLoading diff…
internal/docs/pages_test.goLoading diff…
internal/docs/publish.goLoading diff…
internal/docs/render.goLoading diff…
internal/docs/share.goLoading diff…
internal/docs/share_nav_test.goLoading diff…
internal/docs/share_page_test.goLoading diff…
internal/docs/signin_loop_test.goLoading diff…
internal/docs/signin_return.goLoading diff…
internal/docs/static/{editor.7b3340607b1f951f.js => editor.1407830d50c4f292.js}Loading diff…
internal/docs/static/jumpto.58ca95c441b1bd49.jsLoading diff…
internal/docs/static/jumpto.5da80b47f2ea7b28.jsLoading diff…
internal/docs/static/share.b7f152cdd9e793ac.jsLoading diff…
internal/docs/team_access.goLoading diff…
internal/docs/team_router_test.goLoading diff…
internal/docs/testing.goLoading diff…
internal/docs/views/error.htmlLoading diff…
internal/docs/views/head.htmlLoading diff…
internal/docs/views/home_link.htmlLoading diff…
internal/docs/views/layout.htmlLoading diff…
internal/docs/views/list.htmlLoading diff…
internal/docs/views/partials/jumpto.htmlLoading diff…
internal/docs/views/public.htmlLoading diff…
internal/docs/views/share.htmlLoading diff…
internal/docs/views/show.htmlLoading diff…
internal/docs/views/signin.htmlLoading diff…