From cecc1060c6229c026149c17d2fe7723fd3a2eab1 Mon Sep 17 00:00:00 2001 From: Alan Wizemann Date: Fri, 24 Apr 2026 13:35:51 +0200 Subject: [PATCH] M8: clamp Dynamic Type at ScarfGo scene root MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ScarfGo is a developer tool that benefits from tighter defaults than Apple's spacious baseline, but shouldn't lock out users who need accessibility sizes. `.dynamicTypeSize(.xSmall ... .accessibility2)` at the WindowGroup gives both: compact-first layout, still scalable to ~XL accessibility for low-vision users. Going past .accessibility2 collapses multi-column rows and forces text truncation in ScarfGo's dense list layouts — not a win for anyone. Matches Use-Your-Loaf's "Restricting Dynamic Type Sizes" guidance from the M8 density research. One-line change ahead of the TabView migration (2.2) so every subsequent UX-density decision factors in the clamped range. Co-Authored-By: Claude Opus 4.7 (1M context) --- scarf/Scarf iOS/App/ScarfIOSApp.swift | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/scarf/Scarf iOS/App/ScarfIOSApp.swift b/scarf/Scarf iOS/App/ScarfIOSApp.swift index eabff46..e9b456c 100644 --- a/scarf/Scarf iOS/App/ScarfIOSApp.swift +++ b/scarf/Scarf iOS/App/ScarfIOSApp.swift @@ -51,6 +51,17 @@ struct ScarfIOSApp: App { WindowGroup { RootView(model: root) .task { await root.load() } + // Clamp Dynamic Type at the scene root. ScarfGo is a + // developer tool that needs more density than Apple's + // .xxxLarge default, but we still scale from .xSmall + // to .accessibility2 so users who need larger text can + // get it without breaking the layout. Going past + // .accessibility2 (~XL accessibility) collapses + // multi-column rows and forces text truncation — not + // a win for anyone. Cross-checked against + // Use-Your-Loaf's "Restricting Dynamic Type Sizes" + // guidance (M8 density research). + .dynamicTypeSize(.xSmall ... .accessibility2) } } }