Commit Graph

677 Commits

Author SHA1 Message Date
Pedram Amini
21935b552f ## CHANGES
- Live-mode tab broadcasts now run on a 500ms interval 
- Disabled live mode fully stops all tab-change broadcasting 📴
- Fixed remote integration effect rerunning on every keystroke 🛠️
- Remote command handling gained detailed tracing and safety warnings 🔍
- TerminalOutput wrapped with `React.memo` to cut heavy rerenders 🚀
- Input @mention detection optimized via `lastIndexOf` fast-path 🧠
- Textarea auto-grow moved to `requestAnimationFrame` for smoother typing 🎯
- Stop button now ignores clicks while stopping, preventing double-stop 🛑
- Stopping state UI now switches to warning styling for clarity 🎨
- Batch processor adds richer progress debug logs for diagnosis 🧾
2025-12-25 17:25:01 -06:00
Pedram Amini
70f4d09fcd ## CHANGES
- Keystroke-fast typing by keeping input values in local App state 
- InputContext slimmed to completions/history only, cutting noisy re-renders 🧠
- MainPanel wrapped in `React.memo` to stay stable during parent updates 🛡️
- Memoized new agent session handler to prevent prop-churn redraws 🧬
- Memoized tab select/close/new callbacks for snappier tab interactions 🗂️
- Queue item removal and queue browser open now memoized for stability 🧹
- Removed inline prop lambdas, reducing renders from changing function identities 🔧
- SessionContext memo deps clarified for correct reactive updates without over-tracking 🧾
2025-12-25 16:56:02 -06:00
Pedram Amini
ac3df7ed36 lints and tests pass 2025-12-25 13:24:07 -06:00
Pedram Amini
615a0e6b48 MAESTRO: Reorganize 48 hooks into 10 domain modules
This major refactoring effort consolidates all React hooks from a flat
structure into domain-focused modules for improved discoverability:

- session/: Navigation, sorting, grouping, activity tracking (7 hooks)
- batch/: Batch processing, Auto Run, playbooks (14 hooks)
- agent/: Agent execution, capabilities, sessions (12 hooks)
- keyboard/: Keyboard handling and shortcuts (4 hooks)
- input/: Input processing and completion (5 hooks)
- git/: Git integration and file tree (2 hooks)
- ui/: Layer management, scrolling, tooltips (8 hooks)
- remote/: Web/tunnel integration (5 hooks)
- settings/: App settings (1 hook)
- utils/: Debounce/throttle utilities (2 hooks)

All module index.ts files properly export hooks with types.
Root index.ts re-exports from all modules for backwards compatibility.
All 12,066 tests pass. TypeScript compilation clean.
2025-12-25 13:23:39 -06:00
Pedram Amini
5d145f7f41 MAESTRO: Add SessionContext for centralized session state management (Phase 6)
Extracts core session state from App.tsx to a dedicated SessionContext,
completing Phase 6 of the App.tsx decomposition plan.

States extracted:
- sessions and setSessions
- groups and setGroups
- activeSessionId and setActiveSessionId
- sessionsLoaded and setSessionsLoaded
- sessionsRef, groupsRef, activeSessionIdRef
- batchedUpdater (via useBatchedSessionUpdates)
- activeSession (computed)
- cyclePositionRef
- removedWorktreePaths (worktree tracking)

This context provides the foundational session state that other
contexts and components can now consume without prop drilling.
App.tsx continues to handle session operations like restore, create,
and delete, but the core state is now centralized in the context.
2025-12-25 13:23:38 -06:00
Pedram Amini
f4aeaf8ebd MAESTRO: Add AutoRunContext for centralized Auto Run state management (Phase 5)
This commit extracts the Auto Run document management states from App.tsx
into a dedicated AutoRunContext, continuing the App.tsx decomposition effort.

States moved to AutoRunContext:
- documentList (autoRunDocumentList) - List of document filenames
- documentTree (autoRunDocumentTree) - Hierarchical tree view of documents
- isLoadingDocuments (autoRunIsLoadingDocuments) - Loading state
- documentTaskCounts (autoRunDocumentTaskCounts) - Per-document task counts

The context also provides convenience methods:
- clearDocumentList() - Clear all document state
- updateTaskCount() - Update task count for a specific document

The useBatchProcessor hook continues to manage batch processing state,
while this context focuses on document list/tree management. This follows
the pattern established by ModalContext, UILayoutContext, InputContext,
and GroupChatContext in previous phases.

See refactor-details-2.md for the full decomposition plan.
2025-12-25 13:23:38 -06:00
Pedram Amini
ab7ea650f4 MAESTRO: Add GroupChatContext for centralized group chat state management (Phase 4)
Extracts all group chat state from App.tsx into a dedicated context provider:
- Group chats list and active group chat ID
- Messages, state, and participant tracking (per-chat and active)
- Moderator usage stats, staged images, read-only mode
- Execution queue, right panel tab, participant colors
- Error state and refs for focus management
- Convenience methods: clearGroupChatError, resetGroupChatState

This is Phase 4 of the App.tsx decomposition plan (refactor-details-2.md).
Reduces coupling and improves maintainability of group chat feature.
2025-12-25 13:23:38 -06:00
Pedram Amini
ec054eb275 MAESTRO: Add InputContext for centralized input state management (Phase 3)
Extracted input and completion states from App.tsx into a new InputContext
as part of the ongoing App.tsx decomposition effort (Phase 3 of 6).

States extracted to InputContext:
- Terminal and AI input values (terminalInputValue, aiInputValue)
- Slash command completion (slashCommandOpen, selectedSlashCommandIndex)
- Tab completion for terminal (tabCompletionOpen, selectedTabCompletionIndex, tabCompletionFilter)
- @ mention completion for AI mode (atMentionOpen, atMentionFilter, atMentionStartIndex, selectedAtMentionIndex)
- Command history browser (commandHistoryOpen, commandHistoryFilter, commandHistorySelectedIndex)

Key changes:
- Created src/renderer/contexts/InputContext.tsx with InputProvider and useInputContext
- Renamed MaestroConsole to MaestroConsoleInner and wrapped with InputProvider
- Removed duplicate useState declarations from App.tsx
- Added reset methods for each completion type (resetSlashCommand, resetTabCompletion, resetAtMention, resetCommandHistory)
- Added closeAllCompletions convenience method

Types use React.Dispatch<React.SetStateAction<T>> to support callback patterns
(e.g., setIndex(prev => prev + 1)).
2025-12-25 13:23:38 -06:00
Pedram Amini
425d02b7fa MAESTRO: Fix null session guard in handleFileClick (Final Verification fix)
Added null check for activeSession in handleFileClick useCallback to prevent
runtime error when activeSession is null. Updated dependency array to use
activeSession instead of activeSession.fullPath for proper hook compliance.
2025-12-25 13:23:36 -06:00
Pedram Amini
5f0147b12b MAESTRO: Complete Phase 10 ESLint fixes for React hooks dependencies
- Extract complex dependency array expression to useMemo (worktreeConfigKey)
- Add eslint-disable comments for intentional startup-only effects
- Add setActiveSessionId to handleOpenModeratorSession dependencies
- Add sessions and addToast to handleWizardLaunchSession dependencies
2025-12-25 13:23:36 -06:00
Pedram Amini
6d1d0ce9fa MAESTRO: Add ESLint disable comments for intentionally omitted React hook deps (Phase 9)
Added eslint-disable-next-line comments with justifications for intentionally
omitted dependencies in React hooks across multiple files:

- App.tsx: 7 hooks with intentionally omitted deps (load-once patterns,
  IPC subscriptions, specific property access instead of full objects)
- AutoRun.tsx: 4 hooks (mode switching, initial position restoration,
  search match navigation)
- BatchRunnerModal.tsx: 2 hooks (layer registration/handler stability)
- FileExplorerPanel.tsx: 2 hooks (layer registration, specific session props)

All comments explain why dependencies are intentionally omitted to prevent
unnecessary re-renders or infinite loops. TypeScript and build verified passing.
2025-12-25 13:23:36 -06:00
Pedram Amini
3c1eee60b2 MAESTRO: Fix ref cleanup for thinkingChunkBufferRef (Phase 8 ESLint fix)
Copy thinkingChunkBufferRef.current to local variable at the start
of the useEffect, then use that variable in the cleanup function.
This follows React's ESLint rule for refs in cleanup functions, which
warns that the ref value may have changed by the time cleanup runs.
2025-12-25 13:23:36 -06:00
Pedram Amini
2bf1c55afa MAESTRO: Wrap handleFileClick and toggleFolder in useCallback (Phase 7 ESLint fixes)
- handleFileClick wrapped with dependencies: activeSession.fullPath, filePreviewHistory,
  filePreviewHistoryIndex, and related setters
- toggleFolder wrapped with empty dependency array (all deps passed as parameters)
- Fixes ESLint react-hooks/exhaustive-deps warnings about functions changing on every render
2025-12-25 13:23:36 -06:00
Pedram Amini
3b34774977 MAESTRO: Fix Phase 6 React hooks dependencies (ESLint fixes)
- Add addLogToActiveTab to remoteCommand useEffect dependency array
  (function is wrapped in useCallback, so it's stable)
- Add setViewingSession to submitRename useCallback dependency array
  (state setter is stable)
- Add eslint-disable with comment for previewFile intentional omission
  (clearing preview should only happen on session change, not when preview changes)
2025-12-25 13:23:35 -06:00
Pedram Amini
515ffe99d2 MAESTRO: Prefix unused assigned variables with underscore in App.tsx (Phase 4 ESLint fixes)
Rename 24 unused variables/destructured properties in App.tsx to have underscore prefix,
satisfying ESLint @typescript-eslint/no-unused-vars rule. These variables are intentionally
unused (either reserved for future use or part of hook returns that aren't currently needed).

Variables renamed:
- Wizard hook: loadResumeState, closeWizardModal
- Settings: globalStats, tourCompleted, updateContextManagementSettings
- Modal state: shortcutsSearchQuery, lightboxSource
- Group rename: renameGroupEmojiPickerOpen, setRenameGroupEmojiPickerOpen
- Session loading: hasSessionsLoaded
- Remote commands: pendingRemoteCommandRef
- Merge session: mergeError, cancelMerge
- Transfer session: transferError, executeTransfer
- Summarize: summarizeError
- Agent execution: spawnAgentWithPrompt, spawnAgentWithPromptRef, showFlashNotification
- Batch processor: batchRunStates
- Input processing: processInputRef
- Group chat: prev (callback parameter)
- Merged session: initializeMergedSession
- Live mode: result

ESLint warnings in App.tsx reduced from 43 to 19.
2025-12-25 13:23:35 -06:00
Pedram Amini
3165ad54eb MAESTRO: Remove unused imports and local function (Phase 1 ESLint fixes)
- Remove unused imports from App.tsx: createMergedSession, TAB_SHORTCUTS, DEFAULT_CONTEXT_WINDOWS
- Remove unused import RotateCcw from AICommandsPanel.tsx
- Remove unused import useCallback from AgentPromptComposerModal.tsx
- Remove unused import Image from AutoRunExpandedModal.tsx
- Remove unused local function countUncheckedTasks from BatchRunnerModal.tsx
- Remove unused import X from DebugPackageModal.tsx
- Remove unused imports Copy and FileText from FilePreview.tsx
2025-12-25 13:23:35 -06:00
Pedram Amini
ad4e1c20a8 OAuth enabled but no valid token found. Starting authentication...
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES

- Pops unacknowledged badge celebrations when you return, focus, or move mouse 🎖️
- Stops the correct Auto Run session by passing explicit session IDs 🛑
- Auto Run Stop button now targets its own session reliably, everywhere 🧭
- Elapsed Auto Run time now shows true cumulative task work duration ⏱️
- Tracks cumulativeTaskTimeMs in batch state for accurate reporting 📊
- Resets interrupted “reset-on-completion” docs safely, even without backups 🧹
- External links now open in the system browser across the app 🌐
- Markdown/Chat links in Wizard screens open externally for safer navigation 🗺️
- Toast action links launch externally without hijacking in-app clicks 🔔
- Main Auto button got tighter sizing and clearer progress microcopy 🧩
2025-12-25 12:49:08 -06:00
Pedram Amini
e1f94d37e3 ## CHANGES
- Added smart quit confirmation flow when AI agents are still thinking 🛑
- Introduced new QuitConfirmModal listing active agents before exiting ⚠️
- Wired main↔renderer IPC lifecycle API for confirm/cancel quit actions 🔌
- Fixed Electron quit interception by making `before-quit` handler synchronous ⏱️
- Improved shutdown reliability with fire-and-forget cleanup and error logging 🧹
- Prioritized quit confirmation above other modals via layer stack ordering 🧗
- Made quit dialog safer by defaulting focus to Cancel and supporting Esc ⌨️
- Polished “thinking” terminal output styling with clearer accent emphasis 🎨
2025-12-25 02:27:19 -06:00
Pedram Amini
a07191fe0d improve context merge toast notifications with useful info
- Add sourceSessionName, targetSessionName, estimatedTokens to MergeResult
- Show source→target with token counts in merge/transfer toasts
- Include tokens saved info when grooming reduces context size
- Add MergeSessionCreatedInfo interface for richer callback data
- Make toasts clickable by including sessionId/tabId
- Replace generic 'Source'/'Target' fallbacks with descriptive names
2025-12-25 02:00:33 -06:00
Pedram Amini
7912b278fd ## CHANGES
- Context-merge toasts now name the exact target session reliably 🎯
- Merge completion callback now returns target session and tab metadata 🧩
- Removed fragile “find pendingMergedContext tab” lookup for toast routing 🧹
- Toast links now jump directly to the correct merged-into tab 🔗
- Merge flow now passes explicit target IDs, reducing state ambiguity 🛡️
2025-12-25 01:55:28 -06:00
Pedram Amini
cf0a866d52 ## CHANGES
- Replaced blocking merge modal with per-tab, non-blocking overlay progress 🧩
- Added new `MergeProgressOverlay` with stages, timer, and cancel-confirm UI ⏱️
- Implemented per-tab merge state tracking in `useMergeSession` for parallel work 🧠
- Enabled canceling merges per-tab, plus global cancel and state cleanup 🛑
- Added click-to-navigate merge success toasts with session/tab metadata 🔔
- Automatically clears completed merge state after short delay for tidy UI 🧹
- Fixed “merge into existing tab” to inject source-only context correctly 🎯
- Eliminated stale closure bugs by switching slash-command lookup to refs 🧷
- Expanded keyboard mastery tracking by recording shortcut use in File Preview 📋
- Session-jump numbering now excludes worktree children to preserve slots 🧭
2025-12-24 22:44:08 -06:00
Pedram Amini
8ed0fbc39d ## CHANGES
- Keyboard mastery celebration now shows your “Help” shortcut hint 🎹
- Celebration modal supports custom shortcut mappings with smart defaults 🧩
- Shortcut keys render as platform-friendly glyphs (⌘, ⌥, ⇧) 🧠
- Maestro celebration swaps iconography from music note to keyboard ⌨️
- Help shortcut display is memoized for smoother modal performance 
- Celebration copy now nudges you to view shortcuts and progress 🧭
2025-12-24 21:56:39 -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
1fa91000cb ## CHANGES
- Replaced blocking summarize modal with inline per-tab progress overlay 🚀
- Keep other tabs fully interactive while context compaction runs 🧠
- Added click-to-navigate success toast linking directly to new tab 🧭
- Write a system log entry into source tab after compaction 📝
- Track summarization state per tab with start time and elapsed timer ⏱️
- Added per-tab cancel support with confirmation prompt and cleanup 🛑
- MainPanel/InputArea now receive summarization progress props end-to-end 🔌
- Context summarizer now uses single-call `groomContext` API for compaction 🧹
- Removed temporary grooming session creation/sending/cleanup IPC plumbing 🧨
- Improved progress staging UI with steps, percent bar, and completion stats 📊
2025-12-24 20:47:54 -06:00
Pedram Amini
ee18984b56 OAuth enabled but no valid token found. Starting authentication...
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES

- Summarize-and-continue now unlocks via context-usage threshold, not log count 🚀
- Clearer “Cannot Summarize” toast shows required minimum context percentage ⚠️
- Hook API revamped: `canSummarize(contextUsage)` replaces tab-based eligibility checks 🧩
- Summarizer config swaps `minLogsForSummarize` for `minContextUsagePercent` default 25% 🎯
- Centralized eligibility: active-tab summarize gating uses session context usage everywhere 🔒
- History detail markdown can now optionally passthrough raw HTML safely 🎨
- MarkdownRenderer adds `allowRawHtml` prop to toggle `rehypeRaw` selectively 🧯
- Raw HTML rendering disabled by default to avoid markdown table/bold quirks 🧼
- Cleanup: removed unused tab helpers/types after context-based summarization shift 🧹
2025-12-24 20:22:54 -06:00
Pedram Amini
058b8fd3c7 feat: Complete keyboard mastery gamification with leaderboard integration
- Add leaderboard registration modal with Supabase backend integration
- Wire celebration modal into App.tsx with proper state management
- Add clipboard API and shell.openExternal to preload for leaderboard features
- Track mastery level milestones to prevent duplicate celebrations
- Add celebratedMasteryLevel to settings persistence
2025-12-24 19:57:49 -06:00
Pedram Amini
1ceadaac43 MAESTRO: Wire keyboard mastery celebration modal into App.tsx
Added import for KeyboardMasteryCelebration component, created the close
handler that acknowledges the level when dismissed, and added the modal
rendering between FirstRunCelebration and StandingOvationOverlay.
2025-12-24 19:57:16 -06:00
Pedram Amini
7ac581007a MAESTRO: Add keyboard mastery progress display to ShortcutsHelpModal
- Pass keyboardMasteryStats prop from App.tsx to ShortcutsHelpModal
- Display mastery progress bar with current level name and percentage
- Show checkmark indicators for shortcuts that have been used
- Style used shortcuts with brighter text, unused with dim text
- Add comprehensive test coverage for mastery display functionality
2025-12-24 19:57:16 -06:00
Pedram Amini
fa37074753 MAESTRO: Add keyboard mastery gamification backend
Implements the core gamification system for tracking keyboard shortcut usage:

- Add KeyboardMasteryStats interface and KeyboardMasteryLevel type to types
- Create keyboardMastery.ts constants with 5 mastery levels (Beginner to Maestro)
- Add settings persistence with recordShortcutUsage, acknowledgeKeyboardMasteryLevel
- Track all shortcut executions in useMainKeyboardHandler.ts via trackShortcut helper
- Wire up in App.tsx with pendingKeyboardMasteryLevel state and startup check
- Total of 56 trackable shortcuts (35 DEFAULT + 21 TAB_SHORTCUTS)

All 11,655 tests pass. UI components (progress bar, celebration modal) coming in next phase.
2025-12-24 19:57:16 -06:00
Pedram Amini
5d876863cb ## CHANGES
- Centralized context summarization into new reusable `groomContext` utility module 🧰
- Simplified context IPC handler by delegating grooming orchestration to shared helper 🚀
- Group chat reset now generates summaries via `groomContext` for consistent behavior 🧠
- Added robust grooming lifecycle: event wiring, cleanup, and error handling 🎛️
- Introduced idle-timeout completion to finish grooming once output stabilizes ⏱️
- Exposed active grooming session count for lightweight monitoring/debugging 📊
- Improved drag-and-drop overlay reliability with nested enter/leave tracking 🧲
- Reset drag state on global dragend/drop to avoid “stuck” UI state 🧹
- Refined Delete Worktree modal actions with clearer “Remove” vs “Delete” wording 🗑️
- Streamlined delete UX: single disabled “Deleting…” button during in-progress operations 🔒
2025-12-24 18:06:09 -06:00
Pedram Amini
bf3771a662 Merge main into context-management
Resolve conflict in src/prompts/index.ts by adopting the new generated
prompts pattern while preserving context management prompt exports.
2025-12-24 12:38:22 -06:00
Pedram Amini
fe4183c4a2 ready to merge 2025-12-24 12:35:02 -06:00
Pedram Amini
93268d3528 OAuth enabled but no valid token found. Starting authentication...
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES

- Prompts now compile from Markdown into TypeScript at build-time 🔧
- New `build:prompts` step runs automatically for dev and release builds 🏗️
- Main process stops runtime prompt file I/O for faster, safer startups 
- Group chat prompt access refactored into getter functions for flexibility 🧩
- Added IPC to reset a participant context with session summarization 🔄
- Participant cards now copy agent session IDs with one click 📋
- UI shows context-reset button when participant usage hits 40%+ ⏱️
- History markdown now supports raw HTML rendering via `rehype-raw` 🧪
- History detail supports clickable file links and in-app file previews 🗂️
- Document copy-drag enables reset-on-completion across duplicate filenames 🧷
2025-12-24 12:17:42 -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
bb6767d293 MAESTRO: Add fallback context usage estimation for agents
When agents don't provide context window size, estimate context usage
percentage using agent-specific default context windows:
- claude-code/claude: 200k tokens
- codex: 200k tokens
- opencode: 128k tokens
- aider: 128k tokens
- terminal: 0 (no context window)

Added:
- src/renderer/utils/contextUsage.ts with estimateContextUsage()
- src/main/parsers/usage-aggregator.ts updated with matching function
- Comprehensive test suites for both renderer and main process
2025-12-24 05:36:13 -06:00
Pedram Amini
0482470ccb MAESTRO: Implement Context Warning Sash for Phase 6
Add ContextWarningSash component that displays a warning banner when
context window usage reaches configurable thresholds:
- Yellow warning at 60% (default)
- Red warning at 80% (default)

Features implemented:
- ContextWarningSash component with warning level detection
- Dismissal tracking per-tab with reappearance rules
- Integration with InputArea for AI mode display
- Settings wiring from App.tsx through MainPanel to InputArea
- Visual polish with slideDown and pulse animations
- Full accessibility support (ARIA attributes, keyboard navigation)
- Comprehensive test suite with 26 passing tests

Files created:
- src/renderer/components/ContextWarningSash.tsx
- src/__tests__/renderer/components/ContextWarningSash.test.tsx

Files modified:
- src/renderer/App.tsx (added contextManagementSettings destructuring)
- src/renderer/components/MainPanel.tsx (added context warning props)
- src/renderer/components/InputArea.tsx (integrated sash component)
2025-12-24 05:36:12 -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
a61370b976 MAESTRO: Add sendToAgent keyboard shortcut handler for context transfer
- Add setSendToAgentModalOpen to keyboard handler context in App.tsx
- Add sendToAgent shortcut handler (Cmd+Shift+A) in useMainKeyboardHandler.ts
- Handler checks for supportsContextMerge capability before opening modal
2025-12-24 05:36:11 -06:00
Pedram Amini
cb66b82798 MAESTRO: Add TransferProgressModal for cross-agent context transfer
- Create TransferProgressModal.tsx reusing MergeProgressModal patterns
- Add agent transfer indicator showing source → target with arrow icon
- Implement four transfer stages with dynamic target agent labeling
- Add TRANSFER_PROGRESS modal priority (683) to modalPriorities.ts
- Integrate useSendToAgentWithSessions hook in App.tsx
- Connect TransferProgressModal to sendToAgent workflow
- Add 27 unit tests covering all modal functionality
2025-12-24 05:36:11 -06:00
Pedram Amini
b3c725f71f MAESTRO: Add Command K integration for Send to Agent feature
- Add sendToAgent keyboard shortcut (Cmd+Shift+A) to shortcuts.ts
- Add "Send to another agent" command to QuickActionsModal.tsx
- Wire up SendToAgentModal in App.tsx with state and agent detection
- Add onOpenSendToAgent prop to QuickActionsModal component
- Add 4 new tests for Send to Agent command in QuickActionsModal

The command appears when supportsContextMerge capability is available
and opens the SendToAgentModal for cross-agent context transfer.
Transfer execution logic placeholder added pending Task 7 implementation.
2025-12-24 05:36:10 -06:00
Pedram Amini
2444663448 MAESTRO: Add desktop notification and session name to merge completion callback
- Extended onSessionCreated callback to include sessionName parameter
- Added OS-level desktop notification via window.maestro.notification.show()
- Updated toast notification to include merged session name
- Auto-navigation to new session was already implemented
2025-12-24 05:36:10 -06:00
Pedram Amini
4d86e06f4d MAESTRO: Add useMergeSession hook for context merge execution logic
- Create useMergeSession.ts with full merge workflow orchestration
- Add MergeState type (idle | merging | complete | error)
- Add MergeSessionRequest interface for merge parameters
- Implement useMergeSessionWithSessions hook for App.tsx integration
- Export hook and types from hooks index
- Integrate with App.tsx: hook call with setSessions/onSessionCreated
- Update MergeSessionModal.onMerge to use executeMerge function
- Add MergeProgressModal rendering during merge operations
- Support for grooming toggle, cancellation, and auto-navigation
2025-12-24 05:36:09 -06:00
Pedram Amini
fdfa3baaba MAESTRO: Add Command K integration for Merge Session feature
- Add mergeSession keyboard shortcut (Cmd+Shift+M) to shortcuts.ts
- Add "Merge with another session" command to QuickActionsModal
- Add supportsContextMerge/supportsContextExport capabilities to frontend AgentCapabilities interface
- Add keyboard shortcut handler in useMainKeyboardHandler.ts
- Integrate MergeSessionModal into App.tsx with modal state and rendering
- Wire up onOpenMergeSession prop for Command K activation
2025-12-24 05:36:09 -06:00
Pedram Amini
176465c367 MAESTRO: Add session creation functions for context merging
- Add createMergedSession() to tabHelpers.ts for creating sessions
  pre-populated with merged context logs
- Add initializeMergedSession() to App.tsx for integrating merged
  sessions into app state with git repo detection and notifications
- Add 11 unit tests for createMergedSession covering all options
- All 139 context-related tests pass
2025-12-24 05:36:09 -06:00
Pedram Amini
97cdfc88f2 ## CHANGES
- Jump straight from group chat participants into their live sessions instantly! 🚀
- Participant session pill now navigates instead of copying IDs automatically! 🔗
- Session ID pill got an external-link icon for clearer intent! 🧭
- Session ID preview now displays uppercase for faster visual scanning! 🔠
- History Help now fetches actual storage path dynamically via Maestro APIs! 🗂️
- Home directory paths shorten to ~ for super clean file hints! 🏠
- Windows history paths render with backslashes correctly when detected! 🪟
- History path shows a Loading state while resolving asynchronously! 
- Graceful fallback history path appears when storage APIs fail! 🛡️
- History Detail now renders responses as Markdown for richer readability! 📝
2025-12-23 19:50:16 -06:00
Pedram Amini
ccd3363760 ## CHANGES
- Added per-tab Thinking toggle to stream AI reasoning live! 🧠
- Introduced capability gating for Thinking display, only when supported! 
- Prevented Thinking controls during group chats for cleaner UX! 👥
- Clearing Thinking now removes reasoning logs when toggled off! 🧹
- Prompt Composer shows new Brain icon toggle for Thinking mode! 🧠
- Thinking toggle styling reflects active state with accent highlights! 🎨
- Added new modal props for Thinking state and handlers! 🧩
- Defaulted Thinking visibility safely when sessions or tabs missing! 🛡️
- Wired App session state updates to persist Thinking per tab! 💾
- Added helpful tooltip explaining real-time reasoning stream behavior! 💡
2025-12-23 17:48:55 -06:00
Pedram Amini
c8b32e7cf8 ## CHANGES
- Input missing—share release notes, commits, or changelog to summarize changes. 🔎
2025-12-23 17:29:25 -06:00
Pedram Amini
5d91dd1631 ## CHANGES
- Share credential definitions, plugins, templates, and workflows across organizations now! 🔗
- Expanded credential management: create, import, export, and move seamlessly! 🚀
- Faster, clearer organization switching with improved UX and navigation flow! 🧭
- New API endpoints for org-shared credentials, templates, and workflows added! 🧩
- Enhanced permissions and access controls for shared resources across orgs! 🔒
- Improved audit logging and traceability for credential and workflow operations! 🧾
- UI updates for managing shared assets: cleaner tables and actions! 
- Better error handling and validation for imports and credential operations! 🛠️
- Performance improvements in list views, searches, and organization loading! 
- Documentation refreshed with new sharing features and updated integration guides! 📚
2025-12-23 11:37:53 -06:00
Pedram Amini
67ca76262a ## CHANGES
- INPUT missing—share release notes, commits, or changelog for summary please! 📌
2025-12-23 10:54:38 -06:00
Pedram Amini
bde1ffff7b feat: enhance PR creation with clickable links, history entry, and worktree deletion options
- Add clickable action links to toast notifications (for PR URLs)
- Add history entry when PR is created with branch info and description
- Show uncommitted changes warning in CreatePRModal before creating PR
- Add DeleteWorktreeModal with three options: Cancel, Confirm (keep files), Confirm and Delete on Disk
- Add git:removeWorktree IPC handler to delete worktree directories from disk
2025-12-23 00:39:56 -06:00