Repository navigation
fix(ios): prevent keyboard transition bounce loop - #12183
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 10 included reviews per hour; 4 remain after this review. 📝 WalkthroughWalkthroughThe keyboard frame handler now prevents reentrant processing. A private state flag tracks active handling and resets after each notification. ChangesKeyboard transition handling
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~5 minutes Severity of issue fixed: Low Merge Risk: ⚪ Minimal · up to Keyboard frame changes now ignore nested transition callbacks, preventing opposing dock-layout transitions while preserving subsequent notification handling. No current merge-readiness risk remains. 🚥 Pre-merge checks | ✅ 23 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (23 passed)
✨ Finishing Touches 💡 1📝 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 |
1a9bc89 Warn for Macs missing a directory version (manaflow-ai#12182) 4d521b1 fix(ios): prevent reentrant keyboard transition handling (manaflow-ai#12183)
Brings in #12161/#12159 (main's own CI unbreak: the CmuxTerminal test import, the over-budget warnings, pbxproj normalization, the hook-test update for #11976), #12151, #12182, #12183. Conflicts resolved in favour of main's versions, which are the canonical form of fixes this branch had already applied independently: - Sources/SessionIndexTableController.swift (the assumeIsolated hop; main carries it without the extra comment) - cmuxTests/ClaudeHookLifecycleCleanupTests.swift (main's phrasing of the pane-scoped journal assertions) Claude-Session: https://claude.ai/code/session_01VKgkeNqEDGCbk8D9JMQGsh
Prevent reentrant keyboard-frame handling while a transition is being applied. This stops the terminal dock from repeatedly starting opposing layout transitions when UIKit emits a nested frame notification.
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.Summary by cubic
Prevents the terminal dock from bouncing by guarding against reentrant keyboard-frame handling. The new flag stops opposing layout transitions when UIKit emits a nested frame notification.
Written for commit e783402. Summary will update on new commits.
Note
Low Risk
Small, localized change to keyboard notification handling on iOS terminal layout; no auth, data, or API surface impact.
Overview
Adds a reentrancy guard on
keyboardWillChangeFrameinGhosttySurfaceHostViewso nestedkeyboardWillChangeFramenotifications are ignored while a transition is already being handled.The host sets
isHandlingKeyboardTransitionat entry and clears it indeferbefore callingbeginKeyboardLeg. That stops UIKit from starting opposing dock layout legs when a frame notification fires again during the same synchronous handling path (the bounce loop described in the PR).Reviewed by Cursor Bugbot for commit e783402. Bugbot is set up for automated code reviews on this repo. Configure here.
Summary by CodeRabbit