Repository navigation
fix(cloud): Cmd+T on a cloud pane selects the new remote terminal - #11612
Merged
Merged
Conversation
…et command Cmd+T in a pane projecting a cloud terminal materializes the machine's new terminal through SurfacePaneFactory, which drives the socket create handler. That handler drops the focus request when no focus-allowed socket command is active, so the tab is added but never selected. Red until the fix lands. Claude-Session: https://claude.ai/code/session_01Dg5MLmzriwRLTRCi8oh5R6
SurfacePaneFactory maps a projection onto controlSurfaceCreate/Split, whose focus handling is gated by v2FocusAllowed: it honors requestedFocus only while a socket command with a focus-allowing policy is on the thread-local stack. In-app gestures (Cmd+T, Cmd+D, sidebar New Terminal Here) run with an empty stack, so the created tab was appended behind the current one. Run the handler under a policy frame equal to the caller's focus argument, the same frame a focus-intent socket command pushes. Activation stays suppressed because the stack is non-empty. withSocketCommandPolicyStack becomes rethrows so the throwing factory body can run inside it. Claude-Session: https://claude.ai/code/session_01Dg5MLmzriwRLTRCi8oh5R6
|
Warning Review limit reachedNext included review available in 1 minute. View limit detailsLimit details: You’ve used all 10 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Team Run ID: 📒 Files selected for processing (4)
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 |
Contributor
|
All contributors have signed the CLA ✍️ ✅ |
Cmd+D routes through the split handler and VM desktop/port previews through the browser create handler; both sit behind the same focus gate. Claude-Session: https://claude.ai/code/session_01Dg5MLmzriwRLTRCi8oh5R6
Review finding: replacing the stack with [focus] let a focus-forbidding socket command regain focus through the factory. Compose the caller's intent with the innermost existing frame instead, and test that a false outer frame wins. Claude-Session: https://claude.ai/code/session_01Dg5MLmzriwRLTRCi8oh5R6
rustybret
pushed a commit
to rustybret/bmux
that referenced
this pull request
Sep 2, 2026
5f1df81 Vpc dogfood fixes (manaflow-ai#11674) c7bbfae cloud: one devbox snapshot per Freestyle size; the plan's memory picks the size (manaflow-ai#11664) d18aa5f Merge pull request manaflow-ai#11670 from manaflow-ai/issue-remote-decode-errors cd7d971 Admin Pro roster loads on page render and streams the scans (manaflow-ai#11668) da8befc fix(remote): terminate reader on malformed JSON 8a93998 test(remote): cover malformed JSON cancellation ce4cd50 fix(relay): stop when process file setup fails (manaflow-ai#11491) e3b14a1 fix(cloud): Cmd+T on a cloud pane selects the new remote terminal (manaflow-ai#11612) d90d8b8 Send Durable Object errors to Sentry (manaflow-ai#11657) 1a86aca Admin Pro roster: bounded team lookups, truncation flag, scan sequence guard (manaflow-ai#11662) f277fe6 Merge pull request manaflow-ai#11643 from manaflow-ai/fix-11492-clone-killer 65c0c60 fix(test): make scoped attach killer mutable 8cdf1ce Cloud sidebar port links: direct private IPs, white link styling, reconnect-logic merge fix (manaflow-ai#11647) 6d1ca7e fix(tui): narrow workspace registry APIs (manaflow-ai#11498) 9f7ba2d Admin page: list every Pro user, team, and pending grant (manaflow-ai#11645) 23a5485 fix(relay): pin PTY cwd to validated descriptor (manaflow-ai#11417) 3214964 fix(relay): own the grep pattern before spawning the runner task (manaflow-ai#11653) 400d306 Fix devcontainer SSH TTY flag placement (manaflow-ai#9772) 613870c web: answer Stack Auth throttles on iroh routes with 429, add a Stack throttle circuit (manaflow-ai#11633) f6be8ff web: resolve unoffered Cloud VM sizes to the plan machine instead of 400 (manaflow-ai#11644) 6d67bc5 Kill unvisited subtrees when the SSH auth cleanup deadline expires (manaflow-ai#11584) 790a7d8 Admin Pro access page: grant users, teams, and emails, manual downgrade (manaflow-ai#11605) 9bf04a3 fix(web): render the coderouter dashboard at request time (manaflow-ai#11632) bcc362c test(cmux-tui): cover scoped attach PTY lifecycle (manaflow-ai#11492) 51a9495 Fix main CI after the Blaxel removal and non-root daemon landing (manaflow-ai#11586) accfbdf Harden cmux-tui executable resolution before spawn (manaflow-ai#11427) 05c631d web: skip irrelevant Vercel builds and defer old changelog pages (manaflow-ai#11413) 40fd841 fix: render cloud VM terminals through native Ghostty manual I/O (manaflow-ai#11523) 1dd28a9 cloud: Freestyle devbox snapshot on the public platform (ubuntu user, base toolchain, Blaxel desktop), promote script, manifest as source of truth (manaflow-ai#11601) 4940db8 Pricing: Pro $50, Team $60, plan machine 5 vCPU / 20 GB / 200 GB, 50 VMs per seat (manaflow-ai#11610)
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cmd+T in a pane that projects a cloud terminal created the new terminal on the machine but left it behind the current tab, so the shortcut looked dead.
SurfacePaneFactory maps a projection onto the socket
surface.create/surface.splithandlers. Those honorrequestedFocusonly while a socket command with a focus-allowing policy is on the thread-local stack (v2FocusAllowed). In-app gestures (Cmd+T, Cmd+D, sidebar New Terminal Here) run with an empty stack, so the request was dropped. The factory now runs the handler under a policy frame equal to itsfocusargument, the same frame a focus-intent socket command pushes; app activation stays suppressed because the stack is non-empty.withSocketCommandPolicyStackbecomesrethrowsso the throwing factory body can run inside it.Commit 1 adds
SurfacePaneFactoryFocusTests(red on main), commit 2 the fix.https://claude.ai/code/session_01Dg5MLmzriwRLTRCi8oh5R6
Summary by cubic
Cmd+T in a pane projecting a cloud terminal now selects the new remote terminal instead of leaving it behind the current tab. Cmd+D and sidebar "New Terminal Here" also honor their focus intent, while unfocused creates remain unfocused.
Bug Fixes
Written for commit a95823c. Summary will update on new commits.