rastrillo / fiesta Public

The CSS, scripts and icons, from rastrillo at SEED

Task 2 of the Fiesta part-1 plan: the design system's files, byte for
byte, and the root package that embeds them.

css/tokens.css, css/shell.css and css/themes/{day,plain,signal}.css are
rastrillo's ui/tokens.css, ui/shell.css and ui/themes/*.css at SEED,
e14b745a7c08d0efa3bf221a8b6a5e75de15c46f, copied with git show and
checked with cmp. The brief's ui/css/ paths do not exist at SEED; the
real ones are ui/ and ui/themes/. check/testdata/seed/ holds the same
five files, flat, as the baseline TestTheSourceIsTheSyncedBaseline
holds css/ against; it names all five so an empty css/ fails by name.
The seven js/ files are ui/{busy,light,anchor,shell,select,datetime,
calendar}.js the same way. rastrillo.js is not carried: Task 4 writes
fiesta.js in its place.

The twelve icons are not files at SEED. rastrillo builds them in
icons.go from iconOpen plus each glyph's path data and renders them
with {{icon}}. icons/<slug>.svg is that exact output, written by a
scratch Go program that compiled SEED's icons.go and wrote Icon(slug)
for each slug: no xmlns, no trailing newline. kebab, chevron-down,
help-circle and menu were compared byte for byte against the inline
markup in ui/styleguide.go at SEED. icons/LICENSE-lucide.txt is the
ISC notice icons.go quotes.

fiesta.go embeds LICENSE, css, js and icons and answers them: Version,
FS, TokensCSS, ShellCSS, License, ThemeNames, ThemeCSS, ScriptNames,
Script, IconSlugs and Icon. ThemeNames keeps rastrillo's order, day
first, and ScriptNames keeps ui/vendored.go's load order minus
rastrillo.js. The name lists are copies. IconSlugs reads the embedded
directory, so an icon added under icons/ is listed with no change
here.

Tests first, red by name. With a stub fiesta.go that had no go:embed
and returned nil or false, `go test -count=1 . ./check/` failed
TestTheStylesheetsAreEmbedded, TestEveryThemeIsEmbedded,
TestEveryScriptIsEmbedded, TestEveryIconIsOneLucideSVG,
TestNamesAreCopies, TestTheLicenseIsMPL, TestTheVersionIsSemver and
TestTheSourceIsTheSyncedBaseline, each with its own message and no
build error. Negative control for the baseline: the last byte of
css/themes/day.css changed in a scratch copy turned
TestTheSourceIsTheSyncedBaseline red with "css/themes/day.css differs
from its baseline check/testdata/seed/day.css".

DESIGN.md and .impeccable/design.json are not in this commit. Six of
their lines name Rastrillo, ui.ThemeNames, `rastrillo new`, `rastrillo
doctor`, `rastrillo.js` and the ui/ paths, and the Fiesta wording waits
on copy review. hack/seed/README.md is the stub the brief allows until
Task 5: the SEED sha and the sha256 of every copied file.
Human

Prompt

Task 2 of the Fiesta part-1 plan: the design system's files, byte for byte, and the root package.

From this commit's own message. The prompt ledger has no entries for it — which is what a squashed, rebased or amended commit looks like, and what every commit looks like in a repo without a ledger.

Summary

Adds css/ (tokens, shell and the three themes), js/ (the seven opt-in scripts), icons/ (twelve SVGs and the Lucide ISC notice), check/testdata/seed/ (the baseline), fiesta.go with its accessors, fiesta_test.go, check/baseline_test.go and the hack/seed/README.md stub.
Agent notes
DESIGN.md and .impeccable/design.json are not here: their Fiesta wording waits on copy review, reported as NEEDS_CONTEXT in task-2-report.md. .claude/settings.json (amadan's hooks) is untracked on purpose and not this task's.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
claude agent, operated by paul@keymail.dev 6510f90515b0132c1b416593844426df170de7b9 parent 24c93b3
34 files changed, +14228 −0
  • check/baseline_test.go +52 −0
  • check/testdata/seed/day.css +422 −0
  • check/testdata/seed/plain.css +302 −0
  • check/testdata/seed/shell.css +51 −0
  • check/testdata/seed/signal.css +307 −0
  • check/testdata/seed/tokens.css +3705 −0
  • css/shell.css +51 −0
  • css/themes/day.css +422 −0
  • css/themes/plain.css +302 −0
  • css/themes/signal.css +307 −0
  • css/tokens.css +3705 −0
  • fiesta.go +120 −0
  • fiesta_test.go +232 −0
  • hack/seed/README.md +34 −0
  • icons/LICENSE-lucide.txt +16 −0
  • icons/alert-triangle.svg +1 −0
  • icons/check-circle.svg +1 −0
  • icons/check.svg +1 −0
  • icons/chevron-down.svg +1 −0
  • icons/help-circle.svg +1 −0
  • icons/info.svg +1 −0
  • icons/kebab.svg +1 −0
  • icons/menu.svg +1 −0
  • icons/plus.svg +1 −0
  • icons/search.svg +1 −0
  • icons/x-circle.svg +1 −0
  • icons/x.svg +1 −0
  • js/anchor.js +68 −0
  • js/busy.js +286 −0
  • js/calendar.js +532 −0
  • js/datetime.js +1727 −0
  • js/light.js +275 −0
  • js/select.js +1154 −0
  • js/shell.js +146 −0

CI passed — run details

CI log
=== gofmt ===
=== no-rastrillo ===
go test -run '^(TestFiestaNeverImportsRastrillo|TestThePublicPackagesLinkNoBrowser)$' -count=1 .
ok  	amadan.net/rastrillo/fiesta	0.044s
=== suite ===
--- shard 0 of 4 ---
==> shard 0 of 4: make root
go build ./...
go vet ./...
FIESTA_TEST_REQUIRE_NODE=1 go test -count=1 ./...
ok  	amadan.net/rastrillo/fiesta	0.090s
ok  	amadan.net/rastrillo/fiesta/check	0.006s
--- shard 1 of 4 ---
==> shard 1 of 4: make staticcheck
go run honnef.co/go/tools/cmd/staticcheck@v0.8.2 -tags browser ./...
--- shard 2 of 4 ---
==> shard 2 of 4: make govulncheck
go run golang.org/x/vuln/cmd/govulncheck@v1.8.0 ./...
No vulnerabilities found.
--- shard 3 of 4 ---
==> shard 3 of 4: make gitleaks
go run github.com/zricethezav/gitleaks/v8@v8.30.1 git --no-banner --redact --log-opts='--full-history --diff-filter=tuxdb HEAD' .
7:28PM INF Unknown SCM platform. Use --platform to include links in findings. host=amadan.net
7:28PM INF 1 commits scanned.
7:28PM INF scanned ~973896 bytes (973.90 KB) in 419ms
7:28PM INF no leaks found
check/baseline_test.go

Loading diff…

check/testdata/seed/day.css

Loading diff…

check/testdata/seed/plain.css

Loading diff…

check/testdata/seed/shell.css

Loading diff…

check/testdata/seed/signal.css

Loading diff…

check/testdata/seed/tokens.css

Loading diff…

css/shell.css

Loading diff…

css/themes/day.css

Loading diff…

css/themes/plain.css

Loading diff…

css/themes/signal.css

Loading diff…

css/tokens.css

Loading diff…

fiesta.go

Loading diff…

fiesta_test.go

Loading diff…

hack/seed/README.md

Loading diff…

icons/LICENSE-lucide.txt

Loading diff…

icons/alert-triangle.svg

Loading diff…

icons/check-circle.svg

Loading diff…

icons/check.svg

Loading diff…

icons/chevron-down.svg

Loading diff…

icons/help-circle.svg

Loading diff…

icons/info.svg

Loading diff…

icons/kebab.svg

Loading diff…

icons/menu.svg

Loading diff…

icons/plus.svg

Loading diff…

icons/search.svg

Loading diff…

icons/x-circle.svg

Loading diff…

icons/x.svg

Loading diff…

js/anchor.js

Loading diff…

js/busy.js

Loading diff…

js/calendar.js

Loading diff…

js/datetime.js

Loading diff…

js/light.js

Loading diff…

js/select.js

Loading diff…

js/shell.js

Loading diff…