Skip to content

Add tmux split resize shortcuts - #4688

Closed
austinywang wants to merge 40 commits into
mainfrom
issue-4499-tmux-split-resize-shortcuts
Closed

austinywang wants to merge 40 commits into
mainfrom
issue-4499-tmux-split-resize-shortcuts

Conversation

@austinywang

@austinywang austinywang commented May 24, 2026 •

Copy link
Copy Markdown
Contributor

Closes #4499

Summary

  • Add configurable resize-split shortcut actions with Ctrl+B then Option+Arrow defaults.
  • Route the shortcuts through the existing AppDelegate chord matcher into the shared TabManager resize path.
  • Update shortcut docs, cmux.json schema/default examples, and localized Settings labels.

Testing

  • Not run locally per branch instructions; no local build or test command was executed.
  • Static validation only: git diff --check; JSON parse check for Resources/Localizable.xcstrings and web/data/cmux.schema.json.

View with Codesmith Autofix with Codesmith
Need help on this PR? Tag @codesmith with what you need. Autofix is disabled.


Note

Medium Risk
Touches global keyboard routing and split geometry in TabManager; behavior is covered by new tests but chord/prefix interaction with Ghostty fallbacks is easy to regress.

Overview
Adds tmux-style split resize as four new shortcut actions (resizeSplitLeft/Right/Up/Down) with defaults Ctrl+B then Option+Arrow, wired through AppDelegate into TabManager resize (120px step) and layout cache updates.

Shortcut model & settings: Factory defaults move from stroke-only to defaultShortcut (full chords); chorded defaults expose defaultStroke as nil. Keyboard shortcuts UI uses row snapshots, a chord-mode toggle, smarter conflict detection (shared prefix OK when second strokes differ), and chord-aware placeholders. Global hotkey section follows defaultShortcut.

Routing fix: Ghostty goto_split fallbacks apply only when no chord prefix is active, so resize chords do not steal pane focus.

Docs & i18n: Schema, web shortcut catalog, config examples, and localized labels/sequence separator for multi-step shortcuts; tests cover defaults, JSON parsing, and end-to-end resize.

Reviewed by Cursor Bugbot for commit 04575e7. Bugbot is set up for automated code reviews on this repo. Configure here.


Summary by cubic

Adds tmux‑style split resizing with four new, opt‑in chord shortcuts. Wired through AppDelegate into TabManager and Dock with 120 px steps; cached and live layouts stay in sync. Implements #4499.

  • New Features

    • Actions: resizeSplitLeft/Right/Up/Down (unbound). Matched in AppDelegate, executed via TabManager.resizeFocusedSplit or DockShortcutCommand.resizeSplit; splitResizeShortcutStepPixels = 120.
    • Shortcut model/UI: chord‑capable defaultShortcut; row toggle to record two‑step chords with persisted state; global hotkey disallows chords and hides the toggle; localized “Shortcut Chords”.
    • Settings/docs/web: actions in the Panes group with localized names and no defaults; added to web/data/cmux.schema.json and web/data/cmux-shortcuts.ts; keyboard‑shortcuts renders/searches two‑step sequences with a localized “then”; examples accept arrays like ["ctrl+b","alt+right"].
  • Bug Fixes

    • Precedence: configured resize shortcuts override Ghostty fallbacks; Ghostty goto_split runs only when no chord prefix is active.
    • Input: second strokes match even when Option emits text; arrow keys are canonicalized (canonicalKeyToken) so recorded vs hand‑written arrows correctly conflict.
    • Routing/state: Dock resizing targets only the focused Dock; programmatic resizes update cached and live layouts together.

Written for commit 78fd946. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • New Features
    • Add tmux-style multi-step split-resize shortcuts and UI support for displaying/searching multi-step sequences.
  • Bug Fixes
    • More reliable programmatic split resizing and updated behavior to keep cached and live layouts consistent after shortcuts.
  • Documentation
    • Updated configuration and keyboard-shortcuts docs/examples to include split-resize chords.
  • Tests
    • New tests covering tmux-style resize shortcuts and cached-layout updates.
  • Localization
    • Added sequence-separator and new split-resize labels across many locales.

@vercel

vercel Bot commented May 24, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment Jun 14, 2026 10:47pm
cmux-staging Building Building Preview, Comment Jun 14, 2026 10:47pm

@coderabbitai

coderabbitai Bot commented May 24, 2026 •

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds tmux-style split-resize shortcuts (Ctrl+B → Alt+Arrow) end-to-end: keyboard handling and helper in AppDelegate, TabManager resize APIs, default shortcut configuration and labels, web sequence model/UI, JSON schema update, tests, and locale strings.

Changes

Tmux-style split resize shortcuts

Layer / File(s) Summary
Split resize action definition and configuration
Sources/KeyboardShortcutSettings.swift, Packages/CmuxSettings/Sources/CmuxSettings/Values/ShortcutAction+Defaults.swift, Packages/CmuxSettings/Sources/CmuxSettings/Values/ShortcutAction.swift, Resources/Localizable.xcstrings, Sources/TabManager+CompatibilityTypes.swift
Adds four resizeSplit* actions, ShortcutAction.defaultShortcut with tmux-style chord defaults, localized labels, helper constructors for StoredShortcut (including tmux chord helper), and SplitResizeShortcutDefaults.stepPixels = 120.
Tab manager split resize implementation
Sources/TabManager.swift
resizeSplit returns false on divider update failure and calls didProgrammaticallyChangeSplitGeometry() on success; adds resizeFocusedSplit(direction:amount:) to resize the focused split with a default step.
AppDelegate keyboard shortcut integration
Sources/AppDelegate.swift
handleCustomShortcut routes four new resize actions to performResizeSplitShortcut(direction:preferredWindow:), gates Ghostty fallback matching, centralizes resize logic in performResizeSplitShortcut, and adds a DEBUG test hook for cached Ghostty goto_split shortcuts.
Web data model for shortcut sequences
web/data/cmux-shortcuts.ts
Introduces ShortcutSequence and optional chordCombos on Shortcut; shortcutSequences() prefers chordCombos; adds four split-resize shortcut entries with chord sequences.
Web UI and documentation updates
web/app/[locale]/keyboard-shortcuts.tsx, web/app/[locale]/docs/configuration/page.tsx, web/app/[locale]/docs/keyboard-shortcuts/page.tsx
Keyboard shortcuts UI now renders and searches ordered sequences via KeySequence, docs add shortcutSequenceToConfig, and examples include resizeSplitRight chord example.
Schema validation and test coverage
web/data/cmux.schema.json, cmuxTests/*
Schema allowlist extended for four new action IDs; unit tests verify default tmux-chord mappings and config parsing; integration test simulates chorded resize and asserts divider movement and cached/layout consistency.
Settings UI and conflict handling
Packages/CmuxSettingsUI/*
Settings UI now uses defaultShortcut as the effective default, updates global hotkey default fallback, and implements chord-aware conflict detection and pruning logic.
Web UI localization strings
web/messages/*.json
Adds keyboardShortcuts.sequenceSeparator translations across locales for rendering multi-step sequences and adds localized labels for the new resize actions in Localizable.xcstrings.

Sequence Diagram(s)

sequenceDiagram
  participant Keyboard as Keyboard Event
  participant App as AppDelegate.handleCustomShortcut
  participant Resolver as AppDelegate.performResizeSplitShortcut
  participant TabMgr as TabManager.resizeFocusedSplit / TabManager.resizeSplit
  participant Bonsplit as BonsplitController.setDividerPosition

  Keyboard->>App: chord trigger (Ctrl+B → Alt+Arrow) or configured shortcut
  App->>Resolver: match resizeSplit* action
  Resolver->>TabMgr: call resizeFocusedSplit or tab.resizeSplit(amount)
  TabMgr->>Bonsplit: setDividerPosition(amount)
  Bonsplit-->>TabMgr: success/failure
  TabMgr-->>Resolver: Bool result
  Resolver-->>App: consume event / return
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • manaflow-ai/cmux#4442: Touches AppDelegate shortcut-routing and DEBUG test hooks; related to shortcut matching changes.
  • manaflow-ai/cmux#4406: Refactors shortcut routing through AppDelegate.handleCustomShortcut; relevant to this patch’s extensions.
  • manaflow-ai/cmux#4445: Modifies AppDelegate shortcut dispatch and chord routing; overlaps with gating logic for chord fallbacks.

Poem

🐰 I hop, I press, Ctrl+B then right,

Alt+Arrow nudges panes just right.
No mouse, just rhythm, split sizes glide,
A bunny's dance across each divide. 🥕


Important

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

❌ Failed checks (2 errors, 1 warning)

Check name Status Explanation Resolution
Cmux Full Internationalization ❌ Error Four new Swift string catalog entries (shortcut.resizeSplitLeft/Right/Up/Down.label) missing Khmer (km) translations, while km locale is supported in catalog and present in other shortcut entries. Add Khmer (km) localization to all four resize split shortcut entries in Resources/Localizable.xcstrings, matching locales present in other shortcut.*.label entries.
Cmux Swiftui State Layout ❌ Error KeyboardShortcutsSection's actionRow function captures parent @State directly (bindings, restoreShortcuts, etc.) from within a LazyVStack row subtree, violating the snapshot boundary rule. Refactor actionRow to receive immutable snapshots of binding data per action and action closures instead of directly accessing parent @State properties.
Docstring Coverage ⚠️ Warning Docstring coverage is 7.32% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (15 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR fully addresses issue #4499 by implementing tmux-style split resize shortcuts with Ctrl+B then Option+Arrow defaults, making them configurable, and supporting adjustable resize step size (120px).
Out of Scope Changes check ✅ Passed All changes are directly related to implementing the tmux split resize shortcuts feature and supporting infrastructure (docs, schema, UI, localization, tests); no unrelated modifications detected.
Cmux Swift Actor Isolation ✅ Passed Methods added to @MainActor classes, new Sendable enum cases, immutable value types used. No shared mutable state, file loggers, or implicit MainActor protocols that violate Swift 6 isolation rules.
Cmux Swift Blocking Runtime ✅ Passed No blocking/timing primitives introduced in production code. New methods (performResizeSplitShortcut, resizeFocusedSplit, resizeSplit) are fully synchronous. Test-only RunLoop.main.run() is allowed.
Cmux No Hacky Sleeps ✅ Passed No sleep, setTimeout, setInterval, polling, or wall-clock waits introduced in TypeScript/JavaScript production code in this PR (checked web/data/cmux-shortcuts.ts and web/app/[locale]/* files).
Cmux Algorithmic Complexity ✅ Passed No algorithmic complexity violations: single workspace lookups not in loops, tree traversal bounded by ~20 panes, 99 fixed shortcuts with proper memoization. No nested rescans of scalable collections.
Cmux Swift Concurrency ✅ Passed All new Swift code (performResizeSplitShortcut, resizeFocusedSplit, helpers) uses synchronous APIs with no Task, DispatchQueue, completion handlers, or Combine patterns.
Cmux Swift @Concurrent ✅ Passed All new functions (performResizeSplitShortcut, resizeFocusedSplit, enum cases, properties) are synchronous. No async functions, @concurrent annotations, or nonisolated async work introduced.
Cmux Swift File And Package Boundaries ✅ Passed Small incidental additions to oversized files: +117 lines to AppDelegate (AppKit glue), +31 to KeyboardShortcutSettings (enum cases). All under 250-line threshold. Core logic properly in TabManager.
Cmux Swift Logging ✅ Passed No new logging violations detected; PR adds resize split shortcuts without introducing print, debugPrint, dump, NSLog, or problematic Logger constants.
Cmux User-Facing Error Privacy ✅ Passed User-facing strings are safe: shortcut labels ("Resize Split Left") and separators ("then") contain no vendor names, credentials, tokens, or sensitive details.
Cmux Architecture Rethink ✅ Passed Single AppDelegate→TabManager flow, deterministic sync via didProgrammaticallyChangeSplitGeometry, explicit chord gating. No timing repairs, competing owners, or split lifecycle issues.
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PR adds split resize shortcuts via keyboard handling. No new NSWindow/NSPanel/NSWindowController created except debugInjectWindowContextKeyMismatch (test fixture). CI lint passes.
Title check ✅ Passed The title is concise and accurately summarizes the main change: tmux-style split resize shortcuts.
Description check ✅ Passed The Summary and Testing sections are present and relevant, but the Demo Video, Review Trigger, and Checklist sections are missing.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue-4499-tmux-split-resize-shortcuts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented May 24, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds configurable, tmux-style split-resize shortcut chords and routes them through the existing keyboard handling and split-layout systems.

  • Adds four resize actions, chord-aware shortcut recording, conflict detection, and default configuration examples.
  • Routes resize commands to focused main-area or Dock splits while synchronizing cached and live layouts.
  • Documents and localizes chord sequences across the native Settings UI and all supported web locales.
  • Adds coverage for shortcut parsing, routing, resizing, layout-cache updates, and web shortcut data.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains; both previously reported localization issues are fixed at the current head.

Important Files Changed

Filename Overview
Packages/macOS/CmuxSettings/Sources/CmuxSettings/Values/ShortcutAction.swift Adds the four split-resize actions, localized names, pane grouping, and chord capability metadata.
Packages/macOS/CmuxSettingsUI/Sources/CmuxSettingsUI/Bindings/ShortcutListModel.swift Extends shortcut editing state to support chord-mode overrides and complete-sequence conflict handling.
Sources/AppDelegate.swift Integrates resize actions with chord matching while preserving focus-navigation fallback behavior.
Sources/TabManager.swift Adds focused split resizing through the shared layout path and keeps cached geometry synchronized.
Sources/AppDelegate+DockShortcutRouting.swift Routes resize commands to the focused Dock without falling through to workspace splits.
Resources/Localizable.xcstrings Supplies all four resize-action labels across the catalog's supported locales, resolving the prior localization finding.
web/app/[locale]/keyboard-shortcuts.tsx Uses the localized chord separator consistently for rendering and searchable shortcut text, resolving the prior hardcoded separator finding.
web/messages/en.json Adds the sequence-separator message mirrored across every locale declared by web routing.

Sequence Diagram

sequenceDiagram
  participant User
  participant Matcher as AppDelegate Chord Matcher
  participant Router as Shortcut Router
  participant Layout as TabManager / DockSplitStore
  User->>Matcher: Ctrl+B, then Option+Arrow
  Matcher->>Router: resizeSplit(direction)
  alt Focused split is in Dock
    Router->>Layout: Resize focused Dock split by 120px
  else Focused split is in workspace
    Router->>Layout: Resize focused workspace split by 120px
  end
  Layout->>Layout: Synchronize live and cached layouts
Loading

Reviews (21): Last reviewed commit: "Merge branch 'main' of https://github.co..." | Re-trigger Greptile

Comment thread Resources/Localizable.xcstrings Outdated
Comment thread web/app/[locale]/keyboard-shortcuts.tsx Outdated
Comment thread Sources/AppDelegate.swift

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/app/`[locale]/keyboard-shortcuts.tsx:
- Around line 25-27: Replace the hardcoded "then"/"次に" separator with a
localized message retrieved via next-intl and use it everywhere the separator is
needed: update sequenceToText (which calls comboToText) to accept or import the
localized separator message (e.g., via useTranslations or passed-in messages)
and join with that separator instead of " then ", and also replace the other
occurrences that build search tokens or UI strings (the places reusing the
hardcoded separator around comboToText usage) to use the same localized message
key so all locales in web/i18n/routing.ts are covered.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e90556a2-83e7-4424-84f0-6d1af5be851a

📥 Commits

Reviewing files that changed from the base of the PR and between 8627dc9 and 0ceaef1.

📒 Files selected for processing (12)
  • Resources/Localizable.xcstrings
  • Sources/AppDelegate.swift
  • Sources/KeyboardShortcutSettings.swift
  • Sources/TabManager+CompatibilityTypes.swift
  • Sources/TabManager.swift
  • cmuxTests/AppDelegateEqualizeSplitsShortcutTests.swift
  • cmuxTests/KeyboardShortcutSettingsEqualizeSplitsTests.swift
  • web/app/[locale]/docs/configuration/page.tsx
  • web/app/[locale]/docs/keyboard-shortcuts/page.tsx
  • web/app/[locale]/keyboard-shortcuts.tsx
  • web/data/cmux-shortcuts.ts
  • web/data/cmux.schema.json

Comment thread web/app/[locale]/keyboard-shortcuts.tsx Outdated
@austinywang

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented May 24, 2026

Copy link
Copy Markdown
✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@austinywang

Copy link
Copy Markdown
Contributor Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented May 24, 2026

Copy link
Copy Markdown
✅ Actions performed

Full review triggered.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
Sources/KeyboardShortcutSettings.swift (1)

91-102: ⚠️ Potential issue | 🟠 Major | 🏗️ Heavy lift

Out-of-scope changes detected: unrelated actions and logic modifications.

This file contains many changes unrelated to the tmux split resize feature:

  • History navigation actions (lines 91-102, 185, 192-193, 250-251, 318-319, 326-329): switchRightSidebarToHistory, focusHistoryBack, focusHistoryForward
  • TextBox actions (lines 112-113, 204-205, 379-382, 927-928): focusTextBoxInput, attachTextBoxFile
  • Settings normalization logic change (lines 511-518): modifies normalizedSettingsFileShortcut to preserve invalid values for certain actions
  • Config parsing changes (lines 2237, 2338-2342): alters space-handling behavior in parseConfigKeyToken and isUnboundConfigToken
  • Recorder activity changes (lines 2371-2390): adds resetForTesting and modifies stopAllRecording flow

According to the review stack context, this layer ("Split resize action definition and configuration") should only add "four resize actions, default tmux-style chord shortcuts and labels, localization entries, and the stepPixels default constant."

Including unrelated changes increases review burden, conflates feature history, and risks introducing unintended side effects. Consider extracting these changes into separate PRs or layers with clear justification.

Also applies to: 112-113, 168-168, 185-185, 192-193, 201-201, 204-205, 250-251, 318-319, 326-329, 379-382, 511-518, 927-928, 2237-2237, 2338-2342, 2371-2390

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Sources/KeyboardShortcutSettings.swift` around lines 91 - 102, The diff
includes many unrelated changes beyond the intended "split resize" layer; remove
or move out non-split-resize edits so this PR only adds the four resize actions
and their metadata—specifically revert or extract modifications to History
navigation enums (switchRightSidebarToHistory, focusHistoryBack,
focusHistoryForward), TextBox actions (focusTextBoxInput, attachTextBoxFile),
the settings normalization logic (normalizedSettingsFileShortcut), config
parsing helpers (parseConfigKeyToken, isUnboundConfigToken), and recorder APIs
(resetForTesting, stopAllRecording); keep only additions for the new resize
actions, their default tmux-style chord shortcuts, labels/localization entries,
and the stepPixels default constant, and put all other changes into separate
focused commits/PRs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@Sources/KeyboardShortcutSettings.swift`:
- Around line 91-102: The diff includes many unrelated changes beyond the
intended "split resize" layer; remove or move out non-split-resize edits so this
PR only adds the four resize actions and their metadata—specifically revert or
extract modifications to History navigation enums (switchRightSidebarToHistory,
focusHistoryBack, focusHistoryForward), TextBox actions (focusTextBoxInput,
attachTextBoxFile), the settings normalization logic
(normalizedSettingsFileShortcut), config parsing helpers (parseConfigKeyToken,
isUnboundConfigToken), and recorder APIs (resetForTesting, stopAllRecording);
keep only additions for the new resize actions, their default tmux-style chord
shortcuts, labels/localization entries, and the stepPixels default constant, and
put all other changes into separate focused commits/PRs.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 40aa80f8-1f68-4d8e-ba6d-49e1b2071f85

📥 Commits

Reviewing files that changed from the base of the PR and between f953934 and 82905df.

📒 Files selected for processing (15)
  • Resources/Localizable.xcstrings
  • Sources/AppDelegate.swift
  • Sources/KeyboardShortcutSettings.swift
  • Sources/TabManager.swift
  • cmuxTests/AppDelegateEqualizeSplitsShortcutTests.swift
  • web/app/[locale]/docs/configuration/page.tsx
  • web/data/cmux-shortcuts.ts
  • web/data/cmux.schema.json
  • web/messages/ar.json
  • web/messages/bs.json
  • web/messages/da.json
  • web/messages/de.json
  • web/messages/en.json
  • web/messages/es.json
  • web/messages/fr.json
💤 Files with no reviewable changes (13)
  • web/messages/ar.json
  • web/messages/bs.json
  • web/messages/de.json
  • web/messages/fr.json
  • web/data/cmux-shortcuts.ts
  • web/messages/en.json
  • web/messages/da.json
  • Resources/Localizable.xcstrings
  • cmuxTests/AppDelegateEqualizeSplitsShortcutTests.swift
  • web/data/cmux.schema.json
  • web/app/[locale]/docs/configuration/page.tsx
  • web/messages/es.json
  • Sources/TabManager.swift

Comment thread Sources/KeyboardShortcutSettings.swift
@austinywang

Copy link
Copy Markdown
Contributor Author

Addressed the earlier CodeRabbit outside-diff note about unrelated Sources/KeyboardShortcutSettings.swift changes: after syncing with origin/main, the current PR diff for that file is now limited to the split-resize actions, their localized labels, tmux-style chord defaults, and the local helper for those defaults. The unrelated history/TextBox/settings-normalization/parser/recorder changes called out in that stale review body are no longer part of this PR diff.

@austinywang

Copy link
Copy Markdown
Contributor Author

Addressed the CodeRabbit pre-merge items from the PR walkthrough: KeyboardShortcutsSection now builds each LazyVStack row from an immutable ShortcutActionRowSnapshot plus ShortcutActionRowActions, so row rendering no longer reads parent @State directly; the four shortcut.resizeSplit*.label entries in Resources/Localizable.xcstrings now also include km localizations.

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit bf40fe6. Configure here.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 37 files

Re-trigger cubic

…-resize-shortcuts

# Conflicts:
#	Packages/CmuxSettings/Sources/CmuxSettings/Values/ShortcutAction+Defaults.swift
#	Packages/CmuxSettings/Sources/CmuxSettings/Values/ShortcutAction.swift
#	Packages/CmuxSettingsUI/Sources/CmuxSettingsUI/Sections/KeyboardShortcutsSection.swift
#	Sources/TabManager+CompatibilityTypes.swift
#	Sources/TabManager.swift
@cursor

cursor Bot commented Jul 24, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

@cursor

cursor Bot commented Jul 28, 2026

Copy link
Copy Markdown

Bugbot is paused — on-demand spend limit reached

Bugbot uses usage-based billing for this team and has hit its on-demand spend limit.

A team admin can raise the spend limit in the Cursor dashboard, or wait for the next billing cycle to continue.

…-resize-shortcuts

# Conflicts:
#	Sources/AppDelegate.swift
@lawrencecchen lawrencecchen added the stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening. label Sep 23, 2026
@github-project-automation github-project-automation Bot moved this from Todo to Done in cmux backlog Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stale-revisit Closed after 30+ days without activity; preserved for possible revisit or reopening.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add tmux split sizing shortcut

3 participants