Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
215 commits
Select commit Hold shift + click to select a range
5e45aee
MAESTRO: Phase 01 - Cue foundational types, template variables, logge…
pedramamini Mar 1, 2026
8ccf4a4
MAESTRO: Phase 02 - Cue Engine core, YAML loader, and file watcher pr…
pedramamini Mar 1, 2026
350b788
MAESTRO: Phase 03 - Cue executor for background agent spawning and hi…
pedramamini Mar 1, 2026
c1a8be1
MAESTRO: Phase 04 - IPC handlers, preload API, and CueEngine initiali…
pedramamini Mar 1, 2026
7a61e3e
MAESTRO: Phase 05 - CUE type rendering in History panel and detail modal
pedramamini Mar 1, 2026
abf78be
[Symphony] Start contribution for #160
pedramamini Mar 1, 2026
29c275c
MAESTRO: Phase 05 - CUE log level test coverage for LogViewer component
pedramamini Mar 1, 2026
f4974ef
MAESTRO: Phase 1 — install xterm.js and create XTerminal component
pedramamini Mar 1, 2026
85f091d
MAESTRO: Phase 2 — TerminalTab interface and unified tab type extensions
pedramamini Mar 1, 2026
561d325
MAESTRO: Phase 3 — terminalTabHelpers.ts pure function library
pedramamini Mar 1, 2026
b08894e
MAESTRO: Phase 4 — session initialization, migration, and persistence…
pedramamini Mar 1, 2026
fddaeb6
MAESTRO: Phase 06 - Cue Modal dashboard with sessions, active runs, a…
pedramamini Mar 1, 2026
f3c72b6
MAESTRO: Phase 5 — main process PTY management for terminal tabs
pedramamini Mar 1, 2026
ef84bb3
MAESTRO: Phase 6 — TerminalView component for terminal tab rendering
pedramamini Mar 1, 2026
c9307bd
MAESTRO: Phase 7 — tab store integration and terminal tab handlers
pedramamini Mar 1, 2026
1b6c603
MAESTRO: Phase 07 - Cue YAML Editor with AI-assisted prompt generation
pedramamini Mar 1, 2026
d2b9345
MAESTRO: Phase 08 - Cue Help Modal and auto-discovery of maestro-cue.…
pedramamini Mar 1, 2026
f8a8b83
MAESTRO: Phase 8 — TabBar rendering for terminal tabs
pedramamini Mar 1, 2026
8708438
MAESTRO: Phase 9 — Keyboard shortcuts for terminal tabs
pedramamini Mar 1, 2026
45494c4
MAESTRO: Phase 10 — Terminal search UI overlay
pedramamini Mar 1, 2026
7616dda
MAESTRO: Phase 11 — Theme integration and ANSI color configuration
pedramamini Mar 1, 2026
5d9ef9d
MAESTRO: Phase 09 - Agent completion chains with fan-out, fan-in, and…
pedramamini Mar 1, 2026
134db4c
MAESTRO: Phase 10 - YAML hot reload with config change/removal detect…
pedramamini Mar 1, 2026
cc7f2d7
MAESTRO: Phase 12 — Terminal tab rename modal
pedramamini Mar 1, 2026
3ee6c8a
MAESTRO: Phase 10 - Cue status indicator in session list (Encore Feat…
pedramamini Mar 1, 2026
b73daae
MAESTRO: Phase 10 - Update documentation tables with Cue references
pedramamini Mar 1, 2026
716af4d
MAESTRO: Phase 13 — Cleanup, migration, testing, and polish
pedramamini Mar 1, 2026
f2b8802
MAESTRO: Phase 11 - Per-agent concurrency control and event queuing
pedramamini Mar 1, 2026
c0f8c55
MAESTRO: Phase 12 - Sleep/wake reconciliation with heartbeat and even…
pedramamini Mar 1, 2026
cc6035c
MAESTRO: Verify and fix terminal tab persistence across app restarts
pedramamini Mar 1, 2026
e4e4bec
MAESTRO: Phase 13 - Event payload filtering for Cue subscriptions
pedramamini Mar 1, 2026
44ae6de
MAESTRO: Fix SSH field name bug in terminal tab PTY spawning
pedramamini Mar 1, 2026
6c2c252
MAESTRO: Phase 14 - Named coordination pattern presets and AI pattern…
pedramamini Mar 1, 2026
705d0f7
MAESTRO: Fix terminal search next/previous query tracking bug
pedramamini Mar 1, 2026
c186d90
MAESTRO: Phase 7 — Fix terminal tab navigation in unified tab system
pedramamini Mar 1, 2026
ca7c4de
MAESTRO: Guard shellLogs appends — only write when no terminalTabs (l…
pedramamini Mar 1, 2026
d78d836
MAESTRO: Phase 13 — Remove unused enterToSendTerminal and stale eslin…
pedramamini Mar 1, 2026
e5c38f6
MAESTRO: Phase 13 — Update test mocks with terminalTabs fields and fi…
pedramamini Mar 1, 2026
6dddeeb
MAESTRO: Phase 13 — Add Terminal Tab System section to ARCHITECTURE.md
pedramamini Mar 1, 2026
03cb6a6
MAESTRO: Address PR #486 review comments from CodeRabbit and Greptile
pedramamini Mar 1, 2026
b120a90
MAESTRO: Document intentional useEffect dep omission in TerminalView
pedramamini Mar 1, 2026
6d3995b
MAESTRO: Update tests for PR #486 review fixes
pedramamini Mar 1, 2026
af3ec11
feat: add "Run All Phases" toggle to wizard and resize modal
pedramamini Mar 3, 2026
a9952f4
feat: stream real-time history entries into Director's Notes with liv…
pedramamini Mar 4, 2026
ffbdb2f
feat: add maestro:// deep link protocol and clickable OS notifications
pedramamini Mar 4, 2026
4ebad25
fix: address PR review — add type="button" and ariaLabel to ToggleSwitch
pedramamini Mar 4, 2026
6c9c9fe
fix: address PR review — stable ref pattern, deduplicated counters, c…
pedramamini Mar 4, 2026
e2af946
fix: address PR review feedback for deep links
pedramamini Mar 4, 2026
f4be149
feat: add deep link template variables, shared URL builders, and docs
pedramamini Mar 4, 2026
ea5b06b
fix: handle expected IPC errors gracefully to prevent unhandled rejec…
pedramamini Mar 4, 2026
dddf781
feat: gate Maestro Symphony behind Encore Features toggle, add multi-…
pedramamini Mar 4, 2026
3916890
MAESTRO: Phase 01 - GitHub polling foundation (types, DB, poller module)
pedramamini Mar 4, 2026
da7f13c
MAESTRO: Phase 02 - GitHub polling integration (engine, YAML, executo…
pedramamini Mar 4, 2026
5c9c638
MAESTRO: Phase 03 - Add GitHub pattern presets (PR Review, Issue Tria…
pedramamini Mar 4, 2026
a7af3f0
MAESTRO: Sync CueEventType across preload and renderer with GitHub ev…
pedramamini Mar 4, 2026
bccf2be
MAESTRO: Add GitHub event documentation to Cue Help Modal
pedramamini Mar 4, 2026
5f7a2c2
MAESTRO: Add GitHub event payload display to Cue activity log
pedramamini Mar 4, 2026
80880ba
MAESTRO: Add GitHub event types to CueYamlEditor YAML template and AI…
pedramamini Mar 4, 2026
382f712
merge: resolve conflicts with main, adapt encore features to decompos…
pedramamini Mar 4, 2026
3905a75
Merge remote-tracking branch 'origin/main' into run-all-wizard-docs
pedramamini Mar 4, 2026
244f2e4
fix: restore Cmd+/- font size shortcuts lost when custom menu was added
pedramamini Mar 4, 2026
5272ae1
feat: add Create Worktree command to command palette with auto-focus
pedramamini Mar 4, 2026
f6e9ebb
fix: format symphony-registry.json and register font size shortcuts
pedramamini Mar 4, 2026
222e201
fix: address CodeRabbit PR review findings for encore-features
pedramamini Mar 4, 2026
e01f2bf
Merge origin/main into maestro-cue-spinout with PR review fixes
pedramamini Mar 5, 2026
b227372
fix: wire Symphony stats tracking through batch run lifecycle
pedramamini Mar 1, 2026
2a8b89c
fix: add history entry for Symphony PR finalization
pedramamini Mar 1, 2026
e8408aa
fix: include issue number in Symphony working directory name
pedramamini Mar 1, 2026
c9588eb
fix: correct user message alignment toggle behavior (#493)
jeffscottward Mar 1, 2026
616bf95
fix: resolve merge regressions from main — dead subscriptions and ali…
reachraza Mar 2, 2026
ec5209f
chore: modify .gitignore
reachraza Mar 2, 2026
76433ac
style: ran formatter to conform to standards
reachraza Mar 2, 2026
8a5d66b
feat: add bookmark toggle, tab long-press actions, and reusable long-…
pedramamini Mar 2, 2026
93b75de
fix: update test mocks and fix conditional hooks for bookmark/tab fea…
pedramamini Mar 2, 2026
2225592
fix: resolve TS errors in TerminalOutput test after merge conflict re…
reachraza Mar 2, 2026
dfc605e
fix: 0.15.0-RC polish round two — error details & lookback default (#…
pedramamini Mar 3, 2026
02eb5d3
fix: show tool call details and fix text routing for OpenCode thinkin…
chr1syy Mar 3, 2026
7ca7e86
fix: 0.15.0 RC polish round two (#503)
pedramamini Mar 3, 2026
6e9d283
fix: update OpenCode parser integration test missed in #499
pedramamini Mar 3, 2026
dc474c8
docs: sync release notes for v0.15.1
github-actions[bot] Mar 3, 2026
d229f37
[Symphony] Start contribution for #160
pedramamini Mar 1, 2026
b85c762
MAESTRO: Fix four terminal tab integration bugs
pedramamini Mar 5, 2026
5f2ff01
refactor: decompose SettingsModal into per-tab components
reachraza Mar 3, 2026
56aeae4
fix: address CodeRabbit review findings across refactored components
reachraza Mar 3, 2026
4c2f639
refactor: decompose SessionList into focused sub-components and hooks
reachraza Mar 4, 2026
ad7f3b7
refactor-chore: move SettingsModal into Settings directory for consis…
reachraza Mar 4, 2026
5337073
fix: address CodeRabbit review findings across refactored components
reachraza Mar 4, 2026
15f45fc
refactor: merge NewGroupChatModal and EditGroupChatModal into unified…
reachraza Mar 4, 2026
eea56e1
refactor: centralize platform detection into shared utility module
reachraza Mar 4, 2026
1081a32
refactor: centralize renderer platform detection via window.maestro.p…
reachraza Mar 4, 2026
491e3f7
fix: use getWhichCommand() helper and add Linux platform test coverage
reachraza Mar 5, 2026
db00db5
style: fix symphony-registry.json formatting for CI
reachraza Mar 5, 2026
89f78ad
forgot to bump version!
pedramamini Mar 3, 2026
7991045
Add 'bills-bot' entry to symphony-registry.json (#388)
BillChirico Mar 4, 2026
e074d58
fix: auto-focus input field when toggling AI/Shell mode via Cmd+J
kianhub Mar 3, 2026
dbc69f1
refactor: extract focus delay into named constant
kianhub Mar 3, 2026
2143955
test: add setActiveFocus and inputRef mocks to toggleMode tests
kianhub Mar 3, 2026
1d5b3cd
test: assert auto-focus behavior in toggleMode tests
kianhub Mar 3, 2026
d236466
[Symphony] Start contribution for #160
pedramamini Mar 1, 2026
244d039
MAESTRO: Phase 9 — Keyboard shortcuts for terminal tabs
pedramamini Mar 1, 2026
168c346
fix: update test mocks and fix conditional hooks for bookmark/tab fea…
pedramamini Mar 2, 2026
362e64a
[Symphony] Start contribution for #160
pedramamini Mar 1, 2026
851b2a7
MAESTRO: Fix four terminal tab integration bugs
pedramamini Mar 5, 2026
bd96aba
fix: terminal tab rename keyboard shortcut and defensive cwd fallback
pedramamini Mar 5, 2026
c884825
fix: add missing HamburgerMenuContent component extracted from Sessio…
pedramamini Mar 5, 2026
05a4bfb
fix: resolve duplicate entries in file tree by using tree-structured …
pedramamini Mar 5, 2026
38a741c
feat: add --read-only flag to maestro-cli send command
pedramamini Mar 5, 2026
0ef4db6
MAESTRO: Add task.pending event type to Cue automation system
pedramamini Mar 5, 2026
05f3cf8
fix: allow session name pill to shrink so date doesn't collide with t…
pedramamini Mar 5, 2026
6642d01
fix: resolve 7 terminal tab integration issues (#160)
pedramamini Mar 5, 2026
a9d37cb
MAESTRO: Update CLAUDE.md Cue description to include all trigger types
pedramamini Mar 5, 2026
8eaed7e
feat: add unread agents filter toggle with Cmd+Shift+U shortcut
pedramamini Mar 5, 2026
9625315
Replace hardcoded tool detail extractors with generic summarizeToolInput
pedramamini Mar 5, 2026
7a3e642
fix: handle expected IPC errors gracefully to prevent unhandled rejec…
pedramamini Mar 4, 2026
4d11927
Merge remote-tracking branch 'origin/deep-links' into 0.16.0-RC
pedramamini Mar 6, 2026
1469a16
Merge remote-tracking branch 'origin/directors-notes-stream' into 0.1…
pedramamini Mar 6, 2026
7206526
Merge remote-tracking branch 'origin/encore-features' into 0.16.0-RC
pedramamini Mar 6, 2026
d7b6bf6
merge: resolve conflicts merging maestro-cue-spinout into 0.16.0-RC
pedramamini Mar 6, 2026
c3e928a
Merge remote-tracking branch 'origin/run-all-wizard-docs' into 0.16.0-RC
pedramamini Mar 6, 2026
f6541a7
fix: resolve type errors from branch merges
pedramamini Mar 6, 2026
930b649
merge: resolve conflicts merging little-thing into 0.16.0-RC
pedramamini Mar 6, 2026
15b59a2
feat: add Copy Deep Link option to tab overlay menu
pedramamini Mar 6, 2026
ce5cf67
fix: use textMain for session names to prevent visual dimming
pedramamini Mar 6, 2026
6cf514e
Merge remote-tracking branch 'origin/little-thing' into 0.16.0-RC
pedramamini Mar 6, 2026
82e1a80
fix: resolve tsconfig.main.json build errors from branch merges
pedramamini Mar 6, 2026
9060bb8
Merge remote-tracking branch 'origin/deep-links' into 0.16.0-RC
pedramamini Mar 6, 2026
6679395
Merge branch '0.16.0-RC' of https://github.com/RunMaestro/Maestro int…
pedramamini Mar 6, 2026
47eedca
fix: reset inputMode when switching from terminal to AI/file tabs
pedramamini Mar 6, 2026
3b0bba2
fix: pass app entry point in dev-mode protocol registration
pedramamini Mar 6, 2026
8d2b003
fix: count only agents with entries in lookback window for Director's…
pedramamini Mar 6, 2026
28b93de
Gate CUE history filter on maestroCue encore feature and fix crowded …
pedramamini Mar 6, 2026
8cc9a6c
fix: terminal tabs now connect to SSH remote host when session SSH is…
pedramamini Mar 6, 2026
926f978
fix: preserve draft input when replaying a previous message
pedramamini Mar 6, 2026
8910615
refactor: move Usage & Stats settings from General tab to Encore Feat…
pedramamini Mar 6, 2026
7409805
fix: match unread agent indicator dot position to tab unread pattern
pedramamini Mar 6, 2026
b3c5c8d
Merge remote-tracking branch 'origin/deep-links' into 0.16.0-RC
pedramamini Mar 6, 2026
25d26fc
merge: resolve conflict merging encore-features into 0.16.0-RC
pedramamini Mar 6, 2026
7e1025c
merge: resolve conflict merging maestro-cue-spinout into 0.16.0-RC
pedramamini Mar 6, 2026
56108c9
Add CUE entry type to History Panel help modal when maestroCue is ena…
pedramamini Mar 6, 2026
6efd53e
Merge remote-tracking branch 'origin/little-thing' into 0.16.0-RC
pedramamini Mar 6, 2026
5092e46
docs: move Usage Dashboard and Maestro Symphony under Encore Features…
pedramamini Mar 6, 2026
bca4bed
feat: show View history link on files tab during batch run
pedramamini Mar 6, 2026
03ae596
Add comprehensive Maestro Cue user documentation (4 pages)
pedramamini Mar 6, 2026
4810a99
Merge remote-tracking branch 'origin/encore-features' into 0.16.0-RC
pedramamini Mar 6, 2026
027b81e
merge: resolve conflicts merging maestro-cue-spinout docs into 0.16.0-RC
pedramamini Mar 6, 2026
a53b851
Merge remote-tracking branch 'origin/little-thing' into 0.16.0-RC
pedramamini Mar 6, 2026
4d0e212
fix: remove hardcoded max-width on header session name
pedramamini Mar 6, 2026
debe883
refactor: reorder Encore Features, remove BETA from Usage Dashboard
pedramamini Mar 6, 2026
391f9c0
merge: resolve conflicts merging encore-features into 0.16.0-RC (reor…
pedramamini Mar 6, 2026
45cc4b0
Merge remote-tracking branch 'origin/little-thing' into 0.16.0-RC
pedramamini Mar 6, 2026
c1cf4dc
Add Cue YAML editor, context menu integration, and fix help modal z-i…
pedramamini Mar 6, 2026
c2a366c
Add tests for cueYamlEditor modal and Configure Maestro Cue command p…
pedramamini Mar 6, 2026
cbc98a3
merge: resolve conflict merging maestro-cue-spinout into 0.16.0-RC (C…
pedramamini Mar 6, 2026
ee06bef
feat: show terminal tabs in tab switcher modal; fix xterm repaint on …
pedramamini Mar 6, 2026
fd20866
Move Configure Maestro Cue below Configure Worktrees in context menu
pedramamini Mar 6, 2026
0b7e4aa
Center history filter pills when CUE type adds a third row
pedramamini Mar 6, 2026
5c4a954
Add conversational AI Assist chat to CueYamlEditor with agent spawn a…
pedramamini Mar 6, 2026
ce90391
Merge remote-tracking branch 'origin/maestro-cue-spinout' into 0.16.0-RC
pedramamini Mar 6, 2026
6fb6a43
version bump
pedramamini Mar 6, 2026
6bf9839
ignore Cue files
pedramamini Mar 6, 2026
d5c606e
Add Cue Examples cookbook page and document triggeredBy filter field
pedramamini Mar 6, 2026
564d85f
fix: skip directory collision warning when agents are on different hosts
pedramamini Mar 6, 2026
52d9a37
Merge remote-tracking branch 'origin/maestro-cue-spinout' into 0.16.0-RC
pedramamini Mar 6, 2026
8174d7e
Merge remote-tracking branch 'origin/little-thing' into 0.16.0-RC
pedramamini Mar 6, 2026
fc466b8
Rename Cancel to Exit in CueYamlEditor and pass cueShortcutKeys to Cu…
pedramamini Mar 6, 2026
1a10463
Merge remote-tracking branch 'origin/maestro-cue-spinout' into 0.16.0-RC
pedramamini Mar 6, 2026
c469ec6
fix: close AI tab falls back to correct neighbor using unifiedTabOrder
pedramamini Mar 6, 2026
e47cb59
fix: check sessionSshRemoteConfig as primary SSH remote ID source
pedramamini Mar 6, 2026
16322c8
fix: use dark text colors for context warning sash in light mode
pedramamini Mar 6, 2026
d507d10
fix: dropdown clipping on hamburger menu and live overlay, rename Rem…
pedramamini Mar 6, 2026
96190ec
fix: always show .maestro folder in file tree regardless of ignore pa…
pedramamini Mar 6, 2026
993957e
Add missing Cue template variables for file changeType and agent comp…
pedramamini Mar 6, 2026
f5534af
Merge remote-tracking branch 'origin/maestro-cue-spinout' into 0.16.0-RC
pedramamini Mar 6, 2026
4f4d6f4
Merge remote-tracking branch 'origin/little-thing' into 0.16.0-RC
pedramamini Mar 6, 2026
924cbb7
fix: update CueHelpModal -> CueHelpContent import after rename in mae…
pedramamini Mar 6, 2026
c8154d8
Add Cue Graph visualizer tab, standardize modal sizes, and inline hel…
pedramamini Mar 6, 2026
31478e6
merge: integrate PR #519 (OpenCode multi-step fix, onConfigBlur signa…
pedramamini Mar 6, 2026
73dd645
fix: preserve terminal content when returning from AI mode via isVisi…
pedramamini Mar 6, 2026
3c38127
Use theme accent instead of hardcoded Cue teal for toggles, borders, …
pedramamini Mar 6, 2026
a337827
fix: closeTerminalTab falls back to correct neighbor using unifiedTab…
pedramamini Mar 6, 2026
cd135ab
merge: resolve conflicts merging maestro-cue-spinout into 0.16.0-RC (…
pedramamini Mar 6, 2026
142b52f
fix: persist terminal tab content across session switches
pedramamini Mar 6, 2026
fceeb5a
fix: defer WebGL addon load until terminal container is visible
pedramamini Mar 7, 2026
10c5d20
MAESTRO: Add pipeline types and React Flow canvas foundation for Cue …
pedramamini Mar 7, 2026
3a73db0
Merge remote-tracking branch 'origin/maestro-cue-spinout' into 0.16.0-RC
pedramamini Mar 7, 2026
85af511
fix: terminal tabs on SSH agents now connect to the remote host
pedramamini Mar 7, 2026
747a93c
MAESTRO: Add custom node types and pipeline edge for Cue visual editor
pedramamini Mar 7, 2026
c8af227
MAESTRO: Add trigger and agent drawers with drag-and-drop for Cue pip…
pedramamini Mar 7, 2026
c77aba7
MAESTRO: Add pipeline lifecycle management with selector dropdown, co…
pedramamini Mar 7, 2026
215981e
MAESTRO: Add node and edge configuration panels for Cue pipeline editor
pedramamini Mar 7, 2026
ab4174d
MAESTRO: Add pipeline-to-YAML conversion utility for Cue visual editor
pedramamini Mar 7, 2026
b444a8f
MAESTRO: Add YAML-to-pipeline reverse conversion for Cue visual editor
pedramamini Mar 7, 2026
4489eef
MAESTRO: Integrate YAML conversion into pipeline editor with save/loa…
pedramamini Mar 7, 2026
89156dc
fix: use visibility:hidden instead of display:none for terminal keep-…
pedramamini Mar 7, 2026
4ab5a75
MAESTRO: Add pipeline layout persistence via IPC for Cue visual editor
pedramamini Mar 7, 2026
8b69794
fix: SSH terminal tabs now actually connect to remote host
pedramamini Mar 7, 2026
f1784ed
MAESTRO: Update CueModal to use Pipeline Editor as default tab and re…
pedramamini Mar 7, 2026
e2752bd
MAESTRO: Add pipeline-aware status indicators to CueModal Dashboard tab
pedramamini Mar 7, 2026
f42fb0f
remove obsolete terminalWidth setting; update log buffer description
pedramamini Mar 7, 2026
e1f53fe
MAESTRO: Add polish features to Cue visual pipeline editor
pedramamini Mar 7, 2026
bfac684
test: add PtySpawner tests covering SSH terminal and shell terminal p…
pedramamini Mar 7, 2026
cecb0cb
fix: improve light theme contrast for syntax highlighting and colors
pedramamini Mar 7, 2026
f6e66b4
fix: always mount terminal sessions regardless of file preview / AI view
pedramamini Mar 7, 2026
68a62da
Merge remote-tracking branch 'origin/main' into 0.16.0-RC
pedramamini Mar 7, 2026
734d773
fix: include busy agents in unread agents filter
pedramamini Mar 7, 2026
cb00fc4
MAESTRO: Fix empty pipeline graph and add drawer improvements
pedramamini Mar 7, 2026
a6e5b08
Merge remote-tracking branch 'origin/maestro-cue-spinout' into 0.16.0-RC
pedramamini Mar 7, 2026
ecc2339
merge: resolve conflicts merging little-thing into 0.16.0-RC (keep re…
pedramamini Mar 7, 2026
60a9853
test: add XTerminal and terminalTabHelpers coverage
pedramamini Mar 7, 2026
73e81eb
fix: remove scroll-to-bottom arrow indicator from terminal output view
pedramamini Mar 7, 2026
dad3ce4
chore: merge 0.16.0-RC into branch, resolve conflicts
pedramamini Mar 7, 2026
22980b7
fix: address CodeRabbit and Greptile review findings
pedramamini Mar 7, 2026
fdb5ff1
fix: address second-round CodeRabbit and Greptile review findings
pedramamini Mar 7, 2026
f073fed
fix: add missing @xterm/* dependencies to package.json
pedramamini Mar 7, 2026
aaef37a
fix: add missing @xterm/addon-webgl to package.json
pedramamini Mar 7, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Work\ Trees/
community-data/
.mcp.json
specs/
.maestro/
maestro-cue.yaml

# Tests
coverage/
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@ node_modules/
coverage/
*.min.js
.gitignore
.prettierignore
49 changes: 49 additions & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ Deep technical documentation for Maestro's architecture and design patterns. For
- [Achievement System](#achievement-system)
- [AI Tab System](#ai-tab-system)
- [File Preview Tab System](#file-preview-tab-system)
- [Terminal Tab System](#terminal-tab-system)
- [Execution Queue](#execution-queue)
- [Navigation History](#navigation-history)
- [Group Chat System](#group-chat-system)
Expand Down Expand Up @@ -1116,6 +1117,54 @@ File tabs display a colored badge based on file extension. Colors are theme-awar

---

## Terminal Tab System

Persistent PTY-backed terminal tabs that integrate into the unified tab bar alongside AI and file tabs. Built on xterm.js for full terminal emulation with ANSI support.

### Features

- **Persistent PTY**: Each tab spawns a dedicated PTY via `process:spawnTerminalTab` IPC — the shell stays alive between tab switches
- **xterm.js rendering**: Full terminal emulation via `XTerminal.tsx` (wraps `@xterm/xterm`); raw PTY data passes through unchanged
- **Multi-tab**: Multiple independent shells per agent; tabs are closable and renameable
- **State persistence**: `terminalTabs` array saved with the session; PTYs are re-spawned on restore
- **Spawn failure UX**: `state === 'exited' && pid === 0` shows an error overlay with a Retry button
- **Exit message**: PTY exit writes a yellow ANSI banner and new-terminal hint to the xterm buffer

### Terminal Tab Interface

```typescript
interface TerminalTab {
id: string; // Unique tab ID (UUID)
name: string; // Display name (custom or auto "Terminal N")
shellType: string; // Shell binary (e.g., "zsh", "bash")
cwd: string; // Working directory
pid: number; // PTY process ID (0 = not yet spawned)
state: 'idle' | 'running' | 'exited';
exitCode: number | null;
createdAt: number;
}
```

### Session Fields

```typescript
// In Session interface
terminalTabs: TerminalTab[]; // Array of terminal tabs
activeTerminalTabId: string | null; // Active terminal tab (null if not in terminal mode)
```

### Key Files

| File | Purpose |
| --------------------------- | -------------------------------------------------------------------- |
| `XTerminal.tsx` | xterm.js wrapper; handles PTY data I/O and terminal lifecycle |
| `TerminalView.tsx` | Layout container; manages tab selection and spawn/exit state |
| `terminalTabHelpers.ts` | CRUD helpers (`createTerminalTab`, `addTerminalTab`, `closeTerminalTab`, etc.) |
| `tabStore.ts` | Zustand selectors for terminal tab state |
| `src/main/ipc/handlers/process.ts` | `process:spawnTerminalTab` IPC handler with SSH support |

---

## Execution Queue

Sequential message processing system that prevents race conditions when multiple operations target the same agent.
Expand Down
35 changes: 35 additions & 0 deletions CLAUDE-IPC.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ The `window.maestro` API exposes the following namespaces:
- `history` - Per-agent execution history (see History API below)
- `cli` - CLI activity detection for playbook runs
- `tempfile` - Temporary file management for batch processing
- `cue` - Maestro Cue event-driven automation (see Cue API below)

## Analytics & Visualization

Expand Down Expand Up @@ -74,6 +75,40 @@ window.maestro.history = {

**AI Context Integration**: Use `getFilePath(sessionId)` to get the path to an agent's history file. This file can be passed directly to AI agents as context, giving them visibility into past completed tasks, decisions, and work patterns.

## Cue API

Maestro Cue event-driven automation engine. Gated behind the `maestroCue` Encore Feature flag.

```typescript
window.maestro.cue = {
// Query engine state
getStatus: () => Promise<CueSessionStatus[]>,
getActiveRuns: () => Promise<CueRunResult[]>,
getActivityLog: (limit?) => Promise<CueRunResult[]>,

// Engine controls
enable: () => Promise<void>,
disable: () => Promise<void>,

// Run management
stopRun: (runId) => Promise<boolean>,
stopAll: () => Promise<void>,

// Session config management
refreshSession: (sessionId, projectRoot) => Promise<void>,

// YAML config file operations
readYaml: (projectRoot) => Promise<string | null>,
writeYaml: (projectRoot, content) => Promise<void>,
validateYaml: (content) => Promise<{ valid: boolean; errors: string[] }>,

// Real-time updates
onActivityUpdate: (callback) => () => void, // Returns unsubscribe function
};
```

**Events:** `cue:activityUpdate` is pushed from main process on subscription triggers, run completions, config reloads, and config removals.

## Power Management

- `power` - Sleep prevention: setEnabled, isEnabled, getStatus, addReason, removeReason
Expand Down
13 changes: 11 additions & 2 deletions CLAUDE-PATTERNS.md
Original file line number Diff line number Diff line change
Expand Up @@ -348,16 +348,25 @@ When adding a new Encore Feature, gate **all** access points:
6. **Hamburger menu** — Make the setter optional, conditionally render the menu item in `SessionList.tsx`
7. **Command palette** — Pass `undefined` for the handler in `QuickActionsModal.tsx` (already conditionally renders based on handler existence)

### Reference Implementation: Director's Notes
### Reference Implementations

Director's Notes is the first Encore Feature and serves as the canonical example:
**Director's Notes** — First Encore Feature, canonical example:

- **Flag:** `encoreFeatures.directorNotes` in `EncoreFeatureFlags`
- **App.tsx gating:** Modal render wrapped in `{encoreFeatures.directorNotes && directorNotesOpen && (…)}`, callback passed as `encoreFeatures.directorNotes ? () => setDirectorNotesOpen(true) : undefined`
- **Keyboard shortcut:** `ctx.encoreFeatures?.directorNotes` guard in `useMainKeyboardHandler.ts`
- **Hamburger menu:** `setDirectorNotesOpen` made optional in `SessionList.tsx`, button conditionally rendered with `{setDirectorNotesOpen && (…)}`
- **Command palette:** `onOpenDirectorNotes` already conditionally renders in `QuickActionsModal.tsx` — passing `undefined` from App.tsx is sufficient

**Maestro Cue** — Event-driven automation, second Encore Feature:

- **Flag:** `encoreFeatures.maestroCue` in `EncoreFeatureFlags`
- **App.tsx gating:** Cue modal, hooks (`useCue`, `useCueAutoDiscovery`), and engine lifecycle gated on `encoreFeatures.maestroCue`
- **Keyboard shortcut:** `ctx.encoreFeatures?.maestroCue` guard in `useMainKeyboardHandler.ts`
- **Hamburger menu:** `setMaestroCueOpen` made optional in `SessionList.tsx`
- **Command palette:** `onOpenMaestroCue` conditionally renders in `QuickActionsModal.tsx`
- **Session list:** Cue status indicator (Zap icon) gated on `maestroCueEnabled`

When adding a new Encore Feature, mirror this pattern across all access points.

See [CONTRIBUTING.md → Encore Features](CONTRIBUTING.md#encore-features-feature-gating) for the full contributor guide.
12 changes: 11 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ Use "agent" in user-facing language. Reserve "session" for provider-level conver
- **Command Terminal** - Main window in terminal/shell mode
- **System Log Viewer** - Special view for system logs (`LogViewer.tsx`)

### Automation

- **Cue** — Event-driven automation system (Maestro Cue), gated as an Encore Feature. Watches for file changes, time intervals, agent completions, GitHub PRs/issues, and pending markdown tasks to trigger automated prompts. Configured via `maestro-cue.yaml` per project.
- **Cue Modal** — Dashboard for managing Cue subscriptions and viewing activity (`CueModal.tsx`)

### Agent States (color-coded)

- **Green** - Ready/idle
Expand Down Expand Up @@ -131,9 +136,10 @@ src/
│ ├── preload.ts # Secure IPC bridge
│ ├── process-manager.ts # Process spawning (PTY + child_process)
│ ├── agent-*.ts # Agent detection, capabilities, session storage
│ ├── cue/ # Maestro Cue event-driven automation engine
│ ├── parsers/ # Per-agent output parsers + error patterns
│ ├── storage/ # Per-agent session storage implementations
│ ├── ipc/handlers/ # IPC handler modules (stats, git, playbooks, etc.)
│ ├── ipc/handlers/ # IPC handler modules (stats, git, playbooks, cue, etc.)
│ └── utils/ # Utilities (execFile, ssh-spawn-wrapper, etc.)
├── renderer/ # React frontend (desktop)
Expand Down Expand Up @@ -202,6 +208,10 @@ src/
| Add Director's Notes feature | `src/renderer/components/DirectorNotes/`, `src/main/ipc/handlers/director-notes.ts` |
| Add Encore Feature | `src/renderer/types/index.ts` (flag), `useSettings.ts` (state), `SettingsModal.tsx` (toggle UI), gate in `App.tsx` + keyboard handler |
| Modify history components | `src/renderer/components/History/` |
| Add Cue event type | `src/main/cue/cue-types.ts`, `src/main/cue/cue-engine.ts` |
| Add Cue template variable | `src/shared/templateVariables.ts`, `src/main/cue/cue-executor.ts` |
| Modify Cue modal | `src/renderer/components/CueModal.tsx` |
| Configure Cue engine | `src/main/cue/cue-engine.ts`, `src/main/ipc/handlers/cue.ts` |

---

Expand Down
96 changes: 96 additions & 0 deletions docs/deep-links.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
title: Deep Links
description: Navigate to specific agents, tabs, and groups using maestro:// URLs from external apps, scripts, and OS notifications.
icon: link
---

# Deep Links

Maestro registers the `maestro://` URL protocol, enabling navigation to specific agents, tabs, and groups from external tools, scripts, shell commands, and OS notification clicks.

## URL Format

```
maestro://[action]/[parameters]
```

### Available Actions

| URL | Action |
| ------------------------------------------- | ------------------------------------------ |
| `maestro://focus` | Bring Maestro window to foreground |
| `maestro://session/{sessionId}` | Navigate to an agent |
| `maestro://session/{sessionId}/tab/{tabId}` | Navigate to a specific tab within an agent |
| `maestro://group/{groupId}` | Expand a group and focus its first agent |

IDs containing special characters (`/`, `?`, `#`, `%`, etc.) are automatically URI-encoded and decoded.

## Usage

### From Terminal

```bash
# macOS
open "maestro://session/abc123"
open "maestro://session/abc123/tab/def456"
open "maestro://group/my-group-id"
open "maestro://focus"

# Linux
xdg-open "maestro://session/abc123"

# Windows
start maestro://session/abc123
```

### OS Notification Clicks

When Maestro is running in the background and an agent completes a task, the OS notification is automatically linked to the originating agent and tab. Clicking the notification brings Maestro to the foreground and navigates directly to that agent's tab.

This works out of the box — no configuration needed. Ensure **OS Notifications** are enabled in Settings.

### Template Variables

Deep link URLs are available as template variables in system prompts, custom AI commands, and Auto Run documents:

| Variable | Description | Example Value |
| --------------------- | ---------------------------------------------- | ------------------------------------- |
| `{{AGENT_DEEP_LINK}}` | Link to the current agent | `maestro://session/abc123` |
| `{{TAB_DEEP_LINK}}` | Link to the current agent + active tab | `maestro://session/abc123/tab/def456` |
| `{{GROUP_DEEP_LINK}}` | Link to the agent's group (empty if ungrouped) | `maestro://group/grp789` |

These variables can be used in:

- **System prompts** — give AI agents awareness of their own deep link for cross-referencing
- **Custom AI commands** — include deep links in generated output
- **Auto Run documents** — reference agents in batch automation workflows
- **Custom notification commands** — include deep links in TTS or logging scripts

### From Scripts and External Tools

Any application can launch Maestro deep links by opening the URL. This enables integrations like:

- CI/CD pipelines that open a specific agent after deployment
- Shell scripts that navigate to a group after batch operations
- Alfred/Raycast workflows for quick agent access
- Bookmarks for frequently-used agents

## Platform Behavior

| Platform | Mechanism |
| ----------------- | ----------------------------------------------------------------------------- |
| **macOS** | `app.on('open-url')` delivers the URL to the running instance |
| **Windows/Linux** | `app.on('second-instance')` delivers the URL via argv to the primary instance |
| **Cold start** | URL is buffered and processed after the window is ready |

Maestro uses a single-instance lock — opening a deep link when Maestro is already running delivers the URL to the existing instance rather than launching a new one.

<Note>
In development mode, protocol registration is skipped by default to avoid overriding the production app's handler. Set `REGISTER_DEEP_LINKS_IN_DEV=1` to enable it during development.
</Note>

## Related

- [Configuration](./configuration) — OS notification settings
- [General Usage](./general-usage) — Core UI and workflow patterns
- [MCP Server](./mcp-server) — Connect AI applications to Maestro
18 changes: 13 additions & 5 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,9 @@
"history",
"context-management",
"document-graph",
"usage-dashboard",
"symphony",
"git-worktrees",
"group-chat",
"remote-access",
"remote-control",
"ssh-remote-execution",
"configuration"
]
Expand All @@ -74,15 +72,25 @@
{
"group": "Encore Features",
"icon": "flask",
"pages": ["encore-features", "director-notes"]
"pages": [
"encore-features",
"director-notes",
"usage-dashboard",
"symphony",
"maestro-cue",
"maestro-cue-configuration",
"maestro-cue-events",
"maestro-cue-advanced",
"maestro-cue-examples"
]
},
{
"group": "Providers & CLI",
"pages": ["provider-notes", "multi-claude", "cli"]
},
{
"group": "Integrations",
"pages": ["mcp-server"],
"pages": ["mcp-server", "deep-links"],
"icon": "plug"
},
{
Expand Down
11 changes: 6 additions & 5 deletions docs/encore-features.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@ Open **Settings** (`Cmd+,` / `Ctrl+,`) and navigate to the **Encore Features** t

## Available Features

| Feature | Shortcut | Description |
| ------------------------------------ | ------------------------------ | --------------------------------------------------------------- |
| [Director's Notes](./director-notes) | `Cmd+Shift+O` / `Ctrl+Shift+O` | Unified timeline of all agent activity with AI-powered synopses |

More features will be added here as they ship.
| Feature | Shortcut | Description |
| ------------------------------------ | ------------------------------- | ------------------------------------------------------------------------------------------------ |
| [Director's Notes](./director-notes) | `Cmd+Shift+O` / `Ctrl+Shift+O` | Unified timeline of all agent activity with AI-powered synopses |
| [Usage Dashboard](./usage-dashboard) | `Opt+Cmd+U` / `Alt+Ctrl+U` | Comprehensive analytics for tracking AI usage patterns |
| [Maestro Symphony](./symphony) | `Cmd+Shift+Y` / `Ctrl+Shift+Y` | Contribute to open source by donating AI tokens |
| [Maestro Cue](./maestro-cue) | `Cmd+Shift+Q` / `Ctrl+Shift+Q` | Event-driven automation: file changes, timers, agent chaining, GitHub polling, and task tracking |

## For Developers

Expand Down
Loading
Loading