Skip to content

feat(ui): soft frames — square lyra style with bevel frames, minimal landing - #311

Open
elliotBraem wants to merge 5 commits into
mainfrom
prototype/retro-frames
Open

elliotBraem wants to merge 5 commits into
mainfrom
prototype/retro-frames

Conversation

@elliotBraem

Copy link
Copy Markdown
Contributor

What

Folds the retro-frames prototype's winning variant — Soft frames — into the real UI, plus two dev-experience fixes uncovered while working on it.

Soft frames visual system

  • Moves from shadcn base-maia (pill) to square base-lyra: --radius is 0, so the whole rounded-* scale resolves to 0. rounded-full (avatars, dots) is the only round shape. components.json updated in both ui and plugins/auth/ui.
  • 1px bevel frames as tokens in styles.css (light + dark), utilities used only inside components/ui/*: bevel-raised, bevel-pressed, bevel-sunken, bevel-window, bevel-none, bg-titlebar, transition-bevel. They compose with ring-*, so focus rings still work. Mirrored into plugins/auth/ui/src/styles.css.
  • Buttons: raised bevel that presses in (:active, aria-expanded, data-pressed, active sidebar item); disabled buttons sit on the new --face surface with embossed muted text instead of opacity; new xl size and brand variant; destructive is now a tinted raised button that turns solid on hover.
  • Sunken fields: inputs, textareas, selects, input groups, checkboxes, tab lists.
  • Window frames: cards, dialogs, sheets, popovers, dropdowns, select menus.
  • New Window / WindowTitleBar / WindowBody primitives (exported from @/components) for titled frames.
  • Press feedback is the pressed bevel — no scale, no translate. Press is instant, release eases out in 120ms, named properties only.
  • ui/DESIGN.md updated with the settled rules (the "in progress" section is gone).

Landing page (/)

  • No app shell, signed in or not: centered title (text-4xl sm:text-5xl), the under-construction GIF (restored from 13119ad1^) with its tooltip linking to the repo, one lg button — Sign in (→ /login) or Open my node (→ /dashboard) — then the existing public footer.
  • UnderConstruction reworked from the hammer tile to the GIF; Bulletin updated to match.
  • plugin-chunk-laziness.spec.ts now clicks the landing button (landing-primary) instead of the removed header sign-in link.

Dev fixes (with changesets)

  • every-plugin dev was broken for ui/auth/plugin UIs on Rsbuild 2.2.8: FixMfDataUriPlugin stripped the absolute node_modules prefix from every data-URI import, turning Rsbuild's dev HMR entry (@rsbuild/core/dist/client/hmr.js) into a bare specifier the exports map rejects ("Package subpath './dist/client/hmr.js' is not defined by exports"). It now only rewrites @module-federation/* imports. Plain pnpm run dev works again, with hot reload — no BOS_NO_WATCH=1 workaround. Unit test added.
  • Build errors were invisible in bos dev: Rsbuild prints error Build error: on stderr and the details on stdout; the log pipeline dropped the details at the default warn level. Detail lines are now joined onto the header as one error event, and bundler × lines count as errors on any stream. The CLI also stops printing "Unknown error" for Effect tagged errors (ArtifactGenError etc.) — a new describeError helper surfaces tag, phase and cause. Tests added.

Docs

  • ADR 0027 (every app is a node) and the Nodes section of GLOSSARY.md (previously uncommitted working-tree changes).

Verification

  • bos typecheck — all 10 workspaces pass
  • pnpm run lint (Biome + oxlint/shadcn rules) — clean, no new warnings
  • pnpm --filter ui test — 135 passed
  • packages/every-plugin + packages/everything-dev unit suites — pass
  • pnpm run build ui — green, bevel utilities verified in emitted CSS

Notes for review

  • The prototype itself (/prototype/retro-frames, variant switcher) lived on this branch during development (be3ba651) and was removed before merge; the shipped result is Soft frames only.
  • Intentionally not in this PR (from the redesign plan): login window redesign, sidebar switchers, orgs → settings move, My node page, Registry UI. Those are follow-up tickets.

This branch has not been deployed

No deployments
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.

1 participant