Skip to content

Studio UI rollout

Status: Current | Last reviewed: 2026-10-08

This record covers the non-conversational-generation design port into apps/ai-manager. It now also contains the gated conversational design preview. The standalone snapshot under studio/real is a historical reference. Export and import designer changes against the current application source.

October 2026 design branch integration

The integration follows the designers' layouts and interactions by default. Working controls omitted from a replacement require a product decision. On 2026-10-06 the product decision was to replace the normal Performance experience with Lynn's Agent Test design and retain the original Performance page only at /agents/<agent-id>/performance, without a navigation link. Its saved-case editor, goals/goldens, continuous review and detailed diagnostics remain intact. Editor Test and Preview Run tests both open Lynn's dialog.

The consolidated designer worktree merges main (29594f9), Lynn's feature/lynn-wip (b6c21d6), Lisa's feature/prototype-updates-lisa (1be945d) and feature/prototype-updates (dc6714b). framework-sync (402d89a) is already an ancestor of those branches. Log conflicts retain both histories; repository conflicts use Lisa's cards/drawer and Lynn's Agents heading/filter order. Older expanded mocks remain prototype-only, behind newer specific handlers.

Production imports the design components with adapters for real saved tests, durable simulation jobs and evaluator evidence. Generation is explicit via Generate tests, Refresh tests and a gap's Create test; loading Test never invokes a model. Authored edits, removed-case tombstones and historical run snapshots survive refresh. See Agent evaluation.

Repository View Details opens Lisa's drawer. Duplicate, Export and Delete call their actual APIs. Duplicate preserves source-version selection and editable name/description; workflow export preserves the flag-gated LangGraph format. Tags and workflow activation now live in editor settings, following the October 8 product decision below. Row access and feature gates still apply. The status label is Unpublished Changes. Analytics filtering remains available when enabled.

Repository focus/visibility refreshes keep the current cards mounted while the list APIs run. Loading placeholders are reserved for the first load of a user/tenant/permission scope; previous-scope cards and errors are hidden until that scope finishes loading. Refresh results still reconcile edits and deletions made in another tab.

Client logos appear only in the details drawer for voice/chat agents and derive from active Branding linked through agents.surface_config_id. Pipeline list rows expose only its ID, name and logo URL; the browser loads /api/pipelines/:id/branding-logo under RunAgents access. The route validates the agent and Branding tenant, serves uploaded assets, or redirects to an external HTTPS logo. No name-based or pinned-client mapping is used; missing/unreadable logos are omitted.

Home notification dismiss/done/seen/snooze state syncs through GET/PATCH /api/dashboard/notification-state, scoped to tenant and user. The local cache provides continuity and migrates missing entries on first sync. PATCH merges only supplied fields; 500 retained entries and a seven-day maximum snooze bound state. Failed sync stays visible with Retry. Notification contents come from the personal workspace feed. Following product review, Home and the bell include generation question/complete/failed events and workspace announcements only. Aggregate draft/failed-workflow notifications and the client-side fallback that recreated them are removed.

Migration 073_studio_design_integration.sql adds agent_test_suites and studio_notification_states, forced tenant RLS and the composite agent identity index. It is included in the baseline and populated-city migration list. No new worker service is required: the existing simulation and scoring workers execute and evaluate tests. Generation uses the tenant's configured OpenAI integration and SIMULATION_AUTHOR_MODEL (default gpt-4o-mini).

Integration validation

The local design reference is 6c4bc3b, containing all five source branches. Production and prototype typechecks pass. Scoped production lint has no errors (three warnings in the copied flexible-config reader and compatibility parameters); affected prototype-test lint passes without warnings.

Validation covers 86 regression tests, a separate real-database integration test for suite concurrency, preserved edits, pinned jobs and tenant isolation, and a clean fresh-database schema drift check. Migration 073 is applied to local Vanguard. Thirteen prototype browser cases passed across the initial run and focused reruns; three connected-app browser cases cover explicit generation, scenario preservation, pinned results, Branding/duplicate actions and notification retry/server restoration. Action/model responses in those browser cases are controlled fixtures; live paid generation and a new end-to-end worker run were not exercised. Authenticated live reads confirmed Test data, Home preferences, an existing Branding logo and the legacy Performance URL.

API specs and both documentation sites build. The full route-auth audit still reports four pre-existing handlers in the Allianz reviews and Takeda interactions routes; the new routes use the standard authenticated wrappers. The consolidated design history and application import are local; no remote push or deployment was performed.

Header follow-up and original analysis review

Agents and Design with AI use StudioPageHeader, preserving Lynn's 72px white band and 26px teal title. studio-create-actions is an unboxed horizontal flex group; Import has no white fill or border, and New Agent retains its teal primary styling. The controls stay side by side at narrow widths; the header can move the entire action group onto another line. The bell occupies its own flex item. Home keeps its greeting and a borderless, transparent New Agent button. Its Notifications widget is the sole notification surface on Home; there is no separate greeting bell. Keyboard focus remains visible. The duplicate sidebar bell is removed; agent-editor diagnostics remain in EditorNotificationBell. Analytics now uses the Agents library's type filter, with maximized previews at /agents/{id}/analytics?preview=1 and a separate Edit action. Director is the editor for the new Scene Agent type in the same library. Scene and Analytics have no separate sidebar items. See Director and Analytics for saved drafts, canonical links, published access, and recording behavior.

The original merge assessment was rechecked against the connected code:

Design area Connected result
Main / framework-sync Both included in the consolidated design ancestry. Vanguard's working Yjs layout-effect fix is retained instead of importing obsolete lint suppressions.
Lynn Test Original tab layouts with real saved cases, explicit generation, coverage, revisions, removed-case preservation, caller variations and pinned evidence. Version/sandbox controls and draft flushing remain. Legacy Performance is direct-URL-only by product decision.
Lynn Home / navigation Home layout, conversation ranges, workflow labels, plain-language editor notices and global notification placement. Durable preferences remain; Home no longer aggregates agent-specific issues.
Lisa cards / drawer Tinted cards and right-hand View Details drawer, recursive subagents, favorites, tags, workflow activation, permission gates and actionable Duplicate/Export/Delete. Voice/chat client logos use linked Branding; workflows have none.
Older prototype updates Expanded offline mocks and reference material stay in the prototype, with newer handlers taking precedence. No synthetic services are imported into the live backend.
Shared controls / imports Popover anchor export is included. ZIP import now forwards the manifest name in both direct and reference-mapping paths.

The follow-up passes both typecheck and 25 focused unit cases. Seven connected browser cases plus authentication setup pass, including client-side page navigation, 390/780px bounds, Analytics chat controls, ZIP request naming and real database/API notification filtering across tenants. The original Test, drawer and notification-sync browser cases remain green. New models and worker execution were not invoked by this UI follow-up.

user_notifications stores the permitted generation/workspace event types. Filtering happens before the list limit and also scopes mark-all-read. There is no automatic service-outage publisher yet: the existing status-page API is an available internal source, while external provider status would require its own integration. No outage is inferred from an individual agent failure or from an unavailable notification feed.

October 8 follow-up audit — newer drawer and card changes

This records the initial assessment before the import below; its recommendations were superseded by the product decisions in the next section. Refreshed all designer remote branches and compared them with the imported design reference 6c4bc3b and Vanguard 8b7ce59f. Designer main is now 7b09f23; Lisa's branch is 5121f5a. The newer UI changes are:

Source Design change Vanguard at initial review
Main, c000c9c Simplified drawer: display tags without editing them there, remove Access, capitalize Edit Agent. Drawer still edits tags, shows Access and uses Edit agent / View agent.
Main, c000c9c Keep three card columns beside the open drawer when the repository container is at least 1060px wide. Opening the drawer always reduces the desktop grid to two columns.
Main, ee8cb9a Highlight the card whose drawer is open, including aria-current. No selected-card highlight or current marker.
Lisa only, 5121f5a Add Capabilities chips for subagents, built-ins, linked tool kinds, media and workflow steps. Subagent tree exists; Capabilities section is absent.
Lisa only, 5121f5a Keep the agent's own type/icon/colour, show subagents as a badge/capability, remove Multi-Agent from type filters and search-derived labels. Agents with subagents still display as Multi-Agent and can be filtered that way.
Lisa only, 5121f5a Remove workflow Active from the drawer; change Pending changes to Unpublished Changes; move client logos under the card type label. Active remains in the drawer; current status wording and footer logo placement remain.

Lynn's newer branch tip e465751 contains no further product UI change beyond the previous import; its additional changes concern collaboration guidance, checks and local configuration. The older prototype-updates and framework-sync tips remain dc6714b and 402d89a. The original drawer, recursive subagent tree, favorite controls and connected Duplicate/Export/Delete actions are already imported; these findings concern subsequent revisions.

Import considerations:

  • Preserve reachable controls. The prototype keeps tags and workflow activation in RepositoryManagement. Vanguard has that component on disk but does not render it: the card menu opens individual action dialogs. Removing the drawer controls directly would therefore remove their reachable UI. Recommended adaptation: move Edit tags and Activate/Deactivate to the card menu while adopting the simplified drawer.
  • Preserve subagent discovery. Removing the Multi-Agent type filter also makes old ?type=multi_agent links show all agents in the prototype. Recommended adaptation: keep a Has sub-agents filter and map old links to it while adopting the agent's own type, icon and colour.
  • Adapt the Capabilities read. Most chips derive from config already present in repository records. The prototype fetches /api/tools, which requires AIManager:ManageTools in production, and caches its promise at module scope without a tenant/user key. Use an appropriately scoped metadata read, preserve author/viewer permissions, and reset caches on tenant/user changes. The existing /api/tools/references supports author/tool-manager metadata reads; viewer support would need a narrowly scoped summary. No new execution backend or database migration is implied by this presentation change.
  • Retain production adapters. Keep linked Branding for voice/chat only, authenticated logo loading, permission-aware actions, source-version duplication, and Vanguard's newer Scene/Analytics types and routes. The design still uses demo-name logo mappings and predates the latest Scene/Analytics repository work. Preserve the agreed header/button fixes and Home's widget-only notification presentation.

Read-only browser verification at 1920×1080 confirmed Vanguard's workflow drawer has Access, Active and Add Tags, lacks Capabilities and a selected-card marker, and leaves two 609px card columns beside the drawer. No agent data was changed. The newer prototype tests were not rerun during this audit; its change log reports two existing repository-spec failures. No application files or submodule pointer were changed by this assessment.

October 8 import and product decisions

Imported the drawer/card changes through Lisa’s 2cdc3f3, which supersedes the broader Capabilities proposal in 5121f5a. The drawer now shows only Multimodal, Customer Authentication, Video Enabled and Human-in-the-Loop, using existing pipeline capability helpers and built-in references; workflows use human_review nodes for Human-in-the-Loop. Subagents retain their own tree and card count. There is no tool-list request or additional execution backend.

The selected card is highlighted, wide drawer layouts retain three columns, the drawer omits Access and tag/activation controls, and its action is Edit Agent (or View Agent for a viewer). Agent identity uses its own type/icon/colour; Multi-Agent and Has sub-agents filters are absent. Legacy multi_agent filter URLs open the unfiltered repository. Scene/Analytics routes and types remain intact.

Product decisions: tags and workflow Active belong in the canvas, not the list. EditorMetadataSettings is available in conversational-agent Settings, workflow Settings, Analytics Settings and Scene Director Details. It reads identity data on mount, saves tags through the existing PATCH tags routes, and changes workflow activation with the existing single-field PUT. Tags are shared across versions; these saves never pass through versioned config or collab autosave. Failed tag saves preserve the input for retry. Workflow GET now includes identity tags, and metadata reads follow draft-only workflow redirects. Tenant/user/identity keys reset the component state; existing API authorization remains authoritative. Templates have no activation switch. The workflow header reflects a successful activation change immediately.

Branding clarification: keep real linked voice/chat Branding logos in the drawer only, with no logos on cards or workflows. This overrides the prototype’s latest hide-all-logos choice. The authenticated logo loader and error fallback remain.

Validation: typecheck and 15 focused unit tests pass. Six application browser cases plus authentication setup pass, covering the existing Test flow, drawer Branding/duplicate actions, Home preferences, tag failure/retry/reopen, workflow activation and drawer selection/filter behavior. A focused rerun also verifies metadata loading through a draft-only workflow redirect. Metadata writes in the browser cases are intercepted fixtures; real customer agents were not modified. Desktop/mobile screenshots confirm the drawer layout, including no horizontal overflow at 390px. Both documentation sites and generated API references build; existing documentation-link and TypeDoc warnings remain.

Included in the running application

  • Open Sans typography, teal brand tokens, sidebar and editor accent styling, with light and dark theme support.
  • Home at /dashboard; Insights is deferred and /dashboard/insights redirects to Home.
  • One Agents repository at /agents, with reference-styled cards, search, type/status/date filters, creator filtering, sorting, pagination and the existing creation/import and management controls. /workflows redirects to /agents?type=background.
  • Persisted favorites and recent visits, with both agent and workflow entity types retaining their existing IDs and APIs.
  • Current editors, Guided/Smart subagents, procedures, tools, previews, publishing, version controls, background graphs and all existing runtime configuration.
  • Background-agent labels in creation, management and export dialogs. Published conversational agents offer Open draft when a draft exists and explain their read-only state; draft creation keeps its existing validation.

The conversational brief/chat workspace, simulated scenarios and knowledge planning UI are available behind the default-off runtime flag FEATURE_CONVERSATIONAL_DESIGN. This does not enable real AI authoring: existing Generate with AI and editor Assistant features retain their own gates. The richer authoring work remains covered by the separate research spike.

September 2026 experience alignment

The root index.html reference was audited before implementation. The shared repository, editor chrome and prompt/settings workspaces in apps/ai-manager and the independent studio/design export now receive the same focused changes. See the detailed audit for the original comparison and the implementation record for decisions, contracts and verification.

The port keeps Open Sans, uses a compact repository header, strengthens canvas and inspector hierarchy, groups secondary toolbar actions, and adds a saved prompt library to the expanded editor. Settings use conditional tabs and make automatic draft saving explicit. No graph schema, runtime subagent model, publishing contract, or independent saved-agent linking capability is introduced.

Activity now uses a centered Change History / Conversation History modal. Conversations paginate into the existing transcript player, with Back restoring the list position. The header bell collects real editor and Preview notices; valid configuration remains in validation state so readiness can recheck after edits. The collapsed inspector rail is removed, Preview has a small edge tab, and Canvas View exposes Mini Map immediately below Structural. Saved appears before toolbar buttons. See the implementation record for response contracts and prototype sample-data limits.

Conversational preview gate and exports

Set FEATURE_CONVERSATIONAL_DESIGN=true in Vanguard's ai-manager environment. Leave it unset or false elsewhere, then restart ai-manager after changing it. There is no public build-time equivalent. RootLayout supplies the navigation gate; the proxy and /studio layout guard direct links. The author needs access to conversational agents or background workflows. No auth bypass or mock backend is enabled by this flag.

The regular app now serves live conversational design at /studio and /studio/build/[briefId]. It reuses Claude Code generation and editor-assistant infrastructure, creates all four draft types, and stores the conversation and visual design on the server. Generate with AI availability is checked separately. Existing editors, Guided/Smart subagents and procedures remain the configuration baseline.

npm run dev:prototype opts in by default and retains the scripted preview (an explicit false disables the entry). Prototype briefs use browser-storage keys containing tenant and user IDs; they are not silently adopted as live sessions. Its draft adapter and reference metadata retain their documented limitations.

The main-tree exporter includes both surfaces and writes its ZIP to the repository root. Keep designer changes in apps/ai-manager; the older studio/real source is a historical reference.

Consistency follow-up

Home, Insights, repository, administration and editor chrome use the shared Open Sans heading/body scale in studio.css. Insights previously used a 900-weight title while Home used 700; the family was already the same. Inspector titles are shown once, and collapsed sidebar links use centred square hit areas. The Insights word cloud also waits for the loaded brand font and uses the canvas's inherited family, replacing its separate system-font stack. Home uses the reference's 32px heading and fixed 24-hour activity window. Insights and its range controls are deferred. The shared font loads Open Sans 300/400/600/700 to match the master HTML's weight fallback rather than the heavier variable-font 500.

Both editors start with the preview/tester collapsed. Workflow management stays in its page header; canvas controls move into the graph, with the same outer spacing and resizable-panel treatment as agents. Agent Share and Settings Access are hidden. Settings now opens Integrations; Profile Settings remains separate.

Turn control is an always-available capability card. Idle detection is an optional library entry/card using the existing turn_control.idle settings. There are no new runtime capability refs, schema changes or backend dependencies.

The reported /workflows/1789 link returned 404 because both its identity and version rows were absent from the local database when inspected on 2026-09-10. At the user's request, its two orphan recent-visit records were removed from the trueserve tenant; there were no favorite records to remove. Repository reads bypass the browser cache and refresh on window focus or return to a visible tab, so an already-open list reconciles deletions by other tabs/authors. The editor also explains a missing/current-tenant link and offers Back to agents.

Routes and access

proxy.ts, MainLayout and navigation agree on the combined repository. Bare /agents and /workflows use either authoring permission; their detail routes retain the matching agent/workflow permission. The list hook calls only the enabled, permitted domain APIs. Simulator/emulator custom navigation links are filtered; existing preview/runtime routes are not removed.

Home always requests GET /api/dashboard/home?range=24h. The API retains its existing 1h|24h|7d|30d compatibility for other callers. Its minimal contract is:

Field Meaning
range Validated range; defaults to 24h
conversationCount Conversation count, including tests; null without agent access
workflowRunCount Background run count, including tests; null without workflow access
recentActivity Latest 50 accessible conversations/runs; includes status, test flag, start timestamp, nullable ended_at and nullable numeric duration_ms
failedWorkflows Up to ten background agents with the most error/failed runs; empty without workflow access

The handler checks tenant authoring permissions, each API-token domain scope and server capability flags independently. Each query explicitly filters the active tenant, including for platform admins. Home does not return transcript word clouds, audit details or admin aggregates. Timing is additive: conversations use stored duration_ms, falling back to ended_at - started_at; workflow runs use completed_at - started_at. PostgreSQL casts timing to double precision so JSON contains numbers. No migration is required. Home renders duration/In progress without Test or status tags; the deferred Insights component retains its former detailed feed presentation for future review.

/api/dashboard/summary retains AIManager:ManageConfiguration access. Insights has no active navigation entry: its old page redirects to Home without loading analytics. The former screen is retained as DeferredInsightsDashboard for possible future review. See the deferral note. Workflow-only deployments can use Home without passing the agents-only proxy gate. Home's repository inventory is independent of the activity time range.

Personal state and repository metadata

hooks/use-favorites.ts uses the existing /api/favorites and /api/recents contracts. Favorite writes check HTTP status, roll back failed changes, prevent duplicate concurrent writes to one item, and refresh other mounted favorite views. Reads discard stale responses when the user/tenant changes. Repository and personal-state reads retry HTTP 429/503 twice with a bounded delay. This handles short proxy request bursts; writes are never replayed.

Personal API reads and favorite deletion explicitly constrain tenant_id, even when the caller is a platform admin. Recent upserts cannot update a row belonging to another tenant. No browser-local visit store or new database table is used.

The layout records base IDs on editor navigation and remounts its content when the user or tenant changes. The repository requests 50 recents per entity type; Home no longer renders a Recently opened tile; repository recents remain available.

List metadata additions:

  • Agent lists expose identity created_by and an independent has_draft query.
  • Background lists expose the earliest version's recorded creator, resolving historical usernames to user IDs where possible. Existing has_draft remains.
  • Publication, draft existence and background activation are displayed separately. Draft available makes no claim about an actual configuration diff.
  • Creator filtering excludes rows without a known matching creator. It never substitutes edit permission for ownership.

Token scope regression found during rollout

Workflow scope expansion adds legacy pipelines:read/pipelines:write aliases. Previously, re-normalizing that expanded list interpreted those aliases as new agents:manage grants. Scope normalization now preserves explicit canonical grants and recognizes the compatibility aliases they already explain.

Legacy-only tokens still migrate to canonical grants. Unrelated legacy grants alongside canonical ones still migrate. Repeated normalization is idempotent and cannot turn a workflow-only token into an agent-management token. Callers needing both domains must hold both grants.

Verification

Run against the existing dev stack through its reverse proxy, so editor collaboration uses the real gateway:

cd apps/ai-manager
npm run typecheck
node --import tsx --test lib/api-token-auth.test.ts lib/studio/*.test.ts lib/management/tool-scopes.test.ts lib/assistant-mcp/tools.test.ts
bash ../../.devcontainer/scripts/with-env.sh env E2E_STACK=minimal npx playwright test e2e/studio-design.spec.ts --project=chromium
bash ../../.devcontainer/scripts/with-env.sh env E2E_STACK=minimal npx playwright test e2e/studio-repository.spec.ts e2e/studio-consistency.spec.ts e2e/smoke.spec.ts e2e/agent-lifecycle.spec.ts e2e/workflow-lifecycle.spec.ts --project=chromium

The repository suite uses live APIs and temporary agents. It checks branding, navigation, filtering, creator metadata, management, creation entry points, favorite persistence/error rollback, recents, mobile layout and restricted token access and authors restricted to one domain. Only the favorite write-failure response is simulated.

The existing agent lifecycle tests cover wizard creation, prompt editing, collaboration persistence, publishing and opening an existing draft. Background agent lifecycle tests cover graph editing, persistence and publishing. No call/model execution is required to validate this presentation rollout.

See also

Full navigation labels — 2026-09-23

The top-level destinations are Tools & Templates and Configuration in all navigation modes. Compact editor navigation is 88px wide, with centered 80px management buttons and full wrapping labels. This replaces the former Tools/Settings abbreviations; routes and permission checks are unchanged.

2026-09-23 — Agents repository reference alignment and hidden Variants

The master is the root index.html (AgentsPage / AgentCard). Both apps now use:

  • A 72px white header, 26px/700 teal title, and the reference 40px New Agent button. Import stays beside it, using the same sizing and the reference upload glyph. Both actions retain their existing menus and authoring/import flows.
  • The exact search placeholder, sparkles/send glyphs, 52px field, teal border and two-layer shadow. Personal-filter pills use the reference heart/person/clock glyphs, 12px text and 30px height.
  • A checkbox panel with Type, Last Modified, Date Created, Status and My Stuff. Type uses Voice, Chat, Copilot, Translation and Background, permission-gated as before. Subtype is omitted. Selections OR within groups and AND across groups. Sorting and Clear All move inside the panel. Clear All retains search.
  • Three columns at desktop, two below 1024px and one below 640px, with 20px gaps. Cards have reference borders/shadows, 48px bands, 16px white SVGs, 14px bold mode names, exact pill backgrounds/text, 16px bold titles and 12px/16.5px descriptions. Multi-agent mode is derived from actual sub-agent configuration.
  • Speech I/O uses #59B0A1 / #E3F3EF / #327065; text and multi-agent use #5B8FA0 / #E4EEF1 / #3A5D6B; copilot uses #69A57C / #E7F1E9 / #3F6B50. Background uses the reference green palette and lightning glyph because the master has no background-agent repository card sample.
  • An unshaded footer with status, published version and Last Modified date grouped on the left, and only the favorite heart on the right. A published record with has_draft uses Unpublished Changes (renamed from Pending Changes on 2026-09-24), #FCF1DA / #8A5A0B. This is draft existence, not a calculated diff. Published filtering includes these rows.
  • No result totals, type tabs, card/list selector, duplicate type counts, visible tag rows, View only badge or activation badge on cards. The card menu still provides permissions-aware Duplicate/Export/Delete. Tags and background activation are now in editor settings (October 8 decision). Twenty-result pagination remains when needed, without an agent count.
  • Variants is unmounted from Settings → Routing Rules. Traffic Distribution and Resilience remain; runtime profiles, their backend support and publish-time materialization are unchanged. No stored configuration is removed.

Font correction: the former Next Google font asset differed from the one loaded by the master: “Agents” measured 91px rather than 89px at 26px/700. The master's Open Sans v44 files are now local under public/fonts/open-sans, with its exact face weights, all 20 language/style subsets and the upstream OFL. This changes text metrics globally in both apps and removes build-time font network dependency. It supersedes the earlier assumption that the Google font loader alone guaranteed matching glyph widths.

Production impact: visual navigation/filter changes described above; no API, permission, schema or stored-data changes. Existing deep links for type, search, favorites and recents still initialize the corresponding filters. Legacy status=Has draft initializes Draft + Unpublished Changes; status=Pending Changes selects Unpublished Changes. The Status group now contains only Published, Draft and Unpublished Changes, derived from version status and draft existence. Generation, template identity and background activation do not override these statuses; missing version records display as Draft. Unknown subtypes remain visible in unfiltered results but do not add a sixth Type checkbox. My Recents uses actual recorded visits; all results use the selected explicit sort.

Reference evidence: prototype/e2e/fixtures/repository-reference.json stores 823 measured style properties, 15 master SVG definitions and dimensions. The card screenshot baseline is captured from the master, not from the implementation. Matching sample content yields zero differing pixels in the first reference card. Run repository-reference, home-reference and editor-experience prototype browser checks plus typecheck and scoped lint in each copy. This entry supersedes older repository notes prescribing type tabs, counts, a shaded footer or Draft available.

2026-09-23 — Lightning icon and collapsed navigation

Design with AI uses the master's lightning SVG (WorkflowIcon) in both the application and designer prototype. Collapsed navigation follows index.html: a 64px rail, centered 40px buttons, 18px icons, and no visible destination labels. The logo is 36px and the profile avatar is 32px. Active and hover colors use the reference white overlays. This supersedes the earlier 88px rail and wrapping compact labels, returning 24px to the canvas.

Expanded and mobile navigation retain full destination names, including Tools & Templates and Configuration. Collapsed buttons retain accessible names and show labels in hover/focus tooltips. Notification badges remain visible; profile details are available in the user menu.

Potential impact: screenshot and selector expectations for compact labels or 88px navigation must change. Routes, feature gates and permissions are unchanged.

Verification: both copies pass browser checks for all five primary/manage links in expanded and collapsed modes, exact lightning geometry, 64/40/18px rail/button/icon dimensions, logo/avatar sizing, tooltip hover and keyboard focus, profile-menu focus restoration, and full mobile labels without horizontal overflow. Both typechecks pass. Scoped lint has no errors; the existing NotificationBell effect warning remains. Both Git whitespace checks pass.

2026-09-23 — Notifications navigation styling

Notifications uses the reference outline bell and the same explicit Open Sans 14px/600 typography, 40px row, 12px icon-to-label gap, colors and hover treatment as Tools & Templates and Configuration in both apps. Its badge wrapper is a fixed, non-shrinking 18px icon box sharing the navigation SVG sizing rule. Collapsed navigation retains the centered bell, unread badge and label tooltip.

Potential breakage: none identified; polling, notification actions and the Generate with AI visibility gate are unchanged. No backend follow-up is needed. Browser verification with notifications enabled passes expanded, collapsed and mobile layout comparisons, exact bell paths/strokes, unread-badge bounds, hover colors, keyboard opening and focus restoration. Shared source/style parity is checked between both copies. Both typechecks pass; scoped lint has no errors and the existing NotificationBell effect warning.

Commit verification found and fixed mobile Escape being consumed by hidden sidebar tooltip content. Tooltips now mount only for collapsed desktop navigation. All 29 browser cases pass per copy across the full run and corrected mobile rerun; both typechecks and the four activity-duration unit tests pass. Scoped lint has no errors. The reference card still matches with zero differing pixels.

2026-09-23 — Simple card type headings

Card bands use Voice Agent, Chat Agent, Copilot, Translation Agent or Background Agent instead of technical I/O-mode headings. The duplicate type pill below the band is removed, including its empty row and top gap. Agent names are unchanged. Orchestrator role and actual sub-agent counts remain when applicable because they add information rather than repeat the heading. Reference colors, SVGs, fonts, status/version/date placement and favorite behavior remain unchanged.

This direction supersedes the earlier requirement to copy the master's I/O heading text and type pills. The visual baseline is recaptured from the master with only the approved first-card heading substitution; it is not generated from the implementation. Potential breakage: none identified. No API, stored type, filter, permission or backend adaptation is required.

2026-09-23 — Recent Activity opens its agent

Selecting a Home Recent Activity entry opens its agent editor; background runs open their workflow editor. The name is a native link whose click target covers the full row, including the icon, duration and timestamp, with keyboard focus and Enter activation. Reference typography, spacing, icons and duration labels are unchanged.

The Home API adds nullable agent_id from the existing same-tenant agent join. This is the base agent identity, separate from the conversation/run id; workflow entries retain workflow_id. The prototype emits identities from its existing agent/workflow fixtures. Missing/deleted identities render without a link, and older captured Home responses need recapturing to gain conversation links.

Potential breakage: none identified; this is an additive response field. Existing authoring permissions, token scopes and editor access checks remain in force. Frontend and Home API updates should ship together for live conversation links.