From 2e067f58a6b5df32d55f5fd8ff047f59d86fdde3 Mon Sep 17 00:00:00 2001 From: Eric Hare Date: Fri, 22 May 2026 12:17:52 -0700 Subject: [PATCH] chore(web): refresh "What's new" modal for 0.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bump PR #259 missed apps/web/src/lib/version.ts — fix it and swap in the v0.2-specific highlights. Modal title pulls from APP_VERSION → "What's new in 0.2.0" auto-trips for every user on first visit (existing localStorage dismissal stamps are keyed by version, so 0.1.1 dismissals don't suppress this one). Seven highlights, in narrative order: 1. First-run setup wizard (links → /onboarding) 2. System status page (links → /status) 3. Error envelopes carry remediation hints (links → docs/errors.md) 4. CLI: aiw doctor / status / profile / completion 5. Curated Prometheus metrics + Grafana starter 6. Opt-in anonymous telemetry 7. Conformance now covers chat Tests untouched — they assert against the WHATS_NEW_VERSION constant and the "Got it" button, not the highlight content. 4 vitest cases still pass. Verified live: cleared localStorage and reloaded; modal auto-opened with title "What's new in 0.2.0" and all seven cards rendered. Co-Authored-By: Claude Opus 4.7 (1M context) --- apps/web/src/lib/version.ts | 2 +- apps/web/src/lib/whats-new-content.ts | 51 ++++++++++++++++++++------- 2 files changed, 40 insertions(+), 13 deletions(-) diff --git a/apps/web/src/lib/version.ts b/apps/web/src/lib/version.ts index 3b256458..ca67e099 100644 --- a/apps/web/src/lib/version.ts +++ b/apps/web/src/lib/version.ts @@ -7,4 +7,4 @@ * so the value is stable across build environments (CI, local dev, * Docker) and visible at code-review time. */ -export const APP_VERSION = "0.1.1"; +export const APP_VERSION = "0.2.0"; diff --git a/apps/web/src/lib/whats-new-content.ts b/apps/web/src/lib/whats-new-content.ts index fad02a0b..5cbfa4a5 100644 --- a/apps/web/src/lib/whats-new-content.ts +++ b/apps/web/src/lib/whats-new-content.ts @@ -31,35 +31,62 @@ export const WHATS_NEW_VERSION = APP_VERSION; */ export const WHATS_NEW_HIGHLIGHTS: readonly WhatsNewItem[] = [ { - title: "aiw CLI", + title: "First-run setup wizard", summary: - "Drive the workbench from your terminal: `aiw login`, `workspace`, `kb`, `doc upload`, `search`, `agent`, `chat`, `job`. Profiles live in ~/.aiw/config.json.", + "Fresh installs land on a guided onboarding flow that captures Astra and HuggingFace credentials, writes them to a managed `.env` in the workbench-data volume (mode 0600, allow-listed keys only), and restarts the runtime so the new values take effect — no shell access required.", + link: { + label: "Open onboarding", + href: "/onboarding", + }, + }, + { + title: "System status page", + summary: + "New /status route renders live traffic-light cards for the control-plane probe, chat-provider probe, ingest queue, and the last 100 error envelopes (no PII). Polled every 10 seconds so a stuck install is visible without grepping container logs.", + link: { + label: "Open /status", + href: "/status", + }, + }, + { + title: "Error envelopes carry remediation hints", + summary: + "Every API error now ships with a one-line `hint` and a `docs` link drawn from a 67-entry registry. The web UI surfaces them in toasts; the new `aiw doctor --explain ` prints the long-form entry; the full catalog lives at docs/errors.md.", + link: { + label: "Browse the error catalog", + href: "https://github.com/datastax/ai-workbench/blob/main/docs/errors.md", + }, + }, + { + title: "CLI: aiw doctor, status, profile, completion", + summary: + "`aiw doctor` runs a PASS/WARN/FAIL pre-flight checklist; `aiw status` is the one-line health probe; `aiw profile {ls,use,rm}` manages stored credential profiles; `aiw completion {bash,zsh,fish}` emits a shell completion script. Every command supports stable JSON output and documented exit codes.", link: { label: "Read the CLI README", href: "https://github.com/datastax/ai-workbench/tree/main/packages/aiw-cli#readme", }, }, { - title: "MCP read tools", + title: "Curated Prometheus metrics + Grafana starter", summary: - "External MCP clients can now discover workspace agents via `list_agents` / `get_agent` without leaving the protocol. Ingest + delete write tools already shipped earlier.", + "Five new metric families land at /metrics: chat requests by provider + outcome, stream tokens, ingest documents, search requests by mode, search latency. A drop-in Grafana dashboard JSON ships at docs/observability/grafana-workbench.json.", link: { - label: "MCP docs", - href: "https://github.com/datastax/ai-workbench/blob/main/docs/mcp.md", + label: "Production guide", + href: "https://github.com/datastax/ai-workbench/blob/main/docs/production.md", }, }, { - title: "RLAC on Documents (Preview)", + title: "Opt-in anonymous telemetry", summary: - "Enable Row-Level Access Control per workspace from the settings page. Define principals, run the policy preview, watch decisions in the audit log. API + audit shape may still change before GA.", + "Off by default. Enable with WORKBENCH_TELEMETRY=1 / AIW_TELEMETRY=1 and (optionally) point at a sink. Strictly categorical fields only — install id, version, event name, error code. No request bodies, paths, names, or secrets ever leave the process.", link: { - label: "Read the Preview guide", - href: "https://github.com/datastax/ai-workbench/blob/main/docs/rlac-preview.md", + label: "Event catalog + opt-out", + href: "https://github.com/datastax/ai-workbench/blob/main/docs/telemetry.md", }, }, { - title: "Skeleton loaders + a11y polish", + title: "Conformance now covers chat", summary: - "List and table pages render shimmer placeholders instead of layout-jumping spinners; shared loading / error / empty states announce themselves through live regions for assistive tech.", + "A new FixtureChatService replays scripted token streams so the SSE happy path + agent message CRUD are pinned in the cross-runtime conformance harness. SSE response bodies normalize into a deterministic array of {event, data} records.", }, ];