chore: adopt new features from web dependency upgrades#763
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (1)
📜 Recent review details⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
🧰 Additional context used🧠 Learnings (4)📓 Common learnings📚 Learning: 2026-03-20T08:28:32.845ZApplied to files:
📚 Learning: 2026-03-23T06:17:39.326ZApplied to files:
📚 Learning: 2026-03-23T06:17:39.326ZApplied to files:
🔇 Additional comments (1)
WalkthroughThis PR applies tooling/config updates and widespread Vue template formatting. CI: adds Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Comment |
Dependency ReviewThe following issues were found:
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request focuses on adopting new features from web dependency upgrades, including ESLint, Vite, and Vitest. It incorporates new ESLint rules, enhances debugging capabilities with Vite, and improves test coverage and leak detection with Vitest. Additionally, it addresses code issues identified by the new ESLint rules, ensuring code quality and stability. Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/src/views/TaskBoardPage.vue`:
- Around line 185-188: The retry handler passed to the ErrorBoundary currently
calls taskStore.fetchTasks(filters) and agentStore.fetchAgents() without
awaiting or handling errors; change the handler to an async function that awaits
both calls (e.g., await Promise.all([...]) or sequential awaits) and wrap them
in try/catch to handle and surface errors (log or rethrow) so unhandled promise
rejections are avoided; update the inline handler for the ErrorBoundary `@retry`
to reference the async function and ensure it returns/propagates any error as
needed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: d71b3562-ae56-4dd6-b80c-b00368b0c8f0
⛔ Files ignored due to path filters (1)
web/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (80)
.github/workflows/ci.ymlCLAUDE.mdweb/eslint.config.jsweb/package.jsonweb/src/components/agents/AgentCard.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/approvals/ApprovalActions.vueweb/src/components/approvals/ApprovalCard.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/components/budget/SpendingChart.vueweb/src/components/common/AdvancedBanner.vueweb/src/components/common/AdvancedWarningDialog.vueweb/src/components/common/ChipArrayInput.vueweb/src/components/common/ConnectionLostBanner.vueweb/src/components/common/EmptyState.vueweb/src/components/common/ErrorBoundary.vueweb/src/components/common/FloatingSaveButton.vueweb/src/components/common/LoadingSkeleton.vueweb/src/components/common/NameLocaleSelector.vueweb/src/components/common/PageHeader.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/components/company/CompanyDepartmentCard.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/dashboard/SpendingSummary.vueweb/src/components/dashboard/SystemStatus.vueweb/src/components/layout/AppShell.vueweb/src/components/layout/ConnectionStatus.vueweb/src/components/layout/Sidebar.vueweb/src/components/layout/Topbar.vueweb/src/components/messages/MessageItem.vueweb/src/components/messages/MessageList.vueweb/src/components/org-chart/OrgNode.vueweb/src/components/providers/ProviderCard.vueweb/src/components/providers/ProviderFormDialog.vueweb/src/components/providers/ProviderTestButton.vueweb/src/components/settings/SettingField.vueweb/src/components/settings/SettingGroupRenderer.vueweb/src/components/settings/SettingRestartBadge.vueweb/src/components/settings/SettingSourceBadge.vueweb/src/components/settings/SettingsCodeView.vueweb/src/components/settings/SettingsNameLocales.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/setup/SetupCompany.vueweb/src/components/setup/SetupComplete.vueweb/src/components/setup/SetupNameLocale.vueweb/src/components/setup/SetupProvider.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/setup/SetupWelcome.vueweb/src/components/tasks/KanbanColumn.vueweb/src/components/tasks/TaskCard.vueweb/src/components/tasks/TaskCreateDialog.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/components/tasks/TaskFilters.vueweb/src/components/tasks/TaskListView.vueweb/src/composables/useOptimisticUpdate.tsweb/src/stores/auth.tsweb/src/views/AgentDetailPage.vueweb/src/views/AgentProfilesPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/ArtifactBrowserPage.vueweb/src/views/BudgetPanelPage.vueweb/src/views/CompanyPage.vueweb/src/views/DashboardPage.vueweb/src/views/LoginPage.vueweb/src/views/MeetingLogsPage.vueweb/src/views/MessageFeedPage.vueweb/src/views/OrgChartPage.vueweb/src/views/ProvidersPage.vueweb/src/views/SettingsPage.vueweb/src/views/SetupPage.vueweb/src/views/TaskBoardPage.vueweb/vite.config.tsweb/vitest.config.ts
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
- GitHub Check: Dashboard Build
- GitHub Check: Build Sandbox
- GitHub Check: Build Backend
- GitHub Check: Build Web
- GitHub Check: Analyze (python)
🧰 Additional context used
📓 Path-based instructions (1)
web/src/components/**/*.vue
📄 CodeRabbit inference engine (CLAUDE.md)
Vue components: organize by feature (agents/, approvals/, budget/, company/, setup/, settings/, providers/, etc.).
Files:
web/src/components/common/AdvancedWarningDialog.vueweb/src/components/messages/MessageList.vueweb/src/components/common/ChipArrayInput.vueweb/src/components/common/FloatingSaveButton.vueweb/src/components/settings/SettingsNameLocales.vueweb/src/components/budget/SpendingChart.vueweb/src/components/common/AdvancedBanner.vueweb/src/components/common/ConnectionLostBanner.vueweb/src/components/layout/AppShell.vueweb/src/components/settings/SettingSourceBadge.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/components/setup/SetupWelcome.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/settings/SettingRestartBadge.vueweb/src/components/settings/SettingsCodeView.vueweb/src/components/dashboard/SpendingSummary.vueweb/src/components/common/ErrorBoundary.vueweb/src/components/agents/AgentCard.vueweb/src/components/layout/ConnectionStatus.vueweb/src/components/approvals/ApprovalCard.vueweb/src/components/layout/Sidebar.vueweb/src/components/setup/SetupComplete.vueweb/src/components/common/EmptyState.vueweb/src/components/org-chart/OrgNode.vueweb/src/components/common/LoadingSkeleton.vueweb/src/components/layout/Topbar.vueweb/src/components/messages/MessageItem.vueweb/src/components/company/CompanyDepartmentCard.vueweb/src/components/tasks/TaskFilters.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/common/PageHeader.vueweb/src/components/setup/SetupNameLocale.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/components/dashboard/SystemStatus.vueweb/src/components/setup/SetupCompany.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/components/providers/ProviderTestButton.vueweb/src/components/settings/SettingField.vueweb/src/components/providers/ProviderCard.vueweb/src/components/tasks/KanbanColumn.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/common/NameLocaleSelector.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/components/providers/ProviderFormDialog.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/setup/SetupProvider.vueweb/src/components/tasks/TaskCreateDialog.vueweb/src/components/settings/SettingGroupRenderer.vueweb/src/components/approvals/ApprovalActions.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/tasks/TaskCard.vueweb/src/components/tasks/TaskListView.vue
🧠 Learnings (19)
📓 Common learnings
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-14T15:43:05.601Z
Learning: Applies to web/package.json : Web dashboard Node.js 20+; dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, ESLint, vue-tsc)
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to web/** : Web dashboard: Node.js 20+, dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, fast-check, ESLint, vue-tsc).
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-20T08:28:32.845Z
Learning: Applies to web/src/__tests__/**/*.{ts,js} : Dashboard testing: Vitest unit tests organized by feature under `web/src/__tests__/`. Use fast-check for property-based testing (`fc.assert` + `fc.property`).
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:20:09.993Z
Learning: Applies to web/src/components/** : Vue components organized by feature (agents/, approvals/, budget/, common/, dashboard/, layout/, messages/, org-chart/, tasks/).
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/*.yml : Dependabot: daily updates for uv + github-actions + npm + pre-commit + docker + gomod, grouped minor/patch, no auto-merge. Use `/review-dep-pr` to review Dependabot PRs before merging.
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to .github/workflows/**/*.yml : Path filtering: dorny/paths-filter detects Python/dashboard/docker changes; jobs only run when their domain is affected. CLI has its own workflow (cli.yml).
Applied to files:
.github/workflows/ci.yml
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/cli.yml : CLI workflow: Go lint (golangci-lint + go vet) + test (-race -coverprofile) + build (cross-compile: linux/darwin/windows × amd64/arm64) + govulncheck + fuzz testing (main-only, 30s/target, continue-on-error, matrix over 4 packages). cli-pass gate includes fuzz as informational. GoReleaser release on v* tags. Cosign keyless signing of checksums.txt. SLSA L3 provenance attestations. Sigstore bundle (.sigstore.json) attached. Post-release appends checksums/verification/provenance to draft release notes.
Applied to files:
.github/workflows/ci.yml
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/*.yml : Dependabot: daily updates for uv + github-actions + npm + pre-commit + docker + gomod, grouped minor/patch, no auto-merge. Use `/review-dep-pr` to review Dependabot PRs before merging.
Applied to files:
.github/workflows/ci.yml
📚 Learning: 2026-03-14T15:43:05.601Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-14T15:43:05.601Z
Learning: Applies to web/package.json : Web dashboard Node.js 20+; dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, ESLint, vue-tsc)
Applied to files:
.github/workflows/ci.ymlCLAUDE.mdweb/package.jsonweb/src/views/LoginPage.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/eslint.config.jsweb/src/views/DashboardPage.vueweb/src/components/setup/SetupAdmin.vueweb/vite.config.ts
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to web/** : Web dashboard: Node.js 20+, dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, fast-check, ESLint, vue-tsc).
Applied to files:
.github/workflows/ci.ymlCLAUDE.mdweb/package.jsonweb/src/views/LoginPage.vueweb/src/components/dashboard/RecentApprovals.vueweb/eslint.config.jsweb/src/views/DashboardPage.vueweb/vite.config.ts
📚 Learning: 2026-03-20T08:28:32.845Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-20T08:28:32.845Z
Learning: Applies to web/src/__tests__/**/*.{ts,js} : Dashboard testing: Vitest unit tests organized by feature under `web/src/__tests__/`. Use fast-check for property-based testing (`fc.assert` + `fc.property`).
Applied to files:
.github/workflows/ci.ymlweb/vitest.config.tsweb/eslint.config.jsweb/vite.config.ts
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/docker.yml : Docker workflow: builds backend + web + sandbox images, pushes to GHCR, signs with cosign. SLSA L3 provenance attestations via actions/attest-build-provenance. Scans: Trivy (CRITICAL = hard fail, HIGH = warn) + Grype (critical cutoff) + CIS Docker Benchmark v1.6.0 compliance (informational). CVE triage via .github/.trivyignore.yaml and .github/.grype.yaml. Images only pushed after scans pass. Triggers on push to main and version tags (v*).
Applied to files:
.github/workflows/ci.yml
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to docker/{Dockerfile*,compose.yml} : Docker: Backend uses 3-stage build (builder → setup → distroless runtime), Chainguard Python, non-root (UID 65532), CIS-hardened. Web uses nginxinc/nginx-unprivileged, Vue 3 SPA with PrimeVue + Tailwind CSS, SPA routing, API/WebSocket proxy to backend.
Applied to files:
.github/workflows/ci.ymlCLAUDE.md
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to pyproject.toml : Dependencies: all versions use == in pyproject.toml. Groups: test (pytest + plugins, hypothesis), dev (includes test + ruff, mypy, pre-commit, commitizen, pip-audit). Required: mem0ai (Mem0 memory backend — the default and currently only backend). Install: uv sync installs everything (dev group is default).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-19T11:19:40.044Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:19:40.044Z
Learning: Applies to go.mod : Maintain Go 1.26+ requirement. Dependencies: Cobra (CLI framework), charmbracelet/huh and charmbracelet/lipgloss (UI), sigstore-go (code signing), go-containerregistry (container image verification), go-tuf (TUF client for Sigstore).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to cli/** : CLI: Go 1.26+, dependencies in cli/go.mod (Cobra, charmbracelet/huh).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to cli/go.mod : Go CLI dependencies: Go 1.26+, Cobra (commands), charmbracelet/huh (interactive CLI), charmbracelet/lipgloss (styled output).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-19T11:33:01.580Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:33:01.580Z
Learning: Applies to docker/Dockerfile.web : `nginxinc/nginx-unprivileged` base with non-root user (UID 101), Vue 3 SPA (PrimeVue + Tailwind CSS), SPA routing, API/WebSocket proxy to backend
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T21:20:09.993Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:20:09.993Z
Learning: Applies to web/src/components/** : Vue components organized by feature (agents/, approvals/, budget/, common/, dashboard/, layout/, messages/, org-chart/, tasks/).
Applied to files:
web/src/views/AgentDetailPage.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/agents/AgentCard.vueweb/src/components/approvals/ApprovalCard.vueweb/src/views/ArtifactBrowserPage.vueweb/src/components/org-chart/OrgNode.vueweb/src/components/layout/Topbar.vueweb/src/components/company/CompanyDepartmentCard.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/views/BudgetPanelPage.vueweb/src/components/setup/SetupCompany.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/eslint.config.jsweb/src/views/AgentProfilesPage.vueweb/src/views/TaskBoardPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/components/tasks/TaskCreateDialog.vueweb/src/views/CompanyPage.vueweb/src/views/SetupPage.vueweb/src/components/approvals/ApprovalActions.vueweb/src/views/OrgChartPage.vueweb/src/views/DashboardPage.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/tasks/TaskListView.vue
📚 Learning: 2026-03-22T19:37:56.694Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-22T19:37:56.694Z
Learning: Applies to web/src/components/**/*.vue : Vue components: organize by feature (agents/, approvals/, budget/, company/, setup/, settings/, providers/, etc.).
Applied to files:
web/src/components/budget/AgentSpendingTable.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/company/CompanyDepartmentCard.vueweb/src/components/company/CompanyAgentCard.vueweb/src/views/BudgetPanelPage.vueweb/src/components/setup/SetupCompany.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/components/settings/SettingField.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/eslint.config.jsweb/src/views/AgentProfilesPage.vueweb/src/views/TaskBoardPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/CompanyPage.vueweb/src/views/SetupPage.vueweb/src/components/approvals/ApprovalActions.vueweb/src/views/OrgChartPage.vueweb/src/components/setup/SetupAdmin.vue
📚 Learning: 2026-03-19T07:12:14.508Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T07:12:14.508Z
Learning: Applies to src/synthorg/**/*.py : Package structure: src/synthorg/ organized as: api/ (REST+WebSocket, Litestar), auth/ (auth subpackage), backup/ (scheduled/manual backups), budget/ (cost tracking, CFO), cli/ (superseded by Go CLI), communication/ (message bus, meetings), config/ (YAML loading), core/ (domain models, resilience config), engine/ (orchestration, task state, coordination, approval gates, stagnation detection, context budget, compaction), hr/ (hiring, performance, promotion), memory/ (pluggable backend, Mem0, retrieval, consolidation), persistence/ (operational data, SQLite, settings), observability/ (logging, correlation, sinks), providers/ (LLM abstraction, LiteLLM, auth types, presets, runtime CRUD), settings/ (runtime-editable, typed definitions, encryption, config bridge), security/ (SecOps, rule engine, output scanning, progressive trust, autonomy levels), templates/ (company templates, personalities), tools/ (registry, built-in tools, git, sandbox, code_runner, MCP...
Applied to files:
web/src/components/setup/SetupWelcome.vue
📚 Learning: 2026-03-19T11:33:01.580Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:33:01.580Z
Learning: Applies to web/**/*.vue : Never use real vendor names (Anthropic, OpenAI, Claude, GPT, etc.) in dashboard code — use generic names: `example-provider`, `example-large-001`, etc.
Applied to files:
web/src/components/providers/ProviderCard.vueweb/src/components/setup/SetupProvider.vueweb/src/views/ProvidersPage.vue
📚 Learning: 2026-03-20T08:28:32.845Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-20T08:28:32.845Z
Learning: Applies to src/synthorg/providers/**/*.py : Providers: LLM provider abstraction (LiteLLM adapter), auth types (api_key/oauth/custom_header/none), presets (PROVIDER_PRESETS), runtime CRUD (ProviderManagementService with asyncio.Lock serialization), hot-reload via AppState swap.
Applied to files:
web/src/components/setup/SetupProvider.vue
🧬 Code graph analysis (1)
web/src/stores/auth.ts (1)
web/src/utils/errors.ts (1)
getErrorMessage(17-69)
🔇 Additional comments (77)
web/src/components/common/FloatingSaveButton.vue (1)
23-26: Formatting-only template change looks good.This multiline attribute layout preserves behavior and improves readability with no functional impact.
web/src/components/layout/ConnectionStatus.vue (1)
38-42: Formatting-only change looks good.Line 38–42 preserves semantics and accessibility (
role="status",aria-live="polite") while aligning template attribute formatting.web/src/components/common/EmptyState.vue (1)
16-28: Template-only reformat is clean and behavior-preserving.No functional change detected here; conditionals, bindings, and slot rendering remain intact.
web/src/components/setup/SetupCompany.vue (1)
91-93: Formatting-only changes look good.These updates are purely template layout/readability refactors and do not alter behavior.
As per coding guidelines, Vue components should be organized by feature directories, and this file remains correctly placed under
web/src/components/setup/.Also applies to: 142-145, 147-150, 160-163, 178-184, 196-201, 217-222
web/src/components/layout/Topbar.vue (1)
69-73: Template reformat looks safe and consistent.
Menubindings are unchanged (ref,model,popup), so this is a non-functional formatting update.web/src/components/common/NameLocaleSelector.vue (1)
118-125: LGTM! Formatting changes align with new ESLint rules.The multi-line attribute formatting and the
<input>closing tag style change (from self-closing/>to explicit>) are consistent with the adoptedvue/html-self-closingand attribute formatting rules mentioned in the PR objectives. No functional changes.Also applies to: 155-158, 195-195
web/src/components/settings/SettingsNameLocales.vue (1)
71-73: LGTM!Whitespace-only reformatting of the heading element for consistency with the new ESLint attribute formatting rules. No functional impact.
web/src/components/common/ConnectionLostBanner.vue (1)
18-21: LGTM! Formatting change aligns with Vue ESLint attribute formatting rules.The multi-line formatting of the icon element is consistent with the Vue ESLint attribute formatting rules adopted in this PR and matches the formatting style used elsewhere in the template (e.g., the Button component). The change preserves all attributes and functionality while improving consistency across the codebase.
web/src/components/tasks/TaskFilters.vue (1)
45-51: LGTM! Formatting improves consistency.The multi-line attribute layout for the Reset button now matches the Dropdown components above, creating visual consistency within the template. All props and the event handler are preserved correctly.
web/src/components/company/CompanyGeneralForm.vue (2)
30-32: LGTM: Formatting improvement.The multi-line
<p>formatting improves readability and aligns with the ESLint vue/attribute formatting rules adopted in this PR.
34-37: LGTM: Consistent multi-line formatting.The multi-line attribute layout improves readability and aligns with the ESLint vue/attribute formatting rules adopted across components in this PR.
web/src/composables/useOptimisticUpdate.ts (1)
31-33: Good cleanup ofrollbacktyping and initialization.This keeps the control flow precise and removes the unnecessary nullable/default assignment without changing behavior.
web/src/components/budget/AgentSpendingTable.vue (1)
47-84: LGTM! Template formatting improved.The multi-line attribute layout enhances readability and aligns with Vue style guide recommendations. The reformatting makes each prop clearly visible and improves git diff clarity without changing any functional behavior.
web/src/components/setup/SetupWelcome.vue (1)
17-19: LGTM!Clean multi-line formatting for the heading element, consistent with the PR's ESLint/Vue formatting rule adoption.
web/src/components/setup/SetupNameLocale.vue (1)
58-60: LGTM!Formatting change consistent with the PR's template line-wrapping updates across setup components.
web/src/components/setup/SetupComplete.vue (1)
21-23: LGTM!Consistent heading formatting with other setup components in this PR.
web/src/components/agents/AgentCard.vue (1)
26-31: LGTM!Template formatting updated for agent name and role elements, consistent with the PR's vue attribute formatting rule adoption.
web/src/views/LoginPage.vue (1)
58-75: LGTM!Template formatting updates including multi-line attribute layouts and normalizing PrimeVue
Passwordprop to kebab-case (input-id). Vue automatically converts kebab-case to camelCase for props, so this is a style consistency improvement aligned with Vue style guide recommendations.Also applies to: 86-92, 104-109
web/src/components/setup/SetupProvider.vue (1)
236-238: LGTM!Extensive template formatting updates throughout this complex component, including multi-line heading, labels, form attributes, and the loading indicator block. The
inputId→input-idnormalization for the Password component is consistent with other files in this PR. All provider setup logic (preset selection, URL probing, model discovery) remains unchanged.Also applies to: 253-255, 315-317, 336-344, 354-357, 365-374, 388-394
web/src/components/setup/SetupReviewOrg.vue (1)
218-220: LGTM!Template formatting updates for the heading, agent list container, empty state, and add-agent form section. All agent review/editing logic (name editing, model selection, randomization) remains intact.
Also applies to: 236-239, 290-293, 300-306
web/src/components/setup/SetupAdmin.vue (1)
61-63: LGTM!Template formatting updates throughout the admin setup component, including both the completed-state and form-state headings, form attributes, labels, and Password component props. The
inputId→input-idnormalization is applied consistently to both password fields, matching the pattern across all setup and auth components in this PR.Also applies to: 96-112, 124-127, 130-130, 143-151
web/src/components/common/ChipArrayInput.vue (3)
51-54: LGTM! Formatting improves readability.The multi-line attribute layout improves code readability while maintaining the same conditional rendering logic and styling.
69-72: LGTM! Accessibility properly maintained.The formatting change maintains the correct accessibility pattern: the icon is hidden from screen readers while the parent button element at lines 62-68 has the appropriate
aria-label.
78-81: LGTM! Consistent formatting pattern.The multi-line attribute layout matches the formatting pattern applied throughout this component and aligns with the ESLint rule adoption mentioned in the PR objectives.
web/src/components/settings/SettingSourceBadge.vue (1)
25-28: LGTM: Formatting improvementThe multi-line attribute layout improves readability. No functional changes to the
Tagcomponent bindings or behavior.web/src/components/settings/SettingRestartBadge.vue (1)
6-9: LGTM: Formatting improvementMulti-line prop layout improves consistency. No functional changes.
web/src/components/common/ErrorBoundary.vue (1)
20-31: LGTM: Formatting improvementThe multi-line template structure improves readability while preserving all conditional logic, accessibility attributes, and event handling.
web/src/components/dashboard/MetricCard.vue (1)
15-37: LGTM: Formatting improvementMulti-line formatting enhances readability. All bindings, conditional rendering (
v-if="subtitle"), and class expressions are preserved correctly.web/src/components/budget/SpendingChart.vue (1)
65-68: LGTM: Formatting improvementMulti-line formatting for the empty state improves consistency. No changes to the
v-elselogic or chart behavior.web/src/components/tasks/TaskCard.vue (1)
25-31: LGTM: Formatting improvementMulti-line prop layout improves readability. All bindings and the
StatusBadgecomponent configuration remain unchanged.web/src/components/tasks/KanbanColumn.vue (1)
44-47: LGTM: Formatting improvementMulti-line component invocation improves readability. The
TaskCardprops and click handler are preserved correctly within theVueDraggableslot.web/src/components/common/AdvancedBanner.vue (1)
14-17: LGTM: Formatting improvementMulti-line formatting improves consistency. The PrimeIcons class and accessibility attribute are preserved correctly.
web/src/components/approvals/ApprovalCard.vue (1)
25-27: Formatting-only update looks good.These changes preserve behavior and only improve template readability; no functional concerns in this segment.
Also applies to: 29-32, 36-38
web/src/components/tasks/TaskDetailPanel.vue (1)
84-89: Template reflow is safe and consistent.All touched lines are presentational formatting changes; bindings, conditions, events, and emit payloads remain intact.
Also applies to: 94-97, 100-105, 116-119, 121-155, 158-170, 177-205, 208-253, 259-261, 285-314
web/src/components/common/LoadingSkeleton.vue (1)
11-16: LGTM — no behavioral change in this update.The Skeleton loop and props are unchanged; this is a clean readability-only reformat.
web/src/components/providers/ProviderTestButton.vue (1)
71-76: Good template-only cleanup.The success/failure status rendering semantics remain unchanged, and the reflow is safe.
Also applies to: 79-85
web/src/views/SetupPage.vue (1)
180-183: Looks good — formatting-only changes.Touched segments keep the same conditions, keys, and rendered content.
Also applies to: 185-187, 200-203, 205-207, 232-235
web/src/components/tasks/TaskListView.vue (1)
34-45: Safe DataTable template reformat.No API/configuration changes in the touched Column definitions; behavior remains the same.
Also applies to: 50-55, 57-60, 63-67, 72-77, 78-83
web/src/components/company/CompanyDepartmentCard.vue (1)
21-35: LGTM — no functional delta in changed blocks.The conditional content and Tag binding behavior are preserved exactly.
Also applies to: 70-74
web/src/components/common/PageHeader.vue (1)
10-12: Clean readability update; behavior unchanged.Props/slot conditions are preserved and this segment is safe to merge.
Also applies to: 13-18, 19-22
web/src/views/ArtifactBrowserPage.vue (1)
9-12: Formatting-only change is clean and behavior-preserving.
PageHeaderreflow keeps identical props and output, with no logic changes.web/src/views/MessageFeedPage.vue (1)
46-49: Template reflow is consistent and safe.The multiline formatting preserves the same conditions, bindings, and retry behavior.
Also applies to: 59-66, 73-76
web/src/components/providers/ProviderCard.vue (1)
48-50: Looks good — formatting-only update with preserved behavior.Tag rendering and base URL conditional display remain unchanged functionally.
Also applies to: 52-61, 67-71
web/src/components/budget/BudgetConfigDisplay.vue (1)
11-14: Clean template normalization with no logic impact.All displayed budget fields and bindings are preserved exactly.
Also applies to: 16-21, 24-29, 32-37, 40-45, 48-53
web/src/views/BudgetPanelPage.vue (1)
39-42: No concerns — style-only refactor is consistent.The updated markup keeps the same loading/error flow and section rendering.
Also applies to: 44-51, 57-59, 64-66
web/src/components/company/CompanyAgentCard.vue (1)
34-39: Formatting update is safe and readable.Agent labels and tag severities remain functionally identical.
Also applies to: 64-76
web/src/components/dashboard/SystemStatus.vue (1)
13-15: LGTM — purely presentational reformatting.System status conditions and displayed health values are unchanged.
Also applies to: 92-95, 101-104
web/src/components/agents/AgentMetrics.vue (1)
15-20: Good cleanup — behavior remains intact.Template restructuring keeps the same bindings, conditionals, and rendered tool list behavior.
Also applies to: 23-28, 31-36, 39-44, 47-52, 55-60, 66-68, 71-76, 79-84, 87-92, 95-100, 107-119
web/src/components/settings/SettingField.vue (1)
155-159: Formatting-only update preserves behavior.The multi-line template reflow keeps the same conditions, bindings, roles, and classes; no functional concerns in these changed segments.
Also applies to: 163-175, 271-275
web/src/components/settings/SettingsCodeView.vue (1)
133-137: LGTM — template reformat only.The changed blocks retain identical rendering logic and accessibility attributes.
Also applies to: 149-152
web/src/components/providers/ProviderFormDialog.vue (1)
215-218: No functional delta in reformatted form controls/footer.All prop names, models, and click handlers are preserved after reflow.
Also applies to: 231-240, 245-254, 259-262, 275-284, 289-303, 309-318, 321-329, 332-343, 346-355, 362-371, 374-385, 392-402
web/src/components/approvals/ApprovalDetail.vue (1)
14-19: Looks good — presentation-only reformatting.The updated template keeps the same conditional rendering and displayed data.
Also applies to: 24-26, 30-36, 39-44, 47-52, 55-60, 63-68, 71-76, 79-84, 88-97, 100-111
web/src/components/dashboard/RecentApprovals.vue (1)
15-21: LGTM.Changed segments are formatting-only and preserve existing list/render behavior.
Also applies to: 25-34, 41-46, 49-52
web/src/components/dashboard/ActiveTasksSummary.vue (1)
15-21: No issues in changed ranges.Template formatting updates retain the same conditions, bindings, and output.
Also applies to: 25-34, 41-46
web/src/views/CompanyPage.vue (1)
280-425: Template restructuring is behavior-preserving.The updated view keeps identical control flow and component wiring in the changed block.
web/src/components/company/CompanyDepartmentFormDialog.vue (1)
140-143: Approved — clean formatting-only changes.All bindings and validation/error rendering behavior are preserved.
Also applies to: 155-158, 171-174, 186-189, 209-213, 222-226, 235-239, 245-249
web/src/components/company/CompanyAgentFormDialog.vue (1)
145-278: Template-only refactor is behavior-preserving.The multiline label/editor/select formatting keeps the same bindings, conditions, and accessibility hooks; no functional regression found.
web/src/components/settings/SettingGroupRenderer.vue (1)
83-130: Markup reflow looks safe.Reformatted blocks keep the same
v-if/v-else,v-for, and key usage, with no behavior changes.web/src/components/tasks/TaskCreateDialog.vue (1)
101-240: Form/template formatting update is clean.All control bindings, submit wiring, and disabled-state logic remain intact after multiline formatting.
web/src/views/SettingsPage.vue (1)
193-399: Settings page template reflow is safe.The refactor preserves all conditions, event handlers, and tab/rendering behavior while improving readability.
web/src/views/MeetingLogsPage.vue (1)
116-368: No functional concerns in this template cleanup.Column/body templates, sidebar conditions, and dialog actions remain equivalent after the multiline formatting updates.
.github/workflows/ci.yml (1)
258-258: Good CI hardening change.Adding async-leak detection to dashboard tests is a useful reliability guard with minimal workflow surface impact.
CLAUDE.md (1)
254-254: Documentation update is aligned with the tooling change.The dependency list now reflects the devtools adoption accurately.
web/src/views/AgentDetailPage.vue (1)
61-73: Template formatting change is safe.Error/loading/content branches and retry behavior are preserved exactly.
web/src/views/ApprovalQueuePage.vue (1)
102-214: LGTM!The template reformatting to multi-line attribute layouts is consistent and improves readability. This aligns with the PR's adoption of Vue ESLint rules (
vue/block-order,vue/html-self-closing, attribute formatting). No functional changes were made.web/src/views/DashboardPage.vue (1)
78-86: LGTM!Consistent multi-line attribute formatting applied to
PageHeader,LoadingSkeleton, andSystemStatus. No functional changes—formatting only.Also applies to: 126-129
web/src/stores/auth.ts (2)
105-108: LGTM!Preserving the original error via
{ cause: fetchErr }maintains the error chain for debugging while providing user-friendly messages. This correctly implements the ESLint 10preserve-caught-errorrule guidance.
167-169: LGTM!The error re-throw in
changePasswordnow preserves the original error ascause, enabling proper error chain debugging while surfacing a user-friendly message viagetErrorMessage(err).web/src/views/OrgChartPage.vue (1)
152-164: LGTM!Consistent multi-line attribute formatting applied to
PageHeader,ErrorBoundary,LoadingSkeleton, and the VueFlow container wrapper. No functional changes—formatting only.Also applies to: 180-183
web/src/views/AgentProfilesPage.vue (1)
37-49: LGTM!Consistent multi-line attribute formatting applied to
PageHeader,ErrorBoundary,LoadingSkeleton, and the grid wrapper. No functional changes—formatting only.Also applies to: 56-59
web/vite.config.ts (2)
16-16:server.forwardConsole: trueis a valid Vite 8 server option.This setting forwards browser runtime events (unhandled errors and console output) to the Vite terminal during development. The default is
auto, but explicitly setting it totrueensures the behavior is enabled. When you need finer control, you can also use an object form withunhandledErrorsandlogLevelsproperties.
8-8: Fixdevtoolsconfiguration syntax for Vite 8.The
devtools: truesyntax is incorrect. For Vite 8, usedevtools: { enabled: true }and ensure the@vitejs/devtoolspackage is installed (pnpm add -D@vitejs/devtools``). Note that DevTools currently only works in build mode, not development mode.web/vitest.config.ts (1)
17-17: Thecoverage.changedoption syntax is correct for Vitest 4.The configuration
changed: 'origin/main'undertest.coverageis valid. This option limits coverage collection to files changed since the specified git ref, and accepts both boolean values (for staged/unstaged changes) and strings for specific commit/branch references. The syntax and placement are correct.web/package.json (1)
41-41: The@vitejs/devtoolspackage at version ^0.1.5 is current (latest as of March 2026) and explicitly requires Vite 8 or higher, making it fully compatible with the project's Vite setup.web/eslint.config.js (1)
9-10: Solid ESLint upgrade configuration.The preset migration, ESLint 10 rule adoption, and test-scoped Vue rule overrides are clean and well-targeted for this PR’s goals.
Also applies to: 27-30, 45-52
web/src/views/TaskBoardPage.vue (1)
142-145: Template formatting changes look good.These edits are purely structural/readability improvements with no behavior drift.
Also applies to: 154-158
web/src/views/ProvidersPage.vue (1)
253-335: LGTM — formatting-only cleanup is safe.The template restructuring keeps the same render conditions, bindings, and handlers while improving readability.
Based on learnings: Never use real vendor names in dashboard Vue files; generic provider wording remains compliant.
There was a problem hiding this comment.
Code Review
This pull request upgrades several web dependencies, including ESLint, Vite, and Vitest. It adopts new features from these upgrades, such as stricter linting rules, which resulted in widespread formatting changes and code quality fixes. Configuration for Vite and Vitest has been updated to enable new development and testing features. The changes align with the pull request's description and no issues were found during the review.
Evaluate and adopt DX improvements from major npm dependency upgrades (PR #389): ECharts 6, vue-echarts 8, Vite 8, Vitest 4, ESLint 10, eslint-plugin-vue 10, vue-tsc 3, jsdom 29. Config changes: - ESLint: upgrade from flat/essential to flat/recommended (adds block-order, no-required-prop-with-default, attribute formatting, html-self-closing, and many more vue rules). Add 3 new ESLint 10 rules: no-unassigned-vars, no-useless-assignment, preserve-caught-error. Disable require-prop-types and one-component-per-file for test stubs. - vue-tsc: enable strictSlotChildren in vueCompilerOptions. Skip strictVModel (PrimeVue's Nullable<T> typing makes it too noisy). - Vite: enable devtools (requires @vitejs/devtools) and server.forwardConsole for browser console log streaming. - Vitest: add coverage.changed targeting origin/main for dev workflow. - CI: add --detect-async-leaks to dashboard test command. Code fixes found by new rules: - useOptimisticUpdate: remove dead null assignment to rollback variable - auth store: preserve error cause chain in 3 re-throw sites No action needed for ECharts 6 (charts explicitly style all properties), vue-echarts 8 (smart update is default), jsdom 29 (internal improvements). Closes #391 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pre-reviewed by 4 agents, 2 findings addressed: - Remove vueCompilerOptions.strictSlotChildren from tsconfig.json (not a recognized vue-tsc 3.x option -- dead config with no effect) - Add @vitejs/devtools to CLAUDE.md web dashboard dependency list Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix unhandled promise rejections in TaskBoardPage retry handler - Mode-guard devtools in vite.config.ts (disabled in production builds) - Upgrade vue/no-v-html from warn to error (zero current usages) - Add session-expiry warning log in auth.ts fetchUser 401 path - Surface rollback failure context in useOptimisticUpdate error message - Update CLAUDE.md deps list (add vue-echarts, vue-router, eslint-plugin-security, @vitest/coverage-v8) - Update CLAUDE.md CI section (mention --detect-async-leaks) - Update CLAUDE.md commands (document devtools, console forwarding, coverage.changed) - Update docs/architecture/tech-stack.md Web UI row (add Pinia, VueFlow, ECharts, Axios, devtools) - Update detect-object-injection comment (40+ warnings, ~87% false positive rate) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
3da4860 to
4b0c44a
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/package.json`:
- Line 41: Update the invalid dependency entry "@vitejs/devtools": "^0.1.5" in
package.json: either remove the "@vitejs/devtools" line entirely or replace it
with a published version (e.g. "0.0.0-alpha.22") that exists on npm, then run
your package manager to update lockfiles (npm install / yarn install) so the
lockfile reflects the change; if you choose to keep the dependency, ensure Vite
compatibility (Vite 8+) before committing the updated dependency string.
In `@web/vitest.config.ts`:
- Around line 15-20: The Vitest config currently sets coverage.changed:
'origin/main' which limits coverage to modified files; update
web/vitest.config.ts to apply this only in non-CI runs by detecting the CI
environment (e.g., process.env.CI or a custom env var) and conditionally setting
the changed property: when CI is true, omit or set changed to undefined (so full
coverage is collected), otherwise keep 'origin/main' for local runs; modify the
exported coverage object where coverage.changed is defined to compute the value
based on that environment check.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: d3daff6c-76f8-461d-9450-0f4dd1c5ac2e
⛔ Files ignored due to path filters (1)
web/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (82)
.github/workflows/ci.ymlCLAUDE.mddocs/architecture/tech-stack.mdweb/eslint.config.jsweb/package.jsonweb/src/__tests__/composables/useOptimisticUpdate.test.tsweb/src/components/agents/AgentCard.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/approvals/ApprovalActions.vueweb/src/components/approvals/ApprovalCard.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/components/budget/SpendingChart.vueweb/src/components/common/AdvancedBanner.vueweb/src/components/common/AdvancedWarningDialog.vueweb/src/components/common/ChipArrayInput.vueweb/src/components/common/ConnectionLostBanner.vueweb/src/components/common/EmptyState.vueweb/src/components/common/ErrorBoundary.vueweb/src/components/common/FloatingSaveButton.vueweb/src/components/common/LoadingSkeleton.vueweb/src/components/common/NameLocaleSelector.vueweb/src/components/common/PageHeader.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/components/company/CompanyDepartmentCard.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/dashboard/SpendingSummary.vueweb/src/components/dashboard/SystemStatus.vueweb/src/components/layout/AppShell.vueweb/src/components/layout/ConnectionStatus.vueweb/src/components/layout/Sidebar.vueweb/src/components/layout/Topbar.vueweb/src/components/messages/MessageItem.vueweb/src/components/messages/MessageList.vueweb/src/components/org-chart/OrgNode.vueweb/src/components/providers/ProviderCard.vueweb/src/components/providers/ProviderFormDialog.vueweb/src/components/providers/ProviderTestButton.vueweb/src/components/settings/SettingField.vueweb/src/components/settings/SettingGroupRenderer.vueweb/src/components/settings/SettingRestartBadge.vueweb/src/components/settings/SettingSourceBadge.vueweb/src/components/settings/SettingsCodeView.vueweb/src/components/settings/SettingsNameLocales.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/setup/SetupCompany.vueweb/src/components/setup/SetupComplete.vueweb/src/components/setup/SetupNameLocale.vueweb/src/components/setup/SetupProvider.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/setup/SetupWelcome.vueweb/src/components/tasks/KanbanColumn.vueweb/src/components/tasks/TaskCard.vueweb/src/components/tasks/TaskCreateDialog.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/components/tasks/TaskFilters.vueweb/src/components/tasks/TaskListView.vueweb/src/composables/useOptimisticUpdate.tsweb/src/stores/auth.tsweb/src/views/AgentDetailPage.vueweb/src/views/AgentProfilesPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/ArtifactBrowserPage.vueweb/src/views/BudgetPanelPage.vueweb/src/views/CompanyPage.vueweb/src/views/DashboardPage.vueweb/src/views/LoginPage.vueweb/src/views/MeetingLogsPage.vueweb/src/views/MessageFeedPage.vueweb/src/views/OrgChartPage.vueweb/src/views/ProvidersPage.vueweb/src/views/SettingsPage.vueweb/src/views/SetupPage.vueweb/src/views/TaskBoardPage.vueweb/vite.config.tsweb/vitest.config.ts
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
- GitHub Check: Build Web
- GitHub Check: Build Backend
- GitHub Check: Build Sandbox
- GitHub Check: Analyze (python)
🧰 Additional context used
📓 Path-based instructions (4)
web/src/**/*.vue
📄 CodeRabbit inference engine (CLAUDE.md)
Use Vue 3 + PrimeVue + Tailwind CSS for the dashboard frontend; components organized by feature (agents/, approvals/, budget/, company/, setup/, settings/, providers/, etc.)
Files:
web/src/views/ArtifactBrowserPage.vueweb/src/components/messages/MessageItem.vueweb/src/components/setup/SetupComplete.vueweb/src/components/settings/SettingRestartBadge.vueweb/src/components/settings/SettingSourceBadge.vueweb/src/components/settings/SettingsCodeView.vueweb/src/components/providers/ProviderTestButton.vueweb/src/components/tasks/TaskCard.vueweb/src/components/tasks/TaskFilters.vueweb/src/components/settings/SettingsNameLocales.vueweb/src/components/common/AdvancedBanner.vueweb/src/components/setup/SetupWelcome.vueweb/src/components/messages/MessageList.vueweb/src/components/common/AdvancedWarningDialog.vueweb/src/components/layout/Topbar.vueweb/src/components/tasks/KanbanColumn.vueweb/src/components/layout/Sidebar.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/tasks/TaskListView.vueweb/src/components/common/ConnectionLostBanner.vueweb/src/components/common/FloatingSaveButton.vueweb/src/components/setup/SetupNameLocale.vueweb/src/views/DashboardPage.vueweb/src/views/AgentDetailPage.vueweb/src/components/settings/SettingGroupRenderer.vueweb/src/components/approvals/ApprovalActions.vueweb/src/components/setup/SetupProvider.vueweb/src/components/common/PageHeader.vueweb/src/components/budget/SpendingChart.vueweb/src/components/dashboard/SystemStatus.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/settings/SettingField.vueweb/src/components/agents/AgentCard.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/views/LoginPage.vueweb/src/views/BudgetPanelPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/components/common/ChipArrayInput.vueweb/src/views/SetupPage.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/setup/SetupCompany.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/providers/ProviderCard.vueweb/src/components/dashboard/SpendingSummary.vueweb/src/components/layout/ConnectionStatus.vueweb/src/components/layout/AppShell.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/providers/ProviderFormDialog.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/tasks/TaskCreateDialog.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/views/MessageFeedPage.vueweb/src/components/common/EmptyState.vueweb/src/views/CompanyPage.vueweb/src/views/TaskBoardPage.vueweb/src/components/company/CompanyDepartmentCard.vueweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/views/AgentProfilesPage.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/views/ProvidersPage.vueweb/src/components/common/ErrorBoundary.vueweb/src/views/SettingsPage.vueweb/src/components/org-chart/OrgNode.vueweb/src/components/approvals/ApprovalCard.vueweb/src/views/MeetingLogsPage.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/views/OrgChartPage.vueweb/src/components/common/LoadingSkeleton.vueweb/src/components/common/NameLocaleSelector.vue
web/package.json
📄 CodeRabbit inference engine (CLAUDE.md)
Web dashboard Node.js 20+; dependencies: Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, CodeMirror 6 (vue-codemirror), js-yaml, Vitest, fast-check, ESLint, vue-tsc
Files:
web/package.json
web/src/__tests__/**/*.ts
📄 CodeRabbit inference engine (CLAUDE.md)
Use fast-check for property-based testing in Vue:
fc.assertandfc.propertywith.fast-check/outputs gitignored
Files:
web/src/__tests__/composables/useOptimisticUpdate.test.ts
web/src/stores/**/*.ts
📄 CodeRabbit inference engine (CLAUDE.md)
Use Pinia stores for state management in Vue dashboard (auth, agents, tasks, budget, messages, approvals, settings, company, providers, websocket, etc.)
Files:
web/src/stores/auth.ts
🧠 Learnings (39)
📓 Common learnings
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/package.json : Web dashboard Node.js 20+; dependencies: Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, CodeMirror 6 (vue-codemirror), js-yaml, Vitest, fast-check, ESLint, vue-tsc
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-14T15:43:05.601Z
Learning: Applies to web/package.json : Web dashboard Node.js 20+; dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, ESLint, vue-tsc)
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Dependabot: daily updates (uv, github-actions, npm, pre-commit, docker, gomod), grouped minor/patch, no auto-merge. Use `/review-dep-pr` before merging.
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to web/** : Web dashboard: Node.js 20+, dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, fast-check, ESLint, vue-tsc).
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/src/**/*.vue : Use Vue 3 + PrimeVue + Tailwind CSS for the dashboard frontend; components organized by feature (agents/, approvals/, budget/, company/, setup/, settings/, providers/, etc.)
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/*.yml : Dependabot: daily updates for uv + github-actions + npm + pre-commit + docker + gomod, grouped minor/patch, no auto-merge. Use `/review-dep-pr` to review Dependabot PRs before merging.
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:20:09.993Z
Learning: Applies to web/src/components/** : Vue components organized by feature (agents/, approvals/, budget/, common/, dashboard/, layout/, messages/, org-chart/, tasks/).
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Dependency review: `dependency-review.yml` enforces license allow-list (permissive + weak-copyleft) with per-package GPL exemptions for dev-only tool deps (golangci-lint); PR comment summaries
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-20T08:28:32.845Z
Learning: Applies to web/src/__tests__/**/*.{ts,js} : Dashboard testing: Vitest unit tests organized by feature under `web/src/__tests__/`. Use fast-check for property-based testing (`fc.assert` + `fc.property`).
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/src/__tests__/**/*.ts : Use fast-check for property-based testing in Vue: `fc.assert` and `fc.property` with `.fast-check/` outputs gitignored
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to docker/{Dockerfile*,compose.yml} : Docker: Backend uses 3-stage build (builder → setup → distroless runtime), Chainguard Python, non-root (UID 65532), CIS-hardened. Web uses nginxinc/nginx-unprivileged, Vue 3 SPA with PrimeVue + Tailwind CSS, SPA routing, API/WebSocket proxy to backend.
📚 Learning: 2026-03-15T21:20:09.993Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:20:09.993Z
Learning: Applies to web/src/components/** : Vue components organized by feature (agents/, approvals/, budget/, common/, dashboard/, layout/, messages/, org-chart/, tasks/).
Applied to files:
web/src/views/ArtifactBrowserPage.vuedocs/architecture/tech-stack.mdweb/src/views/DashboardPage.vueweb/src/views/AgentDetailPage.vueweb/src/components/approvals/ApprovalActions.vueweb/src/components/budget/SpendingChart.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/settings/SettingField.vueweb/src/components/agents/AgentCard.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/views/BudgetPanelPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/SetupPage.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/views/CompanyPage.vueweb/src/components/company/CompanyDepartmentCard.vueweb/eslint.config.jsweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/views/AgentProfilesPage.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/views/SettingsPage.vueweb/src/components/org-chart/OrgNode.vueweb/src/components/approvals/ApprovalCard.vueweb/src/views/MeetingLogsPage.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/views/OrgChartPage.vueweb/src/components/common/NameLocaleSelector.vue
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/src/**/*.vue : Use Vue 3 + PrimeVue + Tailwind CSS for the dashboard frontend; components organized by feature (agents/, approvals/, budget/, company/, setup/, settings/, providers/, etc.)
Applied to files:
web/src/views/ArtifactBrowserPage.vuedocs/architecture/tech-stack.mdweb/src/components/tasks/TaskFilters.vueweb/src/components/layout/Topbar.vueweb/src/components/company/CompanyGeneralForm.vueweb/src/components/tasks/TaskListView.vueweb/src/views/DashboardPage.vueweb/src/views/AgentDetailPage.vueweb/src/components/approvals/ApprovalActions.vueweb/src/components/setup/SetupProvider.vueweb/src/components/budget/SpendingChart.vueweb/src/components/dashboard/ActiveTasksSummary.vueweb/src/components/settings/SettingField.vueweb/src/components/company/CompanyAgentFormDialog.vueweb/src/views/LoginPage.vueweb/src/views/BudgetPanelPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/SetupPage.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/budget/BudgetConfigDisplay.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/agents/AgentMetrics.vueweb/src/components/setup/SetupCompany.vueweb/src/components/setup/SetupReviewOrg.vueweb/src/components/providers/ProviderCard.vueweb/src/components/dashboard/SpendingSummary.vueweb/src/components/company/CompanyAgentCard.vueweb/src/components/providers/ProviderFormDialog.vueweb/src/components/dashboard/RecentApprovals.vueweb/src/components/tasks/TaskCreateDialog.vueweb/src/components/approvals/ApprovalDetail.vueweb/src/views/CompanyPage.vueCLAUDE.mdweb/src/components/company/CompanyDepartmentCard.vueweb/eslint.config.jsweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/views/AgentProfilesPage.vueweb/src/components/tasks/TaskDetailPanel.vueweb/src/views/ProvidersPage.vueweb/src/views/SettingsPage.vueweb/src/components/approvals/ApprovalCard.vueweb/src/views/MeetingLogsPage.vueweb/src/components/budget/AgentSpendingTable.vueweb/src/views/OrgChartPage.vue
📚 Learning: 2026-03-14T15:43:05.601Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-14T15:43:05.601Z
Learning: Applies to web/package.json : Web dashboard Node.js 20+; dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, ESLint, vue-tsc)
Applied to files:
web/package.jsondocs/architecture/tech-stack.md.github/workflows/ci.ymlweb/src/views/DashboardPage.vueweb/src/components/setup/SetupProvider.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/SetupPage.vueweb/src/components/setup/SetupAdmin.vueweb/vite.config.tsCLAUDE.mdweb/src/components/company/CompanyDepartmentCard.vueweb/eslint.config.jsweb/src/components/company/CompanyDepartmentFormDialog.vue
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/package.json : Web dashboard Node.js 20+; dependencies: Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, CodeMirror 6 (vue-codemirror), js-yaml, Vitest, fast-check, ESLint, vue-tsc
Applied to files:
web/package.jsondocs/architecture/tech-stack.md.github/workflows/ci.ymlweb/src/components/tasks/TaskListView.vueweb/src/views/DashboardPage.vueweb/vitest.config.tsweb/src/components/setup/SetupProvider.vueweb/src/components/budget/SpendingChart.vueweb/src/views/LoginPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/views/SetupPage.vueweb/src/components/setup/SetupAdmin.vueweb/src/components/dashboard/MetricCard.vueweb/vite.config.tsweb/src/components/dashboard/RecentApprovals.vueCLAUDE.mdweb/src/components/company/CompanyDepartmentCard.vueweb/eslint.config.jsweb/src/components/company/CompanyDepartmentFormDialog.vueweb/src/views/SettingsPage.vue
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to web/** : Web dashboard: Node.js 20+, dependencies in web/package.json (Vue 3, PrimeVue, Tailwind CSS, Pinia, VueFlow, ECharts, Axios, vue-draggable-plus, Vitest, fast-check, ESLint, vue-tsc).
Applied to files:
web/package.jsondocs/architecture/tech-stack.md.github/workflows/ci.ymlweb/src/views/DashboardPage.vueweb/src/views/ApprovalQueuePage.vueweb/src/components/dashboard/RecentApprovals.vueCLAUDE.mdweb/eslint.config.js
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/src/__tests__/**/*.ts : Use fast-check for property-based testing in Vue: `fc.assert` and `fc.property` with `.fast-check/` outputs gitignored
Applied to files:
web/package.jsonweb/vitest.config.tsweb/eslint.config.js
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to web/src/stores/**/*.ts : Use Pinia stores for state management in Vue dashboard (auth, agents, tasks, budget, messages, approvals, settings, company, providers, websocket, etc.)
Applied to files:
docs/architecture/tech-stack.md
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to docker/{Dockerfile*,compose.yml} : Docker: Backend uses 3-stage build (builder → setup → distroless runtime), Chainguard Python, non-root (UID 65532), CIS-hardened. Web uses nginxinc/nginx-unprivileged, Vue 3 SPA with PrimeVue + Tailwind CSS, SPA routing, API/WebSocket proxy to backend.
Applied to files:
docs/architecture/tech-stack.md.github/workflows/ci.ymlCLAUDE.md
📚 Learning: 2026-03-19T11:33:01.580Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:33:01.580Z
Learning: Applies to web/**/*.vue : Never use real vendor names (Anthropic, OpenAI, Claude, GPT, etc.) in dashboard code — use generic names: `example-provider`, `example-large-001`, etc.
Applied to files:
docs/architecture/tech-stack.mdweb/src/components/setup/SetupProvider.vueweb/src/components/dashboard/MetricCard.vueweb/src/components/providers/ProviderCard.vueweb/src/components/providers/ProviderFormDialog.vueweb/src/views/ProvidersPage.vue
📚 Learning: 2026-03-17T22:08:13.456Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-17T22:08:13.456Z
Learning: Engine: Agent orchestration, execution loops, parallel execution, task decomposition, routing, task assignment, centralized single-writer task state engine (TaskEngine), task lifecycle, recovery, shutdown, workspace isolation, coordination (multi-agent pipeline: TopologyDispatcher protocol, 4 dispatchers — SAS/centralized/decentralized/context-dependent, wave execution, workspace lifecycle integration, CoordinationSectionConfig company config bridge, build_coordinator factory), coordination error classification, prompt policy validation, checkpoint recovery (checkpoint/, per-turn persistence, heartbeat detection, CheckpointRecoveryStrategy), approval gate (escalation detection, context parking/resume, EscalationInfo/ResumePayload models), stagnation detection (stagnation/, StagnationDetector protocol, ToolRepetitionDetector, dual-signal analysis, corrective prompt injection), agent runtime state (AgentRuntimeState, lightweight per-agent execution status for dashboard queries and recove...
Applied to files:
docs/architecture/tech-stack.md
📚 Learning: 2026-03-19T07:12:14.508Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T07:12:14.508Z
Learning: Applies to src/synthorg/**/*.py : Package structure: src/synthorg/ organized as: api/ (REST+WebSocket, Litestar), auth/ (auth subpackage), backup/ (scheduled/manual backups), budget/ (cost tracking, CFO), cli/ (superseded by Go CLI), communication/ (message bus, meetings), config/ (YAML loading), core/ (domain models, resilience config), engine/ (orchestration, task state, coordination, approval gates, stagnation detection, context budget, compaction), hr/ (hiring, performance, promotion), memory/ (pluggable backend, Mem0, retrieval, consolidation), persistence/ (operational data, SQLite, settings), observability/ (logging, correlation, sinks), providers/ (LLM abstraction, LiteLLM, auth types, presets, runtime CRUD), settings/ (runtime-editable, typed definitions, encryption, config bridge), security/ (SecOps, rule engine, output scanning, progressive trust, autonomy levels), templates/ (company templates, personalities), tools/ (registry, built-in tools, git, sandbox, code_runner, MCP...
Applied to files:
docs/architecture/tech-stack.mdweb/src/components/setup/SetupWelcome.vue
📚 Learning: 2026-03-17T22:08:13.456Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-17T22:08:13.456Z
Learning: Documentation source in `docs/` (Markdown, built with Zensical). Design spec in `docs/design/` (7 pages: index, agents, organization, communication, engine, memory, operations). Architecture in `docs/architecture/` (overview, tech-stack, decision log). Roadmap in `docs/roadmap/`. Security in `docs/security.md`. Licensing in `docs/licensing.md`. Reference in `docs/reference/`. REST API reference in `docs/rest-api.md`. Library reference in `docs/api/` (auto-generated from docstrings). Custom templates in `docs/overrides/`. Config in `mkdocs.yml`.
Applied to files:
docs/architecture/tech-stack.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to docker/Dockerfile* : Docker images: backend (Chainguard distroless, non-root), web (nginx-unprivileged, SPA + API proxy), sandbox (Python + Node.js, non-root)
Applied to files:
docs/architecture/tech-stack.md
📚 Learning: 2026-03-19T07:12:14.508Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T07:12:14.508Z
Learning: Applies to src/synthorg/engine/**/*.py : Engine package (engine/): agent orchestration, parallel execution, task decomposition, routing, TaskEngine (centralized single-writer), task lifecycle/recovery/shutdown, workspace isolation, coordination (4 dispatchers: SAS/centralized/decentralized/context-dependent, wave execution), approval gates (escalation detection, context parking/resume), stagnation detection (ToolRepetitionDetector, corrective prompt injection), AgentRuntimeState (execution status), context budget management, conversation compaction (oldest-turns summarizer)
Applied to files:
docs/architecture/tech-stack.md
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to .github/workflows/**/*.yml : Path filtering: dorny/paths-filter detects Python/dashboard/docker changes; jobs only run when their domain is affected. CLI has its own workflow (cli.yml).
Applied to files:
.github/workflows/ci.ymlCLAUDE.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Parallel CI jobs: lint (ruff) + type-check (mypy) + test (pytest + coverage) + python-audit (pip-audit) + dockerfile-lint (hadolint) + dashboard lint/type-check/test/build/audit; gated by `ci-pass`
Applied to files:
.github/workflows/ci.ymlCLAUDE.md
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/*.yml : Dependabot: daily updates for uv + github-actions + npm + pre-commit + docker + gomod, grouped minor/patch, no auto-merge. Use `/review-dep-pr` to review Dependabot PRs before merging.
Applied to files:
.github/workflows/ci.yml
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Dependabot: daily updates (uv, github-actions, npm, pre-commit, docker, gomod), grouped minor/patch, no auto-merge. Use `/review-dep-pr` before merging.
Applied to files:
.github/workflows/ci.yml
📚 Learning: 2026-03-20T08:28:32.845Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-20T08:28:32.845Z
Learning: Applies to web/src/__tests__/**/*.{ts,js} : Dashboard testing: Vitest unit tests organized by feature under `web/src/__tests__/`. Use fast-check for property-based testing (`fc.assert` + `fc.property`).
Applied to files:
.github/workflows/ci.ymlweb/vitest.config.tsweb/eslint.config.js
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/docker.yml : Docker workflow: builds backend + web + sandbox images, pushes to GHCR, signs with cosign. SLSA L3 provenance attestations via actions/attest-build-provenance. Scans: Trivy (CRITICAL = hard fail, HIGH = warn) + Grype (critical cutoff) + CIS Docker Benchmark v1.6.0 compliance (informational). CVE triage via .github/.trivyignore.yaml and .github/.grype.yaml. Images only pushed after scans pass. Triggers on push to main and version tags (v*).
Applied to files:
.github/workflows/ci.ymlCLAUDE.md
📚 Learning: 2026-03-20T08:28:32.845Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-20T08:28:32.845Z
Learning: Applies to src/synthorg/providers/**/*.py : Providers: LLM provider abstraction (LiteLLM adapter), auth types (api_key/oauth/custom_header/none), presets (PROVIDER_PRESETS), runtime CRUD (ProviderManagementService with asyncio.Lock serialization), hot-reload via AppState swap.
Applied to files:
web/src/components/setup/SetupProvider.vue
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: CLI CI: Go lint/test/build (cross-compile) + govulncheck + fuzz via `cli.yml`; GoReleaser release on `v*` tags with cosign signing + SLSA provenance
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-16T19:52:03.656Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-16T19:52:03.656Z
Learning: Applies to cli/**/*.go : Lint CLI Go code with golangci-lint and go vet; test with go test -race; check vulnerabilities with govulncheck
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-19T11:30:29.217Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:30:29.217Z
Learning: Applies to cli/**/*.go : Run Go lint via `golangci-lint run`, vet via `go vet`, tests via `go test ./...`, and fuzz via `go test -fuzz=FuzzTarget -fuzztime=30s`
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-19T11:19:40.044Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:19:40.044Z
Learning: CLI workflow (`.github/workflows/cli.yml`) runs Go lint (golangci-lint + go vet) + test (race, coverage) + build (cross-compile matrix) + vulnerability check (govulncheck) + fuzz testing. Cross-compiles for linux/darwin/windows × amd64/arm64. GoReleaser release on v* tags with cosign keyless signing and SLSA L3 attestations.
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-19T11:19:40.044Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:19:40.044Z
Learning: Applies to cli/**/*.go : Lint Go code with `golangci-lint` and `go vet`. Run tests with `-race` flag to detect race conditions.
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to cli/**/*.go : Go CLI (Go 1.26+) uses Cobra for commands, charmbracelet/huh for interactive CLI, charmbracelet/lipgloss for styled output. Cross-platform builds (linux/darwin/windows × amd64/arm64). GoReleaser for releases with cosign keyless signing of checksums.txt. SLSA L3 provenance attestations via actions/attest-build-provenance.
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: CI uses `dorny/paths-filter` for path filtering; jobs only run when their domain is affected. CLI has its own workflow (`cli.yml`).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Docker CI: build + Trivy/Grype scan + push to GHCR + cosign sign + SLSA L3 provenance; CVE triage in `.github/.trivyignore.yaml`, `.github/.grype.yaml`
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to .github/workflows/cli.yml : CLI workflow: Go lint (golangci-lint + go vet) + test (-race -coverprofile) + build (cross-compile: linux/darwin/windows × amd64/arm64) + govulncheck + fuzz testing (main-only, 30s/target, continue-on-error, matrix over 4 packages). cli-pass gate includes fuzz as informational. GoReleaser release on v* tags. Cosign keyless signing of checksums.txt. SLSA L3 provenance attestations. Sigstore bundle (.sigstore.json) attached. Post-release appends checksums/verification/provenance to draft release notes.
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T12:00:18.113Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T12:00:18.113Z
Learning: Applies to .github/workflows/docker.yml : CI Docker: build → scan → push to GHCR + cosign sign + SLSA L3 provenance via attest-build-provenance (images only pushed after Trivy/Grype scans pass).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Pages CI job: extract version from `pyproject.toml`, export OpenAPI schema, build Astro + Zensical docs with version banner, deploy to GitHub Pages on push to main
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to pyproject.toml : Dependencies: all versions use == in pyproject.toml. Groups: test (pytest + plugins, hypothesis), dev (includes test + ruff, mypy, pre-commit, commitizen, pip-audit). Required: mem0ai (Mem0 memory backend — the default and currently only backend). Install: uv sync installs everything (dev group is default).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Applies to pyproject.toml : Core dependencies required in `pyproject.toml`: `mem0ai` (Mem0 memory backend — default and currently only backend), `cryptography` (Fernet encryption for sensitive settings at rest), `faker` (multi-locale agent name generation)
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-23T06:17:39.326Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-23T06:17:39.326Z
Learning: Install all Python dependencies with `uv sync` (installs dev group by default); use `uv sync --group docs` for docs toolchain
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-19T11:19:40.044Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-19T11:19:40.044Z
Learning: Applies to go.mod : Maintain Go 1.26+ requirement. Dependencies: Cobra (CLI framework), charmbracelet/huh and charmbracelet/lipgloss (UI), sigstore-go (code signing), go-containerregistry (container image verification), go-tuf (TUF client for Sigstore).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T18:17:43.675Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T18:17:43.675Z
Learning: Applies to cli/** : CLI: Go 1.26+, dependencies in cli/go.mod (Cobra, charmbracelet/huh).
Applied to files:
CLAUDE.md
📚 Learning: 2026-03-15T21:32:02.880Z
Learnt from: CR
Repo: Aureliolo/synthorg PR: 0
File: CLAUDE.md:0-0
Timestamp: 2026-03-15T21:32:02.880Z
Learning: Applies to cli/go.mod : Go CLI dependencies: Go 1.26+, Cobra (commands), charmbracelet/huh (interactive CLI), charmbracelet/lipgloss (styled output).
Applied to files:
CLAUDE.md
🧬 Code graph analysis (2)
web/src/composables/useOptimisticUpdate.ts (1)
web/src/utils/errors.ts (1)
getErrorMessage(17-69)
web/src/stores/auth.ts (1)
web/src/utils/errors.ts (1)
getErrorMessage(17-69)
| "@types/js-yaml": "^4.0.9", | ||
| "@types/node": "^25.5.0", | ||
| "@typescript-eslint/parser": "^8.57.1", | ||
| "@vitejs/devtools": "^0.1.5", |
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
Is @vitejs/devtools version 0.1.5 compatible with Vite 8 and Node.js 20+? Please include official Vite documentation or package release notes.
💡 Result:
No—because @vitejs/devtools doesn’t appear to have a 0.1.5 release at all (public package metadata pages for the package show 0.0.0-alpha.*, e.g. 0.0.0-alpha.22, not 0.1.5).[3] So there aren’t any official release notes to confirm compatibility for “0.1.5”.
What is officially documented today:
- Vite DevTools requires Vite 8+ (current limitation in the official Vite DevTools docs).[2]
- Vite 8 requires Node.js
20.19+or22.12+(official Vite 8 announcement).[1]
So, Vite 8 + Node.js 20+ is compatible only if your Node 20 is >= 20.19, and the officially documented requirement for Vite DevTools is Vite 8+—but you’ll need to use an actually published @vitejs/devtools version (not 0.1.5).[1][2]
Sources:
[1] Vite 8 announcement (Node.js requirements) (vite.dev)
[2] Vite DevTools “Getting Started” (Vite 8+ requirement) (devtools.vite.dev)
[3] jsDelivr package page for @vitejs/devtools (shows 0.0.0-alpha.* versions, not 0.1.5) (jsdelivr.com)
Citations:
- 1: https://vite.dev/blog/announcing-vite8
- 2: https://devtools.vite.dev/guide/
- 3: https://www.jsdelivr.com/package/npm/%40vitejs/devtools
Remove or correct the @vitejs/devtools dependency—version 0.1.5 does not exist.
The specified version is not published in npm. Only pre-release versions exist (0.0.0-alpha.22, etc.), and they are unsuitable for production. This dependency will fail to install.
Either remove the dependency, use an actual alpha version, or wait for an official release. Note that when stable versions are available, Vite DevTools requires Vite 8+, which aligns with your setup.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@web/package.json` at line 41, Update the invalid dependency entry
"@vitejs/devtools": "^0.1.5" in package.json: either remove the
"@vitejs/devtools" line entirely or replace it with a published version (e.g.
"0.0.0-alpha.22") that exists on npm, then run your package manager to update
lockfiles (npm install / yarn install) so the lockfile reflects the change; if
you choose to keep the dependency, ensure Vite compatibility (Vite 8+) before
committing the updated dependency string.
CI needs full coverage for Codecov reporting; the changed-files optimization is only useful during local development. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
🤖 I have created a release *beep* *boop* --- ## [0.4.9](v0.4.8...v0.4.9) (2026-03-23) ### Features * add consultancy and data team template archetypes ([#764](#764)) ([81dc75f](81dc75f)) * add personality presets for new template archetypes ([#758](#758)) ([de4e661](de4e661)) * improve wipe command UX with interactive prompts ([#759](#759)) ([bbd4d2d](bbd4d2d)) ### Bug Fixes * stable channel detects update for dev builds ([#753](#753)) ([f53da9f](f53da9f)) ### Documentation * add version banner to docs header ([#761](#761)) ([8f8c1f8](8f8c1f8)) ### Maintenance * adopt new features from web dependency upgrades ([#763](#763)) ([1bb6336](1bb6336)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Summary
flat/essentialtoflat/recommended(adds block-order, no-required-prop-with-default, attribute formatting, html-self-closing, and many more vue rules). Add 3 new ESLint 10 rules:no-unassigned-vars,no-useless-assignment,preserve-caught-error. Disablerequire-prop-typesandone-component-per-filefor test stubs.devtools(requires@vitejs/devtools) andserver.forwardConsolefor browser console log streaming to terminal.coverage.changed: 'origin/main'for dev workflow (coverage only on changed files). Add--detect-async-leaksto CI dashboard test command.useOptimisticUpdate.ts(no-useless-assignment). Preserve error cause chain in 3 re-throw sites inauth.ts(preserve-caught-error).strictVModel(PrimeVue'sNullable<T>typing makes it too noisy without real bug-finding value), vue-tscstrictSlotChildren(not a recognized option in vue-tsc 3.x).Test plan
npm --prefix web run lint-- cleannpm --prefix web run type-check-- cleannpm --prefix web run test-- 773/773 passnpm --prefix web run build-- succeedsCloses #391
🤖 Generated with Claude Code