Commit Graph

278 Commits

Author SHA1 Message Date
Pedram Amini
6dfedbb739 feat: Add speech button to AI responses for text-to-speech
- Adds Volume2 icon button next to copy button on non-user messages
- Only shows when audioFeedbackCommand is configured in settings
- Clicking speaks the message content using the configured TTS command
2025-11-26 22:21:49 -06:00
Pedram Amini
aa32adae3d fix: Move shortcuts count from tab header to filter row pill
- Removes count pill from Shortcuts tab to keep all tabs single-line
- Adds count pill before the filter input that shows total or filtered/total
2025-11-26 22:17:29 -06:00
Pedram Amini
360269e0ff fix: Custom AI commands now send prompt content, left-align Add Command button
- Custom AI commands now display and send the actual prompt text instead of
  showing "command: description" in the chat
- Left-align the Add Command button in settings
2025-11-26 22:13:30 -06:00
Pedram Amini
2621b83c17 fix: UI polish including copy content button, search context, and tooltip fixes
- Add copy content/image to clipboard button in FilePreview
- Increase search preview context from 30 to 60 characters
- Fix j/k navigation keys conflicting with search input in GitLogViewer
- Fix git tooltip click propagation and pointer events in MainPanel
- Convert globe tooltip to state-based with proper theme colors
- Add icons to settings modal tab buttons
- Reset AgentSessionsBrowser to list view on mount
2025-11-26 22:12:22 -06:00
Pedram Amini
fee2337e91 feat: Fix custom AI commands, responsive header, and UI polish
- Fix custom AI commands (/commit) execution from autocomplete dropdown
- Add responsive header that hides time/cost widgets when panel is narrow
- Add copy-to-clipboard button for terminal mode messages
- Hide token stats from terminal busy indicator (AI-only)
- Improve Add Command button layout in settings
2025-11-26 21:53:15 -06:00
Pedram Amini
f2597657c0 feat: Add per-session web server, history deletion, and UI improvements
- Add local web server per session with UUID authentication for browser access
- Add history entry deletion with confirmation modal
- Show git branch name in header pill, click to open git log
- Fix hover tooltips (Git, Tunnel, Context) to stay open when moving to content
- Widen settings modal to 800x600 for better AI Commands visibility
- Fix notification "never" dismissal by removing hardcoded durations
- Cycle all sessions with Cmd-Shift-[] when sidebar collapsed
- Update test audio text to Maestro introduction
2025-11-26 21:43:48 -06:00
Pedram Amini
4994fd4c74 bugfix in mac app builder 2025-11-26 21:00:12 -06:00
Pedram Amini
1d73ec8e2f Update README with application description and image 2025-11-26 20:59:28 -06:00
Pedram Amini
76a68e2274 MAESTRO: Add manual refresh button to file explorer
- Added RefreshCw icon button next to expand/collapse buttons
- Created refreshFileTree function to reload file tree on demand
- Button positioned to the left of expand/collapse controls
2025-11-26 20:54:34 -06:00
Pedram Amini
488bb6c30b MAESTRO: Add toast notifications to system logs
- Added 'toast' log level for tracking toast notifications
- Toast notifications are now logged when created via ToastContext
- Added purple TOAST filter pill in LogViewer (next to ERROR)
- Toast logs include type, message, group, project, and task duration
2025-11-26 20:54:03 -06:00
Pedram Amini
3406ca0a18 MAESTRO: Add manual refresh button to file explorer
Added a refresh button (circular arrow icon) to the left of the
expand/collapse buttons in the file explorer header. Clicking it
manually reloads the file tree from disk.
2025-11-26 20:53:13 -06:00
Pedram Amini
0fdb652f1f MAESTRO: Improve task complete toast notifications with more context
Toast notifications now show:
- Title: The user's original request (truncated to ~50 chars)
- Message: First sentence or 120 chars of the AI response

Previously showed generic "Task Complete" / "Task completed" which
wasn't helpful. Now users can see what was requested and a summary
of what was accomplished.
2025-11-26 20:52:17 -06:00
Pedram Amini
8d915606ba MAESTRO: Suppress empty stderr cells in terminal output
Added check to skip rendering stderr log entries that have no actual
content after processing. This prevents empty red STDERR cells from
appearing when git or other commands write nothing useful to stderr.
2025-11-26 20:50:34 -06:00
Pedram Amini
6b471a030e MAESTRO: Fix context window usage calculation
The context usage percentage was incorrectly including cache tokens:
- Was: inputTokens + outputTokens + cacheReadTokens + cacheCreationTokens
- Now: inputTokens + outputTokens (actual context footprint)

Cache tokens are about billing optimization, not context size:
- cacheReadInputTokens = tokens read from cache (still in context but cached)
- cacheCreationInputTokens = subset of input being written to cache

The actual context window usage is input + output tokens, which is what
matters for hitting the 200K limit.

Also renamed "Total Tokens" to "Context Tokens" in the UI to clarify
what's being measured.
2025-11-26 20:47:29 -06:00
Pedram Amini
5e7bb7101d MAESTRO: Fix batch session ID bleeding into interactive session
The onSessionId handler was capturing Claude session IDs from batch
(AUTO) tasks and storing them in the interactive session's state.
This caused the main panel to show the batch session ID instead of
the interactive session's own ID.

Fix: Added check to ignore session IDs containing '-batch-' in the
onSessionId handler, matching the pattern already used in onData.
2025-11-26 20:45:43 -06:00
Pedram Amini
826bef8b25 MAESTRO: Fix message queue not working after first queued message
The issue was that the onData handler was setting state to 'idle' whenever
stdout data was received from Claude. This prematurely marked the session
as idle, so subsequent messages during the same AI task wouldn't queue.

Fix:
- Removed premature state='idle' in onData handler - let onExit manage state
- Explicitly set state='busy' when processing queued messages from exit handler
2025-11-26 20:44:06 -06:00
Pedram Amini
50cbfd5302 MAESTRO: Add hover tooltip and fix stacking in activity graph
- Added hover state that highlights the bar and shows a tooltip
- Tooltip displays hours ago (e.g., "3h ago") and breakdown of Auto/User counts
- Fixed stacking order: Auto (warning color) on bottom, User (accent color) on top
- Bar scales up 1.5x on hover for better visibility
- Tooltip positions intelligently to avoid clipping at edges
2025-11-26 20:43:38 -06:00
Pedram Amini
4d030236b7 MAESTRO: Add pagination to history panel and remove stop button
History Panel Pagination:
- Keep max 500 entries in memory (MAX_HISTORY_IN_MEMORY)
- Initially render only 50 entries (INITIAL_DISPLAY_COUNT)
- Load 50 more entries when scrolling near bottom
- Show "Showing X of Y entries. Scroll for more..." indicator
- Reset display count when filters change

UI Cleanup:
- Removed redundant Stop button from thinking indicator
- The blinking red stop button in input area is sufficient
2025-11-26 20:42:15 -06:00
Pedram Amini
b088af6b98 MAESTRO: Remove redundant stop button from thinking indicator
The stop button in the message panel is no longer needed since the
send button in the input area already transforms into a red blinking
stop button when the agent is busy.
2025-11-26 20:41:03 -06:00
Pedram Amini
84904fd41c MAESTRO: Fix release workflow to trigger on date-based tags
The workflow was only triggering on semantic version tags (v*.*.*) but
releases were being created with date-based tags (e.g., 2025-11-27).
Added '20*' pattern to also trigger on date-based tags.
2025-11-26 20:39:42 -06:00
Pedram Amini
6da24eaa0e MAESTRO: Add border box and hour labels to activity graph
Enhanced the 24-hour activity bar graph with:
- Rounded border container to frame the graph
- Hour labels below (24h, 16h, 8h, 0h) showing time scale
- Labels positioned at start, middle markers, and end (now)
- Small monospace font for labels to keep them compact
2025-11-26 20:32:29 -06:00
Pedram Amini
e41414b99e Merge pull request #3 from raychaser/raychaser/claude-path-01
Raychaser/claude path 01
2025-11-26 20:27:23 -06:00
Christian Beedgen
2d753bd520 Gack formatting 2025-11-26 20:20:20 -05:00
Christian Beedgen
a3d7ad1fee Add .claude/local which is where claude was hiding on my box 2025-11-26 20:15:12 -05:00
Pedram Amini
aa99b3308c MAESTRO: Add 24-hour activity bar graph to history panel
Added a visual activity graph showing auto vs user activity hour-by-hour
for the past 24 hours at the top of the history panel. The graph:
- Displays 24 bars (one per hour) from oldest to newest
- Uses warning color for AUTO entries and accent color for USER entries
- Stacks both types within each bar
- Shows a tooltip with total counts on hover
- Left-justifies the AUTO/USER filter pills with the graph filling remaining space
2025-11-26 17:58:12 -06:00
Pedram Amini
19f9e0f998 MAESTRO: Add Pedurple and Maestro's Choice special themes
- Add "Pedurple" theme featuring deep purple backgrounds with gold accents
- Add "Maestro's Choice" theme with a unique teal-gray base and terracotta accents
- Both themes added to new "Special themes" section after light themes
- Update ThemeId type to include new theme identifiers
2025-11-26 17:56:31 -06:00
Pedram Amini
a0b484bf4d MAESTRO: Add Git log explorer with Cmd+Shift+G shortcut
- Add GitLogViewer component with split-pane design showing commit list on left, diff on right
- Support keyboard navigation (↑↓ j/k), search with /, and mouse selection
- Show branch/tag decorations, commit metadata, file stats, and syntax-highlighted diffs
- Add git:log and git:show IPC handlers in main process
- Wire up viewGitLog shortcut (Cmd+Shift+G) and add to Quick Actions menu
- Add GIT_LOG modal priority for proper layer stack ordering
2025-11-26 17:55:23 -06:00
Pedram Amini
44d913f256 MAESTRO: Filter out agent- prefixed sessions by default in Claude session browser
Added a "Show All" checkbox to the search bar in the Claude Sessions Browser.
By default, sessions with IDs starting with "agent-" are hidden, showing
only UUID-style sessions. Checking "Show All" reveals all sessions including
agent sessions. Stats panel also updates to reflect only visible sessions.
2025-11-26 17:49:32 -06:00
Pedram Amini
09b74c99d4 MAESTRO: Refresh history panel after /synopsis and /clear commands
Added live refresh of the history panel when AI synopsis entries are
added via /synopsis or /clear commands:

- Added refreshHistory() method to HistoryPanelHandle interface
- Exposed refreshHistoryPanel() from RightPanel via forwardRef
- Added refreshHistoryPanel prop to SlashCommandContext
- Call refreshHistoryPanel after addHistoryEntry in both commands
2025-11-26 17:47:38 -06:00
Pedram Amini
23f03840e4 feat: Add interrupt button for AI mode (Stop Claude)
- Show red Stop button in input area when AI is busy (not just terminal)
- Add prominent Stop button directly in the "Claude is thinking" indicator
- Both buttons trigger SIGINT to interrupt Claude Code process gracefully
2025-11-26 17:41:15 -06:00
Pedram Amini
37ce739816 fix: Stop auto-scrolling when user scrolls away in expanded AI responses
When a user expands a long AI response and scrolls within it, the view
would constantly jump back to the top. This was caused by the Virtuoso
followOutput behavior being too aggressive. Now we track when the user
has scrolled away from the bottom and respect their scroll position.
2025-11-26 17:39:10 -06:00
Pedram Amini
92787f1ab3 fix: Change TTS test message to "Howdy from Maestro" 2025-11-26 17:31:37 -06:00
Pedram Amini
bb27b4cb7b fix: TTS command now properly parses arguments
The TTS command field was only using the first word as the command,
ignoring any arguments. Now properly parses the full command string
to extract the command and its arguments (e.g., "11s --voice xyz").
2025-11-26 17:29:55 -06:00
Pedram Amini
c526e2a77b fix: Simplify history panel entries to show 3 lines of summary only
Remove the smaller preview text at the bottom of history entries.
Now shows just the summary text clamped to 3 lines for cleaner display.
2025-11-26 17:27:16 -06:00
Pedram Amini
7bc1d3df01 fix: Improve History panel performance and fix type duplications
- Remove duplicate GlobalStats interface from types (was causing conflicts)
- Only track scroll position when on Files tab (prevent unnecessary updates)
- Memoize activeSession to reduce re-render cascades
- Wrap HistoryPanel in React.memo to prevent unnecessary re-renders
2025-11-26 17:22:58 -06:00
Pedram Amini
68e319c7a7 feat: Show flash notification when slash commands are blocked during busy state
- Add flash notification system for inline feedback (centered, auto-dismiss)
- Block slash commands when AI agent is busy with flash notification
- Use warning color for visibility (yellow/orange background)
2025-11-26 16:58:24 -06:00
Pedram Amini
18667f9170 feat: Add persistent global stats tracking across app restarts
- Add GlobalStats interface for persistent usage statistics
- Store cost, token counts in settings that persist across restarts
- Update About modal to display persistent stats (previously lost on restart)
- Track usage stats incrementally via updateGlobalStats helper
- Update About menu description to "Version, Credits, Stats"
2025-11-26 16:54:40 -06:00
Pedram Amini
2b6423bd1d MAESTRO: UI improvements and bug fixes
- Replace command panel with hamburger menu in left sidebar header
- Move About button from main panel to hamburger menu
- Add keyboard shortcuts display in hamburger menu items
- Swap order of git change indicator and GIT pill in session list
- Change "Session Statistics" to "Global Statistics" in About modal
- Fix ReferenceError in AgentSessionsBrowser by hoisting useCallback definitions
2025-11-26 16:50:39 -06:00
Pedram Amini
4b66661134 fix: Improve release workflow to properly build Mac/Win/Linux apps
- Add fail-fast: false so all platforms build even if one fails
- Install Linux build dependencies (libarchive-tools, rpm) for packaging
- Add Windows MSVC build tools setup for native module compilation
- Explicitly rebuild native modules (node-pty) before packaging
- Add DEBUG output for electron-builder troubleshooting
- Use --publish never to avoid auto-publishing issues
- Add artifact listing steps for debugging
- Update to softprops/action-gh-release@v2
- Add if-no-files-found: error to catch packaging failures early
2025-11-26 16:38:18 -06:00
Pedram Amini
a5767adf5b MAESTRO: Add configurable toast notification duration setting
Add user-configurable duration for toast notifications under
Settings > Notifications. Users can select preset durations
(5s, 10s, 20s, 30s) or "Never" which keeps toasts on screen
until manually dismissed via the X button. Default is 20 seconds.

When set to "Never", toasts stack without auto-dismissing and
the progress bar is hidden.
2025-11-26 16:36:15 -06:00
Pedram Amini
db1449d199 MAESTRO: Add copy-to-clipboard button for AI terminal messages
Added a small clipboard icon in the bottom-right corner of each message
cell in the AI terminal (both user messages and AI responses). When
clicked, the message content is copied to clipboard and a centered
"Copied to Clipboard" notification appears briefly.

- Icon appears on hover with subtle opacity transition
- Uses same notification style as session ID copy
- Only shows in AI mode (not terminal mode)
2025-11-26 16:29:57 -06:00
Pedram Amini
78880c9332 MAESTRO: Add search filter to History panel
- Press / to open a search filter box below the AUTO/USER pills
- Filter searches through summary, full response, and prompt text
- Shows result count when filter is active
- Escape closes the filter and clears the search
- Arrow down moves focus from search input to the list
- Also fixed stale closure bug in processQueuedMessage (queued
  messages now actually get sent to the agent)
- Added __maestroDebug.testToast() helper for console testing
2025-11-26 16:27:25 -06:00
Pedram Amini
d2c0dafa63 MAESTRO: Add GIT vs LOCAL indicator to left sidebar session list
Added a small pill indicator for each agent session in the left sidebar
showing "GIT" (styled with accent color) for sessions in git repositories
or "LOCAL" (styled with dim color) for sessions in non-git directories.

The indicator appears:
- In the expanded sidebar next to each session
- In the skinny mode tooltip popup
- Only for AI agent sessions (not terminal sessions)
2025-11-26 16:19:03 -06:00
Pedram Amini
3dbd6e6e2b MAESTRO: Add custom AI commands settings panel with /commit default
- Added CustomAICommand type for user-configurable slash commands
- Created AICommandsPanel component for settings modal
- Added "AI Cmds" tab to SettingsModal for managing custom commands
- Integrated custom AI commands with slash command autocomplete
- Default /commit command examines git diff and pushes changes
- Built-in commands can be edited but not deleted
- Custom commands are persisted across app restarts
2025-11-26 16:17:15 -06:00
Pedram Amini
ba3b9dbcbe MAESTRO: Mirror Claude Code slash commands in AI terminal
Add support for displaying Claude Code's custom slash commands in the
Maestro AI terminal autocomplete. Commands are fetched from user-defined
commands (~/.claude/commands/), project-level commands (.claude/commands/),
and enabled plugins' commands directories.

The commands are cached per Maestro session and fetched on first Claude
session establishment. This allows users to see and use Claude-specific
slash commands like /commit, /review-pr, etc. directly from the Maestro
AI terminal interface.
2025-11-26 16:09:49 -06:00
Pedram Amini
4f2188365c MAESTRO: Add notification settings panel to Settings modal
- Add new "Notify" tab to Settings modal with OS notifications and audio feedback options
- OS notifications enabled by default, persisted across app restarts
- Audio feedback option uses configurable TTS command (defaults to macOS 'say')
- Audio runs in background (non-blocking) via detached child process
- Add test buttons for both notification types
- IPC handlers for notification:show and notification:speak
- Full TypeScript types for notification API in preload.ts
2025-11-26 16:03:09 -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
758536f930 MAESTRO: Add Git info overlay to the Git pill in main panel header
- Added new IPC handlers for git:branch, git:remote, and git:info
- git:info returns comprehensive data: branch, remote, ahead/behind counts, uncommitted changes
- Added hover overlay to Git pill showing:
  - Current branch with ahead/behind indicators
  - Remote origin URL with copy button
  - Working tree status (clean or uncommitted changes count)
- Auto-refreshes git info every 10 seconds
2025-11-26 15:55:37 -06:00
Pedram Amini
4feef36393 MAESTRO: Improve shell command output display with STDERR pill
- Filter empty stdout and stderr output so commands with no output show nothing
- Display red "STDERR" pill badge for stderr output entries
- Enhanced pill styling with solid background, bold text, and uppercase letters
2025-11-26 15:52:44 -06:00
Pedram Amini
195e29545a MAESTRO: Add global session statistics to About modal
Aggregate and display usage metrics from all active sessions including:
- Total sessions and messages count
- Input/output token usage with K/M formatting
- Cache read/creation tokens (when applicable)
- Cumulative active time
- Total cost across all sessions
2025-11-26 15:49:19 -06:00