Commit Graph

72 Commits

Author SHA1 Message Date
Pedram Amini
495ed0f60f MAESTRO: Update TabBar render loop to iterate over unified tabs
- Add displayedUnifiedTabs computed value with unread filter support
- Update render loop to conditionally render from unified tabs when provided
- Check unified tab type to render either Tab (AI) or FileTab (file)
- Update handleDrop, handleMoveToFirst, handleMoveToLast for unified tabs
- Update overflow check and empty state to consider unified tabs
- Maintain backwards compatibility with legacy AI-only tab rendering
2026-02-02 16:18:39 -06:00
Pedram Amini
61a978b774 MAESTRO: Add FileTab sub-component for file preview tabs
- Create FileTabProps interface with file tab specific props
- Implement FileTab memoized component with:
  - Filename without extension as label
  - Color-coded extension badge (blue for TS/JS, green for MD, etc.)
  - Unsaved edits indicator (pencil icon)
  - Middle-click to close support
  - Drag and drop handlers
  - Same active/inactive styling as AI tabs
- Add getExtensionColor() helper for extension badge coloring
2026-02-02 16:18:39 -06:00
Pedram Amini
c533e8826c MAESTRO: Add unified tab system props to TabBar interface
- Add UnifiedTab discriminated union type to types/index.ts
- Add new props to TabBarProps: unifiedTabs, activeFileTabId,
  onFileTabSelect, onFileTabClose
- Props are optional for backwards compatibility during transition
- Phase 3 of file preview tabs implementation
2026-02-02 16:18:38 -06:00
Pedram Amini
7c06afa405 MAESTRO: Add handleUnifiedTabReorder function for unified tab reordering
Implements unified tab reorder functionality that operates on the
unifiedTabOrder array, allowing both AI and file preview tabs to be
reordered relative to each other. This supplements the existing
handleTabReorder (AI-only) for the unified tab system.

Changes:
- Added handleUnifiedTabReorder in App.tsx with index validation
- Propagated through useMainPanelProps.ts, MainPanel.tsx, TabBar.tsx
2026-02-02 16:18:38 -06:00
Pedram Amini
a7ca32f8c7 feat(tabNaming): add spinning indicator while generating tab name
- Add isGeneratingName property to AITab interface
- Show Loader2 spinner in tab while name generation is in progress
- Set isGeneratingName true before API call, false on completion/error
- Spinner only shows when automatic tab naming is enabled
2026-02-02 03:11:19 -06:00
Pedram Amini
e306be17ac chore: fix 39 ESLint unused variable warnings
- Remove unused FocusArea import from App.tsx
- Prefix unused destructured variables with _ (inline wizard state, refs)
- Remove unused imports (useCallback, MainPanelHandle, hasExistingAutoRunDocs, etc.)
- Remove unused SymphonyCategory type import
- Fix prefer-const warning in fileExplorer.ts (regexStr)
2026-02-01 22:13:46 -06:00
Raza Rauf
231fe2fd88 chore: format entire codebase with prettier
Run `npm run format` across all TypeScript/TSX files
for consistent code formatting throughout the project.
2026-01-20 02:21:36 +05:00
Pedram Amini
3b9abec5a5 MAESTRO: Phase 04 - Tab memoization & split GitStatusContext
Tab memoization:
- Add tabId prop to Tab component to avoid inline closures
- Create stable callback wrappers in TabBarInner
- Convert all Tab event handlers to use useCallback with tabId dependency
- Eliminates ~16k unnecessary re-renders per commit

Split GitStatusContext into focused sub-contexts:
- GitBranchContext: branch, remote, ahead/behind (rarely changes)
- GitFileStatusContext: getFileCount, hasChanges (changes on file ops)
- GitDetailContext: getFileDetails, refreshGitStatus (active session only)

Update consumers to use only needed context:
- SessionList: useGitFileStatus (file counts only)
- MainPanel: useGitBranch + useGitFileStatus + useGitDetail
- GitStatusWidget: useGitFileStatus + useGitDetail

Preserve legacy useGitStatus for backwards compatibility.
2026-01-18 12:09:37 -06:00
Pedram Amini
bbb01d8abf ## CHANGES
- Added performance best-practices guide for React and main process tuning 📘
- Introduced `buildFileTreeIndices` for fast, reusable markdown file lookups 
- Updated `remarkFileLinks` to accept prebuilt indices with backward compatibility 🧩
- Memoized file-tree indices in AutoRun, FilePreview, and MarkdownRenderer for speed 🚀
- Expanded test suite to cover indices building and indexed link resolution 🧪
- Made temp-file cleanup asynchronous to keep the main thread snappy 🧹
- Cached shell path resolution to avoid repeated synchronous filesystem checks 🗄️
- Precompiled leading-emoji regex to speed up session name sorting 🔤
- Consolidated SessionList filtering/grouping/sorting into one efficient memo pass 🧠
- Memoized TabBar tabs, computed labels, and style objects to cut rerenders 🎛️
2026-01-11 03:15:12 -06:00
Pedram Amini
31da3fa8bd ## CHANGES
- OpenCode CLI now uses `run` batch subcommand with positional prompts 🚀
- Dropped `-p` prompt flag for OpenCode JSON mode compatibility 🧩
- Added `noPromptSeparator` for OpenCode positional prompt handling 🧠
- Implemented “Close All Tabs” action for faster session cleanup 🧹
- Implemented “Close Other Tabs” to focus instantly on one tab 🎯
- Implemented “Close Tabs to Left” for browser-style tab management ⬅️
- Implemented “Close Tabs to Right” to prune clutter in one click ➡️
- Wired bulk tab-close handlers through App, Modals, MainPanel, TabBar 🔌
- Enhanced tab context menu with bulk close options and smart disabling 📋
- Updated tests to reflect OpenCode batch mode and UI copy tooltip 🧪
2026-01-06 19:49:01 -06:00
Pedram Amini
6d062135ca ## CHANGES
- Launch the in-tab Wizard straight from Auto Run with one click! 🪄
- Wizard “show thinking” now displays live tool executions, not just text! 🧰
- Prevent confusing JSON flashes in wizard thinking stream for cleaner UX! 🧼
- Auto-complete wizard after document generation with a helpful summary log! 
- Redesigned document generation view: progress, elapsed time, and drafted files list! 📄
- Auto Run batch processing now fully supports SSH remotes end-to-end! 🔐
- Tab hover menu upgrades: instantly move tabs to first/last position! 🧭
- Keyboard safety: disable Cmd+J mode toggling while an active wizard tab runs! ⌨️
- Session persistence now drops incomplete wizard tabs to avoid broken restores! 💾
- Improved debugging for thinking-chunk streaming with richer ProcessManager logs! 🔎
2026-01-05 12:43:24 -06:00
Pedram Amini
3a9c2ec20e ## CHANGES
- Marketplace playbook imports now prefix document paths with target folder 📁
- Added “Publish tab context as GitHub Gist” action in TabBar overlay 🚀
- Gist publish modal now supports both file previews and tab context 🧩
- Tab-to-gist publishing generates safe, descriptive markdown filenames 🏷️
- Gist publish button only appears when GitHub CLI is available 🔐
- Tab gist publishing auto-hides when no logs exist for that tab 🧾
- Auto Run queuing now avoids deadlocks by processing immediately when idle 
- Added detailed queue decision debug logging for input processing 🔎
- Usage stats now track peak values only, never decreasing over time 📈
- Expanded test coverage for gist publishing, queuing, and playbook paths 🧪
2026-01-02 17:52:13 -06:00
Pedram Amini
d65b8d2c6b ## CHANGES
- Added `dev:prod-data` to develop against real production sessions safely 🧪
- Dev mode now defaults to an isolated `maestro-dev` data directory 🗂️
- App can explicitly opt into production userData via `USE_PROD_DATA=1` 🔀
- Contributor docs now clearly map dev commands to their data directories 📚
- Reduced dev/production database lock conflicts when running side-by-side 🔒
- Tab hover overlay redesigned to look like a clean “open folder” panel 🗃️
- Removed tab title tooltip to streamline the tab interaction feel ✂️
- Toast logging now captures whether audio/TTS notifications were enabled 🎙️
- Toast logs include the exact audio command used for notifications 🧾
- TTS playback now reuses captured audio state for consistent behavior 🔊
2025-12-28 08:51:42 -06:00
Pedram Amini
c398f6a778 ## CHANGES
- Added new Git IPC handler for creating gists (26 total)! 📝
- Logger now supports dedicated `autorun` level with structured workflow data 🚦
- Autorun logs bypass log-level filtering, always capturing critical run events 🔁
- Unknown logger levels now safely fall back to info, avoiding silent drops 🛡️
- Expanded system IPC logger tests for autorun payloads and unknown levels 🧪
- Enhanced logger tests to validate autorun sequencing, filtering, and console output 📊
- Tab hover overlay now visually connects to tab with seamless connector strip 🧷
- Overlay positioning now uses exact tab bottom and tracks tab width 📐
- Simplified overlay container styling while keeping bordered content panel clean 🎨
- Switched `why-did-you-render` to dynamic import for Vite/ESM compatibility 
2025-12-28 08:30:45 -06:00
Pedram Amini
c225f0d1a5 OAuth enabled but no valid token found. Starting authentication...
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Streamlined autorun: synopsis now extracted directly from agent responses 🧠
- Added per-session overrides for path, args, env, model, context 🧩
- Improved batch stopping: abort-from-error clears error state cleanly 🛑
- Tab menu feels smarter: hide irrelevant close options dynamically 🗂️
- Session header now preserves full session name without shrinking 📌
- Cleaner Claude output parsing by removing noisy empty-text debug logs 🧹
- Better failure visibility: warn when synopsis generation yields no history ⚠️
- Docs navigation reorganized: Usage/Reference pages reordered for clarity 📚
2025-12-27 19:36:39 -06:00
Pedram Amini
367fdddf1e tests passing 2025-12-27 18:35:37 -06:00
Pedram Amini
5d46af20f1 Revert "## CHANGES"
This reverts commit 48cc601fd4.
2025-12-27 15:57:07 -06:00
Pedram Amini
48cc601fd4 ## CHANGES
- Improved session restore: AI tabs now default `saveToHistory` for older sessions 🧷
- Preserved tab preferences when reopening last tab: inherit history/thinking flags 🧠
- Stabilized input keydown handler via refs + `useCallback` wrapper 🚀
- Stabilized paste handler to avoid rerenders during frequent clipboard events 📋
- Stabilized drag-and-drop handler for smoother image dropping interactions 🪂
- Memoized File Explorer panel to cut unnecessary parent-driven rerenders 🗂️
- Memoized Right Panel (with forwardRef) to keep UI snappy 🧱
- Memoized Session List to reduce sidebar churn on state updates 📚
- Memoized Tab Bar to prevent tab UI redrawing constantly 🧭
2025-12-27 15:53:28 -06:00
Pedram Amini
3cc33c63e3 ## CHANGES
- Added IPC APIs to manage file logging and locate log files 🪵
- Improved typing responsiveness with deferred autocomplete filter computations 
- Shifted input autocomplete updates into React transitions for smoother keystrokes 🧠
- Introduced reusable `useDebouncedCallback` hook with flush/cancel controls ⏱️
- Expanded TabBar actions to copy context and export tabs as HTML 📋
- Hardened UI tests to accept responsive “Context” label variations across widths 🧪
- Updated session mocks to include AI tab state for stronger renderer coverage 🧩
- Clarified prompts: Auto Run folder allowed outside workdir for worktrees 🗂️
- Added debug logging for system-prompt template substitution context 🔍
2025-12-27 15:32:49 -06:00
Dennis Webb
fd4fb35004 Refactor tab closing logic to consider only visible tabs
• Updated tab closing functions to operate on visible tabs when unread filter is active
 • Adjusted position calculations for tab close actions to use visible tabs only
2025-12-27 13:36:19 -06:00
Dennis Webb
6f75045c60 Remove context menu and implement tab hover overlay menu
• Replaced context menu with a tab hover overlay menu for AI conversation tabs
 • Added tab management and context operations to the overlay menu
 • Implemented hover delay and fixed positioning for the overlay
 • Removed ContextMenu component and related tests
 • Updated TabBar and Tab components to handle new overlay menu actions
2025-12-27 13:32:23 -06:00
Dennis Webb
2c61cb0645 MAESTRO: Enhance tab context menu accessibility and visual polish (Phase 3)
Enhanced the tab context menu with full accessibility support and improved visual feedback:

Accessibility Enhancements:
- Added ARIA attributes (role="menu", role="menuitem", aria-disabled, aria-label)
- Implemented full keyboard navigation (Arrow keys, Enter/Space, Escape, Tab)
- Arrow keys navigate between enabled items with wrap-around behavior
- Tab key closes menu to prevent focus traps
- Mouse hover updates keyboard focus for hybrid interaction
- First enabled item receives focus on mount

Visual Polish:
- Enhanced disabled item feedback (opacity-40, cursor-default, dimmed colors)
- Stronger hover effects for enabled items (white/10 background)
- Keyboard focus indication matches hover state
- Added dividers between menu item groups using dividerAfter property
- All styling is theme-aware using theme.colors

Code Quality:
- Comprehensive JSDoc documentation on ContextMenu component
- Detailed inline comments explaining keyboard navigation logic
- Documented menu structure, disable logic, and active tab selection rules in TabBar
- All disable conditions clearly commented (single tab, first tab, last tab)

Implementation Details:
- ContextMenu.tsx: Added keyboard navigation state and handlers
- ContextMenu.tsx: Enhanced button styling with focus and disabled states
- TabBar.tsx: Added dividerAfter flags to menu items for visual grouping
- TabBar.tsx: Added comprehensive JSDoc block documenting menu behavior

Testing:
- TypeScript compilation passed with no new errors
- ESLint validation passed with no new warnings
- Manual testing recommended for keyboard navigation and screen readers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 13:31:31 -06:00
Dennis Webb
1e80b7c409 MAESTRO: Add tab context menu infrastructure (Phase 1)
Implemented foundational context menu system for AI conversation tabs:

Created:
- ContextMenu.tsx: Reusable context menu component with viewport-aware
  positioning, theme support, and accessible interactions

Modified:
- TabBar.tsx: Added right-click handler, context menu state management,
  and placeholder menu items (Close Tab, Close Others, Close Right)
- modalPriorities.ts: Added TAB_CONTEXT_MENU priority (708)

Features:
- Right-click tabs to open context menu at cursor position
- Escape key and click-outside-to-close behavior
- Automatic viewport boundary adjustment
- Full theme color support for all UI states
- Placeholder actions ready for Phase 2 implementation

Pattern: Follows existing SessionContextMenu architecture from SessionList
Portal: Renders to document.body to escape stacking context
Ready: Infrastructure complete for Phase 2 tab close functionality

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-27 13:30:26 -06:00
Pedram Amini
272c825942 OAuth enabled but no valid token found. Starting authentication...
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 🔒
2025-12-27 11:06:08 -06:00
Pedram Amini
d850528b9e ## CHANGES
- Added “Copy Context” to export conversations as clean XML clipboard text 📋
- Achievement share image now includes persistent peak usage stats tracking 🏆
- New docs access from About modal and Quick Actions menu 🔗
- Auto Run now drains queued messages after completion or stop 🧵
- Logger types centralized in new shared module for consistency 🧩
- Preload logger API is now strongly typed with richer log entries 🔒
- Token compact formatter now supports billions with “B” display 📈
- Tab context menu expanded to show context actions sooner (≥1 log) 🗂️
- Terminal output memoization fixed by including markdown edit mode dependency 🧠
- Codex reasoning text formatting updated for clearer section readability ✍️
2025-12-26 20:20:07 -06:00
Pedram Amini
ac3df7ed36 lints and tests pass 2025-12-25 13:24:07 -06:00
Pedram Amini
e7b17d0e8a ## CHANGES
- Renamed “Summarize & Continue” workflow to “Compact & Continue” everywhere 🔄
- Updated context warning sash messaging to encourage compacting at high usage ⚠️
- Refreshed quick actions entry to “Context: Compact” with same shortcut 🧭
- Adjusted tab context menu action label from “Summarize” to “Compact” 🏷️
- Improved low-context toast copy: “Cannot Compact” with clearer thresholds 🛑
- Updated UI tests to assert new “Compact & Continue” button text 🧪
- Reorganized Playground panel layout for cleaner preview and controls flow 🧱
2025-12-24 21:48:18 -06:00
Pedram Amini
faa305f88c ## CHANGES
- Worktree sessions now inherit parent groupId for consistent grouping everywhere! 🧩
- “Send to Agent” now targets existing sessions, not agent detectors! 🚀
- Context transfer now creates a brand-new tab in target session! 📩
- Transfer flow auto-navigates you to the destination session instantly! 
- Send modal redesigned: searchable session list with idle/busy indicators! 🔎
- Removed agent availability fetch; selection now derives from live sessions! 🧹
- Merge modal simplified: “Open Tabs” search replaces removed Recent view! 🎯
- Merge wording clarified: “Merge Into” with optional context cleaning toggle! 🔀
- Tab menu adds per-tab “Merge Into” and “Send” shortcuts! 🧰
- Quick Actions labels upgraded to consistent “Context:” action naming! 
2025-12-24 05:36:13 -06:00
Pedram Amini
150632be16 fix: improve context window warnings and unify context management UX
- Fix erroneous 100% context detection by removing artificial +5% increment
  on each message send (useInputProcessing.ts)
- Move context warning sash below input box with reduced height/font size
- Add wand icon (Wand2) to center of spinner in progress modals
- Restyle Settings panel context warnings to use standard checkbox pattern
  with ghosted sliders when disabled
- Unify context management menu labels across TabBar and Command+K:
  - "Summarize Context" (was "Summarize & Continue")
  - "Merge Contexts" (was "Merge With...")
  - "Send Context to Agent" (was "Send to Agent...")
- Add dividing line in tab context menu before context management options
- Move "Mark as Unread" above context management section
2025-12-24 05:36:13 -06:00
Pedram Amini
6a73d1ece7 MAESTRO: Add Summarize & Continue feature for context compaction
Implements Phase 5 of context management - allows users to compact
a conversation's context into a fresh tab with summarized content.

Features:
- Context summarization via AI with structured output format
- Chunked summarization for large contexts (>50k tokens)
- Progress modal with stage indicators and elapsed time
- Token reduction statistics display
- Cancel functionality with confirmation

Entry points:
- Tab hover overlay button (for tabs with ≥5 logs)
- Command K palette action
- Keyboard shortcut: Alt+Meta+K

New files:
- src/prompts/context-summarize.md: Summarization prompt
- src/renderer/services/contextSummarizer.ts: Core service
- src/renderer/hooks/useSummarizeAndContinue.ts: React hook
- src/renderer/components/SummarizeProgressModal.tsx: Progress UI

Modified:
- TabBar.tsx: Added button in hover overlay
- QuickActionsModal.tsx: Added Command K action
- App.tsx: Hook integration and modal rendering
- MainPanel.tsx: Prop threading
- shortcuts.ts: Added summarizeAndContinue shortcut
- useMainKeyboardHandler.ts: Shortcut handler
- tabHelpers.ts: Added createTabAtPosition
- contextMerge.ts: Added Summarize types
2025-12-24 05:36:12 -06:00
Pedram Amini
61aaa8fe19 MAESTRO: Add Send to Agent menu item to TabBar hover overlay
- Add onSendToAgent prop to TabBarProps and TabProps interfaces
- Add handleSendToAgentClick handler in Tab component
- Add "Send to Agent..." button after "Merge With..." in overlay menu
- Use ArrowRightCircle icon from lucide-react
- Only show button for tabs with established agentSessionId
- Add 6 new tests for Send to Agent functionality
- Add ArrowRightCircle and GitMerge icon mocks to test file
2025-12-24 05:36:10 -06:00
Pedram Amini
2a15885461 MAESTRO: Add session ID display enhancements for context management
- TabBar: Added tooltip showing full session ID on hover over "Copy Session ID" button
- SessionItem: Added clickable session ID badge showing first 8 chars of active tab's session ID
  - Click to copy full session ID to clipboard
  - Visual feedback with accent color and "Copied" text on click
  - Tooltip shows full ID on hover
  - Copy icon appears on hover for discoverability
2025-12-24 05:36:10 -06:00
Pedram Amini
010cee7f9a MAESTRO: Add Merge With option to TabBar hover overlay menu
Add "Merge With..." button to the tab hover overlay menu in TabBar.tsx:
- Import GitMerge icon from lucide-react
- Add onMergeWith prop to TabBarProps and TabProps interfaces
- Add handleMergeWithClick handler in Tab component
- Render "Merge With..." button after "Rename Tab" (only for tabs with agentSessionId)
- Pass onMergeWith callback through from TabBar to each Tab component

This enables the tab context menu UX entry point for the context merge feature.
2025-12-24 05:36:09 -06:00
Pedram Amini
72de3b7ed6 ## CHANGES
- No release input was provided, so changes can’t be determined yet. 🔍
- Share the repo link, tags, or commits since last release to proceed. 🚀
2025-12-22 11:43:20 -06:00
Pedram Amini
0a6c87c9ab ## CHANGES
- Added Git Worktrees for truly parallel, conflict-free multi-agent development! 🌳
- Introduced Worktree sub-agents nested under parents for clean organization! 🌿
- Built WorktreeConfigModal to manage base paths and watching behavior! ⚙️
- Added one-click Pull Request creation for worktree child sessions! 🔀
- Integrated Create PR actions into sidebar context menus and shortcuts! ⌨️
- Updated git status dropdown with “Configure Worktrees” and PR actions! 🧩
- Reworked Auto Run guidance to promote worktree sessions for parallelism! 🚀
- Removed Auto Run’s embedded worktree UI, simplifying batch runner flow! 🧹
- Simplified playbooks by dropping stored worktree settings entirely! 📓
- Polished tab starring safety by blocking stars on unsaved tabs! 
2025-12-22 00:59:40 -06:00
Pedram Amini
9eef7b7728 ## CHANGES
- Bumped Codex session cache version to refresh improved previews! 🚀
- Skips system/environment context tags when building first-message previews! 
- Adds robust system-context detection for cleaner session list summaries! 🧹
- Improves first user-message capture, avoiding noisy XML-like metadata! 🎯
- Refines CWD extraction flow, reusing parsed text more efficiently! 
- Resets aggregate stats when agentId changes, not just cwd! 🔄
- Simplifies total token display layout with cleaner inline computation! 🧠
- Shows tokens and context percentage together for faster readability! 👀
- Enhances tab naming across Claude, OpenCode, and Codex session IDs! 🏷️
- Adds smart session-id truncation fallbacks for consistent tab labels! 
2025-12-21 17:08:31 -06:00
Pedram Amini
263eebf09c MAESTRO: fix 73+ type errors in renderer hooks and components
Major type fixes:
- useSettings.ts: Add type assertions for settings.get() return values
- global.d.ts: Fix playbooks API types (maxLoops, branchNameTemplate, etc.)
- global.d.ts: Fix logger API to use proper log level union type
- useAgentExecution.ts: Simplify ref type definitions
- useExpandedSet.ts: Fix Set iteration type issues
- useTemplateAutocomplete.ts: Cast refs array properly

Component fixes:
- Fix ringColor CSS property -> use --tw-ring-color CSS variable (11 files)
- Fix Lucide icon title prop -> wrap icons in span with title
- Fix confetti shapes type in FirstRunCelebration and StandingOvation
- Fix nullable costUsd checks in AgentSessionsBrowser, SessionListItem
- Fix isDuplicate boolean coercion in AutoRunDocumentSelector
- Add lastAcknowledgedBadgeLevel to PlaygroundPanel mock stats
- Make GitLogEntry additions/deletions optional to match IPC
- Fix listDocuments -> listDocs API call in DirectorySelectionScreen

Reduces lint errors from 102 to 29.
2025-12-21 11:13:00 -06:00
Pedram Amini
74c91945b0 MAESTRO: audit Tab and queue components - remove dead code
- TabBar.tsx: removed unused props onTabRename and onCloseOthers
  (onTabRename is handled by RenameTabModal, onCloseOthers was never implemented)
- MainPanel.tsx: removed corresponding dead props and usages
- App.tsx: removed dead callback implementations (44 lines)
- ExecutionQueueIndicator.tsx: removed unused React and QueuedItem imports
2025-12-21 04:33:41 -06:00
Pedram Amini
e47f28f277 MAESTRO: Complete refactoring audit Task 73 - export hasDraft from tabHelpers
- Exported hasDraft() function from tabHelpers.ts (was internal-only)
- Updated TabBar.tsx to import hasDraft from tabHelpers instead of duplicating
- Added JSDoc documentation to hasDraft explaining its purpose
- All 12 tab helper functions are now properly exported and used
2025-12-19 19:41:34 -06:00
Pedram Amini
b1faa9f310 MAESTRO: Implement Phase 2 of multi-provider refactor - Identifier Renames
This commit completes Phase 2 of the multi-provider refactoring plan,
renaming Claude-specific identifiers to generic "agent" terminology.

Type Definition Changes:
- AITab interface: claudeSessionId → agentSessionId
- Session interface: claudeSessionId → agentSessionId, claudeCommands → agentCommands
- HistoryEntry interface: claudeSessionId → agentSessionId
- Created AgentSession interface (formerly ClaudeSession), with backward-compatible alias

Files Updated:
- 47 source files across renderer, main, web, cli
- 33 test files
- Documentation (CLAUDE.md, ARCHITECTURE.md)

All 10,701 tests pass. Build successful across main, renderer, web, and CLI.
2025-12-16 19:58:34 -06:00
Pedram Amini
6402f50bfa ## CHANGES
- Fixed unread indicator to show on active tabs immediately 🔴
- Removed debug logging from theme synchronization code 🧹
- Cleaned up broadcast service console.log statements everywhere 🗑️
- Updated test to verify unread dots on active tabs 
- Simplified theme change broadcasting logic for web clients 🎨
- Removed verbose WebSocket session output logging noise 🔇
- Streamlined broadcast methods by removing debug counters 📊
- Enhanced unread indicator behavior for better user feedback 👁️
- Optimized persistence handler theme broadcast conditions 
- Improved code readability by removing sync debug traces 📖
2025-12-16 18:03:25 -06:00
Pedram Amini
fa2e087b76 feat: add Mark as Unread option to tab context menu
Add a new menu item in the tab hover overlay that allows users to
manually mark a tab as unread. This is useful for using the unread
indicator as a todo/reminder system.

Changes:
- Add onTabMarkUnread callback prop to TabBar and MainPanel
- Add "Mark as Unread" menu item with Mail icon in tab overlay
- Implement handler in App.tsx that sets hasUnread: true on the tab
- Add test case for the new functionality

Claude ID: 4884b984-82ed-4c6d-a2ac-834040680db0
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-15 22:24:46 -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
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
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
0e7156ca41 I'd be happy to help you create a clean update summary for your GitHub project! However, I notice that you haven't provided the actual input content after "INPUT:" at the end of your message.
Could you please share:
- The commit history, pull requests, or changelog since the last release
- Any release notes or development updates
- Or any other information about what has changed in your project

Once you provide that information, I'll create an exciting CHANGES section with clean 10-word bullets and relevant emojis, formatted in Markdown with HTML links as requested.
2025-12-06 02:50:03 -06:00
Pedram Amini
09081783d0 MAESTRO: UX improvements for confirmations, process monitor, and quick actions
- Add Enter key support for queued message removal confirmation dialog
- Add kill process capability to System Process Monitor with confirmation
- Add toggle markdown rendering option to Cmd+K Quick Actions menu

Claude ID: d504ac29-93b3-46e9-8929-9be234bbcf07
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-04 00:08:56 -06:00
Pedram Amini
ad9591f274 Fix cloudflared detection in packaged app + minor UX improvements
- Fix cloudflared not being found when running from /Applications by using
  expanded PATH (includes /opt/homebrew/bin, /usr/local/bin, etc.) in
  cliDetection.ts, matching how agent-detector.ts handles binary detection
- Cache and use full cloudflared path in tunnel-manager.ts to ensure the
  binary is found when spawning the tunnel process
- Add debugging logs for process exit events to help diagnose thinking pill
  issues (App.tsx)
- Add hint about Cmd+/ shortcut in settings modal shortcuts section
- Add Cmd+U shortcut hint to tab filter tooltip

Claude ID: 110ec97f-d876-4fb9-b577-ee7a7cd4f9e5
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-03 16:25:28 -06:00
Pedram Amini
234a717007 fix: Simplify tab centering logic for reliable scroll behavior
Use manual scroll calculation instead of scrollIntoView for more
predictable centering. Active tab is now centered on every tab change
using offsetLeft calculation relative to container width.
2025-12-02 23:13:22 -06:00
Pedram Amini
3c18557c6c fix: Tab input persistence and named session resume
• Fixed tab input clearing - empty strings now persist when switching away
• Fixed named session resume - properly loads messages from closed sessions
• Improved draft indicator visibility - pencil icon now uses warning color
• Enhanced tab scrolling - uses requestAnimationFrame for reliable behavior
• Added starred parameter to named session selection callback

Claude ID: 1426ed68-c48a-4fd3-834f-33e16f851794
Maestro ID: b9bc0d08-5be2-4fdf-93cd-5618a8d53b35
2025-12-02 23:06:13 -06:00