Skip to content

Publisher UI refresh — Foundation (design tokens)#274

Draft
Hackshaven wants to merge 3 commits into
mainfrom
claude/publisher-ui-refresh-foundation
Draft

Publisher UI refresh — Foundation (design tokens)#274
Hackshaven wants to merge 3 commits into
mainfrom
claude/publisher-ui-refresh-foundation

Conversation

@Hackshaven

@Hackshaven Hackshaven commented Jul 7, 2026

Copy link
Copy Markdown
Member

Publisher UI refresh — Phase 3e, Foundation PR

Kicks off the wireframe-driven publisher-portal redesign. Opened early as a draft so the visual direction can be reviewed as commits land, before it propagates to the other portal pages.

Source of truth: the Claude Design board covering all 17 portal surfaces (Overview, Datasets, Dataset editor/Licensing, Workflows, Import, Events, Feeds — News/Media, Tours, Blog, Right now, Analytics, Feedback, Account, Team, Node profile).

What the wireframes specify

A flat, dark, sans-chrome / mono-data console:

  • Canvas #0d0d12, accent #4da6ff with a full opacity ramp
  • Flat white-alpha surfaces (0.040.15), subtle borders — no glass
  • Sans for chrome/prose, monospace for technical data (IDs, metrics, group eyebrows) — a hybrid, not a wholesale-mono portal
  • A dense, rem-based type + spacing scale
  • A 212px grouped left-sidebar nav (replacing today's horizontal topbar)

Scope of this PR (the shared foundation)

The colors, radii, and accent-opacity ramp already existed as tokens and already matched the wireframe (the Events-tab redesign was effectively the pilot). This PR fills the gaps and lays down the shell every page inherits:

  • Design tokens--font-sans / --font-mono (system stacks, zero web-font fetch), the dense --text-2xs … --text-3xl type scale, and --space-2xs … --space-2xl + --space-edge spacing. Formalized in the token generator; tokens.css regenerates on build.
  • Grouped left-sidebar app-shellcomponents/sidebar.ts replaces the horizontal topbar.ts. A 212px flat rail: brand + back-to-Terraviz, section links clustered into labelled groups (Catalog / Current events / Insights / Settings) with mono uppercase eyebrows, active links carrying an accent inline-start border + tint, and an account footer (Profile + Sign out). .publisher-portal becomes a two-column flex shell; a mobile fallback stacks the rail into a horizontal top strip.
  • Flat surfaces / drop glass — the shared .publisher-glass hook is redefined to a flat white-alpha surface (no backdrop-filter), so all ~30 card call sites flatten at once.
  • Shell screenshot review (desktop + mobile) against the Overview frame — attached in the PR thread.

Verification

tsc --noEmit (root + functions + cli) clean; 477 publisher unit tests + the new 18-test sidebar.test.ts green; check:i18n-strings, check:doc-coverage, check:locales pass. (check:protocol-schemas needs a dev dep absent from the local sandbox; unaffected by this change and runs in CI.)

Sequencing (next)

This is the shared base. The remaining 16 pages follow in grouped restyle PRs — Datasets/Editor/Import · Events*/Feeds/Tours/Blog/Right-now · Analytics/Feedback · Account/Team/Node-profile — each screenshot-reviewed against its frame. (*Events already flattened in #241.)

🤖 Generated with Claude Code

https://claude.ai/code/session_0127MmwB678BaV8Pfg1KG18E

…the UI refresh

The publisher redesign wireframes specify a flat, dark, sans-chrome /
mono-data console. Colors, radii, and the accent-opacity ramp already
exist as tokens and match the wireframe; the font-family, type-scale,
and spacing scales were only ever inline fallbacks. Formalize them in
the hand-maintained composite block of the token generator so the
restyle PRs can reference var(--font-mono), var(--text-md),
var(--space-lg), etc. consistently:

- --font-sans / --font-mono (system stacks, zero web-font fetch)
- --text-2xs … --text-3xl (dense, rem-based, base 0.75rem)
- --space-2xs … --space-2xl + --space-edge (dense, rem-based)

Additive: the only prior consumer, var(--font-mono, monospace), now
resolves to the real stack instead of the bare fallback. tokens.css is
regenerated on build (npm run tokens).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0127MmwB678BaV8Pfg1KG18E
Signed-off-by: Claude <noreply@anthropic.com>
claude added 2 commits July 7, 2026 06:13
Replace the horizontal glass topbar with the wireframe's left-rail
sidebar: a 212px flat rail down the inline-start edge with the brand +
back-to-Terraviz, section links clustered into labelled groups
(Catalog / Current events / Insights / Settings) with mono uppercase
eyebrows, and an account footer (Profile + Sign out) pinned to the
block-end. Active links carry an accent inline-start border + tint.

- components/sidebar.ts replaces components/topbar.ts (same router
  wiring, SPA-intercept, aria-current, route-change listener; grouped
  nav + admin-gated visibility + account footer). teardownSidebar for
  tests. 18 unit tests port + extend the topbar suite.
- index.ts boots renderSidebar; .publisher-portal becomes a two-column
  flex shell (rail + scrollable content column).
- publisher.css: flat rail surfaces (--color-surface-alt + subtle
  border, no glass), grouped nav, sans chrome / mono group eyebrows,
  and a mobile fallback that stacks the rail into a horizontal
  top strip.
- i18n: publisher.nav.group.{catalog,events,insights,settings}.
- scenes/smoke: shell selector .publisher-topbar -> .publisher-sidebar.
- CLAUDE.md module-map row updated.

Colors/type/spacing all reference the design tokens formalized in the
prior commit. tsc + 477 publisher tests + doc-coverage + locales green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0127MmwB678BaV8Pfg1KG18E
Signed-off-by: Claude <noreply@anthropic.com>
The redesign removes frosted glass everywhere. Redefine the shared
.publisher-glass hook to a flat white-alpha surface (--color-surface-alt
+ subtle border, --radius-2xl) instead of a backdrop-filter blur, so all
~30 call sites flatten at once with no churn. Completes the Foundation
PR's no-glass discipline (the Events tab already flattened in #241; the
sidebar shell landed flat in the prior commit).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0127MmwB678BaV8Pfg1KG18E
Signed-off-by: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

🖼️ Visual report

66 shot(s) · 2 viewport(s) (desktop, mobile) · 6 with problems · 12 problem(s) total

Regression: 45 shot(s) changed, 0 new (baseline-less, soft pass), threshold 0.001.

Scene Viewport Change
browse-search-active desktop 1.59% (20666 px)
publish-datasets desktop 3.06% (39659 px)
publish-dataset-new desktop 3.59% (46542 px)
publish-dataset-edit-thumbnail desktop 4.80% (62261 px)
publish-workflows desktop 2.80% (36252 px)
publish-workflow-new desktop 3.70% (47932 px)
publish-tours desktop 0.66% (8613 px)
publish-import desktop 0.73% (9503 px)
publish-featured-hero desktop 0.89% (11582 px)
publish-events desktop 5.09% (65997 px)
publish-feeds desktop 8.65% (112101 px)
publish-node-profile desktop 18.13% (234922 px)
+33 more
Shots with problems
Scene Viewport Errors Failed req a11y
publish-tours desktop 1 1 0
publish-featured-hero desktop 1 1 0
publish-datasets-error desktop 1 1 0
publish-tours mobile 1 1 0
publish-featured-hero mobile 1 1 0
publish-datasets-error mobile 1 1 0

Full report → visual-report artifact

Advisory — this check never fails the build. Visual review only.

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.

2 participants