@adea-ai/ui 0.10.9 → 0.10.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,7 +14,7 @@ function errorMessage(caught, fallback) {
14
14
  }
15
15
  function phaseLabel(update, fallbackVersion) {
16
16
  if (!update)
17
- return `Agent HQ v${fallbackVersion}`;
17
+ return `Adea v${fallbackVersion}`;
18
18
  if (update.phase === "checking")
19
19
  return "Checking for updates…";
20
20
  if (update.phase === "available" && update.available_version) {
@@ -25,7 +25,7 @@ function phaseLabel(update, fallbackVersion) {
25
25
  }
26
26
  if (update.phase === "failed")
27
27
  return `Version ${update.current_version} · Retry`;
28
- return `Agent HQ v${update.current_version || fallbackVersion}`;
28
+ return `Adea v${update.current_version || fallbackVersion}`;
29
29
  }
30
30
  function isUpdateBusy(update) {
31
31
  return (update?.phase === "checking" ||
@@ -126,11 +126,11 @@ export function VersionDialog({ adapter, fallbackVersion = "0.1.0", onOpenChange
126
126
  const currentChangelog = useMemo(() => plainTextFromMarkdown(update?.changelog || "Changelog is loading…"), [update?.changelog]);
127
127
  const releaseNotes = update?.release_notes ? plainTextFromMarkdown(update.release_notes) : "";
128
128
  const busyFromSnapshot = isUpdateBusy(update);
129
- return (_jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [controlledOpen === undefined ? (_jsxs(DialogTrigger, { render: _jsx(Button, { type: "button", variant: "ghost", size: "sm", "aria-label": "Open version and updates dialog", "aria-haspopup": "dialog", onClick: () => setOpen(true) }), children: [update?.phase === "available" ? (_jsx(Sparkles, { "aria-hidden": "true" })) : (_jsx(FileText, { "aria-hidden": "true" })), phaseLabel(update, fallbackVersion)] })) : null, _jsxs(DialogContent, { className: "max-w-3xl", children: [_jsx(DialogHeader, { children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground", children: _jsx(Sparkles, { className: "size-5", "aria-hidden": "true" }) }), _jsxs("div", { children: [_jsx(DialogTitle, { children: "Version & updates" }), _jsx(DialogDescription, { children: "Keep Agent HQ current and review what changed in each release." })] })] }) }), _jsxs("div", { className: "min-h-0 space-y-5 overflow-y-auto p-6", children: [_jsx("section", { className: "rounded-xl border bg-background/45 p-4", "aria-label": "Version status", children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Installed version" }), _jsxs("p", { className: "text-xl font-semibold tracking-tight", children: ["v", update?.current_version || fallbackVersion] }), _jsx("p", { className: "text-sm text-muted-foreground", children: update?.phase === "current"
129
+ return (_jsxs(Dialog, { open: open, onOpenChange: setOpen, children: [controlledOpen === undefined ? (_jsxs(DialogTrigger, { render: _jsx(Button, { type: "button", variant: "ghost", size: "sm", "aria-label": "Open version and updates dialog", "aria-haspopup": "dialog", onClick: () => setOpen(true) }), children: [update?.phase === "available" ? (_jsx(Sparkles, { "aria-hidden": "true" })) : (_jsx(FileText, { "aria-hidden": "true" })), phaseLabel(update, fallbackVersion)] })) : null, _jsxs(DialogContent, { className: "max-w-3xl", children: [_jsx(DialogHeader, { children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: "flex size-10 items-center justify-center rounded-xl bg-primary text-primary-foreground", children: _jsx(Sparkles, { className: "size-5", "aria-hidden": "true" }) }), _jsxs("div", { children: [_jsx(DialogTitle, { children: "Version & updates" }), _jsx(DialogDescription, { children: "Keep Adea current and review what changed in each release." })] })] }) }), _jsxs("div", { className: "min-h-0 space-y-5 overflow-y-auto p-6", children: [_jsx("section", { className: "rounded-xl border bg-background/45 p-4", "aria-label": "Version status", children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground", children: "Installed version" }), _jsxs("p", { className: "text-xl font-semibold tracking-tight", children: ["v", update?.current_version || fallbackVersion] }), _jsx("p", { className: "text-sm text-muted-foreground", children: update?.phase === "current"
130
130
  ? "You are running the latest desktop release."
131
131
  : update?.phase === "available" && update.available_version
132
132
  ? `A newer desktop release, v${update.available_version}, is ready.`
133
133
  : desktopRuntime
134
134
  ? "Check the release channel for the latest signed build."
135
- : "Open this dialog inside the desktop app to check for updates." })] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", disabled: !desktopRuntime || busy || busyFromSnapshot, onClick: () => void checkForUpdates(), children: [busy || busyFromSnapshot ? (_jsx(LoaderCircle, { className: "animate-spin", "aria-hidden": "true" })) : (_jsx(RefreshCw, { "aria-hidden": "true" })), "Check latest version"] })] }) }), update?.phase === "available" && update.available_version ? (_jsx("section", { className: "rounded-xl border border-primary/35 bg-primary/8 p-4", "aria-label": "Available update", children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsxs("p", { className: "flex items-center gap-2 text-sm font-semibold", children: [_jsx(Sparkles, { className: "size-4 text-primary", "aria-hidden": "true" }), "Version ", update.available_version, " is ready"] }), _jsx("p", { className: "text-sm text-muted-foreground", children: "The signed installer will be verified before Agent HQ restarts." }), formatReleaseDate(update.release_date) ? (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Released ", formatReleaseDate(update.release_date)] })) : null] }), _jsxs(Button, { type: "button", size: "sm", disabled: busy || busyFromSnapshot, onClick: () => void install(), children: [busy || busyFromSnapshot ? (_jsx(LoaderCircle, { className: "animate-spin", "aria-hidden": "true" })) : (_jsx(Download, { "aria-hidden": "true" })), "Install and restart"] })] }) })) : null, update?.phase === "current" ? (_jsxs("p", { className: "flex items-center gap-2 text-sm text-emerald-700 dark:text-emerald-300", role: "status", children: [_jsx(Check, { className: "size-4", "aria-hidden": "true" }), "Agent HQ is up to date."] })) : null, error ? (_jsx("p", { className: "rounded-lg border border-destructive/35 bg-destructive/8 px-3 py-2 text-sm text-destructive", role: "alert", children: error })) : null, releaseNotes ? (_jsxs("section", { className: "space-y-2", "aria-labelledby": "agent-hq-release-notes", children: [_jsxs("div", { children: [_jsx("h2", { id: "agent-hq-release-notes", className: "text-sm font-semibold", children: "What changed in this release" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Release notes are shown as readable text." })] }), _jsx("div", { className: "max-h-52 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground", children: releaseNotes })] })) : null, _jsxs("section", { className: "space-y-2", "aria-labelledby": "agent-hq-changelog", children: [_jsxs("div", { children: [_jsx("h2", { id: "agent-hq-changelog", className: "text-sm font-semibold", children: "Installed changelog" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "A plain-text history of the installed channel." })] }), _jsx("div", { className: "max-h-72 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground", children: currentChangelog })] })] }), _jsxs(DialogFooter, { children: [update?.github_url ? (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => window.open(update.github_url, "_blank", "noopener,noreferrer"), children: [_jsx(ExternalLink, { "aria-hidden": "true" }), "View releases"] })) : null, _jsx(DialogClose, { render: _jsx(Button, { type: "button", variant: "outline", size: "sm" }), children: "Close" })] })] })] }));
135
+ : "Open this dialog inside the desktop app to check for updates." })] }), _jsxs(Button, { type: "button", variant: "outline", size: "sm", disabled: !desktopRuntime || busy || busyFromSnapshot, onClick: () => void checkForUpdates(), children: [busy || busyFromSnapshot ? (_jsx(LoaderCircle, { className: "animate-spin", "aria-hidden": "true" })) : (_jsx(RefreshCw, { "aria-hidden": "true" })), "Check latest version"] })] }) }), update?.phase === "available" && update.available_version ? (_jsx("section", { className: "rounded-xl border border-primary/35 bg-primary/8 p-4", "aria-label": "Available update", children: _jsxs("div", { className: "flex flex-wrap items-start justify-between gap-4", children: [_jsxs("div", { className: "space-y-1", children: [_jsxs("p", { className: "flex items-center gap-2 text-sm font-semibold", children: [_jsx(Sparkles, { className: "size-4 text-primary", "aria-hidden": "true" }), "Version ", update.available_version, " is ready"] }), _jsx("p", { className: "text-sm text-muted-foreground", children: "The signed installer will be verified before Adea restarts." }), formatReleaseDate(update.release_date) ? (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Released ", formatReleaseDate(update.release_date)] })) : null] }), _jsxs(Button, { type: "button", size: "sm", disabled: busy || busyFromSnapshot, onClick: () => void install(), children: [busy || busyFromSnapshot ? (_jsx(LoaderCircle, { className: "animate-spin", "aria-hidden": "true" })) : (_jsx(Download, { "aria-hidden": "true" })), "Install and restart"] })] }) })) : null, update?.phase === "current" ? (_jsxs("p", { className: "flex items-center gap-2 text-sm text-emerald-700 dark:text-emerald-300", role: "status", children: [_jsx(Check, { className: "size-4", "aria-hidden": "true" }), "Adea is up to date."] })) : null, error ? (_jsx("p", { className: "rounded-lg border border-destructive/35 bg-destructive/8 px-3 py-2 text-sm text-destructive", role: "alert", children: error })) : null, releaseNotes ? (_jsxs("section", { className: "space-y-2", "aria-labelledby": "adea-release-notes", children: [_jsxs("div", { children: [_jsx("h2", { id: "adea-release-notes", className: "text-sm font-semibold", children: "What changed in this release" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Release notes are shown as readable text." })] }), _jsx("div", { className: "max-h-52 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground", children: releaseNotes })] })) : null, _jsxs("section", { className: "space-y-2", "aria-labelledby": "agent-hq-changelog", children: [_jsxs("div", { children: [_jsx("h2", { id: "agent-hq-changelog", className: "text-sm font-semibold", children: "Installed changelog" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "A plain-text history of the installed channel." })] }), _jsx("div", { className: "max-h-72 overflow-y-auto whitespace-pre-wrap rounded-xl border bg-background/45 p-4 font-mono text-xs leading-5 text-muted-foreground", children: currentChangelog })] })] }), _jsxs(DialogFooter, { children: [update?.github_url ? (_jsxs(Button, { type: "button", variant: "ghost", size: "sm", onClick: () => window.open(update.github_url, "_blank", "noopener,noreferrer"), children: [_jsx(ExternalLink, { "aria-hidden": "true" }), "View releases"] })) : null, _jsx(DialogClose, { render: _jsx(Button, { type: "button", variant: "outline", size: "sm" }), children: "Close" })] })] })] }));
136
136
  }
@@ -1,3 +1,3 @@
1
1
  import type { SVGProps } from "react";
2
- /** The canonical Agent HQ mark used by web, desktop, and dialogs. */
2
+ /** The canonical Adea mark used by web, desktop, and dialogs. */
3
3
  export declare function WorkspaceLogo(props: SVGProps<SVGSVGElement>): import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /** The canonical Agent HQ mark used by web, desktop, and dialogs. */
2
+ /** The canonical Adea mark used by web, desktop, and dialogs. */
3
3
  export function WorkspaceLogo(props) {
4
- return (_jsxs("svg", { viewBox: "0 0 64 64", role: "img", "aria-label": "Agent HQ", ...props, children: [_jsx("rect", { width: "64", height: "64", rx: "16", fill: "#111827" }), _jsx("path", { d: "M10 16h7v13h9V16h7v32h-7V36h-9v12h-7z", fill: "#f8fafc" }), _jsx("path", { d: "M45 16c-7.18 0-13 6-13 16s5.82 16 13 16c7.18 0 13-6 13-16s-5.82-16-13-16Zm0 7c3.42 0 6 3.46 6 9s-2.58 9-6 9-6-3.46-6-9 2.58-9 6-9Z", fill: "#f8fafc", fillRule: "evenodd" }), _jsx("path", { d: "m45 35 11 11-4 4-11-11z", fill: "#f8fafc" })] }));
4
+ return (_jsxs("svg", { viewBox: "0 0 64 64", role: "img", "aria-label": "Adea", ...props, children: [_jsx("rect", { width: "64", height: "64", rx: "16", fill: "#111827" }), _jsx("path", { d: "M10 16h7v13h9V16h7v32h-7V36h-9v12h-7z", fill: "#f8fafc" }), _jsx("path", { d: "M45 16c-7.18 0-13 6-13 16s5.82 16 13 16c7.18 0 13-6 13-16s-5.82-16-13-16Zm0 7c3.42 0 6 3.46 6 9s-2.58 9-6 9-6-3.46-6-9 2.58-9 6-9Z", fill: "#f8fafc", fillRule: "evenodd" }), _jsx("path", { d: "m45 35 11 11-4 4-11-11z", fill: "#f8fafc" })] }));
5
5
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adea-ai/ui",
3
- "version": "0.10.9",
3
+ "version": "0.10.11",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -60,7 +60,7 @@ function errorMessage(caught: unknown, fallback: string): string {
60
60
  }
61
61
 
62
62
  function phaseLabel(update: SharedDesktopUpdate | null, fallbackVersion: string): string {
63
- if (!update) return `Agent HQ v${fallbackVersion}`;
63
+ if (!update) return `Adea v${fallbackVersion}`;
64
64
  if (update.phase === "checking") return "Checking for updates…";
65
65
  if (update.phase === "available" && update.available_version) {
66
66
  return `Update v${update.available_version} available`;
@@ -69,7 +69,7 @@ function phaseLabel(update: SharedDesktopUpdate | null, fallbackVersion: string)
69
69
  return "Installing update…";
70
70
  }
71
71
  if (update.phase === "failed") return `Version ${update.current_version} · Retry`;
72
- return `Agent HQ v${update.current_version || fallbackVersion}`;
72
+ return `Adea v${update.current_version || fallbackVersion}`;
73
73
  }
74
74
 
75
75
  function isUpdateBusy(update: SharedDesktopUpdate | null): boolean {
@@ -215,7 +215,7 @@ export function VersionDialog({
215
215
  <div>
216
216
  <DialogTitle>Version & updates</DialogTitle>
217
217
  <DialogDescription>
218
- Keep Agent HQ current and review what changed in each release.
218
+ Keep Adea current and review what changed in each release.
219
219
  </DialogDescription>
220
220
  </div>
221
221
  </div>
@@ -270,7 +270,7 @@ export function VersionDialog({
270
270
  Version {update.available_version} is ready
271
271
  </p>
272
272
  <p className="text-sm text-muted-foreground">
273
- The signed installer will be verified before Agent HQ restarts.
273
+ The signed installer will be verified before Adea restarts.
274
274
  </p>
275
275
  {formatReleaseDate(update.release_date) ? (
276
276
  <p className="text-xs text-muted-foreground">
@@ -301,7 +301,7 @@ export function VersionDialog({
301
301
  role="status"
302
302
  >
303
303
  <Check className="size-4" aria-hidden="true" />
304
- Agent HQ is up to date.
304
+ Adea is up to date.
305
305
  </p>
306
306
  ) : null}
307
307
  {error ? (
@@ -314,9 +314,9 @@ export function VersionDialog({
314
314
  ) : null}
315
315
 
316
316
  {releaseNotes ? (
317
- <section className="space-y-2" aria-labelledby="agent-hq-release-notes">
317
+ <section className="space-y-2" aria-labelledby="adea-release-notes">
318
318
  <div>
319
- <h2 id="agent-hq-release-notes" className="text-sm font-semibold">
319
+ <h2 id="adea-release-notes" className="text-sm font-semibold">
320
320
  What changed in this release
321
321
  </h2>
322
322
  <p className="text-xs text-muted-foreground">
@@ -1,9 +1,9 @@
1
1
  import type { SVGProps } from "react";
2
2
 
3
- /** The canonical Agent HQ mark used by web, desktop, and dialogs. */
3
+ /** The canonical Adea mark used by web, desktop, and dialogs. */
4
4
  export function WorkspaceLogo(props: SVGProps<SVGSVGElement>) {
5
5
  return (
6
- <svg viewBox="0 0 64 64" role="img" aria-label="Agent HQ" {...props}>
6
+ <svg viewBox="0 0 64 64" role="img" aria-label="Adea" {...props}>
7
7
  <rect width="64" height="64" rx="16" fill="#111827" />
8
8
  <path d="M10 16h7v13h9V16h7v32h-7V36h-9v12h-7z" fill="#f8fafc" />
9
9
  <path
@@ -80,6 +80,13 @@
80
80
  border-color: var(--border);
81
81
  }
82
82
 
83
+ /* Product expectation (see cursor-check.spec.ts): every enabled button
84
+ shows the pointer cursor regardless of Tailwind preflight defaults. */
85
+ button:not(:disabled),
86
+ [role="button"]:not([aria-disabled="true"]) {
87
+ cursor: pointer;
88
+ }
89
+
83
90
  html,
84
91
  body {
85
92
  min-height: 100%;