- Added thinkingChunkBufferRef and thinkingChunkRafIdRef refs for buffering
- Modified onThinkingChunk handler to buffer chunks per session+tab
- Use requestAnimationFrame to batch updates (~60fps / 16.67ms throttle)
- Process all buffered chunks in a single setSessions call per frame
- Added cleanup for RAF ID and buffer on component unmount
- Fixed useAgentCapabilities.test.ts to include supportsThinkingDisplay field
- Added onToggleTabShowThinking prop to QuickActionsModalProps interface
- Added 'Toggle Show Thinking' action to mainActions array with Cmd+Shift+K shortcut
- Handler clears thinking logs when toggling OFF mid-stream
- Added toggleShowThinking to TAB_SHORTCUTS with keys ['Meta', 'Shift', 'k']
- Note: Cmd+Shift+T was avoided as it conflicts with "Reopen Closed Tab"
- Added keyboard handler in useMainKeyboardHandler.ts that:
- Toggles the showThinking state on the active tab
- Clears existing thinking logs when turning OFF (per task 6.8 requirement)
Filter out LogEntry items with source='thinking' in all interrupt
and kill code paths in handleInterrupt():
- When busy tabs are interrupted and queued items exist
- When going to idle with no queued items
- When adding kill log after successful kill
- When processing next queued item after kill
- When kill succeeds with no queued items
- When kill fails and adding error log
This ensures thinking content is cleaned up when users cancel or
kill AI processes, preventing stale thinking entries from remaining
in the conversation history.
Wires up the thinking chunk display functionality:
- Add onThinkingChunk IPC listener in App.tsx to append thinking content to tab logs
- Add thinking rendering in TerminalOutput.tsx with distinct styling (border-left, badge)
- Clear thinking entries when new AI output arrives via useBatchedSessionUpdates.ts
- Add onThinkingChunk to global.d.ts MaestroAPI interface for TypeScript support
When a tab has showThinking enabled, streaming AI reasoning content appears with:
- A "thinking" badge in accentText color
- Border-left accent and subtle background
- Whitespace-preserved text display
The thinking content is automatically cleared when the final result arrives.
- Import Brain icon from lucide-react for the toggle button
- Add tabShowThinking, onToggleTabShowThinking, and supportsThinking props
to InputAreaProps interface
- Add toggle pill after Read-Only button using accentText color styling
- Add handler in App.tsx for toggling tab.showThinking state
- Pass props through MainPanel to InputArea
- Add supportsThinkingDisplay to renderer's AgentCapabilities interface
to match main process capability definition
Implement the IPC infrastructure for Show Thinking feature:
- Emit 'thinking-chunk' event in process-manager.ts when partial text events arrive
- Forward thinking-chunk events to renderer via index.ts
- Add onThinkingChunk handler to preload.ts process API
- Add TypeScript interface declaration for onThinkingChunk
This enables the renderer to receive real-time streaming content from AI agents
(Claude Code, OpenCode, Codex) for display when the tab's showThinking setting
is enabled. The renderer decides whether to display based on per-tab settings.
- Add defaultShowThinking state and setter to useSettings.ts
- Add settings UI with Brain icon in SettingsModal.tsx
- Add showThinking option to CreateTabOptions interface
- Update createTab() to accept and apply showThinking
- Wire up all createTab call sites to pass defaultShowThinking:
- App.tsx (3 locations)
- useMainKeyboardHandler.ts (Cmd+T new tab)
- useRemoteIntegration.ts (remote new tab)
- useAgentSessionManagement.ts (resume session)
- Pass defaultShowThinking through hook dependencies
- Add supportsThinkingDisplay to AgentCapabilities interface
- Set capability to true for claude-code, codex, and opencode agents
- Set capability to false for terminal, gemini-cli, qwen3-coder, and aider
- Add 'thinking' to LogEntry.source type for thinking content entries
- Add showThinking field to AITab interface for per-tab toggle state
- Update agent-capabilities test to include new capability
- No release notes or commit details were provided to summarize changes. 🔍
- Share the previous and current release tags to generate accurate bullets. 🏷️
- Paste the GitHub compare URL so I can extract major upgrades. 🔗
- Provide merged PR titles since last release to build highlights. 📋
- Include changelog excerpt if available for clean summarization. 🧾
- Tell me target audience and tone, and I’ll tailor wording. 🎯
- Confirm release date range to avoid missing important work. 🗓️
- If private repo, paste git log summary for reliable extraction. 🛡️
- I can return exactly ten 10-word bullets once input arrives. ✅
- Ready when you are—drop details and I’ll write it. 🚀
The previous cross-compilation approach from x64 to ARM64 doesn't work
for native modules like node-pty. electron-builder cannot properly
cross-compile native C/C++ modules - the ARM64 binaries still contained
x86 code.
This fix:
- Adds a native ARM64 Linux build job using ubuntu-24.04-arm runner
- Separates x64 and ARM64 Linux builds to run on their native architectures
- Uses explicit --x64 and --arm64 flags for electron-builder
- Updates artifact handling for separate x64 and ARM64 uploads
Reference: https://github.com/electron-userland/electron-builder/issues/7608Fixes#66
Track previous document index with a ref to detect actual document
switches. Only reset to preview mode when the user actually changes
documents, not when the generatedDocuments dependency triggers the
useEffect during normal editing operations.
Fixes#68
- Added Auto Run folder docs into @mention completion suggestions automatically 🚀
- Fetches Auto Run tree asynchronously, updating suggestions when paths change ⚡
- Skips redundant Auto Run fetching when already inside project tree 🔍
- Tags suggestions with source metadata for clear project-versus-autorun distinction 🏷️
- Displays “Auto Run” badge in suggestion list for instant recognition ✨
- Extends suggestion typing to include optional source field everywhere ✅
- Converts Auto Run document nodes into markdown filenames and paths consistently 📝
- Traverses nested Auto Run folders recursively to surface all docs fast 🧭
- Improves resilience by silently handling missing Auto Run folders safely 🛡️
- Prevents stale updates using cancellation guard during async fetching 🧯
- Updated Discord invite everywhere to new community link for joining! 🚀
- About modal now opens the refreshed Discord invite correctly instantly! ✨
- Quick Actions “Join Discord” now routes to updated server invite! 🔗
- Bookmark toggle hidden for worktree child sessions to prevent confusion! 🧩
- Collapsed session pills now subdivide segments for worktree parents/children! 🎛️
- Collapsed bookmarks palette now shows only parents, with segmented worktrees! 📌
- Collapsed group palette simplified using reusable segmented pill renderer! 🧱
- Collapsed ungrouped palette now uses segmented pills for clearer status! 🧭
- Unread indicators now appear only on last worktree segment pill! 🔴
- Hover tooltips now work per worktree segment for better visibility! 👀
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Worktree sessions now inherit auto-run folder path from parents automatically. 🚀
- Sidebar visual ordering now nests worktree children directly under parents. 🎉
- Bookmarks, groups, and ungrouped lists now exclude worktree children clutter. ✨
- Collapsed group and ungrouped palettes now include worktree child indicators. 🔥
- Worktree expand/collapse UI redesigned with sleek clickable drawer bands. 🚀
- Expanded worktree children now render inside styled drawer with handle. 🎨
- Session context menu adds delayed-hover group mover submenu usability boost. 🧠
- Bookmark and move-to-group actions disabled for worktree child sessions. ✅
- Git status widget “View Full Diff” button upgraded with icon. 🧾
- Git tooltip panel widened and reorganized: branch, origin, status rows. 🌟
- No release notes or commit details were provided to summarize. 📝
- Share the latest tag, previous tag, or commit range to compare. 🔎
- Paste merged PR titles or a changelog draft for ten-word bullets. 📌
- Provide repository link and release dates to identify major upgrades. 🗓️
- Include breaking changes, new features, and fixes you consider important. 🚀
Worktree Features:
- Auto-detect directories containing git worktrees and create grouped agents
- Periodic scanner (30s) discovers new worktrees in watched directories
- Track removed worktree paths to prevent re-discovery
- Bulk delete worktree groups with all agents (trash icon on 🌳 groups)
- Wire SessionList delete through App.tsx for proper cleanup
Custom Claude Commands:
- Discover custom commands from .claude/commands/ directories
- Merge custom commands with built-in agent commands
- Run both discovery methods in parallel for faster loading
- Cloudflared cache clearing now resets installed and path caches reliably! 🧹
- Cache reset leaves cloudflared path null after failed detection attempts! 🔒
- Claude-code session renames now call `window.maestro.claude.updateSessionName` correctly! ✍️
- RenameSessionModal updated to use Claude rename API for claude-code! 🧠
- Tab switcher now syncs named tabs via Claude session renaming! 🔁
- Remote tab rename persists names through Claude-code integration pathway! 🌐
- Agent sessions API expanded with `setSessionName` for safer naming! 🏷️
- Agent sessions origins fetching added via new `getOrigins` method! 🧭
- AutoRunLightbox now renders via portal with ultra-high z-index! 🪟
- Save buttons now use black text for better contrast readability! 🎨
Follow-up to PR #63 - addresses code duplication and adds caching:
- Add isGhInstalled(), getGhPath(), resolveGhPath() to cliDetection.ts
- Follow existing cloudflared pattern with caching
- Replace duplicated detection logic in checkGhCli and createPR handlers
- Both handlers now use resolveGhPath() for consistent behavior
This reduces code duplication (~34 lines removed) and improves
performance by caching the gh CLI path after first detection.
Found expired OAuth token, attempting refresh...
Token refresh successful
## CHANGES
- Added generic agent session origins store supporting Codex, OpenCode, others! 🚀
- Introduced IPC handlers to fetch origins, rename, and star sessions! 🔥
- Exposed new preload APIs for cross-agent origins, naming, starring! ✨
- Updated UI to persist names/stars per agent, not Claude-only! 🎉
- AgentSessionsModal now loads starred sessions from correct per-agent origins! 🌟
- AgentSessionsBrowser now renames and stars sessions via generic origins! 💪
- Session pagination now merges metadata from per-agent origins automatically! ⚡
- OpenCode sessions now fall back to global project for discovery! 🧭
- Global OpenCode sessions now filter by directory, matching project paths! 🎯
- SessionItem right-side indicators reordered: git dirty before bookmark toggle! 🧩
- Add platform-specific command detection (where/which)
- Use expanded environment for PATH resolution
- Handle Windows multi-path output by taking first match
- Export getExpandedEnv() from cliDetection.ts for reuse
- Add proper fallback when detection fails
Addresses review comments from PR #59
Co-authored-by: oliveiraantoniocc <411161+oliveiraantoniocc@users.noreply.github.com>
- Windows shell detection now prioritizes PowerShell first, improving reliability. 🪟
- Windows `sh` and `bash` commands now map to `bash.exe`. 🧩
- About modal tests now match Hands-on Time text more robustly. ✅
- Execution Queue Browser now advertises drag-and-drop reordering in helper text. 🧷
- Codex session cache bumped to v3 for improved previews. 🗃️
- Session previews now skip markdown-style system context headers automatically. 🧹
- Agent sessions stats now compute locally for non-Claude agents. 📊
- Claude stats subscription now keys off `agentId`, not toolType. 🔌
- Sessions now merge origin, name, and starred metadata during pagination. 🔄
- Group chat exports now embed markdown images cleanly using images map. 🖼️
- Added session_meta support with payload-based metadata for richer sessions! 🚀
- Preserved legacy metadata parsing while prioritizing new payload timestamps! 🔄
- Project path now read from session_meta cwd, reducing guesswork! 🧭
- Extract text now includes output_text parts for complete transcripts! 📝
- Session IDs now reliably resolve from payload.id or legacy fallback! 🆔
- Codex parser now captures function_call tool invocations as messages! 🛠️
- Codex now records function_call_output results for end-to-end tool traces! 📦
- OpenCode storage now models worktree projects, time, and summaries! 🧩
- OpenCode project detection improved via normalization, subdirectory, and hash matching! 🎯
- OpenCode previews prefer first assistant reply; timestamps converted from Unix! ⏱️
- Session previews now prefer first assistant reply over user prompt! 🚀
- Fallback to first user message when assistant response missing. 🛟
- Claude session parser stops scanning once assistant preview found. ⚡
- Codex parser captures assistant previews across message and payload formats. 🔎
- Agent message completions now populate assistant-first preview correctly. 🤖
- First-message preview now uses unified `previewMessage` selection logic. 🧠
- Timestamp handling stays accurate while improving preview meaningfulness. ⏱️
- Message counting remains intact while preview extraction gets smarter. 📊
- Preview slicing now consistently applies to assistant-first chosen text. ✂️
- Session list previews become more informative, reducing system-context noise. 🎯
- Added Windows-path truncation coverage so session lists display correctly everywhere 🪟
- Improved code-fence language parsing to support C++ mapping to cpp 🧠
- Refined About modal stats copy with clearer “Hands-on Time” labeling ⏱️
- Simplified mobile connection timeout typing for safer browser compatibility 🔧
- Centralized haptic triggering into shared constants for cleaner reuse 📦
- Upgraded haptics detection to verify vibrate is an actual function 📳
- Tuned input-mode toggle haptics to a crisp light vibration duration 🎚️
- Strengthened interrupt button feedback with consistent strong haptic pulses 🛑
- Removed redundant default export bundle from CommandInputButtons module 🧹
- Expanded test suite to catch edge cases across platforms and languages ✅
- Crash reporting now runs only in production, keeping development logs spotless. 🚀
- Renderer Sentry initialization skips local dev servers, eliminating hot-reload noise. 🔇
- TTS stdin now catches EPIPE errors, preventing unexpected crashes during playback. 🛡️
- ProcessManager stdin error handling added, logging EPIPE without taking down sessions. 🧰
- Closing tabs now respects “unread-only” filtering, choosing the next unread tab. ✨
- Keyboard shortcut tab-closing now passes unread-only state for consistent navigation. ⌨️
- MainPanel Git log opening is now optional-safe, avoiding undefined callback crashes. 🔒
- Mobile session path truncation now supports Windows separators for cleaner display. 🪟
- Mobile haptics centralized via shared triggerHaptic helper, simplifying feedback logic. 📳
- Code block parsing now supports richer language tags, trimmed for accurate highlighting. 📝