Fix iOS chat Dynamic Type text#97552
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 28, 2026, 5:22 PM ET / 21:22 UTC. Summary PR surface: Other +52. Total +52 across 4 files. Reproducibility: yes. for source-level reproduction: current main and v2026.6.10 still use fixed SwiftUI font calls in the scoped Chat message, intro, and iOS composer paths. I did not run a failing live device or simulator capture in this read-only review. Review metrics: none identified. Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land the scoped Dynamic Type fix after normal exact-head maintainer and CI gates; keep broader iOS app typography changes out of this PR. Do we have a high-confidence way to reproduce the issue? Yes for source-level reproduction: current main and v2026.6.10 still use fixed SwiftUI font calls in the scoped Chat message, intro, and iOS composer paths. I did not run a failing live device or simulator capture in this read-only review. Is this the best way to solve the issue? Yes: this is the narrow maintainable fix because it changes the exact shared Chat text call sites, uses Dynamic Type-aware SwiftUI styles, and only adjusts composer sizing needed to avoid clipping. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 9bb004359ee5. Label changesLabel justifications:
Evidence reviewedPR surface: Other +52. Total +52 across 4 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
|
Screenshot evidence from the current branch build, captured with the existing iOS These are intentionally chat-only screenshots. Full app screenshots were not used as acceptance proof because iOS Dynamic Type is a global setting and existing non-chat surfaces may already respond independently of this patch. Normal text size Max accessibility text size |
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. |
Co-authored-by: Your Name <[email protected]>
Co-authored-by: Your Name <[email protected]>
Co-authored-by: Your Name <[email protected]>
Co-authored-by: Your Name <[email protected]>


What Problem This Solves
Fixes #97534. The native iOS Chat surface used fixed point fonts for scoped chat text paths, so users who increase iOS text size could still see small message, intro, and composer text in OpenClaw Chat.
Why This Change Was Made
The scoped chat text call sites now use Dynamic Type-aware SwiftUI text styles:
.body.body.callout.italic().body.bodyThe iOS clean composer row also now uses Dynamic Type-scaled text min/max heights and a minimum row height instead of forcing the editor capsule into a fixed 40-point row, avoiding clipping at accessibility text sizes.
User Impact
Users who rely on iOS Larger Text should see Chat message text and composer text scale with their system setting. This is intentionally limited to chat transcript/intro/composer text and does not change Control, Settings, app tabs, gateway setup, or other app shell surfaces.
Evidence
swiftformat --lint --config config/swiftformat apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatMessageViews.swift apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatView.swift apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatDynamicTypeSourceGuardTests.swiftpassed.swift test --package-path apps/shared/OpenClawKit --filter ChatDynamicTypeSourceGuardTestspassed.pnpm ios:genpassed./usr/local/bin/swiftlintfailing to loadsourcekitdInProc.framework.autoreview clean: no accepted/actionable findings reported.Screenshot proof from the current branch build, captured with the existing iOS
--openclaw-screenshot-modefixture:Normal text size:
Max accessibility text size:
Screenshot asset host: https://github.com/jmcte/openclaw/releases/tag/proof-ios-chat-dynamic-type-97552
Full app screenshots are intentionally not used as acceptance proof because iOS Dynamic Type is a global setting and existing non-chat surfaces may already respond independently of this patch.
Known unrelated validation failures:
swift test --package-path apps/shared/OpenClawKitstill fails in existingTalkConfigContractTests.selectionFixturesand several asyncChatViewModelTeststimeout/dedupe expectations.xcodebuild/XcodeBuildMCP generated-project build still fails before compilation in the SwiftLint phase withSourceKittenFramework/library_wrapper.swift:58: Fatal error: Loading sourcekitdInProc.framework/Versions/A/sourcekitdInProc failed.