v2.59.1
Keep session view and send button on-screen in mobile portrait
Fixes the mobile portrait dashboard session layout where fixed chrome (session bar, banners, tasks/subagents panels, and composer) could exceed the viewport, clipping the send button and letting the view slide.
What changed
- Fitting chrome on mobile. On ≤700px viewports, the banner region, tasks/subagents/status panels, queued messages, attachment strip, and composer textarea are now capped, and a flexbox safety net guarantees the composer and its action buttons (file, photo, mode toggle, send) are never clipped.
- No page sliding. The app shell is anchored to the layout viewport via a percentage height chain (
html,body,#root,.session-screen) instead ofvh/dvhunits — fixing an intermittent ~50–60px scroll and clipped send row in installed Android PWAs caused by Chromium's stale viewport-unit resolution at launch. - Reachable slash commands on mobile. The
/command menu renders in-flow inside the composer scroll area instead of as an overlay, so it is no longer clipped by the mobile composer's scroll rules. - Composer auto-grow aware of narrow viewports. The textarea cap is now viewport-width aware, capping at 26% of viewport height on narrow screens (120px floor).
- Regression coverage. Real-Chromium acceptance-state geometry tests at 390×844 and keyboard-sized 390×400, unit tests for the sizing helper, and a JSX structural guard against layout drift.
Implemented in PR 477.