Repository navigation
Fix iOS toolbar and terminal picker scroll fade - #6641
austinywang wants to merge 11 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughA new ChangesStable Scrollable Appearance for Accessory Bar
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
Important Pre-merge checks failedPlease resolve all errors before merging. Addressing warnings is optional. ❌ Failed checks (2 errors, 1 warning)
✅ Passed checks (20 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Greptile SummaryThis PR fixes two separate iOS 26 Liquid Glass scroll-fade regressions: the keyboard accessory toolbar (scroll-hosted keys now use flat keycap styling) and the top-right terminal picker menu (row-list identity is now keyed on stable terminal ids, with live name display layered on top separately).
Confidence Score: 5/5Safe to merge — both fixes address confirmed root causes with no regressions introduced. The id-only Equatable change is correctly scoped: structural row adds/removes/reorders still trigger a sync because the ID array changes, while name-only churn is cleanly handled by the live namesByID lookup without touching the cached row list. The toolbar appearance change is equally precise — scroll-hosted buttons opt into flat style via a stable per-button flag, pinned controls retain glass, and the ?? true fallback in applyAccessoryButtonStyle safely suppresses glass for any unknown button type. Tests directly exercise the two key invariants. No files require special attention. Important Files Changed
Reviews (7): Last reviewed commit: "Merge remote-tracking branch 'origin/mai..." | Re-trigger Greptile |
…ory-bar-scroll-glitch
…ory-bar-scroll-glitch
…ory-bar-scroll-glitch
|
Update after the fresh top-right-menu report:
Validation on pushed HEAD
Terminal picker fixed-state simulator evidence with 24 terminals:
|
|
Follow-up on structured review finding at The first terminal-picker fix made row equality id-only, but review correctly caught that the existing I fixed that by separating structure from display data:
Re-validation after this commit:
|
…ory-bar-scroll-glitch
Summary
id -> namemap, so name-only terminal updates do not go stale after avoiding row-list rewrites.Root Cause
The fresh report was a separate surface from the accessory toolbar. The top-right terminal picker rows carried both
idandname, and the rowEquatableconformance compared both values. Terminal names can change while the native iOS 26 menu is open, so SwiftUI treated the same row structure as changed and resyncedterminalPickerRowsduring scroll. That churn disturbed the Liquid Glass-backed menu surface and showed up as the top-right menu fading/glitching.The fix keeps row-list stability tied to terminal ids and moves current names into a separate live lookup used only for display. Structural add/remove/reorder changes still refresh the cached row list, while name-only churn updates labels without replacing the menu rows.
Evidence
Accessory toolbar before/after evidence from the first fix:
Top-right terminal picker fixed-state evidence with 24 terminals:
Validation
python3 scripts/swift_file_length_budget.pygit diff --checkswift testinPackages/iOS/CmuxMobileShellUIwas attempted, but SwiftPM fails before compiling tests because the package resolves as macOS 10.13 while dependencies require macOS 12/14.ios/scripts/reload.sh --tag issue-6633-ios-accessory-bar-scroll-glitch --simulator "iPhone 17" --no-launchios/cmux/Resources/Localizable.xcstrings; checked changed Swift files for new bare user-facing strings; new generated terminal names use existingmobile.preview.terminalNameFormatwith English and Japanese localizations.Closes #6633