refactor: remove keyboard shortcuts for context management features

Remove dedicated shortcuts for mergeSession, sendToAgent, and
summarizeAndContinue. These features remain accessible via tab
right-click menu and Command Palette (Cmd+K).

This resolves a shortcut conflict where mergeSession (Cmd+Shift+M)
conflicted with the existing moveToGroup shortcut.
This commit is contained in:
Pedram Amini
2025-12-23 14:10:53 -06:00
parent 9ac96f6cbf
commit 8b082dba21
3 changed files with 8 additions and 45 deletions

View File

@@ -201,8 +201,6 @@ All these screenshots were captured in the them "Pedurple". For screenshots of o
| New Agent | `Cmd+N` | `Ctrl+N` |
| Kill Agent | `Cmd+Shift+Backspace` | `Ctrl+Shift+Backspace` |
| Move Agent to Group | `Cmd+Shift+M` | `Ctrl+Shift+M` |
| Merge Sessions | `Cmd+Shift+M` | `Ctrl+Shift+M` |
| Send to Agent | `Cmd+Shift+A` | `Ctrl+Shift+A` |
| Previous Agent | `Cmd+[` | `Ctrl+[` |
| Next Agent | `Cmd+]` | `Ctrl+]` |
| Jump to Agent (1-9, 0=10th) | `Opt+Cmd+NUMBER` | `Alt+Ctrl+NUMBER` |
@@ -631,11 +629,10 @@ Context management lets you combine or transfer conversation history between ses
Combine context from multiple sessions or tabs into one:
1. **Right-click** a tab → **"Merge With..."**, or
2. Press `Cmd+Shift+M` (Mac) / `Ctrl+Shift+M` (Windows/Linux)
3. Search for or select the target session/tab
4. Review the merge preview showing estimated token count
5. Click **"Merge Contexts"**
1. **Right-click** a tab → **"Merge With..."**, or use **Command Palette** (`Cmd+K` / `Ctrl+K`) → "Merge with another session"
2. Search for or select the target session/tab
3. Review the merge preview showing estimated token count
4. Click **"Merge Contexts"**
The merged context creates a new tab in the target session with conversation history from both sources. Use this to consolidate related conversations or bring context from an older session into a current one.
@@ -652,11 +649,10 @@ The merged context creates a new tab in the target session with conversation his
Transfer your context to a different AI agent:
1. **Right-click** a tab → **"Send to Agent..."**, or
2. Press `Cmd+Shift+A` (Mac) / `Ctrl+Shift+A` (Windows/Linux)
3. Select the target agent (only available/installed agents are shown)
4. Optionally enable **context grooming** to optimize the context for the target agent
5. A new session opens with the transferred context
1. **Right-click** a tab → **"Send to Agent..."**, or use **Command Palette** (`Cmd+K` / `Ctrl+K`) → "Send to another agent"
2. Select the target agent (only available/installed agents are shown)
3. Optionally enable **context grooming** to optimize the context for the target agent
4. A new session opens with the transferred context
**Context Grooming:**
When transferring between different agent types, the context can be automatically "groomed" to:
@@ -671,15 +667,6 @@ Grooming is enabled by default but can be skipped for faster transfers.
- Transfer a debugging session to an agent with different tool access
- Move context to an agent pointing at a different project directory
### Keyboard Shortcuts
| Action | macOS | Windows/Linux |
|--------|-------|---------------|
| Merge Sessions | `Cmd+Shift+M` | `Ctrl+Shift+M` |
| Send to Agent | `Cmd+Shift+A` | `Ctrl+Shift+A` |
These shortcuts are also available in the Command Palette (`Cmd+K` / `Ctrl+K`) as "Merge with another session" and "Send to another agent".
## Command Line Interface
Maestro includes a CLI tool (`maestro-cli`) for managing agents and running playbooks from the command line, cron jobs, or CI/CD pipelines. The CLI requires Node.js (which you already have if you're using Claude Code).

View File

@@ -26,8 +26,6 @@ export const DEFAULT_SHORTCUTS: Record<string, Shortcut> = {
viewGitDiff: { id: 'viewGitDiff', label: 'View Git Diff', keys: ['Meta', 'Shift', 'd'] },
viewGitLog: { id: 'viewGitLog', label: 'View Git Log', keys: ['Meta', 'Shift', 'g'] },
agentSessions: { id: 'agentSessions', label: 'View Agent Sessions', keys: ['Meta', 'Shift', 'l'] },
mergeSession: { id: 'mergeSession', label: 'Merge with another session', keys: ['Meta', 'Shift', 'M'] },
sendToAgent: { id: 'sendToAgent', label: 'Send to another agent', keys: ['Meta', 'Shift', 'A'] },
systemLogs: { id: 'systemLogs', label: 'System Log Viewer', keys: ['Alt', 'Meta', 'l'] },
processMonitor: { id: 'processMonitor', label: 'System Process Monitor', keys: ['Alt', 'Meta', 'p'] },
jumpToBottom: { id: 'jumpToBottom', label: 'Jump to Bottom', keys: ['Meta', 'Shift', 'j'] },
@@ -64,7 +62,6 @@ export const TAB_SHORTCUTS: Record<string, Shortcut> = {
toggleShowThinking: { id: 'toggleShowThinking', label: 'Toggle Show Thinking', keys: ['Meta', 'Shift', 'k'] },
filterUnreadTabs: { id: 'filterUnreadTabs', label: 'Filter Unread Tabs', keys: ['Meta', 'u'] },
toggleTabUnread: { id: 'toggleTabUnread', label: 'Toggle Tab Unread', keys: ['Meta', 'Shift', 'u'] },
summarizeAndContinue: { id: 'summarizeAndContinue', label: 'Summarize & Continue', keys: ['Alt', 'Meta', 'k'] },
goToTab1: { id: 'goToTab1', label: 'Go to Tab 1', keys: ['Meta', '1'] },
goToTab2: { id: 'goToTab2', label: 'Go to Tab 2', keys: ['Meta', '2'] },
goToTab3: { id: 'goToTab3', label: 'Go to Tab 3', keys: ['Meta', '3'] },

View File

@@ -284,20 +284,6 @@ export function useMainKeyboardHandler(): UseMainKeyboardHandlerReturn {
ctx.setAgentSessionsOpen(true);
}
}
else if (ctx.isShortcut(e, 'mergeSession')) {
e.preventDefault();
// Only show merge modal if agent supports context merge
if (ctx.hasActiveSessionCapability('supportsContextMerge') && ctx.activeSession?.activeTabId) {
ctx.setMergeSessionModalOpen(true);
}
}
else if (ctx.isShortcut(e, 'sendToAgent')) {
e.preventDefault();
// Only show send to agent modal if agent supports context merge
if (ctx.hasActiveSessionCapability('supportsContextMerge') && ctx.activeSession?.activeTabId) {
ctx.setSendToAgentModalOpen(true);
}
}
else if (ctx.isShortcut(e, 'systemLogs')) {
e.preventDefault();
ctx.setLogViewerOpen(true);
@@ -446,13 +432,6 @@ export function useMainKeyboardHandler(): UseMainKeyboardHandlerReturn {
e.preventDefault();
ctx.toggleTabUnread();
}
if (ctx.isTabShortcut(e, 'summarizeAndContinue')) {
e.preventDefault();
// Only trigger if summarization is available for the current tab
if (ctx.canSummarizeActiveTab && ctx.summarizeAndContinue) {
ctx.summarizeAndContinue();
}
}
if (ctx.isTabShortcut(e, 'nextTab')) {
e.preventDefault();
const result = ctx.navigateToNextTab(ctx.activeSession, ctx.showUnreadOnly);