ditdash U-UI0: the UI foundations (Tailwind v4 tokens, the kit skeleton, the gates, the CSP route) #12

Merged
jsutter merged 2 commits from ui-foundations into main 2026-10-13 06:23:09 +00:00
Owner

theme/ditdash.css (v4 CSS-first: source(none) + @source src, the three token tiers + the @theme inline bridge + the --color-*: initial guard, the breakpoints + the pane container tokens, the component layer), the nix wiring (tailwindcss_4 + preBuild + the css-fresh check), the CSP brand.css route (brand_style deleted), the status enum + per-surface mappings + the coverage test, the popover why (popovertarget + anchor positioning), the MSP selector slot + GET /api/v1/msps, the 4 mechanical gates, the semantic-digest split (43 new class-blinded digests), the ui.rs kit skeleton. 248 tests green.

theme/ditdash.css (v4 CSS-first: source(none) + @source src, the three token tiers + the @theme inline bridge + the --color-*: initial guard, the breakpoints + the pane container tokens, the component layer), the nix wiring (tailwindcss_4 + preBuild + the css-fresh check), the CSP brand.css route (brand_style deleted), the status enum + per-surface mappings + the coverage test, the popover why (popovertarget + anchor positioning), the MSP selector slot + GET /api/v1/msps, the 4 mechanical gates, the semantic-digest split (43 new class-blinded digests), the ui.rs kit skeleton. 248 tests green.
The ditdash UI overhaul's foundations (arc plan U-UI0):
- theme/ditdash.css: the Tailwind v4 CSS-first entry (source(none) +
  @source ../src): the primitives moved forward, the 7-status semantic
  set with light+dark blocks, the @theme inline bridge with
  --color-*: initial, the breakpoints + pane container tokens, and the
  component layer (shell grid, pane-grid named areas, the data-status
  pill, the popovers with CSS anchor positioning).
- flake: tailwindcss_4 from this flake's nixpkgs (devShell + preBuild
  regenerating the committed assets/ditdash.css), theme/ in
  sourceByRegex, and the css-fresh check byte-comparing a fresh build
  against the committed copy.
- GET /config/brand.css replaces the inline brand <style> (strict-CSP
  prep); every page links it after the main stylesheet.
- src/ui.rs: the typed kit skeleton (shell, page_header, panes/pane,
  pill, table, kpi_tile, gap_state, timeline, meter, msp_selector,
  why_popover) with data-ui hooks; the closed Status enum + Freshness +
  the per-surface status_of mappings with the coverage test.
- GET /api/v1/msps: {current, sessions:[{name,url}]} — the current
  session today, the list shape for the machine-session arc.
- tests/ui_gates.rs: the class=-location lint (dated pre-migration
  allowlist), the class-exists-in-CSS check, the no-inline-style check
  on rendered pages (+ source-side allowance coverage), and the
  semantic-digest contract.
- snapshots: byte digests regenerated (the brand link changes every
  page) and class-blinded semantic digests added beside them in all
  three walks.

Assisted-by: worker:synthetic/hf:deepseek-ai/DeepSeek-V4.1-Flash
Assisted-by: worker:synthetic/hf:deepseek-ai/DeepSeek-V4.1-Flash
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
deepnet/ditdash!12
No description provided.