Skip to content

fix(control-ui): prevent iOS input zoom#81639

Merged
BunsDev merged 1 commit into
mainfrom
meow/fix-ios-control-ui-input-zoom
May 14, 2026
Merged

fix(control-ui): prevent iOS input zoom#81639
BunsDev merged 1 commit into
mainfrom
meow/fix-ios-control-ui-input-zoom

Conversation

@BunsDev

@BunsDev BunsDev commented May 14, 2026

Copy link
Copy Markdown
Contributor

Summary

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, and usage.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 16px for shared, legacy-chat, active-chat, config-search, config-small, config-textarea, config-number, config-select, usage-date, usage-query, usage-filter-select, and usage-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 install
  • pnpm 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.ts
  • git diff --check
  • pnpm 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:changed
  • node --input-type=module <mobile WebKit computed-style proof>

@clawsweeper

clawsweeper Bot commented May 14, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge.

Summary
The branch adds touch-primary CSS overrides, style-fixture tests, and a changelog entry so shared, config, and usage Control UI text-entry controls stay at 16px while preserving chat composer input sizing.

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
Not applicable: The external contributor proof gate does not apply to this MEMBER and maintainer-labeled PR; the body nevertheless reports after-fix WebKit mobile computed-style proof for the targeted controls.

Next step before merge
No repair lane is needed because the protected maintainer-labeled PR already contains the focused fix and no discrete automation-repair defect was found.

Security
Cleared: The diff is limited to CSS, style tests, and changelog text, with no new code execution, dependency, workflow, permission, or secrets-handling surface.

Review details

Best 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:

  • Protected PR context: The provided GitHub context shows this PR is open, authored by BunsDev with authorAssociation MEMBER, and labeled maintainer, so conservative cleanup should not close it automatically. (8898ab9b3969)
  • Current chat input sizing: Current main defines --control-ui-input-text-size with a 16px floor, and both chat composer textarea paths use that variable. (ui/src/styles/base.css:93, 3b8ac38ae9ee)
  • Current config controls remain below the iOS threshold: Current main still has several config text-entry controls at 12px, 12.5px, or 13px, including search, raw textarea, config inputs, number input, and select controls. (ui/src/styles/config.css:75, 3b8ac38ae9ee)
  • Current usage controls remain below the iOS threshold: Current main sets usage date, select, query, and inline filter text controls to 12px, matching the remaining non-chat bug surface targeted by the PR. (ui/src/styles/usage.css:234, 3b8ac38ae9ee)
  • PR diff scope: The provided pullFiles context shows the PR adds only CSS media-query overrides, style tests, and one changelog entry; it does not touch runtime code, dependencies, workflows, or package metadata. (ui/src/styles/config.css:1392, 8898ab9b3969)
  • Recent UI style history: Recent history for the touched style files includes the Control UI text-size setting work and adjacent WebChat style work by Val Alexander; the provided related PR context maps the text-size work to BunsDev. (ui/src/styles/base.css:93, 52370c59980b)

Likely related people:

  • BunsDev: The related merged Control UI text-size PR introduced the 16px input-size floor this patch preserves, and recent history shows adjacent UI style work on current main. (role: recent area contributor; confidence: high; commits: 52370c59980b, 256377c029f6; files: ui/src/styles/base.css, ui/src/styles/chat/layout.css, ui/src/styles/config.css)
  • Peter Steinberger: Available blame attributes the shared field and usage input style blocks to the boundary commit, though partial local history makes the older trail less precise. (role: baseline style contributor; confidence: low; commits: 7c4f60757204; files: ui/src/styles/components.css, ui/src/styles/usage.css)

Remaining risk / open question:

  • No physical iPhone tap/zoom recording was inspected; the PR body reports WebKit mobile/touch computed-style proof plus CSS tests instead.

Codex review notes: model gpt-5.5, reasoning high; reviewed against 3b8ac38ae9ee.

@BunsDev

BunsDev commented May 14, 2026

Copy link
Copy Markdown
Contributor Author

Landing proof for #81639.

Exact PR head: 8898ab9b3969a384af57ac545be3a70e657e2d9f
Base checked: 3b8ac38ae9eebc51a69f39080adc558c54b58d4c
Mergeability: CLEAN / MERGEABLE
Review threads: none

Local verification run:

  • pnpm install
  • pnpm 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.ts
  • git diff --check
  • pnpm 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
  • pnpm check:changed
  • Playwright WebKit iPhone 12 computed-style probe for the targeted shared form, config, usage, and chat controls; all targeted controls returned 16px.

GitHub verification:

Known proof gap:

  • No physical iPhone hardware recording; this was verified with WebKit iPhone profile computed-style proof plus local focused tests and CI.

@BunsDev
BunsDev force-pushed the meow/fix-ios-control-ui-input-zoom branch from 8898ab9 to 43cce6a Compare May 14, 2026 04:07
@BunsDev
BunsDev force-pushed the meow/fix-ios-control-ui-input-zoom branch from 43cce6a to fa0d44a Compare May 14, 2026 04:13
@BunsDev

BunsDev commented May 14, 2026

Copy link
Copy Markdown
Contributor Author

Final landing proof for #81639 after rebasing onto current main.

Exact PR head: fa0d44a8fdb43058d58b31943158cddc12658c72
Base checked: 5d4a8b00721ae6d634c952a8002680f9ec729e08
Mergeability: CLEAN / MERGEABLE
Review threads: none

Local verification run on this head:

  • pnpm 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.ts
  • git diff --check
  • pnpm 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
  • pnpm check:changed
  • Playwright WebKit iPhone 12 computed-style probe for the targeted shared form, config, usage, and chat controls; all targeted controls returned 16px.

GitHub verification on this head:

Known proof gap:

  • No physical iPhone hardware recording; this was verified with WebKit iPhone profile computed-style proof plus focused tests and CI.

@BunsDev
BunsDev merged commit c722ae6 into main May 14, 2026
87 checks passed
@BunsDev
BunsDev deleted the meow/fix-ios-control-ui-input-zoom branch May 14, 2026 04:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

app: web-ui App: web-ui maintainer Maintainer-authored PR size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Control UI on iOS auto-zooms when focusing chat/input fields

1 participant