Commit Graph

29 Commits

Author SHA1 Message Date
Pedram Amini
ee54e4ff49 tests pass 2025-12-22 19:37:09 -06:00
Pedram Amini
427840c7f3 ## CHANGES
- Upgraded group chat exports to true GitHub-flavored Markdown rendering! 🚀
- Added `marked` dependency and configured GFM plus line-break handling! 
- Exported messages now support tables, blockquotes, rules, and strikethrough! 🔥
- Code formatting improved: inline code and fenced blocks render correctly! 🧠
- Image embedding revamped: replaces references with base64 before parsing! 🖼️
- New branded export header with Maestro icon, tagline, and links! 🎉
- Export title now reads “Maestro Group Chat Export” for clarity! 🏷️
- Footer attribution updated to <a href="https://runmaestro.ai" target="_blank">runmaestro.ai</a> for consistency! 🌐
- Markdown styling massively enhanced: headings, lists, tables, and code look great! 🎨
- AutoRunLightbox tests updated for portal backdrop and higher z-index! 
2025-12-21 20:32:10 -06:00
Pedram Amini
df472e36d5 MAESTRO: fix theme and layer type consistency
- 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
2025-12-21 11:11:19 -06:00
Pedram Amini
ca836be798 OAuth enabled but no valid token found. Starting authentication...
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"}
2025-12-19 18:46:33 -06:00
Pedram Amini
31ce2bda71 # CHANGES
- 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 🚀
2025-12-19 15:18:31 -06:00
Pedram Amini
416f373f63 ## CHANGES
- 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 🚀
2025-12-17 23:22:02 -06:00
Pedram Amini
7e412482a7 I'd be happy to help you create a clean update summary for your GitHub project! However, I don't see any input provided after "INPUT:" in your message.
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!
2025-12-15 23:56:58 -06:00
Pedram Amini
2685db7e6b I'm ready to analyze 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, 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.
2025-12-15 23:20:11 -06:00
Pedram Amini
71c2d0dafe MAESTRO: add E2E test infrastructure and Auto Run setup wizard E2E test (Task 6.1)
- Install Playwright dependencies (@playwright/test, electron-playwright-helpers)
- Create playwright.config.ts for Electron E2E testing
- Add e2e/fixtures/electron-app.ts with Electron launch fixtures and helpers
- Create e2e/autorun-setup.spec.ts with 24 tests (13 active, 11 skipped pending dialog mocking):
  - Wizard Launch: keyboard shortcut, agent selection screen, Escape to close
  - Agent Selection Screen: Claude Code display, other agents, project name, keyboard navigation
  - Directory Selection Screen: (skipped - requires dialog mocking)
  - Document Creation Flow: (skipped - requires full wizard flow)
  - Wizard Navigation: step indicators, button states, Back navigation
  - Exit Confirmation: (skipped - requires dialog mocking)
  - Accessibility: keyboard-only navigation, focus management
- Add npm scripts: test:e2e, test:e2e:ui, test:e2e:headed
- Update .gitignore with e2e-results/, playwright-report/, test-results/
2025-12-14 05:01:19 -06:00
Pedram Amini
56ffd81b87 fix: Update RightPanel test assertions for task progress format
Changed format from "X / Y total tasks completed" to "X of Y tasks completed"
to match updated component text.
2025-12-13 22:18:32 -06:00
Pedram Amini
2dd52a9f7b OAuth enabled but no valid token found. Starting authentication...
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 🎯
2025-12-13 14:37:30 -06:00
Pedram Amini
b8d557e7c2 Apple signed binaries 2025-12-12 18:27:06 -06:00
Pedram Amini
ac67385047 feat: add custom GitHub CLI path setting for Auto Run worktree features
- 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
2025-12-07 13:13:44 -06:00
Pedram Amini
d2534e89d6 refactor(cli): Replace pkg with esbuild for smaller builds
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
2025-12-06 02:50:03 -06:00
Pedram Amini
42fbf067ad feat: Add CLI tool and Process Monitor improvements
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
2025-12-06 02:50:02 -06:00
Pedram Amini
059f16a9e8 # CHANGES
• Added ZIP export/import functionality for playbooks sharing 🎁
• Implemented per-tab token accumulation for accurate context tracking 📊
• Added loop summary history entries with detailed metrics 🔄
• Fixed markdown paragraph rendering in nested list items 📝
• Added export/import buttons to playbook management UI 💾
• Enhanced batch processor with per-loop token tracking 📈
• Added human-readable duration formatting for loop summaries ⏱️
• Improved debug logging for document reset-on-completion flow 🐛
• Added "Save as New" option for modified playbooks 💫
• Fixed context window percentage calculation using accumulated tokens 🎯
2025-12-04 07:02:56 -06:00
Pedram Amini
aaf315adf6 feat: Update app branding with darker icons and README badge
- 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
2025-12-02 17:02:29 -06:00
Pedram Amini
e14ec426a0 feat: Enhance achievement system with canvas-confetti and share functionality
- 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
2025-12-02 11:59:00 -06:00
Pedram Amini
6574ab9fd8 feat: Token counts in file preview, unread-aware tab nav, and mobile improvements
- Add js-tiktoken for token counting in FilePreview stats bar
- Shell spawning now uses -l -i flags for proper login+interactive environment
- Tab navigation shortcuts (Cmd+[/]/1-9) now respect unread filter state
- TabBar scroll area properly separates filter button from scrollable tabs
- Alt+Meta shortcuts fixed on macOS (e.g., Alt+Meta+t for Tab Switcher)
- Tab Switcher added to Quick Actions modal
- Mobile app: improved WebSocket reconnection, status badges, message handling

Claude ID: 472a496d-f767-49dc-8074-a08d20d2b550
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-01 23:00:37 -06:00
Pedram Amini
0ecec1cc75 refactor: Web interface as true remote control with code deduplication
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)
2025-11-28 00:53:01 -06:00
Pedram Amini
bbf6612f35 feat: Mobile-first remote access with QR codes and live sessions
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
2025-11-27 21:42:03 -06:00
Pedram Amini
304544eeef MAESTRO: Serve built web assets from Fastify static handler
- 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
2025-11-27 03:37:05 -06:00
Pedram Amini
138ba5aeb4 MAESTRO: Add rate limiting for web interface endpoints
- 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
2025-11-27 02:55:51 -06:00
Pedram Amini
35cce4d88a MAESTRO: Add Mermaid diagram rendering to Markdown viewers
Integrated the mermaid package to render diagrams in fenced code blocks
marked as `mermaid`. Both FilePreview and Scratchpad components now
support Mermaid diagrams with proper theme detection and DOMPurify
sanitization for security.
2025-11-26 15:58:28 -06:00
Pedram Amini
874df58133 feat: virtualize terminal output and improve shell command handling
- Add react-virtuoso for virtualized log scrolling in TerminalOutput
- Fix shell spawning by removing -i flag to avoid zle/readline errors
- Filter iTerm2/VSCode shell integration sequences from output
- Simplify runCommand session ID handling (no -terminal suffix)
- Add delete command functionality for shell command history
- Enhance FilePreview search with match navigation and count display
- Narrow GitStatusWidget tooltip for better UX
- Memoize LogItem component for render performance
2025-11-25 14:13:36 -06:00
Pedram Amini
6b1f885f1e feat: add advanced git diff viewer with file tabs and syntax highlighting
- Add GitDiffViewer component with tabbed interface for multi-file diffs
- Integrate react-diff-view for proper diff parsing and rendering
- Add keyboard shortcuts: Cmd+Shift+D to open diff, Cmd+Shift+[/] to navigate tabs
- Display addition/deletion statistics per file and overall
- Theme-aware diff colors with proper syntax highlighting
- Parse git diff output into separate file sections with gitDiffParser utility
- Update default shortcuts: Cmd+B → Opt+Cmd+← for sidebar, Cmd+\ → Opt+Cmd+→ for right panel
- Add hover tooltips showing file changes and diff stats in GitStatusWidget
- Improve modal z-index to ensure diff viewer appears above other elements

Dependencies:
- diff@8.0.2 - Core diff parsing and manipulation
- react-diff-view@3.3.2 - React components for rendering diffs
2025-11-24 15:47:15 -06:00
Pedram Amini
4d90f8650e feat: implement dual-process architecture with ANSI terminal rendering
Major architectural improvement where each session now runs two processes
simultaneously (AI agent + terminal), enabling seamless mode switching
without process restarts.

Changes:
- Dual-process model: each session spawns both AI agent and terminal processes
- Session type updated: replaced single `pid` with `aiPid` and `terminalPid`
- Process routing: sessionIds now use `-ai` and `-terminal` suffixes
- Input routing: directs input to correct process based on `inputMode`
- ANSI rendering: terminal output now displays ANSI escape codes with theme-aware colors
- Terminal filtering: bash prompts automatically filtered for cleaner output
- Session restoration: detects and fixes corrupted sessions with mismatched inputMode/toolType
- Agent serialization: strips non-serializable `argBuilder` functions before IPC
- Dependencies: added ansi-to-html and dompurify for secure ANSI rendering

Documentation updates:
- Updated README.md and CLAUDE.md to reflect dual-process architecture
- Added new features to Recent Features section
- Updated tech stack with new dependencies
2025-11-24 01:50:23 -06:00
Pedram Amini
bb3d47617c cleanups and minor fixes 2025-11-23 21:44:14 -06:00
Pedram Amini
ca85ff7c48 UX prototype complete 2025-11-23 19:00:08 -06:00