Skip to content

test: improve test suite#138

Merged
pedronauck merged 5 commits into
mainfrom
test-improvs
May 12, 2026
Merged

test: improve test suite#138
pedronauck merged 5 commits into
mainfrom
test-improvs

Conversation

@pedronauck
Copy link
Copy Markdown
Member

@pedronauck pedronauck commented May 12, 2026

Summary by CodeRabbit

  • New Features

    • Inspector workflow for provider settings with a right-side inspection sheet and an editable draft form
    • Provider filters UI (status, source, harness, auth mode, default) and name search
  • Improvements

    • Refactored provider list/cards: header, summary, clearer status, single “Open” action, and credential visibility
    • Provider model catalog status with per-source refresh and timestamps; auto-close inspector on delete
  • Chores

    • Added design docs sync script and improved postinstall skill linking

Review Change Stack

@pedronauck pedronauck self-assigned this May 12, 2026
@vercel
Copy link
Copy Markdown

vercel Bot commented May 12, 2026

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

Project Deployment Actions Updated (UTC)
agh-site Ready Ready Preview, Comment May 12, 2026 6:15pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 12, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 7c1527c4-4674-4c96-acf1-00cb878e37da

📥 Commits

Reviewing files that changed from the base of the PR and between 8c70db7 and 417666d.

⛔ Files ignored due to path filters (171)
  • .agents/skills/agent-exploration/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agent-exploration/assets/analysis-template.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agent-exploration/assets/explorer-agent.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agent-exploration/assets/explorer-agent.toml is excluded by !**/*.toml, !.agents/**
  • .agents/skills/agent-exploration/references/checklist.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agent-exploration/references/dispatch-rules.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agent-exploration/scripts/install-explorer.sh is excluded by !.agents/**
  • .agents/skills/agh-design/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh-qa-bootstrap/scripts/__pycache__/bootstrap-qa-env.cpython-314.pyc is excluded by !**/*.pyc, !.agents/**
  • .agents/skills/agh-test-conventions/scripts/__pycache__/check-test-conventions.cpython-314.pyc is excluded by !**/*.pyc, !.agents/**
  • .agents/skills/agh-worktree-isolation/scripts/__pycache__/allocate-isolation.cpython-314.pyc is excluded by !**/*.pyc, !.agents/**
  • .agents/skills/agh/agh-cleanup-failure-paths/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-cleanup-failure-paths/references/cleanup-table.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-cleanup-failure-paths/references/test-failure-paths.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-code-guidelines/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-code-guidelines/references/coding-style.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-code-guidelines/references/concurrency-patterns.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-contract-codegen-coship/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-contract-codegen-coship/references/coship-checklist.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-design/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-qa-bootstrap/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-qa-bootstrap/references/bootstrap-contract.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-qa-bootstrap/scripts/bootstrap-qa-env.py is excluded by !.agents/**
  • .agents/skills/agh/agh-schema-migration/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-schema-migration/references/migration-decision.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-schema-migration/references/migration-template.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-schema-migration/references/migration-test-patterns.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-test-conventions/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-test-conventions/references/test-shape-rules.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-test-conventions/scripts/check-test-conventions.py is excluded by !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/references/cdp-flow.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/references/proposal-mock-capture.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/references/storybook-urls.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/references/troubleshooting.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/scripts/cap.mjs is excluded by !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/scripts/list-stories.mjs is excluded by !.agents/**
  • .agents/skills/agh/agh-ui-screenshot/scripts/setup-workdir.sh is excluded by !.agents/**
  • .agents/skills/agh/agh-worktree-isolation/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/agh/agh-worktree-isolation/scripts/allocate-isolation.py is excluded by !.agents/**
  • .agents/skills/architectural-analysis/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/architectural-analysis/assets/report-template.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/architectural-analysis/assets/summary-template.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-primitives/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-primitives/references/action-bar.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-primitives/references/composer.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-primitives/references/message.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-primitives/references/thread.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-runtime/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-runtime/references/external-store.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-runtime/references/local-runtime.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-runtime/references/state-hooks.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-runtime/references/thread-list.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-runtime/references/types.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-streaming/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-streaming/references/assistant-transport.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-streaming/references/data-stream.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-streaming/references/encoders.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-tools/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-tools/references/human-in-loop.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-tools/references/make-tool.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui-tools/references/tool-ui.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui/references/architecture.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/assistant-ui/assistant-ui/references/packages.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/fix-coderabbit-review/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/fix-coderabbit-review/agents/openai.yaml is excluded by !**/*.yaml, !.agents/**
  • .agents/skills/fix-coderabbit-review/scripts/pr_review.py is excluded by !.agents/**
  • .agents/skills/fix-coderabbit-review/scripts/resolve_pr_issues.py is excluded by !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/marketing-ad-references.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/marketing-avatars.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/marketing-modes.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/marketing-products.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/marketing-setup-items.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/media-inputs.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/model-catalog.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/prompt-engineering.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/higgsfield-generate/references/troubleshooting.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-cli/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-media/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/examples/add-block.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/examples/add-component.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/references/demo-html-pattern.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/references/discovery.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/references/install-locations.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/references/wiring-blocks.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes-registry/references/wiring-components.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/data-in-motion.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/house-style.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/bold-energetic.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/clean-corporate.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/dark-premium.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/jewel-rich.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/monochrome.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/nature-earth.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/neon-electric.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/pastel-soft.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/palettes/warm-editorial.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/patterns.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/audio-reactive.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/beat-direction.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/captions.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/css-patterns.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/design-picker.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/dynamic-techniques.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/motion-principles.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/narration.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/prompt-expansion.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/techniques.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transcript-guide.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/catalog.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-3d.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-blur.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-cover.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-destruction.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-dissolve.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-distortion.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-grid.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-light.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-mechanical.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-other.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-push.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-radial.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/transitions/css-scale.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/typography.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/references/video-composition.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/hyperframes/scripts/animation-map.mjs is excluded by !.agents/**
  • .agents/skills/hyperframes/hyperframes/scripts/contrast-report.mjs is excluded by !.agents/**
  • .agents/skills/hyperframes/hyperframes/scripts/package-loader.mjs is excluded by !.agents/**
  • .agents/skills/hyperframes/hyperframes/templates/design-picker.html is excluded by !.agents/**
  • .agents/skills/hyperframes/hyperframes/visual-styles.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/hyperframes/three/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/qa-execution/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/qa-report/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/references/coderabbit-watch.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/references/commit-conventions.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/references/explore-impact.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/references/pr-description.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/references/qa-artifacts.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/references/release-notes.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ship-pr/scripts/detect-tooling.sh is excluded by !.agents/**
  • .agents/skills/skill-best-practices/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/skill-load-tips/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/testing-boss/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/typescript-advanced/SKILL.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/typescript-advanced/references/advanced-patterns.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/typescript-advanced/references/core-concepts.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/typescript-advanced/references/type-inference.md is excluded by !**/*.md, !.agents/**
  • .agents/skills/ui-craft/SKILL.md is excluded by !**/*.md, !.agents/**
  • .claude/agents/explorer.md is excluded by !**/*.md, !.claude/**
  • .claude/commands/refac.md is excluded by !**/*.md, !.claude/**
  • .claude/ledger/2026-05-10-MEMORY-site-token-drift-fix.md is excluded by !**/*.md, !.claude/**
  • .claude/ledger/2026-05-11-MEMORY-adr-spec-cleanup.md is excluded by !**/*.md, !.claude/**
  • .claude/ledger/2026-05-11-MEMORY-task-stories-redesign.md is excluded by !**/*.md, !.claude/**
  • .claude/ledger/2026-05-11-MEMORY-tasks-ui-fix.md is excluded by !**/*.md, !.claude/**
  • .claude/plans/2026-05-11-redesign-task-stories.md is excluded by !**/*.md, !.claude/**
  • .claude/plans/remove-addrs-mention.md is excluded by !**/*.md, !.claude/**
  • .codex/agents/explorer.toml is excluded by !**/*.toml
  • CLAUDE.md is excluded by !**/*.md
  • DESIGN.md is excluded by !**/*.md
  • docs/_memory/lessons/L-024-design-md-generated-tokens.md is excluded by !**/*.md
  • docs/_memory/lessons/README.md is excluded by !**/*.md
  • packages/site/CLAUDE.md is excluded by !**/*.md
  • packages/site/package.json is excluded by !**/*.json
  • skills-lock.json is excluded by !**/*.json
  • web/CLAUDE.md is excluded by !**/*.md
📒 Files selected for processing (21)
  • internal/acp/handlers_test.go
  • internal/api/core/skills_test.go
  • internal/bundles/resource_store_test.go
  • internal/session/additional_test.go
  • internal/store/globaldb/global_db_task_graph_audit_test.go
  • internal/store/globaldb/global_db_task_test.go
  • internal/store/globaldb/global_db_test.go
  • internal/testutil/acpmock/fixture_test.go
  • magefile.go
  • scripts/postinstall.sh
  • scripts/sync-design-md.mjs
  • web/src/hooks/routes/use-settings-providers-page.ts
  • web/src/routes/_app/settings/__tests__/-providers.test.tsx
  • web/src/systems/settings/components/provider-edit-form.tsx
  • web/src/systems/settings/components/provider-inspect-view.tsx
  • web/src/systems/settings/components/provider-inspector-sheet.tsx
  • web/src/systems/settings/components/providers-list-filters.tsx
  • web/src/systems/settings/components/stories/provider-inspector-sheet.stories.tsx
  • web/src/systems/settings/index.ts
  • web/src/systems/settings/lib/providers-list-filters.ts
  • web/src/systems/settings/types.ts

Walkthrough

Introduces a providers inspector workflow and filtering in the web UI with new components and libs, updates tests/stories/configs, replaces many route test casts with helpers, removes passWithNoTests, refines e2e/Playwright settings, and normalizes numerous Go/TS subtest names.

Changes

Providers inspector UI and test suite updates

Layer / File(s) Summary
Providers inspector workflow, hook, types
web/src/hooks/routes/use-settings-providers-page.ts, web/src/systems/settings/types.ts
Replaces editor state with ProviderInspectorState, re-exports ProviderDraft, adds filtering state and exposes inspector* handlers and filteredProviders.
Provider UI components & stories
web/src/systems/settings/components/*, web/src/routes/_app/settings/providers.tsx, web/src/systems/settings/components/stories/*
Adds ProviderCardHeader/Summary/EditForm/InspectView/InspectorSheet, refactors ProviderCard/ProvidersGrid to use onOpen, integrates filters/inspector into Providers page, and updates stories/tests.
Provider libs
web/src/systems/settings/lib/*
New provider-state view derivation and provider filter utilities (fields, chips, apply/filters).
Route test helpers
web/src/test/route-options.ts, many web/src/routes/**/__tests__/*
Adds typed routeOption helpers and updates many route tests to use them instead of casting Route internals.
Test normalization & stability
many internal/** Go tests and web tests
Standardized numerous subtest names to Should ..., added reconcile wait helpers, removed flaky sleeps, and added one notifier test (TestDreamSessionStopExecutorSkipsDreamSessions).
Tooling & scripts
magefile.go, scripts/sync-design-md.mjs, scripts/postinstall.sh, vitest.config.ts, web/vitest.config.ts, playwright.config.ts
Adds DESIGN.md sync script and mage tasks, improves postinstall symlinking, removes passWithNoTests, and adjusts Playwright artifact/ retry settings.

Sequence Diagram(s)

sequenceDiagram
  participant Page as ProvidersPage
  participant Inspector as ProviderInspectorSheet
  participant EditForm as ProviderEditForm
  participant API as ProvidersAPI
  Page->>Inspector: openInspect(entry)
  Inspector->>EditForm: switchToEdit()
  EditForm->>API: saveInspector(draft)
  API-->>Inspector: success
  Inspector->>Page: closeInspector()
  Page->>Page: applyProviderFilters(filters)
  Page->>Page: render(filteredProviders)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • compozy/agh#55 — Touches the settings index route redirect and related tests.
  • compozy/agh#138 — Also renames many test subtest labels and adjusts tests.
  • compozy/compozy#266 — Overlaps in settings/providers UI surface and component changes.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 19

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
internal/bundles/resource_store_test.go (1)

317-321: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add t.Parallel() inside these t.Run subtests.

Both table-driven subtests use t.Run("Should ...") correctly, but they miss t.Parallel() in the subtest body, which violates the test convention baseline.

Suggested fix
for _, tc := range activationCases {
    t.Run("Should activation/"+tc.name, func(t *testing.T) {
+       t.Parallel()
        if compareActivations(tc.left, tc.right) >= 0 {
            t.Fatalf("compareActivations(%s) >= 0, want left before right", tc.name)
        }
    })
}

for _, tc := range inventoryCases {
    t.Run("Should inventory/"+tc.name, func(t *testing.T) {
+       t.Parallel()
        if compareInventoryItems(tc.left, tc.right) >= 0 {
            t.Fatalf("compareInventoryItems(%s) >= 0, want left before right", tc.name)
        }
    })
}

As per coding guidelines, "**/*_test.go: Use t.Run('Should ...') subtests with t.Parallel as default (opt-out with t.Setenv) and table-driven test layout in Go tests."

Also applies to: 346-350

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/bundles/resource_store_test.go` around lines 317 - 321, The subtests
using t.Run("Should activation/"+tc.name) (and the other t.Run("Should ...")
occurrence around the same table-driven block) are missing t.Parallel(); inside
their anonymous test functions—add t.Parallel() as the first line inside each
subtest closure so the subtests run in parallel; keep the rest of the body
(including the compareActivations(tc.left, tc.right) assertion) unchanged.
internal/session/additional_test.go (1)

94-151: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add t.Parallel() inside each t.Run subtest body.

These subtests now follow the "Should ..." naming pattern, but they still miss subtest-level parallelization required by repo conventions.

Suggested patch
 t.Run("Should blank agent name uses config default", func(t *testing.T) {
+    t.Parallel()
     h := newHarness(t)
     session, err := h.manager.Create(testutil.Context(t), CreateOpts{Workspace: h.workspaceID})
@@
 t.Run("Should blank agent name without config default", func(t *testing.T) {
+    t.Parallel()
     h := newHarness(t)
@@
 t.Run("Should empty generated session id", func(t *testing.T) {
+    t.Parallel()
     h := newHarness(t, WithSessionIDGenerator(func() string { return "" }))
@@
 t.Run("Should store open failure", func(t *testing.T) {
+    t.Parallel()
     h := newHarness(t)

As per coding guidelines, "Use t.Run("Should ...") subtests with t.Parallel as default (opt-out with t.Setenv), and table-driven test layout".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/session/additional_test.go` around lines 94 - 151, Each of the
subtests in additional_test.go (the t.Run blocks titled "Should blank agent name
uses config default", "Should blank agent name without config default", "Should
empty generated session id", and "Should store open failure") must call
t.Parallel() at the start of their subtest body; update each subtest to invoke
t.Parallel() immediately after the func(t *testing.T) { line (before creating
the harness or calling h.manager.Create) so they run in parallel as per repo
conventions while still using newHarness, h.manager.Create, and the
WithSessionIDGenerator/WithStore test options safely.
internal/testutil/acpmock/fixture_test.go (1)

249-299: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Normalize table-case names to Should ... to satisfy test conventions

tc.name values in this table are passed straight to t.Run, but several names are still not in the required Should ... format.

Proposed update
  cases := []struct {
      name string
      raw  string
      want string
  }{
      {
-         name: "invalid version",
+         name: "Should reject invalid version",
          raw:  `{"version":1,"agents":[{"name":"alpha","provider":"claude","turns":[{"match":{"turn_source":"user","user_text":"hi"},"steps":[{"kind":"assistant","text":"hi"}]}]}]}`,
          want: "fixture version 1",
      },
      {
-         name: "duplicate agent",
+         name: "Should reject duplicate agent",
          raw:  `{"version":2,"agents":[{"name":"alpha","provider":"claude","turns":[{"match":{"turn_source":"user","user_text":"hi"},"steps":[{"kind":"assistant","text":"hi"}]}]},{"name":"alpha","provider":"claude","turns":[{"match":{"turn_source":"user","user_text":"hello"},"steps":[{"kind":"assistant","text":"hi"}]}]}]}`,
          want: "duplicate agent",
      },
      {
-         name: "legacy matcher fields are rejected",
+         name: "Should reject legacy matcher fields",
          raw:  `{"version":2,"agents":[{"name":"alpha","provider":"claude","turns":[{"match":{"equals":"a"},"steps":[{"kind":"assistant","text":"hi"}]}]}]}`,
          want: "unknown field",
      },
      ...
  }

As per coding guidelines, "**/*_test.go: MUST use t.Run(\"Should...\") pattern for ALL test cases."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/testutil/acpmock/fixture_test.go` around lines 249 - 299, The
table-driven tests use tc.name values passed to t.Run but several entries do not
follow the required "Should ..." naming convention; update each case's name
string in the cases slice (the entries with name: "invalid version", "duplicate
agent", "legacy matcher fields are rejected", "invalid stop reason", "invalid
permission decision", "sandbox cwd must be absolute", "driver control requires
payload") to start with "Should ..." (e.g., "Should reject invalid version") so
t.Run uses the standardized "Should ..." pattern; ensure no other logic or
assertions (the ParseFixture call and the t.Run loop) are changed.
web/src/hooks/routes/use-settings-providers-page.ts (1)

55-61: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

Consolidate the duplicate providerCredentialsConfigured helper.

This function is defined locally here (lines 55-61) but an identical implementation exists in web/src/systems/settings/lib/provider-state.ts and is re-exported by providers-list-filters.ts. The duplication creates a maintenance burden and risks divergence between the two implementations.

♻️ Recommended fix

Remove the local definition and import the shared one:

 import {
   applyProviderFilters,
   DEFAULT_PROVIDER_FILTERS,
+  providerCredentialsConfigured,
   type ProviderAuthMode,
   type ProviderDefaultFilter,
   type ProviderFilterState,
   type ProviderHarness,
 } from "@/systems/settings/lib/providers-list-filters";

-function providerCredentialsConfigured(provider: SettingsProviderEntry): boolean {
-  const credentials = provider.credentials ?? [];
-  if (credentials.length === 0) {
-    return true;
-  }
-  return credentials.every(credential => !credential.required || credential.present);
-}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/hooks/routes/use-settings-providers-page.ts` around lines 55 - 61,
Remove the local providerCredentialsConfigured function and import the shared
implementation instead: delete the function declaration in
use-settings-providers-page.ts and add an import for
providerCredentialsConfigured from the module that re-exports it
(providers-list-filters). Update any local references to use the imported
providerCredentialsConfigured symbol so the file uses the single shared
implementation.
🧹 Nitpick comments (16)
web/playwright.config.ts (1)

14-14: ⚡ Quick win

Keep CI retry configurable instead of forcing zero retries

Line 14 hard-codes retries: 0 for all environments. This tends to increase flaky CI failures without improving signal. Consider restoring a CI override (or env-based control) so transient failures can self-heal once.

Suggested change
-  retries: 0,
+  retries: process.env.CI ? 1 : 0,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/playwright.config.ts` at line 14, The config currently hard-codes
retries: 0; change it to be environment-controlled so CI can override transient
failures—read process.env.PLAYWRIGHT_RETRIES (or fallback to process.env.CI and
use a higher default for CI) and set the retries property accordingly in the
exported config (where defineConfig / retries is defined) so local runs keep 0
but CI can supply a non-zero value via env.
internal/daemon/daemon_integration_test.go (1)

4042-4086: ⚡ Quick win

Decouple these subtests so they can follow parallel-default test conventions.

Line 4042–Line 4086 currently chains subtests through shared mutable state (readOK, unmarshalOK, payload), which makes them order-dependent and not safe for t.Parallel(). Parse once, then run independent assertion subtests.

♻️ Proposed refactor
 func assertLifecycleHookPayload(t *testing.T, path string, wantEvent hookspkg.HookEvent, wantWorkspace workspacepkg.ResolvedWorkspace) {
 	t.Helper()

-	var (
-		payloadBytes []byte
-		payload      hookspkg.SessionLifecyclePayload
-		readOK       bool
-		unmarshalOK  bool
-	)
-
-	t.Run("Should read file", func(t *testing.T) {
-		var err error
-		payloadBytes, err = os.ReadFile(path)
-		if err != nil {
-			t.Fatalf("os.ReadFile(%q) error = %v", path, err)
-		}
-		readOK = true
-	})
-
-	t.Run("Should unmarshal", func(t *testing.T) {
-		if !readOK {
-			t.Skip("payload unavailable after read failure")
-		}
-		if err := json.Unmarshal(payloadBytes, &payload); err != nil {
-			t.Fatalf("json.Unmarshal(%q) error = %v", path, err)
-		}
-		unmarshalOK = true
-	})
+	payloadBytes, err := os.ReadFile(path)
+	if err != nil {
+		t.Fatalf("os.ReadFile(%q) error = %v", path, err)
+	}
+	var payload hookspkg.SessionLifecyclePayload
+	if err := json.Unmarshal(payloadBytes, &payload); err != nil {
+		t.Fatalf("json.Unmarshal(%q) error = %v", path, err)
+	}

 	t.Run("Should event", func(t *testing.T) {
-		if !unmarshalOK {
-			t.Skip("payload unavailable after unmarshal failure")
-		}
+		t.Parallel()
 		if payload.Event != wantEvent {
 			t.Fatalf("payload.Event = %q, want %q", payload.Event, wantEvent)
 		}
 	})

 	t.Run("Should workspace id", func(t *testing.T) {
-		if !unmarshalOK {
-			t.Skip("payload unavailable after unmarshal failure")
-		}
+		t.Parallel()
 		if payload.WorkspaceID != wantWorkspace.ID {
 			t.Fatalf("payload.WorkspaceID = %q, want %q", payload.WorkspaceID, wantWorkspace.ID)
 		}
 	})

 	t.Run("Should workspace path", func(t *testing.T) {
-		if !unmarshalOK {
-			t.Skip("payload unavailable after unmarshal failure")
-		}
+		t.Parallel()
 		if payload.Workspace != wantWorkspace.RootDir {
 			t.Fatalf("payload.Workspace = %q, want %q", payload.Workspace, wantWorkspace.RootDir)
 		}
 	})
 }

As per coding guidelines, "**/*_test.go: Use t.Run('Should ...') subtests with t.Parallel as default (opt-out with t.Setenv) and table-driven test layout in Go tests."

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/daemon/daemon_integration_test.go` around lines 4042 - 4086, Replace
the chained, stateful subtests that rely on readOK/unmarshalOK/payloadBytes (the
four t.Run blocks and the earlier read/unmarshal blocks) with a single setup
step that reads and unmarshals the file once (using path into payloadBytes and
json.Unmarshal into payload) and then independent parallel assertion subtests;
remove the boolean flags (readOK, unmarshalOK) and instead run t.Run subtests
for "Should event", "Should workspace id", and "Should workspace path" that each
call t.Parallel() and assert payload.Event == wantEvent, payload.WorkspaceID ==
wantWorkspace.ID, and payload.Workspace == wantWorkspace.RootDir respectively,
failing with t.Fatalf on mismatch—this decouples order dependency and lets each
subtest run in parallel safely while keeping the unique identifiers
payloadBytes, payload, wantEvent, wantWorkspace.ID, wantWorkspace.RootDir, and
path to locate the changes.
internal/memory/dream_test.go (2)

184-184: 💤 Low value

Refine test name grammar for clarity.

The test name has a subject-verb agreement issue: "time gate short-circuits" should be "time gate short-circuit" (infinitive form after "Should"). Consider rephrasing for better readability:

  • "Should short-circuit when time gate fails" (recommended), or
  • "Should time gate short-circuit session and lock checks"
Suggested alternatives
-	t.Run("Should time gate short-circuits session and lock", func(t *testing.T) {
+	t.Run("Should short-circuit when time gate fails", func(t *testing.T) {

or

-	t.Run("Should time gate short-circuits session and lock", func(t *testing.T) {
+	t.Run("Should time gate short-circuit session and lock checks", func(t *testing.T) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/memory/dream_test.go` at line 184, Rename the t.Run test title
string to fix grammar and improve clarity: replace the current "Should time gate
short-circuits session and lock" in the t.Run call with a clearer phrasing such
as "Should short-circuit when time gate fails" (or "Should time gate
short-circuit session and lock checks") so the test name uses the correct verb
form and reads clearly.

214-214: 💤 Low value

Fix verb form in test name.

The test name has an incorrect verb form: "session gate runs" should use the infinitive "run" after "Should".

Grammar fix
-	t.Run("Should session gate runs after time gate without touching lock", func(t *testing.T) {
+	t.Run("Should session gate run after time gate without touching lock", func(t *testing.T) {

or for improved clarity:

-	t.Run("Should session gate runs after time gate without touching lock", func(t *testing.T) {
+	t.Run("Should run session gate after time gate passes without lock acquisition", func(t *testing.T) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/memory/dream_test.go` at line 214, Rename the test title string in
the t.Run call from "Should session gate runs after time gate without touching
lock" to the correct infinitive form, e.g. "Should session gate run after time
gate without touching lock" (locate the t.Run invocation in the test body where
the current caption is used and update the string literal accordingly).
internal/workspace/resolver_test.go (1)

1371-1371: ⚡ Quick win

Improve test names to describe behavior, not just function names.

The test names add "Should" but don't describe the actual behavior being tested. Compare these with other subtests in this file (lines 119, 150, 704, 748) which properly describe behavior. As per coding guidelines, test names should meaningfully describe what behavior is verified, not just prefix function names with "Should".

📝 Suggested behavioral descriptions
-	t.Run("Should errorType", func(t *testing.T) {
+	t.Run("Should classify errors by type", func(t *testing.T) {
-	t.Run("Should checkContext", func(t *testing.T) {
+	t.Run("Should validate context is not nil or cancelled", func(t *testing.T) {
-	t.Run("Should canonicalRoot", func(t *testing.T) {
+	t.Run("Should resolve and validate canonical root path", func(t *testing.T) {
-	t.Run("Should snapshots and overrides", func(t *testing.T) {
+	t.Run("Should handle file snapshots and configuration overrides", func(t *testing.T) {
-	t.Run("Should generateID", func(t *testing.T) {
+	t.Run("Should generate workspace ID with correct prefix", func(t *testing.T) {

Also applies to: 1395-1395, 1413-1413, 1430-1430, 1473-1473

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/workspace/resolver_test.go` at line 1371, The subtest names like
"Should errorType" are non-descriptive; update each t.Run call that uses "Should
..." (including the one currently named "Should errorType" and the other similar
occurrences) to a behavior-first description (e.g. "returns X when Y" or
"returns ErrType for invalid input") that states the expected outcome and the
condition; follow the existing style used by the other subtests in this file
(the descriptive examples around lines 119, 150, 704, 748) so readers can
understand what behavior each subtest verifies without opening the body of the
test.
internal/api/core/tasks_surface_test.go (2)

649-649: ⚡ Quick win

Improve test name grammar to form a complete sentence.

The test name "Should happy path json endpoints" is grammatically incomplete. The "Should ..." pattern should describe the expected behavior in a readable sentence. Consider renaming to:

  • "Should successfully handle all JSON endpoints in happy path", or
  • "Should return correct responses for happy path JSON endpoints"
✏️ Suggested improvement
-	t.Run("Should happy path json endpoints", func(t *testing.T) {
+	t.Run("Should successfully handle all JSON endpoints in happy path", func(t *testing.T) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/core/tasks_surface_test.go` at line 649, The test name string in
the t.Run call inside tasks_surface_test.go ("Should happy path json endpoints")
is grammatically incomplete; update the test name to a complete sentence such as
"Should return correct responses for happy path JSON endpoints" (or "Should
successfully handle all JSON endpoints in happy path") by replacing the t.Run
title to the chosen phrasing so the test description reads clearly.

817-817: ⚡ Quick win

Improve test name grammar to form a complete sentence.

The test name "Should task stream sse" is grammatically incomplete. Consider renaming to clearly describe the expected behavior:

  • "Should stream task events via SSE", or
  • "Should correctly handle task streaming via Server-Sent Events"
✏️ Suggested improvement
-	t.Run("Should task stream sse", func(t *testing.T) {
+	t.Run("Should stream task events via SSE", func(t *testing.T) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/core/tasks_surface_test.go` at line 817, Rename the test case
label passed to t.Run from the grammatically incorrect "Should task stream sse"
to a clear, complete sentence such as "Should stream task events via SSE" (or
"Should correctly handle task streaming via Server-Sent Events") so the test
description in the t.Run call accurately describes expected behavior and reads
naturally; locate the t.Run invocation in the tests (the anonymous test function
started with t.Run("Should task stream sse", func(t *testing.T) { ... })) and
update the string accordingly.
internal/extension/bridge_delivery_notifier_test.go (2)

448-456: ⚡ Quick win

Add specific error assertion.

The test only checks that an error occurred without validating the error type or message. This weak assertion could pass even if the validation logic returns an unrelated error.

Proposed fix to add specific error validation
 	t.Run("Should invalid request", func(t *testing.T) {
 		t.Parallel()
 
 		manager := &Manager{}
 		_, err := manager.DeliverBridge(testutil.Context(t), "ext-telegram", bridgepkg.DeliveryRequest{})
-		if err == nil {
-			t.Fatal("DeliverBridge() error = nil, want validation error")
+		if err == nil || !strings.Contains(err.Error(), "delivery ID") {
+			t.Fatalf("DeliverBridge() error = %v, want validation error about missing delivery ID", err)
 		}
 	})

As per coding guidelines, tests must have specific error assertions using ErrorContains or ErrorAs, not just err == nil checks.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/extension/bridge_delivery_notifier_test.go` around lines 448 - 456,
The test currently only asserts that DeliverBridge returned a non-nil error;
update the test to assert the specific validation error by calling
manager.DeliverBridge (Manager.DeliverBridge) with an empty
bridgepkg.DeliveryRequest and then use testutil.ErrorContains or errors.As to
verify the error type/message (e.g., expect a validation error substring or
specific error type) instead of only checking err == nil so the test fails for
unrelated errors.

319-319: ⚡ Quick win

Correct the grammatically incomplete test names.

While these names follow the "Should..." pattern required by the guidelines, they are grammatically incomplete fragments. Test names should be complete sentences describing the expected behavior.

Proposed corrections for all subtest names
-	t.Run("Should success", func(t *testing.T) {
+	t.Run("Should deliver bridge message successfully", func(t *testing.T) {

-	t.Run("Should canceled context", func(t *testing.T) {
+	t.Run("Should return error when context is canceled", func(t *testing.T) {

-	t.Run("Should nil manager", func(t *testing.T) {
+	t.Run("Should return error when manager is nil", func(t *testing.T) {

-	t.Run("Should inactive extension", func(t *testing.T) {
+	t.Run("Should return error when extension is inactive", func(t *testing.T) {

-	t.Run("Should missing negotiated method", func(t *testing.T) {
+	t.Run("Should return error when negotiated method is missing", func(t *testing.T) {

-	t.Run("Should process call failure", func(t *testing.T) {
+	t.Run("Should return error when process call fails", func(t *testing.T) {

-	t.Run("Should invalid request", func(t *testing.T) {
+	t.Run("Should return error when request is invalid", func(t *testing.T) {

-	t.Run("Should missing extension name", func(t *testing.T) {
+	t.Run("Should return error when extension name is missing", func(t *testing.T) {

As per coding guidelines, test names should clearly describe the expected behavior in complete sentences.

Also applies to: 365-365, 378-378, 388-388, 403-403, 422-422, 448-448, 458-458

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/extension/bridge_delivery_notifier_test.go` at line 319, Update the
grammatically incomplete t.Run subtest titles in
bridge_delivery_notifier_test.go so each is a complete sentence describing
expected behavior (e.g. replace "Should success" with "Succeeds" or "Should
succeed when <condition>" as appropriate). Locate the t.Run calls (the subtests
using t.Run in the file) and modify their first argument strings for all
occurrences mentioned (the subtests around the existing "Should success" and the
other listed subtests) to be full-sentence expectations that clearly state the
scenario and outcome. Ensure consistency with the project's "Should..." pattern
by using full sentences like "Should succeed when the delivery payload is valid"
or "Should return an error when X occurs" and update any related assertions'
messages if they rely on the old names.
internal/cli/extension_test.go (1)

152-178: 💤 Low value

Consider completing the sentence structure in subtest names.

The subtest names "Should human", "Should json", and "Should toon" follow the "Should..." prefix convention but are grammatically incomplete. Consider making them complete sentences for better readability in test output:

  • "Should format output as human" (or "Should output human format")
  • "Should format output as json" (or "Should output json format")
  • "Should format output as toon" (or "Should output toon format")

This would make the test intent clearer when reading test results.

📝 Suggested improvement
-	t.Run("Should human", func(t *testing.T) {
+	t.Run("Should format output as human", func(t *testing.T) {
 		stdout, _, err := executeRootCommand(t, deps, "extension", "list", "-o", "human")
 		if err != nil {
 			t.Fatalf("extension list human error = %v", err)
 		}
 		for _, token := range []string{"Extensions", "Name", "Version", "Type", "State", "Capabilities", "list-ext", "memory.backend"} {
 			if !strings.Contains(stdout, token) {
 				t.Fatalf("human output missing %q: %s", token, stdout)
 			}
 		}
 	})
 
-	t.Run("Should json", func(t *testing.T) {
+	t.Run("Should format output as json", func(t *testing.T) {
 		stdout, _, err := executeRootCommand(t, deps, "extension", "list", "-o", "json")
 		if err != nil {
 			t.Fatalf("extension list json error = %v", err)
 		}
 		var items []ExtensionRecord
 		if err := json.Unmarshal([]byte(stdout), &items); err != nil {
 			t.Fatalf("json.Unmarshal(list) error = %v", err)
 		}
 		if len(items) != 1 || items[0].Name != "list-ext" || items[0].Type != "subprocess" {
 			t.Fatalf("list json = %#v, want one subprocess extension", items)
 		}
 	})
 
-	t.Run("Should toon", func(t *testing.T) {
+	t.Run("Should format output as toon", func(t *testing.T) {
 		stdout, _, err := executeRootCommand(t, deps, "extension", "list", "-o", "toon")
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/cli/extension_test.go` around lines 152 - 178, Rename the incomplete
subtest titles in the t.Run calls for the extension list tests so they read as
complete, descriptive sentences (e.g., change "Should human", "Should json",
"Should toon" to "Should output human format", "Should output json format",
"Should output toon format"); update the three t.Run invocations in
internal/cli/extension_test.go (the tests that call executeRootCommand and
unmarshal the JSON into []ExtensionRecord) to use the new names so test output
is clearer and self-explanatory.
internal/memory/assembler_test.go (1)

20-20: ⚡ Quick win

Fix grammatical errors in test names.

Several test names have grammatical issues. "Should" is a modal auxiliary verb and must be followed by the base form of the verb (infinitive without "to"), not conjugated forms. Additionally, some names are missing verbs or are unclear.

Corrections needed:

  • Line 20: "Should global index only""Should handle global index only" or "Should assemble global index only"
  • Line 35: "Should workspace index only""Should handle workspace index only" or "Should assemble workspace index only"
  • Line 50: "Should both indexes""Should handle both indexes" or "Should assemble both indexes"
  • Line 64: "Should empty indexes returns original prompt""Should return original prompt when indexes are empty"
  • Line 74: "Should includes taxonomy instructions""Should include taxonomy instructions"
  • Line 88: "Should includes agh memory command reference""Should include agh memory command reference"
  • Line 109: "Should includes staleness policy""Should include staleness policy"
  • Line 122: "Should memory context before agent prompt""Should place memory context before agent prompt"
  • Line 147: "Should returns memory block for global and workspace indexes only""Should return memory block for global and workspace indexes only"
  • Line 173: "Should returns empty string when indexes are missing""Should return empty string when indexes are missing"
  • Line 184: "Should respects context cancellation""Should respect context cancellation"
📝 Proposed fixes for test names
-	t.Run("Should global index only", func(t *testing.T) {
+	t.Run("Should assemble global index only", func(t *testing.T) {

-	t.Run("Should workspace index only", func(t *testing.T) {
+	t.Run("Should assemble workspace index only", func(t *testing.T) {

-	t.Run("Should both indexes", func(t *testing.T) {
+	t.Run("Should assemble both indexes", func(t *testing.T) {

-	t.Run("Should empty indexes returns original prompt", func(t *testing.T) {
+	t.Run("Should return original prompt when indexes are empty", func(t *testing.T) {

-	t.Run("Should includes taxonomy instructions", func(t *testing.T) {
+	t.Run("Should include taxonomy instructions", func(t *testing.T) {

-	t.Run("Should includes agh memory command reference", func(t *testing.T) {
+	t.Run("Should include agh memory command reference", func(t *testing.T) {

-	t.Run("Should includes staleness policy", func(t *testing.T) {
+	t.Run("Should include staleness policy", func(t *testing.T) {

-	t.Run("Should memory context before agent prompt", func(t *testing.T) {
+	t.Run("Should place memory context before agent prompt", func(t *testing.T) {

-	t.Run("Should returns memory block for global and workspace indexes only", func(t *testing.T) {
+	t.Run("Should return memory block for global and workspace indexes only", func(t *testing.T) {

-	t.Run("Should returns empty string when indexes are missing", func(t *testing.T) {
+	t.Run("Should return empty string when indexes are missing", func(t *testing.T) {

-	t.Run("Should respects context cancellation", func(t *testing.T) {
+	t.Run("Should respect context cancellation", func(t *testing.T) {

As per coding guidelines: "Use t.Run('Should ...') subtests" — the pattern should use grammatically correct English with base form verbs after "Should".

Also applies to: 35-35, 50-50, 64-64, 74-74, 88-88, 109-109, 122-122, 147-147, 173-173, 184-184

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/memory/assembler_test.go` at line 20, Update the t.Run subtest names
in assembler_test.go to use grammatically correct phrasing by replacing the
current strings: change "Should global index only" to "Should assemble global
index only" (or "Should handle global index only"), "Should workspace index
only" to "Should assemble workspace index only", "Should both indexes" to
"Should assemble both indexes", "Should empty indexes returns original prompt"
to "Should return original prompt when indexes are empty", "Should includes
taxonomy instructions" to "Should include taxonomy instructions", "Should
includes agh memory command reference" to "Should include agh memory command
reference", "Should includes staleness policy" to "Should include staleness
policy", "Should memory context before agent prompt" to "Should place memory
context before agent prompt", "Should returns memory block for global and
workspace indexes only" to "Should return memory block for global and workspace
indexes only", "Should returns empty string when indexes are missing" to "Should
return empty string when indexes are missing", and "Should respects context
cancellation" to "Should respect context cancellation" — update the string
literals passed to t.Run in the test functions (e.g., the subtest name
arguments) accordingly.
internal/memory/consolidation/runtime_test.go (1)

72-72: ⚡ Quick win

Improve grammatical consistency in test names.

The test names follow the required "Should..." convention but have inconsistent grammar. Use active voice with the verb immediately after "Should" for better readability:

  • "Should disabled returns disabled message" → "Should return disabled message when disabled"
  • "Should gate miss returns not satisfied message" → "Should return not satisfied message when gate misses"
  • "Should service error is returned" → "Should return service error"
  • "Should nil callback returns zero time" → "Should return zero time when callback is nil"
  • "Should callback result is returned" → "Should return callback result"
  • "Should lock unavailable is swallowed" → "Should swallow lock unavailable error"
  • "Should signal gate miss is swallowed" → "Should swallow signal gate miss error"
  • "Should blank ref is rejected" → "Should reject blank ref"
  • "Should empty resolved id is rejected" → "Should reject empty resolved id"
  • "Should prompt error is wrapped" → "Should wrap prompt error"
  • "Should stop error is joined" → "Should join stop error"
  • "Should prompt event errors are surfaced" → "Should surface prompt event errors"

Also applies to: 96-96, 120-120, 164-164, 175-175, 259-259, 280-280, 532-532, 542-542, 595-595, 606-606, 615-615

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/memory/consolidation/runtime_test.go` at line 72, Rename the t.Run
test name strings in runtime_test.go to use active-voice grammar immediately
after "Should"; specifically replace "Should disabled returns disabled message"
with "Should return disabled message when disabled", "Should gate miss returns
not satisfied message" with "Should return not satisfied message when gate
misses", "Should service error is returned" with "Should return service error",
"Should nil callback returns zero time" with "Should return zero time when
callback is nil", "Should callback result is returned" with "Should return
callback result", "Should lock unavailable is swallowed" with "Should swallow
lock unavailable error", "Should signal gate miss is swallowed" with "Should
swallow signal gate miss error", "Should blank ref is rejected" with "Should
reject blank ref", "Should empty resolved id is rejected" with "Should reject
empty resolved id", "Should prompt error is wrapped" with "Should wrap prompt
error", "Should stop error is joined" with "Should join stop error", and "Should
prompt event errors are surfaced" with "Should surface prompt event errors" —
update the t.Run title strings wherever those test names appear (e.g., the test
functions and t.Run calls in consolidation/runtime_test.go).
internal/daemon/composed_assembler_test.go (1)

23-23: ⚡ Quick win

Fix grammar in test names for clarity.

Several test names have grammatical issues that reduce clarity. The pattern should be "Should [verb phrase]" not "Should [noun] [verb]".

Suggested corrections:

  • Line 23: "Should return trimmed base prompt with zero providers" or "Should trim base prompt when no providers are configured"
  • Line 34: "Should render prepend provider before base prompt"
  • Line 48: "Should render append provider after base prompt"
  • Line 77: "Should skip nil providers"
  • Line 93: "Should return provider errors"
  • Line 112: "Should not add whitespace for empty provider sections"
  • Line 126: "Should pass workspace to all providers"
  • Line 151: "Should return trimmed base prompt when assembler is nil"
  • Line 169: "Should ignore empty and nil options"
📝 Example fixes for a few test names
-	t.Run("Should zero providers returns trimmed base prompt", func(t *testing.T) {
+	t.Run("Should return trimmed base prompt with zero providers", func(t *testing.T) {

-	t.Run("Should nil providers are skipped", func(t *testing.T) {
+	t.Run("Should skip nil providers", func(t *testing.T) {

-	t.Run("Should provider errors are returned", func(t *testing.T) {
+	t.Run("Should return provider errors", func(t *testing.T) {

-	t.Run("Should workspace is passed to all providers", func(t *testing.T) {
+	t.Run("Should pass workspace to all providers", func(t *testing.T) {

Also applies to: 34-34, 48-48, 77-77, 93-93, 112-112, 126-126, 151-151, 169-169

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/daemon/composed_assembler_test.go` at line 23, Update the
grammatically incorrect t.Run test names in composed_assembler_test.go to the
suggested "Should [verb phrase]" forms—for example change the current
t.Run("Should zero providers returns trimmed base prompt", ...) to "Should
return trimmed base prompt with zero providers" (or "Should trim base prompt
when no providers are configured"), and similarly rename the other t.Run labels
to "Should render prepend provider before base prompt", "Should render append
provider after base prompt", "Should skip nil providers", "Should return
provider errors", "Should not add whitespace for empty provider sections",
"Should pass workspace to all providers", "Should return trimmed base prompt
when assembler is nil", and "Should ignore empty and nil options"; search for
the t.Run invocations in the composed assembler tests (e.g., the test function
containing these t.Run calls) and replace only the string labels so the test
logic and identifiers (t.Run, the surrounding test function name) remain
unchanged.
internal/api/core/tasks_internal_test.go (1)

74-102: ⚡ Quick win

Normalize table-driven test names to match "Should..." pattern.

The table-driven test case names ("uds", "web", "cli", "default") don't follow the required "Should..." pattern, creating inconsistency with the newly updated subtest on line 104 and others in this file. Given that this PR normalizes test names across the codebase, these should also be updated for consistency. As per coding guidelines, ALL test cases must use the t.Run("Should...") pattern.

✏️ Suggested update for consistency
 	testCases := []struct {
 		name      string
 		transport string
 		wantKind  taskpkg.OriginKind
 	}{
-		{name: "uds", transport: "uds-api", wantKind: taskpkg.OriginKindUDS},
-		{name: "web", transport: "web-ui", wantKind: taskpkg.OriginKindWeb},
-		{name: "cli", transport: "agh-cli", wantKind: taskpkg.OriginKindCLI},
-		{name: "default", transport: "api-core-test", wantKind: taskpkg.OriginKindHTTP},
+		{name: "Should derive UDS origin kind from uds-api transport", transport: "uds-api", wantKind: taskpkg.OriginKindUDS},
+		{name: "Should derive Web origin kind from web-ui transport", transport: "web-ui", wantKind: taskpkg.OriginKindWeb},
+		{name: "Should derive CLI origin kind from agh-cli transport", transport: "agh-cli", wantKind: taskpkg.OriginKindCLI},
+		{name: "Should derive HTTP origin kind from default transport", transport: "api-core-test", wantKind: taskpkg.OriginKindHTTP},
 	}
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/core/tasks_internal_test.go` around lines 74 - 102, Update the
table-driven subtest names in testCases to follow the "Should..." pattern and
use those in t.Run so they match the rest of the file; specifically, change the
name fields in the testCases slice (used by t.Run(tc.name, ...)) to descriptive
strings like "Should set UDS origin", "Should set Web origin", "Should set CLI
origin", and "Should default to HTTP origin" so that the subtests for
BaseHandlers (TransportName) and the call to
handlers.taskActorContext(taskActionGet) report consistent "Should..." names.
internal/api/core/skills_test.go (1)

289-291: ⚡ Quick win

Add response body assertions to HTTP error tests.

Several error test cases validate only the status code without checking the response body structure. This violates the coding guideline: "Assert both status code AND response body in HTTP tests — status-code-only assertions are insufficient."

Affected test cases:

  • Line 289-291: TestGetSkill - unknown name 404
  • Line 533-535: TestEnableSkill - not found 404
  • Line 617-619: TestDisableSkill - not found 404
  • Line 645-653: TestSkillsRegistryNotConfigured - all 503 responses

Even error responses should have their structure validated to ensure proper error formatting and API contract compliance.

💡 Example fix for 404 error case
 	t.Run("Should return 404 for unknown name", func(t *testing.T) {
 		t.Parallel()
 
 		registry := &stubSkillsRegistry{
 			GetFn: func(_ string) (*skills.Skill, bool) {
 				return nil, false
 			},
 		}
 		engine := newSkillsHandlerFixture(t, registry, testutil.StubWorkspaceService{})
 		rec := testutil.PerformRequest(t, engine, http.MethodGet, "/api/skills/nonexistent", nil)
 
 		if rec.Code != http.StatusNotFound {
 			t.Errorf("status = %d, want %d; body=%s", rec.Code, http.StatusNotFound, rec.Body.String())
 		}
+
+		var resp contract.ErrorResponse
+		testutil.DecodeJSONResponse(t, rec, &resp)
+		if resp.Error == "" {
+			t.Error("error message should not be empty")
+		}
 	})

As per coding guidelines: all HTTP handler tests should validate both status code and response body structure.

Also applies to: 533-535, 617-619, 645-653

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@internal/api/core/skills_test.go` around lines 289 - 291, Update the affected
test cases to assert the response body JSON in addition to status codes: in
TestGetSkill (unknown name 404), TestEnableSkill (not found 404),
TestDisableSkill (not found 404), and TestSkillsRegistryNotConfigured (all 503
responses) unmarshal rec.Body.Bytes() into the shared error response struct used
by the API (or a local struct with fields like code/message/error) and assert
the expected fields and values (e.g., error code or message text for "not found"
and a service-unavailable message for 503) rather than only checking rec.Code;
use the same JSON shape your handlers return to validate contract compliance.
web/src/systems/settings/components/provider-inspect-view.tsx (1)

15-20: ⚡ Quick win

onRefreshCatalog is part of the API but currently ignored.

The prop is declared but never used, so parent-level refresh side effects/callbacks won’t run.

Suggested fix
 interface ProviderInspectViewProps {
   provider: SettingsProviderEntry;
   onRefreshCatalog: () => void;
 }

-export function ProviderInspectView({ provider }: ProviderInspectViewProps) {
+export function ProviderInspectView({ provider, onRefreshCatalog }: ProviderInspectViewProps) {
@@
-      <Section label="Catalog">
-        <CatalogList providerId={provider.name} enabled={provider.command_available} />
+      <Section label="Catalog">
+        <CatalogList
+          providerId={provider.name}
+          enabled={provider.command_available}
+          onRefresh={onRefreshCatalog}
+        />
       </Section>
@@
-function CatalogList({ providerId, enabled }: { providerId: string; enabled: boolean }) {
+function CatalogList({
+  providerId,
+  enabled,
+  onRefresh,
+}: {
+  providerId: string;
+  enabled: boolean;
+  onRefresh: () => void;
+}) {
@@
       <Button
@@
-        onClick={() => refreshMutation.mutate({ providerId, force: true })}
+        onClick={() => {
+          onRefresh();
+          refreshMutation.mutate({ providerId, force: true });
+        }}
         disabled={refreshing}
         data-testid="inspect-catalog-refresh"
       >

Also applies to: 112-114, 255-317

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/src/systems/settings/components/provider-inspect-view.tsx` around lines
15 - 20, ProviderInspectView declares onRefreshCatalog in
ProviderInspectViewProps but never calls or forwards it; update
ProviderInspectView to either invoke onRefreshCatalog after any local
catalog-refresh action completes or pass it down as a prop to child components
that perform refreshes (e.g., any Catalog/Refresh button handlers or
ProviderCatalogView/CatalogActions components referenced in this file) so
parent-level refresh side effects run; likewise, search for similar unused
onRefreshCatalog occurrences in this file (the other Provider-related components
and refresh handlers) and ensure each place either calls onRefreshCatalog after
the async refresh completes or forwards it to the component that triggers the
refresh.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: de89c7c2-eef0-49c5-8e8a-6f3fd35fb982

📥 Commits

Reviewing files that changed from the base of the PR and between 22c9b95 and 8c70db7.

📒 Files selected for processing (113)
  • extensions/bridges/slack/provider_test.go
  • internal/acp/client_test.go
  • internal/acp/handlers_test.go
  • internal/api/core/bridges_test.go
  • internal/api/core/handler_edge_cases_test.go
  • internal/api/core/payload_helpers_test.go
  • internal/api/core/resources_test.go
  • internal/api/core/session_workspace_internal_test.go
  • internal/api/core/settings_test.go
  • internal/api/core/skills_test.go
  • internal/api/core/tasks_internal_test.go
  • internal/api/core/tasks_surface_test.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/memory_test.go
  • internal/api/spec/spec_test.go
  • internal/api/udsapi/agent_channels_test.go
  • internal/api/udsapi/agent_tasks_test.go
  • internal/api/udsapi/memory_test.go
  • internal/bridges/types_test.go
  • internal/bundles/resource_store_test.go
  • internal/cli/api_state_verb_commands_test.go
  • internal/cli/daemon_wait_readiness_test.go
  • internal/cli/docpost/process_input_test.go
  • internal/cli/extension_test.go
  • internal/cli/skill_test.go
  • internal/config/persistence_test.go
  • internal/daemon/composed_assembler_test.go
  • internal/daemon/daemon_integration_test.go
  • internal/daemon/daemon_test.go
  • internal/daemon/notifier_test.go
  • internal/daemon/restart_test.go
  • internal/extension/bridge_delivery_notifier_test.go
  • internal/extension/registry_test.go
  • internal/extensiontest/bridge_adapter_harness_integration_test.go
  • internal/hooks/async_clone_test.go
  • internal/hooks/autonomy_test.go
  • internal/memory/assembler_test.go
  • internal/memory/consolidation/runtime_test.go
  • internal/memory/dream_test.go
  • internal/memory/store_test.go
  • internal/network/delivery_test.go
  • internal/network/tasks_test.go
  • internal/registry/github/client_test.go
  • internal/registry/multi_test.go
  • internal/resources/kernel_test.go
  • internal/resources/reconcile_test.go
  • internal/resources/typed_test.go
  • internal/sandbox/daytona/provider_test.go
  • internal/session/additional_test.go
  • internal/session/query_test.go
  • internal/session/resume_repair_test.go
  • internal/settings/service_test.go
  • internal/skills/watcher_test.go
  • internal/store/globaldb/global_db_task_graph_audit_test.go
  • internal/store/globaldb/global_db_task_test.go
  • internal/store/globaldb/global_db_test.go
  • internal/store/memv2_helpers_test.go
  • internal/task/manager_test.go
  • internal/task/validate_test.go
  • internal/testutil/acpmock/fixture_test.go
  • internal/testutil/testutil_test.go
  • internal/workspace/resolver_test.go
  • packages/ui/tests/__tests__/readme.test.ts
  • packages/ui/vitest.config.ts
  • vitest.config.ts
  • web/e2e/__tests__/storybook-bootstrap.spec.ts
  • web/playwright.config.ts
  • web/src/components/__tests__/design-system-showcase.test.tsx
  • web/src/hooks/routes/__tests__/use-settings-providers-page.test.tsx
  • web/src/hooks/routes/use-settings-providers-page.ts
  • web/src/routes/__tests__/-__root.test.tsx
  • web/src/routes/__tests__/-_app.test.tsx
  • web/src/routes/__tests__/-settings-route-tree.test.ts
  • web/src/routes/_app/__tests__/-sandbox.test.tsx
  • web/src/routes/_app/__tests__/-settings.test.tsx
  • web/src/routes/_app/__tests__/-skills.test.tsx
  • web/src/routes/_app/__tests__/-tasks.$id.edit.test.tsx
  • web/src/routes/_app/__tests__/-tasks.$id.runs.$runId.test.tsx
  • web/src/routes/_app/__tests__/-tasks.$id.test.tsx
  • web/src/routes/_app/__tests__/-tasks.new.test.tsx
  • web/src/routes/_app/__tests__/-tasks.test.tsx
  • web/src/routes/_app/settings/__tests__/-automation.test.tsx
  • web/src/routes/_app/settings/__tests__/-general.test.tsx
  • web/src/routes/_app/settings/__tests__/-hooks-extensions.test.tsx
  • web/src/routes/_app/settings/__tests__/-index.test.tsx
  • web/src/routes/_app/settings/__tests__/-mcp-servers.test.tsx
  • web/src/routes/_app/settings/__tests__/-network.test.tsx
  • web/src/routes/_app/settings/__tests__/-observability.test.tsx
  • web/src/routes/_app/settings/__tests__/-providers.test.tsx
  • web/src/routes/_app/settings/__tests__/-skills.test.tsx
  • web/src/routes/_app/settings/__tests__/-vault.test.tsx
  • web/src/routes/_app/settings/index.tsx
  • web/src/routes/_app/settings/providers.tsx
  • web/src/routes/_app/settings/stories/-providers.stories.tsx
  • web/src/systems/settings/components/index.ts
  • web/src/systems/settings/components/provider-card-header.tsx
  • web/src/systems/settings/components/provider-card-summary.tsx
  • web/src/systems/settings/components/provider-card.tsx
  • web/src/systems/settings/components/provider-edit-form.tsx
  • web/src/systems/settings/components/provider-inspect-view.tsx
  • web/src/systems/settings/components/provider-inspector-sheet.tsx
  • web/src/systems/settings/components/provider-model-catalog-status.tsx
  • web/src/systems/settings/components/providers-grid.tsx
  • web/src/systems/settings/components/providers-list-filters.tsx
  • web/src/systems/settings/components/settings-editor-dialog.tsx
  • web/src/systems/settings/components/stories/provider-card.stories.tsx
  • web/src/systems/settings/components/stories/provider-inspector-sheet.stories.tsx
  • web/src/systems/settings/components/stories/providers-grid.stories.tsx
  • web/src/systems/settings/components/stories/providers-list-filters.stories.tsx
  • web/src/systems/settings/lib/provider-state.ts
  • web/src/systems/settings/lib/providers-list-filters.ts
  • web/src/test/route-options.ts
  • web/vitest.config.ts
💤 Files with no reviewable changes (5)
  • web/src/routes/tests/-settings-route-tree.test.ts
  • vitest.config.ts
  • packages/ui/vitest.config.ts
  • web/e2e/tests/storybook-bootstrap.spec.ts
  • web/vitest.config.ts

Comment thread internal/acp/handlers_test.go Outdated
Comment thread internal/api/core/skills_test.go Outdated
Comment thread internal/store/globaldb/global_db_task_graph_audit_test.go Outdated
Comment thread internal/store/globaldb/global_db_task_graph_audit_test.go Outdated
Comment thread internal/store/globaldb/global_db_task_graph_audit_test.go Outdated
Comment thread web/src/systems/settings/components/provider-edit-form.tsx
Comment thread web/src/systems/settings/components/provider-inspect-view.tsx
Comment thread web/src/systems/settings/components/provider-inspector-sheet.tsx Outdated
Comment thread web/src/systems/settings/components/provider-inspector-sheet.tsx
Comment thread web/src/systems/settings/components/providers-list-filters.tsx
pedronauck added a commit that referenced this pull request May 26, 2026
## Release v0.0.1

This PR prepares the release of version v0.0.1.

### Changelog

## 0.0.1 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
This was referenced May 26, 2026
pedronauck added a commit that referenced this pull request May 26, 2026
## Release v0.0.1

This PR prepares the release of version v0.0.1.

### Changelog

## 0.0.1 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pedronauck added a commit that referenced this pull request May 26, 2026
## Release v0.0.2

This PR prepares the release of version v0.0.2.

### Changelog

## 0.0.2 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release
- Fix release process



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows
- Improve suite speed

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pedronauck added a commit that referenced this pull request May 27, 2026
## Release v0.0.2

This PR prepares the release of version v0.0.2.

### Changelog

## 0.0.2 - 2026-05-26



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release
- Fix release process
- Fix release sync
- Decouple release dry-run npm auth
- Persist web assets git auth



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows
- Improve suite speed


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
* Updated web assets dependency to a newer version for improved
stability and performance.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/compozy/agh/pull/211?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
pedronauck added a commit that referenced this pull request May 27, 2026
## Release v0.0.2

This PR prepares the release of version v0.0.2.

### Changelog

## 0.0.2 - 2026-05-27



### Other Changes

- Lessons learned



### ♻️ Refactoring

- Project structure (#7)
- Kb improvements (#12)
- Rename spaces to channels (#17)
- Add extensions gaps (#21)
- Improve tool calls ui (#22)
- Remove web app header
- Module improvements (#29)
- Memory improvements (#35)
- Storybook for web and ui (#38)
- Enable AGH network by default for new installs (#57)
- Hermes adjustments (#69)
- Badges design (#84)
- Storybook scenario and logos gallery
- Migrate typescript tests (#114)
- Internal go packages (#120)
- Ui patterns (#127)
- Improve e2e tests (#130)
- Ui redesign
- Workspace isolation across runtime surfaces (#145)
- Prod ready applies (#162)
- Tool card ui (#164)
- Alpha on logo
- Prod ready features (#167)
- Thread sheet (#202)



### 🎉 Features

- Implement config foundation packages
- Implement sqlite store package
- Add ACP client package
- Add session lifecycle manager
- Implement observe package
- Add daemon composition root
- Add uds api server
- Implement cli package
- Add http api server
- Add system design
- Add foundation types, schemas, and layout shell for web client
- Add daemon health polling and agent sidebar systems for web client
- Add session system CRUD, streaming core, and session store for web
client
- Add chat view, messages, and composer tests for web client
- Add tool cards and renderers for web client
- Add file-backed memory store core
- Scaffold memory session seams
- Add memory dream consolidation service
- Wire memory assembler into daemon
- Add memory api and cli
- New skills system (#1)
- Add workspace entity (#5)
- Add new skill capabilities (#8)
- Web ui v2 (#9)
- Improve hooks system (#10)
- Session resilience (#11)
- Add extensability (#13)
- Add automation (#16)
- Add channels (#14)
- Add network implementation (#15)
- Add network, bridges and automations web pages (#18)
- Ext registry (#20)
- Add core tasks (#19)
- Bridge adapters (#23)
- Add site (#26)
- Add ext refac and sandbox (#25)
- Settings ui (#37)
- Tasks ui (#36)
- Harness improvements (#44)
- Agent capabilities (#49)
- Redesign ui (#48)
- Unify capability (#53)
- Redesign network workspace (#59)
- Add task deletion and split session delete from stop (#58)
- Session provider selection (#60)
- Production grade adjustments (#66)
- Autonomous system (#75)
- Add agent session route (#80)
- Tools registry (#85)
- Agents soul (#88)
- Add network threads (#105)
- Orchestration improvements (#106)
- Memory v2 (#108)
- Agent categories (#113)
- Providers model (#118)
- Add canonical AGH bundled skill (#143)
- Onboarding and improvements (#198)
- Onboarding and improvements (#201)



### 🐛 Bug Fixes

- Review round
- Review rounds
- Resolve memory extensibility review batch
- Embed web into daemon
- Defaults agents
- Acp integration (#4)
- Lint errors
- Prd folder
- Remove orphan web actions and dead surfaces (#55)
- Qa testing and fixes (#73)
- New review rounds (#82)
- Security audit (#90)
- Release qa round (#95)
- Add missing tools (#141)
- New qa round (#147)
- Advanced qa round (#149)
- Homebrew tap
- Final review round (#151)
- Daemon healthy
- Reasoning models (#158)
- Lint errors (#160)
- Review round (#168)
- Release adjustments (#171)
- Stabilize release ci fixtures
- Stabilize release integration gate
- Stabilize release verify gates
- Stabilize release integration flows
- Stabilize release verify gates
- Stabilize main verify shutdown
- Ignore stale acpmock cancel
- Marketplace search focus and filtering (#193)
- Website video
- Workspace command select



### 📚 Documentation

- Update agents.md
- Update prd
- Update skills
- Update compozy tasks
- Update compozy
- Update compozy
- Add new skills
- Archive prd
- Update prds
- Update rfc
- Update prds
- Update prds
- Add automation prd
- Channels prd
- Update prd
- Update prd
- New prds
- Archive prds
- Bridges adapters prd
- Sandbox prd
- Update
- Archive prd
- Update
- Add new prd
- New design
- Update prd
- Archive prds
- Update prds
- Tasks-ui prd tasks
- Update prd
- Update design docs
- Agent capabilities prd
- Improve site docs
- Remove old design references
- Udpate
- Autonomous prd
- Update skills
- Blog design
- Agent sould prd
- Final qa plan
- Update
- Remove codex ledgers from gitignore
- Remove not needed files
- Udpate ledger
- Update cy-codex-loop skill
- Orchestration improves prd
- Update prds
- Orch improvs prd
- Memv2 prd
- Providers model prd
- Update refacs prd
- New design proposal
- Update rules
- Update skills
- New blog posts (#173)
- Format docs
- Remove old design files
- Remove old
- Skeeper update



### 📦 Build System

- Initial structure
- Commitlint
- Frontend base structure
- Update vscode settings
- Add subagents
- Coderabbit
- Prd and tooling
- Bun lock
- Lint tooling
- Copy.md and tooling adjusts
- Add repoclone rc
- Upgrade skeeper to v0.2.0
- Update go.mod
- Adopt task artifacts into skeeper
- Sync codex plans with skeeper
- Skeeper lock
- Skeeper lock
- New skills
- Skeeper lock
- Skeeper lock
- Skeeper lock
- Update deps and go
- Regenerate daytona sidecar assets for go 1.26.3
- Fix cliff
- Ignore docs on fmt
- Build web assets before goreleaser
- Extend release dry-run timeout
- Fix release dry-run token contract



### 🔧 CI/CD

- Lint errors
- Fint release pr
- Fix goreleaser
- Fix release
- Fix release process
- Fix release sync
- Decouple release dry-run npm auth
- Persist web assets git auth
- Require npm auth before release merge



### 🧪 Testing

- Add e2e tests (#27)
- Qa rounds (#78)
- Improve test suite (#138)
- Harden daemon-served restart reloads
- Harden daemon-served readiness waits
- Stabilize dashboard focus assertion
- Stabilize release integration gates
- Stabilize release e2e markers
- Stabilize release e2e flows
- Improve suite speed


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
  * Updated dependencies to latest versions.

<!-- review_stack_entry_start -->

[![Review Change
Stack](https://storage.googleapis.com/coderabbit_public_assets/review-stack-in-coderabbit-ui.svg)](https://app.coderabbit.ai/change-stack/compozy/agh/pull/214?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack)

<!-- review_stack_entry_end -->

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
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