Skip to content

fix: gate splash safety timeout on sessionsLoaded#690

Open
pedramamini wants to merge 799 commits intomainfrom
rc
Open

fix: gate splash safety timeout on sessionsLoaded#690
pedramamini wants to merge 799 commits intomainfrom
rc

Conversation

@pedramamini
Copy link
Copy Markdown
Collaborator

Summary

  • Fix splash screen regression: The 5-second safety timeout in useFileTreeManagement started counting from component mount, before settings and sessions had finished loading. Session restoration (git checks, migrations) consumed most of the budget, causing the splash to dismiss while the file tree was still loading — leaving the UI in a visually incomplete "curtains up but not ready" state.
  • Gate timeout on sessionsLoaded: The safety timeout now only starts counting after sessions have been restored, giving the full 5 seconds to the actual file tree load.
  • FeedbackChatView copy/icon update: Improved the provider-select step with a centered icon and friendlier instructional copy.

Test plan

  • Added test: does not fire safety timeout until sessionsLoaded is true — verifies timeout doesn't fire before sessions load, then fires correctly after
  • Existing tests updated with sessionsLoaded: true in beforeEach to match new gate
  • Manual: launch app with multiple agents/sessions, verify splash stays up until file tree finishes loading
  • Manual: launch app with SSH session to unreachable host, verify splash dismisses after 5s (not 5s from mount)

reachraza and others added 30 commits March 18, 2026 03:14
…w pipeline

When a selected pipeline contained an agent that also existed in another
pipeline, the other pipeline's copy rendered at 40% opacity as a 'ghost
duplicate'. This was jarring — the user saw a second node pop up as soon
as they dragged the shared agent onto the new canvas.

Root cause: convertToReactFlowNodes showed dimmed nodes from non-active
pipelines when the same session appeared in both. The dimming feature was
intended for cross-pipeline awareness but caused visual confusion.

Fix: skip all non-active pipeline nodes entirely. The 'All Pipelines' view
is unaffected (all pipelines are active when selectedPipelineId === null).
Multi-pipeline color indicators on agent nodes continue to work correctly
since agentPipelineCount/agentPipelineMap are still computed globally.

Extracted convertToReactFlowNodes, convertToReactFlowEdges, and
getTriggerConfigSummary to utils/pipelineGraph.ts so they can be unit-tested.
Added 51 tests covering the bug fix, All Pipelines view, selected pipeline
isolation, multi-pipeline metadata, y-offsets, and edge state.
Fill test coverage gaps across the Cue event-driven automation system:

- Add 9 unit tests for calculateNextScheduledTime() pure function
  (day filters, midnight crossing, week boundary wrap, invalid times)
- Add 13 integration tests for time.scheduled engine trigger
  (fire/no-fire timing, schedule_days, filters, payload, output_prompt,
  prompt_file, disabled subs, timer cleanup)
- Add 3 tests for task.pending template variable population in executor
  (taskFile, taskCount, taskList, taskContent, defaults for missing payload)
- Add 3 tests for output_prompt_file YAML loader resolution
  (file resolve, inline wins over file, missing file fallback)
- Add 1 documentation test confirming time.scheduled is intentionally
  not reconciled after sleep/wake (by design)
…validation, GitHub state filter

- Add scheduledFiredKeys guard to time.scheduled preventing double-fire
  when YAML hot reload refreshes config within the same minute
- Add unknown event type validation in YAML validator with helpful error
  listing valid types (catches typos like "file.change")
- Add gh_state field to GitHub triggers: "open" (default), "closed",
  "merged", or "all" — enables triggering on PR merges/closures
- Add CUE_EVENT_TYPES and CUE_GITHUB_STATES arrays as validation sources
- Add ghMergedAt template variable and merged_at payload field
- 18 new tests across 3 test files (379 total Cue tests, 23,175 full suite)
Fixes TS2353 lint error from the previous commit where ghMergedAt was
used in cue-executor.ts but not declared in the template context type.
The initial selection style check was asserting synchronously after the
async session load, causing intermittent failures when the re-render
hadn't completed yet.
Create src/shared/cli-server-discovery.ts with read/write/delete functions
for the CLI server discovery file (cli-server.json). Follows the same
pattern as cli-activity.ts with getConfigDir(), PID validation, and
atomic writes (write to .tmp then rename).

Exports: CliServerInfo interface, writeCliServerInfo, readCliServerInfo,
deleteCliServerInfo, isCliServerRunning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ensureCliServer() to web handlers that creates/starts the web server
during app initialization and writes the discovery file (cli-server.json)
so the CLI can locate and connect via WebSocket. The existing live:startServer
handler continues to work — if the server is already running it returns the
existing URL.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…stop

Add deleteCliServerInfo() calls in three places:
- quit-handler.ts performCleanup(): after web server stop, before stats DB close
- web.ts live:stopServer handler: when server is manually stopped
- web.ts live:disableAll handler: when all live sessions are disabled

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tests cover writeCliServerInfo, readCliServerInfo, deleteCliServerInfo,
and isCliServerRunning with mocked fs/os modules. Includes platform-specific
config dir tests and validation edge cases (21 tests).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add new open_file_tab message handler across the web-server module:
- messageHandlers.ts: switch case, handler method, callback interface
- types.ts: OpenFileTabCallback type
- CallbackRegistry.ts: storage, getter, setter
- WebServer.ts: callback setter, message handler wiring
- web-server-factory.ts: forward to renderer via remote:openFileTab IPC

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements the refresh_auto_run_docs message across the 5-file callback
pattern: messageHandlers → types → CallbackRegistry → WebServer → factory.
Also fixes pre-existing test mock missing setOpenFileTab/setRefreshFileTree
callback methods.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…vents

Add onRemoteOpenFileTab, onRemoteRefreshFileTree, and onRemoteRefreshAutoRunDocs
listeners in preload/process.ts and corresponding type declarations in global.d.ts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…file_tree, refresh_auto_run_docs

Add three useEffect blocks in useRemoteIntegration.ts that subscribe to
preload IPC events and dispatch CustomEvents. Add corresponding event
listeners in App.tsx that handle file reading/opening, file tree refresh,
and auto-run document refresh.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ow foregrounding

When focus: true is sent with a select_session message, the desktop
window is brought to the foreground via mainWindow.show() and
mainWindow.focus() before forwarding the session selection to the
renderer.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… refresh_file_tree, refresh_auto_run_docs, select_session focus)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements MaestroClient class and withMaestroClient helper that connects
to the running Maestro desktop app via the discovery file from Phase 01.
Supports connect/disconnect lifecycle, typed command/response matching,
and configurable timeouts.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds `maestro-cli open-file <file-path> [--session <id>]` command that opens
a file as a preview tab in the running Maestro desktop app via WebSocket IPC.

Also extracts resolveSessionId() into maestro-client.ts as a shared helper
for commands that need session resolution with fallback to first available.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds -t/--tab option to the CLI send command that, after a successful
send, connects to the Maestro desktop app via WebSocket and focuses
the agent's session tab. Gracefully warns if the desktop app is not
running without failing the send itself.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds `maestro-cli status` command that checks if the Maestro desktop
app is running and reachable via WebSocket. Reports port and session
count on success, or clear error messages for common failure modes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements the configure_auto_run message handler across the full
WebSocket IPC stack: message handler, callback type, registry,
WebServer, factory wiring, preload listener, and renderer type
declarations. Uses response channel pattern for async results.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add onRemoteConfigureAutoRun listener in useRemoteIntegration.ts that
dispatches maestro:configureAutoRun CustomEvent, and handler in App.tsx
that supports three modes: save as playbook, launch batch run, or
configure-only. Uses response channel pattern for WebSocket confirmation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds `maestro-cli auto-run <docs...>` command that sends
configure_auto_run messages over WebSocket IPC to the desktop app.
Supports --prompt, --loop, --max-loops, --save-as, --launch, and
--reset-on-completion options.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Documents maestro-cli commands (open-file, refresh-files, refresh-auto-run,
auto-run, status) in the agent system prompt so AI agents know how to
interact with the Maestro desktop app via CLI.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…bSocket handler

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix issues identified by Greptile and CodeRabbit reviews:
- Send full absolute path instead of basename in auto-run documents
- Fix WebSocket timeout race condition with settled flag
- Include requestId in outgoing messages for correct response matching
- Wrap test env var cleanup in try/finally with proper delete for undefined
- Catch callback failures in onRemoteConfigureAutoRun preload handler
- Validate document entries in messageHandlers before forwarding
- Use randomUUID for collision-free response channels
- Pass SSH remote context into file reads for open-file-tab
- Fix refresh-auto-run to target the requested session
- Return error for configure-only branch instead of silent no-op

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
reachraza and others added 28 commits March 27, 2026 19:28
useFilePreviewSearch:
- Fix clamp logic: initialize currentMatchIndex from -1 to 0 when new
  matches appear (was staying at -1 due to Math.min(-1, len-1) = -1)
- Fix goToPrevMatch wrap-around from -1 (was skipping last match)
- Add displayedContentLength dep to code highlight effect so marks are
  re-applied after "Load full file" replaces DOM nodes

filePreviewUtils:
- Hoist languageMap to module-scope LANGUAGE_MAP (same pattern as
  BINARY_EXTENSIONS)
- Guard formatFileSize against negative bytes (Math.log(neg) = NaN)

FilePreview shell:
- Move isLargeFile + displayContent memos before useFilePreviewSearch
  call so displayedContentLength is available
…rch sync

filePreviewUtils:
- Code fence regex allows 0-3 leading spaces (GFM spec) in both
  countMarkdownTasks and extractHeadings
- formatFileSize clamps index to sizes array length (prevents undefined
  unit for values >= 1 PB)
- resolveImagePath returns normalized src directly when markdownDir is
  empty (root-level files)

useFilePreviewSearch:
- Markdown CSS Highlight API branch now syncs currentMatchIndex (was
  only setting totalMatches, leaving index stale)
- No-matches branch in markdown effect sets currentMatchIndex to -1
- initialSearchQuery capped to MAX_SEARCH_QUERY_LENGTH on init
refactor(filepreview): decompose FilePreview + zoomable image viewer
Claude Code emits response text in assistant messages, not in the
result message's `result` field (which is empty). The CLI spawner
only checked `msg.result`, so it always returned `response: null`.

Now accumulates text from assistant messages as a fallback and
flushes the JSON line buffer on process close to handle output
that lacks a trailing newline.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The default shell was hardcoded to 'zsh' in the renderer settings store,
IPC handler fallbacks, and tab merge helpers. On Windows, zsh doesn't
exist, causing terminal tab spawns to fail with ENOENT immediately.

Now defaults to 'powershell' on Windows and 'zsh' on Unix, matching the
existing main-process getDefaultShell() logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tors

Address review feedback:
- Extract processMessage/processEvent helpers to deduplicate parsing
  logic between stdout data handler and close handler buffer flush
- Add newline separators between accumulated assistant text blocks
  to prevent concatenation without whitespace

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The previous commit changed the default shell from 'zsh' to 'powershell'
on Windows, but 'powershell' is a shell ID, not an executable name.
PtySpawner passed it directly to pty.spawn(), which fails on Windows
because it needs 'powershell.exe'. Use resolveShellPath() to translate
shell IDs to executable names before spawning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…est assertion

- Narrow try/catch in close handler to only catch JSON.parse failures,
  letting unexpected errors in processMessage bubble up
- Fix trailing whitespace caught by CI prettier
- Add missing usage assertion in buffer flush test

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Addresses review nitpick — mockReturnValueOnce avoids leaking state
if an assertion fails before the manual reset lines.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…umb nav fix

Replace form-based FeedbackView with conversational FeedbackChatView that
guides users through structured feedback via chat. Add IPC handlers for
issue search, subscription, conversation prompts, and conversation-based
submission with debug package support. Swap sidebar Wizard button for
Feedback button. Add NewAgentChoiceModal for wizard vs manual agent setup.
Fix Cmd+Shift+<> breadcrumb navigation by mapping Shift+comma/period to
their shifted characters in the shortcut matcher.
- Add missing feedback mock methods (getConversationPrompt, submitConversation, searchIssues, subscribeIssue) to test setup
- Update useSessionCrud test to expect newAgentChoice modal instead of newInstance
…fications toggle

- Search fires after every agent response (not just at 80%), using gh search
  issues for full-text matching across open and closed issues
- Inline "similar issues found" card appears mid-conversation with +1 subscribe
- Fixed race condition where clicking Submit before useEffect search would skip
  duplicate detection entirely
- Added custom notifications toggle to Quick Actions command palette
Tab overlay menus were rendering off-screen when tabs were near the
right or bottom edge. Added viewport clamping to useTabHoverOverlay
hook so all tab types (AI, File, Terminal) stay fully visible.
…esize

- Pin header (progress bar) and footer (screenshots/input) in feedback
  modal so only messages scroll — adds contentClassName prop to Modal
- Narrow feedback modal (420px) during provider selection, 780px for chat
- Cmd+N bypasses choice modal and opens manual agent creation directly
- Textarea auto-grows as user types (up to 176px), matching GroupChatInput
- Submit button text changed to black for readability on green background
Enhance web/mobile hooks and components to align with desktop feature set:
- Update hooks (cue, group chat, settings, git status, websocket, etc.) for better state management
- Expand App.tsx with improved routing, navigation, and feature integration
- Refine panels (AutoRun, Git, Settings, Achievements, UsageDashboard) for mobile UX
- Fix formatting across 22 web files (Prettier)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix bugs and issues identified by CodeRabbit and Greptile reviews:

- useSettings: roll back optimistic update when server returns success: false
- useWebSocket: reject pending requests on error-typed server responses
- AllSessionsView: use div instead of button when renaming (invalid nesting),
  add stopPropagation to Escape in rename input
- GitStatusPanel: use charAt(0) for status filtering to handle '??' correctly
- useRemoteIntegration: use destination path for renamed files in git status
- AutoRunPanel: hide task counter when totals are unknown (prevents "Task 1/0")
- useMobileKeyboardHandler: guard preventDefault behind handler existence checks
- AutoRunSetupSheet: reinitialize draft state when sessionId changes
- RightDrawer: default to 'history' tab instead of unimplemented 'files'
- ContextManagementSheet: prevent Escape from closing during execution

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- ContextManagementSheet: remove unused progressListenerRef and its cleanup effect
- RightDrawer: remove unused props from AutoRunTabContent signature and call site,
  prefix remaining unused RightDrawer props with _ for TS compliance

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Symphony features called `execFileNoThrow('gh', ...)` directly without
using the existing `resolveGhPath()` utility. This meant gh CLI was not
found when installed in non-standard locations (official MSI installer,
Scoop, Chocolatey, Winget) because:

1. `gh` was missing from `knownExeCommands` in execFile.ts, forcing
   unnecessary shell execution on Windows
2. No known installation paths existed for `gh` in the path prober
3. Symphony files bypassed the `resolveGhPath()` detection that other
   features (git handlers, Cue poller) already used correctly

Changes:
- Add `gh` to `knownExeCommands` for direct execution on Windows
- Add `gh` known paths for Windows (MSI, Winget, Scoop, Chocolatey)
  and Unix (Homebrew, local bin, Linuxbrew)
- Add GitHub CLI MSI install dir to expanded env PATH
- Replace all bare `'gh'` calls in symphony-fork.ts, symphony-runner.ts,
  and symphony.ts IPC handler with `resolveGhPath()`
- Update test mocks to include cliDetection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address review feedback:
- Add GitHub CLI MSI dir to buildExpandedPath() in shared/pathUtils.ts
  so resolveGhPath() can detect gh via isGhInstalled() (P1 - Greptile)
- Add Linuxbrew bin dir to buildExpandedPath() Unix paths so gh
  installed via Linuxbrew is discoverable (P1 - CodeRabbit)
- Fix inaccurate "Conda / Mamba" comment on ~/bin to "User bin
  directory" (P2 - Greptile)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix(cli): capture response from claude-code in maestro-cli send
fix: use platform-aware default shell for Windows terminal tabs
fix(symphony): use resolveGhPath() for gh CLI detection
…ix any type

- Replace 3 console.log calls in useWebSocket.ts with webLogger.debug
  (fired on every WS message in production)
- Remove 6 debug console.log calls from findParentSession in AllSessionsView
- Add missing broadcast types to ServerMessageType union: session_live,
  session_offline, context_operation_progress, context_operation_complete,
  cue_activity_event, cue_subscriptions_changed
- Replace `any` type on configureAutoRun config param in WebServer.ts with
  proper type derived from CallbackRegistry
Bring quit handler safety timeout (#677, #689) and power manager
into RC. Resolve merge conflicts:
- quit-handler.ts: keep both deleteCliServerInfo (RC) and
  powerManager + QUIT_CONFIRMATION_TIMEOUT_MS (main)
- index.ts: keep Cue engine stop (RC) and powerManager +
  stopSessionCleanup (main)
- releases.md: take main's version (more complete changelog)
feat(web): mobile UX parity with desktop interface
…e dismissal

The 5-second safety timeout in useFileTreeManagement started counting
from component mount, before settings and sessions had finished loading.
Session restoration (git checks, migrations) could consume 2-4s of the
budget, leaving barely 1-2s for the actual file tree load. Once the
timeout fired, the splash dismissed immediately while the UI was still
loading.

Gate the timeout on sessionsLoaded so the full 5 seconds is dedicated
to the file tree load. Also updates FeedbackChatView with improved
provider-select copy and icon.
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 29, 2026

Important

Review skipped

Too many files!

This PR contains 292 files, which is 142 over the limit of 150.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 823883fa-ff44-4d98-bea8-ffc6c7cf63a4

📥 Commits

Reviewing files that changed from the base of the PR and between 9e53fe5 and 5bc01f5.

⛔ Files ignored due to path filters (8)
  • docs/feedback-flow/feedback-attachment-pr491-success.png is excluded by !**/*.png
  • docs/feedback-flow/feedback-button-pr491-success.png is excluded by !**/*.png
  • docs/feedback-flow/feedback-button-pr491.png is excluded by !**/*.png
  • docs/feedback-flow/feedback-issue-created-pr491-success.png is excluded by !**/*.png
  • docs/feedback-flow/feedback-modal-pr491-success.png is excluded by !**/*.png
  • docs/feedback-flow/feedback-session-pr491.png is excluded by !**/*.png
  • docs/feedback-flow/feedback-submit-clicked-pr491-success.png is excluded by !**/*.png
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (292)
  • .coderabbit.yaml
  • .github/ISSUE_TEMPLATE/bug_report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature_request.yml
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • .gitignore
  • .husky/_/.gitignore
  • .husky/_/applypatch-msg
  • .husky/_/commit-msg
  • .husky/_/h
  • .husky/_/husky.sh
  • .husky/_/post-applypatch
  • .husky/_/post-checkout
  • .husky/_/post-commit
  • .husky/_/post-merge
  • .husky/_/post-rewrite
  • .husky/_/pre-applypatch
  • .husky/_/pre-auto-gc
  • .husky/_/pre-commit
  • .husky/_/pre-merge-commit
  • .husky/_/pre-push
  • .husky/_/pre-rebase
  • .husky/_/prepare-commit-msg
  • .husky/pre-merge-commit
  • .prettierignore
  • ARCHITECTURE.md
  • CLAUDE-IPC.md
  • CLAUDE-PATTERNS.md
  • CLAUDE-WIZARD.md
  • CLAUDE.md
  • Plans/rippling-inventing-lamport.md
  • docs/assets/theme-hint.js
  • docs/autorun-playbooks.md
  • docs/bmad-commands.md
  • docs/configuration.md
  • docs/deep-links.md
  • docs/docs.json
  • docs/encore-features.md
  • docs/features.md
  • docs/getting-started.md
  • docs/maestro-cue-advanced.md
  • docs/maestro-cue-configuration.md
  • docs/maestro-cue-events.md
  • docs/maestro-cue-examples.md
  • docs/maestro-cue.md
  • docs/openspec-commands.md
  • docs/speckit-commands.md
  • e2e/autorun-batch.spec.ts
  • e2e/autorun-editing.spec.ts
  • e2e/autorun-sessions.spec.ts
  • e2e/autorun-setup.spec.ts
  • e2e/fixtures/electron-app.ts
  • package.json
  • scripts/refresh-bmad.mjs
  • src/__tests__/cli/commands/auto-run.test.ts
  • src/__tests__/cli/commands/list-sessions.test.ts
  • src/__tests__/cli/commands/open-file.test.ts
  • src/__tests__/cli/commands/send.test.ts
  • src/__tests__/cli/services/agent-spawner.test.ts
  • src/__tests__/cli/services/maestro-client.test.ts
  • src/__tests__/integration/symphony.integration.test.ts
  • src/__tests__/main/agents/capabilities.test.ts
  • src/__tests__/main/autorun-folder-validation.test.ts
  • src/__tests__/main/autorun-ipc.test.ts
  • src/__tests__/main/bmad-manager.test.ts
  • src/__tests__/main/cue/cue-activity-log.test.ts
  • src/__tests__/main/cue/cue-completion-chains.test.ts
  • src/__tests__/main/cue/cue-concurrency.test.ts
  • src/__tests__/main/cue/cue-db.test.ts
  • src/__tests__/main/cue/cue-engine.test.ts
  • src/__tests__/main/cue/cue-event-factory.test.ts
  • src/__tests__/main/cue/cue-executor.test.ts
  • src/__tests__/main/cue/cue-file-watcher.test.ts
  • src/__tests__/main/cue/cue-filter.test.ts
  • src/__tests__/main/cue/cue-github-poller.test.ts
  • src/__tests__/main/cue/cue-ipc-handlers.test.ts
  • src/__tests__/main/cue/cue-multi-hop-chains.test.ts
  • src/__tests__/main/cue/cue-reconciler.test.ts
  • src/__tests__/main/cue/cue-session-lifecycle.test.ts
  • src/__tests__/main/cue/cue-sleep-prevention.test.ts
  • src/__tests__/main/cue/cue-sleep-wake.test.ts
  • src/__tests__/main/cue/cue-startup.test.ts
  • src/__tests__/main/cue/cue-task-scanner.test.ts
  • src/__tests__/main/cue/cue-template-variables.test.ts
  • src/__tests__/main/cue/cue-test-helpers.ts
  • src/__tests__/main/cue/cue-yaml-loader.test.ts
  • src/__tests__/main/deep-links.test.ts
  • src/__tests__/main/group-chat/group-chat-log.test.ts
  • src/__tests__/main/ipc/handlers/agents.test.ts
  • src/__tests__/main/ipc/handlers/autorun.test.ts
  • src/__tests__/main/ipc/handlers/bmad.test.ts
  • src/__tests__/main/ipc/handlers/feedback.test.ts
  • src/__tests__/main/ipc/handlers/filesystem.test.ts
  • src/__tests__/main/ipc/handlers/groupChat.test.ts
  • src/__tests__/main/ipc/handlers/history.test.ts
  • src/__tests__/main/ipc/handlers/notifications.test.ts
  • src/__tests__/main/ipc/handlers/process.test.ts
  • src/__tests__/main/ipc/handlers/symphony.test.ts
  • src/__tests__/main/ipc/handlers/tabNaming.test.ts
  • src/__tests__/main/preload/agents.test.ts
  • src/__tests__/main/preload/feedback.test.ts
  • src/__tests__/main/preload/fs.test.ts
  • src/__tests__/main/preload/notifications.test.ts
  • src/__tests__/main/process-listeners/exit-listener.test.ts
  • src/__tests__/main/process-manager.test.ts
  • src/__tests__/main/process-manager/spawners/PtySpawner.test.ts
  • src/__tests__/main/services/symphony-runner.test.ts
  • src/__tests__/main/stats/auto-run.test.ts
  • src/__tests__/main/stores/utils.test.ts
  • src/__tests__/main/utils/context-groomer.test.ts
  • src/__tests__/main/utils/logger.test.ts
  • src/__tests__/main/utils/symphony-fork.test.ts
  • src/__tests__/main/web-server/handlers/messageHandlers.test.ts
  • src/__tests__/main/web-server/managers/CallbackRegistry.test.ts
  • src/__tests__/main/web-server/web-server-factory.test.ts
  • src/__tests__/performance/AutoRunMemoryLeaks.test.tsx
  • src/__tests__/performance/AutoRunRapidInteractions.test.tsx
  • src/__tests__/renderer/components/AboutModal.test.tsx
  • src/__tests__/renderer/components/AgentSessionsModal.test.tsx
  • src/__tests__/renderer/components/AppAgentModals.test.tsx
  • src/__tests__/renderer/components/AppConfirmModals.test.tsx
  • src/__tests__/renderer/components/AppGroupChatModals.test.tsx
  • src/__tests__/renderer/components/AppGroupModals.test.tsx
  • src/__tests__/renderer/components/AppInfoModals.test.tsx
  • src/__tests__/renderer/components/AppModals-selfSourced.test.tsx
  • src/__tests__/renderer/components/AppSessionModals.test.tsx
  • src/__tests__/renderer/components/AppWorktreeModals.test.tsx
  • src/__tests__/renderer/components/AutoRunDocumentSelector.test.tsx
  • src/__tests__/renderer/components/AutoRunSessionIsolation.test.tsx
  • src/__tests__/renderer/components/CueHelpModal.test.tsx
  • src/__tests__/renderer/components/CueModal.test.tsx
  • src/__tests__/renderer/components/CueModal/StatusDot.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/PipelineCanvas.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/PipelineContextMenu.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/PipelineSelector.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/PipelineToolbar.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/drawers/AgentDrawer.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/drawers/TriggerDrawer.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/nodes/AgentNode.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/nodes/TriggerNode.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/panels/CueSettingsPanel.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/panels/EdgeConfigPanel.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/panels/NodeConfigPanel.test.tsx
  • src/__tests__/renderer/components/CuePipelineEditor/utils/pipelineChainIntegration.test.ts
  • src/__tests__/renderer/components/CuePipelineEditor/utils/pipelineGraph.test.ts
  • src/__tests__/renderer/components/CuePipelineEditor/utils/pipelineLayout.test.ts
  • src/__tests__/renderer/components/CuePipelineEditor/utils/pipelineToYaml.test.ts
  • src/__tests__/renderer/components/CuePipelineEditor/utils/yamlToPipeline.test.ts
  • src/__tests__/renderer/components/CueYamlEditor.test.tsx
  • src/__tests__/renderer/components/DirectorNotes/AIOverviewTab.test.tsx
  • src/__tests__/renderer/components/DirectorNotes/DirectorNotesModal.test.tsx
  • src/__tests__/renderer/components/DirectorNotes/UnifiedHistoryTab.test.tsx
  • src/__tests__/renderer/components/FeedbackChatView.test.tsx
  • src/__tests__/renderer/components/FileExplorerPanel.test.tsx
  • src/__tests__/renderer/components/FilePreview.test.tsx
  • src/__tests__/renderer/components/FilePreview/filePreviewUtils.test.ts
  • src/__tests__/renderer/components/GroupChatInput.test.tsx
  • src/__tests__/renderer/components/History/ActivityGraph.test.tsx
  • src/__tests__/renderer/components/History/HistoryEntryItem.test.tsx
  • src/__tests__/renderer/components/History/HistoryFilterToggle.test.tsx
  • src/__tests__/renderer/components/HistoryDetailModal.test.tsx
  • src/__tests__/renderer/components/HistoryHelpModal.test.tsx
  • src/__tests__/renderer/components/HistoryPanel.test.tsx
  • src/__tests__/renderer/components/InlineWizard/WizardInputPanel.test.tsx
  • src/__tests__/renderer/components/InputArea.test.tsx
  • src/__tests__/renderer/components/LogViewer.test.tsx
  • src/__tests__/renderer/components/MainPanel.test.tsx
  • src/__tests__/renderer/components/MarkdownRenderer.test.tsx
  • src/__tests__/renderer/components/MergeSessionModal.test.tsx
  • src/__tests__/renderer/components/ProcessMonitor.test.tsx
  • src/__tests__/renderer/components/QuickActionsModal.test.tsx
  • src/__tests__/renderer/components/RenameSessionModal.test.tsx
  • src/__tests__/renderer/components/RightPanel.test.tsx
  • src/__tests__/renderer/components/SendToAgentModal.test.tsx
  • src/__tests__/renderer/components/SessionItemCue.test.tsx
  • src/__tests__/renderer/components/SessionList.test.tsx
  • src/__tests__/renderer/components/SessionList/LiveOverlayPanel.test.tsx
  • src/__tests__/renderer/components/SessionList/SidebarActions.test.tsx
  • src/__tests__/renderer/components/Settings/tabs/DisplayTab.test.tsx
  • src/__tests__/renderer/components/Settings/tabs/EncoreTab.test.tsx
  • src/__tests__/renderer/components/Settings/tabs/GeneralTab.test.tsx
  • src/__tests__/renderer/components/SettingsModal.test.tsx
  • src/__tests__/renderer/components/SidebarActions.test.tsx
  • src/__tests__/renderer/components/TabBar.test.tsx
  • src/__tests__/renderer/components/TabSwitcherModal.test.tsx
  • src/__tests__/renderer/components/TerminalOutput.test.tsx
  • src/__tests__/renderer/components/TerminalView.test.tsx
  • src/__tests__/renderer/components/ThinkingStatusPill.test.tsx
  • src/__tests__/renderer/components/UsageDashboard/responsive-layout.test.tsx
  • src/__tests__/renderer/components/UsageDashboard/state-transition-animations.test.tsx
  • src/__tests__/renderer/components/Wizard/WizardContext.test.tsx
  • src/__tests__/renderer/components/Wizard/WizardIntegration.test.tsx
  • src/__tests__/renderer/components/Wizard/services/phaseGenerator.test.ts
  • src/__tests__/renderer/components/Wizard/services/phaseGenerator_ssh.test.ts
  • src/__tests__/renderer/components/Wizard/services/wizardPrompts.test.ts
  • src/__tests__/renderer/components/WorktreeRunSection.test.tsx
  • src/__tests__/renderer/components/XTerminal.test.ts
  • src/__tests__/renderer/components/auto-scroll.test.tsx
  • src/__tests__/renderer/contexts/InlineWizardContext.test.tsx
  • src/__tests__/renderer/fonts-and-sizing.test.ts
  • src/__tests__/renderer/hooks/cue/usePipelineLayout.test.ts
  • src/__tests__/renderer/hooks/cue/usePipelineSelection.test.ts
  • src/__tests__/renderer/hooks/cue/usePipelineState.test.ts
  • src/__tests__/renderer/hooks/keyboard/useKeyboardShortcutHelpers.test.ts
  • src/__tests__/renderer/hooks/useAgentCapabilities.test.ts
  • src/__tests__/renderer/hooks/useAgentListeners.test.ts
  • src/__tests__/renderer/hooks/useAppInitialization.test.ts
  • src/__tests__/renderer/hooks/useAtMentionCompletion.test.ts
  • src/__tests__/renderer/hooks/useAutoRunAutoFollow.test.ts
  • src/__tests__/renderer/hooks/useAvailableAgents.test.ts
  • src/__tests__/renderer/hooks/useBatchProcessor.test.ts
  • src/__tests__/renderer/hooks/useCue.test.ts
  • src/__tests__/renderer/hooks/useCueAutoDiscovery.test.ts
  • src/__tests__/renderer/hooks/useCycleSession.test.ts
  • src/__tests__/renderer/hooks/useFileTreeManagement.test.ts
  • src/__tests__/renderer/hooks/useGroupManagement.test.ts
  • src/__tests__/renderer/hooks/useInlineWizard.test.ts
  • src/__tests__/renderer/hooks/useInlineWizard_overrides.test.ts
  • src/__tests__/renderer/hooks/useInputHandlers.test.ts
  • src/__tests__/renderer/hooks/useInputMode.test.ts
  • src/__tests__/renderer/hooks/useInterruptHandler.test.ts
  • src/__tests__/renderer/hooks/useKeyboardNavigation.test.ts
  • src/__tests__/renderer/hooks/useMainKeyboardHandler.test.ts
  • src/__tests__/renderer/hooks/useMergeSession.test.ts
  • src/__tests__/renderer/hooks/useMergeTransferHandlers.test.ts
  • src/__tests__/renderer/hooks/useModalHandlers.test.ts
  • src/__tests__/renderer/hooks/usePromptComposerHandlers.test.ts
  • src/__tests__/renderer/hooks/useQueueHandlers.test.ts
  • src/__tests__/renderer/hooks/useQueueProcessing.test.ts
  • src/__tests__/renderer/hooks/useQuickActionsHandlers.test.ts
  • src/__tests__/renderer/hooks/useRemoteHandlers.test.ts
  • src/__tests__/renderer/hooks/useRemoteIntegration.test.ts
  • src/__tests__/renderer/hooks/useSendToAgent.test.ts
  • src/__tests__/renderer/hooks/useSessionCategories.test.ts
  • src/__tests__/renderer/hooks/useSessionCrud.test.ts
  • src/__tests__/renderer/hooks/useSessionLifecycle.test.ts
  • src/__tests__/renderer/hooks/useSessionRestoration.test.ts
  • src/__tests__/renderer/hooks/useSettings.test.ts
  • src/__tests__/renderer/hooks/useSummarizeHandler.test.ts
  • src/__tests__/renderer/hooks/useSymphonyContribution.test.ts
  • src/__tests__/renderer/hooks/useTabCompletion.test.ts
  • src/__tests__/renderer/hooks/useTabExportHandlers.test.ts
  • src/__tests__/renderer/hooks/useTabHandlers.test.ts
  • src/__tests__/renderer/hooks/useTabHoverOverlay.test.ts
  • src/__tests__/renderer/hooks/useWizardHandlers.test.ts
  • src/__tests__/renderer/hooks/useWorktreeHandlers.test.ts
  • src/__tests__/renderer/hooks/utils/useDebouncedPersistence.test.ts
  • src/__tests__/renderer/services/bmad.test.ts
  • src/__tests__/renderer/services/inlineWizardConversation.test.ts
  • src/__tests__/renderer/services/inlineWizardDocumentGeneration.test.ts
  • src/__tests__/renderer/services/inlineWizardDocumentGeneration_overrides.test.ts
  • src/__tests__/renderer/services/inlineWizardDocumentGeneration_ssh.test.ts
  • src/__tests__/renderer/stores/agentStore.test.ts
  • src/__tests__/renderer/stores/modalStore.test.ts
  • src/__tests__/renderer/stores/notificationStore.test.ts
  • src/__tests__/renderer/stores/sessionStore.test.ts
  • src/__tests__/renderer/stores/settingsStore.test.ts
  • src/__tests__/renderer/stores/tabStore.test.ts
  • src/__tests__/renderer/stores/uiStore.test.ts
  • src/__tests__/renderer/utils/buildMaestroUrl.test.ts
  • src/__tests__/renderer/utils/contextExtractor.test.ts
  • src/__tests__/renderer/utils/existingDocsDetector.test.ts
  • src/__tests__/renderer/utils/fileExplorer.test.ts
  • src/__tests__/renderer/utils/sessionValidation.test.ts
  • src/__tests__/renderer/utils/spawnHelpers.test.ts
  • src/__tests__/renderer/utils/tabHelpers.test.ts
  • src/__tests__/renderer/utils/terminalTabHelpers.test.ts
  • src/__tests__/renderer/utils/worktreeSession.test.ts
  • src/__tests__/setup.ts
  • src/__tests__/shared/cli-server-discovery.test.ts
  • src/__tests__/shared/deep-link-urls.test.ts
  • src/__tests__/shared/templateVariables.test.ts
  • src/__tests__/web/hooks/useLongPressMenu.test.ts
  • src/__tests__/web/mobile/AllSessionsView.test.tsx
  • src/__tests__/web/mobile/App.test.tsx
  • src/__tests__/web/mobile/CommandInputBar.test.tsx
  • src/__tests__/web/mobile/MobileHistoryPanel.test.tsx
  • src/__tests__/web/mobile/QuickActionsMenu.test.tsx
  • src/__tests__/web/mobile/SessionPillBar.test.tsx
  • src/cli/commands/auto-run.ts
  • src/cli/commands/list-sessions.ts
  • src/cli/commands/open-file.ts
  • src/cli/commands/refresh-auto-run.ts
  • src/cli/commands/refresh-files.ts
  • src/cli/commands/send.ts
  • src/cli/commands/status.ts
  • src/cli/index.ts
  • src/cli/services/agent-spawner.ts
  • src/cli/services/batch-processor.ts
  • src/cli/services/maestro-client.ts
  • src/main/agents/capabilities.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rc

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Windows users get a better experience with the native title bar enabled
by default. The setting now uses platform detection (`isWindows()` /
`isWindowsPlatform()`) instead of a hard-coded `false`, while still
respecting any explicit user preference via the `??` nullish coalescing
operator.

Claude ID: e3978be7-c68a-4d51-8659-ee29584f36e7
Maestro ID: 865ec2d1-8898-4a68-9d06-e13562d127e0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants