Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Added global hands-on time tracking with 5-minute idle timeout ⏱️
- Persist hands-on time to settings every 30 seconds automatically 💾
- Flushes tracked time safely on tab hide and app exit 🔒
- About modal now shows lifetime hands-on time across sessions 📊
- Reworked About modal props to stop depending on sessions directly 🧩
- Wired new tracker into main app initialization flow 🧠
- Exposed `useHandsOnTimeTracker` hook via session hooks index 🔌
- Updated Agent Settings shortcut to Opt+Cmd+, / Alt+Ctrl+, ⌨️
- Refreshed keyboard shortcuts docs with Agent Settings entry 📚
- Cleaned modal wiring so Process Monitor still receives sessions 🛠️
- Strengthened prompt validation to allow questions and engaging imperatives 🧠
- Expanded tests to verify all initial prompts meet punctuation expectations ✅
- Added clearer failure messaging for malformed prompts during test runs 🧾
- Added autoRunStats badge-aware sidebar thresholds for LIVE/OFFLINE label visibility 🧩
- Expanded SessionList tests to cover badge-present vs badge-absent behavior 🧪
- Verified labels hide below 295px when badge level is active 🏷️
- Ensured LIVE/OFFLINE text still renders at 256px without badge 🎯
- Kept radio icon visible even when status text collapses in narrow sidebar 📻
- Release workflow now deduplicates build artifacts, preventing upload race conditions 🚦
- GitHub releases upload from one consolidated `artifacts/release` directory for reliability 📦
- Docs navigation adds a “life-ring” icon to Troubleshooting for quicker discovery 🛟
- New keyboard shortcut (Shift+,) opens Agent Settings for the active session ⌨️
- Main keyboard handler wires Agent Settings shortcut into edit-agent modal flow 🧩
- Made bootstrap store use explicit userData path for reliability 🧭
- Aligned crash-reporting settings storage path with main sync settings 🛡️
- Refined LIVE/OFFLINE badge display thresholds based on AutoRun badge level 🏷️
Add test suites for the OpenSpec integration:
- openspec-manager.test.ts: Core manager tests for metadata, prompts,
save/reset, and user prompts directory priority
- ipc/handlers/openspec.test.ts: IPC handler tests for all 6 channels
- renderer/services/openspec.test.ts: Frontend service wrapper tests
Also simplify openspec.implement.md and speckit.implement.md prompts
to be more focused and actionable for Auto Run document generation.
Claude ID: d5345e10-734a-4f25-8e9a-888718d14dcb
Maestro ID: c1cf8dc6-2f28-444d-b97e-5ca4fa2b50ef
- Removed tab title tooltips for a cleaner, distraction-free TabBar UX 🧼
- Added demo-mode and dev-mode isolated data directories to avoid conflicts 🗂️
- Defaulted sync storage path to configured userData when unset 🔄
- Ensured userData path is set before Store initialization for correctness 🧭
- Improved TTS IPC reliability with utf8 writes, callbacks, and stdin checks 🗣️
- Added richer TTS debug logging in main process for easier troubleshooting 🔍
- Logged ToastContext TTS triggers and explicit skip reasons for clarity 📣
- Extended toast test coverage to include audioNotification disabled state ✅
- Fixed FilePreview search match index reset to prevent unnecessary jumps 🎯
- Added `dev:prod-data` to develop against real production sessions safely 🧪
- Dev mode now defaults to an isolated `maestro-dev` data directory 🗂️
- App can explicitly opt into production userData via `USE_PROD_DATA=1` 🔀
- Contributor docs now clearly map dev commands to their data directories 📚
- Reduced dev/production database lock conflicts when running side-by-side 🔒
- Tab hover overlay redesigned to look like a clean “open folder” panel 🗃️
- Removed tab title tooltip to streamline the tab interaction feel ✂️
- Toast logging now captures whether audio/TTS notifications were enabled 🎙️
- Toast logs include the exact audio command used for notifications 🧾
- TTS playback now reuses captured audio state for consistent behavior 🔊
Allow users to opt into receiving beta, release candidate, and alpha
updates via a new toggle in Settings → General. When enabled, the
update checker includes pre-release versions alongside stable releases.
- Add enableBetaUpdates setting with persistence
- Extend update-checker to filter/include prereleases based on flag
- Configure electron-updater allowPrerelease via new IPC handler
- Add FlaskConical icon toggle in Settings modal
- Document pre-release channel in configuration docs
- Publish any open file as a GitHub Gist, instantly sharable 🔗
- Smart Share button appears only when GH CLI is ready 🧠
- Quick Actions adds “Publish Document as GitHub Gist” command ⚡
- New high-priority Gist confirmation modal with secret-first default 🔒
- Auto-copies gist URL and shows toast with “Open Gist” action 📋
- Main process IPC now creates gists via `gh gist create` 🛠️
- Command runner now supports stdin input using spawn-based execution 🚰
- Development runs in separate userData directory to avoid lock conflicts 🧪
- Extensive test coverage added for GistPublishModal behavior and a11y 🧰
- New Mintlify docs folder plus contributor guide for docs workflow 📚
- Stop button now shows whenever Auto Run is active session-wide 🛑
- Block starting new Auto Run while another run is already active 🔒
- Run button replaced by Stop even on unlocked documents during batch 🧭
- Added `isAutoRunActive` state to drive clearer Run/Stop UI logic 🧠
- Expanded integration tests to lock in single-run-per-session behavior 🧪
- Bumped project version to 0.12.2 for this release rollout 🚀
- Added why-did-you-render to spotlight unnecessary React re-renders 🔍
- Initialized dev-only WDYR profiling with hooks and memo tracking 🧪
- Ensured WDYR loads before React for accurate render diagnostics ⏱️
- Refreshed About modal with cleaner creator + Austin side-by-side layout 🧩
- Inserted visual divider to better separate About modal sections 🧱
- Corrected About modal GitHub link targets between repo and profile 🔗
- Updated About modal tests to match the swapped GitHub link behavior ✅
- Stripped markdown from History list summaries for cleaner previews 🧹
- Add OpenSpec to docs.json navigation after speckit-commands
- Add OpenSpec Commands section to slash-commands.md
- Update features.md to mention bundled Spec-Kit and OpenSpec
- Add Spec-Kit and OpenSpec rows to CLAUDE.md Key Files table
- Update CONTRIBUTING.md with bundled AI command set guide
- Update refresh prompts section to include both spec-kit and openspec
- Fix ESLint warning (prefer-const) in openspec-manager.ts
Tasks 3-9 of Phase 3 complete. Task 2 (screenshot) requires manual UI capture.
Task 10 (manual testing) remains for human verification.
Added 5 OpenSpec commands to the Quick Actions modal (Command K palette):
- OpenSpec: Create Proposal → /openspec.proposal
- OpenSpec: Apply Changes → /openspec.apply
- OpenSpec: Archive Change → /openspec.archive
- OpenSpec: Generate Auto Run → /openspec.implement
- OpenSpec: Help → /openspec.help
Each command fetches its prompt content via getOpenSpecCommand and injects
it into the input field for editing/sending. The implementation follows
the same pattern as the slash command autocomplete integration.
Changes:
- QuickActionsModal.tsx: Added onInjectOpenSpecPrompt prop and 5 OpenSpec
command entries with async actions that fetch and inject prompts
- AppModals.tsx: Added onInjectOpenSpecPrompt to AppUtilityModalsProps,
AppModalsProps, and prop flow to QuickActionsModal
- App.tsx: Added handleInjectOpenSpecPrompt callback that injects prompt
content into input (supporting both regular and group chat contexts)
- Add openspecCommands state and load on startup via getOpenSpecCommands()
- Include OpenSpec commands in allCustomCommands for slash command execution
- Add openspecCommandsAsSlash to allSlashCommands for autocomplete dropdown
- Add openspecCommandsRef for remote command handling and queue processing
- Update remote slash command handler to check OpenSpec commands
- Update processQueuedItem to resolve OpenSpec commands
The OpenSpec slash commands (/openspec.proposal, /openspec.apply, etc.)
now work the same way as spec-kit commands - they appear in autocomplete
when typing '/' and their prompts are injected when selected.
- Created src/renderer/services/openspec.ts with 3 exported functions:
- getOpenSpecCommands() - Returns all OpenSpec commands
- getOpenSpecMetadata() - Returns metadata or null
- getOpenSpecCommand() - Returns single command by slash string
- Added OpenSpecCommand and OpenSpecMetadata interfaces to types/index.ts
- Extended MaestroAPI in global.d.ts with openspec API (6 methods)
- TypeScript lint passes successfully
Add openspec API section to preload.ts contextBridge with all 6 methods
(getMetadata, getPrompts, getCommand, savePrompt, resetPrompt, refresh)
and corresponding MaestroAPI interface types. Mirrors speckit pattern.
- Create scripts/refresh-openspec.mjs for build-time prompt updates
- Add refresh-openspec npm script to package.json
- Add extraResources for openspec prompts in all platform builds
- Update bundled prompts with latest from OpenSpec repository
Created src/prompts/openspec/ with all required prompt files mirroring
the spec-kit pattern:
- metadata.json: Initial metadata pointing to Fission-AI/OpenSpec repo
- openspec.help.md: Maestro-specific help with spec-kit comparison
- openspec.proposal.md: Stage 1 - Creating Changes workflow
- openspec.apply.md: Stage 2 - Implementing Changes workflow
- openspec.archive.md: Stage 3 - Archiving Changes workflow
- openspec.implement.md: Maestro Auto Run integration with worktree support
Each prompt was extracted/adapted from the OpenSpec AGENTS.md document
and enhanced for Maestro's Auto Run integration.
- Upgraded README screenshots to consistent HTML `<img>` tags with sizing 📸
- Improved visual polish with standardized widths across all key images 🖼️
- Refreshed Auto Run screenshots with updated, current UI captures 🔄
- Cleaned up screenshot layout spacing for smoother scanning and readability ✨
- Made screenshot accessibility better with explicit `alt` text everywhere ♿
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Revamped README with power features, screenshots, and crisp quick-start flow 🚀
- Added prominent User Docs badge linking to full documentation hub 📚
- Documented Auto Run playbooks for batch checklist execution and history tracking ✅
- Highlighted Git worktrees for parallel agents on isolated branches instantly 🌿
- Showcased Group Chat with moderator AI for coordinated multi-agent discussions 🗣️
- Introduced Remote Access docs for phone control via QR and tunnels 📱
- Documented `maestro-cli` for headless automation with JSONL scripting support 🧰
- Polished Achievement Card visuals: real GitHub logo and brighter trophies 🏆
- Improved Auto Run summaries by avoiding filename-extension sentence splitting ✍️
- Build and dev tweaks: disable npm rebuild and stop watching without HMR 🛠️
- Hardened Linux x64 builds: pre-rebuild native modules and verify node-pty 🐧
- Fixed ARM64 packaging reliability with forced rebuilds and architecture checks 🧬
- Disabled electron-builder npm rebuild on Linux to prevent wrong binaries 🧯
- Added rich tab bulk-close actions with smart, position-aware menu options 🗂️
- Introduced undoable tab close workflow, remembering up to 25 tabs 🔄
- Expanded keyboard shortcuts for tab creation, navigation, and bulk close ⌨️
- Refreshed context management docs to reflect hover-based tab menu overlay 📚
- Upgraded About/Achievements to accept leaderboard registration personalization 🏅
- Shareable achievement cards now include avatar and social handles rendering 🖼️
- Added deep synopsis debugging logs across parser, process manager, and UI 🔍