orca/mobile/src
gsxdsm cd31cd702d
feat(mobile): add terminal text size (zoom) setting (#5388)
* release: v1.4.48-rc.0 [rc-slot:2026-06-05-15]

* release: v0.0.1-rc.0 [rc-slot:2026-06-06-03]

* feat(mobile): add terminal text size (zoom) setting

The mobile terminal fits the desktop's full column count to the phone
width with a CSS scale, which cancels out xterm's raw fontSize — so there
was no way to make text bigger or smaller. Add a persisted baseline zoom
multiplier the WebView applies on top of the fit.

- Settings → Terminal → "Text size": 50%–200% presets.
- Pinch-to-zoom in the terminal snaps to the same presets and persists.
- Per-device display preference; does not change the desktop terminal.
- Extracts the xterm WebView HTML into terminal-webview-html.ts to keep
  TerminalWebView.tsx within its max-lines budget.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* refactor(mobile): make terminal text size reflow columns instead of CSS scaling

Text size now drives the real xterm fontSize rather than a CSS transform
baseline. A larger cell means fewer columns fit the phone width, so the
existing measure -> terminal.updateViewport pipeline resizes the PTY and the
shell rewraps to the new width (and smaller sizes show more columns). Pinch
still snaps to a preset, but now changes the font size and reflows instead of
scaling pixels; the refit hook re-fits the PTY whenever the scale changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(mobile): restore terminal touch scrollback (undefined contentWiderThanViewport)

The single-finger touchmove handler gated horizontal panning on
contentWiderThanViewport(), which is never defined — so every one-finger
touchmove threw a ReferenceError before reaching the vertical-scroll code
below it, killing all touch scrolling including scrollback.

Replace the call with the inline overflow check clampPan() already uses
(scrollWidth * getTotalScale() > innerWidth). Vertical scroll now always runs;
two-finger pinch-to-zoom is unaffected. Merged two adjacent var decls to keep
the file under its max-lines cap without a disable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* test(mobile): guard terminal text scale viewport refit

Co-authored-by: Orca <help@stably.ai>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Jinwoo-H <jinwoo0825@gmail.com>
Co-authored-by: Orca <help@stably.ai>
2026-06-15 13:14:58 -07:00
..
browser Address react doctor warnings 2026-06-03 12:48:00 -07:00
cache Add braces to mobile control flow (#4351) 2026-05-31 21:32:37 -07:00
components fix(mobile): retry handshake before latching auth-failed (#5200) (#5304) 2026-06-13 14:25:43 -07:00
constants
diagnostics Add braces to mobile control flow (#4351) 2026-05-31 21:32:37 -07:00
hooks perf: cap mobile dictation audio backlog (#4078) 2026-05-31 03:33:00 -07:00
layout
notifications Fix duplicate mobile notifications (#5206) 2026-06-11 12:15:06 -07:00
platform
session feat(mobile): add terminal text size (zoom) setting (#5388) 2026-06-15 13:14:58 -07:00
source-control Add mobile Review Changes workflow (#5313) 2026-06-13 14:24:26 -07:00
storage feat(mobile): add terminal text size (zoom) setting (#5388) 2026-06-15 13:14:58 -07:00
tasks feat: add Devin CLI as supported TUI agent (#5282) 2026-06-12 16:10:09 -07:00
terminal feat(mobile): add terminal text size (zoom) setting (#5388) 2026-06-15 13:14:58 -07:00
theme
transport fix(mobile): retry handshake before latching auth-failed (#5200) (#5304) 2026-06-13 14:25:43 -07:00
host-route-action-state.test.ts Resolve host new-worktree route action before commit (#3242) 2026-05-30 19:15:42 -07:00
host-route-action-state.ts Resolve host new-worktree route action before commit (#3242) 2026-05-30 19:15:42 -07:00