- Installed React DevTools automatically for Electron development debugging bliss 🧩
- Fixed token aggregation: MAX across models to stop double-counting 🎯
- Corrected Claude context math by excluding cumulative cache-read tokens 📉
- Context usage now reflects latest value, not high-water mark history 🧠
- Preserved lifetime stats by archiving deleted sessions instead of purging 🗄️
- Filtered SSH shell-integration junk from stdout for cleaner logs 🧼
- Hardened terminal/ANSI stripping for iTerm2, VSCode, and OSC sequences 🧹
- Prevented UI freezes: truncate huge syntax-highlight previews and warn users ⚠️
- Skipped expensive token counting for >1MB files to keep previews snappy 🚀
- Mobile web now renders AI responses as rich Markdown with copyable code blocks 📱
* MAESTRO: Add Bluesky social network support to leaderboard registration
- Add blueskyHandle field to LeaderboardRegistration interface
- Create BlueskySkyIcon component with official butterfly logo
- Add Bluesky input field to registration modal
- Update IPC handlers to accept and transmit blueskyHandle
- Support both username.bsky.social and custom domain formats
- Strip @ prefix from handles for consistency with other social fields
- Update main process to include blueskyHandle in API submission
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* MAESTRO: Add comprehensive test suite for Bluesky leaderboard integration
- Created LeaderboardRegistrationModal.test.tsx with 20 tests
- Tests cover Bluesky field rendering, @ prefix stripping, state persistence, and theme styling
- 16/20 tests passing (4 form submission tests have timing issues in test environment)
- Updated test setup to include leaderboard API mock
- All existing tests remain passing (9,893/9,898 pass)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: add blueskyHandle to MaestroAPI type and fix test setup
- Added blueskyHandle to global.d.ts MaestroAPI interface (was missing)
- Added missing leaderboard mock methods to test setup
- Fixed form submission tests to use existing registration
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Pedram Amini <pedram.amini@gmail.com>
Add system sleep prevention when AI agents are busy using Electron's
powerSaveBlocker API with reference counting for multiple concurrent sessions.
Key changes:
- Created src/main/power-manager.ts with PowerManager class
- Added power IPC handlers to system.ts
- Exposed power API in preload bridge
- Added PowerStatus type to shared types
- Added preventSleepEnabled setting to useSettings hook
- Hooked process spawn/exit to add/remove power block reasons
- Terminal sessions excluded from power blocking
Platform support:
- macOS: Full (IOPMAssertionCreateWithName)
- Windows: Full (SetThreadExecutionState)
- Linux: Varies by desktop environment
The feature is disabled by default. When enabled, prevents system
sleep while any AI session is actively processing.
GUI applications (like Electron) don't inherit shell PATH configuration,
causing 'env: node: No such file or directory' errors for users who install
Node via version managers (nvm, fnm, volta, mise, asdf, n).
This adds automatic detection of common Node version manager installations
and includes their bin paths when spawning AI agent and terminal processes.
Supported version managers:
- nvm (reads default version from ~/.nvm)
- fnm (Fast Node Manager)
- volta
- mise (formerly rtx)
- asdf
- n
The detection runs at process spawn time and only adds paths that exist
on the system. This ensures node/npm are available without requiring
users to set up wrapper scripts or launchctl environment variables.
Fixes the "Agent exited with code 127" error for nvm users.
- Bumped Maestro version to 0.13.1 for the latest improvements 🚀
- Added Document Graph IPC handlers to enable live file watching 📈
- Introduced SSH Remote IPC handlers for managing saved SSH configurations 🛰️
- Added a dedicated SSH tab in Settings for cleaner navigation 🗂️
- Updated Settings keyboard tab-cycling to include the new SSH section ⌨️
- Refined Settings UI with a new Server icon for SSH tab branding 🖥️
- Moved SSH Remote hosts configuration into its own SSH Settings panel 🔐
Install reactflow@11.11.4, @dagrejs/dagre@1.1.8, d3-force@3.0.0, and
@types/d3-force@3.0.10 for the upcoming Document Graph visualization
feature in Phase 3 of the Global Stats & Graphing implementation.
Added recharts v3.6.0 for charting components and date-fns v4.1.0 for
date formatting and manipulation. These are required for the upcoming
Usage Dashboard modal with Recharts visualizations.
- Install better-sqlite3@^12.5.0 for SQLite database support
- Add @types/better-sqlite3@^7.6.13 for TypeScript definitions
- Configure electron-rebuild to build both node-pty and better-sqlite3
- Add better-sqlite3 to asarUnpack for proper Electron packaging
- Foundation for upcoming global stats tracking system
- 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 🧹
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Share achievements as images with exclusive peak stats captured 🏆
- Track keyboard shortcut usage and level up mastery in status bar ⌨️
- Edit Auto Run docs fullscreen with expanded editor and progress footer 🖥️
- Right-click tabs for new context management menu actions 🧭
- Merge contexts via new modal, with token estimates and cleaning 🔀
- Send context to other agents with searchable modal and cleaning options 🛰️
- Export any tab conversation as self-contained themed HTML file 📄
- Added dedicated History panel with search, filters, graph view, resume 🕒
- Validate Auto Run completions in History with review workflow toggles ✅
- Support fixed remote-access ports with clear security guidance 🔒
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Added `rehype-slug` for automatic heading IDs in markdown previews 🔗
- Enabled smooth in-page anchor link navigation across markdown renderers 🧭
- Improved worktree session detection by normalizing paths, avoiding duplicates 🧹
- Broadcast session updates when working directory changes, not just state 📣
- Added “stopping” batch-session tracking and surfaced it throughout the UI 🛑
- Refined Auto Run indicators: STOPPING label, red tint, no pulse 🎛️
- Prevented repeated stop clicks with stricter disabled button behavior 🚫
- Memoized batch-derived flags to cut rerenders from new array references ⚡
- Fixed HMR stale-closure issues via ref-based batch state broadcaster 🧩
- Mermaid diagrams now fully theme-aware using app color variables 🎨
Implements the core gamification system for tracking keyboard shortcut usage:
- Add KeyboardMasteryStats interface and KeyboardMasteryLevel type to types
- Create keyboardMastery.ts constants with 5 mastery levels (Beginner to Maestro)
- Add settings persistence with recordShortcutUsage, acknowledgeKeyboardMasteryLevel
- Track all shortcut executions in useMainKeyboardHandler.ts via trackShortcut helper
- Wire up in App.tsx with pendingKeyboardMasteryLevel state and startup check
- Total of 56 trackable shortcuts (35 DEFAULT + 21 TAB_SHORTCUTS)
All 11,655 tests pass. UI components (progress bar, celebration modal) coming in next phase.
- Resolved conflicts in package.json (kept both test:performance and refresh-speckit scripts)
- Resolved conflicts in agent-detector.test.ts (kept try/finally pattern for platform restoration)
- Fixed speckit-manager.ts to read prompts from disk instead of using Vite's ?raw imports
- Removed unused extractDescription function and added proper types for GitHub API response
- Add ESLint 9 configuration (eslint.config.mjs) with TypeScript and React hooks plugins
- Add npm run lint:eslint command for code quality checks
- Expand npm run lint to check all three TypeScript configs (renderer, main, cli)
- Update tsconfig.cli.json to include src/prompts and src/types directories
Fix 29 ESLint errors:
- Remove unused updateCliActivity import in batch-processor.ts
- Convert {false && <jsx>} patterns to comments in AutoRun components
- Wrap case block with const declarations in braces (AgentSelectionScreen)
- Fix unused expression pattern in PreparingPlanScreen
- Fix conditional hook calls in FilePreview, OfflineQueueBanner, RecentCommandChips, TerminalOutput
- Add windows-diagnostics.json to PackageContents interface
Update CLAUDE.md and CONTRIBUTING.md with new linting commands and documentation.
Claude ID: 029e8abe-5734-4967-9fb4-c85078c1973d
Maestro ID: 87ffa06e-0ecd-4eb8-b327-dad1ec24f7a9
- Add accentForeground to web ThemeProvider defaults and CSS custom properties
- Fix invalid theme property references (yellow→warning, bgHover→accentDim, info→accentText)
- Convert ringColor to --tw-ring-color CSS custom property across components
- Add LayerInput type for proper discriminated union support
- Fix all modal registerLayer calls to include required blocksLowerLayers, capturesFocus, focusTrap
- Update tests to expect 14 CSS properties (added accentForeground)
Files changed:
- 14 component files with Layer type fixes
- 4 files with ringColor conversion
- 2 web files with accentForeground
- 1 type file with LayerInput type
- 1 hook file with proper typing
- 5 test files updated
Found expired OAuth token, attempting refresh...
Token refresh successful
POST "https://api.anthropic.com/v1/messages": 429 Too Many Requests {"type":"error","error":{"type":"rate_limit_error","message":"This request would exceed your account's rate limit. Please try again later."},"request_id":"req_011CWH1uG2HcPbZAxcTH9eWX"}
- Added chokidar for cross-platform file watching support 🔧
- Upgraded file watcher from native fs to chokidar library 📁
- Enhanced participant color generation with round-based variations 🎨
- Reserved blue color (index 0) exclusively for Moderator role 💙
- Added color palette size constant for better color management 🎯
- Improved color variation logic for overflow participant counts 🌈
- Fixed file watching to handle add/unlink events properly 👁️
- Removed platform-specific file watching limitations for better compatibility 🌍
- Enhanced color assignment to prevent non-moderators using blue 🛡️
- Bumped version from 0.9.1 to 0.10.0 for new features 🚀
- 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 🚀
Could you please share the changelog, commit history, pull request information, or any other details about what has changed in your project since the last release? This could include:
- Git commit messages
- Pull request descriptions
- Release notes
- Feature additions
- Bug fixes
- Performance improvements
- Breaking changes
- Dependency updates
Once you provide this information, I'll create an exciting CHANGES section with clean, 10-word bullets and relevant emojis as requested!
Please share the changelog, commit history, release notes, or any other information about what has changed in the GitHub project since the last release, and I'll create a clean, exciting CHANGES section with 10-word bullets and emojis as requested.
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Upgraded to version 0.8.1 with performance boost! 🚀
- Added @tanstack/react-virtual for blazing fast file trees 🌳
- Implemented virtualized rendering for massive file lists ⚡
- Added show/hide dotfiles toggle with eye icon 👁️
- Enhanced date display showing full dates for older logs 📅
- Optimized file tree with flattened structure for speed 🏎️
- Added depth-based indent guides for better hierarchy 📏
- Improved memory usage with virtualized row rendering 💾
- Added showHiddenFiles setting that persists between sessions 💾
- Fixed performance issues when browsing large directories 🎯
- Add ghPath setting to specify custom path to gh binary (e.g., /opt/homebrew/bin/gh)
- Update git:checkGhCli and git:createPR IPC handlers to accept optional ghPath
- Add UI in Settings > General for configuring the gh path
- Pass ghPath through BatchRunnerModal and useBatchProcessor for PR creation
- Include test infrastructure setup (vitest) and misc updates
Claude ID: 295a322c-974c-4b49-b31d-f7be18819332
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
Migrate from @yao-pkg/pkg (standalone binaries) to esbuild (bundled JS).
This removes ~46 packages from the dependency tree and produces a 174KB
bundle instead of ~50MB per-platform binaries.
Users of the CLI already have Node.js installed (required for Claude Code),
so standalone binaries are unnecessary overhead.
Changes:
- Remove @yao-pkg/pkg, add esbuild
- Add scripts/build-cli.mjs for esbuild bundling
- Update package.json build scripts and extraResources config
- Update README with new installation instructions
- Include batch-processor improvements from linter
Session: 472b48d8-4774-4955-8c98-2c5b6294beb5
CLI Tool (maestro-playbook):
- New standalone binary for running playbooks from command line
- Supports list groups, list agents, list playbooks, run playbook
- JSONL output format for easy parsing and piping
- Dry-run mode and no-history options
- Documentation added to README.md
Process Monitor Enhancements:
- Show only running processes (hide idle/inactive)
- Display human-readable runtime (e.g., "2m 30s", "1h 5m")
- Show Claude session ID with click-to-navigate
- Improved column layout with less spacing
- Default to expanded view
- Visual feedback on refresh (500ms spinner)
- Kill process functionality with confirmation
Process Tracking:
- Added startTime to ManagedProcess interface
- Expose startTime via getActiveProcesses IPC
Claude ID: c7e537b9-c2a7-4cc7-b49b-e7ea0ca1d4cb
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
- Add "Made with Maestro" SVG badge to README
- Update app icons with darker purple color scheme (#2d1f4e)
- Add canvas dev dependency for icon generation
- Fix AchievementCard badge visibility with consistent dark bg
- Move code block copy button to bottom-right for better UX
- Add vertical margin to pre blocks for better spacing
- Improve batch synopsis prompt to be more concise
Claude ID: 97a10f0d-145d-4352-babd-6d9caed0f9dc
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
- Replace custom CSS confetti with canvas-confetti library for massive
Raycast-style explosions (850+ initial particles with continuous bursts)
- Add circular progress ring around Maestro icon showing 11 badge segments
- Add share button to AchievementCard with copy-to-clipboard and download
- Fire confetti immediately on Standing Ovation mount and on dismiss
- Fix infinite loop error in PlaygroundPanel layer registration
- Fix badge tooltip positioning and click-to-toggle behavior
- Improve empty badge cell visibility with dashed borders
Claude ID: 97a10f0d-145d-4352-babd-6d9caed0f9dc
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
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)
Redesign the web server architecture for simplified mobile remote control:
- Replace per-session web servers with single server using random port and
auto-generated security token for secure access
- Add "Live Session" toggle to enable/disable individual sessions for remote access
- Add QR code component for easy mobile connection scanning
- Remove tunnel settings and complex authentication management
- Add network utilities for IP address detection
Mobile web interface improvements:
- Device color scheme preference support (light/dark mode)
- Connection status indicator with automatic reconnection
- Offline queue for commands typed while disconnected
- Swipe gestures for common actions
- Quick actions menu for the send button
Update documentation to reflect new mobile-first remote access approach.
Claude ID: 3dd3573f-bed1-4a0e-984c-10081124092a
Maestro ID: 5a166b38-b7e9-47f0-a8ff-0113c65f2682
- Install @fastify/static for serving static files
- Add resolveWebAssetsPath method to find web assets in dist/web
- Register @fastify/static plugin to serve assets at /web/assets/
- Add serveIndexHtml helper that transforms asset paths for SPA
- Update /web/desktop and /web/mobile routes to serve index.html
- Transform relative ./assets/ paths to /web/assets/ for proper routing
- Install @fastify/rate-limit package
- Configure rate limiting with sensible defaults:
- 100 requests/minute for GET endpoints
- 30 requests/minute for POST endpoints (more restrictive)
- Add RateLimitConfig interface for configuration
- Apply rate limiting to all /web/* routes
- Add /web/api/rate-limit endpoint to check current limits
- Skip rate limiting for /health endpoint
- Custom error response with retry-after information
- Support for X-Forwarded-For header for proxied requests