gsxdsm
16b6e5decb
FN-6638: stabilize mobile terminal font metrics
Stabilize terminal font metric remeasurement across mobile and attach surfaces.
- Add a shared terminal font metric wait helper that falls back from full font stacks to concrete individual font families before remeasurement.
- Reapply font options, refit, resize, and refresh SessionTerminal after font metrics settle to cover attached CLI terminals.
- Pin text-size adjustment on xterm measurement subtrees so mobile WebKit cannot inflate ASCII cell metrics.
- Extend terminal preference and rendering tests, documentation, and changeset coverage for the recurrence.
Files changed:
.changeset/fn-6638-terminal-render.md | 5 +
.../xterm-async-font-remeasure-paste-dedupe.md | 20 +++-
.../dashboard/app/__tests__/terminal-input.test.ts | 26 +++++
.../dashboard/app/components/SessionTerminal.css | 10 ++
.../dashboard/app/components/SessionTerminal.tsx | 29 ++++++
.../dashboard/app/components/TerminalModal.css | 10 ++
.../dashboard/app/components/TerminalModal.tsx | 24 ++---
.../components/__tests__/SessionTerminal.test.tsx | 41 +++++++-
.../components/__tests__/TerminalModal.test.tsx | 38 ++++++++
.../utils/__tests__/terminalPreferences.test.ts | 29 +++++-
.../dashboard/app/utils/terminalPreferences.ts | 107 +++++++++++++++++++++
11 files changed, 319 insertions(+), 20 deletions(-)
Fusion-Task-Id: FN-6638
Fusion-Task-Lineage: edbf071d-a0c1-4955-95ff-83e6996f4674
2026-06-18 13:19:43 -07:00
..
2026-04-24 19:39:20 -07:00
2026-05-22 20:20:42 -07:00
2026-06-13 11:03:30 -07:00
2026-05-19 20:29:59 -07:00
2026-06-03 20:52:44 -07:00
2026-05-30 14:20:12 -07:00
2026-06-03 19:48:40 -07:00
2026-05-08 17:17:59 -07:00
2026-05-25 16:32:57 -07:00
2026-05-31 08:32:01 -07:00
2026-06-11 09:21:23 -07:00
2026-05-07 18:47:08 -07:00
2026-05-09 10:31:04 -07:00
2026-06-02 18:29:53 -07:00
2026-05-29 10:55:25 -07:00
2026-06-15 02:30:41 -07:00
2026-05-16 12:49:57 -07:00
2026-05-07 18:35:45 -07:00
2026-05-07 23:21:05 -07:00
2026-06-13 16:30:28 -07:00
2026-05-22 20:20:42 -07:00
2026-06-13 11:53:44 -07:00
2026-05-23 20:24:18 -07:00
2026-05-18 05:35:14 -07:00
2026-04-23 13:29:23 -07:00
2026-05-17 10:37:54 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:24:18 -07:00
2026-06-11 22:36:22 -07:00
2026-06-10 06:02:12 -07:00
2026-06-10 01:10:11 -07:00
2026-05-22 20:20:42 -07:00
2026-06-13 16:30:28 -07:00
2026-05-22 20:20:42 -07:00
2026-04-24 19:39:20 -07:00
2026-05-22 20:20:42 -07:00
2026-05-22 20:20:42 -07:00
2026-04-24 19:39:20 -07:00
2026-06-16 15:08:24 -07:00
2026-06-03 22:31:23 -07:00
2026-06-03 15:32:29 -07:00
2026-05-22 10:37:21 -07:00
2026-05-07 14:09:39 -07:00
2026-06-17 11:46:31 -07:00
2026-05-10 23:36:10 -07:00
2026-05-29 20:05:14 -07:00
2026-06-08 14:22:03 -07:00
2026-06-05 00:48:24 -07:00
2026-05-22 20:20:42 -07:00
2026-06-13 11:22:07 -07:00
2026-05-23 20:24:18 -07:00
2026-05-22 20:20:42 -07:00
2026-05-23 20:24:18 -07:00
2026-04-07 23:25:34 -07:00
2026-05-23 20:24:18 -07:00
2026-03-28 16:30:23 -04:00
2026-04-24 22:25:57 -07:00
2026-06-08 18:14:48 -07:00
2026-06-16 22:29:07 -07:00
2026-05-22 20:20:42 -07:00
2026-05-15 10:05:46 -07:00
2026-05-22 20:20:42 -07:00
2026-06-09 08:46:25 -07:00
2026-05-29 08:20:28 -07:00
2026-06-05 01:53:42 -07:00
2026-06-04 22:00:04 -07:00
2026-06-11 09:21:23 -07:00
2026-06-05 00:46:59 -07:00
2026-04-24 19:39:20 -07:00
2026-05-07 23:21:05 -07:00
2026-05-08 01:57:55 -07:00
2026-05-06 05:29:56 -07:00
2026-06-03 01:08:09 -07:00
2026-06-02 19:13:24 -07:00
2026-05-17 19:11:59 -07:00
2026-05-17 03:28:21 -07:00
2026-06-10 06:48:56 -07:00
2026-05-08 07:38:50 -07:00
2026-06-05 00:48:24 -07:00
2026-06-16 19:49:45 -07:00
2026-06-14 13:50:17 -07:00
2026-06-18 13:19:43 -07:00
2026-04-30 21:26:54 -07:00
2026-05-23 20:24:18 -07:00
2026-05-13 10:00:00 -07:00
2026-06-10 00:20:35 -07:00
2026-05-29 20:05:14 -07:00