refactor: ui patterns#127
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (4)
🚧 Files skipped from review as they are similar to previous changes (4)
WalkthroughThis PR is a comprehensive refactor: it introduces new design tokens, replaces and expands all UI primitives, fully migrates app/site/web/tests/E2E and Storybook to the new contracts and slots, removes all legacy primitives, rewrites barrel/type exports, and brings exhaustive coverage in tests and stories. ChangesDesign-system, Custom Primitives, API Overhaul, and Migration
Sequence Diagram(s)No sequence diagram generated for this PR: the changes focus on extensive refactoring and migration of UI primitives, slots, and contracts instead of introducing multi-component integrated feature flows with new sequential control paths. Estimated code review effort🎯 5 (Critical) | ⏱️ ~120 minutes Possibly related PRs
✨ Finishing Touches📝 Generate docstrings
|
There was a problem hiding this comment.
Actionable comments posted: 12
Note
Due to the large number of review comments, Critical, Major severity comments were prioritized as inline comments.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
packages/ui/src/components/stories/sidebar.stories.tsx (1)
209-215:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winReduced-motion story copy is stale after the motion removal.
Sidebarno longer usesmotion/react, so this description now overstates behavior that the runtime does not implement. Please update this story text—and the matching component description in this file—to describe the current collapse behavior instead of “motion” or “width animation”.As per coding guidelines, "Treat runtime truth as stronger than copy preference: implemented code, tests, and release artifacts beat aspirational wording".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/sidebar.stories.tsx` around lines 209 - 215, Update the ReducedMotion story copy and the matching component description to remove references to motion/react and "width animation" and instead state the actual current behavior: that Sidebar collapse is instantaneous when UIProvider reducedMotion='always' (no runtime animation is performed). Edit the ReducedMotion Story object (symbol ReducedMotion) and any adjacent description strings in this file to replace wording like "motion", "width animation", or "collapse transition" with a concise statement that collapse happens instantly/no animation is applied by the runtime.packages/ui/src/components/separator.tsx (1)
71-80:⚠️ Potential issue | 🟠 Major | ⚡ Quick win
styleis ignored whenlabelis absent.Line 71-80 returns
SeparatorPrimitivewithout forwarding the extractedstyleprop, so consumers cannot style unlabeled separators despiteSeparatorPropsexposingstyle.Suggested patch
return ( <SeparatorPrimitive data-slot="separator" orientation={orientation} + style={style} className={cn( "shrink-0 bg-border data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch", className )} {...props} /> );🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/separator.tsx` around lines 71 - 80, The Separator component is not forwarding the extracted style prop to the rendered SeparatorPrimitive, so consumers cannot style unlabeled separators; update the component (where SeparatorPrimitive is returned) to include the extracted style prop in the JSX spread/props passed to SeparatorPrimitive (ensure the style from SeparatorProps or the local destructured variable is included alongside className, orientation and {...props}), and verify this applies both when label is present and absent so the exposed style prop is honored.
🟡 Minor comments (35)
packages/ui/src/components/stories/sonner.stories.tsx-85-85 (1)
85-85:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in Storybook docs text.
There’s an extra space before the comma in the sentence (
"Interaction test , clicking..."), which reads as a copy error in docs.Suggested fix
- "Interaction test , clicking the trigger fires `toast.error` and the toast body renders with the danger message.", + "Interaction test, clicking the trigger fires `toast.error` and the toast body renders with the danger message.",As per coding guidelines, "COPY.md (repo root) is the authoritative product-language specification for every AGH surface - marketing copy, docs prose, release copy, package metadata, UI microcopy, CLI help, and public social/SEO/OpenGraph text".
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/sonner.stories.tsx` at line 85, Fix the punctuation typo in the Storybook story description: locate the string literal "Interaction test , clicking the trigger fires `toast.error` and the toast body renders with the danger message." in packages/ui/src/components/stories/sonner.stories.tsx (the interaction test description) and remove the extra space before the comma so it reads "Interaction test, clicking the trigger fires `toast.error` and the toast body renders with the danger message."; update the story text accordingly to match COPY.md style.packages/ui/src/components/field.tsx-176-189 (1)
176-189:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winPreserve valid falsy children and branch only on actual message content.
Line 176 and Line 191 use
!content, which treats valid React children like0/""as missing. Also, the list/single-message branch currently counts errors without messages.Suggested fix
- if (!content && errors?.length) { - const uniqueErrors = [...new Map(errors.map(error => [error?.message, error])).values()]; - - content = - uniqueErrors.length === 1 ? ( - uniqueErrors[0]?.message - ) : ( - <ul className="ml-4 flex list-disc flex-col gap-1"> - {uniqueErrors.map(error => - error?.message ? <li key={error.message}>{error.message}</li> : null - )} - </ul> - ); + if (content == null && errors?.length) { + const messages = [ + ...new Set(errors.map(error => error?.message).filter((message): message is string => Boolean(message))), + ]; + + content = + messages.length === 1 ? ( + messages[0] + ) : ( + <ul className="ml-4 flex list-disc flex-col gap-1"> + {messages.map(message => ( + <li key={message}>{message}</li> + ))} + </ul> + ); } - if (!content) { + if (content == null) { return null; }Also applies to: 191-193
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/field.tsx` around lines 176 - 189, The current logic uses a falsy check (!content) and counts errors without messages; update the branch to only run when content is null or undefined (use content == null) and compute uniqueErrors from errors filtered to those with a non-empty message (e.g., filter(e => e?.message)). Then derive uniqueErrors via the Map de-dupe as before and choose the single-message vs list rendering based on uniqueErrors.length; apply the same null-check change where content is tested again (the other branch referenced around the same area).packages/ui/src/components/stories/empty.stories.tsx-15-15 (1)
15-15:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix docs description copy typo and phrasing on Line 15.
There is an extra space before the comma and
icon wellreads like a typo, which makes the docs text look broken.Suggested copy fix
- "Empty state , icon well + muted title + optional description + optional action(s).", + "Empty state: icon + muted title + optional description + optional action(s).",As per coding guidelines, "
COPY.md(repo root) is the authoritative product-language specification..." and "ReadCOPY.mdbefore writing or changing public copy."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/empty.stories.tsx` at line 15, Fix the story description string in packages/ui/src/components/stories/empty.stories.tsx by removing the stray space before the comma and correcting the phrasing so "icon well" reads clearly; update the description literal (the line containing "Empty state , icon well + muted title + optional description + optional action(s).") to a polished sentence such as "Empty state: icon well, muted title, optional description, and optional action(s)." to match COPY.md style.web/e2e/__tests__/tasks-coordinator-handoff.spec.ts-13-13 (1)
13-13:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winRemove space before comma.
Both line 13 and line 58 have incorrect punctuation with a space before the comma. In English, commas should not be preceded by a space.
📝 Proposed fix
- * 1. Creating a task is saved intent only , no run is queued, the lifecycle + * 1. Creating a task is saved intent only, no run is queued, the lifecycle-test("creating a task is saved intent , no run is enqueued and labels never imply autonomy", async ({ +test("creating a task is saved intent, no run is enqueued and labels never imply autonomy", async ({Also applies to: 58-58
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/e2e/__tests__/tasks-coordinator-handoff.spec.ts` at line 13, Remove the stray space before the comma in the inline test comment phrase "Creating a task is saved intent only , no run is queued" (and the identical incorrect punctuation later in the file) so the comma immediately follows the preceding word ("only,") and similarly fix the second occurrence; search for that exact comment phrase to locate and correct both instances in the test file.packages/site/components/landing/comparison.tsx-24-24 (1)
24-24:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation spacing in user-facing copy.
Line 24 and Line 51 include a space before the comma, which reads as a typo in the comparison table.
✏️ Suggested fix
- coordination: "None , single agent", + coordination: "None, single agent", ... - coordination: "agh-network/v0 , implemented", + coordination: "agh-network/v0, implemented",As per coding guidelines,
COPY.mdis the authoritative product-language specification for UI microcopy.Also applies to: 51-51
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/landing/comparison.tsx` at line 24, The user-facing copy strings in the comparison data contain an extra space before commas (e.g., the "coordination" property in the comparison data object and the analogous string used later) — update those string values to remove the space before the comma so they read "None, single agent" (and any other occurrences) and ensure the copy matches COPY.md; locate and edit the comparison data/const in components/landing/comparison.tsx (the object/array that contains the "coordination" key and the matching entry near the second occurrence) to fix the punctuation.packages/ui/src/components/stories/toggle.stories.tsx-15-15 (1)
15-15:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix typographical error in description.
There's an extra space before the comma after "text" in the component description.
📝 Proposed fix
- "Two-state button backed by Base UI. Compose with icons or text , use `ToggleGroup` for mutually exclusive or multi-select clusters.", + "Two-state button backed by Base UI. Compose with icons or text, use `ToggleGroup` for mutually exclusive or multi-select clusters.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/toggle.stories.tsx` at line 15, In the Toggle story description string in toggle.stories.tsx (the line containing "Two-state button backed by Base UI. Compose with icons or text , use `ToggleGroup`..."), remove the stray space before the comma after "text" so the phrase reads "icons or text, use `ToggleGroup`..." and commit the corrected string.packages/site/components/docs/page-actions/llm-copy-button.tsx-15-22 (1)
15-22:⚠️ Potential issue | 🟡 Minor | ⚡ Quick win
copyPendingdoes not cover the cache-hit path.On cached content, the handler returns before setting
copyPending, so the button is not actually gated during clipboard write for that branch.Suggested fix
export function LLMCopyButton({ markdownUrl }: LLMCopyButtonProps) { const [copyPending, setCopyPending] = useState(false); const [checked, onClick] = useCopyButton(async () => { - const cached = cache.get(markdownUrl); - if (cached) { - await navigator.clipboard.writeText(cached); - return; - } setCopyPending(true); try { + const cached = cache.get(markdownUrl); + if (cached) { + await navigator.clipboard.writeText(cached); + return; + } + const response = await fetch(markdownUrl); const content = await response.text(); cache.set(markdownUrl, content); await navigator.clipboard.writeText(content); } finally { setCopyPending(false); } });Also applies to: 29-29, 34-34
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/docs/page-actions/llm-copy-button.tsx` around lines 15 - 22, The handler returned early on a cache hit so copyPending isn't set during clipboard writes; modify the callback passed to useCopyButton (the function that reads cache.get(markdownUrl) and calls navigator.clipboard.writeText) to setCopyPending(true) before performing any clipboard write (including the cached branch) and ensure setCopyPending(false) is called after the write (use try/finally) so copyPending correctly represents the in-progress state for both cache-hit and miss paths.packages/site/lib/og/tokens.ts-23-23 (1)
23-23:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix truncation length accounting after switching to
"...".Line 23 now slices with
max - 1but appends a 3-character ellipsis, so output can exceedmaxand misbehave for small limits.Proposed fix
export function truncate(value: string | undefined, max: number): string { if (!value) return ""; + if (max <= 0) return ""; if (value.length <= max) return value; - return `${value.slice(0, max - 1).trimEnd()}...`; + const ellipsis = "..."; + if (max <= ellipsis.length) return ellipsis.slice(0, max); + return `${value.slice(0, max - ellipsis.length).trimEnd()}${ellipsis}`; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/lib/og/tokens.ts` at line 23, The truncation currently slices with value.slice(0, max - 1) but then appends a 3-char literal ("..."), causing output to exceed max and fail for small max values; update the logic in tokens.ts to account for the 3-character ellipsis: if value.length <= max return value; if max <= 3 return '.'.repeat(max) (or just return '...' for max===3 and '.' or '..' for smaller values); otherwise slice with value.slice(0, max - 3).trimEnd() and append '...'. Use the existing value and max variables and replace the current return expression accordingly.packages/site/app/llms.txt/route.ts-34-34 (1)
34-34:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in public llms.txt tagline (Line [34]).
There is an extra space before the comma (
agents ,) in user-facing copy.✏️ Proposed fix
- "> An open workplace for AI agents , the runtime, the agh-network/v0 protocol, and the blog.", + "> An open workplace for AI agents, the runtime, the agh-network/v0 protocol, and the blog.",As per coding guidelines,
COPY.md (repo root) is the authoritative product-language specification for every AGH surface - marketing copy, docs prose, release copy, package metadata, UI microcopy, CLI help, and public social/SEO/OpenGraph text.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/app/llms.txt/route.ts` at line 34, The tagline string in packages/site/app/llms.txt/route.ts contains an extra space before the comma ("agents ,"); edit the string literal used for the public llms.txt tagline so it reads "AI agents, the runtime, the agh-network/v0 protocol, and the blog." (remove the space before the comma) and ensure this exact corrected copy matches the product-language spec in COPY.md.packages/site/lib/site-config.ts-5-5 (1)
5-5:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in site description copy.
Line 5 has an extra space before the comma (
"automation , connected"), which degrades metadata quality.Suggested patch
- "An open workplace for AI agents. AGH runs Claude Code, OpenClaw, and Hermes as durable sessions with memory, autonomy, tools, and automation , connected on agh-network/v0 channels where they find each other, share capabilities, and close work with receipts.", + "An open workplace for AI agents. AGH runs Claude Code, OpenClaw, and Hermes as durable sessions with memory, autonomy, tools, and automation, connected on agh-network/v0 channels where they find each other, share capabilities, and close work with receipts.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/lib/site-config.ts` at line 5, The site description string contains a punctuation typo: remove the extra space before the comma in the phrase "automation , connected" so it becomes "automation, connected"; locate the site description value in packages/site/lib/site-config.ts (the string that begins "An open workplace for AI agents. AGH runs Claude Code, OpenClaw, and Hermes as durable sessions with memory, autonomy, tools, and automation , connected on agh-network/v0 channels...") and update that literal to the corrected punctuation.packages/site/app/blog/metadata.ts-6-6 (1)
6-6:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in public metadata description.
Line 6 has
runtime ,(extra space before comma), which reads as a copy error in SEO metadata.Proposed fix
- description: "Field notes from the runtime , protocol design, engineering, and release receipts.", + description: "Field notes from the runtime, protocol design, engineering, and release receipts.",As per coding guidelines,
COPY.mdis the authoritative product-language specification for public text surfaces.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/app/blog/metadata.ts` at line 6, Fix the punctuation typo in the public metadata by removing the stray space before the comma in the description string: update the metadata object's description field (the "description" value in metadata in packages/site/app/blog/metadata.ts) from "Field notes from the runtime , protocol design, engineering, and release receipts." to use correct punctuation per COPY.md (i.e., "Field notes from the runtime, protocol design, engineering, and release receipts."). Ensure no other unintended spacing exists in that string.packages/site/lib/__tests__/public-link-safety.test.ts-66-66 (1)
66-66:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix duplicated ellipsis guard in URL concreteness check.
Line 66 checks
"..."twice, so Unicode ellipsis ("…") is not handled as intended.Proposed fix
function parseConcreteUrl(url: string): URL | null { - if (url.includes("...") || url.includes("...")) { + if (url.includes("...") || url.includes("…")) { return null; } return new URL(url); }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/lib/__tests__/public-link-safety.test.ts` at line 66, The condition currently checks url.includes("...") twice so the Unicode ellipsis isn’t covered; update the second check to url.includes("…") (or url.includes("\u2026")) so the if that inspects the url variable handles both three-dot and single-character ellipsis; locate the failing guard expression in the public-link-safety test where url.includes(...) is used and replace the duplicated literal with the Unicode ellipsis check to fix the concreteness check.packages/site/lib/__tests__/static-route-metadata.test.ts-16-16 (1)
16-16:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix the punctuation typo in the expected blog metadata description.
The expected copy currently has an extra space before the comma (
"runtime , protocol"), which bakes a typo into metadata validation.Suggested fix
- "Field notes from the runtime , protocol design, engineering, and release receipts." + "Field notes from the runtime, protocol design, engineering, and release receipts."As per coding guidelines,
COPY.mdis the authoritative product-language specification for public metadata text.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/lib/__tests__/static-route-metadata.test.ts` at line 16, Update the expected description string in the unit test static-route-metadata.test.ts to match COPY.md by removing the stray space before the comma in the phrase "runtime , protocol" so it reads "runtime, protocol"; locate and edit the test that contains the string "Field notes from the runtime , protocol design, engineering, and release receipts." and replace it with the corrected punctuation to ensure metadata validation uses the authoritative COPY.md text.packages/site/components/site/docs-header.tsx-76-77 (1)
76-77:⚠️ Potential issue | 🟡 Minor | ⚡ Quick win
getLinkItemKeycan produce duplicate keys when items share the same type and lack unique identifiers.The fallback to
item.typecreates a collision risk if multiple items lackurl,label, ortextproperties. While the current test configuration has all content-bearing items with unique URLs or labels, this is not guaranteed by the type system.Consider either:
- Ensuring all list items have a guaranteed unique property (preferred)
- Using a composite key with index as a last resort (e.g.,
`${item.type}-${index}`), though React discourages index-based keys when list order may changeApplies to lines 76–77, 92–97, and 183–188.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/site/docs-header.tsx` around lines 76 - 77, getLinkItemKey can produce duplicate keys when multiple items share the same type and lack url/label/text; update getLinkItemKey to accept an index fallback and return a composite key like `${item.type}-${index}` only as a last resort, then update all map usages (the mainItems => <NavbarLinkItem ...>, the other list maps around lines 92–97 and 183–188) to pass the array index into getLinkItemKey so each rendered <NavbarLinkItem> gets a stable unique key when items lack unique identifiers.packages/site/lib/blog.ts-10-10 (1)
10-10:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse natural punctuation in featured-image alt text.
Line 10 uses
"v0 , three peers..."(space before comma), which reads awkwardly in metadata and assistive narration. Please use standard punctuation.As per coding guidelines, `COPY.md` (repo root) is the authoritative product-language specification for every AGH surface.Suggested fix
- alt: "agh-network/v0 , three peers exchanging direct, receipt, and trace envelopes", + alt: "agh-network/v0, three peers exchanging direct, receipt, and trace envelopes",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/lib/blog.ts` at line 10, The featured image alt text contains a misplaced space before a comma ("agh-network/v0 , three peers..."); update the alt value used for the featured-image (the alt property) to use standard punctuation — e.g., change "agh-network/v0 , three peers exchanging direct, receipt, and trace envelopes" to "agh-network/v0, three peers exchanging direct, receipt, and trace envelopes" so assistive narration and metadata read naturally.packages/ui/src/components/stories/scroll-area.stories.tsx-27-27 (1)
27-27:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in the event summary copy.
Line 27 has an extra space before the comma (
"bash , listing..."), which reads as a typo. Use"bash, listing..."(or restore the dash form) for clean UI copy.Suggested fix
- summary: "tool_use · bash , listing repository files under /internal", + summary: "tool_use · bash, listing repository files under /internal",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/scroll-area.stories.tsx` at line 27, Change the event summary string in scroll-area.stories.tsx to remove the stray space before the comma: replace the value currently set to "tool_use · bash , listing repository files under /internal" with "tool_use · bash, listing repository files under /internal" (or restore the original dash form if preferred) so the UI copy reads correctly; update the summary string where it is defined in the stories file.packages/ui/src/components/stories/accordion.stories.tsx-33-35 (1)
33-35:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix the FAQ punctuation typo.
idle triggers ,reads like a typo in the rendered Storybook copy. Please replace it with normal punctuation so the sentence stays natural for docs consumers.As per coding guidelines, "TechSpecs, ADRs, code, commit messages, docs are always English."
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/accordion.stories.tsx` around lines 33 - 35, The FAQ string assigned to the answer property in the accordion story contains a punctuation typo ("idle triggers ,"); update the text in the answer value (the object with key answer in packages/ui/src/components/stories/accordion.stories.tsx) to use proper punctuation—e.g., change "idle triggers ," to "idle triggers," or rephrase the sentence to read naturally in English so the Storybook copy is correct.packages/ui/src/components/custom/stories/chat-message-bubble.stories.tsx-59-60 (1)
59-60:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation spacing in story copy.
There’s an extra space before the comma in two user-visible strings, which reads as a typo.
✏️ Proposed fix
- "I can see two candidates , stream.ts and map.ts. I'll extract the grouping into `groupToolCallsByTurn` and point the call site at it.", + "I can see two candidates, stream.ts and map.ts. I'll extract the grouping into `groupToolCallsByTurn` and point the call site at it.",- Two candidates , I'll extract the grouping into `groupToolCallsByTurn`. + Two candidates, I'll extract the grouping into `groupToolCallsByTurn`.As per coding guidelines,
COPY.mdis the authoritative product-language specification for docs prose and UI microcopy.Also applies to: 113-114
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/chat-message-bubble.stories.tsx` around lines 59 - 60, Fix the extra space before commas in the user-facing story copy: locate the string "I can see two candidates , stream.ts and map.ts. I'll extract the grouping into `groupToolCallsByTurn` and point the call site at it." in chat-message-bubble.stories.tsx (and the other two occurrences noted around lines 113-114) and remove the space before the comma so the text reads "I can see two candidates, stream.ts and map.ts..."; make the same punctuation correction in the other two user-visible strings and ensure the final copy aligns with COPY.md.packages/ui/src/components/stories/card.stories.tsx-87-87 (1)
87-87:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typos in
CardDescriptiontext.Lines 87 and 98 use
,, which reads as an editing artifact.✏️ Proposed fix
- <CardDescription>Run in-flight , 2 events in the last second.</CardDescription> + <CardDescription>Run in-flight, 2 events in the last second.</CardDescription> ... - <CardDescription>Idle , last activity 4m ago.</CardDescription> + <CardDescription>Idle, last activity 4m ago.</CardDescription>Also applies to: 98-98
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/card.stories.tsx` at line 87, The CardDescription strings contain stray space-comma sequences (" , ") that are punctuation typos; update the two occurrences inside the CardDescription components (the one currently reading "Run in-flight , 2 events in the last second." and the similar entry around line 98) to remove the extra space before the comma or rephrase so punctuation is correct (e.g., "Run in-flight, 2 events in the last second." or "Run in-flight — 2 events in the last second.").packages/ui/src/components/custom/stories/typing-dots.stories.tsx-13-13 (1)
13-13:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix docs copy typo (
indicator ,).Line 13 has an extra space before the comma, which reads like a typo in Storybook docs.
✏️ Proposed fix
- "Three-dot typing indicator , mirrors `.typing-dots` in `docs/design/web-inspiration/styles/app.css`. Relies on the `typing-bounce` keyframes in `packages/ui/src/tokens.css`.", + "Three-dot typing indicator, mirrors `.typing-dots` in `docs/design/web-inspiration/styles/app.css`. Relies on the `typing-bounce` keyframes in `packages/ui/src/tokens.css`.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/typing-dots.stories.tsx` at line 13, There's a typo in the story description string "Three-dot typing indicator , mirrors `.typing-dots` in `docs/design/web-inspiration/styles/app.css`. Relies on the `typing-bounce` keyframes in `packages/ui/src/tokens.css`" — remove the extra space before the comma so it reads "indicator, mirrors ..."; update the story text in typing-dots.stories.tsx where that description string is defined (referenced alongside `.typing-dots` and `typing-bounce`) to fix the punctuation.packages/ui/src/components/custom/stories/metric.stories.tsx-13-13 (1)
13-13:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix docs copy typo (
Metric card ,).Line 13 has an extra space before the comma.
✏️ Proposed fix
- "Metric card , mono eyebrow + Inter 24px/700 value + optional inline detail or subtext. Per DESIGN.md §4 Metric Cards.", + "Metric card, mono eyebrow + Inter 24px/700 value + optional inline detail or subtext. Per DESIGN.md §4 Metric Cards.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/metric.stories.tsx` at line 13, Typo: remove the stray space before the comma in the story description string "Metric card , mono eyebrow + Inter 24px/700 value + optional inline detail or subtext. Per DESIGN.md §4 Metric Cards." in packages/ui/src/components/custom/stories/metric.stories.tsx so it reads "Metric card, mono eyebrow + Inter 24px/700 value + optional inline detail or subtext. Per DESIGN.md §4 Metric Cards."; update the string literal where it is defined in the metric story export to fix the copy.packages/site/components/blog/release-entry.tsx-68-71 (1)
68-71:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winPrevent duplicate React keys when release notes repeat identical text.
Line 70 can collide when two entries in the same section have the same
itemvalue, which leads to unstable reconciliation warnings/behavior.🔧 Proposed fix
- {release[key].map(item => ( + {release[key].map((item, idx) => ( <li - key={`${key}-${item}`} + key={`${key}-${item}-${idx}`} className="flex items-start gap-3 font-sans text-item-title leading-7 text-(--color-text-secondary)" >🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/blog/release-entry.tsx` around lines 68 - 71, The list key currently uses `${key}-${item}` inside the release[key].map(...) which can collide when identical item strings repeat; update the key generation in the mapping callback to include the iteration index or another stable unique identifier (e.g., `${key}-${item}-${i}` or `${key}-${i}`) so each <li> rendered by the map has a unique React key and avoids reconciliation warnings; locate the mapping expression where release[key].map(item => ...) and change the key prop accordingly.packages/ui/src/components/custom/stories/wire-card.stories.tsx-14-14 (1)
14-14:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse the canonical
capabilityterm in this Storybook copy.The new description reintroduces
recipes, which drifts from the repo glossary and public product vocabulary. Please normalize this text tocapability/capabilitieshere and in the surrounding example copy in this story file.As per coding guidelines, "Capability vs Recipe: reusable agent artifacts are called
capability, NOTrecipe/workflow/procedure/playbookfor current AGH behavior".🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/wire-card.stories.tsx` at line 14, Update the Storybook copy in packages/ui/src/components/custom/stories/wire-card.stories.tsx to use the canonical term "capability" (singular) or "capabilities" (plural) instead of "recipe"/"recipes" throughout the description and any example text in this file; locate the story description string that currently reads `"Bordered protocol card , mirrors \`.wire-card\` (head/body/foot) in \`docs/design/web-inspiration/styles/app.css\`. Used to embed wire-protocol payloads (recipes, receipts, capabilities) inside message threads."` and replace "recipes" with "capabilities", and scan the rest of this story file for any occurrences of "recipe"/"recipes"/"workflow"/"playbook" and normalize them to "capability"/"capabilities" so the story follows the repo glossary.packages/ui/src/components/custom/stories/toolbar.stories.tsx-18-18 (1)
18-18:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation spacing in Storybook copy.
Line 18 and Line 89 include a space before a comma (
"shell ,","Scroll ,"), which reads as a typo in docs/examples.✏️ Suggested patch
- "Composition-first toolbar shell , pass `SearchInput`, `PillGroup`, `Button` children directly. Wraps on narrow viewports.", + "Composition-first toolbar shell; pass `SearchInput`, `PillGroup`, `Button` children directly. Wraps on narrow viewports.", @@ - Scroll , the toolbar stays pinned to the top edge of the scroll container. + Scroll, the toolbar stays pinned to the top edge of the scroll container.Also applies to: 89-89
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/toolbar.stories.tsx` at line 18, Fix the punctuation spacing in the story text by removing the stray space before commas: change "Composition-first toolbar shell , pass `SearchInput`, `PillGroup`, `Button` children directly. Wraps on narrow viewports." to "Composition-first toolbar shell, pass `SearchInput`, `PillGroup`, `Button` children directly. Wraps on narrow viewports." and likewise change "Scroll ," to "Scroll," wherever that string appears (e.g., the story description at the later occurrence).web/e2e/__tests__/tasks.spec.ts-25-26 (1)
25-26:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse a unique draft title per test run to prevent cross-run collisions.
At Line 26 and Line 248, the flow uses a static title and then searches by that title. This can match stale drafts from previous/retried runs and make the delete path flaky.
💡 Suggested patch
-const deleteDraftDescription = "Exercise the shared delete confirmation dialog from Tasks e2e."; -const deleteDraftTitle = "Draft Tasks delete confirmation smoke"; +const deleteDraftDescriptionBase = + "Exercise the shared delete confirmation dialog from Tasks e2e."; +const deleteDraftTitleBase = "Draft Tasks delete confirmation smoke"; @@ - await tasksUI.openCreate.click(); + const deleteDraftSuffix = `${Date.now()}-${Math.random().toString(36).slice(2, 8)}`; + const deleteDraftTitle = `${deleteDraftTitleBase} ${deleteDraftSuffix}`; + const deleteDraftDescription = `${deleteDraftDescriptionBase} (${deleteDraftSuffix})`; + + await tasksUI.openCreate.click();Also applies to: 237-250
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/e2e/__tests__/tasks.spec.ts` around lines 25 - 26, The test uses a static deleteDraftTitle ("Draft Tasks delete confirmation smoke") which can collide across runs; update the setup to generate a unique title for each run (e.g., append a timestamp or random suffix) and use that variable everywhere the test creates or searches for the draft (referencing deleteDraftTitle and deleteDraftDescription in the test file tasks.spec.ts and any helper calls that query by title) so the create → search → delete flow only matches the current run's draft.packages/ui/src/components/custom/stories/page-header.stories.tsx-17-17 (1)
17-17:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in Storybook docs description.
There is an extra space before the comma (
"header , icon"), which will show up in docs copy.✏️ Proposed fix
- "Top-of-page header , icon + title + count badge on the left, segmented `PillGroup` controls in the middle, meta/actions on the right.", + "Top-of-page header, icon + title + count badge on the left, segmented `PillGroup` controls in the middle, meta/actions on the right.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/page-header.stories.tsx` at line 17, Fix the punctuation typo in the Storybook description string used in the PageHeader story: remove the extra space before the comma in the text `"Top-of-page header , icon + title + count badge on the left, segmented `PillGroup` controls in the middle, meta/actions on the right."` so it reads `"Top-of-page header, icon + title..."`; locate and update the description string in the page-header.stories (the story export or the variable holding the story description) to correct the spacing.packages/ui/src/components/__tests__/alert.test.tsx-42-58 (1)
42-58:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winAssert slot order explicitly to match the test intent.
The test says “after the description” but currently only checks presence. Add an order assertion so reordering regressions are caught.
✅ Suggested assertion upgrade
it("Should render meta and actions slots after the description", () => { render( <Alert data-testid="alert" variant="warning"> <AlertTitle>Provider missing</AlertTitle> <AlertDescription>Reconnect the provider.</AlertDescription> <AlertMeta data-testid="alert-meta">session sess_123</AlertMeta> <AlertActions data-testid="alert-actions"> <button type="button">Retry</button> </AlertActions> </Alert> ); + const alert = screen.getByTestId("alert"); + const slots = Array.from(alert.children).map(node => node.getAttribute("data-slot")); + expect(slots).toEqual(["alert-title", "alert-description", "alert-meta", "alert-actions"]); + expect(screen.getByTestId("alert-meta")).toHaveAttribute("data-slot", "alert-meta"); expect(screen.getByTestId("alert-meta").className).toContain("tracking-mono"); expect(screen.getByTestId("alert-actions")).toHaveAttribute("data-slot", "alert-actions"); expect(screen.getByRole("button", { name: "Retry" })).toBeInTheDocument(); });🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/__tests__/alert.test.tsx` around lines 42 - 58, The test currently only checks presence of AlertMeta and AlertActions but not their position; update the "Should render meta and actions slots after the description" test to assert DOM order by verifying that the AlertDescription element precedes AlertMeta and AlertActions (e.g., use document order checks such as nextElementSibling or compareDocumentPosition on the rendered nodes). Locate the elements via AlertDescription, AlertMeta (data-testid="alert-meta") and AlertActions (data-testid="alert-actions") and add assertions that AlertMeta and AlertActions come after the AlertDescription node to prevent regressions in slot ordering.packages/ui/src/components/stories/catalog-card.stories.tsx-142-144 (1)
142-144:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse canonical artifact terminology in UI copy.
Line 143 uses “skills”; please align this with the canonical term “capability” for consistency across AGH surfaces.
✏️ Proposed copy fix
- The catalog endpoint returned an error. Existing installed skills are unchanged. + The catalog endpoint returned an error. Existing installed capabilities are unchanged.As per coding guidelines, "Follow
docs/_memory/glossary.mdfor canonical terms. The canonical artifact name iscapability."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/catalog-card.stories.tsx` around lines 142 - 144, Update the UI copy inside CatalogCard.Description to use the canonical term “capability” instead of “skills”: change the sentence that currently reads “Existing installed skills are unchanged.” to use “capabilities” (e.g., “Existing installed capabilities are unchanged.”) so the component CatalogCard.Description aligns with the glossary; no other logic changes required.packages/ui/src/components/custom/stories/pill.stories.tsx-14-14 (1)
14-14:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation artifacts in Storybook docs copy.
These strings include
space + commaartifacts, which read as malformed public docs text.✏️ Proposed copy cleanup
- "Unified semantic pill , replaces legacy `MonoBadge`, `StatusDot`, `KindChip`, `WireChip`, and connection-state label compositions. Compose with `Pill.Dot` for leading status dots.", + "Unified semantic pill, replaces legacy `MonoBadge`, `StatusDot`, `KindChip`, `WireChip`, and connection-state label compositions. Compose with `Pill.Dot` for leading status dots.", - story: "Protocol kind markers , leading dot keyed off the kind, label preserved.", + story: "Protocol kind markers, leading dot keyed off the kind, label preserved.", - "Replacement composition for the legacy `ConnectionIndicator` , `Pill.Dot` + monospace label inside an `aria-live=polite` region.", + "Replacement composition for the legacy `ConnectionIndicator`, `Pill.Dot` + monospace label inside an `aria-live=polite` region.",As per coding guidelines,
COPY.md(repo root) is the authoritative product-language specification for docs prose and UI microcopy.Also applies to: 161-161, 232-232
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/pill.stories.tsx` at line 14, The Storybook copy in packages/ui/src/components/custom/stories/pill.stories.tsx contains "space + comma" punctuation artifacts (e.g., the description string that starts with "Unified semantic pill , replaces..."); update those strings to remove the stray space before commas and align phrasing with COPY.md (also fix the same artifact occurrences elsewhere in this file where similar descriptions appear), ensuring references like "Pill.Dot" and legacy component names remain intact and correctly punctuated.packages/ui/src/components/custom/stories/split-pane.stories.tsx-96-96 (1)
96-96:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winClean up punctuation artifacts in story text.
Two changed strings still contain
space + comma, which reads as accidental copy noise.✏️ Proposed text fixes
- Detail view for run {row.id} , event timeline, artifacts, diff. + Detail view for run {row.id}, event timeline, artifacts, diff. - "With `UIProvider reducedMotion='always'` the detail swap is instant , motion drops the opacity transition.", + "With `UIProvider reducedMotion='always'` the detail swap is instant, motion drops the opacity transition.",As per coding guidelines,
COPY.mdis the authoritative product-language specification for docs prose and UI copy.Also applies to: 198-198
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/split-pane.stories.tsx` at line 96, The story text contains accidental "space + comma" artifacts (e.g., the string "Detail view for run {row.id} , event timeline, artifacts, diff.")—remove the extra space before commas in that string and the other occurrence later in the same file so the text reads "..., event timeline, artifacts, diff."; locate the offending string(s) in packages/ui/src/components/custom/stories/split-pane.stories.tsx and update the literal(s) accordingly to match COPY.md style.web/e2e/__tests__/session-onboarding.spec.ts-22-23 (1)
22-23:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winEncode dynamic path segments in
browserLifecycleSessionPath(...).Using raw interpolation can create false negatives when IDs include reserved URL characters.
🧩 Proposed robustness fix
function browserLifecycleSessionPath(agentName: string, sessionId: string): string { - return `/agents/${agentName}/sessions/${sessionId}`; + return `/agents/${encodeURIComponent(agentName)}/sessions/${encodeURIComponent(sessionId)}`; }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@web/e2e/__tests__/session-onboarding.spec.ts` around lines 22 - 23, The helper function browserLifecycleSessionPath currently interpolates agentName and sessionId raw into the URL; update it to URL-encode both dynamic segments using encodeURIComponent (i.e., replace uses of agentName and sessionId with encodeURIComponent(agentName) and encodeURIComponent(sessionId)) so reserved characters don’t break routing or tests.packages/site/components/landing/hero.tsx-7-7 (1)
7-7:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation spacing in user-facing hero copy
Line 7 and Lines 48-49 introduce spaces before commas (
"v0 , alpha runtime","sessions , with","automation , connected"), which reads as a typo in the UI. Please normalize punctuation and update the matching test expectation.✏️ Proposed fix
- label: "agh-network/v0 , alpha runtime", + label: "agh-network/v0, alpha runtime", ... - AGH runs the agent CLIs you already use as durable sessions , with memory, autonomy, - tools, and automation , connected on agh-network/v0 channels where they find each + AGH runs the agent CLIs you already use as durable sessions, with memory, autonomy, + tools, and automation, connected on agh-network/v0 channels where they find eachAlso applies to: 48-49
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/landing/hero.tsx` at line 7, The hero copy contains incorrect spacing before commas in the label and other UI strings (e.g., the label value "agh-network/v0 , alpha runtime" in the hero component and the strings around lines 48-49 like "sessions , with" and "automation , connected"); remove the stray spaces so commas follow the preceding word directly (e.g., "v0, alpha runtime", "sessions, with", "automation, connected") in the component (check the label constant and the literal JSX strings in the Hero component) and update the corresponding test expectation(s) to match the corrected punctuation.packages/site/components/landing/bridges-section.tsx-83-83 (1)
83-83:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation spacing typo in public copy.
Line 83 has
"runtime , the"; remove the extra space before the comma.✏️ Proposed fix
- description="Webhooks in, sessions out. Responses stream back to the original thread. No serverless glue, no second runtime , the bridge adapter runs inside the daemon." + description="Webhooks in, sessions out. Responses stream back to the original thread. No serverless glue, no second runtime, the bridge adapter runs inside the daemon."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/landing/bridges-section.tsx` at line 83, Typo: remove the stray space before the comma in the description string; update the description value in bridges-section.tsx (the description property containing "No serverless glue, no second runtime , the bridge adapter runs inside the daemon.") to "No serverless glue, no second runtime, the bridge adapter runs inside the daemon." so the comma directly follows "runtime" without the extra space.packages/site/app/error.tsx-31-31 (1)
31-31:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winReplace hard-coded
text-whitewith a semantic token utility.Line 31 introduces a literal color utility, which makes the site styling less token-driven. Please switch to the accent foreground token/class used by the design system.
As per coding guidelines,
packages/site/**/*.{ts,tsx,css}: “Pull design tokens fromDESIGN.md(repo root). No invented colors, type, radii, spacing, or motion.”🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/app/error.tsx` at line 31, The button JSX in packages/site/app/error.tsx currently uses a hard-coded utility "text-white"; replace that literal with the design-system accent foreground token by changing the className on the same element to use the semantic utility (e.g., "text-accent-foreground") so the button pulls color from the token system rather than a hard-coded color.packages/ui/src/components/custom/stories/code-block.stories.tsx-46-46 (1)
46-46:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winFix punctuation typo in story description.
Line 46 has an extra space before the comma (
"disabled ,").Suggested patch
- story: "Source-code block with prompts disabled , rendered as plain code.", + story: "Source-code block with prompts disabled, rendered as plain code.",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/custom/stories/code-block.stories.tsx` at line 46, The story description string in code-block.stories.tsx has a punctuation typo—remove the extra space before the comma in the story property value ("Source-code block with prompts disabled , rendered as plain code.") so it reads "Source-code block with prompts disabled, rendered as plain code." Update the story string in the story property to correct the punctuation.
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
packages/site/components/docs/page-actions/__tests__/llm-copy-button.test.tsx (1)
3-3: ⚡ Quick winSwitch this test import to the
@/*alias.Line 3 uses a relative import (
../llm-copy-button). Please use the project alias import format to match site conventions.Suggested change
-import { LLMCopyButton } from "../llm-copy-button"; +import { LLMCopyButton } from "@/components/docs/page-actions/llm-copy-button";As per coding guidelines,
packages/site/**/*.{ts,tsx}: "Imports must use@/*alias."🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/site/components/docs/page-actions/__tests__/llm-copy-button.test.tsx` at line 3, The test currently imports the LLMCopyButton component via a relative path; update the import to use the project alias import format (`@/`*) instead. Replace the import of LLMCopyButton (from "../llm-copy-button") with the corresponding alias path (e.g., "@/components/docs/page-actions/llm-copy-button") so the test follows the packages/site import convention; ensure the imported symbol name LLMCopyButton remains unchanged.packages/ui/src/components/stories/catalog-card.stories.tsx (1)
18-18: ⚡ Quick winUse an interface for
CatalogCardExampleprops instead of an inline object type.This aligns the file with the repo TypeScript shape-definition rule and makes the props type reusable.
♻️ Proposed change
+interface CatalogCardExampleProps { + installed?: boolean; +} + -function CatalogCardExample({ installed = false }: { installed?: boolean }) { +function CatalogCardExample({ installed = false }: CatalogCardExampleProps) {Per coding guidelines,
**/*.{ts,tsx}: Preferinterfacefor defining object shapes in TypeScript.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@packages/ui/src/components/stories/catalog-card.stories.tsx` at line 18, Replace the inline object type used in the CatalogCardExample function signature with a named interface: define an interface (e.g., CatalogCardExampleProps) describing the optional installed?: boolean prop, then update the CatalogCardExample parameter to use that interface (CatalogCardExample(props: CatalogCardExampleProps) or destructure with ({ installed = false }: CatalogCardExampleProps)). Ensure the interface is exported if it needs to be reused elsewhere.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@packages/site/components/blog/__tests__/changelog-components.test.tsx`:
- Around line 123-137: The test creates a console.error spy (errorSpy) but
restores it only at the end, so if an assertion fails the spy remains active;
wrap the test body that calls render(...) and the expects in a try/finally and
move errorSpy.mockRestore() into the finally block so the spy is always restored
even on failures (update the "renders duplicate release bullets without
duplicate-key warnings" test that uses ReleaseEntry, render, screen.getAllByText
and errorSpy).
In `@packages/site/components/site/__tests__/docs-header.test.tsx`:
- Around line 209-225: The console.error spy (errorSpy created via
vi.spyOn(console, "error")) in the DocsHeader test can leak if assertions throw,
so wrap the test body that uses errorSpy (render(<DocsHeader />) and the expect
checks) in a try/finally and call errorSpy.mockRestore() inside finally; this
ensures errorSpy is always restored even when expectations fail and keeps the
test isolated.
---
Nitpick comments:
In
`@packages/site/components/docs/page-actions/__tests__/llm-copy-button.test.tsx`:
- Line 3: The test currently imports the LLMCopyButton component via a relative
path; update the import to use the project alias import format (`@/`*) instead.
Replace the import of LLMCopyButton (from "../llm-copy-button") with the
corresponding alias path (e.g.,
"@/components/docs/page-actions/llm-copy-button") so the test follows the
packages/site import convention; ensure the imported symbol name LLMCopyButton
remains unchanged.
In `@packages/ui/src/components/stories/catalog-card.stories.tsx`:
- Line 18: Replace the inline object type used in the CatalogCardExample
function signature with a named interface: define an interface (e.g.,
CatalogCardExampleProps) describing the optional installed?: boolean prop, then
update the CatalogCardExample parameter to use that interface
(CatalogCardExample(props: CatalogCardExampleProps) or destructure with ({
installed = false }: CatalogCardExampleProps)). Ensure the interface is exported
if it needs to be reused elsewhere.
🪄 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: ad999341-fdf1-4040-a2f6-6724742661c5
📒 Files selected for processing (52)
packages/site/app/blog/metadata.tspackages/site/app/llms.txt/route.tspackages/site/components/blog/__tests__/changelog-components.test.tsxpackages/site/components/blog/release-entry.tsxpackages/site/components/docs/page-actions/__tests__/llm-copy-button.test.tsxpackages/site/components/docs/page-actions/llm-copy-button.tsxpackages/site/components/landing/__tests__/landing.test.tsxpackages/site/components/landing/bridges-section.tsxpackages/site/components/landing/comparison.tsxpackages/site/components/landing/hero.tsxpackages/site/components/landing/primitives/animated-diagram.tsxpackages/site/components/site/__tests__/docs-header.test.tsxpackages/site/components/site/docs-header.tsxpackages/site/lib/__tests__/blog-content-quality.test.tspackages/site/lib/__tests__/blog-metadata.test.tspackages/site/lib/__tests__/public-link-safety.test.tspackages/site/lib/__tests__/public-route-metadata.test.tspackages/site/lib/__tests__/static-route-metadata.test.tspackages/site/lib/blog.tspackages/site/lib/og/__tests__/tokens.test.tspackages/site/lib/og/tokens.tspackages/site/lib/site-config.tspackages/ui/src/components/__tests__/alert.test.tsxpackages/ui/src/components/__tests__/confirm-dialog.test.tsxpackages/ui/src/components/__tests__/field.test.tsxpackages/ui/src/components/__tests__/item.test.tsxpackages/ui/src/components/custom/__tests__/metadata-list.test.tsxpackages/ui/src/components/custom/confirm-dialog.tsxpackages/ui/src/components/custom/metadata-list.tsxpackages/ui/src/components/custom/stories/chat-message-bubble.stories.tsxpackages/ui/src/components/custom/stories/code-block.stories.tsxpackages/ui/src/components/custom/stories/metadata-list.stories.tsxpackages/ui/src/components/custom/stories/metric.stories.tsxpackages/ui/src/components/custom/stories/page-header.stories.tsxpackages/ui/src/components/custom/stories/pill.stories.tsxpackages/ui/src/components/custom/stories/split-pane.stories.tsxpackages/ui/src/components/custom/stories/toolbar.stories.tsxpackages/ui/src/components/custom/stories/typing-dots.stories.tsxpackages/ui/src/components/custom/stories/wire-card.stories.tsxpackages/ui/src/components/field.tsxpackages/ui/src/components/item.tsxpackages/ui/src/components/stories/accordion.stories.tsxpackages/ui/src/components/stories/card.stories.tsxpackages/ui/src/components/stories/catalog-card.stories.tsxpackages/ui/src/components/stories/empty.stories.tsxpackages/ui/src/components/stories/scroll-area.stories.tsxpackages/ui/src/components/stories/sonner.stories.tsxpackages/ui/src/components/stories/toggle.stories.tsxweb/e2e/__tests__/session-onboarding.spec.tsweb/e2e/__tests__/skills.spec.tsweb/e2e/__tests__/tasks-coordinator-handoff.spec.tsweb/e2e/__tests__/tasks.spec.ts
✅ Files skipped from review due to trivial changes (20)
- packages/site/app/blog/metadata.ts
- packages/site/lib/og/tests/tokens.test.ts
- packages/ui/src/components/custom/stories/metric.stories.tsx
- packages/ui/src/components/custom/stories/split-pane.stories.tsx
- packages/ui/src/components/stories/card.stories.tsx
- packages/site/app/llms.txt/route.ts
- packages/site/lib/site-config.ts
- web/e2e/tests/tasks-coordinator-handoff.spec.ts
- packages/site/lib/tests/public-link-safety.test.ts
- packages/ui/src/components/stories/accordion.stories.tsx
- packages/site/lib/tests/blog-metadata.test.ts
- packages/site/components/site/docs-header.tsx
- packages/ui/src/components/custom/stories/chat-message-bubble.stories.tsx
- packages/ui/src/components/stories/sonner.stories.tsx
- packages/ui/src/components/stories/scroll-area.stories.tsx
- packages/site/components/landing/comparison.tsx
- packages/ui/src/components/custom/stories/toolbar.stories.tsx
- packages/site/components/docs/page-actions/llm-copy-button.tsx
- packages/ui/src/components/custom/stories/typing-dots.stories.tsx
- packages/site/components/landing/bridges-section.tsx
🚧 Files skipped from review as they are similar to previous changes (16)
- packages/ui/src/components/custom/tests/metadata-list.test.tsx
- packages/site/lib/blog.ts
- packages/site/components/landing/primitives/animated-diagram.tsx
- web/e2e/tests/skills.spec.ts
- packages/ui/src/components/custom/stories/metadata-list.stories.tsx
- packages/site/lib/og/tokens.ts
- web/e2e/tests/tasks.spec.ts
- packages/ui/src/components/custom/stories/page-header.stories.tsx
- packages/site/components/landing/hero.tsx
- web/e2e/tests/session-onboarding.spec.ts
- packages/ui/src/components/item.tsx
- packages/ui/src/components/field.tsx
- packages/ui/src/components/custom/metadata-list.tsx
- packages/ui/src/components/custom/stories/code-block.stories.tsx
- packages/ui/src/components/custom/confirm-dialog.tsx
- packages/ui/src/components/custom/stories/pill.stories.tsx
## 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
Design System
Improvements
Tests