feat: add a persistent app shell with a themed top bar and pattern panel #11
Loading…
Reference in a new issue
No description provided.
Delete branch "add-app-shell-layout"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
AppShell: a persistent top bar wrapping both the Home and Editor screens, showing contextual actions depending on whether a mosaic is open, instead of each screen owning its own separate chromeopenspec/changes/archive/2026-09-20-add-app-shell-layout/) and syncs a newapp-shellcapability spec plus an updatedmosaic-editorspecReal bugs found and fixed during verification
This sandbox has no display, so verification was done by building the release binary, running it under Xvfb, and driving it with synthesized X11 input (
python-xlib) rather than just screenshotting. That caught three real bugs, all fixed here:@mui/material/styles/ThemeProvider) that type-checked fine but broke the production build (packageexportsmap resolution) —tsc/dev mode never caught itidthat didn't exist in the DOM, so clicking Copy would have thrownDrawerdefaulting toposition: fixedeven in thepersistentvariant, which overlapped the top bar and hid the Zoom/Close buttons whenever the pattern panel was openTest plan
npm run lint— cleannpx tsc --noEmit— cleannpm test— 14/14 passing🤖 Generated with Claude Code
https://claude.ai/code/session_01KoLHnQugaAW2eknKo8FxVp
The app previously swapped between two visually unrelated full-screen views (HomePage's branded background, MosaicEditor's own toolbar) with no shared chrome, a Home layout already larger than the app's default window size, and MUI components rendering in their default light theme against a hand-styled dark page background. Adds AppShell: a persistent top bar wrapping both the Home and Editor states, showing contextual actions depending on whether a mosaic is open. The written-pattern view moves from a blocking modal dialog to a toggleable right-side panel, opened/closed via a persistent handle on its own edge rather than a top-bar button, so it can stay open alongside the canvas. A real MUI dark theme (built around the app's existing colors) replaces the previous light/dark mismatch. Home's background image is now properly scaled instead of overflowing the default window. Window title fixed from a pre-rename leftover ("Deiussum's Pattern Maker") to "Tesserow". A left-side toolbox is deliberately not part of this change; the shell's layout leaves room for one as a future, separate proposal. Verification (via click-through testing under Xvfb with synthesized X11 input, since this sandbox has no display) caught three real bugs along the way, all fixed here: - A deep MUI import path that type-checked fine but broke the production build (package "exports" map resolution). - A pre-existing bug in the written-pattern dialog's Copy button (missing element id meant it would have thrown on click). - MUI's Drawer defaulting to position:fixed even in the "persistent" variant, which overlapped the top bar and hid buttons behind the panel when it was open. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KoLHnQugaAW2eknKo8FxVp