Skip to content

chore(studio): vendor the Atrium foundation — module skeleton, UI kit, tooling, license correction, CI - #966

Closed
jtenniswood wants to merge 3 commits into
mainfrom
studio/S01
Closed

chore(studio): vendor the Atrium foundation — module skeleton, UI kit, tooling, license correction, CI#966
jtenniswood wants to merge 3 commits into
mainfrom
studio/S01

Conversation

@jtenniswood

Copy link
Copy Markdown

Stack 1/21 — Studio: vendor the Atrium foundation

First PR of the stacked landing of #618 (the Studio/Atrium workspace, split for review; the original branch stays archived as feat/studio-atrium). Each PR in the series is CI-green on its base; the assembled top of the stack is byte-identical to the original branch in studio/src, studio/tests, and studio/scripts.

Three commits, in the audit structure #618 promised — please merge with a merge commit, never squash:

  1. chore(studio): import Atrium UI (filtered vendor drop) — byte-identical cherry-pick of the filtered vendor drop from stacklok/enterprise-ui-prototypes (159 files; verified git diff empty against the original drop commit 3d0159f2). Review by provenance, not line-by-line.
  2. chore(studio): correct stray Proprietary license headers — the 8 files that carried SPDX-License-Identifier: Proprietary contradicting the source repo's Apache-2.0 grant, corrected in their own commit for auditability.
  3. chore(studio): pin the foundation to its final shape — deletes every vendored file whose home is a later PR in this series and pins what stays to its final state.

What's in the tree after this PR: the shadcn/Radix UI kit (src/components/ui/, knip-ignored by convention), root chrome (layout, globals, error/not-found pages, manifest/icons, brand-logo route), foundation libs (utils, typography, formatters core, profile-preferences UI-scale slice), the npm/Biome/knip/vitest toolchain (Node 22 via .nvmrc, npm pinned 10.9.4, lockfile regenerated with the pinned npm, script-less installs), studio/Taskfile.yml + root include, dependabot npm block, and .github/workflows/studio.yml (lint · typecheck · knip · vitest · build · audit · the Proprietary-SPDX gate — landing in the same PR as the header fix, so no merged state ever lacks the gate).

Docs: ADR 0288 records the module decision — renumbered from the branch's 0280, which collided with 0280-mecatui-light-theme-autodetect.md on main (docs/lint does not gate id uniqueness, so this is called out here for review). AGENTS.md gains the studio bullet; docs/architecture.md the Studio client section; the readiness tracker an honest landing-in-progress row; user-docs a stub that grows with the series; llms.txt regenerated.

Demo at this stack point: the app boots to branded chrome — the root redirect lands on the branded not-found page until the Chats surface arrives (PR 7 of the series).

🤖 Generated with Claude Code

jtenniswood and others added 3 commits September 2, 2026 11:48
Vendor drop of the Atrium workspace UI from
stacklok/enterprise-ui-prototypes @ claude/atrium-ui-updates (649bc1efb91f889e117c79f4189d8abba34c22d4),
filtered before import so prototype residue never enters this repo's
history. Every imported file is byte-identical to its source.

Excluded at import (413 of 572 tracked files):
- auth stack (better-auth/pg/OIDC), signin flow, permissions context
- legacy ai-sdk assistant sidebar, /api/chat, MCP client wiring
- MSW mock server, mock OIDC/registry/user-management routes, hey-api
  generated clients and their OpenAPI specs
- Atrium demo data (features/agent/mock-data.ts, skills fixtures):
  Studio is daemon-only; probe failure renders offline, never demo data
- disk-touching harness routes (skills/agents authoring deferred to a
  follow-up; transcript route superseded by the daemon transcript API)
- prototype deploy/repo infra (Docker, helm, GitHub workflows, husky,
  renovate, pnpm lockfile/workspace) and residue tests/e2e specs

The app does not build at this commit; wiring lands in the commits that
follow. The complete filter manifest is recorded in the pull request.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Eight imported files carried `SPDX-License-Identifier: Proprietary`
headers — stray artifacts of the source repository's
enterprise-platform sync that contradicted its own Apache-2.0 LICENSE.
This repository has no SPDX header convention of its own; the headers
are corrected to Apache-2.0 — the license the source repository
actually grants this content under — rather than dropped, so the
imported files keep their provenance visible.

Kept separate from the vendor drop so the relicensing is auditable on
its own. A CI grep gate (added with the studio workflow later in this
series) rejects Proprietary headers so they cannot regress.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The vendor drop's files whose home is a later PR in this series are removed;
every kept file is pinned to its final state: the shadcn/Radix UI kit, root
chrome and error pages, brand assets, the npm/Biome/knip/vitest toolchain
(Node 22 via .nvmrc, npm pinned to 10.9.4, lockfile regenerated with the
pinned npm, installs script-less), studio/Taskfile.yml + the root include,
dependabot's npm block, and the Studio CI workflow (lint, typecheck, knip,
vitest, build, audit, and the Proprietary-SPDX license gate promised by the
previous commit).

Docs: ADR 0288 records the module decision (renumbered from the branch's
0280, which collided with ADRs that landed on main since — twice: main took
0287 while this series was assembled), AGENTS.md gains the studio bullet,
docs/architecture.md the Studio client section, the readiness tracker an
honest landing-in-progress row, and user-docs a stub that grows with the
series. llms.txt regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jtenniswood jtenniswood added documentation Improvements or additions to documentation enhancement New feature or request config Operator settings.yaml / YAML config surface, flags, and config UX (init, reference, enable models) WebUI Applies to the WebUI interface labels Sep 2, 2026
@dussab dussab closed this Sep 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

config Operator settings.yaml / YAML config surface, flags, and config UX (init, reference, enable models) documentation Improvements or additions to documentation enhancement New feature or request WebUI Applies to the WebUI interface

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants