Skip to content

Registry - Migrate to registry V3 - #2611

Open
SpicyPete wants to merge 24 commits into
masterfrom
registry/update-to-v3
Open

Registry - Migrate to registry V3#2611
SpicyPete wants to merge 24 commits into
masterfrom
registry/update-to-v3

Conversation

@SpicyPete

Copy link
Copy Markdown
Contributor

Upgrade redpanda-ui registry to v3

Re-pulls src/components/redpanda-ui/ from the v3 registry and migrates the app onto
the new token and variant APIs.

Registry pull

  • 94 vendored component/lib files re-synced from the v3 registry.
  • Token surface shrank from 496 --color-* names to 162. Removed tokens compile to
    nothing (no build error), so every retired name was swept out of src and tests.
  • Component API changes applied app-wide: Badge moves to the two-axis tone +
    variant API, Button's inverse-outline/inverse-ghostcurrent-*, plus
    Alert, DropdownMenu and Sheet updates.
  • Raw palette classes (text-gray-*, bg-gray-*, …) replaced with semantic tokens
    rather than re-pinned — under v3 they fall through to Tailwind's palette and change hue.

New guardrail

  • bun run theme:check (wired into bun run build) audits a palette override sheet
    against the registry's token surface: fails on dead token names and on
    half-overridden families, where a control takes your colour at rest and the
    registry's on hover.

Fixes and cleanup

  • Chakra's unlayered * border reset hardened in globals.css so Tailwind
    border-* utilities paint again; @source not "../.claude" keeps class names in
    the agent skill docs out of the bundle.
  • Double page headers removed on schema-create, secrets-store create/edit/list, and
    the shadowlink schema-registry section.
  • cnfastclsx (upstream change); tailwind-merge config now stops a
    leading-* being dropped by an adjacent font size.
  • Deleted dead code: src/colors.ts, state/type-experiments.ts, registry
    lib/shared-types.ts and lib/use-copy.tsx.

Docs

  • New agent rules: registry-upgrade.md (the pull-and-migrate procedure and its
    silent-failure traps) and style-use-tokens.md; ui-development SKILL.md and
    style-use-variants.md updated for the v3 variant tables.

Note for reviewers

Console is embedded in cloud-ui and both apps declare tokens on the same :root, so
this needs to land alongside the matching cloud-ui registry bump — otherwise the
host's palette wins for whichever app is behind.

@SpicyPete
SpicyPete requested review from a team, eblairmckee and jvorcak August 21, 2026 21:43
@SpicyPete SpicyPete self-assigned this Aug 21, 2026
@SpicyPete
SpicyPete requested review from datamali and sago2k8 and removed request for a team August 21, 2026 21:43
@github-actions

github-actions Bot commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

🚨 Registry drift detected

App: frontend · Scope: diff vs origin/master · Files: 185

Count
⚠️ Outdated registry components 0
🛠 Locally-modified components 5
❓ Unknown to registry 0
🎨 Off-token palette colours 0
🔢 Ad-hoc utility classes 0
Components needing attention
Status Component Uses Detail
🛠 locally-modified button 78× no tagged release matches installed bytes
🛠 locally-modified copy-button 10× no tagged release matches installed bytes
🛠 locally-modified separator no tagged release matches installed bytes
🛠 locally-modified tabs 15× no tagged release matches installed bytes
🛠 locally-modified theme no tagged release matches installed bytes

Generated by lookout audit-changes.

SpicyPete and others added 12 commits August 24, 2026 07:27
The lint job runs `bun run lint` and fails on a dirty tree. `bun install`
reprints yarn.lock (bunfig `[install.lockfile] print = "yarn"`), and the
committed mirror no longer matched what bun 1.4.0 prints from the current
bun.lock, so the job failed with " M frontend/yarn.lock".

The stale copy came from c97ee60, where the yarn.lock regenerated alongside
the clipboard-polyfill addition had loose ranges (framer-motion@>=4.0.0,
react-hook-form@^7.0.0, date-fns@2.x, acorn@^8, browserslist@>= 4.21.0,
@chakra-ui/styled-system@>=2.0.0, @tanstack/router-core@^1.170.0) filed under
the opposite duplicate-version entry, plus a split semver@^7.5.4 entry.

No dependency, version, or integrity hash changes -- only range-key grouping.
Verified byte-identical across four warm runs and a cold install with no
node_modules, and the printed output covers both darwin and linux optional
binaries, so it is platform-independent and will match CI.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffed all 163 vendored files against the published registry
(https://redpanda-ui-registry.netlify.app/r/{name}.json). 162 were already
byte-identical; only sidebar.tsx was behind.

SidebarInset gains min-w-0 so wide content scrolls its own container instead
of the document. Resynced from the published content rather than hand-patched,
so the file stays byte-identical to upstream.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Commit 88c16c7 ("lock file") committed a yarn.lock whose peer-range
specifier groupings (@chakra-ui/styled-system, @tanstack/router-core,
acorn, browserslist, date-fns, framer-motion, react-hook-form) do not
match what bun 1.4.0 generates, so `bun install` in CI rewrote the file
and the lint job's dirty-tree check failed.

Regenerated from package.json + bun.lock with the pinned bun 1.4.0.
Result is byte-identical to the lockfile at 28ee6ac, the last commit
on this branch with a green lint job.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
SpicyPete and others added 2 commits August 26, 2026 07:33
Bumps @base-ui/react ^1.5.0 -> ^1.7.0 (with its @base-ui/utils and
@floating-ui/* subtree) and re-pulls all 90 vendored registry items.

8 of 163 vendored files changed; the other 155 were already at 3.1.0:
- progress: drop the translateX indicator: Base UI already sizes the fill
  with an inline width, so the percentage was applied twice.
- radio-group: keep an explicitly-passed `value` controlled while form
  state initializes (react-hook-form hands over undefined on first render).
- toggle-group: support group-level `disabled`, inherited by items.
- tabs: forward Base UI's `activateOnFocus` on TabsList.
- auto-form boolean/select/oneof: alignItemWithTrigger={false} on
  SelectContent.
- theme.css: drop the now-unused caret-blink keyframe (Base UI 1.7's OTP
  Field owns the caret; console does not vendor input-otp).

No callsite changes required. The lockfile delta is confined to the
base-ui subtree — @base-ui/utils no longer needs its nested reselect pin.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Comment on lines +28 to +30
# Pinned: bun generates yarn.lock (bunfig print = "yarn") and the output
# changes between bun versions, which trips the lint job's dirty-tree check.
bun-version-file: frontend/.bun-version

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


- The removed-token sweep is empty across `src` **and** `tests`, and no removed name reappears.
- Every `[upstream]` local addition is re-applied; every non-item triaged.
- `bun run theme:check && bun run type:check && bun run lint && bun run build && bun run test`.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the theme check being a distinct command

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants