PROJECTS.md
Cross-project tracking (features, bugs, backlog) for cmux.
.github/workflows/release.yml Sparkle Info.plist key injection idempotent (re-running tags no longer fails with "Entry Already Exists"), and hardened scripts/bump-version.sh to keep CURRENT_PROJECT_VERSION above the latest published Sparkle appcast build number so upgrades from 0.27.0 can be detected.AGPL-3.0-or-later), added canonical LICENSE text, and updated project/package metadata to advertise AGPL consistently.Receive nightly builds) that routes Sparkle feed selection between stable and nightly appcasts, plus a scheduled GitHub Actions nightly pipeline (.github/workflows/nightly.yml) that only rebuilds when main has new commits since nightly (or when manually forced).demos/wkwebview-ssh-proxy-cookie-demo/ with a standalone macOS Swift app (two WKWebViews), two Docker backends (:8080) running behind separate SSH SOCKS tunnels, and scripts/docs to demonstrate same URL (shared.test:8080) routing to different backends plus app-level cookie sync between separate proxy-scoped data stores.cmux-browser references (authentication.md, session-management.md, snapshot-refs.md, video-recording.md, proxy-support.md) + templates, and added a new skills/cmux/ core skill for windows/workspaces/panes/surfaces workflows.--json output (UUID output now opt-in via --id-format uuids|both) and added regression test tests_v2/test_cli_id_format_defaults.py.skills/cmux-browser/ adapted from vercel-labs/agent-browser with cmux CLI syntax, wait/snapshot/ref workflow guidance, common automation flows, and command mapping references.vendor/bonsplit/Tests/BonsplitTests/BonsplitTests.swift.browser fill now accepts empty text for clear operations, legacy new-pane/new-surface output now prefers short surface:N refs, and mutating browser actions gained optional post-action verification snapshots via snapshot_after (--snapshot-after in CLI). Added regression coverage in tests_v2/test_browser_api_comprehensive.py and tests_v2/test_browser_cli_agent_port.py.Cmd+B/Cmd+I/Cmd+N pills up by 1px for pixel-level alignment.Cmd+B, Cmd+I, Cmd+N) for tighter visual alignment.Cmd+B, Cmd+I, Cmd+N) to render 4px further left and slightly smaller text for better alignment with controls.UpdateLogStore writes in non-Debug builds, so Copy Update Logs contains real update check/download/error activity for release users.disablesAnimations transaction (which suppressed hint animations) and switching hint/close accessory rendering to an explicit opacity crossfade tied to showsShortcutHint..easeInOut(duration: 0.14) on visibility transitions so hold/release both animate reliably..easeInOut(duration: 0.14) transition path.Ctrl+1..9 shortcut hints by animating monitor visibility transitions (intentional hold reveal + release hide).Show Notifications popover is open with no notifications, plain typing no longer passes through to the focused terminal. Added UI regression coverage (testEmptyNotificationsPopoverBlocksTerminalTyping).Notifications menu + Menu Bar Extra inline rows) now clamp to a max text width, wrap, and truncate to 3 lines with an ellipsis. Implemented via shared MenuBarNotificationLineFormatter layout logic so both surfaces stay in sync, with unit regression coverage for wrapped truncation and short-text preservation.Cmd+I now reliably toggles the notifications popover closed when already open (including while the popover panel is visible), and Escape now dismisses an open notifications popover. Added VM UI regression coverage (testNotificationsPopoverCanCloseViaShortcutAndEscape).Ctrl+1..9 labels (even when revealed by Command-hold), and titlebar hint positioning now applies a rightward safety shift to prevent left-edge clipping near the traffic-light area (e.g. Cmd+B). Added a UI regression assertion that the sidebar titlebar hint stays at or to the right of the sidebar icon lane.TitlebarShortcutHintsUITests) asserting aligned Y + no control-frame shift when hints are always shown.Notifications menu (main app menu, not the status-item extra) with parity actions/inline recent notification rows (show, jump latest unread, mark all read, clear all, open row). Extracted shared notification menu snapshot logic so both the main menu and menu bar extra reuse the same unread counting/state text/recent-item selection behavior, and added unit regression coverage.Ctrl/Cmd+1..9 hints into a centered trailing slot aligned with tab close affordances/text. Added unit regression coverage for lane assignment logic.GhosttyNSView (register drop types + perform drop insertion), and added tests/test_file_drop_paths.py e2e regression coverage via debug socket simulate_file_drop to verify dropped paths are inserted shell-escaped.autoscroll(with:) behavior for drag events.Cmd+N) by reserving trailing inset based on titlebar hint X offset, so the pill is no longer cut off.Debug Window Controls with full shortcut-hints debug controls (always-show toggle, sidebar/titlebar/pane X/Y offsets, reset hints, and copy hint payload) so hint tuning is available directly in the debug windows hub.Always show shortcut hints checkbox in Sidebar Debug (global across sidebar/titlebar/pane hints), with persistence in copyable debug payloads and snapshot script output.Cmd+1..9), titlebar control hints (sidebar/bell/plus shortcut labels), and Bonsplit pane tab hints (Ctrl/Cmd+1..9). Exposed these in Sidebar Debug with reset/copy support, and included the new fields in combined debug snapshot output.Move Up / Move Down) and context-menu move actions for keyboard/AX users. Added unit regression coverage for TabManager.reorderWorkspace, and tuned sidebar workspace title typography to semibold 12.5pt.Debug > Debug Windows menu in the app (Sidebar, Background, Menu Bar Extra, plus Open All Debug Windows) and created a repo-local cmux-debug-windows skill with a helper snapshot script (skills/cmux-debug-windows/scripts/debug_windows_snapshot.sh) for combined copyable debug settings payloads.Ctrl+1..9 (with 9 mapped to the last tab) using intentional Control-only hold behavior.Cmd+digit hint UX: hint badge now renders on the close-button Y level without row layout shift, and hints only appear after an intentional Command-only hold (short delay + canceled when any non-modifier key is pressed). Added unit regression coverage for the Command-only hint policy.New workspace placement preference (Top, After current, End) in Settings, defaulting to After current for fresh installs. Workspace creation now follows this setting across app/menu/shortcut/service/socket entry points, and unit regression tests cover default preference + insertion-index behavior.Checking for Updates… / No Updates Available never appeared). UpdateController now waits for readiness before issuing the check, and UpdatePillUITests adds sidebar regression coverage for loading + no-update states.Cmd+digit badges on workspace rows while the Command key is held, and workspace shortcut routing is unified so Cmd+9 always targets the last workspace (with unit regression coverage for the mapping).THIS IS A DEV BUILD indicator from the titlebar into a bottom-left footer inside the sidebar (debug builds), so update/dev status lives with sidebar UI instead of titlebar accessories.New … Workspace Here (maps to openTab) and New … Window Here (maps to openWindow), with path dedupe/normalization and explicit working-directory routing for both new windows and new workspaces. Added unit regression tests for service path resolution.Quit cmux action, and menu bar badge tuning defaults were updated to the latest shared payload values (with backward-compatible support for legacy menubarDebugTextRectXAdjust).Build Tag: <tag> for tagged reloads, Build: DEV (untagged) otherwise) so parallel cmux DEV instances are distinguishable from the menu.Cmd+D and Cmd+Shift+D work from both WKWebView and the browser omnibar by adding menu-backed split commands wired to effective shortcut settings and shared split handling in AppDelegate. Added VM UI regression coverage in BrowserPaneNavigationKeybindUITests for both focus states.BrowserPaneNavigationKeybindUITests (testClickingOmnibarFocusesBrowserPane).Cmd+L behavior to be context-aware: when focused panel is browser it focuses omnibar (existing behavior), and when focused panel is terminal/non-browser it opens a browser in the focused pane then focuses omnibar. Added VM UI regression coverage (testCmdLOpensBrowserWhenTerminalFocused).Workspace (close/split/geometry events) and hardened split-close visual test setup readiness in TabManager to avoid false setup failures. Re-verified VM UI regressions for right-column/bottom-row split close and full CloseWorkspaceCmdDUITests suite../scripts/reload.sh single-instance safety check on macOS (use ps etime parsing instead of GNU-only etimes).selectedTabId is transiently nil), and remove synchronous ghostty_surface_draw / post-close refresh polling that caused rendering artifacts. UI test now captures a vsync-aligned screenshot timeline and asserts no post-close frame goes visually blank.cmux_daily_active, once per UTC day per install).docs/v2-api-migration.md).window.list/current/focus/create/close, v2 workspace.move_to_window, and included window_id in system.identify (plus caller validation). Added v1 window commands for the CLI (list_windows, etc). Added VM test coverage (tests_v2/test_windows_api.py) and verified v1 + v2 suites passing on the VM.Ctrl+D) one side of a split now only closes that pane (never the whole workspace due to transient panel-count state), and terminal first-responder focus now always re-syncs active bonsplit focus so blue focus indicators match actual keyboard focus. Added VM UI regression coverage for child-exit-in-split behavior.cmux identify (maps to system.identify, supports caller via env/flags) and cmux capabilities (maps to system.capabilities).list-panes, list-pane-surfaces, focus-pane, new-pane, new-surface, close-surface, drag-surface-to-split, refresh-surfaces, surface-health, focus-webview, is-webview-focused, and trigger-flash (surface.trigger_flash).it2-compatible CLI shim (same subcommands/flags where feasible) that maps to cmux's socket API and ships in Contents/Resources/bin.docs/agent-browser-port-spec.md (agent-browser command mapping, cmux browser surface targeting, move/reorder invariants, and v1 shim strategy).tests_v2/ while keeping both v1 and v2 suites passing.