Skip to content

refactor: badges design#84

Merged
pedronauck merged 6 commits into
mainfrom
badges-design
Apr 28, 2026
Merged

refactor: badges design#84
pedronauck merged 6 commits into
mainfrom
badges-design

Conversation

@pedronauck
Copy link
Copy Markdown
Member

@pedronauck pedronauck commented Apr 28, 2026

Summary by CodeRabbit

  • New Features

    • Added session repair command to fix interrupted conversations and restore session transcripts
    • New segmented control component for improved selection UI patterns
    • Enhanced badge/chip components with improved styling and interaction patterns
  • Updates

    • Refactored UI badge and chip components for consistency and maintainability
    • Updated form input styling for better visual hierarchy
  • Removals

    • Deprecated older badge primitive components in favor of unified component

@pedronauck pedronauck self-assigned this Apr 28, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 28, 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: 0b9a1937-5cee-4ba6-bc3a-e1338b49acb5

📥 Commits

Reviewing files that changed from the base of the PR and between 837b745 and 3a3006c.

⛔ Files ignored due to path filters (174)
  • .codex/plans/2026-04-28-session-repair-v1.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-003/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-002/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/delete-session/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/network-default/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/network-default/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/network-default/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/network-default/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/network-default/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_024.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_025.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-001/issue_026.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/network-redesign/reviews-002/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/_meta.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-002/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-003/_meta.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-003/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-003/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/qa-rounds/reviews-003/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_019.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_020.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_021.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_022.md is excluded by !**/*.md
  • .compozy/tasks/release-adjustments/reviews-001/issue_023.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/_tasks.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/_techspec.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-001-extension-tool-execution-boundary.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-002-session-tool-exposure-path.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-003-runtime-registry-package-boundary.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-004-mvp-native-tool-scope.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-005-acp-approval-policy-integration.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-006-tool-visibility-by-surface.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-007-canonical-tool-id-format.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-008-manifest-authoritative-extension-tool-descriptors.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-009-public-go-extension-tool-sdk.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-010-remote-mcp-call-through.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_acp_tool_registry_compatibility.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_agh_current_state.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_claude-code.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_claude_code_ideas.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/synthesis.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/qa/peer-review-prompt-round2.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/qa/peer-review-prompt.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/qa/peer-review-result-round2.json is excluded by !**/*.json
  • .compozy/tasks/tools-registry/qa/peer-review-result.json is excluded by !**/*.json
  • .compozy/tasks/tools-registry/qa/peer-review-summary-round2.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/qa/peer-review-summary.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/qa/peer-review-verdict.json is excluded by !**/*.json
  • .compozy/tasks/tools-registry/task_01.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_02.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_03.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_04.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_05.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_06.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_07.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_08.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_09.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_10.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_11.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_12.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_13.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_14.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_15.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/task_16.md is excluded by !**/*.md
📒 Files selected for processing (10)
  • .compozy/tasks/tools-registry/qa/peer-review-result-round2.err
  • .compozy/tasks/tools-registry/qa/peer-review-result.err
  • internal/api/core/handlers.go
  • internal/api/core/handlers_test.go
  • internal/cli/client.go
  • internal/cli/client_test.go
  • internal/cli/session_test.go
  • internal/session/repair.go
  • internal/session/repair_test.go
  • packages/ui/src/components/stories/pill.stories.tsx

Walkthrough

This PR introduces a session transcript repair workflow accessible via API and CLI, consolidates UI badge/chip primitives (KindChip, MonoBadge, StatusDot, Pills) into unified Pill and PillGroup components, and updates Storybook configurations to remove autodocs tags.

Changes

Cohort / File(s) Summary
UI Component Consolidation
packages/ui/src/components/pill.tsx, packages/ui/src/components/pill.test.tsx, packages/ui/src/components/pill-group.tsx, packages/ui/src/components/pill-group.test.tsx
Introduces new Pill component with tone/size/solid/mono/active/uppercase variants and a Pill.Dot subcomponent with optional pulse animation. Adds PillGroup segmented control with badge support and size variants.
Removed UI Primitives
packages/ui/src/components/kind-chip.tsx, packages/ui/src/components/kind-chip.test.tsx, packages/ui/src/components/mono-badge.tsx, packages/ui/src/components/mono-badge.test.tsx, packages/ui/src/components/mono-chip.tsx, packages/ui/src/components/mono-chip.test.tsx, packages/ui/src/components/status-dot.tsx, packages/ui/src/components/status-dot.test.tsx, packages/ui/src/components/pills.tsx
Removes legacy badge/chip/dot components and their test suites. Consolidates functionality into Pill and PillGroup.
Storybook Story Updates
packages/ui/.storybook/preview.css, packages/ui/.storybook/preview.ts, packages/ui/src/components/stories/pill.stories.tsx, packages/ui/src/components/stories/pill-group.stories.tsx, packages/ui/src/components/stories/pills.stories.tsx, packages/ui/src/components/stories/kind-chip.stories.tsx, packages/ui/src/components/stories/mono-badge.stories.tsx, packages/ui/src/components/stories/mono-chip.stories.tsx, packages/ui/src/components/stories/connection-indicator.stories.tsx
Removes autodocs tags from 30\+ story files, adds comprehensive Pill/PillGroup stories with interaction tests, updates preview CSS imports, and deletes stories for removed components.
Site Component Updates
packages/site/components/landing/__tests__/landing.test.tsx, packages/site/components/landing/bridges-section.tsx, packages/site/components/landing/network-protocol-visual.tsx, packages/site/components/landing/primitives/index.ts, packages/site/components/landing/primitives/kind-chip.tsx, packages/site/components/landing/primitives/mono-badge.tsx, packages/site/components/landing/primitives/network-kinds.ts
Replaces KindChip and MonoBadge with Pill in landing components, extracts NetworkKind type definitions to dedicated module, updates tests and exports accordingly.
UI Input Component Styling
packages/ui/src/components/input.tsx, packages/ui/src/components/input-group.tsx
Updates Input/InputGroup background and focus-visible styling: replaces --color-surface-elevated with --color-surface-panel and ring-based focus with --color-text-tertiary border.
Session Repair Contract & Response Types
internal/api/contract/contract.go, internal/api/contract/responses.go
Adds SessionRepairPayload, SessionRepairIssuePayload, SessionRepairActionPayload, and SessionRepairResponse types for API serialization.
Session Repair API Handler & Routing
internal/api/core/handlers.go, internal/api/core/conversions.go, internal/api/core/interfaces.go, internal/api/core/handlers_internal_test.go, internal/api/core/handlers_test.go, internal/api/core/test_helpers_test.go, internal/api/httpapi/routes.go, internal/api/httpapi/handlers_test.go, internal/api/udsapi/routes.go, internal/api/udsapi/handlers_test.go, internal/api/spec/spec.go
Adds RepairSession handler to inspect/repair session transcripts via POST /sessions/:id/repair with dry_run and force query parameters. Includes conversion helpers, interface updates, route registration for HTTP/UDS, and OpenAPI spec definition.
CLI Session Repair Command
internal/cli/client.go, internal/cli/client_test.go, internal/cli/helpers_test.go, internal/cli/session.go, internal/cli/session_test.go
Adds agh session repair <id> command with --dry-run and --force flags. Includes session repair record types as aliases to contract types, client interface extension, and formatted output bundle.
Session Repair Backend Logic
internal/session/repair.go, internal/session/repair_test.go
Implements core repair workflow: validates context, loads session metadata, analyzes event sequence continuity and consistency, detects interrupted tool calls, plans persist/append actions for missing tool results and terminal events, and optionally persists repairs based on stop-reason rules and DryRun flag.
Daemon Boot Integration
internal/daemon/boot.go, internal/daemon/daemon_test.go
Refactors boot initialization into bootComponents loop, adds bootSessionRepair phase to automatically repair sessions stopped due to crash/error with helper functions for eligibility checking.
Storybook Autodocs Tag Removals
packages/ui/src/components/stories/{accordion,alert,avatar,badge,...,spinner}.stories.tsx (30\+ files)
Removes tags: ["autodocs"] from Storybook metadata across all remaining component stories.

Sequence Diagram

sequenceDiagram
    participant Client as CLI/API Client
    participant Handler as RepairSession Handler
    participant SessionMgr as Session Manager
    participant Store as Session Store
    participant Planner as Repair Planner
    
    Client->>Handler: POST /sessions/:id/repair?dry_run=true&force=true
    Handler->>SessionMgr: RepairSession(ctx, opts)
    SessionMgr->>Store: Load session metadata & events
    Store-->>SessionMgr: Session events (sorted by sequence)
    SessionMgr->>Planner: Analyze event continuity & detect gaps
    Planner-->>SessionMgr: Identified issues & repair actions
    alt Dry Run
        SessionMgr-->>Handler: Return planned actions (Persisted=false)
    else Commit Repair
        SessionMgr->>Store: Persist missing tool results & terminal events
        Store-->>SessionMgr: Updated events with IDs
        SessionMgr-->>Handler: Return persisted actions (Persisted=true)
    end
    Handler-->>Client: SessionRepairResponse { issues, actions, persisted }
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

The diff spans heterogeneous areas: repetitive UI pattern changes across 30\+ story files (low per-file complexity), consolidation of four UI components with test updates, API contract/handler additions following a standard pattern, and a novel session repair workflow with 532 lines of core logic requiring careful validation of event sequencing, state reconstruction, and repair eligibility rules. The session repair implementation involves dense domain logic for transcript analysis and mutation planning that demands thorough review.

Possibly related PRs

  • refactor: badges design #84: Identical UI badge refactoring (replacing KindChip/MonoBadge/StatusDot/Pills with Pill/PillGroup), updating exports, stories, and tests across the same component files.
  • fix: remove orphan web actions and dead surfaces #55: Removes web components and stories that depended on legacy UI primitives (StatusDot/KindChip/MonoBadge) that this PR replaces, overlapping at the component/export consolidation level.
  • feat: harness improvements #44: Modifies daemon boot logic (internal/daemon/boot.go) to add lifecycle wiring phases, directly touching the same boot initialization file where session repair boot integration is added.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Comment @coderabbitai help to get the list of available commands and usage tips.

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: 8

Caution

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

⚠️ Outside diff range comments (1)
packages/site/components/landing/__tests__/landing.test.tsx (1)

345-363: ⚠️ Potential issue | 🟡 Minor

Test doesn’t verify the “meaning” is actually wired to the rendered pill.

Right now this only checks KIND_MEANING[kind] exists and the kind text renders. It should also assert the rendered pill exposes the meaning (via title) to match the test intent.

Suggested test tightening
     for (const kind of kinds) {
       expect(KIND_MEANING[kind]).toBeDefined();
       render(
         <Pill mono size="xs" tone="accent" title={KIND_MEANING[kind]}>
           {kind}
         </Pill>
       );
-      expect(screen.getAllByText(kind)).toBeDefined();
+      expect(screen.getByTitle(KIND_MEANING[kind])).toHaveTextContent(kind);
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/site/components/landing/__tests__/landing.test.tsx` around lines 345
- 363, The test named "has a meaning string for every NetworkKind and renders
inside Pill" currently only checks KIND_MEANING[kind] exists and that the kind
text renders; update it to also assert that the rendered Pill exposes the
meaning via its title by checking that the rendered element has attribute title
equal to KIND_MEANING[kind] (e.g., use getByTitle(KIND_MEANING[kind]) or
expect(screen.getByText(kind).closest('...')?.getAttribute('title')).toBe(KIND_MEANING[kind])
referencing the Pill component and KIND_MEANING mapping) so each iteration
verifies the Pill's title matches the meaning.
🧹 Nitpick comments (10)
web/src/storybook/packages-ui-storybook-config.test.ts (1)

31-32: Consider asserting shadcn CSS import too.

Since Storybook preview styling now depends on both shared tokens and shadcn Tailwind styles, adding an assertion for the shadcn import would strengthen regression coverage.

Suggested test addition
   it("imports shared tokens without pulling in web styling or data-layer providers", () => {
     expect(packagesUiPreviewSource).toContain('import "./preview.css";');
     expect(packagesUiPreviewCssSource).toContain('@import "@agh/ui/tokens.css";');
+    expect(packagesUiPreviewCssSource).toContain('@import "shadcn/tailwind.css";');
     expect(packagesUiPreviewSource).not.toContain("web/src/styles.css");
     expect(packagesUiPreviewSource).not.toContain("msw");
     expect(packagesUiPreviewSource).not.toContain("QueryClient");
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/storybook/packages-ui-storybook-config.test.ts` around lines 31 - 32,
The test currently asserts the shared tokens import but misses the shadcn
Tailwind import; update the test (in
web/src/storybook/packages-ui-storybook-config.test.ts) to also assert that
packagesUiPreviewCssSource contains the shadcn import (e.g.
expect(packagesUiPreviewCssSource).toContain('@import "@agh/ui/shadcn.css";') or
the correct shadcn import string used in your project) so Storybook preview CSS
coverage includes both tokens and shadcn styles.
web/src/systems/knowledge/components/knowledge-list-panel.tsx (1)

70-75: Reuse knowledgeScopeShortLabel instead of duplicating scope label logic.

This keeps scope text formatting centralized and avoids drift between list/detail views.

Suggested refactor
 import {
   formatKnowledgeRelativeTime,
   knowledgeMemoryKey,
+  knowledgeScopeShortLabel,
   memoryScopeTone,
   resolveKnowledgeScope,
   memoryTypeTone,
 } from "../lib/knowledge-formatters";
@@
         <Pill mono data-testid={`scope-badge-${scope}`} tone={memoryScopeTone(scope)}>
-          {scope === "workspace" ? "WS" : "GLOBAL"}
+          {knowledgeScopeShortLabel(scope)}
         </Pill>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/knowledge/components/knowledge-list-panel.tsx` around lines
70 - 75, The scope badge currently duplicates label logic using a ternary in the
JSX; replace that with a call to the shared helper
knowledgeScopeShortLabel(scope) so formatting is centralized (i.e., inside the
Pill where {scope === "workspace" ? "WS" : "GLOBAL"} is used, render
knowledgeScopeShortLabel(scope) instead) and add an import for
knowledgeScopeShortLabel if it's not already imported so both list and detail
views use the same label logic.
web/src/systems/knowledge/lib/knowledge-formatters.ts (1)

39-47: Tighten TYPE_TONE key typing to MemoryType for safer evolution.

Using Record<string, PillTone> weakens compile-time guarantees. Prefer keying by MemoryType so invalid/typo keys are rejected by TypeScript.

Suggested refactor
-const TYPE_TONE: Record<string, PillTone> = {
+const TYPE_TONE: Partial<Record<MemoryType, PillTone>> = {
   user: "accent",
   feedback: "accent",
   project: "success",
   reference: "info",
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/knowledge/lib/knowledge-formatters.ts` around lines 39 - 47,
TYPE_TONE is typed too loosely as Record<string, PillTone>; tighten it to use
the MemoryType union so typos are caught and future changes are safer: change
the TYPE_TONE declaration to use Record<MemoryType, PillTone> (or a const
assertion with an explicit MemoryType index type) and ensure
memoryTypeTone(type: MemoryType) still returns TYPE_TONE[type] with a fallback
("accent") if needed; update any missing keys in TYPE_TONE to satisfy the
MemoryType coverage or use Partial<Record<MemoryType, PillTone>> and keep the
fallback in memoryTypeTone.
web/src/lib/pill-variant.ts (1)

17-17: Rename pillVariantFromTone to match its current semantics.

The function now returns PillTone, so the Variant name is misleading and increases API confusion at call sites.

♻️ Suggested rename
-export function pillVariantFromTone(tone: LegacyPillTone | null | undefined): PillTone {
+export function pillToneFromLegacyTone(tone: LegacyPillTone | null | undefined): PillTone {
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/lib/pill-variant.ts` at line 17, Rename the misleading function
pillVariantFromTone (which returns a PillTone) to a name that reflects it
produces a PillTone—e.g., pillToneFromLegacyTone or pillToneFromTone; update the
function declaration and its export, replace all call sites and imports
referencing pillVariantFromTone, and adjust any tests/types that import it; use
the unique symbols pillVariantFromTone, PillTone, and LegacyPillTone to locate
and update the implementation and usages.
web/src/systems/tasks/components/tasks-detail-header.tsx (1)

42-47: Stale JSDoc comment references MonoBadge.

The docstring mentions MonoBadge which has been replaced by Pill. Consider updating to match the current implementation.

📝 Suggested documentation update
 /**
- * Detail page header — `PageHeader` with the task title + short id `MonoBadge` +
+ * Detail page header — `PageHeader` with the task title + short id `Pill` +
  * status pill, plus action buttons (edit, cancel, publish, enqueue) in the meta
  * slot. The eyebrow row below surfaces secondary metadata (owner, origin, created-
  * by, last update, priority + approval pills).
  */
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/tasks/components/tasks-detail-header.tsx` around lines 42 -
47, The JSDoc mentions the removed MonoBadge; update the comment in
tasks-detail-header.tsx to reference the current UI element (Pill) used for the
short id and status—e.g., change "short id `MonoBadge`" to "short id `Pill`" and
ensure other mentions (eyebrow row, PageHeader) reflect current component names
like PageHeader and Pill so the docstring matches the implementation in the
TasksDetailHeader component.
web/src/systems/tasks/components/tasks-detail-preview-panel.tsx (1)

58-62: Stale JSDoc comment references removed components.

The docstring still mentions StatusDot and MonoBadge, but these have been replaced by Pill.Dot and Pill. Update the comment to reflect the current implementation.

📝 Suggested documentation update
 /**
  * Inline preview rendered on `/tasks` when a list row is selected but no detail
- * route is active. Composes `StatusDot`, `MonoBadge`, `Pill`, `Metric`, `Section`,
+ * route is active. Composes `Pill`, `Pill.Dot`, `Metric`, `Section`,
  * and a `CodeBlock` preview of the task prompt + scope + agent.
  */
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/tasks/components/tasks-detail-preview-panel.tsx` around lines
58 - 62, Update the stale JSDoc at the top of tasks-detail-preview-panel.tsx:
replace references to the removed components StatusDot and MonoBadge with the
current components Pill.Dot and Pill (and/or remove the old names), keeping the
rest of the description (CodeBlock, Metric, Section, etc.) accurate to the
current implementation so the comment matches the actual usage of Pill.Dot and
Pill in this file.
web/src/systems/bridges/components/bridge-detail-panel.tsx (1)

87-117: Consolidate duplicate status→tone mapping.

statusToStatusDotTone and statusToMonoBadgeTone currently do the same work. Keep a single mapper to avoid drift.

Refactor sketch
-function statusToStatusDotTone(status: BridgeStatus): PillTone {
+function statusToPillTone(status: BridgeStatus): PillTone {
   if (status === "disabled") return "danger";
   switch (bridgeStatusTone(status)) {
     case "green":
       return "success";
@@
       return "neutral";
   }
 }
-
-function statusToMonoBadgeTone(status: BridgeStatus): PillTone {
-  if (status === "disabled") return "danger";
-  switch (bridgeStatusTone(status)) {
-    case "green":
-      return "success";
-    case "amber":
-      return "warning";
-    case "danger":
-      return "danger";
-    case "violet":
-      return "info";
-    default:
-      return "neutral";
-  }
-}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/bridges/components/bridge-detail-panel.tsx` around lines 87 -
117, Both statusToStatusDotTone and statusToMonoBadgeTone duplicate the same
mapping logic; consolidate into a single reusable mapper (e.g.,
statusToPillTone) that takes a BridgeStatus, uses bridgeStatusTone(status) and
the same "disabled" check, and returns a PillTone; then replace calls to
statusToStatusDotTone and statusToMonoBadgeTone with the new function (or have
those two functions delegate to it) and remove the duplicated switch body to
prevent drift. Ensure the new mapper preserves the exact mapping for "disabled"
-> "danger" and the bridgeStatusTone cases ("green"->"success",
"amber"->"warning", "danger"->"danger", "violet"->"info", default -> "neutral").
packages/ui/src/components/stories/pill-group.stories.tsx (1)

13-16: Minor: Clarify component description.

The description says "Renamed from the legacy PillGroup" but the component is now named PillGroup. Consider updating to clarify what it was renamed from (e.g., "Replaces the legacy Pills segmented toggle").

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/ui/src/components/stories/pill-group.stories.tsx` around lines 13 -
16, The story description for the PillGroup component is confusing ("Renamed
from the legacy `PillGroup`") — update the `description.component` text to
clearly state what the current `PillGroup` replaces (for example "Replaces the
legacy `Pills` segmented toggle") and keep the existing usage hints (`items`,
`value`, `onChange`) intact; edit the string in the story where
`description.component` is defined so it references the correct legacy name
instead of `PillGroup`.
packages/ui/src/components/stories/pill.stories.tsx (1)

11-17: Typo in component description.

Line 14 reads "replaces Pill, Pill, KindChip..." with duplicate "Pill" entries. This should list the distinct components being replaced (e.g., MonoBadge, StatusDot, KindChip, etc.).

📝 Suggested fix
         description: {
           component:
-            "Unified semantic pill — replaces `Pill`, `Pill`, `KindChip`, `Pill.Dot`, `WireChip`, and the legacy `Pill`. Compose with `Pill.Dot` for leading status dots.",
+            "Unified semantic pill — replaces `MonoBadge`, `StatusDot`, `KindChip`, `MonoChip`, `WireChip`, and the legacy `Pills`. Compose with `Pill.Dot` for leading status dots.",
         },
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/ui/src/components/stories/pill.stories.tsx` around lines 11 - 17,
Update the docs.description.component string in pill.stories.tsx to remove the
duplicate "Pill" and list the distinct components this unified pill replaces
(e.g., MonoBadge, StatusDot, KindChip, Pill.Dot, WireChip, and the legacy Pill)
so the description reads correctly and does not contain repeated entries; locate
the docs.description.component literal and edit the quoted component description
accordingly.
packages/ui/src/components/pill.test.tsx (1)

12-15: Extract inline object-shape types to named interfaces.

Lines 12–15 define WithMotion props as an inline object shape { reducedMotion: "always" | "never"; children: ReactNode; }, and line 31 defines it.each<{ tone: PillTone; bg: string; text: string }> as an inline generic argument. Per coding guidelines (**/*.{ts,tsx}: Prefer interface for defining object shapes in TypeScript), extract both to named interface declarations above their respective scopes.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/ui/src/components/pill.test.tsx` around lines 12 - 15, Extract the
inline object types into named interfaces: replace the inline props for the
component currently typed as { reducedMotion: "always" | "never"; children:
ReactNode; } with a new interface (e.g., WithMotionProps) declared above the
component and use that interface in the component signature, and replace the
inline generic for it.each<{ tone: PillTone; bg: string; text: string }> with a
named interface (e.g., ToneTestCase) declared above the test block and use it in
the it.each generic; ensure the new interfaces import ReactNode if needed and
keep existing names like PillTone unchanged.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/ui/src/components/pill-group.tsx`:
- Around line 9-19: The PillGroup component contains hard-coded pixel classes
(e.g., rounded-[5px], text-[10px], h-[20px], h-[22px], px-2 (if representing
8px/10px), and other [14px],[7px],[9px] usages) which must be replaced with the
design token equivalents from DESIGN.md; update the class strings inside
packages/ui/src/components/pill-group.tsx (the variant block for active and
size, base class string, and any other nearby class values referenced in this
file) to use the canonical DESIGN.md tokens (CSS custom properties or token
utility classes used across the repo) instead of raw px values, mapping each
specific token (rounded, font-size, height, padding, gap) to the appropriate
DESIGN.md name so no new numeric values are invented and all sizes reference the
shared tokens.

In `@web/src/components/design-system-showcase.test.tsx`:
- Around line 199-205: The showcase is importing KindChip directly from
"@/systems/network/components/kind-chip" which breaks cross-system import rules;
either export KindChip from the network public barrel (add an export in
web/src/systems/network/index.ts) and change the showcase import to
"@/systems/network", or move KindChip to a shared location and import from that
new public barrel; after doing that, update the allowed Set in
design-system-showcase.test.tsx to replace
"@/systems/network/components/kind-chip" with the new public import path
"@/systems/network" (or the new shared barrel path) so the test reflects the
corrected import.

In `@web/src/components/design-system-showcase.tsx`:
- Line 139: The import of KindChip in design-system-showcase.tsx uses an
internal path and violates cross-system rules; update the import to use the
network system's public barrel instead (replace the current
"@/systems/network/components/kind-chip" import with an import from
"@/systems/network" that exposes KindChip) so the component is consumed via the
network public API rather than an internal file.

In `@web/src/lib/kind-colors.ts`:
- Around line 7-15: The KIND_COLORS map currently uses hard-coded hex values
(e.g., "say": "#8E8E93", "trace": "#B892FF") which violates the token-only rule;
update the KIND_COLORS constant in web/src/lib/kind-colors.ts to reference the
canonical design tokens (CSS variables exported from packages/ui/src/tokens.css)
for every entry (replace hex literals with var(--color-*) tokens such as
var(--color-muted)/var(--color-xxx) or the appropriate kind/status token names),
ensure no ad-hoc hex remains, and keep keys (say, greet, direct, receipt,
recipe, trace, whois) unchanged so callers still work.

In `@web/src/systems/automation/components/automation-detail-panel.tsx`:
- Line 16: Replace the internal-path import of KindChip with the network system
public barrel import (import { KindChip } from "@/systems/network"); if KindChip
is not exported from the network barrel, add a named re-export in the network
system barrel (e.g., export { KindChip } from "./components/kind-chip") so
automation-detail-panel uses only the public "@/systems/network" surface.

In `@web/src/systems/bridges/components/bridge-list-panel.tsx`:
- Around line 6-7: Replace the direct import of KindChip from the network
system's internals with the public barrel export: change the import to pull
KindChip from "@/systems/network" (e.g., import { KindChip } from
"@/systems/network"); if KindChip is not currently re-exported from that barrel,
add it to the network system's public exports so the component can be imported
only via the public barrel and avoid reaching into components/kind-chip
internals.

In `@web/src/systems/bridges/components/bridge-provider-card.tsx`:
- Line 4: The import of KindChip is reaching into another system's internals;
update the import in bridge-provider-card.tsx to use the network system's public
barrel instead of "@/systems/network/components/kind-chip"—i.e., import KindChip
from the "@/systems/network" barrel so the cross-system boundary contract is
respected and internal paths are not referenced.

In `@web/src/systems/daemon/hooks/use-daemon-health.ts`:
- Line 3: The hook useDaemonHealth currently imports the UI type
ConnectionStatus from the component, which breaks layer boundaries; instead
remove that import and replace it with a system-level type (either define a
local ConnectionStatus enum/type inside useDaemonHealth or move a shared status
type to a lower-level module such as a lib/adapters/types module and import
that). Update all references inside useDaemonHealth (and any callers in systems)
to use the new system-level type so the hook no longer depends on
"@/components/connection-indicator".

---

Outside diff comments:
In `@packages/site/components/landing/__tests__/landing.test.tsx`:
- Around line 345-363: The test named "has a meaning string for every
NetworkKind and renders inside Pill" currently only checks KIND_MEANING[kind]
exists and that the kind text renders; update it to also assert that the
rendered Pill exposes the meaning via its title by checking that the rendered
element has attribute title equal to KIND_MEANING[kind] (e.g., use
getByTitle(KIND_MEANING[kind]) or
expect(screen.getByText(kind).closest('...')?.getAttribute('title')).toBe(KIND_MEANING[kind])
referencing the Pill component and KIND_MEANING mapping) so each iteration
verifies the Pill's title matches the meaning.

---

Nitpick comments:
In `@packages/ui/src/components/pill.test.tsx`:
- Around line 12-15: Extract the inline object types into named interfaces:
replace the inline props for the component currently typed as { reducedMotion:
"always" | "never"; children: ReactNode; } with a new interface (e.g.,
WithMotionProps) declared above the component and use that interface in the
component signature, and replace the inline generic for it.each<{ tone:
PillTone; bg: string; text: string }> with a named interface (e.g.,
ToneTestCase) declared above the test block and use it in the it.each generic;
ensure the new interfaces import ReactNode if needed and keep existing names
like PillTone unchanged.

In `@packages/ui/src/components/stories/pill-group.stories.tsx`:
- Around line 13-16: The story description for the PillGroup component is
confusing ("Renamed from the legacy `PillGroup`") — update the
`description.component` text to clearly state what the current `PillGroup`
replaces (for example "Replaces the legacy `Pills` segmented toggle") and keep
the existing usage hints (`items`, `value`, `onChange`) intact; edit the string
in the story where `description.component` is defined so it references the
correct legacy name instead of `PillGroup`.

In `@packages/ui/src/components/stories/pill.stories.tsx`:
- Around line 11-17: Update the docs.description.component string in
pill.stories.tsx to remove the duplicate "Pill" and list the distinct components
this unified pill replaces (e.g., MonoBadge, StatusDot, KindChip, Pill.Dot,
WireChip, and the legacy Pill) so the description reads correctly and does not
contain repeated entries; locate the docs.description.component literal and edit
the quoted component description accordingly.

In `@web/src/lib/pill-variant.ts`:
- Line 17: Rename the misleading function pillVariantFromTone (which returns a
PillTone) to a name that reflects it produces a PillTone—e.g.,
pillToneFromLegacyTone or pillToneFromTone; update the function declaration and
its export, replace all call sites and imports referencing pillVariantFromTone,
and adjust any tests/types that import it; use the unique symbols
pillVariantFromTone, PillTone, and LegacyPillTone to locate and update the
implementation and usages.

In `@web/src/storybook/packages-ui-storybook-config.test.ts`:
- Around line 31-32: The test currently asserts the shared tokens import but
misses the shadcn Tailwind import; update the test (in
web/src/storybook/packages-ui-storybook-config.test.ts) to also assert that
packagesUiPreviewCssSource contains the shadcn import (e.g.
expect(packagesUiPreviewCssSource).toContain('@import "@agh/ui/shadcn.css";') or
the correct shadcn import string used in your project) so Storybook preview CSS
coverage includes both tokens and shadcn styles.

In `@web/src/systems/bridges/components/bridge-detail-panel.tsx`:
- Around line 87-117: Both statusToStatusDotTone and statusToMonoBadgeTone
duplicate the same mapping logic; consolidate into a single reusable mapper
(e.g., statusToPillTone) that takes a BridgeStatus, uses
bridgeStatusTone(status) and the same "disabled" check, and returns a PillTone;
then replace calls to statusToStatusDotTone and statusToMonoBadgeTone with the
new function (or have those two functions delegate to it) and remove the
duplicated switch body to prevent drift. Ensure the new mapper preserves the
exact mapping for "disabled" -> "danger" and the bridgeStatusTone cases
("green"->"success", "amber"->"warning", "danger"->"danger", "violet"->"info",
default -> "neutral").

In `@web/src/systems/knowledge/components/knowledge-list-panel.tsx`:
- Around line 70-75: The scope badge currently duplicates label logic using a
ternary in the JSX; replace that with a call to the shared helper
knowledgeScopeShortLabel(scope) so formatting is centralized (i.e., inside the
Pill where {scope === "workspace" ? "WS" : "GLOBAL"} is used, render
knowledgeScopeShortLabel(scope) instead) and add an import for
knowledgeScopeShortLabel if it's not already imported so both list and detail
views use the same label logic.

In `@web/src/systems/knowledge/lib/knowledge-formatters.ts`:
- Around line 39-47: TYPE_TONE is typed too loosely as Record<string, PillTone>;
tighten it to use the MemoryType union so typos are caught and future changes
are safer: change the TYPE_TONE declaration to use Record<MemoryType, PillTone>
(or a const assertion with an explicit MemoryType index type) and ensure
memoryTypeTone(type: MemoryType) still returns TYPE_TONE[type] with a fallback
("accent") if needed; update any missing keys in TYPE_TONE to satisfy the
MemoryType coverage or use Partial<Record<MemoryType, PillTone>> and keep the
fallback in memoryTypeTone.

In `@web/src/systems/tasks/components/tasks-detail-header.tsx`:
- Around line 42-47: The JSDoc mentions the removed MonoBadge; update the
comment in tasks-detail-header.tsx to reference the current UI element (Pill)
used for the short id and status—e.g., change "short id `MonoBadge`" to "short
id `Pill`" and ensure other mentions (eyebrow row, PageHeader) reflect current
component names like PageHeader and Pill so the docstring matches the
implementation in the TasksDetailHeader component.

In `@web/src/systems/tasks/components/tasks-detail-preview-panel.tsx`:
- Around line 58-62: Update the stale JSDoc at the top of
tasks-detail-preview-panel.tsx: replace references to the removed components
StatusDot and MonoBadge with the current components Pill.Dot and Pill (and/or
remove the old names), keeping the rest of the description (CodeBlock, Metric,
Section, etc.) accurate to the current implementation so the comment matches the
actual usage of Pill.Dot and Pill in this file.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 126d0c78-0551-45e1-9ed5-5f10d648a5ed

📥 Commits

Reviewing files that changed from the base of the PR and between 72007e1 and 60b6471.

⛔ Files ignored due to path filters (4)
  • packages/ui/README.md is excluded by !**/*.md
  • skills-lock.json is excluded by !**/*.json
  • web/AGENTS.md is excluded by !**/*.md
  • web/CLAUDE.md is excluded by !**/*.md
📒 Files selected for processing (178)
  • packages/site/components/landing/__tests__/landing.test.tsx
  • packages/site/components/landing/bridges-section.tsx
  • packages/site/components/landing/network-protocol-visual.tsx
  • packages/site/components/landing/primitives/index.ts
  • packages/site/components/landing/primitives/kind-chip.tsx
  • packages/site/components/landing/primitives/mono-badge.tsx
  • packages/site/components/landing/primitives/network-kinds.ts
  • packages/ui/.storybook/preview.css
  • packages/ui/.storybook/preview.ts
  • packages/ui/src/components/connection-indicator.test.tsx
  • packages/ui/src/components/input-group.tsx
  • packages/ui/src/components/input.tsx
  • packages/ui/src/components/kind-chip.test.tsx
  • packages/ui/src/components/kind-chip.tsx
  • packages/ui/src/components/mono-badge.test.tsx
  • packages/ui/src/components/mono-badge.tsx
  • packages/ui/src/components/mono-chip.test.tsx
  • packages/ui/src/components/mono-chip.tsx
  • packages/ui/src/components/pill-group.test.tsx
  • packages/ui/src/components/pill-group.tsx
  • packages/ui/src/components/pill.test.tsx
  • packages/ui/src/components/pill.tsx
  • packages/ui/src/components/pills.tsx
  • packages/ui/src/components/status-dot.test.tsx
  • packages/ui/src/components/status-dot.tsx
  • packages/ui/src/components/stories/accordion.stories.tsx
  • packages/ui/src/components/stories/alert.stories.tsx
  • packages/ui/src/components/stories/avatar.stories.tsx
  • packages/ui/src/components/stories/badge.stories.tsx
  • packages/ui/src/components/stories/breadcrumb.stories.tsx
  • packages/ui/src/components/stories/button-group.stories.tsx
  • packages/ui/src/components/stories/button.stories.tsx
  • packages/ui/src/components/stories/card.stories.tsx
  • packages/ui/src/components/stories/chat-message-bubble.stories.tsx
  • packages/ui/src/components/stories/code-block.stories.tsx
  • packages/ui/src/components/stories/collapsible.stories.tsx
  • packages/ui/src/components/stories/combobox.stories.tsx
  • packages/ui/src/components/stories/command.stories.tsx
  • packages/ui/src/components/stories/connection-indicator.stories.tsx
  • packages/ui/src/components/stories/dialog.stories.tsx
  • packages/ui/src/components/stories/direction.stories.tsx
  • packages/ui/src/components/stories/dropdown-menu.stories.tsx
  • packages/ui/src/components/stories/empty.stories.tsx
  • packages/ui/src/components/stories/field.stories.tsx
  • packages/ui/src/components/stories/input-group.stories.tsx
  • packages/ui/src/components/stories/input.stories.tsx
  • packages/ui/src/components/stories/item.stories.tsx
  • packages/ui/src/components/stories/kbd.stories.tsx
  • packages/ui/src/components/stories/kind-chip.stories.tsx
  • packages/ui/src/components/stories/label.stories.tsx
  • packages/ui/src/components/stories/logo.stories.tsx
  • packages/ui/src/components/stories/metric.stories.tsx
  • packages/ui/src/components/stories/mono-badge.stories.tsx
  • packages/ui/src/components/stories/mono-chip.stories.tsx
  • packages/ui/src/components/stories/native-select.stories.tsx
  • packages/ui/src/components/stories/page-header.stories.tsx
  • packages/ui/src/components/stories/pill-group.stories.tsx
  • packages/ui/src/components/stories/pill.stories.tsx
  • packages/ui/src/components/stories/pills.stories.tsx
  • packages/ui/src/components/stories/popover.stories.tsx
  • packages/ui/src/components/stories/progress.stories.tsx
  • packages/ui/src/components/stories/scroll-area.stories.tsx
  • packages/ui/src/components/stories/search-input.stories.tsx
  • packages/ui/src/components/stories/section.stories.tsx
  • packages/ui/src/components/stories/select.stories.tsx
  • packages/ui/src/components/stories/separator.stories.tsx
  • packages/ui/src/components/stories/sheet.stories.tsx
  • packages/ui/src/components/stories/sidebar.stories.tsx
  • packages/ui/src/components/stories/skeleton.stories.tsx
  • packages/ui/src/components/stories/sonner.stories.tsx
  • packages/ui/src/components/stories/spinner.stories.tsx
  • packages/ui/src/components/stories/split-pane.stories.tsx
  • packages/ui/src/components/stories/status-dot.stories.tsx
  • packages/ui/src/components/stories/switch.stories.tsx
  • packages/ui/src/components/stories/table.stories.tsx
  • packages/ui/src/components/stories/tabs.stories.tsx
  • packages/ui/src/components/stories/textarea.stories.tsx
  • packages/ui/src/components/stories/toggle-group.stories.tsx
  • packages/ui/src/components/stories/toggle.stories.tsx
  • packages/ui/src/components/stories/tool-call-card.stories.tsx
  • packages/ui/src/components/stories/toolbar.stories.tsx
  • packages/ui/src/components/stories/tooltip.stories.tsx
  • packages/ui/src/components/stories/typing-dots.stories.tsx
  • packages/ui/src/components/stories/ui-provider.stories.tsx
  • packages/ui/src/components/stories/wire-card.stories.tsx
  • packages/ui/src/components/stories/wire-chip.stories.tsx
  • packages/ui/src/components/tool-call-card.tsx
  • packages/ui/src/components/toolbar.tsx
  • packages/ui/src/components/wire-chip.test.tsx
  • packages/ui/src/components/wire-chip.tsx
  • packages/ui/src/index.ts
  • web/src/components/app-sidebar.test.tsx
  • web/src/components/app-sidebar.tsx
  • web/src/components/connection-indicator.tsx
  • web/src/components/design-system-showcase.test.tsx
  • web/src/components/design-system-showcase.tsx
  • web/src/components/stories/app-sidebar.stories.tsx
  • web/src/hooks/routes/use-home-page.ts
  • web/src/lib/kind-colors.ts
  • web/src/lib/pill-variant.ts
  • web/src/routes/_app.tsx
  • web/src/routes/_app/-tasks.test.tsx
  • web/src/routes/_app/bridges.tsx
  • web/src/routes/_app/index.tsx
  • web/src/routes/_app/knowledge.tsx
  • web/src/routes/_app/sandbox.tsx
  • web/src/routes/_app/settings/-mcp-servers.test.tsx
  • web/src/routes/_app/settings/general.tsx
  • web/src/routes/_app/settings/hooks-extensions.tsx
  • web/src/routes/_app/settings/mcp-servers.tsx
  • web/src/routes/_app/settings/observability.tsx
  • web/src/routes/_app/tasks.tsx
  • web/src/storybook/packages-ui-storybook-config.test.ts
  • web/src/systems/agent/components/agent-info-panel.tsx
  • web/src/systems/agent/components/agent-page-header.tsx
  • web/src/systems/agent/components/agent-sessions-list.tsx
  • web/src/systems/agent/components/stories/agent-page-header.stories.tsx
  • web/src/systems/agent/lib/session-status.ts
  • web/src/systems/automation/components/automation-detail-panel.tsx
  • web/src/systems/automation/components/automation-job-form.tsx
  • web/src/systems/automation/components/automation-list-panel.tsx
  • web/src/systems/automation/components/automation-operations-page.tsx
  • web/src/systems/automation/components/automation-run-history.tsx
  • web/src/systems/automation/components/automation-trigger-form.tsx
  • web/src/systems/bridges/components/bridge-create-dialog.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.test.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.tsx
  • web/src/systems/bridges/components/bridge-edit-dialog.tsx
  • web/src/systems/bridges/components/bridge-list-panel.tsx
  • web/src/systems/bridges/components/bridge-provider-card.tsx
  • web/src/systems/bridges/components/bridge-test-delivery-dialog.tsx
  • web/src/systems/daemon/hooks/use-daemon-health.ts
  • web/src/systems/knowledge/components/knowledge-detail-panel.tsx
  • web/src/systems/knowledge/components/knowledge-list-panel.tsx
  • web/src/systems/knowledge/lib/knowledge-formatters.ts
  • web/src/systems/network/components/kind-chip.tsx
  • web/src/systems/network/components/network-create-channel-dialog.tsx
  • web/src/systems/network/components/network-workspace-shell.test.tsx
  • web/src/systems/network/components/network-workspace-shell.tsx
  • web/src/systems/session/components/chat-header.test.tsx
  • web/src/systems/session/components/chat-header.tsx
  • web/src/systems/session/components/runtime-activity-notice.tsx
  • web/src/systems/session/components/session-inspector.tsx
  • web/src/systems/session/components/session-resume-failure.tsx
  • web/src/systems/session/components/tool-call-card.test.tsx
  • web/src/systems/settings/components/provider-card.tsx
  • web/src/systems/settings/components/settings-field-row.test.tsx
  • web/src/systems/settings/components/settings-source-badge.tsx
  • web/src/systems/settings/components/settings-status-line.tsx
  • web/src/systems/skill/components/marketplace-view.tsx
  • web/src/systems/skill/components/skill-detail-panel.tsx
  • web/src/systems/skill/components/skill-list-panel.tsx
  • web/src/systems/skill/lib/skill-formatters.ts
  • web/src/systems/tasks/components/task-card.test.tsx
  • web/src/systems/tasks/components/task-card.tsx
  • web/src/systems/tasks/components/task-editor-surface.tsx
  • web/src/systems/tasks/components/task-run-detail-header.tsx
  • web/src/systems/tasks/components/task-run-detail-panels.tsx
  • web/src/systems/tasks/components/tasks-dashboard-active-runs.tsx
  • web/src/systems/tasks/components/tasks-dashboard-queue-health.tsx
  • web/src/systems/tasks/components/tasks-dashboard-status-breakdown.tsx
  • web/src/systems/tasks/components/tasks-detail-children-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-dependencies-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-header.test.tsx
  • web/src/systems/tasks/components/tasks-detail-header.tsx
  • web/src/systems/tasks/components/tasks-detail-overview-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-preview-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-runs-panel.tsx
  • web/src/systems/tasks/components/tasks-empty-state.tsx
  • web/src/systems/tasks/components/tasks-inbox-item.tsx
  • web/src/systems/tasks/components/tasks-kanban-board.tsx
  • web/src/systems/tasks/components/tasks-list-panel.tsx
  • web/src/systems/tasks/components/tasks-list-row.test.tsx
  • web/src/systems/tasks/components/tasks-list-row.tsx
  • web/src/systems/tasks/components/tasks-multi-agent-panel.tsx
  • web/src/systems/tasks/components/tasks-timeline-panel.tsx
  • web/src/systems/tasks/lib/task-formatters.ts
  • web/src/systems/workspace/components/workspace-setup.tsx
💤 Files with no reviewable changes (71)
  • packages/ui/src/components/stories/field.stories.tsx
  • packages/ui/src/components/stories/separator.stories.tsx
  • packages/ui/src/components/stories/avatar.stories.tsx
  • packages/ui/src/components/stories/sheet.stories.tsx
  • packages/ui/src/components/stories/toggle-group.stories.tsx
  • packages/ui/src/components/stories/tool-call-card.stories.tsx
  • packages/ui/src/components/stories/label.stories.tsx
  • packages/ui/src/components/stories/combobox.stories.tsx
  • packages/ui/src/components/stories/accordion.stories.tsx
  • packages/ui/src/components/stories/dropdown-menu.stories.tsx
  • packages/ui/src/components/stories/logo.stories.tsx
  • packages/ui/src/components/stories/popover.stories.tsx
  • packages/ui/src/components/stories/card.stories.tsx
  • packages/ui/src/components/stories/sonner.stories.tsx
  • packages/ui/src/components/stories/badge.stories.tsx
  • packages/ui/src/components/stories/spinner.stories.tsx
  • packages/ui/src/components/stories/code-block.stories.tsx
  • packages/ui/src/components/stories/collapsible.stories.tsx
  • packages/ui/src/components/stories/button.stories.tsx
  • packages/ui/src/components/stories/input-group.stories.tsx
  • packages/ui/src/components/stories/tabs.stories.tsx
  • packages/ui/src/components/stories/kbd.stories.tsx
  • packages/ui/src/components/stories/item.stories.tsx
  • packages/ui/src/components/stories/button-group.stories.tsx
  • packages/ui/src/components/stories/scroll-area.stories.tsx
  • packages/ui/src/components/stories/search-input.stories.tsx
  • packages/ui/src/components/stories/progress.stories.tsx
  • packages/ui/src/components/stories/textarea.stories.tsx
  • packages/ui/src/components/stories/split-pane.stories.tsx
  • packages/ui/.storybook/preview.ts
  • packages/ui/src/components/stories/dialog.stories.tsx
  • packages/ui/src/components/stories/toggle.stories.tsx
  • packages/ui/src/components/stories/table.stories.tsx
  • packages/ui/src/components/stories/switch.stories.tsx
  • packages/ui/src/components/stories/metric.stories.tsx
  • packages/ui/src/components/stories/skeleton.stories.tsx
  • packages/ui/src/components/stories/input.stories.tsx
  • packages/ui/src/components/stories/sidebar.stories.tsx
  • packages/ui/src/components/stories/select.stories.tsx
  • packages/ui/src/components/status-dot.test.tsx
  • packages/ui/src/components/kind-chip.test.tsx
  • packages/ui/src/components/stories/ui-provider.stories.tsx
  • packages/ui/src/components/stories/tooltip.stories.tsx
  • packages/ui/src/components/stories/native-select.stories.tsx
  • packages/ui/src/components/stories/alert.stories.tsx
  • web/src/routes/_app.tsx
  • packages/ui/src/components/mono-chip.tsx
  • packages/ui/src/components/kind-chip.tsx
  • packages/ui/src/components/wire-chip.test.tsx
  • packages/ui/src/components/stories/connection-indicator.stories.tsx
  • packages/site/components/landing/primitives/mono-badge.tsx
  • packages/ui/src/components/wire-chip.tsx
  • packages/ui/src/components/stories/pills.stories.tsx
  • packages/ui/src/components/mono-badge.test.tsx
  • packages/ui/src/components/stories/mono-chip.stories.tsx
  • packages/ui/src/components/stories/wire-chip.stories.tsx
  • packages/ui/src/components/stories/direction.stories.tsx
  • packages/ui/src/components/stories/mono-badge.stories.tsx
  • packages/ui/src/components/stories/status-dot.stories.tsx
  • packages/ui/src/components/stories/typing-dots.stories.tsx
  • packages/ui/src/components/connection-indicator.test.tsx
  • packages/ui/src/components/stories/empty.stories.tsx
  • packages/site/components/landing/primitives/kind-chip.tsx
  • packages/ui/src/components/stories/wire-card.stories.tsx
  • packages/ui/src/components/pills.tsx
  • packages/ui/src/components/mono-chip.test.tsx
  • packages/ui/src/components/stories/kind-chip.stories.tsx
  • packages/ui/src/components/stories/command.stories.tsx
  • packages/ui/src/components/stories/breadcrumb.stories.tsx
  • packages/ui/src/components/mono-badge.tsx
  • packages/ui/src/components/status-dot.tsx

Comment thread packages/ui/src/components/pill-group.tsx Outdated
Comment thread web/src/components/design-system-showcase.test.tsx
Comment thread web/src/components/design-system-showcase.tsx Outdated
Comment thread web/src/lib/kind-colors.ts
Comment thread web/src/systems/automation/components/automation-detail-panel.tsx Outdated
Comment thread web/src/systems/bridges/components/bridge-list-panel.tsx Outdated
Comment thread web/src/systems/bridges/components/bridge-provider-card.tsx Outdated
Comment thread web/src/systems/daemon/hooks/use-daemon-health.ts Outdated
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: 5

🧹 Nitpick comments (9)
web/src/routes/_app/settings.tsx (1)

140-140: Consider exposing full label on hover when truncated.

Small UX win: add a title so long section names remain discoverable when clipped.

Proposed tweak
-      <span className="truncate">{section.label}</span>
+      <span className="truncate" title={section.label}>
+        {section.label}
+      </span>
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/routes/_app/settings.tsx` at line 140, The span that renders the
section label (span with className="truncate" containing {section.label}) should
include a title attribute so the full label appears on hover; update that span
to set title={section.label} (optionally also add aria-label={section.label} for
accessibility) so truncated labels are discoverable.
web/src/systems/session/adapters/session-api.test.ts (1)

336-339: Make the query assertion order-agnostic.

This assertion is coupled to parameter order. If serialization order changes, the test can fail even when behavior is correct.

Suggested refactor
-    await expectFetchRequest({
-      method: "POST",
-      path: "/api/sessions/sess-001/repair?dry_run=true&force=true",
-    });
+    const request = fetchRequest();
+    const url = new URL(request.url);
+    expect(request.method).toBe("POST");
+    expect(url.pathname).toBe("/api/sessions/sess-001/repair");
+    expect(url.searchParams.get("dry_run")).toBe("true");
+    expect(url.searchParams.get("force")).toBe("true");
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/session/adapters/session-api.test.ts` around lines 336 - 339,
The test currently asserts the full path string including query parameters in
await expectFetchRequest({ method: "POST", path:
"/api/sessions/sess-001/repair?dry_run=true&force=true" }), which is
order-dependent; update the assertion in session-api.test.ts to be
order-agnostic by checking the pathname equals "/api/sessions/sess-001/repair"
and parsing the query string (e.g., with URL or URLSearchParams) to assert the
keys dry_run and force exist with values "true" regardless of order, keeping the
method check as "POST" and using the existing expectFetchRequest invocation to
locate the request.
internal/session/repair.go (1)

74-95: Document the new private repair-state types.

repairEvent, repairTurnState, repairToolCall, and repairAnalysis all land without comments. That makes this state machine harder to scan and can fight the repo's Go comment policy.

As per coding guidelines: Comments in Go must explain the 'why' and 'what', not just 'what'. Unexported identifiers must have a comment.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/session/repair.go` around lines 74 - 95, Add Go doc comments for the
unexported types repairEvent, repairTurnState, repairToolCall, and
repairAnalysis that explain their purpose and why they exist (not just restating
fields): e.g., describe that repairEvent pairs stored store.SessionEvent with an
incoming acp.AgentEvent for reconciliation, that repairTurnState tracks per-turn
metadata (turnID, whether prompt data is present, terminal flag, toolCalls and
toolResults) used by the repair state machine, that repairToolCall represents a
recorded tool invocation and its identifier, and that repairAnalysis aggregates
discovered RepairIssue(s), the current turn state and a blocking flag for
analysis flow; ensure each comment sits immediately above the corresponding type
declaration and is written in idiomatic Go style for unexported identifiers.
internal/cli/client.go (1)

64-64: Add a compile-time assertion for unixSocketClient.

DaemonClient gained another method, but no var _ DaemonClient = (*unixSocketClient)(nil) guard exists. This assertion catches interface drift at compile time instead of later through call-site failures.

♻️ Suggested change
 type unixSocketClient struct {
 	socketPath string
 	httpClient *http.Client
 }
+
+var _ DaemonClient = (*unixSocketClient)(nil)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/cli/client.go` at line 64, The interface DaemonClient gained a new
method (RepairSession) but there is no compile-time assertion that
unixSocketClient implements DaemonClient; add the standard assertion line var _
DaemonClient = (*unixSocketClient)(nil) adjacent to the unixSocketClient type
definition (or in the same file) so the compiler will catch any future interface
drift between DaemonClient and unixSocketClient.
web/src/systems/knowledge/lib/knowledge-formatters.ts (1)

1-1: Keep @agh/ui tone types out of the knowledge lib layer.

knowledge-formatters.ts now depends on the UI package just to describe tone strings. That leaks presentation concerns into web/src/systems/knowledge/lib and makes the formatter harder to reuse outside the component layer. A local semantic union mapped to PillTone at render time would keep the boundary cleaner.

As per coding guidelines, web/src/systems/**/*.{ts,tsx}: Dependency flow within systems: adapters → lib → hooks → components (unidirectional, never reversed).

Also applies to: 39-50

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@web/src/systems/knowledge/lib/knowledge-formatters.ts` at line 1, The file
imports UI type PillTone which leaks presentation into the knowledge lib;
replace the external dependency by defining a local semantic union type (e.g.,
type KnowledgeTone = 'positive' | 'neutral' | 'negative' | ...) inside
knowledge-formatters.ts and use that throughout the lib; remove the import of
PillTone and add a small mapping function (e.g., mapKnowledgeToneToPillTone) at
the component/render boundary to convert KnowledgeTone to PillTone where UI
lives (move any direct references to PillTone out of the lib and into components
that render pills).
web/src/components/design-system-showcase.tsx (1)

297-325: Avoid hardcoding token values in the showcase metadata.

These new swatches duplicate literal color values that already live in packages/ui/src/tokens.css, but the current tests only verify token names. If the token file changes later, the showcase docs can silently drift. Consider deriving the displayed value from the token source or adding a sync assertion against tokens.css.

As per coding guidelines, web/src/**/*.{tsx,ts,css}: Design system tokens (colors, fonts, radius, spacing, motion) MUST be pulled from DESIGN.md in the repository root — never invent tokens or use ad-hoc hex values in components.

internal/api/core/handlers_test.go (1)

214-220: Strengthen repair response assertions for future regressions.

Consider also asserting persisted and action payload details, since this test already exercises dry-run behavior.

Proposed test assertion extension
 		var payload contract.SessionRepairResponse
 		if err := json.Unmarshal(repairResp.Body.Bytes(), &payload); err != nil {
 			t.Fatalf("json.Unmarshal(repair response) error = %v", err)
 		}
 		if payload.Repair.SessionID != "sess-a" {
 			t.Fatalf("repair session id = %q, want sess-a", payload.Repair.SessionID)
 		}
+		if payload.Repair.Persisted {
+			t.Fatalf("repair persisted = %v, want false for dry-run", payload.Repair.Persisted)
+		}
+		if len(payload.Repair.Actions) != 1 {
+			t.Fatalf("repair actions len = %d, want 1", len(payload.Repair.Actions))
+		}
+		if payload.Repair.Actions[0].Code != session.RepairActionAppendTerminalError {
+			t.Fatalf("repair action code = %q, want %q", payload.Repair.Actions[0].Code, session.RepairActionAppendTerminalError)
+		}
+		if payload.Repair.Actions[0].Persisted {
+			t.Fatalf("repair action persisted = %v, want false for dry-run", payload.Repair.Actions[0].Persisted)
+		}
 	})
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/api/core/handlers_test.go` around lines 214 - 220, The test
currently unmarshals into contract.SessionRepairResponse (payload) and asserts
only payload.Repair.SessionID; extend assertions to verify
payload.Repair.Persisted (or payload.Persisted depending on struct) equals false
for dry-run and validate the action payload details inside
payload.Repair.Actions (e.g., expected action type, target ID, and parameters)
to catch regressions; locate where contract.SessionRepairResponse is used in the
test (variables payload, repairResp) and add checks for the persisted flag and
specific fields of the first action (type/name and payload contents) to ensure
the dry-run response structure remains correct.
internal/api/core/handlers.go (1)

422-431: Consider rejecting conflicting dry_run alias values.

If both dry_run and dry-run are sent with different values, current behavior silently prefers the first name.

Optional conflict-safe parsing approach
 func repairBoolQuery(c *gin.Context, names ...string) (bool, error) {
+	var (
+		value bool
+		seen  bool
+	)
 	for _, name := range names {
 		raw, ok := c.GetQuery(name)
 		if !ok {
 			continue
 		}
-		return ParseOptionalBool(raw)
+		parsed, err := ParseOptionalBool(raw)
+		if err != nil {
+			return false, fmt.Errorf("invalid %s query: %w", name, err)
+		}
+		if seen && parsed != value {
+			return false, fmt.Errorf("conflicting boolean query values for %s", strings.Join(names, ","))
+		}
+		value = parsed
+		seen = true
 	}
-	return false, nil
+	return value, nil
 }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/api/core/handlers.go` around lines 422 - 431, The repairBoolQuery
function currently returns the first found alias value silently; change it to
detect conflicting alias values by collecting all present query values for the
provided names (from the c.GetQuery results), if more than one distinct
non-empty value is present return a descriptive error instead of silently
choosing one, otherwise call ParseOptionalBool on the single value; update
repairBoolQuery and its callers to handle and propagate the error accordingly
(use the function name repairBoolQuery and ParseOptionalBool to locate and
modify the logic).
internal/daemon/boot.go (1)

521-566: Add startup latency guardrails around boot-time session repair.

Operationally, this loop can grow startup time with many stopped sessions. Consider recording duration/count metrics and optionally capping repairs per boot cycle.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@internal/daemon/boot.go` around lines 521 - 566, The boot-time session repair
loop (uses state.sessions.ListAll, bootShouldRepairSession,
state.sessions.RepairSession and repairIssueCount) can cause high startup
latency when many sessions exist; add guardrails by measuring and emitting
duration/count metrics for the overall repair loop and per-repair (use time.Now
to record elapsed and your metrics API), and enforce a configurable cap (e.g.,
maxRepairsPerBoot constant or config field) that stops after N repairs per boot
cycle while logging how many were skipped; implement a short-circuit when the
cap is reached and include the recorded metrics and skipped-count in the final
log.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@internal/cli/client_test.go`:
- Around line 809-812: The test assertion calling client.RepairSession (checking
repaired, err, repaired.SessionID and len(repaired.Actions)) should be moved
into a dedicated subtest: wrap the existing call and its t.Fatalf check inside
t.Run("Should repair session with dry run and force", func(t *testing.T) {
t.Parallel(); ... }) so it follows the repository test structure; keep the same
call to client.RepairSession and the same assertions but execute them inside the
subtest and mark it parallel with t.Parallel().

In `@internal/cli/session_test.go`:
- Around line 304-354: Wrap the existing test body of
TestSessionRepairPassesFlagsAndRendersJSON in a t.Run subtest (e.g.
t.Run("Should pass flags and render JSON", func(t *testing.T) { ... })) and move
the t.Parallel() call inside that subtest; remove the top-level t.Parallel() so
the test follows the required subtest pattern. Ensure the existing variables and
calls (seenQuery, seenID, newTestDeps, stubClient.repairSessionFn,
executeRootCommand, json.Unmarshal, and assertions) remain inside the subtest
closure so behavior and scoping are preserved.

In `@internal/session/repair.go`:
- Around line 166-173: The early return inside the block that checks
analysis.turn.terminal (which currently appends a RepairIssue with Code
RepairIssueTerminalEventAlreadyExists) prevents subsequent dangling tool_result
repair actions (e.g., RepairActionAppendInterruptedToolResult) from running;
remove the return so the function still records the TerminalEventAlreadyExists
issue but continues executing the rest of the repair logic that scans for and
appends interrupted tool results (look for logic that generates
RepairActionAppendInterruptedToolResult and ensure it runs even when
analysis.turn.terminal is true). Ensure tests cover a case where terminal event
exists but matching tool_result rows are missing so the
append-interrupted-tool-result path executes.

In `@packages/ui/src/tokens.css`:
- Around line 42-49: The CSS defines a protocol-kind token --color-kind-recipe
but the runtime enum uses "capability", so update the token name to match the
active kind: replace or add --color-kind-capability (instead of
--color-kind-recipe) in the protocol-kind colors block so the runtime lookup for
"capability" resolves to the intended color; ensure any usages reference
--color-kind-capability consistently.

In `@web/src/systems/session/adapters/session-api.ts`:
- Around line 150-155: The two raw Error throws in repairSession should be
replaced with the adapter's typed errors: throw a SessionNotFoundError (or
similarly named not-found adapter error) when response.status === 404, and throw
a SessionAdapterError (or the generic adapter error class used across systems)
for the default failure branch using defaultApiErrorMessage(response, error) as
the message or as properties; update imports to bring in the correct typed error
classes (e.g., SessionNotFoundError, SessionAdapterError) and ensure you pass
the id/response/error context to those constructors instead of new Error.

---

Nitpick comments:
In `@internal/api/core/handlers_test.go`:
- Around line 214-220: The test currently unmarshals into
contract.SessionRepairResponse (payload) and asserts only
payload.Repair.SessionID; extend assertions to verify payload.Repair.Persisted
(or payload.Persisted depending on struct) equals false for dry-run and validate
the action payload details inside payload.Repair.Actions (e.g., expected action
type, target ID, and parameters) to catch regressions; locate where
contract.SessionRepairResponse is used in the test (variables payload,
repairResp) and add checks for the persisted flag and specific fields of the
first action (type/name and payload contents) to ensure the dry-run response
structure remains correct.

In `@internal/api/core/handlers.go`:
- Around line 422-431: The repairBoolQuery function currently returns the first
found alias value silently; change it to detect conflicting alias values by
collecting all present query values for the provided names (from the c.GetQuery
results), if more than one distinct non-empty value is present return a
descriptive error instead of silently choosing one, otherwise call
ParseOptionalBool on the single value; update repairBoolQuery and its callers to
handle and propagate the error accordingly (use the function name
repairBoolQuery and ParseOptionalBool to locate and modify the logic).

In `@internal/cli/client.go`:
- Line 64: The interface DaemonClient gained a new method (RepairSession) but
there is no compile-time assertion that unixSocketClient implements
DaemonClient; add the standard assertion line var _ DaemonClient =
(*unixSocketClient)(nil) adjacent to the unixSocketClient type definition (or in
the same file) so the compiler will catch any future interface drift between
DaemonClient and unixSocketClient.

In `@internal/daemon/boot.go`:
- Around line 521-566: The boot-time session repair loop (uses
state.sessions.ListAll, bootShouldRepairSession, state.sessions.RepairSession
and repairIssueCount) can cause high startup latency when many sessions exist;
add guardrails by measuring and emitting duration/count metrics for the overall
repair loop and per-repair (use time.Now to record elapsed and your metrics
API), and enforce a configurable cap (e.g., maxRepairsPerBoot constant or config
field) that stops after N repairs per boot cycle while logging how many were
skipped; implement a short-circuit when the cap is reached and include the
recorded metrics and skipped-count in the final log.

In `@internal/session/repair.go`:
- Around line 74-95: Add Go doc comments for the unexported types repairEvent,
repairTurnState, repairToolCall, and repairAnalysis that explain their purpose
and why they exist (not just restating fields): e.g., describe that repairEvent
pairs stored store.SessionEvent with an incoming acp.AgentEvent for
reconciliation, that repairTurnState tracks per-turn metadata (turnID, whether
prompt data is present, terminal flag, toolCalls and toolResults) used by the
repair state machine, that repairToolCall represents a recorded tool invocation
and its identifier, and that repairAnalysis aggregates discovered
RepairIssue(s), the current turn state and a blocking flag for analysis flow;
ensure each comment sits immediately above the corresponding type declaration
and is written in idiomatic Go style for unexported identifiers.

In `@web/src/routes/_app/settings.tsx`:
- Line 140: The span that renders the section label (span with
className="truncate" containing {section.label}) should include a title
attribute so the full label appears on hover; update that span to set
title={section.label} (optionally also add aria-label={section.label} for
accessibility) so truncated labels are discoverable.

In `@web/src/systems/knowledge/lib/knowledge-formatters.ts`:
- Line 1: The file imports UI type PillTone which leaks presentation into the
knowledge lib; replace the external dependency by defining a local semantic
union type (e.g., type KnowledgeTone = 'positive' | 'neutral' | 'negative' |
...) inside knowledge-formatters.ts and use that throughout the lib; remove the
import of PillTone and add a small mapping function (e.g.,
mapKnowledgeToneToPillTone) at the component/render boundary to convert
KnowledgeTone to PillTone where UI lives (move any direct references to PillTone
out of the lib and into components that render pills).

In `@web/src/systems/session/adapters/session-api.test.ts`:
- Around line 336-339: The test currently asserts the full path string including
query parameters in await expectFetchRequest({ method: "POST", path:
"/api/sessions/sess-001/repair?dry_run=true&force=true" }), which is
order-dependent; update the assertion in session-api.test.ts to be
order-agnostic by checking the pathname equals "/api/sessions/sess-001/repair"
and parsing the query string (e.g., with URL or URLSearchParams) to assert the
keys dry_run and force exist with values "true" regardless of order, keeping the
method check as "POST" and using the existing expectFetchRequest invocation to
locate the request.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 0fbff368-48f6-406a-835e-25fa04d121dd

📥 Commits

Reviewing files that changed from the base of the PR and between 60b6471 and 837b745.

⛔ Files ignored due to path filters (36)
  • .codex/plans/2026-04-28-session-repair-v1.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/_meta.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_001.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_002.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_003.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_004.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_005.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_006.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_007.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_008.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_009.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_010.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_011.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_012.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_013.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_014.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_015.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_016.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_017.md is excluded by !**/*.md
  • .compozy/tasks/badges-design/reviews-001/issue_018.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/adrs/adr-001-extension-tool-execution-boundary.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_agh_current_state.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_claude-code.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_claude_code_ideas.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_goclaw.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_hermes.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/analysis_openclaw.md is excluded by !**/*.md
  • .compozy/tasks/tools-registry/analysis/synthesis.md is excluded by !**/*.md
  • openapi/agh.json is excluded by !**/*.json
  • packages/site/content/runtime/cli-reference/session/index.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/cli-reference/session/meta.json is excluded by !**/*.json
  • packages/site/content/runtime/cli-reference/session/repair.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/operations/troubleshooting.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/sessions/lifecycle.mdx is excluded by !**/*.mdx
  • packages/site/content/runtime/core/sessions/resume.mdx is excluded by !**/*.mdx
  • web/src/generated/agh-openapi.d.ts is excluded by !**/generated/**
📒 Files selected for processing (73)
  • internal/api/contract/contract.go
  • internal/api/contract/responses.go
  • internal/api/core/conversions.go
  • internal/api/core/handlers.go
  • internal/api/core/handlers_internal_test.go
  • internal/api/core/handlers_test.go
  • internal/api/core/interfaces.go
  • internal/api/core/test_helpers_test.go
  • internal/api/httpapi/handlers_test.go
  • internal/api/httpapi/routes.go
  • internal/api/spec/spec.go
  • internal/api/testutil/apitest.go
  • internal/api/udsapi/handlers_test.go
  • internal/api/udsapi/routes.go
  • internal/cli/client.go
  • internal/cli/client_test.go
  • internal/cli/helpers_test.go
  • internal/cli/session.go
  • internal/cli/session_test.go
  • internal/daemon/boot.go
  • internal/daemon/daemon_test.go
  • internal/session/repair.go
  • internal/session/repair_test.go
  • packages/ui/src/components/pill-group.test.tsx
  • packages/ui/src/components/pill-group.tsx
  • packages/ui/src/components/pill.test.tsx
  • packages/ui/src/components/stories/pill-group.stories.tsx
  • packages/ui/src/components/stories/pill.stories.tsx
  • packages/ui/src/tokens.css
  • web/src/components/app-sidebar.tsx
  • web/src/components/design-system-showcase.test.tsx
  • web/src/components/design-system-showcase.tsx
  • web/src/components/sidebar-nav-classes.ts
  • web/src/lib/kind-colors.ts
  • web/src/lib/pill-variant.ts
  • web/src/routes/_app/settings.tsx
  • web/src/storybook/packages-ui-storybook-config.test.ts
  • web/src/systems/automation/components/automation-detail-panel.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.tsx
  • web/src/systems/bridges/components/bridge-list-panel.tsx
  • web/src/systems/bridges/components/bridge-provider-card.tsx
  • web/src/systems/daemon/hooks/use-daemon-health.ts
  • web/src/systems/knowledge/components/knowledge-list-panel.tsx
  • web/src/systems/knowledge/lib/knowledge-formatters.ts
  • web/src/systems/network/index.ts
  • web/src/systems/session/adapters/session-api.test.ts
  • web/src/systems/session/adapters/session-api.ts
  • web/src/systems/session/hooks/use-session-actions.test.tsx
  • web/src/systems/session/hooks/use-session-actions.ts
  • web/src/systems/session/index.ts
  • web/src/systems/session/mocks/fixtures.ts
  • web/src/systems/session/mocks/handlers.ts
  • web/src/systems/session/types.ts
  • web/src/systems/settings/components/provider-card.tsx
  • web/src/systems/settings/lib/sections.ts
  • web/src/systems/settings/types.ts
  • web/src/systems/tasks/components/task-card.tsx
  • web/src/systems/tasks/components/task-editor-surface.tsx
  • web/src/systems/tasks/components/task-run-detail-header.tsx
  • web/src/systems/tasks/components/task-run-detail-panels.tsx
  • web/src/systems/tasks/components/tasks-dashboard-active-runs.tsx
  • web/src/systems/tasks/components/tasks-dashboard-queue-health.tsx
  • web/src/systems/tasks/components/tasks-dashboard-status-breakdown.tsx
  • web/src/systems/tasks/components/tasks-detail-children-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-dependencies-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-header.tsx
  • web/src/systems/tasks/components/tasks-detail-overview-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-preview-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-runs-panel.tsx
  • web/src/systems/tasks/components/tasks-empty-state.tsx
  • web/src/systems/tasks/components/tasks-inbox-item.tsx
  • web/src/systems/tasks/components/tasks-list-row.tsx
  • web/src/systems/tasks/components/tasks-multi-agent-panel.tsx
✅ Files skipped from review due to trivial changes (11)
  • web/src/systems/network/index.ts
  • internal/api/core/handlers_internal_test.go
  • internal/api/contract/responses.go
  • internal/api/contract/contract.go
  • web/src/systems/session/types.ts
  • web/src/components/sidebar-nav-classes.ts
  • web/src/systems/session/mocks/fixtures.ts
  • web/src/lib/kind-colors.ts
  • web/src/systems/settings/lib/sections.ts
  • web/src/components/app-sidebar.tsx
  • packages/ui/src/components/stories/pill.stories.tsx
🚧 Files skipped from review as they are similar to previous changes (20)
  • web/src/systems/daemon/hooks/use-daemon-health.ts
  • web/src/systems/tasks/components/tasks-dashboard-queue-health.tsx
  • web/src/systems/tasks/components/tasks-dashboard-status-breakdown.tsx
  • web/src/storybook/packages-ui-storybook-config.test.ts
  • web/src/systems/tasks/components/tasks-empty-state.tsx
  • web/src/systems/tasks/components/tasks-inbox-item.tsx
  • web/src/systems/tasks/components/tasks-dashboard-active-runs.tsx
  • web/src/systems/tasks/components/tasks-list-row.tsx
  • web/src/systems/tasks/components/tasks-detail-overview-panel.tsx
  • web/src/systems/knowledge/components/knowledge-list-panel.tsx
  • web/src/systems/tasks/components/tasks-multi-agent-panel.tsx
  • web/src/systems/tasks/components/tasks-detail-runs-panel.tsx
  • web/src/systems/tasks/components/task-card.tsx
  • packages/ui/src/components/pill-group.tsx
  • packages/ui/src/components/stories/pill-group.stories.tsx
  • web/src/systems/settings/components/provider-card.tsx
  • web/src/systems/tasks/components/tasks-detail-children-panel.tsx
  • web/src/systems/bridges/components/bridge-detail-panel.tsx
  • packages/ui/src/components/pill.test.tsx
  • web/src/systems/tasks/components/task-editor-surface.tsx

Comment thread internal/cli/client_test.go Outdated
Comment thread internal/cli/session_test.go
Comment thread internal/session/repair.go Outdated
Comment thread packages/ui/src/tokens.css
Comment thread web/src/systems/session/adapters/session-api.ts
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