Skip to content

refactor: state management with xstate-store - #268

Merged
pedronauck merged 4 commits into
mainfrom
xstate-refac
Jul 28, 2026
Merged

pedronauck merged 4 commits into
mainfrom
xstate-refac

Conversation

@pedronauck

@pedronauck pedronauck commented Jul 28, 2026 •

Copy link
Copy Markdown
Member

Summary

This refactor replaces Compozy Web's direct Zustand usage and a large set of ad hoc React state/effect coordinators with event-driven @xstate/store v4 stores and @xstate/store-react bindings.

The migration establishes one client-state model across the Web app:

  • TanStack Query remains the authority for server state and cache identity.
  • TanStack Router/URL state remains the authority for shareable navigation state.
  • XState Store owns domain interaction state through named events, selectors, explicit operation phases, and request identities.
  • React components consume scoped store projections instead of synchronizing mirrored state through effects.

This is a greenfield hard cut: the app removes its direct zustand dependency, adopts @xstate/store and @xstate/store-react, and intentionally does not carry compatibility readers for obsolete browser-storage envelopes.

What changed

State architecture

  • Migrated shared, persisted, and component-scoped interaction state across the OS shell, settings, sessions, tasks, marketplace, network, agents, loops, workspaces, runtime selector, automation, onboarding, dashboard, sandbox, support, and vault surfaces.
  • Added reusable store primitives for pure pre-commit store rebinding and for adapting request/settlement event pairs to caller-facing promises.
  • Replaced generic setter-style mutations with domain events and discriminated operation phases, making invalid or overlapping states harder to represent.
  • Kept current callbacks and asynchronous work at event/effect boundaries while selectors provide narrow React subscriptions.
  • Split the window-manager and loop-editor stores into dedicated contracts, commands, selectors/projections, draft, validation, positioning, and publish modules to preserve file responsibility boundaries.

Lifecycle and concurrency safety

  • Added request/attempt identities to fence stale async settlements across create, save, publish, authorize, activate, delivery-test, permission, restart, and editor workflows.
  • Preserved accepted operation state and user feedback across rerenders or initiating-hook unmounts.
  • Prevented destructive dismissal while operations are accepted where closing the surface would hide or invalidate settlement.
  • Rebound component stores when their workspace or domain identity changes, preventing state from one scope from leaking into another.
  • Removed redundant client state where Query data or render-time derivation is the actual authority, including the retired navigation-count store path.

Workspace and route isolation

  • Session deep links now resolve through the active workspace instead of discovering session ownership through a global lookup.
  • Foreign-workspace canonical and short session links remain non-rendering/not-found paths and do not switch workspace or expose session data.
  • Active-workspace persistence moves to the versioned XState Store envelope, while route loaders, Query keys, mutations, and stream consumers retain explicit workspace scoping.

Browser persistence hard cuts

Persisted interaction state now uses explicit versioned envelopes, including active workspace, onboarding draft, home preferences, network inspector/last-read state, session inspector state, and settings restart state. Obsolete envelopes are deliberately ignored. Secrets remain memory-only; the onboarding persistence extension never receives the API key field.

Engineering guidance and QA inventory

  • Reworked the React skill for React 19.2 and React Compiler constraints.
  • Added dedicated state-management and xstate-store skills, references, and evaluations, then updated the skill lock and Web/UI instructions.
  • Updated 32 QA tracker files, including a new session deep-link isolation scenario, and reset behavior affected by the refactor to untested for the next real-user QA cycle.

Review guide

The committed delta is 506 files (+24,284/-11,112). Suggested review order:

  1. Dependencies and shared contracts — web/package.json, web/src/hooks/use-store-binding.ts, web/src/lib/store-request.ts, and web/CLAUDE.md.
  2. Global and persisted stores — workspace, onboarding, dashboard preferences, network preferences, session state, runtime favorites, and settings restart state.
  3. Workflow stores — session creation/permissions, loops, marketplace, settings/provider flows, tasks, agents, automation, bridges, sandbox, support, and vault.
  4. Shell and routing — window manager, desktop shell, route preloaders/loaders, session deep links, Storybook fixtures, and Web E2E coverage.
  5. Guidance and QA — .agents/skills/**, skills-lock.json, and docs/qa/**.

Testing and validation

  • 140 test files changed, including focused store contracts, hook/component integration coverage, route integration tests, and Web E2E coverage.
  • 17 Storybook files updated to exercise the new store-backed surfaces and fixtures.
  • git diff --check origin/main...HEAD passes.
  • GitHub CI passes preflight/codegen/installer checks, frontend lint/typecheck/test/build, Go format/lint, Go build/boundaries, and race-test shard 1.
  • Race-test shard 2 reported one timeout in internal/daemon (TestBootSkillsWatcherRefreshesOnGlobalChangesAndStopsOnShutdown), a package outside this PR's committed diff. The aggregate Verify (fmt, lint, unit, build) gate is therefore also marked failed because it requires every verification lane to pass.
  • React Doctor: 98/100, 0 errors, 1 warning.
  • Vercel preview deployment completed successfully.

Web/Docs impact

  • Web: broad internal state-management refactor plus the isolation and lifecycle fixes described above; HTTP and SSE contracts are unchanged.
  • packages/ui: provider/test/story guidance integration changes only; no new public primitive or token contract.
  • packages/site: no committed changes.
  • Docs: QA seed terminology now names XState Store, and impacted scenarios are flagged for the next QA cycle. No public runtime or CLI documentation changes are required.
  • Configuration lifecycle: no config.toml key, default, environment variable, or daemon configuration change.

Compozy Impact Audit

  • Native tools: No impact — checked cmd/, internal/, OpenAPI/generated contracts, native tool descriptors, toolsets, schema digests, capability gates, and CLI/API fallbacks; none are changed by this frontend state refactor.
  • Extensibility and hooks: No runtime impact — extensions, hooks, capabilities, tools/resources, bundles, registries, bridge SDKs, MCP sidecars, and runtime configuration lifecycle are unchanged. The .agents/skills updates are engineering guidance for React and state management, not runtime extension contracts.
  • Workspace data isolation: Strengthened on the Web surface. Active-workspace selection is persisted in a versioned XState store; workspace/domain-bound stores rebind on identity changes; session deep-link lookup now requires the active workspace; and route, Query, mutation, SSE, cache, and event paths retain explicit workspace IDs. Focused store and router integration tests cover foreign-session and rebinding boundaries.
  • Official Compozy skill: No impact — skills/compozy/ and its documented public behavior, tool IDs, CLI paths, hooks, capabilities, bundles/resources, and memory/network/task semantics are unchanged.

@pedronauck pedronauck self-assigned this Jul 28, 2026
@greptile-apps

greptile-apps Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

Too many files changed for review. (529 files found, 100 file limit)

@vercel

vercel Bot commented Jul 28, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
compozy-site Ready Ready Preview, Comment Jul 28, 2026 10:46pm

Request Review

@coderabbitai

coderabbitai Bot commented Jul 28, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 430 files, which is 130 over the limit of 300.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: ee32db18-8543-411f-ac47-065392bcd318

📥 Commits

Reviewing files that changed from the base of the PR and between 11aea3d and 77ad5e7.

⛔ Files ignored due to path filters (88)
  • .agents/skills/react/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/best-practices.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/compiler-setup.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/compiler.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/components-and-types.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/effects.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/react19-apis.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/rules-of-react.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/state.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/testing.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/react/references/useeffect-patterns.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/evals/evals.json is excluded by !**/*.json, !.agents/**
  • .agents/skills/state-management/references/async-state.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/no-library.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/react.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/redux.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/review-checklist.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/typescript-modeling.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/vue-pinia.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/state-management/references/zustand.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/effects-and-events.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/extensions.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/migration-v4.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/react.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/schemas-and-validation.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/selectors-and-atoms.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/store-core.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/store-logic-and-input.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/xstate-store/references/testing-and-interop.md is excluded by !**/*.md, !.agents/**
  • bun.lock is excluded by !**/*.lock, !**/*.lock
  • docs/qa/_seeds/feature-stories/01_analysis_runtime-sessions.md is excluded by !**/*.md
  • docs/qa/_seeds/final-qa/_children/12-web-ui.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-013.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-bundle-preview-activate.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-authorize.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-mcp-remote-editor.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-deep-link-isolation.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-session-inspector-toggle.md is excluded by !**/*.md
  • docs/qa/scenarios/ET-web-tasks-mode-url.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-002.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-006.md is excluded by !**/*.md
  • docs/qa/scenarios/LP-024.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-028.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-030.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-035.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-040.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-041.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-configure-window-manager.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-layout-editor-clear-selection.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-bridge-create-secret-slots.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-bridge-edit-delivery-fold.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-session-simple-advanced-launch.md is excluded by !**/*.md
  • docs/qa/scenarios/MS-web-task-editor-window-modal.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-006.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-039.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-047.md is excluded by !**/*.md
  • docs/qa/scenarios/NB-web-bridge-setup.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-004.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-013.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-041.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-066.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-077.md is excluded by !**/*.md
  • docs/qa/scenarios/RT-home-usage-window-persistence.md is excluded by !**/*.md
  • packages/ui/CLAUDE.md is excluded by !**/*.md
  • packages/ui/src/components/custom/stories/entity-dialog-body.stories.tsx is excluded by !**/*.stories.tsx
  • skills-lock.json is excluded by !**/*.json
  • web/CLAUDE.md is excluded by !**/*.md
  • web/e2e/__tests__/os-shell.spec.ts is excluded by !web/e2e/**
  • web/e2e/__tests__/tool-approval-grants.spec.ts is excluded by !web/e2e/**
  • web/package.json is excluded by !**/*.json
  • web/src/systems/agent/components/stories/agent-create-dialog.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/automation/components/stories/automation-editor-dialog.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/automation/components/stories/automation-job-form.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/automation/components/stories/automation-trigger-form.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/bridges/components/stories/bridge-create-dialog.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/dashboard/components/stories/home-dashboard.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/network/components/stories/network-shell.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/os/components/stories/os-command-palette.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/runtime/routes/home.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/sandbox/components/stories/sandbox-editor.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/session/components/assistant-ui/stories/session-thread.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/session/components/stories/session-create-dialog.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/settings/components/stories/roles-panel.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/workspace/components/stories/scope-selector.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/workspace/components/stories/workspace-command-select.stories.tsx is excluded by !**/*.stories.tsx
  • web/src/systems/workspace/components/stories/workspace-setup.stories.tsx is excluded by !**/*.stories.tsx
📒 Files selected for processing (441)
  • packages/site/components/docs/page-actions/llm-copy-button.tsx
  • packages/site/components/landing/primitives/use-reduced-motion.ts
  • packages/site/components/landing/supported-agents.tsx
  • packages/site/components/site/__tests__/docs-header.test.tsx
  • packages/site/components/site/docs-header.tsx
  • packages/ui/src/components/custom/__tests__/ui-provider.test.tsx
  • packages/ui/src/components/custom/pill.tsx
  • packages/ui/src/components/custom/ui-provider.tsx
  • packages/ui/src/components/dialog.tsx
  • packages/ui/src/components/popover.tsx
  • packages/ui/src/components/reui/filters.tsx
  • packages/ui/src/components/reui/stepper.tsx
  • packages/ui/src/components/reui/tree.tsx
  • packages/ui/src/components/sheet.tsx
  • packages/ui/src/components/toggle-group.tsx
  • packages/ui/src/components/tooltip.tsx
  • web/.storybook/preview.ts
  • web/src/components/__tests__/design-system-showcase.test.tsx
  • web/src/components/assistant-ui/__tests__/session-thread.test.tsx
  • web/src/components/assistant-ui/hooks/use-assistant-message-timeline.ts
  • web/src/components/assistant-ui/hooks/use-session-composer-state.ts
  • web/src/components/assistant-ui/hooks/use-timeline-row-context.ts
  • web/src/components/assistant-ui/session-composer-queued-prompts.logic.ts
  • web/src/components/assistant-ui/session-composer-queued-prompts.tsx
  • web/src/components/assistant-ui/session-composer.tsx
  • web/src/components/assistant-ui/session-timeline-render.tsx
  • web/src/hooks/routes/__tests__/bridge-create-flow-store.test.ts
  • web/src/hooks/routes/__tests__/bridge-delivery-tests-store.test.ts
  • web/src/hooks/routes/__tests__/bridge-setup-flow-store.test.ts
  • web/src/hooks/routes/__tests__/session-page-controls-store.test.ts
  • web/src/hooks/routes/__tests__/use-bridge-delivery-tests.test.ts
  • web/src/hooks/routes/__tests__/use-session-page-controls.test.tsx
  • web/src/hooks/routes/__tests__/use-session-workspace-guard.test.tsx
  • web/src/hooks/routes/bridge-create-flow-store.ts
  • web/src/hooks/routes/bridge-delivery-tests-store.ts
  • web/src/hooks/routes/bridge-setup-flow-store.ts
  • web/src/hooks/routes/session-page-controls-effects.ts
  • web/src/hooks/routes/session-page-controls-store.ts
  • web/src/hooks/routes/use-bridge-create-flow.ts
  • web/src/hooks/routes/use-bridge-delivery-tests.ts
  • web/src/hooks/routes/use-bridge-setup-flow.ts
  • web/src/hooks/routes/use-session-page-controls.ts
  • web/src/hooks/routes/use-session-workspace-guard.ts
  • web/src/hooks/use-keyed-local-storage-preference.ts
  • web/src/hooks/use-store-binding.ts
  • web/src/lib/__tests__/network-participation.test.ts
  • web/src/lib/__tests__/store-request.test.ts
  • web/src/lib/network-participation.ts
  • web/src/lib/store-request.ts
  • web/src/lib/user-feedback.ts
  • web/src/routes/_app/-agent-session-route-loader.ts
  • web/src/routes/_app/-app-preload.ts
  • web/src/routes/_app/-route-preload.ts
  • web/src/routes/_app/-session-permalink-route.ts
  • web/src/routes/_app/-tasks-preload.ts
  • web/src/routes/_app/__tests__/-agent-session-deeplink.router.integration.test.tsx
  • web/src/routes/_app/__tests__/-route-preloading.integration.test.tsx
  • web/src/routes/_app/__tests__/-tasks.router.integration.test.tsx
  • web/src/routes/_app/agents.$name.sessions.$id.tsx
  • web/src/routes/_app/settings/-layouts-settings-page.tsx
  • web/src/routes/_app/settings/__tests__/-general.test.tsx
  • web/src/routes/_app/settings/__tests__/-roles.test.tsx
  • web/src/routes/_app/tasks.tsx
  • web/src/storybook/__tests__/web-storybook-config.test.tsx
  • web/src/storybook/__tests__/web-storybook-stories-and-fixtures.test.tsx
  • web/src/storybook/route-story.tsx
  • web/src/storybook/settings-state-helpers.tsx
  • web/src/systems/agent/components/__tests__/agent-authored-file-editor.test.tsx
  • web/src/systems/agent/components/__tests__/agent-command-multi-select.test.tsx
  • web/src/systems/agent/components/__tests__/agent-command-select.test.tsx
  • web/src/systems/agent/components/__tests__/agent-create-dialog.test.tsx
  • web/src/systems/agent/components/__tests__/agent-settings-panels.test.tsx
  • web/src/systems/agent/components/agent-authored-file-editor.tsx
  • web/src/systems/agent/components/agent-create-dialog.tsx
  • web/src/systems/agent/components/agent-create-runtime-fields.tsx
  • web/src/systems/agent/components/agent-runtime-control.tsx
  • web/src/systems/agent/components/agent-settings-panels.tsx
  • web/src/systems/agent/components/agent-settings-runtime-section.tsx
  • web/src/systems/agent/hooks/__tests__/agent-create-dialog-logic.test.ts
  • web/src/systems/agent/hooks/__tests__/use-agent-create-dialog.test.tsx
  • web/src/systems/agent/hooks/__tests__/use-agent-mutations.test.tsx
  • web/src/systems/agent/hooks/__tests__/use-agent-settings-page.test.tsx
  • web/src/systems/agent/hooks/agent-create-dialog-logic.ts
  • web/src/systems/agent/hooks/use-agent-authored-file-editor.ts
  • web/src/systems/agent/hooks/use-agent-create-dialog.ts
  • web/src/systems/agent/hooks/use-agent-runtime-editor.ts
  • web/src/systems/agent/hooks/use-agent-settings-page.ts
  • web/src/systems/agent/hooks/use-agents.ts
  • web/src/systems/agent/stores/__tests__/agent-editor-stores.test.ts
  • web/src/systems/agent/stores/agent-authored-file-editor-store.ts
  • web/src/systems/agent/stores/agent-settings-editor-store.ts
  • web/src/systems/automation/components/__tests__/automation-editor-dialog.test.tsx
  • web/src/systems/automation/components/__tests__/automation-job-form.test.tsx
  • web/src/systems/automation/components/__tests__/automation-trigger-form.test.tsx
  • web/src/systems/automation/components/automation-editor-dialog.tsx
  • web/src/systems/automation/components/automation-job-form.tsx
  • web/src/systems/automation/components/automation-trigger-form.tsx
  • web/src/systems/automation/components/job-form/task-run-step.tsx
  • web/src/systems/automation/hooks/__tests__/use-automation-editor.test.tsx
  • web/src/systems/automation/hooks/automation-editor-store.ts
  • web/src/systems/automation/hooks/use-automation-editor.ts
  • web/src/systems/automation/hooks/use-automation-job-form.ts
  • web/src/systems/automation/hooks/use-automation-trigger-form.ts
  • web/src/systems/bridges/components/__tests__/bridge-create-dialog.test.tsx
  • web/src/systems/bridges/components/bridge-create-dialog.tsx
  • web/src/systems/bridges/index.ts
  • web/src/systems/bridges/lib/bridge-secret-slot-submission.ts
  • web/src/systems/dashboard/__tests__/home-prefs-store.test.tsx
  • web/src/systems/dashboard/__tests__/use-home-attention-actions.test.tsx
  • web/src/systems/dashboard/__tests__/use-home-dashboard.test.tsx
  • web/src/systems/dashboard/components/home-working-now.tsx
  • web/src/systems/dashboard/hooks/home-attention-actions-store.ts
  • web/src/systems/dashboard/hooks/use-home-attention-actions.ts
  • web/src/systems/dashboard/hooks/use-home-dashboard.ts
  • web/src/systems/dashboard/hooks/use-home-prefs-store.ts
  • web/src/systems/dashboard/index.ts
  • web/src/systems/extensions/hooks/__tests__/use-extension-detail-state.test.ts
  • web/src/systems/extensions/hooks/use-extension-detail-state.ts
  • web/src/systems/knowledge/components/__tests__/knowledge-create-dialog.test.tsx
  • web/src/systems/knowledge/components/__tests__/knowledge-decisions-section.test.tsx
  • web/src/systems/knowledge/components/__tests__/knowledge-delete-dialog.test.tsx
  • web/src/systems/knowledge/components/__tests__/knowledge-detail-panel.test.tsx
  • web/src/systems/knowledge/components/__tests__/knowledge-edit-dialog.test.tsx
  • web/src/systems/knowledge/components/__tests__/knowledge-list-panel.test.tsx
  • web/src/systems/loops/components/editor/loop-editor.tsx
  • web/src/systems/loops/components/run-form/loop-run-preview.tsx
  • web/src/systems/loops/components/target/loop-target-fields.tsx
  • web/src/systems/loops/hooks/__tests__/use-loop-editor-state.test.ts
  • web/src/systems/loops/hooks/__tests__/use-loop-run-form-state.test.tsx
  • web/src/systems/loops/hooks/__tests__/use-loop-stream.test.tsx
  • web/src/systems/loops/hooks/loop-editor-store-contracts.ts
  • web/src/systems/loops/hooks/loop-editor-store-draft.ts
  • web/src/systems/loops/hooks/loop-editor-store-positions.ts
  • web/src/systems/loops/hooks/loop-editor-store-publish.ts
  • web/src/systems/loops/hooks/loop-editor-store-validation.ts
  • web/src/systems/loops/hooks/loop-editor-store.ts
  • web/src/systems/loops/hooks/use-loop-editor-state.ts
  • web/src/systems/loops/hooks/use-loop-editor.ts
  • web/src/systems/loops/hooks/use-loop-run-form-state.ts
  • web/src/systems/loops/hooks/use-loop-run-form.ts
  • web/src/systems/loops/hooks/use-loop-stream.ts
  • web/src/systems/marketplace/components/__tests__/bundle-activation-dialog-store.test.ts
  • web/src/systems/marketplace/components/__tests__/marketplace-action-controller-logic.test.ts
  • web/src/systems/marketplace/components/__tests__/marketplace-action-controller.test.tsx
  • web/src/systems/marketplace/components/__tests__/marketplace-components.test.tsx
  • web/src/systems/marketplace/components/__tests__/marketplace-detail-manage.test.tsx
  • web/src/systems/marketplace/components/__tests__/marketplace-installed-card-confirm-store.test.ts
  • web/src/systems/marketplace/components/__tests__/mcp-install-dialog-store.test.ts
  • web/src/systems/marketplace/components/bundle-activation-dialog-store.ts
  • web/src/systems/marketplace/components/bundle-activation-dialog.tsx
  • web/src/systems/marketplace/components/marketplace-action-controller-logic.ts
  • web/src/systems/marketplace/components/marketplace-action-dialogs.tsx
  • web/src/systems/marketplace/components/marketplace-detail-extension-manage.tsx
  • web/src/systems/marketplace/components/marketplace-detail-mcp-manage.tsx
  • web/src/systems/marketplace/components/marketplace-installed-card-confirm-store.ts
  • web/src/systems/marketplace/components/marketplace-installed-card.tsx
  • web/src/systems/marketplace/components/mcp-install-dialog-store.ts
  • web/src/systems/marketplace/components/use-bundle-activation-dialog.ts
  • web/src/systems/marketplace/components/use-marketplace-action-controller.tsx
  • web/src/systems/marketplace/components/use-marketplace-installed-card-confirmation.ts
  • web/src/systems/marketplace/components/use-mcp-install-dialog.ts
  • web/src/systems/marketplace/hooks/__tests__/marketplace-mcp-editor-logic.test.ts
  • web/src/systems/marketplace/hooks/__tests__/use-marketplace-mcp-editor.test.tsx
  • web/src/systems/marketplace/hooks/marketplace-mcp-editor-logic.ts
  • web/src/systems/marketplace/hooks/marketplace-mcp-scope.ts
  • web/src/systems/marketplace/hooks/use-marketplace-kind-page.ts
  • web/src/systems/marketplace/hooks/use-marketplace-mcp-editor.ts
  • web/src/systems/network/components/__tests__/network-participation-fields.test.tsx
  • web/src/systems/network/components/network-participation-fields.tsx
  • web/src/systems/network/contexts/network-list-filters-context-value.ts
  • web/src/systems/network/contexts/network-list-filters-context.tsx
  • web/src/systems/network/hooks/__tests__/use-channels.test.tsx
  • web/src/systems/network/hooks/__tests__/use-inspector-state.test.tsx
  • web/src/systems/network/hooks/__tests__/use-last-read.test.ts
  • web/src/systems/network/hooks/__tests__/use-network-create-channel-action.test.tsx
  • web/src/systems/network/hooks/__tests__/use-network-inspector-view.test.tsx
  • web/src/systems/network/hooks/__tests__/use-network-list-filters.test.tsx
  • web/src/systems/network/hooks/__tests__/use-recents.test.tsx
  • web/src/systems/network/hooks/network-create-channel-store.ts
  • web/src/systems/network/hooks/pinned-channels-store.ts
  • web/src/systems/network/hooks/use-channel-toolbar.ts
  • web/src/systems/network/hooks/use-channels.ts
  • web/src/systems/network/hooks/use-inspector-state.ts
  • web/src/systems/network/hooks/use-last-read.ts
  • web/src/systems/network/hooks/use-network-create-channel-action.tsx
  • web/src/systems/network/hooks/use-network-inspector-view.ts
  • web/src/systems/network/hooks/use-network-list-filters-context.ts
  • web/src/systems/network/hooks/use-network-list-filters.ts
  • web/src/systems/network/index.ts
  • web/src/systems/network/routes/network-window-content.tsx
  • web/src/systems/network/routes/network-window-controller.tsx
  • web/src/systems/onboarding/components/step-default-model.tsx
  • web/src/systems/onboarding/hooks/__tests__/use-onboarding-default-model.test.tsx
  • web/src/systems/onboarding/hooks/__tests__/use-onboarding-wizard.test.tsx
  • web/src/systems/onboarding/hooks/__tests__/use-onboarding-workspaces.test.tsx
  • web/src/systems/onboarding/hooks/use-onboarding-default-model.ts
  • web/src/systems/onboarding/hooks/use-onboarding-wizard.ts
  • web/src/systems/onboarding/hooks/use-onboarding-workspaces.ts
  • web/src/systems/onboarding/mocks/setup-fixtures.ts
  • web/src/systems/onboarding/stores/__tests__/use-onboarding-draft-store.test.ts
  • web/src/systems/onboarding/stores/use-onboarding-draft-store.ts
  • web/src/systems/os/apps/agents/__tests__/use-agent-detail.test.tsx
  • web/src/systems/os/apps/agents/agent-settings-location.tsx
  • web/src/systems/os/apps/agents/use-agent-detail.ts
  • web/src/systems/os/apps/agents/use-agents-catalog.ts
  • web/src/systems/os/apps/automation/__tests__/use-automation-page-base.test.tsx
  • web/src/systems/os/apps/automation/use-automation-job-detail-page.ts
  • web/src/systems/os/apps/automation/use-automation-jobs-page.ts
  • web/src/systems/os/apps/automation/use-automation-page-base.ts
  • web/src/systems/os/apps/automation/use-automation-trigger-detail-page.ts
  • web/src/systems/os/apps/automation/use-automation-triggers-page.ts
  • web/src/systems/os/apps/bridges/use-bridges-page.ts
  • web/src/systems/os/apps/dashboard/__tests__/dashboard-window.test.tsx
  • web/src/systems/os/apps/dashboard/dashboard-window.tsx
  • web/src/systems/os/apps/loops/__tests__/use-loop-run-page-state.test.ts
  • web/src/systems/os/apps/loops/use-loop-run-page-state.ts
  • web/src/systems/os/apps/loops/use-loop-run-page.ts
  • web/src/systems/os/apps/session/session-window-view.tsx
  • web/src/systems/os/apps/session/session-window.tsx
  • web/src/systems/os/apps/settings/__tests__/appearance-settings-pane.test.tsx
  • web/src/systems/os/apps/tasks/__tests__/task-window-location.test.ts
  • web/src/systems/os/apps/tasks/hooks/use-tasks-navigation.ts
  • web/src/systems/os/apps/tasks/task-detail-overlays.tsx
  • web/src/systems/os/apps/tasks/task-editor-dialogs.tsx
  • web/src/systems/os/apps/tasks/task-window-location.ts
  • web/src/systems/os/apps/tasks/tasks-catalog-location.tsx
  • web/src/systems/os/apps/tasks/tasks-window.tsx
  • web/src/systems/os/components/__tests__/desktops-overview.test.tsx
  • web/src/systems/os/components/__tests__/os-shortcuts-dialog.test.tsx
  • web/src/systems/os/components/__tests__/sessions-modal.test.tsx
  • web/src/systems/os/components/desktop-shell.tsx
  • web/src/systems/os/components/sessions-modal.tsx
  • web/src/systems/os/components/stories/_shell-fixture.tsx
  • web/src/systems/os/contexts/os-shell-context.tsx
  • web/src/systems/os/hooks/__tests__/os-interaction-hooks.test.tsx
  • web/src/systems/os/hooks/__tests__/window-manager-runtime.test.ts
  • web/src/systems/os/hooks/use-appearance-settings-pane.ts
  • web/src/systems/os/hooks/use-desktop-chrome.ts
  • web/src/systems/os/hooks/use-desktop-dock.ts
  • web/src/systems/os/hooks/use-desktop-manager-surfaces.ts
  • web/src/systems/os/hooks/use-desktop-overlays.ts
  • web/src/systems/os/hooks/use-desktop-shell-body.ts
  • web/src/systems/os/hooks/use-desktop-shell-model.ts
  • web/src/systems/os/hooks/use-desktop-shell-state.ts
  • web/src/systems/os/hooks/use-desktop.ts
  • web/src/systems/os/hooks/use-os-command-palette.ts
  • web/src/systems/os/hooks/use-os-sessions-modal.ts
  • web/src/systems/os/hooks/use-os-shortcuts.ts
  • web/src/systems/os/hooks/use-os-win-layer.ts
  • web/src/systems/os/hooks/use-os-window-commands.ts
  • web/src/systems/os/hooks/use-os-window.ts
  • web/src/systems/os/hooks/use-os-zoom-menu.ts
  • web/src/systems/os/hooks/use-window-manager-store.ts
  • web/src/systems/os/lib/__tests__/layout-gesture-cancellation.test.ts
  • web/src/systems/os/lib/__tests__/routing-coordinator.test.ts
  • web/src/systems/os/lib/__tests__/workspace-switch-barrier.test.ts
  • web/src/systems/os/lib/app-registry.tsx
  • web/src/systems/os/lib/os-types.ts
  • web/src/systems/os/lib/routing-coordinator.ts
  • web/src/systems/os/lib/window-manager-action-dispatch.ts
  • web/src/systems/os/lib/window-manager-projection.ts
  • web/src/systems/os/lib/workspace-switch-barrier.ts
  • web/src/systems/os/mocks/__tests__/handlers.test.ts
  • web/src/systems/os/mocks/fixtures.ts
  • web/src/systems/os/mocks/handlers.ts
  • web/src/systems/os/mocks/window-manager-mock-runtime.ts
  • web/src/systems/os/runtime/window-manager-runtime-core.ts
  • web/src/systems/os/runtime/window-manager-runtime.ts
  • web/src/systems/os/stores/__tests__/window-manager-store.test.ts
  • web/src/systems/os/stores/window-manager-store-commands.ts
  • web/src/systems/os/stores/window-manager-store-selectors.ts
  • web/src/systems/os/stores/window-manager-store-types.ts
  • web/src/systems/os/stores/window-manager-store.ts
  • web/src/systems/runtime/components/runtime-selector/__tests__/runtime-selector-store.test.ts
  • web/src/systems/runtime/components/runtime-selector/__tests__/runtime-selector.test.tsx
  • web/src/systems/runtime/components/runtime-selector/favorites.ts
  • web/src/systems/runtime/components/runtime-selector/runtime-favorites-store.ts
  • web/src/systems/runtime/components/runtime-selector/runtime-list-model.ts
  • web/src/systems/runtime/components/runtime-selector/runtime-selector-store.ts
  • web/src/systems/runtime/components/runtime-selector/runtime-selector.tsx
  • web/src/systems/runtime/components/runtime-selector/use-runtime-favorites.ts
  • web/src/systems/runtime/components/runtime-selector/use-runtime-selector.ts
  • web/src/systems/runtime/hooks/__tests__/nav-counts-default-fetchers.test.ts
  • web/src/systems/runtime/hooks/__tests__/use-nav-counts.test.ts
  • web/src/systems/runtime/hooks/nav-counts-fetchers.ts
  • web/src/systems/runtime/hooks/nav-counts-store.ts
  • web/src/systems/runtime/hooks/use-nav-counts.ts
  • web/src/systems/runtime/index.ts
  • web/src/systems/sandbox/components/__tests__/sandbox-editor.test.tsx
  • web/src/systems/sandbox/components/sandbox-editor.tsx
  • web/src/systems/sandbox/hooks/__tests__/use-sandbox-page.test.tsx
  • web/src/systems/sandbox/hooks/sandbox-page-store.ts
  • web/src/systems/sandbox/hooks/use-sandbox-page.ts
  • web/src/systems/session/adapters/__tests__/session-api.test.ts
  • web/src/systems/session/adapters/session-api.ts
  • web/src/systems/session/components/__tests__/clarification-card.test.tsx
  • web/src/systems/session/components/__tests__/permission-prompt.test.tsx
  • web/src/systems/session/components/__tests__/session-chat-runtime-provider.test.tsx
  • web/src/systems/session/components/__tests__/session-create-dialog.test.tsx
  • web/src/systems/session/components/__tests__/session-goal-header.test.tsx
  • web/src/systems/session/components/goal/session-goal-command-error-notice.tsx
  • web/src/systems/session/components/session-create-advanced-section.tsx
  • web/src/systems/session/components/session-create-dialog-host.tsx
  • web/src/systems/session/components/session-create-dialog.tsx
  • web/src/systems/session/components/session-create-simple-section.tsx
  • web/src/systems/session/contexts/session-create-context-value.ts
  • web/src/systems/session/contexts/session-create-context.tsx
  • web/src/systems/session/hooks/__tests__/session-permission-decision-store.test.ts
  • web/src/systems/session/hooks/__tests__/use-session-actions.test.tsx
  • web/src/systems/session/hooks/__tests__/use-session-catalog-streams.test.tsx
  • web/src/systems/session/hooks/__tests__/use-session-create-dialog.test.tsx
  • web/src/systems/session/hooks/__tests__/use-session-inspector-state.test.tsx
  • web/src/systems/session/hooks/session-catalog-streams-store.ts
  • web/src/systems/session/hooks/session-permission-decision-store.ts
  • web/src/systems/session/hooks/use-merged-session-runtime-transcript.ts
  • web/src/systems/session/hooks/use-session-actions.ts
  • web/src/systems/session/hooks/use-session-catalog-streams.ts
  • web/src/systems/session/hooks/use-session-chat-runtime.ts
  • web/src/systems/session/hooks/use-session-create-dialog.ts
  • web/src/systems/session/hooks/use-session-create.ts
  • web/src/systems/session/hooks/use-session-goal-header.ts
  • web/src/systems/session/hooks/use-session-inspector-state.ts
  • web/src/systems/session/hooks/use-session-permission-decision.ts
  • web/src/systems/session/hooks/use-session-store.ts
  • web/src/systems/session/hooks/use-session-transcript-thread-messages.ts
  • web/src/systems/session/index.ts
  • web/src/systems/session/lib/query-keys.ts
  • web/src/systems/session/lib/query-options.ts
  • web/src/systems/session/lib/queued-prompt.ts
  • web/src/systems/session/lib/session-create-draft.ts
  • web/src/systems/session/lib/session-query-invalidation.ts
  • web/src/systems/session/lib/session-runtime-render-context.tsx
  • web/src/systems/session/lib/session-transcript-thread-context-value.ts
  • web/src/systems/session/lib/session-transcript-thread-context.tsx
  • web/src/systems/session/stores/__tests__/session-store.test.ts
  • web/src/systems/session/stores/session-create-store.ts
  • web/src/systems/session/stores/session-store.ts
  • web/src/systems/settings/components/__tests__/layout-canvas.test.tsx
  • web/src/systems/settings/components/__tests__/layout-review-bar.test.tsx
  • web/src/systems/settings/components/__tests__/mcp-authorize-dialog.test.tsx
  • web/src/systems/settings/components/__tests__/provider-detail-dialog.test.tsx
  • web/src/systems/settings/components/__tests__/provider-model-catalog-status.test.tsx
  • web/src/systems/settings/components/__tests__/settings-restart-notice.test.tsx
  • web/src/systems/settings/components/layouts/layout-canvas.tsx
  • web/src/systems/settings/components/layouts/layout-profile-editor.tsx
  • web/src/systems/settings/components/layouts/layout-profile-grid.tsx
  • web/src/systems/settings/components/layouts/layout-review-bar.tsx
  • web/src/systems/settings/components/mcp-authorize-dialog.tsx
  • web/src/systems/settings/components/role-runtime-selector.tsx
  • web/src/systems/settings/hooks/__tests__/use-mcp-authorize.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-automation-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-general-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-memory-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-mutations.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-network-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-observability-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-providers-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-restart.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-roles-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-settings-skills-page.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-window-manager-config-editor.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-window-manager-layout-editor.test.tsx
  • web/src/systems/settings/hooks/__tests__/use-window-manager-layout-profiles.test.tsx
  • web/src/systems/settings/hooks/settings-providers-inspector-logic.ts
  • web/src/systems/settings/hooks/settings-roles-draft-logic.ts
  • web/src/systems/settings/hooks/settings-skills-draft-logic.ts
  • web/src/systems/settings/hooks/use-mcp-authorize.ts
  • web/src/systems/settings/hooks/use-pointer-drag.ts
  • web/src/systems/settings/hooks/use-roles-runtime-options.ts
  • web/src/systems/settings/hooks/use-settings-mutations.ts
  • web/src/systems/settings/hooks/use-settings-page.ts
  • web/src/systems/settings/hooks/use-settings-providers-page.ts
  • web/src/systems/settings/hooks/use-settings-restart.ts
  • web/src/systems/settings/hooks/use-settings-roles-page.ts
  • web/src/systems/settings/hooks/use-settings-skills-page.ts
  • web/src/systems/settings/hooks/use-window-manager-config-editor.ts
  • web/src/systems/settings/hooks/use-window-manager-layout-editor.ts
  • web/src/systems/settings/hooks/use-window-manager-layout-profiles.ts
  • web/src/systems/settings/hooks/use-window-manager-ratio-track.ts
  • web/src/systems/settings/index.ts
  • web/src/systems/settings/lib/__tests__/restart-status.test.ts
  • web/src/systems/settings/lib/query-options.ts
  • web/src/systems/settings/lib/restart-presentation.ts
  • web/src/systems/settings/lib/roles-config.ts
  • web/src/systems/settings/stores/__tests__/mcp-authorize-store.test.ts
  • web/src/systems/settings/stores/__tests__/window-manager-layout-profile-editor-store.test.ts
  • web/src/systems/settings/stores/mcp-authorize-store.ts
  • web/src/systems/settings/stores/settings-restart-store.ts
  • web/src/systems/settings/stores/use-settings-restart-store.ts
  • web/src/systems/settings/stores/window-manager-layout-profile-editor-store.ts
  • web/src/systems/status/mocks/index.ts
  • web/src/systems/support/hooks/__tests__/use-support-bundle-download.test.tsx
  • web/src/systems/support/hooks/support-bundle-download-store.ts
  • web/src/systems/support/hooks/use-support-bundle-download.ts
  • web/src/systems/tasks/components/__tests__/task-editor-modal.test.tsx
  • web/src/systems/tasks/components/__tests__/task-setup-sheet.test.tsx
  • web/src/systems/tasks/components/__tests__/tasks-list-surface.test.tsx
  • web/src/systems/tasks/components/task-editor-surface.tsx
  • web/src/systems/tasks/components/task-setup-form.tsx
  • web/src/systems/tasks/components/tasks-list-sort.tsx
  • web/src/systems/tasks/hooks/__tests__/use-profile-editor.test.tsx
  • web/src/systems/tasks/hooks/__tests__/use-task-editor-state.test.tsx
  • web/src/systems/tasks/hooks/__tests__/use-task-fan-out-dialog.test.tsx
  • web/src/systems/tasks/hooks/__tests__/use-tasks-page.test.tsx
  • web/src/systems/tasks/hooks/profile-editor-store.ts
  • web/src/systems/tasks/hooks/task-fan-out-dialog-store.ts
  • web/src/systems/tasks/hooks/tasks-page-actions-store.ts
  • web/src/systems/tasks/hooks/use-profile-editor.ts
  • web/src/systems/tasks/hooks/use-task-create-state.ts
  • web/src/systems/tasks/hooks/use-task-edit-state.ts
  • web/src/systems/tasks/hooks/use-task-fan-out-dialog.ts
  • web/src/systems/tasks/hooks/use-task-setup-runtime.ts
  • web/src/systems/tasks/hooks/use-tasks-page-actions.ts
  • web/src/systems/tasks/hooks/use-tasks-page.ts
  • web/src/systems/tasks/index.ts
  • web/src/systems/tasks/lib/__tests__/task-location-search.test.ts
  • web/src/systems/tasks/lib/inbox-filters.ts
  • web/src/systems/tasks/lib/inbox-grouping.ts
  • web/src/systems/tasks/lib/task-catalog-filter.ts
  • web/src/systems/tasks/lib/task-editor.ts
  • web/src/systems/tasks/lib/task-location-search.ts
  • web/src/systems/tasks/lib/task-templates.ts
  • web/src/systems/tasks/lib/tasks-list-filters.ts
  • web/src/systems/vault/hooks/__tests__/use-vault-page.test.tsx
  • web/src/systems/vault/hooks/__tests__/vault-page-logic.test.ts
  • web/src/systems/vault/hooks/use-vault-page.ts
  • web/src/systems/vault/hooks/vault-page-logic.ts
  • web/src/systems/workspace/components/__tests__/scope-selector.test.tsx
  • web/src/systems/workspace/components/__tests__/workspace-command-select.test.tsx
  • web/src/systems/workspace/components/scope-selector.tsx
  • web/src/systems/workspace/components/workspace-command-select.tsx
  • web/src/systems/workspace/hooks/__tests__/use-workspaces.test.tsx
  • web/src/systems/workspace/hooks/use-active-workspace-store.ts
  • web/src/systems/workspace/hooks/use-active-workspace.ts
  • web/src/systems/workspace/hooks/use-sync-user-home-dir.ts
  • web/src/systems/workspace/hooks/use-user-home-dir-store.ts
  • web/src/systems/workspace/hooks/use-user-home-dir.ts
  • web/src/systems/workspace/index.ts
  • web/src/systems/workspace/stores/active-workspace-store.ts
  • web/src/systems/workspace/stores/user-home-dir-store.ts

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch xstate-refac

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.

@github-actions

github-actions Bot commented Jul 28, 2026 •

Copy link
Copy Markdown
Contributor

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 77ad5e7.

This branch was successfully deployed

1 active deployment
Preview — 77ad5e74 Deployed Jul 28, 2026 by vercel[bot]
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.

1 participant