Skip to content

Responsive shell: fit map on resize, compact status bar and toolbar for phones and tablets - #3

Merged
pythonicode merged 1 commit into
mainfrom
feat/responsive-layout
Oct 14, 2026
Merged

pythonicode merged 1 commit into
mainfrom
feat/responsive-layout

Conversation

@pythonicode

Copy link
Copy Markdown
Owner

Summary

A responsive pass over the shell for tablets and phones. Tested at phone portrait (390×844), landscape phone (844×390), tablet portrait (834×1112), iPad landscape (1024×768) and desktop (1440×900).

Stacked on #2 (feat/project-library). Its base is that branch, so the diff shows only this work.

Changes

  • Map fits the screen, and keeps fitting on resize. Before, the map was only fitted when first imported, so rotating a device or resizing the window left it tiny in a corner. It now refits on resize until the user zooms or pans. A Fit button in the status bar (the zoom readout) refits on demand.
  • Touch status bar no longer wraps or overflows. Text size moves into the Style sheet, which uses a new shared TextSizeSlider.
  • Compact status bar caps the rotation slider so the bar fits at 1024px.
  • Touch tips hide after 12 seconds and are hidden on short landscape screens (height ≤ 500px).
  • Bottom toolbar buttons shrink on narrow screens (≤ 420px), so all eight fit at 390px. On short landscape screens the labels drop, which gives the canvas the height.

Not changed

  • Desktop layout (≥ 1280px) is unchanged apart from the Fit button.
  • Layout is still chosen by window width in useLayoutMode (1280 / 1024 breakpoints), not by device type.

Testing

  • bun run test, bun run lint, bun run build pass.
  • Checked in the browser at each size above. The map fills the canvas, the status bar and bottom toolbar fit without overflow, and the Style sheet shows the text-size slider.
  • Found and fixed a case where the status bar's rotation slider pushed other items off the right edge at 1024px.
  • Not verified on real devices. Safe-area insets on notched phones are unchanged.

🤖 Generated with Claude Code

- The map refits when the window resizes, until the user zooms or pans
  manually. A Fit button in the status bar refits on demand.
- Touch status bar keeps zoom, Fit and the tool hint off the bar; text size
  moves into the Style sheet, so nothing wraps or overflows on a phone.
- Compact status bar caps the rotation slider so the bar fits at 1024px.
- Touch tips hide after 12 seconds and on short landscape screens, where the
  bottom toolbar drops its labels to give the canvas the height.
- Toolbar buttons shrink on narrow screens so all eight fit at 390px.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
analysis Ready Ready Preview Oct 14, 2026 9:01am UTC

@pythonicode
pythonicode changed the base branch from feat/project-library to main October 14, 2026 09:01
@pythonicode
pythonicode merged commit c25457e into main Oct 14, 2026
4 checks passed

This branch was successfully deployed

1 active deployment
Preview — 880dc438 Deployed Oct 14, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant