- 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 📦
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 🧪
- 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 🌀
- Centralized Node version-manager bin detection into shared `pathUtils` module 🔧
- Improved nvm/fnm bin discovery with newest-version ordering and deduping 🚀
- Updated process PATH building to use the shared bin-path detector 🧭
- Refactored AgentDetector to reuse shared node-manager bin detection 🧩
- Renamed exported API to `detectNodeVersionManagerBinPaths` and updated tests 🧪
- Added brand-new “Session Statistics” panel to the Agents dashboard tab 📊
- Enhanced Agent Comparison chart to show count and duration together 🧮
- Sorted Agent Comparison bars by duration with clearer percentage semantics 📈
- Fixed Activity Heatmap tooltip overflow by smart viewport-aware positioning 🪟
- Polished heatmap spacing/label alignment for cleaner readability 🎯
Removes 4 duplicate implementations of tilde expansion (~/) and
consolidates them into a single shared function in pathUtils.ts.
Changes:
- Add optional homeDir param to expandTilde for dependency injection
- Refactor agent-detector.ts to use shared expandTilde
- Refactor ssh-command-builder.ts to use shared expandTilde
- Refactor ssh-config-parser.ts to use shared expandTilde
- Refactor ssh-remote-manager.ts to use shared expandTilde
- Update ssh-command-builder tests to mock os.homedir()
Net reduction: 38 lines of code.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Fixes#99 and #102 - Custom agent paths set in the wizard were not
being synced to the agent detector before refreshing detection,
causing the UI to show "not found" even with valid paths.
Changes:
- Sync custom path to agent detector via setCustomPath before refresh
- Add ~/.opencode/bin to probed Unix paths for OpenCode auto-detection
- Added automatic Windows file logging to persistent debug log path 📝
- Exposed IPC APIs to get log path and toggle file logging 🔌
- Enhanced Windows agent detection logs with paths, extensions, shell hints 🧭
- Promoted spawn-config logging to INFO on Windows for visibility 🔎
- Added prompt previews on Windows to diagnose truncation and formatting 🧩
- Logged command extension and argument counts instead of dumping full args 📊
- Improved Windows shell-escaping diagnostics, highlighting modified arguments 🛡️
- Included full command preview before spawning to simplify reproduction 🧾
Renamed 11 unused catch block error variables (error/err/e) to use underscore
prefix (_error/_err/_e) to satisfy ESLint no-unused-vars rule while preserving
the catch clause structure.
Fixes#67 - Claude Code not detected when installed via default macOS installer.
Two issues were causing agent detection failures:
1. Tilde (~) in custom paths wasn't being expanded before filesystem checks.
Users entering ~/.local/bin/claude as a custom path would fail because
Node.js fs functions don't understand shell tilde expansion.
2. macOS lacked direct path probing for common installation locations.
Unlike Windows which had probeWindowsPaths(), macOS relied solely on
'which' which doesn't find binaries outside PATH or shell aliases.
Changes:
- Add expandTilde() helper to convert ~ to os.homedir()
- Apply tilde expansion in checkCustomPath() before all fs operations
- Add probeUnixPaths() method to directly check known installation paths:
- ~/.claude/local/claude (default Claude installer location)
- ~/.local/bin/claude
- /opt/homebrew/bin/claude (Homebrew Apple Silicon)
- /usr/local/bin/claude (Homebrew Intel)
- And equivalent paths for codex, opencode, gemini, aider
- Integrate probeUnixPaths() into checkBinaryExists() as first-pass detection
- Terminal agent now defaults to PowerShell on Windows, bash elsewhere! 🚀
- PATH expansion is now platform-aware, including rich Windows install locations! 🎯
- PATH parsing now uses `path.delimiter`, fixing Windows semicolon separation! 🛠️
- Terminal PTY sessions set Windows-friendly HOME, USER, and SHELL values! ⚡
- Base terminal PATH now includes Windows System32 and Git commands reliably! 🧩
- Command runner defaults to platform-appropriate shell, boosting cross-platform usability! 🌍
- `runCommand` adds Windows-specific environment variables for better subprocess behavior! 🔧
- Shell detection now lists Windows shells: PowerShell, pwsh, cmd, WSL! 🔎
- Windows shell detection maps IDs to `.exe` binaries before `where` lookup! 🧠
- Cloudflared CLI detection now searches Windows paths like Scoop/Chocolatey/npm! 🛰️
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Updated context window documentation for GPT-5.2 model (200K tokens) 🚀
- Fixed callback declaration order to prevent state reference issues 🔧
- Replaced async useEffect with synchronous state broadcasting for mobile 📱
- Added sessionId to Auto Run synopsis for better history tracking 📊
- Introduced updateBatchStateAndBroadcast wrapper for immediate updates ⚡
- Enhanced mobile client state synchronization without render delays 🏃
- Fixed React Strict Mode compatibility for state updates 🛡️
- Improved real-time batch processing state propagation 🔄
- Removed dependency on React's render cycle for broadcasts 🎯
- Ensured immediate state updates reach web interface clients 🌐
- Added Sentry crash reporting for error tracking and debugging 🐛
- Implemented opt-out privacy setting for anonymous crash reports 🔒
- Enhanced agent spawning with generic config options for session continuity 🔧
- Fixed tab creation null safety checks across the codebase 🛡️
- Added Edit Agent action to Quick Actions modal for faster access ⚡
- Enabled bookmark toggle directly from Quick Actions menu 📌
- Improved batch processing to run in read-only mode by default 📝
- Cleaned up queued items display by removing redundant tab indicators 🧹
- Strengthened null checks in tab helper functions for stability 💪
- Updated version to 0.9.1 with comprehensive bug fixes and improvements 🚀
- Added user-configurable context window settings for agents 🎯
- Improved error detection to only parse JSON events, not text 🛡️
- Fixed stderr routing for AI processes to correct tabs 🔧
- Added context window support for Codex with model detection 🧮
- Hide context usage widget when window size is zero 👻
- Added number input type for agent configuration options 🔢
- Strip ANSI codes from stderr for cleaner output 🧹
- Added hint for enabling loop mode with documents 💡
- Display correct provider name in input placeholder text ✏️
- Improved network error patterns to reduce false positives 🎯
- Added support for **OpenAI Codex** and **OpenCode** agents! 🚀
- Multiple AI coding agents now available beyond Claude Code 🤖
- Custom CLI arguments can be configured per agent type ⚙️
- Resume sessions with agent-specific session ID arguments 🔄
- Fixed race conditions in AutoRun content synchronization 🔧
- Improved performance for long content handling in tests ⚡
- Added canceled log entries when interrupting AI sessions 📝
- Enhanced queued items filtering by active tab context 🎯
- Multi-provider synopsis generation for batch processing tasks 📊
- Updated agent detection to support extensible tool types 🛠️
Found expired OAuth token, attempting refresh...
Token refresh successful
I'm ready to analyze your GitHub project changes and create an exciting update summary! However, I don't see any input provided after "INPUT:" in your message.
Please share the changelog, commit history, pull request descriptions, or any other information about what has changed in your GitHub project since the last release. This could include:
- Git commit logs
- Pull request summaries
- Release notes draft
- Feature descriptions
- Bug fixes
- Any other relevant changes
Once you provide the input, I'll create a clean, exciting CHANGES section with 10-word bullets and relevant emojis as requested! 🚀
Add YOLO mode (--dangerously-bypass-approvals-and-sandbox) to Codex base
args, making it behave consistently with Claude Code. Maestro requires
YOLO mode for non-interactive automation.
Changes:
- Add YOLO flag to Codex base args in agent-detector.ts
- Update YOLO flag filtering to include Codex flag when read-only mode active
- Add codex to batch mode agents list in useInputProcessing.ts
- Update App.tsx flag filtering (2 locations) for read-only compatibility
When read-only mode is enabled, the YOLO flag is filtered out and replaced
with --sandbox read-only, preserving the read-only toggle functionality.
Wire Codex CLI into the process spawning and output handling system:
- Add yoloMode support to ProcessConfig interface and process handler
- Implement YOLO mode argument builder (--dangerously-bypass-approvals-and-sandbox)
- Implement working directory argument builder (-C dir)
- Process handler now supports: batchModePrefix, jsonOutputArgs, resumeArgs,
readOnlyArgs, yoloModeArgs, workingDirArgs
- Output parser already wired through getOutputParser(toolType)
- Reasoning tokens already handled in CodexOutputParser.extractUsageFromRaw()
All 10,985 tests pass.
Add model discovery functionality to AgentDetector:
- Added discoverModels(agentId, forceRefresh?) method to discover available models
- Added clearModelCache(agentId?) method to clear cached model results
- Implements 5-minute cache TTL to avoid repeated CLI calls
- OpenCode: runs 'opencode models' and parses one model per line output
- Added IPC handler 'agents:getModels' for renderer access
- Updated preload.ts with window.maestro.agents.getModels() API
- Added comprehensive unit tests (13 new tests covering discovery, caching, cache clearing, error handling)
Add model selection capability and configuration UI for OpenCode agent:
- Add supportsModelSelection to AgentCapabilities interface
- Set supportsModelSelection: true for OpenCode, false for others
- Add model config option to OpenCode with text input and argBuilder
- Update AgentSelectionPanel to render text type config options
- Add unit tests for model config option argBuilder
This enables users to configure which model OpenCode uses (e.g.,
'ollama/qwen3:8b', 'anthropic/claude-sonnet-4-20250514') through the
Settings panel. When left empty, OpenCode uses its default model.
Extended AgentConfig interface with new fields for dynamic CLI construction:
- batchModePrefix: Args added before base args for batch mode (e.g., ['run'])
- jsonOutputArgs: Args for JSON output format (e.g., ['--format', 'json'])
- resumeArgs: Function to build resume args (e.g., ['--session', sessionId])
- readOnlyArgs: Args for read-only/plan mode (e.g., ['--agent', 'plan'])
Updated OpenCode entry in AGENT_DEFINITIONS with all argument builders.
Updated OpenCode capabilities based on verified investigation:
- supportsImageInput: true (documented -f, --file flag)
- supportsSessionStorage: true (~/.local/share/opencode/storage/)
- supportsCostTracking: true (part.cost in events)
Found expired OAuth token, attempting refresh...
Token refresh successful
I'd be happy to help you create a clean update summary for a GitHub project! However, I don't see any input provided after "INPUT:" in your message.
Could you please share the changelog, commit history, or release notes that you'd like me to summarize? Once you provide that information, I'll create an exciting CHANGES section with 10-word bullets and relevant emojis as requested.
Could you please share:
- The commit history, pull requests, or changelog since the last release
- Any release notes or development updates
- Or any other information about what has changed in your project
Once you provide that information, I'll create an exciting CHANGES section with clean 10-word bullets and relevant emojis, formatted in Markdown with HTML links as requested.
Title Bar:
- Add centered context text showing Group | Agent | Session info
- Text remains draggable and non-selectable
Standing Ovation Achievements:
- Replace white glow background with confetti burst animation
- Confetti shoots from center and animates behind the modal
- Logarithmic scale for time sliders in Developer Playground
- Better control over badge level testing across the full range
UI/UX Improvements:
- Markdown list rendering: proper spacing, indentation, inline paragraphs
- Process Monitor: fix text truncation with flex layout
- LogViewer: persist selected filter levels across sessions
- Tab completion: prevent focus change on empty input in terminal mode
- SessionList: fix useEffect dependency causing unnecessary re-renders
- NewInstanceModal: hide internal 'terminal' agent from selection UI
Bug Fixes:
- Session persistence: properly filter non-persistable tab fields
- Agent detector: add hidden flag for internal-only agents
Switch Claude Code from --output-format json to stream-json mode so that
the session_id is captured early in the response stream rather than only
at process exit. This ensures that when a user interrupts an AI command,
the next command can still --resume the same Claude session, preserving
all context including the interrupted partial response.
Changes:
- Updated agent-detector.ts to use stream-json output format with --verbose
- Updated process-manager.ts to detect stream-json mode from args
- Simplified image handling since base args now include stream-json output
Major architectural improvement to ensure web interface operations go through
the same code paths as desktop, eliminating duplicate logic and race conditions.
Key changes:
- Fix AgentDetector running 20+ times at startup via promise deduplication
- Web commands now forward to renderer's processInput instead of spawning directly
- Mode switching forwards to desktop instead of just acknowledging requests
- Interrupt forwards to desktop to properly update session state to idle
- Add IPC channels: remote:executeCommand, remote:switchMode, remote:interrupt
- Add mobile MessageHistory component for viewing session AI/shell logs
Architecture now ensures single source of truth:
Web → IPC → Renderer (same code path as desktop)
- Change Claude Code output format from text to json for structured parsing
- Add -- separator to ensure prompts are treated as positional args
- Fix batch mode detection to include both 'claude' and 'claude-code' tools
- Add debug logging for spawn and stdout data to aid troubleshooting
- Add "establishing session" message for first Claude interactions
- Fix input capture timing by capturing value before clearing state
These changes improve reliability when spawning Claude in batch mode
and prevent issues where prompts starting with -- could be misinterpreted
as command flags.
- Add requiresPty field to AgentConfig interface
- Update ProcessManager to spawn AI agents with PTY when needed
- Configure Claude Code with --print and --output-format text flags
- Maintain backward compatibility with non-PTY agents
This enhancement allows AI agents like Claude Code to run with
pseudo-terminal support for proper TTY handling, while preserving
the existing dual-process architecture for terminal sessions.