test: improve test suite#138
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (171)
📒 Files selected for processing (21)
WalkthroughIntroduces 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. ChangesProviders inspector UI and test suite updates
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)
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
|
There was a problem hiding this comment.
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 winAdd
t.Parallel()inside theset.Runsubtests.Both table-driven subtests use
t.Run("Should ...")correctly, but they misst.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: Uset.Run('Should ...')subtests witht.Parallelas default (opt-out witht.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 winAdd
t.Parallel()inside eacht.Runsubtest 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 witht.Parallelas default (opt-out witht.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 winNormalize table-case names to
Should ...to satisfy test conventions
tc.namevalues in this table are passed straight tot.Run, but several names are still not in the requiredShould ...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 uset.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 winConsolidate the duplicate
providerCredentialsConfiguredhelper.This function is defined locally here (lines 55-61) but an identical implementation exists in
web/src/systems/settings/lib/provider-state.tsand is re-exported byproviders-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 winKeep CI retry configurable instead of forcing zero retries
Line 14 hard-codes
retries: 0for 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 winDecouple 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 fort.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: Uset.Run('Should ...')subtests witht.Parallelas default (opt-out witht.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 valueRefine 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 valueFix 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 winImprove 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 winImprove 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 winImprove 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 winAdd 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
ErrorContainsorErrorAs, not justerr == nilchecks.🤖 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 winCorrect 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 valueConsider 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 winFix 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 winImprove 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 winFix 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 winNormalize 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 winAdd 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
onRefreshCatalogis 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
📒 Files selected for processing (113)
extensions/bridges/slack/provider_test.gointernal/acp/client_test.gointernal/acp/handlers_test.gointernal/api/core/bridges_test.gointernal/api/core/handler_edge_cases_test.gointernal/api/core/payload_helpers_test.gointernal/api/core/resources_test.gointernal/api/core/session_workspace_internal_test.gointernal/api/core/settings_test.gointernal/api/core/skills_test.gointernal/api/core/tasks_internal_test.gointernal/api/core/tasks_surface_test.gointernal/api/httpapi/handlers_test.gointernal/api/httpapi/memory_test.gointernal/api/spec/spec_test.gointernal/api/udsapi/agent_channels_test.gointernal/api/udsapi/agent_tasks_test.gointernal/api/udsapi/memory_test.gointernal/bridges/types_test.gointernal/bundles/resource_store_test.gointernal/cli/api_state_verb_commands_test.gointernal/cli/daemon_wait_readiness_test.gointernal/cli/docpost/process_input_test.gointernal/cli/extension_test.gointernal/cli/skill_test.gointernal/config/persistence_test.gointernal/daemon/composed_assembler_test.gointernal/daemon/daemon_integration_test.gointernal/daemon/daemon_test.gointernal/daemon/notifier_test.gointernal/daemon/restart_test.gointernal/extension/bridge_delivery_notifier_test.gointernal/extension/registry_test.gointernal/extensiontest/bridge_adapter_harness_integration_test.gointernal/hooks/async_clone_test.gointernal/hooks/autonomy_test.gointernal/memory/assembler_test.gointernal/memory/consolidation/runtime_test.gointernal/memory/dream_test.gointernal/memory/store_test.gointernal/network/delivery_test.gointernal/network/tasks_test.gointernal/registry/github/client_test.gointernal/registry/multi_test.gointernal/resources/kernel_test.gointernal/resources/reconcile_test.gointernal/resources/typed_test.gointernal/sandbox/daytona/provider_test.gointernal/session/additional_test.gointernal/session/query_test.gointernal/session/resume_repair_test.gointernal/settings/service_test.gointernal/skills/watcher_test.gointernal/store/globaldb/global_db_task_graph_audit_test.gointernal/store/globaldb/global_db_task_test.gointernal/store/globaldb/global_db_test.gointernal/store/memv2_helpers_test.gointernal/task/manager_test.gointernal/task/validate_test.gointernal/testutil/acpmock/fixture_test.gointernal/testutil/testutil_test.gointernal/workspace/resolver_test.gopackages/ui/tests/__tests__/readme.test.tspackages/ui/vitest.config.tsvitest.config.tsweb/e2e/__tests__/storybook-bootstrap.spec.tsweb/playwright.config.tsweb/src/components/__tests__/design-system-showcase.test.tsxweb/src/hooks/routes/__tests__/use-settings-providers-page.test.tsxweb/src/hooks/routes/use-settings-providers-page.tsweb/src/routes/__tests__/-__root.test.tsxweb/src/routes/__tests__/-_app.test.tsxweb/src/routes/__tests__/-settings-route-tree.test.tsweb/src/routes/_app/__tests__/-sandbox.test.tsxweb/src/routes/_app/__tests__/-settings.test.tsxweb/src/routes/_app/__tests__/-skills.test.tsxweb/src/routes/_app/__tests__/-tasks.$id.edit.test.tsxweb/src/routes/_app/__tests__/-tasks.$id.runs.$runId.test.tsxweb/src/routes/_app/__tests__/-tasks.$id.test.tsxweb/src/routes/_app/__tests__/-tasks.new.test.tsxweb/src/routes/_app/__tests__/-tasks.test.tsxweb/src/routes/_app/settings/__tests__/-automation.test.tsxweb/src/routes/_app/settings/__tests__/-general.test.tsxweb/src/routes/_app/settings/__tests__/-hooks-extensions.test.tsxweb/src/routes/_app/settings/__tests__/-index.test.tsxweb/src/routes/_app/settings/__tests__/-mcp-servers.test.tsxweb/src/routes/_app/settings/__tests__/-network.test.tsxweb/src/routes/_app/settings/__tests__/-observability.test.tsxweb/src/routes/_app/settings/__tests__/-providers.test.tsxweb/src/routes/_app/settings/__tests__/-skills.test.tsxweb/src/routes/_app/settings/__tests__/-vault.test.tsxweb/src/routes/_app/settings/index.tsxweb/src/routes/_app/settings/providers.tsxweb/src/routes/_app/settings/stories/-providers.stories.tsxweb/src/systems/settings/components/index.tsweb/src/systems/settings/components/provider-card-header.tsxweb/src/systems/settings/components/provider-card-summary.tsxweb/src/systems/settings/components/provider-card.tsxweb/src/systems/settings/components/provider-edit-form.tsxweb/src/systems/settings/components/provider-inspect-view.tsxweb/src/systems/settings/components/provider-inspector-sheet.tsxweb/src/systems/settings/components/provider-model-catalog-status.tsxweb/src/systems/settings/components/providers-grid.tsxweb/src/systems/settings/components/providers-list-filters.tsxweb/src/systems/settings/components/settings-editor-dialog.tsxweb/src/systems/settings/components/stories/provider-card.stories.tsxweb/src/systems/settings/components/stories/provider-inspector-sheet.stories.tsxweb/src/systems/settings/components/stories/providers-grid.stories.tsxweb/src/systems/settings/components/stories/providers-list-filters.stories.tsxweb/src/systems/settings/lib/provider-state.tsweb/src/systems/settings/lib/providers-list-filters.tsweb/src/test/route-options.tsweb/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
## 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>
## 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>
## 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>
## 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 --> [](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>
## 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 --> [](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>
Summary by CodeRabbit
New Features
Improvements
Chores