fix(control-ui): prevent iOS input zoom#81639
Conversation
|
Codex review: needs maintainer review before merge. Summary Reproducibility: yes. for a source-level reproduction path: current main leaves several non-chat Control UI text-entry controls below 16px, which matches the linked iOS Safari focus-zoom report. I did not run a physical iPhone Safari tap/zoom repro in this read-only review. Real behavior proof Next step before merge Security Review detailsBest possible solution: Land the focused CSS and regression-test fix after normal maintainer review and CI so touch-primary Control UI text-entry controls stay at or above the iOS Safari 16px focus threshold. Do we have a high-confidence way to reproduce the issue? Yes for a source-level reproduction path: current main leaves several non-chat Control UI text-entry controls below 16px, which matches the linked iOS Safari focus-zoom report. I did not run a physical iPhone Safari tap/zoom repro in this read-only review. Is this the best way to solve the issue? Yes. The PR uses narrow touch-primary CSS overrides and style tests for the affected surfaces while preserving the existing chat input-size variable, which is the maintainable fix boundary for this bug. What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 3b8ac38ae9ee. |
|
Landing proof for #81639. Exact PR head: Local verification run:
GitHub verification:
Known proof gap:
|
8898ab9 to
43cce6a
Compare
43cce6a to
fa0d44a
Compare
|
Final landing proof for #81639 after rebasing onto current Exact PR head: Local verification run on this head:
GitHub verification on this head:
Known proof gap:
|
Summary
.fieldinputs/selects, config editor/search fields, and usage filters/search controls at16pxon touch-primary devices so iOS Safari does not auto-zoom when they receive focus.--control-ui-input-text-sizestill has a 16px floor and both chat textareas use it.Fixes #64651.
Supersedes #64673.
Real behavior proof
Behavior addressed: iOS Safari auto-zooms Control UI when focused text-entry controls compute below 16px.
Real environment tested: Playwright WebKit 26.4 using the iPhone 12 device profile (
hover: none,pointer: coarse) against the actual Control UI CSS files after this patch.Exact steps or command run after this patch: ran a Node/WebKit computed-style proof that loaded
base.css,components.css,chat/layout.css,config.css, andusage.css, rendered shared form, chat, config, and usage controls, then failed if any targeted control computed below 16px.Evidence after fix: computed font sizes were
16pxforshared,legacy-chat,active-chat,config-search,config-small,config-textarea,config-number,config-select,usage-date,usage-query,usage-filter-select, andusage-filter-text.Observed result after fix: no targeted touch-primary text-entry control remains below the iOS Safari 16px focus-zoom threshold.
What was not tested: physical iPhone hardware tap/zoom recording. The after-fix proof uses WebKit mobile/touch emulation plus source-level CSS tests; no server/runtime behavior changed.
Verification
pnpm installpnpm exec oxfmt --check --threads=1 CHANGELOG.md ui/src/styles/components.css ui/src/styles/config.css ui/src/styles/usage.css ui/src/styles/chat/layout.test.ts ui/src/styles/components.test.ts ui/src/styles/config.test.ts ui/src/styles/usage.test.tsgit diff --checkpnpm test ui/src/styles/chat/layout.test.ts ui/src/styles/components.test.ts ui/src/styles/config.test.ts ui/src/styles/usage.test.ts(97 files, 983 tests)pnpm check:changednode --input-type=module <mobile WebKit computed-style proof>