Commit Graph

36 Commits

Author SHA1 Message Date
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
7404db6953 ## CHANGES
- Version bump from 0.8.2 to 0.8.3 released 🚀
- Read-only mode now disabled during AutoRun execution 🔒
- Added locked tooltip explaining read-only restrictions during AutoRun 💬
- Read-only toggle shows warning styling when AutoRun active ⚠️
- Fixed layout alignment for session stats display area 📐
- Added comprehensive tests for AutoRun read-only interactions 🧪
- Improved user feedback for mode restrictions during automation 💡
- Enhanced UI consistency with minimum width constraints applied 📏
- Better visual indicators for locked functionality states added 🎨
- Test coverage expanded for new AutoRun safety features 
2025-12-14 02:02:36 -06:00
Pedram Amini
3f8417e933 version bump 2025-12-14 01:15:07 -06:00
Pedram Amini
78da485b5b ## CHANGES
- Removed PWA icon generation scripts for cleaner codebase 🧹
- Deleted Maestro icon generator script with conductor silhouette 🎭
- Removed GitHub community analytics scripts for stargazers/forkers 📊
- Added keyboard shortcuts support to tour overlay component ⌨️
- Enhanced quick actions modal with shortcut key display 🚀
- Added dynamic shortcut placeholder replacement in tour steps 🔄
- Improved tour descriptions with keyboard shortcut references 💡
- Added helper function for formatting shortcuts in tour text 
- Cleaned up package.json by removing unused script commands 📦
- Streamlined build process by removing icon generation dependencies 🏗️
2025-12-13 23:39:58 -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
ca34d3f4ad version bump 2025-12-12 00:47:02 -06:00
Pedram Amini
e251a16433 version bump 2025-12-11 19:08:26 -06:00
Pedram Amini
ade482a8ae OAuth enabled but no valid token found. Starting authentication...
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES

- Added theme screenshots documentation link to README 🎨
- Fixed search shortcut from `/` to `Cmd+F` everywhere ⌨️
- Improved auto-run folder change button label clarity 📁
- Enhanced git commit count display showing X of TOTAL 📊
- Added parallel fetching for git log and commit count 
- Fixed branch mismatch check for non-git directories 🐛
- Improved search match scrolling in edit mode accuracy 📍
- Added onMatchesRendered callback for preview search scrolling 🔍
- Updated all keyboard shortcut documentation to Cmd+F 📚
- Bumped version from 0.7.0 to 0.7.3 🚀
2025-12-10 01:01:31 -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
1cd8c1447e refactor: simplify history types, add custom agent paths, fix context calculation
- Remove LOOP history entry type, consolidate to AUTO and USER only
- Add custom agent path support in NewInstanceModal for non-PATH installations
- Fix context usage calculation to count only input-related tokens (input + cache)
- Add demo mode (npm run dev:demo) for isolated testing environment
- Remove unused tab context menu from TabBar component
- Fix badge acknowledgment variable reference in useSettings

Claude ID: dbbd387e-ae3c-49a6-9961-d8317774f0a4
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-07 12:11:03 -06:00
Pedram Amini
787740620b 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, or description of what has changed in your project since the last release? This could include:

- Git commit messages
- Pull request descriptions
- A changelog file
- A summary of new features, bug fixes, and improvements
- Any other relevant information about the changes

Once you provide this information, I'll create an exciting CHANGES section with clean, 10-word bullets and relevant emojis for each update! 🚀
2025-12-06 02:50:03 -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
6fc1455c53 refactor: Cross-platform build scripts and session format cleanup
- Add scripts/set-version.mjs for cross-platform VITE_APP_VERSION setting
  (replaces bash-specific env var syntax that failed on Windows)
- Extract magic numbers into CLAUDE_SESSION_PARSE_LIMITS and CLAUDE_PRICING
  constants for better maintainability
- Remove legacy session format migration code - sessions now require aiTabs
- Fix session ID regex patterns to properly parse -ai-{tabId} format
- Remove deprecated aiLogs fallbacks - logs are exclusively in aiTabs now

Claude ID: bfd92ffb-a375-47be-94c5-fe4186325092
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-01 07:24:13 -06:00
Pedram Amini
94cb3b0663 MAESTRO: Add LOCAL git hash version to local package builds
Modified package.json to set VITE_APP_VERSION="LOCAL <8-char-git-hash>"
for all local packaging commands (package, package:mac, package:win,
package:linux). This makes it easy to identify local builds in the
About modal by showing version like "LOCAL 53452967" instead of the
package.json version.
2025-11-30 03:21:55 -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
f6226a748a MAESTRO: Add PWA manifest for Add to Home Screen support
- Create manifest.json with app metadata, icons, and shortcuts
- Add PWA icon generation script (scripts/generate-pwa-icons.mjs)
- Configure Vite public directory for static PWA assets
- Add apple-touch-icon links for iOS home screen
- Add favicon links for browser tabs
- Include npm script for regenerating PWA icons
2025-11-27 03:49:42 -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
1ad7daf435 MAESTRO: Integrate web build into main build process
- Add build:web step to main build script chain
- Add dev:web script for standalone web development server
- Web assets now built automatically during npm run build
- Packaged app will include dist/web/* via existing files glob
2025-11-27 03:34:39 -06:00
Pedram Amini
a22c2b20bf MAESTRO: Add npm run build:web script for web interface bundling 2025-11-27 03:33: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
0835672ce0 feat: Add session naming with search and improve macOS code signing
- Add user-defined session names stored with Claude session origins
- Display session names in AgentSessionsBrowser with tag icon
- Add "Named only" filter to quickly find named sessions
- Include session names in search across title and content modes
- Sync session names when renaming sessions in the sidebar
- Fix macOS code signing with ad-hoc signatures in release workflow
- Fix electron-builder CLI syntax (--config.extraMetadata)
- Improve lightbox navigation with context-aware image arrays
- Fix GitLogViewer search input focus handling
- Improve AI command prompt display with multi-line clamp

Claude ID: 24a6cdd6-27a7-41e0-af30-679cc2ffe66b
Maestro ID: 5a166b38-b7e9-47f0-a8ff-0113c65f2682
2025-11-27 01:59:49 -06:00
Pedram Amini
94c9bc90a4 fix: Resolve macOS and Linux build failures in release workflow
- Use Python 3.11 for macOS builds (Python 3.12+ removed distutils module needed by node-gyp)
- Add author email to package.json (required for Linux .deb package maintainer field)
2025-11-26 22:38:52 -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