Skip to content

Shell decision: own CSS, no vendored theme (D59) (#137) - #146

Merged
Arthurvdv merged 3 commits into
mainfrom
wp16/spike-shell
Oct 28, 2026
Merged

Arthurvdv merged 3 commits into
mainfrom
wp16/spike-shell

Conversation

@Arthurvdv

@Arthurvdv Arthurvdv commented Oct 28, 2026 •

Copy link
Copy Markdown
Member

Closes #137.

The site shell (header, dark mode, mobile menu, footer, design tokens) stays own CSS. The owner chose it after the spike built the landing page and stages/default/ twice; the result comment with the criteria table and the 16 screenshots is #137 (comment).

Spike result

  • Hextra passed every hard constraint after trimming. No resources.GetRemote is left (I removed the remote-icon branch of utils/icon.html). The build runs offline, the output has no CDN reference, it needs 12 files, and the 628-row matrix needs no fight with the theme CSS.
  • Little of Hextra's shell survives. Its navbar builds its links from the site configuration, not from rulebook.json. Its menu script throws without a sidebar. Its footer is built around the theme credit. Its head and scripts fingerprint the asset paths. What we kept was the compiled CSS and a theme toggle.
  • The compiled CSS has a class gap. It contains only the classes Hextra uses: 14 of the first classes our layouts wrote did not exist and failed silently (our layouts use 132 distinct hx: classes). Hextra's dark mode needs JavaScript, so without it the site stays light even on a dark system.
  • Volume and maintenance. Hextra adds 12 files and 163,141 B under site/themes/hextra/ (main.css is 144,984 B) to every organization repository and to the D35 compare. Each Hextra release means repeating three trims: icon.html, icons.yaml, and leaving out theme.toml. Copied as is, theme.toml (blob/main/) and icons.yaml ("v1") break the Deploy forbidden-literal test. Own CSS adds no file under themes/; its site.css is 15,881 B.
  • Look. Own CSS gives the dense developer-tool look and follows the system dark setting without JavaScript. The tokens meet WCAG AA: in light mode, text 15.8, muted 6.1, accent 5.2, chips 5.3 to 6.4; in dark mode, text 16.0, muted 6.5, chips 6.2 to 7.5.

Scratch branches (never merged)

The plan put both variants on one branch; I used two so each can be checked out and built as it is.

Files

  • docs/adr/0059-the-site-shell-is-own-css-and-no-vendored-theme.md: the new ADR D59. It confirms D31 and D35, which stand unchanged, and rejects a theme vendored into site/ as a further alternative; Hugo Book was not built, because no constraint failed. It also notes the D58/D59 renumbering.
  • docs/adr/README.md: index row and reference line.
  • docs/dashboard.md section 3: one paragraph naming the decision.
  • docs/reference/spikes/wp16-shell/README.md: the spike record (question, method, criteria table, screenshots, answer, notes for WP16: design system and app shell (tokens, logo, header, dark mode, mobile, sticky matrix, favicon, Open Graph, footer) #138), plus the 16 PNGs (40 to 133 KB each).
  • (no change to docs/reference/spikes/README.md, which indexes the WP01 spikes)
  • RELEASENOTES.md: one line under ## v1.0.0-beta.8.

Nothing under template/ changes.

Tests

  • Invoke-Pester -Path ./tests/Docs.Tests.ps1 -Output Normal, with RULEBOOK_DOCS_PATH set to the template docs: 340 passed, 0 failed, 0 skipped (again after review round 1).
  • On both scratch branches, the forbidden-literal regex of the Deploy test over template/site finds no hit, and the CDN grep of both builds is empty.

🤖 Generated with Claude Code

Arthurvdv and others added 2 commits October 28, 2026 14:57
The landing page and stages/default/ of the own-CSS and the vendored-Hextra variant, at 1280 and 390 px,
light and dark, built from tests/fixtures/site-data/rulebook.json. The criteria table and the choice follow
in the README of this folder with ADR D59.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
ADR D59 records the owner's choice after the spike: the site shell stays own CSS, confirming D31's
"no theme" and D35's rejected vendored theme with the spike's evidence. docs/dashboard.md section 3
names the decision; the spike record under docs/reference/spikes/wp16-shell/ carries the question,
the two scratch branches, the criteria table, the sixteen screenshots and the notes for the shell PR;
the ADR index, the spike index and the beta.8 release notes gain their lines.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…class count restated (#137)

D59 now quotes D31's real sentence and D35's real rejected alternative, says both stand unchanged and
that a theme vendored into site/ is a further alternative rejected here; the hx: count is 132 distinct
in our layouts (156 with the vendored toggle partial); the implementation details carry "as built on
the scratch branch". The spike record names the head commits of the scratch branches, the icons in
use, the local Hugo version, and moves the uncovered points to a "Not covered" section. dashboard.md
section 3 says the shell will be own CSS; the spike index keeps listing the WP01 spikes only.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.

WP16 spike: Hextra vendored vs own CSS, the shell decision and ADR D58

1 participant