Skip to content

feat: migrate web server state to TanStack Query#1512

Open
carlosflorencio wants to merge 2 commits into
mainfrom
feature/tanstack-migration-801
Open

feat: migrate web server state to TanStack Query#1512
carlosflorencio wants to merge 2 commits into
mainfrom
feature/tanstack-migration-801

Conversation

@carlosflorencio

@carlosflorencio carlosflorencio commented Jun 27, 2026

Copy link
Copy Markdown
Member

Summary

  • Migrate web server-state ownership to TanStack Query query keys/options, with boot/app-state cache seeding and query-backed domain hooks.
  • Route WebSocket server-state notifications through the Query bridge, including strict E2E bridge accounting for parsed-but-unapplied events.
  • Remove legacy unused WebSocket/Zustand kanban task repository mutation code and carry the rebased upstream repository-preservation behavior into the Query bridge.
  • Update the TanStack migration spec and task/index status with the rebase follow-up and validation record.

Validation

Full migration QA recorded in docs/specs/ui/tanstack-query-server-state.md:

  • rtk make fmt
  • rtk make typecheck test lint
  • rtk pnpm --dir apps/web e2e:docker --shards 3
  • rtk pnpm --dir apps/web e2e:docker --project mobile-chrome
  • rtk pnpm --dir apps/web e2e:docker --project routing
  • rtk env KANDEV_E2E_CONTAINERS=1 pnpm --dir apps/web e2e --project=containers

Rebase follow-up validation on 2026-06-27:

  • rtk make fmt
  • rtk pnpm --dir apps/web typecheck
  • rtk pnpm --dir apps/web lint
  • Focused web unit slice: 16 files / 95 tests passed
  • Docker E2E desktop focused slice: 8 tests passed with strict WS accounting
  • Docker E2E mobile focused slice: 8 tests passed with strict WS accounting
  • Docker E2E multi-session UX slice: 7 tests passed with strict WS accounting

Preview Environment

URL https://kandev-pr-1512-bwo7.sprites.app
Commit 2c83854
Agent Mock agent

Updates automatically on each push. Destroyed when the PR is closed.

@greptile-apps

greptile-apps Bot commented Jun 27, 2026

Copy link
Copy Markdown

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

@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 0s —— View job


I'll analyze this and get back to you.

@coderabbitai

coderabbitai Bot commented Jun 27, 2026

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 837 files, which is 687 over the limit of 150.

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

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: ef414235-08f5-4cba-8211-d0c4b7ccca35

📥 Commits

Reviewing files that changed from the base of the PR and between 9094659 and 2c83854.

⛔ Files ignored due to path filters (1)
  • apps/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (837)
  • apps/backend/internal/agent/runtime/lifecycle/session.go
  • apps/backend/internal/agent/runtime/lifecycle/session_test.go
  • apps/backend/internal/backendapp/boot_state_routes.go
  • apps/backend/internal/backendapp/helpers.go
  • apps/backend/internal/backendapp/helpers_test.go
  • apps/backend/internal/backendapp/ws_sent_test_route.go
  • apps/backend/internal/backendapp/ws_sent_test_route_test.go
  • apps/backend/internal/gateway/websocket/client.go
  • apps/backend/internal/gateway/websocket/hub.go
  • apps/backend/internal/gateway/websocket/hub_broadcast_test.go
  • apps/backend/internal/gateway/websocket/hub_session_mode.go
  • apps/backend/internal/gateway/websocket/hub_session_mode_test.go
  • apps/backend/internal/gateway/websocket/hub_session_seq.go
  • apps/backend/internal/gateway/websocket/ws_accounting_test.go
  • apps/backend/internal/gateway/websocket/ws_sent_log.go
  • apps/backend/internal/github/mock_controller.go
  • apps/backend/internal/github/mock_controller_test.go
  • apps/backend/internal/orchestrator/prompt_idle_session_test.go
  • apps/backend/internal/orchestrator/prompt_task_resume_recovery_test.go
  • apps/backend/internal/orchestrator/task_operations.go
  • apps/backend/internal/orchestrator/task_operations_test.go
  • apps/backend/pkg/websocket/message.go
  • apps/web/AGENTS.md
  • apps/web/app/github/page.tsx
  • apps/web/app/gitlab/gitlab-page-client.tsx
  • apps/web/app/gitlab/page.tsx
  • apps/web/app/jira/jira-page-client.tsx
  • apps/web/app/jira/page.tsx
  • apps/web/app/kanban-active-workspace-cookie.test.ts
  • apps/web/app/kanban-active-workspace-cookie.ts
  • apps/web/app/layout.tsx
  • apps/web/app/linear/linear-page-client.tsx
  • apps/web/app/linear/page.tsx
  • apps/web/app/office/agents/[id]/channels/page.tsx
  • apps/web/app/office/agents/[id]/components/agent-config-cli-card.tsx
  • apps/web/app/office/agents/[id]/components/agent-configuration-tab.test.tsx
  • apps/web/app/office/agents/[id]/components/agent-configuration-tab.tsx
  • apps/web/app/office/agents/[id]/components/agent-overview-tab.tsx
  • apps/web/app/office/agents/[id]/components/agent-permissions-tab.tsx
  • apps/web/app/office/agents/[id]/components/agent-runs-tab.test.tsx
  • apps/web/app/office/agents/[id]/components/agent-runs-tab.tsx
  • apps/web/app/office/agents/[id]/components/agent-skills-tab.test.tsx
  • apps/web/app/office/agents/[id]/components/agent-skills-tab.tsx
  • apps/web/app/office/agents/[id]/configuration/page.tsx
  • apps/web/app/office/agents/[id]/dashboard/dashboard-view.tsx
  • apps/web/app/office/agents/[id]/instructions/page.tsx
  • apps/web/app/office/agents/[id]/layout.tsx
  • apps/web/app/office/agents/[id]/memory/page.tsx
  • apps/web/app/office/agents/[id]/permissions/page.tsx
  • apps/web/app/office/agents/[id]/runs/[runId]/run-detail-view.tsx
  • apps/web/app/office/agents/[id]/runs/components/tasks-touched.tsx
  • apps/web/app/office/agents/[id]/runs/runs-list-view.tsx
  • apps/web/app/office/agents/[id]/skills/page.tsx
  • apps/web/app/office/agents/[id]/use-agent-detail-data.test.tsx
  • apps/web/app/office/agents/[id]/use-agent-detail-data.ts
  • apps/web/app/office/agents/agents-page-client.tsx
  • apps/web/app/office/agents/components/agent-card.tsx
  • apps/web/app/office/agents/components/agent-role-badge.tsx
  • apps/web/app/office/agents/components/agent-status-dot.tsx
  • apps/web/app/office/agents/components/create-agent-dialog.tsx
  • apps/web/app/office/components/new-task-bottom-bar.tsx
  • apps/web/app/office/components/new-task-selector-row.tsx
  • apps/web/app/office/components/new-task-stages.tsx
  • apps/web/app/office/inbox/inbox-item-row.tsx
  • apps/web/app/office/inbox/inbox-page-client.test.tsx
  • apps/web/app/office/inbox/inbox-page-client.tsx
  • apps/web/app/office/layout.tsx
  • apps/web/app/office/page-client.test.tsx
  • apps/web/app/office/page-client.tsx
  • apps/web/app/office/projects/[id]/page.tsx
  • apps/web/app/office/projects/[id]/project-executor-section.tsx
  • apps/web/app/office/projects/[id]/project-header.tsx
  • apps/web/app/office/projects/[id]/project-query-cache.test.ts
  • apps/web/app/office/projects/[id]/project-query-cache.ts
  • apps/web/app/office/projects/[id]/project-repos-section.tsx
  • apps/web/app/office/projects/[id]/project-tasks-section.tsx
  • apps/web/app/office/projects/create-project-dialog.tsx
  • apps/web/app/office/projects/project-card.tsx
  • apps/web/app/office/projects/projects-page-client.tsx
  • apps/web/app/office/routines/[id]/routine-detail-view.tsx
  • apps/web/app/office/routines/routines-content.tsx
  • apps/web/app/office/routines/routines-page-client.tsx
  • apps/web/app/office/routines/run-row.tsx
  • apps/web/app/office/setup/agent-profile-setup-controls.tsx
  • apps/web/app/office/setup/step-agent.tsx
  • apps/web/app/office/setup/step-review.tsx
  • apps/web/app/office/setup/step-tier-profiles.tsx
  • apps/web/app/office/tasks/[id]/advanced-panels/chat-panel.tsx
  • apps/web/app/office/tasks/[id]/office-dockview-layout.tsx
  • apps/web/app/office/tasks/[id]/page.tsx
  • apps/web/app/office/tasks/[id]/task-detail-query-cache.test.ts
  • apps/web/app/office/tasks/[id]/task-detail-query-cache.ts
  • apps/web/app/office/tasks/page.tsx
  • apps/web/app/office/tasks/task-board.tsx
  • apps/web/app/office/tasks/task-filters.tsx
  • apps/web/app/office/tasks/tasks-list.tsx
  • apps/web/app/office/tasks/tasks-page-client.tsx
  • apps/web/app/office/tasks/use-paginated-tasks.test.tsx
  • apps/web/app/office/tasks/use-paginated-tasks.ts
  • apps/web/app/office/tasks/use-server-search.ts
  • apps/web/app/office/tasks/use-tasks-tree.ts
  • apps/web/app/office/workspace/activity/activity-feed.tsx
  • apps/web/app/office/workspace/activity/activity-page-client.tsx
  • apps/web/app/office/workspace/costs/budgets-tab.tsx
  • apps/web/app/office/workspace/costs/cost-overview.tsx
  • apps/web/app/office/workspace/costs/costs-page-client.tsx
  • apps/web/app/office/workspace/costs/page.tsx
  • apps/web/app/office/workspace/org/page.tsx
  • apps/web/app/office/workspace/settings/components/danger-zone-section.test.ts
  • apps/web/app/office/workspace/settings/components/danger-zone-section.tsx
  • apps/web/app/office/workspace/settings/components/settings-content.tsx
  • apps/web/app/office/workspace/settings/export/export-preview.tsx
  • apps/web/app/office/workspace/skills/create-skill-form.tsx
  • apps/web/app/office/workspace/skills/skill-detail.tsx
  • apps/web/app/office/workspace/skills/skills-page-client.tsx
  • apps/web/app/page.tsx
  • apps/web/app/settings/agents/[agentId]/page.tsx
  • apps/web/app/settings/agents/[agentId]/profiles/[profileId]/use-agent-profile-settings.ts
  • apps/web/app/settings/agents/page.tsx
  • apps/web/app/settings/automations/page.test.tsx
  • apps/web/app/settings/automations/page.tsx
  • apps/web/app/settings/executor/[id]/page.tsx
  • apps/web/app/settings/executor/[id]/profile/[profileId]/page.tsx
  • apps/web/app/settings/executor/new/page.tsx
  • apps/web/app/settings/executors/[profileId]/page.tsx
  • apps/web/app/settings/executors/new/[type]/page.tsx
  • apps/web/app/settings/executors/new/[type]/ssh-create-page.tsx
  • apps/web/app/settings/executors/page.tsx
  • apps/web/app/settings/executors/ssh/[executorId]/page.tsx
  • apps/web/app/settings/general/editors/page.tsx
  • apps/web/app/settings/general/notifications/page.tsx
  • apps/web/app/settings/general/secrets/page.tsx
  • apps/web/app/settings/general/sprites/page.tsx
  • apps/web/app/settings/integrations/github/page.tsx
  • apps/web/app/settings/layout.tsx
  • apps/web/app/settings/prompts/page.tsx
  • apps/web/app/settings/workspace/workspace-edit-client.tsx
  • apps/web/app/settings/workspace/workspace-repositories-client.tsx
  • apps/web/app/settings/workspace/workspaces-page-client.tsx
  • apps/web/app/tasks/page.tsx
  • apps/web/app/tasks/tasks-page-client.tsx
  • apps/web/components/agent/cli-profile-editor.test.tsx
  • apps/web/components/agent/cli-profile-editor.tsx
  • apps/web/components/app-sidebar/app-sidebar-footer.test.tsx
  • apps/web/components/app-sidebar/app-sidebar-footer.tsx
  • apps/web/components/app-sidebar/app-sidebar-header.test.tsx
  • apps/web/components/app-sidebar/app-sidebar-header.tsx
  • apps/web/components/app-sidebar/app-sidebar-new-task-item.test.tsx
  • apps/web/components/app-sidebar/app-sidebar-new-task-item.tsx
  • apps/web/components/app-sidebar/app-sidebar-primary-nav.test.tsx
  • apps/web/components/app-sidebar/app-sidebar-primary-nav.tsx
  • apps/web/components/app-sidebar/app-sidebar-workspace-picker.test.tsx
  • apps/web/components/app-sidebar/app-sidebar-workspace-picker.tsx
  • apps/web/components/app-sidebar/app-sidebar.tsx
  • apps/web/components/app-sidebar/sections/agents-section.test.tsx
  • apps/web/components/app-sidebar/sections/agents-section.tsx
  • apps/web/components/app-sidebar/sections/office-navigation-section.test.tsx
  • apps/web/components/app-sidebar/sections/office-navigation-section.tsx
  • apps/web/components/app-sidebar/sections/projects-section.test.tsx
  • apps/web/components/app-sidebar/sections/projects-section.tsx
  • apps/web/components/app-sidebar/sections/settings/agents-group.tsx
  • apps/web/components/app-sidebar/sections/settings/executors-group.tsx
  • apps/web/components/app-sidebar/sections/settings/settings-tree-render.test.tsx
  • apps/web/components/app-sidebar/sections/settings/workspaces-group.tsx
  • apps/web/components/app-sidebar/sections/tasks-section.test.tsx
  • apps/web/components/app-sidebar/sections/tasks-section.tsx
  • apps/web/components/automations/config-section.test.tsx
  • apps/web/components/automations/config-section.tsx
  • apps/web/components/command-panel.test.ts
  • apps/web/components/command-panel.tsx
  • apps/web/components/config-chat/config-chat-panel.tsx
  • apps/web/components/config-chat/use-config-chat.ts
  • apps/web/components/diff/diff-viewer-comment-edit.test.tsx
  • apps/web/components/diff/diff-viewer.test.tsx
  • apps/web/components/diff/use-diff-viewer-state.ts
  • apps/web/components/diff/walkthrough-floating-window.tsx
  • apps/web/components/diff/walkthrough-step-card.tsx
  • apps/web/components/editors/codemirror/use-codemirror-walkthrough-range.ts
  • apps/web/components/editors/monaco/use-monaco-walkthrough-range.ts
  • apps/web/components/github/github-settings.tsx
  • apps/web/components/github/github-status.tsx
  • apps/web/components/github/issue-watch-dialog.tsx
  • apps/web/components/github/issue-watch-table.tsx
  • apps/web/components/github/my-github/pr-row-task-indicator.test.tsx
  • apps/web/components/github/my-github/pr-row-task-indicator.tsx
  • apps/web/components/github/pr-ci-popover.automation.test.tsx
  • apps/web/components/github/pr-ci-popover.tsx
  • apps/web/components/github/pr-detail-panel.tsx
  • apps/web/components/github/pr-status-chip.auto-fix-rounds.test.tsx
  • apps/web/components/github/pr-status-chip.test.tsx
  • apps/web/components/github/pr-status-chip.tsx
  • apps/web/components/github/pr-task-icon.render.test.tsx
  • apps/web/components/github/pr-task-icon.tsx
  • apps/web/components/github/review-watch-dialog.tsx
  • apps/web/components/github/review-watch-table.tsx
  • apps/web/components/gitlab/gitlab-settings.tsx
  • apps/web/components/improve-kandev-dialog.test.tsx
  • apps/web/components/improve-kandev-dialog.tsx
  • apps/web/components/integrations/integrations-menu.test.ts
  • apps/web/components/integrations/integrations-menu.tsx
  • apps/web/components/integrations/workspace-scoped-section.test.tsx
  • apps/web/components/integrations/workspace-scoped-section.tsx
  • apps/web/components/jira/jira-issue-watch-dialog.tsx
  • apps/web/components/jira/jira-issue-watch-table.tsx
  • apps/web/components/jira/jira-settings.tsx
  • apps/web/components/kanban-board-grid.test.tsx
  • apps/web/components/kanban-board-grid.tsx
  • apps/web/components/kanban-board.tsx
  • apps/web/components/kanban-card-content.test.tsx
  • apps/web/components/kanban-card-content.tsx
  • apps/web/components/kanban-card-menu-items.test.tsx
  • apps/web/components/kanban-card-menu-items.tsx
  • apps/web/components/kanban-card-preview.tsx
  • apps/web/components/kanban-card.tsx
  • apps/web/components/kanban-column.tsx
  • apps/web/components/kanban-display-dropdown.tsx
  • apps/web/components/kanban-with-preview.tsx
  • apps/web/components/kanban/graph2-task-pipeline.tsx
  • apps/web/components/kanban/mobile-menu-sheet.tsx
  • apps/web/components/kanban/swimlane-container.tsx
  • apps/web/components/kanban/swimlane-graph-content.tsx
  • apps/web/components/kanban/swimlane-kanban-content.tsx
  • apps/web/components/kanban/task-multi-select-toolbar.test.tsx
  • apps/web/components/kanban/task-multi-select-toolbar.tsx
  • apps/web/components/linear/linear-issue-watch-dialog.tsx
  • apps/web/components/linear/linear-issue-watch-table.tsx
  • apps/web/components/linear/linear-settings.tsx
  • apps/web/components/model-config-selector.tsx
  • apps/web/components/quick-chat/quick-chat-dialog.tsx
  • apps/web/components/quick-chat/quick-chat-modal.tsx
  • apps/web/components/quick-chat/use-quick-chat-modal.ts
  • apps/web/components/review/review-dialog.tsx
  • apps/web/components/review/review-diff-list-grouping.test.tsx
  • apps/web/components/review/walkthrough-overlay.test.tsx
  • apps/web/components/review/walkthrough-overlay.tsx
  • apps/web/components/sentry/sentry-issue-watch-dialog.test.tsx
  • apps/web/components/sentry/sentry-issue-watch-dialog.tsx
  • apps/web/components/sentry/sentry-settings.test.tsx
  • apps/web/components/sentry/sentry-settings.tsx
  • apps/web/components/session-commands.test.tsx
  • apps/web/components/session-commands.tsx
  • apps/web/components/session/prepare-progress.test.tsx
  • apps/web/components/session/prepare-progress.tsx
  • apps/web/components/settings/agent-profile-delete-dialog.test.tsx
  • apps/web/components/settings/agent-profile-delete-dialog.tsx
  • apps/web/components/settings/agent-profile-page.tsx
  • apps/web/components/settings/config-chat-agent-section.tsx
  • apps/web/components/settings/editors-settings-state.tsx
  • apps/web/components/settings/editors-settings.tsx
  • apps/web/components/settings/executor-profiles-card.tsx
  • apps/web/components/settings/profile-edit/inline-secret-select.tsx
  • apps/web/components/settings/profile-status-panels.tsx
  • apps/web/components/settings/prompts-settings.tsx
  • apps/web/components/settings/secrets-settings.tsx
  • apps/web/components/settings/settings-layout-client.test.tsx
  • apps/web/components/settings/settings-layout-client.tsx
  • apps/web/components/settings/sprites-settings.tsx
  • apps/web/components/settings/system/feature-toggles-settings.test.tsx
  • apps/web/components/settings/system/feature-toggles-settings.tsx
  • apps/web/components/slack/slack-settings.tsx
  • apps/web/components/state-hydrator.test.tsx
  • apps/web/components/state-hydrator.tsx
  • apps/web/components/state-provider.tsx
  • apps/web/components/system-metrics/topbar-metrics.test.tsx
  • apps/web/components/system-metrics/topbar-metrics.tsx
  • apps/web/components/task-create-dialog-effects.test.ts
  • apps/web/components/task-create-dialog-effects.ts
  • apps/web/components/task-create-dialog-repo-chips.tsx
  • apps/web/components/task-create-dialog-selectors.tsx
  • apps/web/components/task-create-dialog-state.test.ts
  • apps/web/components/task-create-dialog-state.ts
  • apps/web/components/task-create-dialog-title-autofill-issues.test.ts
  • apps/web/components/task-create-dialog-types.ts
  • apps/web/components/task/auth-methods-indicator.tsx
  • apps/web/components/task/base-branch-picker.test.tsx
  • apps/web/components/task/base-branch-picker.tsx
  • apps/web/components/task/changes-panel-data.test.tsx
  • apps/web/components/task/changes-panel-data.tsx
  • apps/web/components/task/changes-tab.tsx
  • apps/web/components/task/chat/chat-input-area.test.tsx
  • apps/web/components/task/chat/chat-input-area.tsx
  • apps/web/components/task/chat/chat-input-container.tsx
  • apps/web/components/task/chat/context-items/lazy-plan-preview.test.tsx
  • apps/web/components/task/chat/context-items/lazy-plan-preview.tsx
  • apps/web/components/task/chat/context-items/prompt-preview.tsx
  • apps/web/components/task/chat/message-renderer.tsx
  • apps/web/components/task/chat/messages/action-message.test.tsx
  • apps/web/components/task/chat/messages/agent-status.tsx
  • apps/web/components/task/chat/messages/chat-message.test.tsx
  • apps/web/components/task/chat/messages/chat-message.tsx
  • apps/web/components/task/chat/messages/message-actions.tsx
  • apps/web/components/task/chat/pr-archive-banners.test.tsx
  • apps/web/components/task/chat/pr-archive-banners.tsx
  • apps/web/components/task/chat/task-mention-items.test.ts
  • apps/web/components/task/chat/task-mention-items.ts
  • apps/web/components/task/chat/tiptap-input.tsx
  • apps/web/components/task/chat/use-chat-panel-state.test.tsx
  • apps/web/components/task/chat/use-chat-panel-state.ts
  • apps/web/components/task/dockview-header-actions.test.tsx
  • apps/web/components/task/dockview-header-actions.tsx
  • apps/web/components/task/dockview-panel-content.tsx
  • apps/web/components/task/dockview-session-tabs.ts
  • apps/web/components/task/dockview-shared.tsx
  • apps/web/components/task/dockview-watermark.tsx
  • apps/web/components/task/executor-settings-button.test.tsx
  • apps/web/components/task/file-browser-apply-changes.test.ts
  • apps/web/components/task/file-browser-parts.tsx
  • apps/web/components/task/file-browser.tsx
  • apps/web/components/task/file-tree-utils.ts
  • apps/web/components/task/handoff-profile-menu-items.test.ts
  • apps/web/components/task/handoff-profile-menu-items.tsx
  • apps/web/components/task/mobile/mobile-repo-pill.tsx
  • apps/web/components/task/mobile/mobile-repos-section.test.tsx
  • apps/web/components/task/mobile/mobile-repos-section.tsx
  • apps/web/components/task/mobile/mobile-sessions-section.tsx
  • apps/web/components/task/mobile/session-task-switcher-sheet-hooks.test.tsx
  • apps/web/components/task/mobile/session-task-switcher-sheet-hooks.ts
  • apps/web/components/task/mobile/session-task-switcher-sheet.test.tsx
  • apps/web/components/task/mobile/session-task-switcher-sheet.tsx
  • apps/web/components/task/mode-selector.test.tsx
  • apps/web/components/task/mode-selector.tsx
  • apps/web/components/task/model-selector.tsx
  • apps/web/components/task/new-session-dialog.test.tsx
  • apps/web/components/task/new-session-dialog.tsx
  • apps/web/components/task/new-subtask-dialog.test.tsx
  • apps/web/components/task/new-subtask-dialog.tsx
  • apps/web/components/task/passthrough-chat-composer.test.ts
  • apps/web/components/task/passthrough-chat-composer.tsx
  • apps/web/components/task/passthrough-toolbar.test.tsx
  • apps/web/components/task/plan-tab.test.tsx
  • apps/web/components/task/plan-tab.tsx
  • apps/web/components/task/preview-session-tabs.tsx
  • apps/web/components/task/recent-task-switcher-hooks.ts
  • apps/web/components/task/recent-task-switcher-model.test.ts
  • apps/web/components/task/recent-task-switcher-model.ts
  • apps/web/components/task/repository-scripts-menu.tsx
  • apps/web/components/task/selector-trigger-class.test.tsx
  • apps/web/components/task/session-reopen-menu.test.tsx
  • apps/web/components/task/session-reopen-menu.tsx
  • apps/web/components/task/session-tab.test.tsx
  • apps/web/components/task/session-tab.tsx
  • apps/web/components/task/sessions-dropdown.test.tsx
  • apps/web/components/task/sessions-dropdown.tsx
  • apps/web/components/task/sidebar-filter/use-filter-value-options.test.ts
  • apps/web/components/task/sidebar-filter/use-filter-value-options.ts
  • apps/web/components/task/simple/chat-activity-tabs.test.tsx
  • apps/web/components/task/simple/chat-activity-tabs.tsx
  • apps/web/components/task/simple/components/agents-multi-picker.test.tsx
  • apps/web/components/task/simple/components/agents-multi-picker.tsx
  • apps/web/components/task/simple/components/assignee-picker.tsx
  • apps/web/components/task/simple/components/blockers-picker.test.tsx
  • apps/web/components/task/simple/components/blockers-picker.tsx
  • apps/web/components/task/simple/components/parent-picker.tsx
  • apps/web/components/task/simple/components/pending-approval-badge.test.tsx
  • apps/web/components/task/simple/components/pending-approval-badge.tsx
  • apps/web/components/task/simple/components/project-picker.tsx
  • apps/web/components/task/simple/components/run-error-entry.tsx
  • apps/web/components/task/simple/components/session-timeline-entry.test.tsx
  • apps/web/components/task/simple/components/session-timeline-entry.tsx
  • apps/web/components/task/simple/task-activity.tsx
  • apps/web/components/task/simple/task-chat.test.tsx
  • apps/web/components/task/simple/task-chat.tsx
  • apps/web/components/task/simple/use-office-reference-data.ts
  • apps/web/components/task/task-archive-confirm-dialog.test.tsx
  • apps/web/components/task/task-chat-panel.tsx
  • apps/web/components/task/task-delete-confirm-dialog.test.tsx
  • apps/web/components/task/task-external-link-dialog.test.tsx
  • apps/web/components/task/task-external-link-dialog.tsx
  • apps/web/components/task/task-item.test.tsx
  • apps/web/components/task/task-item.tsx
  • apps/web/components/task/task-page-content-helpers.ts
  • apps/web/components/task/task-page-content.test.tsx
  • apps/web/components/task/task-page-content.tsx
  • apps/web/components/task/task-select-helpers.test.ts
  • apps/web/components/task/task-select-helpers.ts
  • apps/web/components/task/task-select-routing-hydration.test.ts
  • apps/web/components/task/task-session-sidebar-aggregate.test.ts
  • apps/web/components/task/task-session-sidebar-aggregate.ts
  • apps/web/components/task/task-session-sidebar-link-actions.ts
  • apps/web/components/task/task-session-sidebar-messages.test.tsx
  • apps/web/components/task/task-session-sidebar-messages.ts
  • apps/web/components/task/task-session-sidebar.test.tsx
  • apps/web/components/task/task-session-sidebar.tsx
  • apps/web/components/task/task-switcher-direct-subtasks.test.tsx
  • apps/web/components/task/task-switcher.test.tsx
  • apps/web/components/task/task-top-bar.test.tsx
  • apps/web/components/task/use-agent-error-acknowledgements.ts
  • apps/web/e2e/fixtures/test-base.ts
  • apps/web/e2e/helpers/api-client.ts
  • apps/web/e2e/helpers/dockview-resize.ts
  • apps/web/e2e/helpers/session-store.ts
  • apps/web/e2e/helpers/ws-account.ts
  • apps/web/e2e/helpers/ws-drop.ts
  • apps/web/e2e/pages/session-page.ts
  • apps/web/e2e/pages/sidebar-filter-popover.ts
  • apps/web/e2e/tests/chat/clarification.spec.ts
  • apps/web/e2e/tests/chat/message-pagination.spec.ts
  • apps/web/e2e/tests/chat/message-queue.spec.ts
  • apps/web/e2e/tests/chat/model-selector-error.spec.ts
  • apps/web/e2e/tests/chat/permission-approval.spec.ts
  • apps/web/e2e/tests/git/diff-expansion.spec.ts
  • apps/web/e2e/tests/git/diff-update-helpers.ts
  • apps/web/e2e/tests/git/diff-update.spec.ts
  • apps/web/e2e/tests/git/symlink-file.spec.ts
  • apps/web/e2e/tests/kanban/card-menu-delete-archive.spec.ts
  • apps/web/e2e/tests/kanban/preview-primary-session.spec.ts
  • apps/web/e2e/tests/kanban/preview-session-tabs.spec.ts
  • apps/web/e2e/tests/kanban/stale-session-navigation.spec.ts
  • apps/web/e2e/tests/layout/changes-panel-focus.spec.ts
  • apps/web/e2e/tests/layout/compact-desktop-responsive.spec.ts
  • apps/web/e2e/tests/layout/pane-persistence-tablet.spec.ts
  • apps/web/e2e/tests/layout/pane-resize-right.spec.ts
  • apps/web/e2e/tests/layout/plan-panel-indicator.spec.ts
  • apps/web/e2e/tests/layout/preview-tab-session-switch.spec.ts
  • apps/web/e2e/tests/layout/toggle-sidebar-shortcut.spec.ts
  • apps/web/e2e/tests/layout/topbar-alignment.spec.ts
  • apps/web/e2e/tests/office/advanced-mode.spec.ts
  • apps/web/e2e/tests/office/agent-skills-ui.spec.ts
  • apps/web/e2e/tests/office/onboarding.spec.ts
  • apps/web/e2e/tests/office/realtime-dashboard.spec.ts
  • apps/web/e2e/tests/pr/ci-automation-options.spec.ts
  • apps/web/e2e/tests/pr/pr-approve-button.spec.ts
  • apps/web/e2e/tests/pr/pr-checks-timer.spec.ts
  • apps/web/e2e/tests/pr/pr-detail-auto-show.spec.ts
  • apps/web/e2e/tests/pr/pr-detail-dedup.spec.ts
  • apps/web/e2e/tests/pr/pr-detail-manual-open.spec.ts
  • apps/web/e2e/tests/pr/pr-detection.spec.ts
  • apps/web/e2e/tests/pr/pr-multi-popover.spec.ts
  • apps/web/e2e/tests/pr/pr-status-badge.spec.ts
  • apps/web/e2e/tests/pr/pr-switcher-changes.spec.ts
  • apps/web/e2e/tests/pr/pr-topbar-popover.spec.ts
  • apps/web/e2e/tests/pr/pr-watcher-dockview-layout.spec.ts
  • apps/web/e2e/tests/settings/config-management.spec.ts
  • apps/web/e2e/tests/ssh/agent-readiness.spec.ts
  • apps/web/e2e/tests/ssh/recovery.spec.ts
  • apps/web/e2e/tests/system/status-page.spec.ts
  • apps/web/e2e/tests/system/ws-event-accounting.spec.ts
  • apps/web/e2e/tests/task/create-task-branch-selector.spec.ts
  • apps/web/e2e/tests/task/file-tree-drag-drop.spec.ts
  • apps/web/e2e/tests/task/session-isolation.spec.ts
  • apps/web/e2e/tests/task/sidebar-filter.spec.ts
  • apps/web/e2e/tests/task/task-create-prompt-autocomplete-qa.spec.ts
  • apps/web/e2e/tests/task/task-create-prompt-autocomplete.spec.ts
  • apps/web/e2e/tests/task/task-loading-state-helpers.ts
  • apps/web/e2e/tests/task/task-loading-state.spec.ts
  • apps/web/e2e/tests/terminal/terminal-agent.spec.ts
  • apps/web/e2e/tests/terminal/terminal-dockview-ui.spec.ts
  • apps/web/global.d.ts
  • apps/web/hooks/domains/features/use-feature.ts
  • apps/web/hooks/domains/github/use-active-task-pr-files.ts
  • apps/web/hooks/domains/github/use-github-action-presets.ts
  • apps/web/hooks/domains/github/use-github-status.ts
  • apps/web/hooks/domains/github/use-issue-watches.ts
  • apps/web/hooks/domains/github/use-pr-key-to-tasks.test.ts
  • apps/web/hooks/domains/github/use-pr-key-to-tasks.ts
  • apps/web/hooks/domains/github/use-pr-watch.ts
  • apps/web/hooks/domains/github/use-review-watches.ts
  • apps/web/hooks/domains/github/use-task-ci-options.test.tsx
  • apps/web/hooks/domains/github/use-task-ci-options.ts
  • apps/web/hooks/domains/github/use-task-pr.test.tsx
  • apps/web/hooks/domains/github/use-task-pr.ts
  • apps/web/hooks/domains/gitlab/use-gitlab-action-presets.ts
  • apps/web/hooks/domains/gitlab/use-gitlab-issue-watches.ts
  • apps/web/hooks/domains/gitlab/use-gitlab-review-watches.ts
  • apps/web/hooks/domains/gitlab/use-gitlab-stats.ts
  • apps/web/hooks/domains/gitlab/use-gitlab-status.ts
  • apps/web/hooks/domains/gitlab/use-task-mr.test.ts
  • apps/web/hooks/domains/gitlab/use-task-mr.ts
  • apps/web/hooks/domains/integrations/use-integration-availability.test.ts
  • apps/web/hooks/domains/integrations/use-integration-availability.ts
  • apps/web/hooks/domains/jira/use-jira-availability.test.ts
  • apps/web/hooks/domains/jira/use-jira-availability.ts
  • apps/web/hooks/domains/jira/use-jira-issue-watches.ts
  • apps/web/hooks/domains/kanban/use-all-workflow-snapshots-inflight.test.ts
  • apps/web/hooks/domains/kanban/use-all-workflow-snapshots.query.test.tsx
  • apps/web/hooks/domains/kanban/use-all-workflow-snapshots.test.ts
  • apps/web/hooks/domains/kanban/use-all-workflow-snapshots.ts
  • apps/web/hooks/domains/kanban/use-implement-fresh.test.ts
  • apps/web/hooks/domains/kanban/use-implement-fresh.ts
  • apps/web/hooks/domains/kanban/use-kanban-actions.test.tsx
  • apps/web/hooks/domains/kanban/use-kanban-actions.ts
  • apps/web/hooks/domains/kanban/use-kanban-data.test.tsx
  • apps/web/hooks/domains/kanban/use-kanban-data.ts
  • apps/web/hooks/domains/kanban/use-plan-actions.runner.test.ts
  • apps/web/hooks/domains/kanban/use-plan-actions.test.ts
  • apps/web/hooks/domains/kanban/use-plan-actions.test.tsx
  • apps/web/hooks/domains/kanban/use-plan-actions.ts
  • apps/web/hooks/domains/kanban/use-swimlane-move.test.tsx
  • apps/web/hooks/domains/kanban/use-swimlane-move.ts
  • apps/web/hooks/domains/kanban/use-task-by-id.ts
  • apps/web/hooks/domains/kanban/use-task-repositories.ts
  • apps/web/hooks/domains/kanban/use-workspace-sidebar-tasks.test.ts
  • apps/web/hooks/domains/kanban/use-workspace-sidebar-tasks.ts
  • apps/web/hooks/domains/linear/use-linear-availability.ts
  • apps/web/hooks/domains/linear/use-linear-issue-watches.ts
  • apps/web/hooks/domains/office/query-error.ts
  • apps/web/hooks/domains/office/use-agent-route.ts
  • apps/web/hooks/domains/office/use-office-data.test.tsx
  • apps/web/hooks/domains/office/use-office-data.ts
  • apps/web/hooks/domains/office/use-provider-health.ts
  • apps/web/hooks/domains/office/use-routing-preview.ts
  • apps/web/hooks/domains/office/use-routing-query-hooks.test.tsx
  • apps/web/hooks/domains/office/use-run-attempts.ts
  • apps/web/hooks/domains/office/use-workspace-routing.test.tsx
  • apps/web/hooks/domains/office/use-workspace-routing.ts
  • apps/web/hooks/domains/sentry/use-sentry-availability.ts
  • apps/web/hooks/domains/sentry/use-sentry-issue-watches.ts
  • apps/web/hooks/domains/session/session-message-fetch.test.ts
  • apps/web/hooks/domains/session/session-message-fetch.ts
  • apps/web/hooks/domains/session/use-base-branch-by-repo.test.tsx
  • apps/web/hooks/domains/session/use-base-branch-by-repo.ts
  • apps/web/hooks/domains/session/use-commit-diff.ts
  • apps/web/hooks/domains/session/use-prepare-summary.ts
  • apps/web/hooks/domains/session/use-queue.test.ts
  • apps/web/hooks/domains/session/use-queue.ts
  • apps/web/hooks/domains/session/use-repo-display-name.test.tsx
  • apps/web/hooks/domains/session/use-repo-display-name.ts
  • apps/web/hooks/domains/session/use-request-changes-walkthrough.test.ts
  • apps/web/hooks/domains/session/use-request-changes-walkthrough.ts
  • apps/web/hooks/domains/session/use-session-actions.test.ts
  • apps/web/hooks/domains/session/use-session-actions.ts
  • apps/web/hooks/domains/session/use-session-agentctl.test.tsx
  • apps/web/hooks/domains/session/use-session-agentctl.ts
  • apps/web/hooks/domains/session/use-session-changes-count.test.ts
  • apps/web/hooks/domains/session/use-session-changes-count.ts
  • apps/web/hooks/domains/session/use-session-commits.test.ts
  • apps/web/hooks/domains/session/use-session-commits.ts
  • apps/web/hooks/domains/session/use-session-context-window.ts
  • apps/web/hooks/domains/session/use-session-git-status.ts
  • apps/web/hooks/domains/session/use-session-mcp.ts
  • apps/web/hooks/domains/session/use-session-messages.test.ts
  • apps/web/hooks/domains/session/use-session-messages.ts
  • apps/web/hooks/domains/session/use-session-model.ts
  • apps/web/hooks/domains/session/use-session-search.test.ts
  • apps/web/hooks/domains/session/use-session-search.ts
  • apps/web/hooks/domains/session/use-session-state.test.ts
  • apps/web/hooks/domains/session/use-session-state.ts
  • apps/web/hooks/domains/session/use-session-turn.ts
  • apps/web/hooks/domains/session/use-session-worktrees.test.tsx
  • apps/web/hooks/domains/session/use-session-worktrees.ts
  • apps/web/hooks/domains/session/use-session.ts
  • apps/web/hooks/domains/session/use-task-executor-profile.test.ts
  • apps/web/hooks/domains/session/use-task-executor-profile.ts
  • apps/web/hooks/domains/session/use-task-plan.test.tsx
  • apps/web/hooks/domains/session/use-task-plan.ts
  • apps/web/hooks/domains/session/use-task-walkthrough.ts
  • apps/web/hooks/domains/session/use-user-shells.ts
  • apps/web/hooks/domains/session/use-visibility-backfill.test.ts
  • apps/web/hooks/domains/settings/use-agent-discovery.ts
  • apps/web/hooks/domains/settings/use-agents-query-sync.test.ts
  • apps/web/hooks/domains/settings/use-agents-query-sync.ts
  • apps/web/hooks/domains/settings/use-automation-runs.test.ts
  • apps/web/hooks/domains/settings/use-automation-runs.ts
  • apps/web/hooks/domains/settings/use-automations.ts
  • apps/web/hooks/domains/settings/use-available-agents.ts
  • apps/web/hooks/domains/settings/use-custom-prompts.ts
  • apps/web/hooks/domains/settings/use-dynamic-models.ts
  • apps/web/hooks/domains/settings/use-editors.ts
  • apps/web/hooks/domains/settings/use-executors-query-sync.test.ts
  • apps/web/hooks/domains/settings/use-executors-query-sync.ts
  • apps/web/hooks/domains/settings/use-healthy-agent-profiles.ts
  • apps/web/hooks/domains/settings/use-notification-providers.ts
  • apps/web/hooks/domains/settings/use-secrets.ts
  • apps/web/hooks/domains/settings/use-settings-data.ts
  • apps/web/hooks/domains/settings/use-settings-query-hooks.test.tsx
  • apps/web/hooks/domains/settings/use-sprites.ts
  • apps/web/hooks/domains/settings/use-system-health.ts
  • apps/web/hooks/domains/settings/use-workflow-settings.test.ts
  • apps/web/hooks/domains/settings/use-workflow-settings.ts
  • apps/web/hooks/domains/settings/user-settings-query-data.ts
  • apps/web/hooks/domains/slack/use-slack-availability.ts
  • apps/web/hooks/domains/system/use-backups.ts
  • apps/web/hooks/domains/system/use-database-stats.ts
  • apps/web/hooks/domains/system/use-disk-usage.ts
  • apps/web/hooks/domains/system/use-log-files.ts
  • apps/web/hooks/domains/system/use-log-tail.ts
  • apps/web/hooks/domains/system/use-system-info.ts
  • apps/web/hooks/domains/system/use-system-jobs.ts
  • apps/web/hooks/domains/system/use-updates.ts
  • apps/web/hooks/domains/workspace/use-repositories.test.ts
  • apps/web/hooks/domains/workspace/use-repositories.test.tsx
  • apps/web/hooks/domains/workspace/use-repositories.ts
  • apps/web/hooks/domains/workspace/use-repository-branches.test.tsx
  • apps/web/hooks/domains/workspace/use-repository-branches.ts
  • apps/web/hooks/domains/workspace/use-repository-cache.ts
  • apps/web/hooks/domains/workspace/use-repository-scripts.test.tsx
  • apps/web/hooks/domains/workspace/use-repository-scripts.ts
  • apps/web/hooks/domains/workspace/use-repository.ts
  • apps/web/hooks/domains/workspace/use-workspaces.test.tsx
  • apps/web/hooks/domains/workspace/use-workspaces.ts
  • apps/web/hooks/use-drag-and-drop.ts
  • apps/web/hooks/use-ensure-user-settings.test.ts
  • apps/web/hooks/use-ensure-user-settings.ts
  • apps/web/hooks/use-inline-mention.ts
  • apps/web/hooks/use-inline-slash.test.tsx
  • apps/web/hooks/use-inline-slash.ts
  • apps/web/hooks/use-kanban-display-settings.ts
  • apps/web/hooks/use-lazy-load-messages.ts
  • apps/web/hooks/use-message-handler.test.ts
  • apps/web/hooks/use-message-handler.ts
  • apps/web/hooks/use-office-refetch.ts
  • apps/web/hooks/use-optimistic-task-mutation.test.tsx
  • apps/web/hooks/use-optimistic-task-mutation.ts
  • apps/web/hooks/use-plan-panel-auto-open.test.ts
  • apps/web/hooks/use-plan-panel-auto-open.ts
  • apps/web/hooks/use-session-layout-state.test.ts
  • apps/web/hooks/use-session-layout-state.ts
  • apps/web/hooks/use-sidebar-multi-select.test.ts
  • apps/web/hooks/use-sidebar-multi-select.ts
  • apps/web/hooks/use-subtask-count.test.ts
  • apps/web/hooks/use-subtask-count.ts
  • apps/web/hooks/use-summarize-session.test.ts
  • apps/web/hooks/use-summarize-session.ts
  • apps/web/hooks/use-task-crud.test.tsx
  • apps/web/hooks/use-task-crud.ts
  • apps/web/hooks/use-task-multi-select.test.ts
  • apps/web/hooks/use-task-multi-select.ts
  • apps/web/hooks/use-task-removal.test.ts
  • apps/web/hooks/use-task-removal.ts
  • apps/web/hooks/use-task-repositories.ts
  • apps/web/hooks/use-task-session.ts
  • apps/web/hooks/use-task-sessions.test.ts
  • apps/web/hooks/use-task-sessions.test.tsx
  • apps/web/hooks/use-task-sessions.ts
  • apps/web/hooks/use-task.test.ts
  • apps/web/hooks/use-task.ts
  • apps/web/hooks/use-tasks.test.ts
  • apps/web/hooks/use-tasks.ts
  • apps/web/hooks/use-user-display-settings.ts
  • apps/web/hooks/use-workflow-cache.ts
  • apps/web/hooks/use-workflow-snapshot.query.test.tsx
  • apps/web/hooks/use-workflow-snapshot.test.ts
  • apps/web/hooks/use-workflow-snapshot.ts
  • apps/web/hooks/use-workflow-steps.test.ts
  • apps/web/hooks/use-workflow-steps.ts
  • apps/web/hooks/use-workflows.test.ts
  • apps/web/hooks/use-workflows.test.tsx
  • apps/web/hooks/use-workflows.ts
  • apps/web/hooks/use-worktree.ts
  • apps/web/lib/api/domains/agent-profile-normalize.ts
  • apps/web/lib/api/domains/office-api.test.ts
  • apps/web/lib/api/domains/office-api.ts
  • apps/web/lib/api/domains/session-api.ts
  • apps/web/lib/kanban/find-task.test.ts
  • apps/web/lib/kanban/find-task.ts
  • apps/web/lib/kanban/move-task-error.ts
  • apps/web/lib/kanban/resolve-workflow.test.ts
  • apps/web/lib/kanban/resolve-workflow.ts
  • apps/web/lib/kanban/snapshot.ts
  • apps/web/lib/kanban/view-registry.ts
  • apps/web/lib/query/bridge/audit.ts
  • apps/web/lib/query/bridge/index.test.ts
  • apps/web/lib/query/bridge/index.ts
  • apps/web/lib/query/bridge/office.ts
  • apps/web/lib/query/bridge/registrar.ts
  • apps/web/lib/query/bridge/session-runtime.test.ts
  • apps/web/lib/query/bridge/session-runtime.ts
  • apps/web/lib/query/bridge/session.test.ts
  • apps/web/lib/query/bridge/session.ts
  • apps/web/lib/query/bridge/settings-system.test.ts
  • apps/web/lib/query/bridge/settings-system.ts
  • apps/web/lib/query/bridge/tasks.test.ts
  • apps/web/lib/query/bridge/tasks.ts
  • apps/web/lib/query/bridge/workspace.test.ts
  • apps/web/lib/query/bridge/workspace.ts
  • apps/web/lib/query/client.test.ts
  • apps/web/lib/query/client.ts
  • apps/web/lib/query/keys.test.ts
  • apps/web/lib/query/keys.ts
  • apps/web/lib/query/provider.test.tsx
  • apps/web/lib/query/provider.tsx
  • apps/web/lib/query/query-options/automations.ts
  • apps/web/lib/query/query-options/features.ts
  • apps/web/lib/query/query-options/github.ts
  • apps/web/lib/query/query-options/gitlab.ts
  • apps/web/lib/query/query-options/index.ts
  • apps/web/lib/query/query-options/jira.ts
  • apps/web/lib/query/query-options/kanban.ts
  • apps/web/lib/query/query-options/linear.ts
  • apps/web/lib/query/query-options/office.ts
  • apps/web/lib/query/query-options/query-options.test.ts
  • apps/web/lib/query/query-options/sentry.ts
  • apps/web/lib/query/query-options/session-runtime.ts
  • apps/web/lib/query/query-options/session.ts
  • apps/web/lib/query/query-options/settings.ts
  • apps/web/lib/query/query-options/slack.ts
  • apps/web/lib/query/query-options/system.ts
  • apps/web/lib/query/query-options/utils.ts
  • apps/web/lib/query/query-options/workspace.ts
  • apps/web/lib/query/seed.test.ts
  • apps/web/lib/query/seed.ts
  • apps/web/lib/query/workflow-snapshot-cache.ts
  • apps/web/lib/query/workspace-cache.ts
  • apps/web/lib/routing/kanban-route-hydration.test.ts
  • apps/web/lib/routing/kanban-route-hydration.ts
  • apps/web/lib/routing/route-bootstrap.test.ts
  • apps/web/lib/routing/route-bootstrap.ts
  • apps/web/lib/session/task-session-navigation.ts
  • apps/web/lib/ssr/mapper.test.ts
  • apps/web/lib/ssr/mapper.ts
  • apps/web/lib/ssr/session-page-state.ts
  • apps/web/lib/state/default-state.test.ts
  • apps/web/lib/state/default-state.ts
  • apps/web/lib/state/hydration/hydrator.ts
  • apps/web/lib/state/slices/automations/automations-slice.ts
  • apps/web/lib/state/slices/automations/index.ts
  • apps/web/lib/state/slices/automations/types.ts
  • apps/web/lib/state/slices/features/features-slice.test.ts
  • apps/web/lib/state/slices/features/features-slice.ts
  • apps/web/lib/state/slices/features/types.ts
  • apps/web/lib/state/slices/github/github-slice.test.ts
  • apps/web/lib/state/slices/github/github-slice.ts
  • apps/web/lib/state/slices/github/types.ts
  • apps/web/lib/state/slices/gitlab/gitlab-slice.test.ts
  • apps/web/lib/state/slices/gitlab/gitlab-slice.ts
  • apps/web/lib/state/slices/gitlab/types.ts
  • apps/web/lib/state/slices/index.ts
  • apps/web/lib/state/slices/jira/jira-slice.test.ts
  • apps/web/lib/state/slices/jira/jira-slice.ts
  • apps/web/lib/state/slices/jira/types.ts
  • apps/web/lib/state/slices/kanban/kanban-slice.test.ts
  • apps/web/lib/state/slices/kanban/kanban-slice.ts
  • apps/web/lib/state/slices/kanban/types.ts
  • apps/web/lib/state/slices/linear/linear-slice.test.ts
  • apps/web/lib/state/slices/linear/linear-slice.ts
  • apps/web/lib/state/slices/linear/types.ts
  • apps/web/lib/state/slices/office/office-agents.test.ts
  • apps/web/lib/state/slices/office/office-projects.test.ts
  • apps/web/lib/state/slices/office/office-routing.test.ts
  • apps/web/lib/state/slices/office/office-skills.test.ts
  • apps/web/lib/state/slices/office/office-slice.ts
  • apps/web/lib/state/slices/office/office-tasks.test.ts
  • apps/web/lib/state/slices/office/types.ts
  • apps/web/lib/state/slices/session-runtime/output-caps.test.ts
  • apps/web/lib/state/slices/session-runtime/purge-session.test.ts
  • apps/web/lib/state/slices/session-runtime/session-runtime-slice.ts
  • apps/web/lib/state/slices/session-runtime/types.ts
  • apps/web/lib/state/slices/session/message-signature.ts
  • apps/web/lib/state/slices/session/session-slice.merge-messages.test.ts
  • apps/web/lib/state/slices/session/session-slice.ts
  • apps/web/lib/state/slices/session/session-slice.upsert.test.ts
  • apps/web/lib/state/slices/session/task-plans.test.ts
  • apps/web/lib/state/slices/session/types.ts
  • apps/web/lib/state/slices/session/walkthroughs.test.ts
  • apps/web/lib/state/slices/settings/settings-slice.ts
  • apps/web/lib/state/slices/settings/types.ts
  • apps/web/lib/state/slices/system/index.ts
  • apps/web/lib/state/slices/system/system-slice.test.ts
  • apps/web/lib/state/slices/system/system-slice.ts
  • apps/web/lib/state/slices/system/types.ts
  • apps/web/lib/state/slices/ui/types.ts
  • apps/web/lib/state/slices/ui/ui-slice.ts
  • apps/web/lib/state/slices/workspace/types.ts
  • apps/web/lib/state/slices/workspace/workspace-slice.test.ts
  • apps/web/lib/state/slices/workspace/workspace-slice.ts
  • apps/web/lib/state/store-overrides.test.ts
  • apps/web/lib/state/store-overrides.ts
  • apps/web/lib/state/store-reexports.ts
  • apps/web/lib/state/store.ts
  • apps/web/lib/state/store.ts.backup
  • apps/web/lib/types/backend.ts
  • apps/web/lib/ws/client.test.ts
  • apps/web/lib/ws/client.ts
  • apps/web/lib/ws/connection.test.ts
  • apps/web/lib/ws/connection.ts
  • apps/web/lib/ws/handlers/agent-capabilities.ts
  • apps/web/lib/ws/handlers/agent-session-diagnostics.ts
  • apps/web/lib/ws/handlers/agent-session-kanban-sync.ts
  • apps/web/lib/ws/handlers/agent-session-kanban.test.ts
  • apps/web/lib/ws/handlers/agent-session.test.ts
  • apps/web/lib/ws/handlers/agent-session.ts
  • apps/web/lib/ws/handlers/agents.ts
  • apps/web/lib/ws/handlers/available-commands.ts
  • apps/web/lib/ws/handlers/diffs.ts
  • apps/web/lib/ws/handlers/empty-turn-notice.test.ts
  • apps/web/lib/ws/handlers/empty-turn-notice.ts
  • apps/web/lib/ws/handlers/executor-profiles.ts
  • apps/web/lib/ws/handlers/executors.ts
  • apps/web/lib/ws/handlers/github.ts
  • apps/web/lib/ws/handlers/kanban.test.ts
  • apps/web/lib/ws/handlers/kanban.ts
  • apps/web/lib/ws/handlers/office.test.ts
  • apps/web/lib/ws/handlers/office.ts
  • apps/web/lib/ws/handlers/prompt-usage.ts
  • apps/web/lib/ws/handlers/secrets.ts
  • apps/web/lib/ws/handlers/session-mode.ts
  • apps/web/lib/ws/handlers/session-poll-mode.ts
  • apps/web/lib/ws/handlers/session-todos.ts
  • apps/web/lib/ws/handlers/system-events.ts
  • apps/web/lib/ws/handlers/task-lifecycle-diagnostics.test.ts
  • apps/web/lib/ws/handlers/task-plans.test.ts
  • apps/web/lib/ws/handlers/task-plans.ts
  • apps/web/lib/ws/handlers/task-repositories.test.ts
  • apps/web/lib/ws/handlers/task-repositories.ts
  • apps/web/lib/ws/handlers/tasks-archive.test.ts
  • apps/web/lib/ws/handlers/tasks-created-snapshot.test.ts
  • apps/web/lib/ws/handlers/tasks-walkthrough-cleanup.test.ts
  • apps/web/lib/ws/handlers/tasks.test.ts
  • apps/web/lib/ws/handlers/tasks.ts
  • apps/web/lib/ws/handlers/terminals.ts
  • apps/web/lib/ws/handlers/walkthroughs.test.ts
  • apps/web/lib/ws/handlers/walkthroughs.ts
  • apps/web/lib/ws/handlers/workflows.test.ts
  • apps/web/lib/ws/handlers/workflows.ts
  • apps/web/lib/ws/handlers/workspaces.ts
  • apps/web/lib/ws/router.test.ts
  • apps/web/lib/ws/router.ts
  • apps/web/lib/ws/use-websocket.test.tsx
  • apps/web/lib/ws/use-websocket.tsx
  • apps/web/lib/ws/ws-account-e2e-helper.test.ts
  • apps/web/lib/ws/ws-account.test.ts
  • apps/web/lib/ws/ws-account.ts
  • apps/web/package.json
  • apps/web/src/boot-payload.ts
  • apps/web/src/main.tsx
  • apps/web/src/office-agent-client-routes.tsx
  • apps/web/src/office-routes.tsx
  • apps/web/src/settings-routes.test.ts
  • apps/web/src/settings-routes.tsx
  • apps/web/src/spa-routes.tsx
  • apps/web/src/spa-routes.workspace.test.tsx
  • apps/web/src/spa-routing.test.ts
  • docs/debug/task-switching-regression.md
  • docs/plans/tanstack-query-server-state/plan.md
  • docs/plans/tanstack-query-server-state/task-01-query-foundation.md
  • docs/plans/tanstack-query-server-state/task-02-ws-accounting.md
  • docs/plans/tanstack-query-server-state/task-03-query-options-taxonomy.md
  • docs/plans/tanstack-query-server-state/task-04-query-bridge-audit.md
  • docs/plans/tanstack-query-server-state/task-05-workspace-kanban-settings.md
  • docs/plans/tanstack-query-server-state/task-06-office-domain.md
  • docs/plans/tanstack-query-server-state/task-07-session-domain.md
  • docs/plans/tanstack-query-server-state/task-08-session-runtime-streams.md
  • docs/plans/tanstack-query-server-state/task-09-integrations-automations-system.md
  • docs/plans/tanstack-query-server-state/task-10-remove-zustand-server-state.md
  • docs/plans/tanstack-query-server-state/task-11-e2e-strict-qa.md
  • docs/specs/INDEX.md
  • docs/specs/ui/tanstack-query-server-state.md

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 feature/tanstack-migration-801

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.

@carlosflorencio carlosflorencio changed the title Migrate web server state to TanStack Query feat: migrate web server state to TanStack Query Jun 27, 2026
Comment thread apps/backend/internal/orchestrator/task_operations.go
Comment thread apps/backend/internal/gateway/websocket/client.go Outdated
Comment thread apps/backend/internal/orchestrator/task_operations.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: bf69acbca5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/backend/internal/gateway/websocket/client.go Outdated
Comment thread apps/web/hooks/use-session-layout-state.ts Outdated
Comment thread apps/web/lib/query/bridge/settings-system.ts
@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 1s —— View job


I'll analyze this and get back to you.

Comment thread apps/backend/internal/orchestrator/task_operations.go
Comment thread apps/web/hooks/use-session-layout-state.ts Outdated
Comment thread apps/web/lib/query/bridge/settings-system.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 09726ceb26

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/hooks/domains/session/use-user-shells.ts Outdated
Comment thread apps/web/hooks/domains/session/session-message-fetch.ts
Comment thread apps/web/lib/state/store-overrides.ts
Comment thread apps/web/lib/ws/handlers/tasks.ts Outdated
@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 0s —— View job


I'll analyze this and get back to you.

Comment thread apps/web/lib/query/bridge/settings-system.ts Outdated
Comment thread apps/backend/internal/agent/runtime/lifecycle/session.go
@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 0s —— View job


I'll analyze this and get back to you.

@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 1s —— View job


I'll analyze this and get back to you.

@github-actions

github-actions Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

OpenCode review complete

OpenCode model: opencode-go/minimax-m3

No suggestions found for commit 54b9d0bf5da1.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 69ee98d4e3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/lib/query/seed.ts Outdated
Comment thread apps/web/hooks/domains/workspace/use-repositories.ts Outdated
Comment thread apps/web/hooks/domains/session/use-session-search.ts Outdated
@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from 69ee98d to ca30c1c Compare June 27, 2026 18:09
@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 1s —— View job


I'll analyze this and get back to you.

Comment thread apps/backend/internal/agent/runtime/lifecycle/session.go
Comment thread apps/backend/internal/gateway/websocket/client.go
Comment thread apps/backend/internal/backendapp/helpers.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ca30c1ca0f

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/lib/query/bridge/workspace.ts
Comment thread apps/web/lib/query/bridge/session-runtime.ts
Comment thread apps/web/lib/query/bridge/office.ts
@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 0s —— View job


I'll analyze this and get back to you.

@github-actions

github-actions Bot commented Jun 27, 2026

Copy link
Copy Markdown
Contributor

OpenCode review diagnostic

OpenCode did not produce parseable findings, so the workflow posted this diagnostic instead of silently skipping comments.

OpenCode model: opencode-go/minimax-m3
Commit: d9e1eb00589c
OpenCode exit status: 0
Reason: No parseable findings block was found.

Recent stderr:

�[0m
> github-pr-review · minimax-m3
�[0m
�[0m→ �[0mRead .opencode-review/review.patch�[90m [offset=1352, limit=2500]�[0m
�[0m→ �[0mRead .opencode-review/review.patch�[90m [offset=2925, limit=2500]�[0m
�[0m→ �[0mRead .opencode-review/review.patch�[90m [offset=4531, limit=2500]�[0m
�[0m→ �[0mRead .opencode-review/review.patch�[90m [offset=5776, limit=2500]�[0m
�[0m→ �[0mRead .opencode-review/review.patch�[90m [offset=6919, limit=2500]�[0m
�[0m→ �[0mRead apps/backend/pkg/websocket/message.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2b513ae011

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/lib/query/seed.ts Outdated
Comment thread apps/web/lib/query/bridge/session.ts Outdated
Comment thread apps/web/lib/query/bridge/session.ts Outdated
Comment thread apps/web/hooks/domains/github/use-task-pr.ts Outdated
@claude

claude Bot commented Jun 27, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 0s —— View job


I'll analyze this and get back to you.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch 2 times, most recently from eae546f to 126c3ee Compare July 2, 2026 10:56
@claude

claude Bot commented Jul 2, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 3m 38s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Determine diff scope since last sync trigger
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD 126c3ee (committer date 2026-07-02T11:54:19+01:00, author date 2026-07-01T21:47:35+01:00). Content matches the previously-reviewed d9e1eb00 squash — same author date, same changes, new committer date from the rebase. All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280-304 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • canAcceptStampedMessage + availableClients precheck in hub.go — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.tsworkflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts — boot workflow lists seeded under the correct visible/hidden key ✓
  • hasFullSessionDetail guard in session.ts:288 — invalidates taskSession.byId when cache is event-seeded/partial ✓
  • upsertTurn patch-only guard — returns current when no turns list exists, invalidates exact key ✓
  • upsertTaskPlanRevision patch-only guard — returns current when !Array.isArray(current), invalidates list + detail keys ✓
  • sendSessionData uses sendMessage (connection-only) — per-client replay no longer advances shared session seq ✓
  • taskIdsRef in use-task-mr.ts — GitLab per-task MR caches cleared when workspace aggregate shrinks ✓
  • Array.map index fix in task-session-sidebar-messages.ts(id) => sessionMessagesLatestQueryOptions(id)
  • sessionSubscriberCounts dead code removed from hub.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level; ws-account.ts reads envelope.session_id

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push of the same squash content verified clean in the prior round; all prior findings from every review round remain correctly resolved with test coverage.

Comment thread apps/backend/internal/backendapp/ws_sent_test_route.go
Comment thread apps/backend/internal/gateway/websocket/hub.go Outdated
Comment thread apps/backend/internal/gateway/websocket/hub.go

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 126c3eeef7

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread apps/web/hooks/domains/github/use-task-pr.ts Outdated
@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from 126c3ee to d80bcfe Compare July 3, 2026 22:14
@claude

claude Bot commented Jul 3, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 2m 3s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Read code-review skill and determine diff scope since last sync trigger
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD d80bcfe (committer date 2026-07-03, author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-02T10:57:15Z, HEAD 126c3ee). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:26,100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:157-159 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — no references found in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push rebase of the same squash content verified clean in the prior round; all findings from every review round are correctly resolved with test coverage.

@claude

claude Bot commented Jul 3, 2026

Copy link
Copy Markdown

Findings

This sync re-review covers the force-pushed squash HEAD d80bcfe (committer date 2026-07-03, author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-02T10:57:15Z, HEAD 126c3ee). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:26,100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:157-159 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — no references found in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push rebase of the same squash content verified clean in the prior round; all findings from every review round are correctly resolved with test coverage.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from d80bcfe to 2e68890 Compare July 6, 2026 21:31
@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 3m 6s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Determine diff scope since last sync trigger
  • Review implementation — spot-checked all critical areas, all prior findings remain resolved
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD 2e68890 (committer date 2026-07-06, author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-03T22:17:49Z, HEAD d80bcfe). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:26,100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:157-159 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — no references in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level; frontend WS accounting reads envelope.session_id
  • hasFullSessionDetail guard in session.ts:288 — invalidates taskSession.byId when cache is event-seeded/partial ✓
  • upsertTurn patch-only guard — returns current when no turns list exists, invalidates exact key ✓
  • parent_id copied in task snapshot events via parentIdFromPayload/hasOwnProperty guard ✓
  • Array.map index fix in task-session-sidebar-messages.ts(id) => sessionMessagesLatestQueryOptions(id)
  • staleTime: 0 overrides for explicit plan reload, summarize transcript fetch, and live-sync office task refetch ✓
  • GitLab task-MR cache pruning on workspace shrink via taskIdsRef
  • sendSessionData uses sendMessage (connection-only) — per-client replay doesn't advance shared session seq ✓

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push rebase of the same squash content verified clean on 2026-07-03; all prior findings from every review round remain correctly resolved with test coverage.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from 2e68890 to 082feb5 Compare July 6, 2026 22:03
@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 4m 18s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Load code-review skill and determine diff scope since last sync trigger
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD 082feb5 (author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-06T21:31:54Z, HEAD 2e68890). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:286 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • availableClients/canAcceptStampedMessage precheck in hub.go — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.tsworkflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:170 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — not present in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level; frontend WS accounting reads envelope.session_id
  • upsertTurn patch-only guard — returns current when !isRecord(current) || !Array.isArray(current.turns)
  • upsertTaskPlanRevision patch-only guard ✓
  • parentIdFromPayload with hasOwnProperty guard for parent_id copy ✓
  • patchTaskPr invalidates workspace PR aggregates instead of cross-pollinating them ✓
  • taskIdsRef in use-task-mr.ts — GitLab per-task MR caches cleared when workspace aggregate shrinks ✓
  • sendStampedMessage marshals outside lock, connectionSeq stored only after successful send ✓

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push rebase of the same squash content verified clean on 2026-07-06; all prior findings from every review round remain correctly resolved with test coverage.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from 082feb5 to b495519 Compare July 6, 2026 22:08
@claude

claude Bot commented Jul 6, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 2m 29s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Read code-review skill and determine diff scope since last sync trigger
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD b495519 (author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-06T22:09:40Z, HEAD 082feb5). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:158 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — not present in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level; frontend WS accounting reads envelope.session_id
  • parentIdFromPayload with hasOwnProperty guard for parent_id copy in tasks.ts:163-167

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push rebase of the same squash content verified clean on 2026-07-06; all prior findings from every review round remain correctly resolved with test coverage.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from b495519 to 3f7b90c Compare July 9, 2026 21:46
@claude

claude Bot commented Jul 9, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 0s —— View job


I'll analyze this and get back to you.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch 2 times, most recently from 4d1e23e to 8caefc4 Compare July 9, 2026 23:11
@claude

claude Bot commented Jul 9, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 3m 12s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Load code-review skill and determine diff scope since last sync trigger
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD 8caefc4 (author date 2026-07-01T21:47:35+01:00). This is the same squash content verified clean in prior review rounds (most recently 2026-07-06T22:09:40Z, HEAD b495519). All prior automated review findings from every round remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent; covered by test at index.test.ts:1604
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:158 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — not present in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level; frontend WS accounting reads envelope.session_id
  • hasFullSessionDetail guard in session.ts:288 — invalidates taskSession.byId when cache is event-seeded/partial ✓
  • upsertTurn patch-only guard (if (!isRecord(current) || !Array.isArray(current.turns)) return current) ✓
  • upsertTaskPlanRevision patch-only guard (if (!Array.isArray(current)) return current) ✓
  • parentIdFromPayload with hasOwnProperty guard for parent_id copy in bridge/tasks.ts:163-167
  • taskIdsRef in use-task-mr.ts:18 — GitLab per-task MR caches cleared when workspace aggregate shrinks ✓
  • isActiveRequest/activeTaskIdRef guard in use-task-ci-options.ts:23 — stale CI option callbacks ignored after task switch ✓
  • sendStampedMessage marshals outside lock, connectionSeq.Store only after successful send in client.go:601-605

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — force-push rebase of the same squash content verified clean on 2026-07-06; all prior findings from every review round remain correctly resolved with test coverage. Full report: #1512 (comment)

@claude

claude Bot commented Jul 9, 2026

Copy link
Copy Markdown

Findings

This sync re-review covers the squashed HEAD 8caefc4 (author date 2026-07-01T21:47:35+01:00). This is the same squash content verified clean in prior review rounds (most recently 2026-07-06T22:09:40Z, HEAD b495519). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent; covered by test at index.test.ts:1604
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:158 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — not present in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level; frontend WS accounting reads envelope.session_id
  • hasFullSessionDetail guard in session.ts:288 — invalidates taskSession.byId when cache is event-seeded/partial ✓
  • upsertTurn patch-only guard (if (!isRecord(current) || !Array.isArray(current.turns)) return current) ✓
  • upsertTaskPlanRevision patch-only guard (if (!Array.isArray(current)) return current) ✓
  • parentIdFromPayload with hasOwnProperty guard for parent_id copy in bridge/tasks.ts:163-167
  • taskIdsRef in use-task-mr.ts:18 — GitLab per-task MR caches cleared when workspace aggregate shrinks ✓
  • isActiveRequest/activeTaskIdRef guard in use-task-ci-options.ts:23 — stale CI option callbacks ignored after task switch ✓
  • sendStampedMessage marshals outside lock, connectionSeq.Store only after successful send in client.go:601-605

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — force-push rebase of the same squash content verified clean on 2026-07-06; all prior findings from every review round remain correctly resolved with test coverage.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from 8caefc4 to 15153f6 Compare July 10, 2026 23:38
@claude

claude Bot commented Jul 10, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 2m 38s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Determine diff scope since last sync trigger
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the force-pushed squash HEAD 15153f6 (author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-09T23:12:11Z, HEAD 8caefc4). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent ✓
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked
  • removeWorkflowFromCachedLists in workspace.tsworkflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.tsuseActiveTaskPR is pure read-only ✓
  • includeHiddenByWorkspaceId gating in seed.ts — boot workflow lists seeded under the correct key ✓
  • sessionSubscriberCounts dead code removed ✓
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted ✓
  • Message.SessionID stamped at envelope top-level ✓
  • hasFullSessionDetail guard in session.ts
  • upsertTurn patch-only guard at session.ts:248
  • parentIdFromPayload with hasOwnProperty guard in bridge/tasks.ts
  • taskIdsRef in use-task-mr.ts — GitLab per-task MR caches cleared on workspace shrink ✓
  • staleTime: 0 overrides for explicit plan reload, summarize transcript, live-sync office task refetch ✓

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — force-push rebase of the same squash content verified clean on 2026-07-09; all prior findings from every review round remain correctly resolved with test coverage. Full report: #1512 (comment)

@claude

claude Bot commented Jul 10, 2026

Copy link
Copy Markdown

Findings

This sync re-review covers the force-pushed squash HEAD 15153f6 (author date 2026-07-01T21:47:35+01:00). This is another rebase of the same content verified clean in the prior review round (2026-07-09T23:12:11Z, HEAD 8caefc4). All prior automated review findings remain correctly resolved.

Spot-checked against all prior verdicts:

  • doubleAbsent flag in session-runtime.ts:280 — sibling agentctl_ready invalidates both taskSession.byId and sessionRuntime.worktrees when both caches are absent; covered by test at index.test.ts:1604
  • availableClients/canAcceptStampedMessage precheck in hub.go:309,343 — session seq not consumed for full-buffer recipients ✓
  • bySession index in ws_sent_log.go with eviction-aware removeSessionEntryLocked; newWsSentLogWithCapacity(0) panics ✓
  • removeWorkflowFromCachedLists in workspace.ts:26,100workflow.deleted patches list caches then invalidates ✓
  • useCachedTaskPRs + useSyncExternalStore in use-task-pr.ts:193,205useActiveTaskPR is pure read-only, no sync/retry fan-out ✓
  • includeHiddenByWorkspaceId gating in seed.ts:76,158 — boot workflow lists seeded under the correct visible/hidden key ✓
  • sessionSubscriberCounts dead code removed — not present in hub.go or hub_session_seq.go
  • store.ts.backup deleted ✓
  • use-ensure-user-settings.ts deleted, zero remaining references ✓
  • Message.SessionID stamped at envelope top-level (message.go:34); frontend WS accounting reads envelope.session_id
  • hasFullSessionDetail guard in session.ts:301,313 — invalidates taskSession.byId when cache is event-seeded/partial ✓
  • upsertTurn patch-only guard (if (!isRecord(current) || !Array.isArray(current.turns)) return current) at session.ts:248 ✓
  • parentIdFromPayload with hasOwnProperty guard for parent_id copy in bridge/tasks.ts:163-167
  • taskIdsRef in use-task-mr.ts:18 — GitLab per-task MR caches cleared when workspace aggregate shrinks ✓
  • staleTime: 0 overrides for explicit plan reload, summarize transcript fetch, and live-sync office task refetch ✓
  • sendStampedMessage marshals outside lock (client.go:594) ✓

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — this is a force-push rebase of the same squash content verified clean on 2026-07-09; all prior findings from every review round remain correctly resolved with test coverage.

@carlosflorencio carlosflorencio force-pushed the feature/tanstack-migration-801 branch from 15153f6 to 2c83854 Compare July 11, 2026 13:32
@claude

claude Bot commented Jul 11, 2026

Copy link
Copy Markdown

Claude finished @carlosflorencio's task in 2m 50s —— View job


Claude PR Review

  • Gather context (PR description, prior review history, comments)
  • Read code-review skill
  • Determine diff scope since last sync trigger (2c83854 — "fix(web): preserve query mutation state")
  • Review changed tests
  • Review implementation (security, architecture, logic, performance, complexity)
  • Post inline findings (none)
  • Post findings summary report

Findings

This sync re-review covers the single new commit 2c83854 ("fix(web): preserve query mutation state") added since the last review round (2026-07-10T23:41:25Z, HEAD 15153f6). All prior automated review findings remain correctly resolved.

2c83854 verified correct — resolves two cache state bugs with test coverage:

  1. task.plan.updated dropping implementation markers (apps/web/lib/query/bridge/session.ts:453-468) — upsertTaskPlan reconstructed the TaskPlan object from the WS event payload but omitted implementation_started_at, implementation_started_session_id, and implementation_started_by. After a plan toolbar "Start implementation" action, the task.plan.updated event was clearing those markers from the query cache. Fixed by copying all three fields. New test "preserves implementation markers from task plan updates" covers the round-trip.

  2. Accepted walkthrough prompts missing from the latest-message query cache (apps/web/hooks/domains/session/use-request-changes-walkthrough.ts:75-82) — After message.add returned the created message, the code only wrote to the Zustand live index, not the TanStack Query cache, causing a visible flash until the next WS broadcast. The fix cancels any in-flight qk.session.messages fetch, writes via the exported upsertSessionMessageCaches, and retains the Zustand write for the live index. New test asserts the accepted prompt appears in the query cache after the hook fires.

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — both cache state bugs correctly fixed with regression coverage; no new findings.

@claude

claude Bot commented Jul 11, 2026

Copy link
Copy Markdown

Findings

This sync re-review covers the single new commit 2c83854 ("fix(web): preserve query mutation state"), added since the prior review round (2026-07-10T23:41:25Z, HEAD 15153f6). All previously verified findings remain correctly resolved in the squash base.

2c83854 verified correct — resolves two cache state bugs with test coverage:

  1. task.plan.updated dropping implementation markers (apps/web/lib/query/bridge/session.ts:453-468) — upsertTaskPlan was reconstructing the TaskPlan object from the WS event payload but omitting implementation_started_at, implementation_started_session_id, and implementation_started_by. These fields are part of the TaskPlanEventPayload type and the TaskPlan HTTP type. After a plan toolbar "Start implementation" action, a task.plan.updated event fires and the bridge was clearing those markers from the query cache, making the plan tab revert to "not started" state. Fixed by copying all three fields, matching the HTTP type definition. New test "preserves implementation markers from task plan updates" in session.test.ts:294–314 confirms they survive the round-trip.

  2. Accepted walkthrough prompts missing from the latest-message query cache (apps/web/hooks/domains/session/use-request-changes-walkthrough.ts:75–82) — After message.add returned the created message, the code only wrote to the Zustand live index (state.addMessage), not the TanStack Query cache. Any mounted useSessionMessages consumer reading qk.session.messages(sessionId) would not show the walkthrough prompt until the next WS session.message.added broadcast, causing a visible flash. The fix:

    • Cancels any in-flight qk.session.messages(session_id) fetch (prevents a background refetch from overwriting the write)
    • Calls upsertSessionMessageCaches (extracted and exported from the bridge for reuse) to write the confirmed message to the query cache
    • Retains state.addMessage for the live Zustand index (correct per apps/web/AGENTS.md — retained live session index for stream ordering and active-session chrome)

    The upsertSessionMessageCaches export is minimal and intentional — no test-only leakage. The cancelQueries guards against a stale background fetch landing after the synchronous write. New test seeds the messages cache and asserts the accepted prompt appears in qk.session.messages("session-1") after the hook fires.

No new issues found.

Summary

Severity Count
Blocker 0
Suggestion 0

Verdict: Ready to merge — both cache state bugs correctly fixed with regression coverage; no new findings from this commit or the squash base.

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