Repository navigation
Feat/saved workspace layouts - #183
Conversation
buildDefaultSplitTree moved to split-utils.ts in #183, taking App.tsx's only uuid() call site with it. The import stayed behind and was the one new lint warning the two merges introduced. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NugDqtU1rmBNQCEv8do4rS
Minor, not patch: #183 lands a new user-facing feature (saved workspace layouts). Site asset ?v= query strings stay pinned at 1.5.1 — they bust the cache for the brand assets, which did not change here. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NugDqtU1rmBNQCEv8do4rS
|
Merged, and shipping in v1.6.0. Thank you — and glad wmux is filling the WSL-shaped gap for you, that's exactly the itch it started from. What sold meThe framing, more than the feature. New-workspace creation genuinely was split-brained —
The two drive-by fixesBoth real, both appreciated, and the Command Palette one is a little embarrassing on my side: The settings-overlay one is a nice catch too. Verified on merge
One small follow-up commit on top: removing Cheers, and thanks for the care that went into this. |
Hey @amirlehmam - Thanks for wmux! I've really come to enjoy cmux and have been looking for a similar experience with WSL and appreciate the work done here!
One feature I really like is the ability to customize my workspace and create "flow state" customizable workspaces for different purposes.
To that end, I've added a feature here that allows users to create their own custom workspaces (custom pane arrangement + startup commands) and save them as presets - one can be set as a default, or a user can use the Command Palette to open a specific preset.
You can check out the changes under the
Workspacesettings menu.Cheers, and let me know if you have questions or feedback!
Summary
Adds Saved Layouts: configurable, named pane arrangements (geometry + optional per-pane startup commands) that can be applied to new workspaces on demand or set as the default. Also fixes two pre-existing bugs found while building and testing this.
Background
New workspace creation was inconsistent:
Ctrl+N,wmux new-workspace(CLI), and "Open folder as workspace" always opened a single pane, while the sidebar "+" button and first launch used a hardcoded 3-pane layout (buildDefaultSplitTree()). Neither was "correct" — they were two independent, undocumented defaults. Rather than picking one, this PR makes both configurable and keeps their original split-brain behavior only as the fallback when nothing is explicitly set.What's new
Bug fixes found along the way
App.tsxcomparede.keyagainst the binding without lowercasing —Shift+Pdeliverse.key === 'P', but the binding is stored as'p'.useKeyboardShortcuts.tsalready had amatchesBinding()helper with the correct case-insensitive comparison (and a comment explaining exactly this); exported and reused it instead of duplicating the broken check.onClick, but aclickevent fires on the deepest common ancestor of where the mouse went down and up — so selecting text starting inside an input and releasing past the window's edge synthesized a click on the backdrop. Switched toonMouseDown, matching the pattern already used correctly byCommandPaletteandShortcutCheatSheet.