Commit Graph

784 Commits

Author SHA1 Message Date
Pedram Amini
b8d557e7c2 Apple signed binaries 2025-12-12 18:27:06 -06:00
Pedram Amini
db2fc1a7ca Merge pull request #23 from pedramamini/leaderboard
Leaderboard Integration with RunMaestro.ai
2025-12-12 15:47:38 -06:00
Pedram Amini
ecbe335960 ## CHANGES
- Unread messages now show iPhone-style red notification badge 🔴
- Badge overlaps top-right corner of status indicator beautifully 📍
- Removed separate pulsing green dot for cleaner interface 
- Unified notification system across all session view modes 🎯
- Red badge provides better visibility than previous green dot 👁️
- Consistent positioning using absolute CSS for perfect alignment 📐
- Badge appears only on non-active sessions with unread messages 💬
- Smaller 1.5px size creates subtle yet noticeable alert 🎪
- Updated README to reflect new red badge notification style 📝
- Cleaner visual hierarchy with single indicator per session 🧹
2025-12-12 13:02:46 -06:00
Pedram Amini
4bc5815a10 fix: Move About Maestro to last position in hamburger menu
Reorder menu items so "About Maestro" appears at the bottom of the
hamburger menu in both expanded and collapsed sidebar modes.

Claude ID: f67864c5-6863-496d-9e9a-28d745977704
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-12 11:28:54 -06:00
Pedram Amini
e5d15b77d2 feat: Add Discord link to About Modal and Command K menu
- Add Discord icon button next to Globe in About Modal header
- Add "Join Discord" option to Command K quick actions menu
- Both link to https://discord.gg/86crXbGb

Claude ID: f67864c5-6863-496d-9e9a-28d745977704
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-12 09:42:12 -06:00
Pedram Amini
54ffb7e427 feat: Add Maestro website link and various UI improvements
- Add Globe icon to About Modal header linking to runmaestro.ai
- Add "Maestro Website" menu item in hamburger menus (both expanded and collapsed sidebar)
- Add "Off" option for toast notifications to disable them entirely
- Fix SettingsModal memo comparator that prevented prop updates
- Simplify AgentSessionsBrowser escape handling (single Escape closes modal)
- Fix TabSwitcherModal "All Named" filter to only show tabs with custom names
- Update Leaderboard "Active" badge styling for better contrast

Claude ID: f67864c5-6863-496d-9e9a-28d745977704
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-12 09:22:51 -06:00
Pedram Amini
6ffefd563c feat: Add Starred filter to Tab Switcher modal
Add a third filter option to the Tab Switcher modal that shows all
starred sessions (both open tabs and closed sessions) for the current
project. The modal now cycles through three modes with Tab key:
Open Tabs → All Named → Starred.

Changes:
- Add 'starred' to ViewMode type
- Add filtering logic for starred sessions (open + closed)
- Add Starred button pill with star icon and count
- Update placeholder, empty state, and footer text for starred mode
- Update Tab key cycling to include all three modes
- Add 4 new tests for starred mode functionality

Claude ID: 472a496d-f767-49dc-8074-a08d20d2b550
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-12 00:52:49 -06:00
Pedram Amini
ca34d3f4ad version bump 2025-12-12 00:47:02 -06:00
Pedram Amini
5b37edf546 fix: Update AboutModal tests for dual GitHub links
The AboutModal now has two "GitHub" text elements (author profile and
project repo link), so tests updated to use getAllByText and select
the appropriate link by index.
2025-12-12 00:44:29 -06:00
Pedram Amini
d553c41c6b missing file 2025-12-12 00:31:55 -06:00
Pedram Amini
121621588e initial leaderboard functionality 2025-12-12 00:31:48 -06:00
Pedram Amini
c275b9744c Update README.md 2025-12-12 00:05:59 -06:00
Pedram Amini
5b70a1316e feat: Add Discord badge and persist ungrouped collapsed state
- Add Discord community badge with logo to README
- Persist "Ungrouped" folder collapsed state across sessions via useSettings
- Update SessionList tests with new ungroupedCollapsed props
- Add community-data/ to .gitignore

Claude ID: c7150d1e-52ea-43e1-8bdf-4504bbee752e
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-12 00:04:42 -06:00
Pedram Amini
1f66a151a5 Update README.md 2025-12-11 21:18:01 -06:00
Pedram Amini
f715d9b7ab fix: Restore responsive OFFLINE/LIVE text hiding in Left Bar
The sidebar minimum width is 256px, but the threshold for hiding
the status text was set to 200px, making the responsive behavior
never trigger. Changed threshold to 280px so text hides when the
sidebar is resized near its minimum width.

Added test cases to prevent future regression.
2025-12-11 20:50:51 -06:00
Pedram Amini
5d03449b24 fix: Scroll active tab into view when unread filter is toggled off
When the unread filter was toggled off, the tab list expanded but the
scroll position wasn't adjusted to keep the active tab visible. This
fix adds showUnreadOnly to the useEffect dependency array so the
scroll-to-active-tab logic runs when the filter changes.

Claude ID: a64eea9f-c7e7-40ae-ae35-1c13f6e9b118
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-11 20:47:31 -06:00
Pedram Amini
bd7bb536d0 Enhance README with video links and thumbnails
Added links to video introductions and demos in README.
2025-12-11 20:38:15 -06:00
Pedram Amini
29ce81ad9c Merge pull request #22 from pedramamini/rc-0.7.4
rc 0.7.4
2025-12-11 20:04:16 -06:00
Pedram Amini
e04ffbafd6 # CHANGES
- Fixed bookmarked sessions sorting to ignore emojis properly 🔤
- Enhanced macOS keyboard shortcuts to handle Alt+key combinations correctly ⌨️
- Migrated existing shortcuts with special macOS Alt characters automatically 🔧
- Fixed autorun document reading to handle filenames without extensions 📄
- Improved phase generator file handling for markdown documents 📁
- Added comprehensive Alt+key character mapping for macOS users 🍎
- Implemented automatic shortcut migration on settings load 🚀
- Enhanced keyboard event handling for better cross-platform support 💻
- Fixed file extension handling in wizard phase generator service 🧙
- Improved overall keyboard shortcut reliability on macOS systems 
2025-12-11 20:03:22 -06:00
Pedram Amini
e251a16433 version bump 2025-12-11 19:08:26 -06:00
Pedram Amini
c4498a9191 Merge pull request #19 from pedramamini/feature-onboarding-wizard
Onboarding Wizard
2025-12-11 19:05:21 -06:00
Pedram Amini
c7d6a7f1a7 fix: Show full tab name for active tab, truncate inactive tabs
Active tabs now display their full name without truncation while
inactive tabs remain truncated at 120px for space efficiency.
2025-12-11 18:51:42 -06:00
Pedram Amini
fb7920e618 perf: Add throttling, debouncing, and caching for smoother scrolling
- Add useThrottle.ts with useDebouncedValue and useThrottledCallback hooks
- Throttle scroll handlers in TerminalOutput and HistoryPanel (16ms/60fps)
- Throttle ResizeObserver in MainPanel using requestAnimationFrame
- Debounce search query filtering in TerminalOutput (150ms)
- Add ANSI-to-HTML conversion cache (500 entries LRU) in TerminalOutput
- Optimize activity graph updates in AgentSessionsBrowser to prevent
  re-renders during pagination
2025-12-11 18:48:05 -06:00
Pedram Amini
8640845a6c 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 release notes that you'd like me to summarize? This could include:

- Git commit messages
- Pull request descriptions
- A changelog file
- Release notes
- Or any other documentation about what changed since the last release

Once you provide that information, I'll create an exciting CHANGES section with clean, 10-word bullets and relevant emojis as requested!
2025-12-11 18:31:51 -06:00
Pedram Amini
0877002406 perf: Memoize props and conditionally render Wizard/Tour for better performance
- Add sessionsForValidation memo (only computed when NewInstanceModal open)
- Add hasNoAgents memo (only recomputes on session count change)
- Conditionally render MaestroWizard only when wizardState.isOpen
- Conditionally render TourOverlay only when tourOpen
- Prevents ~11k lines of wizard code hooks/effects from running when closed
2025-12-11 18:21:51 -06:00
Pedram Amini
a0bb5749c6 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 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.
2025-12-11 18:10:16 -06:00
Pedram Amini
81a95f3c9b ## CHANGES
- Fixed stale session closure bug in agent spawning 🐛
- Enhanced tour tooltip positioning with center-overlay option 🎯
- Improved session reference handling for real-time updates 
- Added flexible tooltip positioning for better UI experience 📍
- Refined tour step configuration for main terminal display 🖥️
- Removed unnecessary dependencies from useCallback hook 🧹
- Updated tooltip calculation logic for viewport awareness 📐
- Enhanced tour documentation with positioning options 📝
- Improved tooltip arrow rendering for new positions 🎨
- Optimized session lookup using ref for latest data 🔄
2025-12-11 16:45:29 -06:00
Pedram Amini
7a7dcd1632 # CHANGES
- Added DebugWizardModal component for jumping directly to wizard review phase 🔧
- Implemented EmptyStateView for cleaner first-run experience with no agents 🎨
- Added default prompt for image-only messages to infer user intent 🖼️
- Fixed Alt+key shortcuts on macOS by using e.code instead of e.key 🍎
- Enhanced document selector UI to match Auto Run panel styling 📄
- Added elapsed time tracking to document generation progress screen ⏱️
- Improved keyboard navigation with global ⌘E for edit/preview toggle ⌨️
- Made tour progress dots clickable to navigate between past steps 🔵
- Fixed batch processor session reference to handle newly created sessions 🐛
- Updated tour steps to focus on essential features and keyboard shortcuts 🚀
2025-12-11 16:34:09 -06:00
Pedram Amini
2ff9db3f9e feat: Wizard UI improvements, preparing plan screen, and unread indicator
- Added pulsing green unread indicator for sessions with new messages
- Enhanced PreparingPlanScreen with Austin facts and file creation animations
- Updated SessionList collapse button to require sessions
- Renamed wizard screen title from "Choose Your AI Assistant" to "Choose Your Provider"
- Updated test assertions to match UI text changes
- Documented unread indicator in README

Claude ID: 207f9996-7530-493f-bb99-96a3bb26c6f7
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-11 05:21:34 -06:00
Pedram Amini
37398ea62f fix: Memoize modals to prevent flashing from Auto Run state updates
- Wrap GitDiffViewer, GitLogViewer, SettingsModal with React.memo
- Add stable useCallback refs for onClose handlers in App.tsx
- Add useMemo for gitViewerCwd to prevent inline computation
- SettingsModal uses custom comparator for key props (isOpen, theme, activeThemeId)

Prevents unnecessary re-renders when Auto Run file watching triggers
App.tsx state updates.
2025-12-11 04:31:02 -06:00
Pedram Amini
c1fbea5b08 missing file 2025-12-11 04:26:30 -06:00
Pedram Amini
e947df56ae # CHANGES
- Added drag-and-drop reordering support for execution queue items 🎯
- Created new PreparingPlanScreen step in wizard workflow 🚀
- Enhanced document selector dropdown for multi-document support 📄
- Improved process monitor UI with two-line layout design 💅
- Fixed queue processing after interrupting running commands 
- Added lightweight session timestamp fetching for activity graphs 📊
- Separated document generation from review in wizard flow 🔄
- Enhanced file creation tracking with retry logic 🔁
- Added visual feedback for drag operations with shimmer effect 
- Fixed tab header layout in right panel interface 🎨
2025-12-11 03:54:13 -06:00
Pedram Amini
6f0cbe039d fix: Wizard UI polish and disk-based document detection fallback
- Added isResuming prop to PhaseReviewScreen for resume session handling
- Auto-create Auto Run folder when starting file watcher
- Added disk-based document detection when agent writes files directly
- Updated ProcessMonitor test assertions to match session name prefix format

Claude ID: 207f9996-7530-493f-bb99-96a3bb26c6f7
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-11 02:19:56 -06:00
Pedram Amini
60f027635c feat: Show session name in process monitor rows
Process rows now display the session name alongside the process type
(e.g., "Maestro - AI Agent (claude-code)") for easier identification.
2025-12-11 01:54:25 -06:00
Pedram Amini
9efd3466c1 fix: Update wizard test mocks and assertions to match source changes
- Added listDocs and readDoc to autorun mock (phaseGenerator disk fallback)
- Updated wizard title assertions from 'Select Your Agent' to 'Create a Maestro Agent'
- Updated conversation screen text assertion to 'Project Understanding Confidence'

Claude ID: 207f9996-7530-493f-bb99-96a3bb26c6f7
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-11 01:52:50 -06:00
Pedram Amini
0d9ed25145 fix: Wizard UI polish and disk-based document detection fallback
UI improvements:
- Change step 1 title to "Create a Maestro Agent"
- Rename "Project Understanding" to "Project Understanding Confidence"
- Put YOLO flag on its own centered line with padding
- Shorten loading message to fit on two lines

Bug fix:
- Add fallback to read Auto Run documents directly from disk when
  the agent writes files instead of outputting them with markers.
  This fixes an issue where documents appeared on disk but weren't
  shown in the Phase Review UI.

Session: f323ef3f-406d-4dd5-b31d-410de2117e17
2025-12-11 01:48:12 -06:00
Pedram Amini
7aad9771c9 feat: Add real-time log streaming to LogViewer
- Logger now extends EventEmitter and emits 'newLog' events
- Added IPC channel 'logger:newLog' to forward logs to renderer
- Added onNewLog subscription API in preload
- LogViewer subscribes to real-time updates and displays newest first
- Updated LogViewer test mock to include onNewLog method

Claude ID: 207f9996-7530-493f-bb99-96a3bb26c6f7
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-11 01:38:53 -06:00
Pedram Amini
318cb85988 feat: Add existing Auto Run Docs detection and security fixes
- Add ExistingAutoRunDocsModal that detects previous wizard sessions
- Allow users to continue planning from existing docs or start fresh
- Support reading existing docs and passing them to the AI for context
- Add path traversal sanitization for AI-generated filenames (security fix)
- Add proper cleanup on unmount for ConversationScreen and PhaseReviewScreen
- Add rate limiting guard for send button to prevent double-sends
- Update HistoryHelpModal with simplified styling
- Add Texas Flag SVG component for Austin Facts display

Security improvements address PR #19 review comments:
- sanitizeFilename() prevents directory traversal attacks
- conversationManager.endConversation() called on unmount
- phaseGenerator.abort() called on unmount
- isSendingRef prevents race conditions from rapid clicking

Session: 207f9996-7530-493f-bb99-96a3bb26c6f7
2025-12-11 01:31:58 -06:00
Pedram Amini
4aa5398b9f OAuth enabled but no valid token found. Starting authentication...
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.
2025-12-11 01:10:23 -06:00
Pedram Amini
b76c2131f6 Merge pull request #20 from pedramamini/claude/issue-17-20251210-2311
feat: show hidden files and directories in file tree
2025-12-10 17:15:24 -06:00
claude[bot]
8019d2f846 feat: show hidden files and directories in file tree
- Remove filter that skipped files/directories starting with '.'
- Users can now see and reference hidden files like .meta, .env, .gitignore
- Keep existing filters for node_modules and __pycache__
- Update tests to verify hidden files are included

Fixes #17

Co-authored-by: Pedram Amini <pedramamini@users.noreply.github.com>
2025-12-10 23:13:14 +00:00
Pedram Amini
783a57280d feat: Change default saveToHistory setting to ON
New tabs now automatically save synopsis entries to history by default,
improving discoverability of the history feature for new users.

- Change defaultSaveToHistory initial state from false to true in useSettings.ts
- Change saveToHistory fallback default from false to true in tabHelpers.ts
- Update corresponding test expectations

Claude ID: 28738afd-df74-4afa-bec4-9719d4360acf
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-10 08:13:56 -06:00
Pedram Amini
dfd1fb32eb feat: Add wizard button to sidebar bottom and fix hamburger menu overflow
- Add Wand2 icon button next to "+ New Agent" with tooltip "Get started with AI wizard"
- Make hamburger menu position responsive: left-aligned when sidebar < 300px,
  right-aligned otherwise to prevent overflow
- Keep minimum sidebar width at 256px to contain header elements

Claude ID: 545ca79b-d919-4e72-8030-8c9b70ca8c5c
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-10 07:47:47 -06:00
Pedram Amini
c74198ea61 fix: Move useCallback before early return in MaestroWizard to fix hooks error
The "Rendered more hooks than during the previous render" error occurred
because useCallback was defined after the early return statement. React
hooks must always be called in the same order on every render.

Claude ID: 545ca79b-d919-4e72-8030-8c9b70ca8c5c
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-10 07:33:47 -06:00
Pedram Amini
f841479a8d MAESTRO: Fix tour spotlight system and rename wizard to New Agent Wizard
- Add tour:action event listeners in App.tsx for right panel control
  (setRightTab, openRightPanel, closeRightPanel)
- Add tour:action event listeners in SessionList.tsx for hamburger menu
  (openHamburgerMenu, closeHamburgerMenu)
- Add data-tour attributes to panel content areas (files-panel, history-panel)
- Update tour step selectors to target full panels instead of tab buttons
- Rename "New Project Wizard" to "New Agent Wizard" throughout UI
- Update wizard subtext to "Get started with AI"
- Update CLAUDE.md documentation to reflect naming changes

Claude ID: 545ca79b-d919-4e72-8030-8c9b70ca8c5c
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-10 07:31:50 -06:00
Pedram Amini
22285c0b6b MAESTRO: Add comprehensive wizard documentation to CLAUDE.md
Document the onboarding wizard system architecture, flow, and
customization points for developers working on the codebase.
2025-12-10 05:15:47 -06:00
Pedram Amini
fe47e9aa7d MAESTRO: Add comprehensive integration tests for wizard flow
Created WizardIntegration.test.tsx with 27 tests covering:
- Full wizard flow (open, navigate, progress dots)
- Exit confirmation flow (step 1 closes directly, later steps confirm)
- State persistence and resume functionality
- Resume modal with validation warnings
- Analytics callbacks (start, resume, abandon)
- Backward navigation via Escape and previousStep
- Screen transitions and accessibility attributes
- Step validation (prevent/allow advancing)
- Tour integration (wantsTour prop handling)
- Multiple open/close cycles
- Error boundaries (agents.detect failure)

All 352 wizard tests passing.
2025-12-10 05:12:31 -06:00
Pedram Amini
f9dc87f6ad MAESTRO: Add comprehensive unit tests for structured output parser
- Created wizardPrompts.test.ts with 89 tests covering:
  - All 4 JSON parsing strategies (direct, code blocks, pattern, any JSON)
  - Fallback response creation with confidence/ready extraction
  - Value normalization (clamping, rounding, threshold enforcement)
  - Invalid input handling (missing fields, wrong types, malformed JSON)
  - Edge cases (unicode, escapes, long messages, boundary values)
  - System prompt generation
  - User message formatting
  - isReadyToProceed validation
  - getConfidenceColor HSL gradient
  - getInitialQuestion
  - Realistic integration scenarios
2025-12-10 05:04:05 -06:00
Pedram Amini
80f2849a39 MAESTRO: Add comprehensive unit tests for WizardContext state management
- Created 91 unit tests covering all WizardContext functionality
- Tests cover: initial state, lifecycle, navigation, validation,
  agent/directory/conversation/phase state, tour preferences,
  completion, and state persistence
- Edge case tests for rapid changes, unicode, boundary values, etc.
- Uses vi.mocked() pattern consistent with project test conventions
- All 236 wizard tests pass
2025-12-10 04:59:53 -06:00
Pedram Amini
67ea18dfbd MAESTRO: Add local-only analytics hooks for wizard and tour completion tracking
Add comprehensive onboarding analytics that stores all data locally (no external
telemetry) to track wizard and tour usage patterns:

- New OnboardingStats interface with 19 metrics covering:
  - Wizard stats: start/completion/abandon/resume counts, duration tracking
  - Tour stats: start/completion/skip counts, steps viewed tracking
  - Conversation and phase generation metrics

- 8 tracking functions in useSettings.ts:
  - recordWizardStart/Resume/Abandon/Complete
  - recordTourStart/Complete/Skip
  - getOnboardingAnalytics for computed completion rates

- Integration with MaestroWizard and TourOverlay components
- 24 new tests verifying all analytics functions

All analytics are stored locally only - respects user privacy.
2025-12-10 04:52:47 -06:00