Skip to content

revert: undo the UI kit and AI design guidance work (#1414) - #1417

Merged
vivek7405 merged 1 commit into
mainfrom
feat/remove-design-exemplars
Aug 15, 2026
Merged

revert: undo the UI kit and AI design guidance work (#1414)#1417
vivek7405 merged 1 commit into
mainfrom
feat/remove-design-exemplars

Conversation

@vivek7405

@vivek7405 vivek7405 commented Aug 15, 2026

Copy link
Copy Markdown
Collaborator

Closes #1416

Reverts #1414 in full. Produced with git revert on the squash commit, so the tree is byte-identical to the commit before it, verified with git diff 09f81345^ coming back empty.

Why the whole thing rather than the parts

The token layer looked like the defensible core, and checking it against the shadcn clone is what settled the rest. @webjsdev/ui exists for shadcn parity, and every token change in that PR moved away from it:

Change in #1414 shadcn reality
--success / --warning / --info plus subtle pairs, twelve tokens shadcn ships none of them
--shadow-e1 through --shadow-e4 role scale, seventeen call sites renamed shadcn uses Tailwind's stock scale (button is shadow-xs)
--destructive-foreground "contrast fix" shadcn's values are byte-identical to what the kit already had
cn() classifier learning e1..e4 only needed to support a name shadcn does not have

The destructive one is the sharpest. That 1.65:1 pair is shadcn's own light oklch(0.97 0.01 17) and dark oklch(0.58 0.22 27), and shadcn's button carries text-white rather than reading the token, exactly as this kit did. So it is latent by design on both sides. #1414 called it a live shipped bug, and pointing the button at the "fixed" token would have dropped it to 2.49:1 in dark until review caught it.

Everything else goes for reasons that were visible while it was being built:

  • The six primitives each composed from helpers already in lib/utils.ts. fieldGroupClass() was stackClass({ gap: 4 }) and inputGroupTextClass() was byte-identical to hintClass().
  • The two example screens were single static screens over derived in-memory data, listed beside a real composed app with a database.
  • references/design.md was explicitly the unproven half, and its owner-run gate never ran, so it shipped measuring nothing.
  • scripts/eval-design.mjs exists only to run that gate.
  • The Design blocks on 38 component headers carry the same unproven premise into every user's repo via webjsui add.
  • The gallery payload rescaling edited working demos to satisfy a rubric the same PR introduced.

Not addressed here, on purpose

shadcn ships --surface, --surface-foreground, --code, --code-foreground and --selection, and this registry theme has none of them. That is a real parity gap, in the opposite direction, and adding it inside a revert would repeat the mistake this revert exists to undo.

Test plan

  • git diff 09f81345^ is empty, so the revert is exact
  • 409 tests green across packages/ui, repo-health and scaffolds
  • webjs typecheck and webjs check clean on gallery and website
  • Dogfood: website 200 on /, /docs/styling, /ui, /ui/button; gallery 200 on /, /examples/todo, /features/frames, /features/forms; no broken preloads
  • Browser / e2e / Bun: N/A, the tree is restored to a state those suites already passed on

@vivek7405 vivek7405 self-assigned this Aug 15, 2026
Reverts 09f8134 in full. The tree is byte-identical to the commit before it,
produced by git revert rather than by hand so nothing is left behind.

The token layer was the part that looked most defensible and it is the part
that settles this. @webjsdev/ui exists for shadcn parity, and measured against
the shadcn clone every token change in that PR moved away from it. shadcn
ships no --success, --warning or --info, so those twelve tokens were an
invention. It uses Tailwind's stock shadow scale at the call site, so renaming
seventeen usages to a shadow-e1 through shadow-e4 role scale was churn against
parity, and it forced a cn() classifier change in three copies to support a
name shadcn does not have.

The destructive contrast fix is the sharpest case. shadcn's own values are
byte-identical to what the kit already had, light oklch(0.97 0.01 17) and dark
oklch(0.58 0.22 27), and shadcn's button never reads the token: it carries
text-white, exactly as this kit did. So the pair that PR called a live bug is
upstream parity, latent by design on both sides, and the change would have put
a real regression on the button until review caught it.

The rest goes for reasons that were visible earlier and that I did not act on.
The six primitives each composed from helpers the kit already had. The two
example screens were single static screens listed beside a real composed app.
The design reference was explicitly the unproven half and its owner-run gate
never ran, so it shipped measuring nothing, and the evaluation harness exists
only to run that gate. The header blocks carry the same unproven premise into
every user's repo. The gallery payload rescaling edited working demos to
satisfy a rubric that PR introduced.

One genuine parity gap surfaced on the way and is NOT addressed here, since
adding it inside a revert would be the same mistake again: shadcn ships
--surface, --surface-foreground, --code, --code-foreground and --selection,
and this registry theme has none of them.
@vivek7405
vivek7405 force-pushed the feat/remove-design-exemplars branch from f2f49e1 to 8f26902 Compare August 15, 2026 05:12
@vivek7405 vivek7405 changed the title feat(gallery): remove the dashboard and settings design exemplars revert: undo the UI kit and AI design guidance work (#1414) Aug 15, 2026
@vivek7405
vivek7405 marked this pull request as ready for review August 15, 2026 05:19
@vivek7405
vivek7405 merged commit 948d855 into main Aug 15, 2026
10 checks passed
@vivek7405
vivek7405 deleted the feat/remove-design-exemplars branch August 15, 2026 05:22
vivek7405 added a commit that referenced this pull request Aug 15, 2026
Clears every package carrying unreleased user-facing work since 0.7.50.

core adds refreshPage, which re-renders the current url on the server and
applies it in place with no reload, no history entry and no scroll, and
prefetches a link that drives a frame in that frame's own dimension so the
click costs no round trip. The fix records a same-document history entry
before the swap rather than after, which is what made an iOS swipe-back
preview the page the user was already on.

server stops a dev edit to a page or layout reloading the browser, so hydrated
state and scroll survive a save, and marks a sliced frame response so the
client can tell a real subtree from a whole document. The fixes render an
error boundary inside its own layout chain, which makes navigating into a
failing page a soft navigation with the chrome intact rather than a full page
load, coalesce a burst of dev reload signals so rapid edits stop leaving the
page unstyled, and root the vendor specifier scan in the module graph, where
21 of the 24 specifiers the old whole-directory scan found in website were
phantom.

ui takes the a11y fix alone, measured against Chrome's computed accessibility
tree: two nested dialog nodes collapse to one, and an ordinary toast stops
resolving under two live roots.

Three packages are deliberately absent. cli, mcp and intellisense carry no
user-facing change in the range. cli's only such commit was #1414, which #1417
reverted in full, so what remains is the doctor barrel split, an internal move
with an unchanged export surface. mcp picked up three doc-string edits from
the same refactor, naming the new sibling-directory paths its `source` tool can
read, and the paths it already documents still resolve because they are
barrels. intellisense picked up nothing at all.

Raises packages/server's declared @webjsdev/core range from ^0.7.50 to
^0.7.51. The dev refresh reads refreshPage through a runtime feature check
rather than a static import, so nothing breaks without it, but the release PR
is the only place that bump is legal and core carries the earliest date in the
batch so it publishes first.

The generated notes were curated before committing. The generator reads
conventional-commit prefixes and cannot see a revert, so it wrote #1414 into
ui's entry for work no longer on main; that entry is removed. Each remaining
excerpt was the first lines of a squashed commit message, which for the
multi-commit squashes opened on a test or docs sub-commit rather than on the
change itself.
vivek7405 added a commit that referenced this pull request Aug 15, 2026
Clears every package carrying unreleased user-facing work since 0.7.50.

core adds refreshPage, which re-renders the current url on the server and
applies it in place with no reload, no history entry and no scroll, and
prefetches a link that drives a frame in that frame's own dimension so the
click costs no round trip. The fix records a same-document history entry
before the swap rather than after, which is what made an iOS swipe-back
preview the page the user was already on.

server stops a dev edit to a page or layout reloading the browser, so hydrated
state and scroll survive a save, and marks a sliced frame response so the
client can tell a real subtree from a whole document. The fixes render an
error boundary inside its own layout chain, coalesce a burst of dev reload
signals so rapid edits stop leaving the page unstyled, and root the vendor
specifier scan in the module graph.

ui takes the a11y fix alone.

Three packages are deliberately absent. cli, mcp and intellisense carry no
user-facing change in the range. cli's only such commit was #1414, which #1417
reverted in full, so what remains is the doctor barrel split, an internal move
with an unchanged export surface. mcp picked up three doc-string edits from
the same refactor, naming the new sibling-directory paths its `source` tool can
read, and the paths it already documents still resolve because they are
barrels. intellisense picked up nothing at all.

Raises packages/server's declared @webjsdev/core range from ^0.7.50 to
^0.7.51. The dev refresh reads refreshPage through a runtime feature check
rather than a static import, so nothing breaks without it, but the release PR
is the only place that bump is legal and core carries the earliest date in the
batch so it publishes first.

core and server carry the generated notes verbatim. ui is edited twice, both
because the generator reads conventional-commit prefixes and cannot see
anything else. It wrote #1414 into the entry for work #1417 has since reverted,
which is removed along with the Features section it emptied; and its excerpt is
the first lines of a squashed message, which for #1412 opened on the CDP
measurement instrument rather than on the fix, so the fix sub-commit takes its
place.
vivek7405 added a commit that referenced this pull request Aug 15, 2026
Clears every package carrying unreleased user-facing work since 0.7.50.

core adds refreshPage, which re-renders the current url on the server and
applies it in place with no reload, no history entry and no scroll, and
prefetches a link that drives a frame in that frame's own dimension so the
click costs no round trip. The fix records a same-document history entry
before the swap rather than after, which is what made an iOS swipe-back
preview the page the user was already on.

server stops a dev edit to a page or layout reloading the browser, so hydrated
state and scroll survive a save, and marks a sliced frame response so the
client can tell a real subtree from a whole document. The fixes render an
error boundary inside its own layout chain, coalesce a burst of dev reload
signals so rapid edits stop leaving the page unstyled, and root the vendor
specifier scan in the module graph.

ui takes the a11y fix alone.

Three packages are deliberately absent. cli, mcp and intellisense carry no
user-facing change in the range. cli's only such commit was #1414, which #1417
reverted in full, so what remains is the doctor barrel split, an internal move
with an unchanged export surface. mcp picked up three doc-string edits from
the same refactor, naming the new sibling-directory paths its `source` tool can
read, and the paths it already documents still resolve because they are
barrels. intellisense picked up nothing at all.

Raises packages/server's declared @webjsdev/core range from ^0.7.50 to
^0.7.51. The dev refresh reads refreshPage through a runtime feature check
rather than a static import, so nothing breaks without it, but the release PR
is the only place that bump is legal and core carries the earliest date in the
batch so it publishes first.

core and server carry the generated notes verbatim. ui is edited twice, both
because the generator reads conventional-commit prefixes and cannot see
anything else. It wrote #1414 into the entry for work #1417 has since reverted,
which is removed along with the Features section it emptied; and its excerpt is
the first lines of a squashed message, which for #1412 opened on the CDP
measurement instrument rather than on the fix, so the fix sub-commit takes its
place.
vivek7405 added a commit that referenced this pull request Aug 15, 2026
Ships the scaffold audit fix from #1419, so that `npm create webjs` stops
emitting apps that report 5 high-severity advisories on their first
install. The fix only reaches users through a published `@webjsdev/cli`,
since `create-webjs` resolves it from the registry.

The changelog is hand-written rather than generated. The generator
matches conventional subjects in the package tree, and the unreleased
log for `@webjsdev/cli` also carries the `feat:` subject from #1414,
whose work was fully reverted by #1417. That revert landed with a
`revert:` prefix the generator does not match, so an auto-generated
entry would have advertised a feature that is not in the code.
@vivek7405 vivek7405 mentioned this pull request Aug 15, 2026
4 tasks
vivek7405 added a commit that referenced this pull request Aug 15, 2026
Ships the scaffold audit fix from #1419, so that `npm create webjs` stops
emitting apps that report 5 high-severity advisories on their first
install. The fix only reaches users through a published `@webjsdev/cli`,
since `create-webjs` resolves it from the registry.

The changelog is hand-written rather than generated. The generator
matches conventional subjects in the package tree, and the unreleased
log for `@webjsdev/cli` also carries the `feat:` subject from #1414,
whose work was fully reverted by #1417. That revert landed with a
`revert:` prefix the generator does not match, so an auto-generated
entry would have advertised a feature that is not in the code.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Revert the UI kit and AI design guidance work (#1414)

1 participant