- NewInstanceModal now preserves SSH config during agent re-detection flows 🧭
- Tests now mock remote `fs.stat` to validate SSH working directory reliably 🧪
- NewInstanceModal tests wait for debounced remote path validation before creating ⏱️
- Leaderboard “Submit” button stays hidden after success to avoid resubmits 🚫
- Leaderboard “Sync from cloud” is now available even after successful submit 🔄
- Leaderboard “Opt Out” action remains accessible after a successful registration 🧾
- Autorun synopsis prompt bans session-context preambles for cleaner summaries ✍️
- SSH remote selection now works even before choosing an agent 🚀
- NewInstanceModal now reads pending SSH config for enablement/host display 🔧
- Agent detection reliably re-runs when switching between remote and local 🔁
- Wizard recovery test now programmatically toggles SSH to bypass JSDOM quirks 🧪
- Wizard tests use real timers to validate React effects correctly ⏱️
- NewInstanceModal tests verify detect() called with selected SSH remote ID 📡
- Agent selection test flow now waits for aria-selected state properly ✅
- Tests stop relying on remote path validation and fragile placeholder behavior 🧹
- SSH selector tests consistently target the combobox select element 🎛️
- Leaderboard stats layout upgraded from grid to flexible proportions 🏆
- Detect agents on SSH remotes via IPC `agents:detect(sshRemoteId)` 🌐
- Show friendly “Unable to Connect” UI when remote agent detection fails ⚠️
- Re-detect agents instantly when switching SSH remote selection in modals 🔁
- Wizard now persists SSH remote choice across step navigation 🧭
- Remote directory validation now checks existence via `fs.readDir` first 📁
- Git repo checks and Auto Run docs lookup now support SSH remote IDs 🛰️
- Directory screen hides Browse button for remote sessions, adds remote hints 📝
- Agent selection UI revamped: name + location dropdown, clearer header 🧩
- Add `showThinking` option to tabs and merged sessions, default false 🧠
- Export `AGENT_DEFINITIONS` for reuse in remote detection logic 📦
- Compaction now triggers earlier: 2k tokens or 8 exchanges 🎯
- Added extra compaction fallbacks when context gauge resets unexpectedly 🔁
- Read-only tabs now force “return plan in Markdown” instructions 🧾
- Auto Run without worktree automatically runs in read-only/plan mode 🛡️
- ThinkingStatusPill now accepts prefiltered thinkingSessions for speed ⚡
- InputArea precomputes thinking sessions and memoizes command filtering 🚀
- MainPanel memoizes active tab lookup to cut per-keystroke work 🧠
- TerminalOutput memoizes active logs and reduces scroll update frequency 🖥️
- Batched session updates track context high-water mark with explicit reset 🌊
- Wizard adds one-click debug log download right in the conversation UI 🧰
- Leaderboard registration now submits cumulative stats safely for multi-device sync 🏆
- AutoRun prompt now requires a concrete “what I did” synopsis first 🧭
The wizard was using agent.command ("claude") instead of agent.path
("/opt/homebrew/bin/claude") when spawning processes. In packaged
Electron apps, PATH may not include agent locations, causing ENOENT
errors when no existing agents had been created.
Fixes#171
The /wizard command now respects the user's configured Auto Run folder
path instead of always creating "Auto Run Docs" at the repository root.
Fixes#169
- Document labels now hide “.md” extension for cleaner progress display ✨
- Full filename (with “.md”) moved into hover tooltip for quick clarity 🧾
- Document name text now truncates gracefully to prevent layout overflow 🧩
- Improved flex sizing so progress bar stays visible in tight spaces 📊
- Add initialRect to prevent flushSync warning during initial render
- Add scroll-to-selected effect for keyboard navigation (arrow keys)
- Use measureElement ref for dynamic row sizing instead of manual refs
- Adjust estimated row heights to better match actual content
- Remove unused itemRefs
The logsEndRef div was conditionally rendered only when session.state
!== 'busy', which prevented Cmd+Shift+J (scroll to end) from working
while the agent was actively processing. Now always rendered.
- Fresh app icons for macOS and Windows builds, looking sharper than ever 🖼️
- New opt-in global Leaderboard tracking via <a href="https://runmaestro.ai">RunMaestro.ai</a> 🚀
- Themes documentation revamped into Dark, Light, and Vibe categories 🎨
- Theme lineup refreshed with Catppuccin Mocha, Gruvbox Dark, and Ayu Light 🌈
- Brand-new Vibe themes added: Maestro’s Choice, Dre Synth, InQuest ✨
- New docs screenshots added to better showcase Maestro’s experience 📸
- Sessions now support bookmark toggling via Cmd+Shift+B and UI actions 🔖
- Added global Leaderboard showcasing Auto Run records and community rankings 🏆
- Leaderboard includes conductor badge, social links, and detailed stat sync 🌐
- Documented Tab Switcher fuzzy search with quick numbered tab jumps 🔎
- Tab Switcher now shows token count, cost, and context usage insights 📊
- Added screenshot-rich Shortcuts Settings guidance for remapping keys 🛠️
- Enhanced Shortcuts Help modal docs with search and mastery checkmarks ✅
- Introduced new default shortcut: Toggle Bookmark (Cmd+Shift+B) 🔖
- Wired Toggle Bookmark into main keyboard handler for active sessions ⚡
- Refreshed documentation screenshots, including new shortcuts modal image 🖼️
- Generate playbooks mid-session with the new Inline Wizard flow 🧙
- Add confidence gauge and organized wizard subfolders for generated docs 📈
- Launch **Maestro Symphony** to donate tokens and ship OSS PRs 🎵
- Browse/filter/search Symphony projects and issues directly in-app 🔎
- Auto-clone repos, run Auto Run docs, and open draft PRs automatically 🚀
- Track Symphony contributions with active/history/stats dashboards 📊
- Make leaderboard submissions multi-device safe using delta-based aggregation 🔁
- Stop image flicker with synchronous cache-backed Markdown image loading 🖼️
- Debounce Auto Run preview scroll persistence to cut noisy re-renders ⏱️
- Rename/delete in File Explorer updates tree instantly—no full refresh ⚡
- Gist publish modal now shows previously published URL and details 📌
- Copy gist URL in-app with instant “Copied!” feedback button 🧷
- Open published gists directly in your browser from the modal 🌐
- Re-publish flow added, with back navigation and replacement warning 🔁
- File preview now highlights the Gist icon when a gist exists 🎯
- Published gists are remembered per file path and restored on startup 💾
- Gist metadata now tracked (visibility and publish timestamp) for each file ⏱️
- App persists gist mappings to settings automatically after publishing 🗄️
- Community Discord links updated everywhere to <a href="https://runmaestro.ai/discord">runmaestro.ai/discord</a> 🔗
- Test suite expanded to cover existing-gist UI, copying, and republish flows 🧪
- Added Lightbox image deletion with confirmation modal and keyboard shortcut 🗑️
- Expanded Lightbox test coverage to fully validate delete flows end-to-end 🧪
- Generate and persist a unique installation GUID on first run 🔑
- Tag Sentry crash reports with installationId for better correlation 🧷
- Exposed `leaderboard:getInstallationId` IPC + preload API for renderer access 🔌
- Leaderboard submissions now auto-include installId (server-mapped field) 📤
- Send clientTotalTimeMs to help detect multi-device time discrepancies ⏱️
- Added Quick Action to copy Install GUID to clipboard for debugging 📋
- Tuned HistoryPanel virtualization row height estimates for smoother scrolling 📜
- Fixed React hook dependency for staged image removal callback stability 🪝
Increased UpdateCheckModal width from 500px to 625px to give release
notes more room to display properly.
Claude ID: 56e528a6-9479-464e-bdfa-6eef08f10ded
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
Adds defaultEnvVars support to AgentConfig interface and sets
OPENCODE_CONFIG_CONTENT with permission allow-all for OpenCode.
This prevents startup hangs caused by external_directory permission
prompts in batch mode.
Closes#158
- OpenCode CLI now uses `run` batch subcommand with positional prompts 🚀
- Dropped `-p` prompt flag for OpenCode JSON mode compatibility 🧩
- Added `noPromptSeparator` for OpenCode positional prompt handling 🧠
- Implemented “Close All Tabs” action for faster session cleanup 🧹
- Implemented “Close Other Tabs” to focus instantly on one tab 🎯
- Implemented “Close Tabs to Left” for browser-style tab management ⬅️
- Implemented “Close Tabs to Right” to prune clutter in one click ➡️
- Wired bulk tab-close handlers through App, Modals, MainPanel, TabBar 🔌
- Enhanced tab context menu with bulk close options and smart disabling 📋
- Updated tests to reflect OpenCode batch mode and UI copy tooltip 🧪
- Wizard now auto-continues when AI implies “let me research…” dead-ends 🧠
- Added robust deferred-response phrase detection to keep conversations flowing 🔍
- Introduced “Your turn” indicator when assistant awaits user input 💡
- Updated wizard system prompt to forbid deferred/async promises outright 🚫
- Prevented auto-continue infinite loops with a per-exchange trigger guard 🛡️
- Improved auto-continue UX with delayed send after UI updates ⏱️
- Added full test suite for deferred-response detection patterns ✅
- Strengthened NewInstanceModal tests with remote directory stat validation 📁
- NewInstanceModal tests now wait for debounced remote path validation ⏳
- Expanded icon mocking to include Loader2 for more complete test coverage 🎭
- SSH directory stats now include remote file and folder counts ⚡
- New incremental remote scanning finds changed files without full walks 🚀
- Baseline remote file listing added for faster subsequent refreshes 🧭
- File tree loading now streams live progress for slow SSH sessions 🛰️
- Fresh loading UI shows spinner, counters, and active scanned folder ⏳
- Sessions track file-tree loading state, progress, and last scan time 🧾
- New instance creation validates remote project path before enabling submit 🛡️
- Edit agent modal now verifies remote directory exists before saving 🔍
- Mind map nodes now label using filename (without .md) for clarity 🏷️
- Highlighted graph connections are now bolder for better visibility 🎯
- Add "Agent Native Commands" section to slash-commands.md explaining
which Claude Code commands work in Maestro's batch/print mode
- Document supported commands: /compact, /context, /cost, /init,
/pr-comments, /release-notes, /review, /security-review
- Document unsupported interactive commands: /mcp, /help, /clear,
/config, /model, /permissions, /memory, /rewind, /vim, /doctor, etc.
- Update provider-nuances.md to link to the new section
- Add tip for using CLI directly for interactive commands
Closes#146
- Windows terminal sessions now inherit full environment for reliable user tools 🪟
- Unix terminal launches keep minimal env while preserving essential PATH setup 🐚
- Command execution on Windows now preserves parent env with TERM override 🧰
- Remote BSD `stat` parsing fixed using ANSI-C quoting for newline output 📡
- Activity heatmap tooltip now anchors to hovered cell, not cursor location 🎯
- Tooltip positioning improved: centered below cell with smarter edge handling 🧭
- Removed mousemove-driven tooltip tracking for smoother heatmap interactions 🧊
- Auto-run image handling test updated for explicit `readFile` options argument 🧪
- OpenCode now uses `-p` promptArgs for true YOLO auto-approve mode 🧨
- ProcessManager supports flag-based prompts via new `promptArgs` hook 🧩
- IPC spawn handler now forwards `promptArgs` and respects SSH prompt formatting 🧵
- SSH spawning now uses local home cwd, preventing remote-path ENOENT failures 🏠
- Group chat pipeline propagates `promptArgs` everywhere and logs detection 🔍
- Added regression tests ensuring OpenCode never falls back to `run` mode 🛡️
- Delete confirmations get clearer titles and improved ARIA labels for accessibility ♿
- Delete modals now show a trash icon in headers for better intent clarity 🗑️
- Document Graph now reads stats/content with SSH remote ID support 🗺️
- FilePreview layer registration stabilized to avoid re-register loops 🌀
- Merged-session flow now auto-navigates target tab and auto-sends context 🚀
- Merge toast copy tightened—no more “next message” confusion, just results ✨
- Wizard-generated tab naming simplified to use subfolder name directly 🧭
- File Explorer delete confirmation rebuilt as a proper shared Modal 🧱
- Delete modals now show clearer “cannot be undone” messaging everywhere ⚠️
- ConfirmModal upgraded with “Confirm Delete” title plus destructive header icon 🗑️
- Delete Group Chat modal refreshed with warning icon layout and styling 🧨
- Delete Worktree renamed and hardened with Enter-key handling on actions ⌨️
- History entry delete UI enhanced with warning visuals and safer key handling 🧾
- Modal + FormInput now stop Enter propagation to prevent accidental triggers 🛡️
- Document Graph now works over SSH, scanning remote markdown safely 🌐
- Double-click nodes to “fan out” and reveal outgoing links fast 🪄
- Added incremental node expansion tracking with live “Expanding…” indicator ⏳
- Remote file explorer can rename, delete, and count items via SSH 🗂️
- New remote-fs helpers: `renameRemote`, `deleteRemote`, `countItemsRemote` 🚀
- SSH command spawning now resolves full ssh binary path reliably 🧭
- Stats DB VACUUM runs weekly with persisted timestamp scheduling 🗓️
- Query events indexing improved for project path and agent-time lookups ⚡
- Markdown preview stabilized by memoizing plugins/components to stop rerender loops 🧱
- SSH configs fetch now uses a 30s IPC cache with smart invalidation 🧠
- Leaderboard now syncs aggregated stats on startup for new devices 🚀
- Startup sync safely updates only when server totals exceed local 📈
- Added delayed startup sync to avoid interfering with app initialization ⏱️
- Auto-run submissions now reconcile server totals for multi-device accuracy 🔄
- Badge level recalculates from server cumulative time after syncing 🏅
- Local longest-run details preserved when server submit response omits them 🧷
- Backlink discovery tests now start from a no-outgoing-links config file 🧭
- Backlink scan expectations updated to validate newly discovered sources 🧩
- File deletion modal test now asserts confirmation copy, not filename 📝
- Document Graph now loads instantly, then scans backlinks in background 🚀
- Live backlink scan adds new nodes/edges without rebuilding graph ⚡
- Backlink scanning shows progress and supports safe abort on reload 🛑
- New fs IPC APIs: rename, delete, and directory item counting 🧰
- File Explorer context menu now includes Rename and Delete actions 🖱️
- Rename modal validates names, autofocuses, and supports Esc/Enter flows ⌨️
- Delete modal warns on folders, showing file/subfolder counts before removal ⚠️
- Delete confirmation defaults focus to Cancel for safer destructive actions 🛡️
- File Preview now supports editing any non-binary text files 📝
- Save + shortcut handling now works consistently across text edit mode 💾
- Wizard outputs now land in date-stamped `Wizard-YYYY-MM-DD` folders automatically 📅
- Dropped project-name folder sanitization in favor of consistent wizard base naming 🧭
- Inline wizard no longer auto-completes after generation; you decide when to exit 🛑
- Document generation screen now shows exact destination folder on completion 📂
- “Continue” button renamed to clear “Exit Wizard” action for better flow 🚪
- Main panel messaging updated to match the new Exit Wizard completion step 🧩
- File explorer “Retry Connection” now disables and shows “Connecting…” while refreshing 🔄
- Refresh icon now spins during reconnect attempts for instant status feedback 🌀
- Tests revamped to validate date-based wizard folder naming and zero-padding ✅
- Select unavailable Claude Code to set a custom binary path 🔧
- Enable “Create Agent” once a custom path makes agent usable ✅
- Treat custom-path agents as available during form validation 🧠
- Always select supported agents on click, even if missing 📌
- Keep expand-and-configure flow working for unavailable agents 🧩
- Transfer pending SSH remote config when switching selected agent 🔁
- Add coverage ensuring immediate selection of unavailable Claude Code 🧪
- Add coverage verifying custom path is passed through onCreate 📤