refactor: improve tool calls ui#22
Conversation
|
Caution Review failedPull request was closed or merged during review WalkthroughStabilizes chat row objects to reduce virtualizer churn during streaming; adds a CopyButton (messages, code blocks) and tests; replaces spinner with a live elapsed-time processing indicator; introduces a memoized ToolGroupSection; adds truncation toggles in tool renderers and a tone/icon system for tools. Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Nitpick comments (6)
web/src/systems/session/components/tool-renderers/write-content.tsx (1)
38-47: Consider making this a true expand/collapse toggle.The control only expands once (
setShowFull(true)), so users can’t collapse back without rerendering the row.♻️ Suggested toggle update
- {isTruncated && ( + {content.length > TRUNCATE_THRESHOLD && ( <button type="button" - onClick={() => setShowFull(true)} + onClick={() => setShowFull((prev) => !prev)} className="flex items-center gap-1 text-[11px] text-[color:var(--color-text-tertiary)] hover:text-[color:var(--color-text-secondary)] transition-colors" > <ChevronsUpDown className="size-3" /> - Show full content ({content.length.toLocaleString()} chars) + {showFull + ? "Show less content" + : `Show full content (${content.length.toLocaleString()} chars)`} </button> )}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/components/tool-renderers/write-content.tsx` around lines 38 - 47, The "Show full content" control only sets showFull to true once (using setShowFull(true)) so it never collapses; change the handler to toggle the existing showFull state (e.g., setShowFull(prev => !prev>) and update the button label/icon based on showFull/isTruncated (use "Show full content" with the down chevron when collapsed and "Collapse" with the up chevron when expanded) so the button becomes a true expand/collapse toggle; update references in this component to use the isTruncated and showFull state consistently (and adjust the ChevronsUpDown usage to reflect the two states).web/src/systems/session/components/tool-renderers/edit-content.tsx (2)
7-10: Consider extracting shared truncation UI logic used by both tool renderers.
edit-content.tsxandwrite-content.tsxnow carry near-identical expand/truncate behavior; a shared helper/component will reduce drift and keep thresholds/button behavior aligned.Also applies to: 21-23, 28-29
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/components/tool-renderers/edit-content.tsx` around lines 7 - 10, Both edit-content.tsx (EditContent) and write-content.tsx (WriteContent) duplicate the same expand/truncate UI (TRUNCATE_THRESHOLD, showFull state, toggle button and truncated substring logic); extract that into a single reusable unit (either a TruncatableText component or useTruncation hook) that accepts the text (message.content), threshold (default to TRUNCATE_THRESHOLD), and optional button labels/props, and returns/render the truncated view and toggle control; then replace the duplicated logic in EditContent and WriteContent to consume the shared component/hook and remove the local TRUNCATE_THRESHOLD, showFull and setShowFull logic from those files to keep behavior aligned.
57-66: Optional UX polish: make “Show full content” reversible.This currently expands only once; a toggle gives users better control when comparing large diffs.
♻️ Suggested toggle update
- {isTruncated && ( + {(oldStr.length > TRUNCATE_THRESHOLD || newStr.length > TRUNCATE_THRESHOLD) && ( <button type="button" - onClick={() => setShowFull(true)} + onClick={() => setShowFull((prev) => !prev)} className="flex items-center gap-1 text-[11px] text-[color:var(--color-text-tertiary)] hover:text-[color:var(--color-text-secondary)] transition-colors" > <ChevronsUpDown className="size-3" /> - Show full content + {showFull ? "Show less content" : "Show full content"} </button> )}🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/components/tool-renderers/edit-content.tsx` around lines 57 - 66, The "Show full content" button currently only expands (onClick={() => setShowFull(true)}) and isn't reversible; change its handler to toggle the state (e.g., setShowFull(prev => !prev)) and update the rendered label/icon based on the current showFull state so the button reads "Show full content" when collapsed and "Collapse content" (or similar) when expanded; refer to the isTruncated flag and the setShowFull setter in the component to locate where to add the toggle logic and conditional label/icon rendering.web/src/systems/session/components/message-markdown.tsx (1)
66-98: Consider extracting shared copy button logic.
CodeCopyButtonhere andMessageCopyButtoninmessage-bubble.tsxshare nearly identical logic (state, timer cleanup, icon swap). Consider extracting a reusableCopyButtoncomponent to reduce duplication.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/components/message-markdown.tsx` around lines 66 - 98, Both CodeCopyButton and MessageCopyButton duplicate the same copy-state, timer cleanup, and icon swap logic; extract a reusable CopyButton component that encapsulates COPY_RESET_MS, timerRef management, useEffect cleanup, copied state, and handleCopy (which writes to navigator.clipboard and toggles copied) and accept props for the code string plus render props or children to render the appropriate icons/styles; replace CodeCopyButton and MessageCopyButton with this new CopyButton component (passing code and className/aria-label) to remove duplication while preserving existing behavior.web/src/systems/session/lib/tool-labels.ts (1)
28-34: Note:getToolToneandtoolToneClassare not exported from the session system's public API.Per the context snippet from
index.ts, these functions are internal-only. If other systems need tone-based styling in the future, consider adding them to the public barrel export.Also applies to: 36-47
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/lib/tool-labels.ts` around lines 28 - 34, getToolTone and toolToneClass are currently internal to the session system (not exported) but the review notes they may be useful externally; to fix this, decide whether they should be part of the public API and if so add them to the session system's barrel export (index.ts) so other packages can import them, or explicitly document/keep them internal if not intended for public use—update the export list in index.ts to include getToolTone and toolToneClass (or leave as-is and add a comment indicating intentional internal-only status).web/src/systems/session/components/tool-call-card.tsx (1)
71-73: Tooltip logic is Bash-specific; other tools with truncated summaries won't show tooltips.The tooltip for truncated content only triggers for
Bashtools. Other tools (likeRead,Write,Grep) also truncate at 60 characters viagetToolCompactSummarybut won't display a tooltip with the full value. This may be intentional given Bash commands are typically longer, but worth confirming.Also applies to: 165-183
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/components/tool-call-card.tsx` around lines 71 - 73, The tooltip decision is currently Bash-specific (rawCommand / showCommandTooltip) so other tools that use getToolCompactSummary and truncate at 60 chars never get a full-value tooltip; update the logic in tool-call-card to compute a generic fullText for the tool (e.g., for Bash use message.toolInput?.command, otherwise derive the full string from message.toolInput or the full output used by getToolCompactSummary) and then set showCommandTooltip by comparing fullText.length against the same truncation threshold (60) used by getToolCompactSummary; apply the same change in both places referenced (the rawCommand logic around rawCommand/showCommandTooltip and the similar block at lines ~165-183) and use the unified symbol (fullText / showCommandTooltip) so all tools get a tooltip when truncated.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/src/systems/session/components/message-bubble.tsx`:
- Around line 40-45: The handleCopy implementation currently voids
navigator.clipboard.writeText and doesn't handle failures; update handleCopy
(used in message-bubble.tsx and in the shared CopyButton/CodeCopyButton) to
await or attach a .then/.catch to navigator.clipboard.writeText(text), only call
setCopied(true) and start/clear timerRef on success, and in the catch branch
setCopied(false) and surface or log the error (e.g., processLogger/console.error
or a UI fallback) so clipboard permission or write failures are handled
gracefully; keep useCallback and dependencies (text, timerRef, COPY_RESET_MS)
consistent when you refactor into the shared CopyButton.
- Around line 93-100: The MessageCopyButton is rendered even when
message.content is empty; update the render so the copy button
(MessageCopyButton) and its enclosing div (currently the div with className
"mt-1.5 flex items-center justify-end gap-2") are only output when
message.content is non-empty (or alternatively guard MessageCopyButton with a
truthy check on message.content), and keep timestamp rendering as before; locate
the JSX around message.content and the div/timestamp block in message-bubble.tsx
and wrap or conditionally render the div/MessageCopyButton based on
message.content.
In `@web/src/systems/session/components/message-markdown.tsx`:
- Around line 76-81: The handleCopy callback currently calls
navigator.clipboard.writeText without handling rejections, causing
setCopied(true) to run even when copying fails; update handleCopy to await or
attach a .then/.catch to navigator.clipboard.writeText(code) and only call
setCopied(true) and start/assign the timerRef timeout (COPY_RESET_MS) on
success, while on failure ensure the copied state is not set (or set to false)
and optionally log or surface the error; keep timerRef clearing logic but only
start the reset timeout after a successful write.
In `@web/src/systems/session/lib/tool-labels.ts`:
- Around line 75-88: Tests do not cover semantic fallback branches in
getToolIcon; add unit tests that call getToolIcon with a missing TOOL_ICONS
entry and a toolInput object to assert the correct icon is returned: supply
toolInput containing "command" to expect Terminal, "file_path" and "filePath" to
expect FileText, "pattern" to expect Search, and "url" and "query" to expect
Globe; also include a case with no matching properties to assert the default
Wrench is returned. Mock or stub TOOL_ICONS so the direct lookup misses, import
getToolIcon and the Lucide icon symbols (Terminal, FileText, Search, Globe,
Wrench) and add explicit assertions for each branch.
---
Nitpick comments:
In `@web/src/systems/session/components/message-markdown.tsx`:
- Around line 66-98: Both CodeCopyButton and MessageCopyButton duplicate the
same copy-state, timer cleanup, and icon swap logic; extract a reusable
CopyButton component that encapsulates COPY_RESET_MS, timerRef management,
useEffect cleanup, copied state, and handleCopy (which writes to
navigator.clipboard and toggles copied) and accept props for the code string
plus render props or children to render the appropriate icons/styles; replace
CodeCopyButton and MessageCopyButton with this new CopyButton component (passing
code and className/aria-label) to remove duplication while preserving existing
behavior.
In `@web/src/systems/session/components/tool-call-card.tsx`:
- Around line 71-73: The tooltip decision is currently Bash-specific (rawCommand
/ showCommandTooltip) so other tools that use getToolCompactSummary and truncate
at 60 chars never get a full-value tooltip; update the logic in tool-call-card
to compute a generic fullText for the tool (e.g., for Bash use
message.toolInput?.command, otherwise derive the full string from
message.toolInput or the full output used by getToolCompactSummary) and then set
showCommandTooltip by comparing fullText.length against the same truncation
threshold (60) used by getToolCompactSummary; apply the same change in both
places referenced (the rawCommand logic around rawCommand/showCommandTooltip and
the similar block at lines ~165-183) and use the unified symbol (fullText /
showCommandTooltip) so all tools get a tooltip when truncated.
In `@web/src/systems/session/components/tool-renderers/edit-content.tsx`:
- Around line 7-10: Both edit-content.tsx (EditContent) and write-content.tsx
(WriteContent) duplicate the same expand/truncate UI (TRUNCATE_THRESHOLD,
showFull state, toggle button and truncated substring logic); extract that into
a single reusable unit (either a TruncatableText component or useTruncation
hook) that accepts the text (message.content), threshold (default to
TRUNCATE_THRESHOLD), and optional button labels/props, and returns/render the
truncated view and toggle control; then replace the duplicated logic in
EditContent and WriteContent to consume the shared component/hook and remove the
local TRUNCATE_THRESHOLD, showFull and setShowFull logic from those files to
keep behavior aligned.
- Around line 57-66: The "Show full content" button currently only expands
(onClick={() => setShowFull(true)}) and isn't reversible; change its handler to
toggle the state (e.g., setShowFull(prev => !prev)) and update the rendered
label/icon based on the current showFull state so the button reads "Show full
content" when collapsed and "Collapse content" (or similar) when expanded; refer
to the isTruncated flag and the setShowFull setter in the component to locate
where to add the toggle logic and conditional label/icon rendering.
In `@web/src/systems/session/components/tool-renderers/write-content.tsx`:
- Around line 38-47: The "Show full content" control only sets showFull to true
once (using setShowFull(true)) so it never collapses; change the handler to
toggle the existing showFull state (e.g., setShowFull(prev => !prev>) and update
the button label/icon based on showFull/isTruncated (use "Show full content"
with the down chevron when collapsed and "Collapse" with the up chevron when
expanded) so the button becomes a true expand/collapse toggle; update references
in this component to use the isTruncated and showFull state consistently (and
adjust the ChevronsUpDown usage to reflect the two states).
In `@web/src/systems/session/lib/tool-labels.ts`:
- Around line 28-34: getToolTone and toolToneClass are currently internal to the
session system (not exported) but the review notes they may be useful
externally; to fix this, decide whether they should be part of the public API
and if so add them to the session system's barrel export (index.ts) so other
packages can import them, or explicitly document/keep them internal if not
intended for public use—update the export list in index.ts to include
getToolTone and toolToneClass (or leave as-is and add a comment indicating
intentional internal-only status).
🪄 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: 73d4a4eb-5dc3-4c7a-b391-3767222a0263
📒 Files selected for processing (10)
web/src/systems/session/components/chat-view.tsxweb/src/systems/session/components/message-bubble.test.tsxweb/src/systems/session/components/message-bubble.tsxweb/src/systems/session/components/message-markdown.tsxweb/src/systems/session/components/processing-indicator.tsxweb/src/systems/session/components/tool-call-card.tsxweb/src/systems/session/components/tool-group-section.tsxweb/src/systems/session/components/tool-renderers/edit-content.tsxweb/src/systems/session/components/tool-renderers/write-content.tsxweb/src/systems/session/lib/tool-labels.ts
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
web/src/systems/session/components/copy-button.test.tsx (1)
11-18: Consider restoringnavigator.clipboardafter each test for stronger isolation.The current overrides work, but restoring the original descriptor reduces cross-test leakage risk.
Also applies to: 22-25, 50-53
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@web/src/systems/session/components/copy-button.test.tsx` around lines 11 - 18, Save the original navigator.clipboard descriptor before tests override it (e.g., in beforeEach alongside vi.useFakeTimers()) and in afterEach restore that original descriptor (in addition to vi.restoreAllMocks() and vi.useRealTimers()) so the tests fully revert navigator.clipboard; update the setup/teardown code that manipulates navigator.clipboard (the places referenced around beforeEach/afterEach and the other overrides at the noted ranges) to capture and reassign the original descriptor to ensure isolation.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@web/src/systems/session/components/copy-button.test.tsx`:
- Line 8: The test imports CopyButton using a relative path; update the import
to use the project path-alias (`@/`*) instead of "./copy-button" so it follows the
web import policy—replace the relative import of the CopyButton symbol with the
equivalent `@/`... alias import that points to the same component module and run
the tests to ensure resolution works.
In `@web/src/systems/session/components/message-markdown.tsx`:
- Line 19: Replace the relative import of CopyButton in message-markdown.tsx
with the project path alias: change the import from "./copy-button" to the
equivalent alias path under @ (e.g. "@/systems/session/components/copy-button")
so the CopyButton symbol is imported via the `@/`* mapping instead of a relative
path.
- Around line 99-103: The copy button in MessageMarkdown is currently hidden via
"opacity-0" and only revealed on hover; make it reachable by keyboard users by
adding focus/focus-visible variants so it becomes visible when focused. Update
the class list for the copy button element (the JSX that currently includes
"opacity-0 transition-opacity duration-200 group-hover/codeblock:opacity-100")
to also include "focus:opacity-100 focus-visible:opacity-100" (or the equivalent
"group-focus/codeblock:opacity-100" if using a group focus approach) so tabbing
to the button shows it.
---
Nitpick comments:
In `@web/src/systems/session/components/copy-button.test.tsx`:
- Around line 11-18: Save the original navigator.clipboard descriptor before
tests override it (e.g., in beforeEach alongside vi.useFakeTimers()) and in
afterEach restore that original descriptor (in addition to vi.restoreAllMocks()
and vi.useRealTimers()) so the tests fully revert navigator.clipboard; update
the setup/teardown code that manipulates navigator.clipboard (the places
referenced around beforeEach/afterEach and the other overrides at the noted
ranges) to capture and reassign the original descriptor to ensure isolation.
🪄 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: 2369218c-7c7c-4502-9f7e-a8dedbdc221e
⛔ Files ignored due to path filters (10)
.compozY/tasks/tool-ui/reviews-001/issue_001.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_002.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_003.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_004.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_005.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_006.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_007.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_008.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_009.mdis excluded by!**/*.md.compozY/tasks/tool-ui/reviews-001/issue_010.mdis excluded by!**/*.md
📒 Files selected for processing (9)
web/src/systems/session/components/copy-button.test.tsxweb/src/systems/session/components/copy-button.tsxweb/src/systems/session/components/message-bubble.test.tsxweb/src/systems/session/components/message-bubble.tsxweb/src/systems/session/components/message-markdown.tsxweb/src/systems/session/components/tool-call-card.test.tsxweb/src/systems/session/components/tool-call-card.tsxweb/src/systems/session/lib/tool-labels.test.tsweb/src/systems/session/lib/tool-labels.ts
🚧 Files skipped from review as they are similar to previous changes (4)
- web/src/systems/session/components/message-bubble.test.tsx
- web/src/systems/session/components/message-bubble.tsx
- web/src/systems/session/components/tool-call-card.tsx
- web/src/systems/session/lib/tool-labels.ts
## Release v0.0.1 This PR prepares the release of version v0.0.1. ### Changelog ## 0.0.1 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.1 This PR prepares the release of version v0.0.1. ### Changelog ## 0.0.1 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.2 This PR prepares the release of version v0.0.2. ### Changelog ## 0.0.2 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release - Fix release process ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows - Improve suite speed Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.2 This PR prepares the release of version v0.0.2. ### Changelog ## 0.0.2 - 2026-05-26 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release - Fix release process - Fix release sync - Decouple release dry-run npm auth - Persist web assets git auth ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows - Improve suite speed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated web assets dependency to a newer version for improved stability and performance. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/compozy/agh/pull/211?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
## Release v0.0.2 This PR prepares the release of version v0.0.2. ### Changelog ## 0.0.2 - 2026-05-27 ### Other Changes - Lessons learned ### ♻️ Refactoring - Project structure (#7) - Kb improvements (#12) - Rename spaces to channels (#17) - Add extensions gaps (#21) - Improve tool calls ui (#22) - Remove web app header - Module improvements (#29) - Memory improvements (#35) - Storybook for web and ui (#38) - Enable AGH network by default for new installs (#57) - Hermes adjustments (#69) - Badges design (#84) - Storybook scenario and logos gallery - Migrate typescript tests (#114) - Internal go packages (#120) - Ui patterns (#127) - Improve e2e tests (#130) - Ui redesign - Workspace isolation across runtime surfaces (#145) - Prod ready applies (#162) - Tool card ui (#164) - Alpha on logo - Prod ready features (#167) - Thread sheet (#202) ### 🎉 Features - Implement config foundation packages - Implement sqlite store package - Add ACP client package - Add session lifecycle manager - Implement observe package - Add daemon composition root - Add uds api server - Implement cli package - Add http api server - Add system design - Add foundation types, schemas, and layout shell for web client - Add daemon health polling and agent sidebar systems for web client - Add session system CRUD, streaming core, and session store for web client - Add chat view, messages, and composer tests for web client - Add tool cards and renderers for web client - Add file-backed memory store core - Scaffold memory session seams - Add memory dream consolidation service - Wire memory assembler into daemon - Add memory api and cli - New skills system (#1) - Add workspace entity (#5) - Add new skill capabilities (#8) - Web ui v2 (#9) - Improve hooks system (#10) - Session resilience (#11) - Add extensability (#13) - Add automation (#16) - Add channels (#14) - Add network implementation (#15) - Add network, bridges and automations web pages (#18) - Ext registry (#20) - Add core tasks (#19) - Bridge adapters (#23) - Add site (#26) - Add ext refac and sandbox (#25) - Settings ui (#37) - Tasks ui (#36) - Harness improvements (#44) - Agent capabilities (#49) - Redesign ui (#48) - Unify capability (#53) - Redesign network workspace (#59) - Add task deletion and split session delete from stop (#58) - Session provider selection (#60) - Production grade adjustments (#66) - Autonomous system (#75) - Add agent session route (#80) - Tools registry (#85) - Agents soul (#88) - Add network threads (#105) - Orchestration improvements (#106) - Memory v2 (#108) - Agent categories (#113) - Providers model (#118) - Add canonical AGH bundled skill (#143) - Onboarding and improvements (#198) - Onboarding and improvements (#201) ### 🐛 Bug Fixes - Review round - Review rounds - Resolve memory extensibility review batch - Embed web into daemon - Defaults agents - Acp integration (#4) - Lint errors - Prd folder - Remove orphan web actions and dead surfaces (#55) - Qa testing and fixes (#73) - New review rounds (#82) - Security audit (#90) - Release qa round (#95) - Add missing tools (#141) - New qa round (#147) - Advanced qa round (#149) - Homebrew tap - Final review round (#151) - Daemon healthy - Reasoning models (#158) - Lint errors (#160) - Review round (#168) - Release adjustments (#171) - Stabilize release ci fixtures - Stabilize release integration gate - Stabilize release verify gates - Stabilize release integration flows - Stabilize release verify gates - Stabilize main verify shutdown - Ignore stale acpmock cancel - Marketplace search focus and filtering (#193) - Website video - Workspace command select ### 📚 Documentation - Update agents.md - Update prd - Update skills - Update compozy tasks - Update compozy - Update compozy - Add new skills - Archive prd - Update prds - Update rfc - Update prds - Update prds - Add automation prd - Channels prd - Update prd - Update prd - New prds - Archive prds - Bridges adapters prd - Sandbox prd - Update - Archive prd - Update - Add new prd - New design - Update prd - Archive prds - Update prds - Tasks-ui prd tasks - Update prd - Update design docs - Agent capabilities prd - Improve site docs - Remove old design references - Udpate - Autonomous prd - Update skills - Blog design - Agent sould prd - Final qa plan - Update - Remove codex ledgers from gitignore - Remove not needed files - Udpate ledger - Update cy-codex-loop skill - Orchestration improves prd - Update prds - Orch improvs prd - Memv2 prd - Providers model prd - Update refacs prd - New design proposal - Update rules - Update skills - New blog posts (#173) - Format docs - Remove old design files - Remove old - Skeeper update ### 📦 Build System - Initial structure - Commitlint - Frontend base structure - Update vscode settings - Add subagents - Coderabbit - Prd and tooling - Bun lock - Lint tooling - Copy.md and tooling adjusts - Add repoclone rc - Upgrade skeeper to v0.2.0 - Update go.mod - Adopt task artifacts into skeeper - Sync codex plans with skeeper - Skeeper lock - Skeeper lock - New skills - Skeeper lock - Skeeper lock - Skeeper lock - Update deps and go - Regenerate daytona sidecar assets for go 1.26.3 - Fix cliff - Ignore docs on fmt - Build web assets before goreleaser - Extend release dry-run timeout - Fix release dry-run token contract ### 🔧 CI/CD - Lint errors - Fint release pr - Fix goreleaser - Fix release - Fix release process - Fix release sync - Decouple release dry-run npm auth - Persist web assets git auth - Require npm auth before release merge ### 🧪 Testing - Add e2e tests (#27) - Qa rounds (#78) - Improve test suite (#138) - Harden daemon-served restart reloads - Harden daemon-served readiness waits - Stabilize dashboard focus assertion - Stabilize release integration gates - Stabilize release e2e markers - Stabilize release e2e flows - Improve suite speed <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Chores** * Updated dependencies to latest versions. <!-- review_stack_entry_start --> [](https://app.coderabbit.ai/change-stack/compozy/agh/pull/214?utm_source=github_walkthrough&utm_medium=github&utm_campaign=change_stack) <!-- review_stack_entry_end --> <!-- end of auto-generated comment: release notes by coderabbit.ai --> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Summary by CodeRabbit
New Features
Improvements
Tests