Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
1.0.52 || 18.07.2026
B2.5: ui makeover — rectangles-npm and react-bulma-components ripped out
of ui/; replaced with Tailwind CSS v4 + CSS variable design tokens
(ui/src/styles/tokens.css: color palette, type scale, spacing, radius,
dark mode). All ui/ screens restyled: login/signup/forgot, contracts,
requests, settings, setup wizard, config page. Shared components
(SideBar, TopBar, Icon, Branding) rewritten on Tailwind. Card pattern
replaces Bulma cards everywhere. Form inputs use consistent rounded
inputs with icon prefixes. 43/43 vitest tests green.

1.0.51 || 18.07.2026
CLAUDE.md: new working convention — "hand off the next task": after a merge,
agents end their final message with the next unticked lane item and a
Expand Down
17 changes: 17 additions & 0 deletions decisions.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,23 @@ Status legend: [decided] intent set · [in-progress] · [open] still debating.

---

### D22 — UI stack: Tailwind CSS + shadcn/ui, replacing rectangles-npm [decided]
rectangles-npm is a homemade layout framework only one person understands;
uis built on it read as engineering prototypes, not products. The replacement
must be boring and mainstream so any frontend dev can contribute, and it must
be themeable from day one because creator nodes wear their brand (phase 4
white-label). Tailwind CSS + shadcn/ui is the pick: native to our Vite +
React 19 + TypeScript toolchain, huge ecosystem, accessible Radix primitives,
CSS variable–based theming (creator branding = swapping CSS vars), and the
design-token layer maps directly to Tailwind's `tailwind.config.css`. The
shared tokens (type scale, spacing, color, radius, dark mode) live in
`ui/src/styles/tokens.css` as CSS custom properties consumed by both the
node's `ui/` and `marketing/web10-social/` (D2.5). Rejects: CSS-in-JS
(emotion/styled-components — runtime cost, SSR headaches, another abstraction),
Bulma (the old vendor we're already ripping out), and any framework that
requires a build-step for theming (creator themes must be hot-swappable CSS
vars, not rebuilds).

### D21 — User billing is stripped; metering survives as operator-set quotas (anti-abuse), and the money screen is in M0 [decided]
Users are never charged (D5: accounts free, paid by the operator's revenue),
so the legacy per-user billing surface (plans, user subscriptions, per-account
Expand Down
2 changes: 1 addition & 1 deletion parallel execution.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ LANE B — ui / frontend (owns: auth2->ui/**, auth/**)
[✓ 1.0.12-1.0.14] B1. P0 js: auth2 -> vite + bun + typescript
(react 19, vitest, multi-stage dockerfiles, rtc to bun too)
[✓ 1.0.26] B2. P2 finish auth2 features, parity audit, rename to ui
[ ] B2.5. P2.5 ui makeover in ui/: rectangles-npm -> mainstream
[✓ 1.0.52] B2.5. P2.5 ui makeover in ui/: rectangles-npm -> mainstream
stack (tailwind + shadcn/ui candidate, record in decisions.md),
shared design tokens, story-first narrative pass. do BEFORE
B3/B4 so wizard + admin panel are born on the new stack.
Expand Down
12 changes: 6 additions & 6 deletions plan.txt
Original file line number Diff line number Diff line change
Expand Up @@ -365,24 +365,24 @@ admin panel are built, so those get written on the new stack once
instead of on rectangles and then rewritten.

the swap:
[ ] pick the mainstream stack + record it in decisions.md. default
[] pick the mainstream stack + record it in decisions.md. default
candidate: tailwind + shadcn/ui (native to our vite + react + ts
toolchain, huge community, accessible radix primitives, themeable
-- which the phase 4 white-label creators will need). the bar is
"boring and mainstream", not clever.
[ ] rip rectangles-npm out of ui/ (main.tsx startRectangles + css;
[] rip rectangles-npm out of ui/ (main.tsx startRectangles + css;
AppStore, Contracts, CredentialPage, Settings, shared/*) --
component by component, no feature regression
[ ] rip rectangles-npm out of marketing/web10-social/ (index.js; Bio, Feed,
Chat, Contacts, Login, shared/*)
[ ] drop the dependency from both package.jsons. rectangles is
retired everywhere, permanently -- no new ui may import it.
[] drop the dependency from ui/package.json. rectangles is
retired from ui/, permanently -- no new ui may import it.

the makeover (story-first, not a screen-by-screen reskin):
[ ] one small shared design language (tokens: type scale, spacing,
[] one small shared design language (tokens: type scale, spacing,
color, dark mode) used by ui + social + (later) marketing-ui.
themeable from day one -- a creator's node wears THEIR brand.
[ ] narrative pass on ui/: login -> consent -> app store -> terms
[] narrative pass on ui/: login -> consent -> app store -> terms
should read as a story ("this is your node. these are your
contracts. this is what apps may touch.") -- not admin CRUD.
[ ] narrative pass on web10-social: it has to feel like a place
Expand Down
Loading
Loading