rastrillo / fiesta Public

The fiesta.rastrillo.org website: a landing page in eleven languages, and the design system with its explanations

The landing page replaces the placeholder: the bunting, the one-link install with Copy, a live sample app in Day, Plain or Signal and light or dark, the six reasons, and a footer linking Rastrillo and the CARLOS sites. English is at /, the ten other languages at /<code>/, Arabic right to left. All the English went through copy review; the ten translations are machine drafts nobody has reviewed. The design system moves to /design-system/ and now explains each family, example and state, carried from Rastrillo's approved prose with the Go-only parts rewritten and reviewed. Fiesta itself does not change: /1/ still serves 1.0.0, and site/FOLLOW-UPS.md lists what 1.1 should take in.

Reviewed task by task and as a whole branch (Astra); make ci on the tip is discussion #18.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Squashed from site into main.
claude agent, operated by paul@keymail.dev 6af218ed60a9d2e9c084a8e344bf65e14bcac62d parent cdb822d
45 files changed, +7764 −74
  • .amadan/ci.d/{50-suite@10 => 50-suite@12} +0 −0
  • Makefile +10 −8
  • cmd/fiesta/main.go +24 −14
  • cmd/fiesta/release_test.go +44 −10
  • examples/prose.json +378 −0
  • hack/seed/README.md +7 −0
  • hack/seed/_rastrillo/prose_fiestaseed_test.go +517 −0
  • hack/seed/prose-review.json +338 −0
  • hack/seed/run-prose.sh +65 −0
  • internal/gallery/copy.go +4 −13
  • internal/gallery/gallery.css +5 −0
  • internal/gallery/gallery.go +87 −13
  • internal/gallery/pages_a11y_browser_test.go +112 −0
  • internal/gallery/prose.go +143 −0
  • internal/gallery/prose_rule_test.go +160 −0
  • internal/gallery/prose_test.go +411 −0
  • internal/www/export_test.go +4 −0
  • internal/www/fs.go +18 −0
  • internal/www/landing.go +358 −0
  • internal/www/landing_browser_test.go +1208 −0
  • internal/www/landing_test.go +621 −0
  • internal/www/links_test.go +268 −0
  • internal/www/serve_test.go +227 −0
  • internal/www/site_browser_test.go +134 −0
  • internal/www/strings.go +217 −0
  • internal/www/strings_test.go +175 −0
  • internal/www/www.go +124 −0
  • internal/www/www_test.go +182 −0
  • site/FOLLOW-UPS.md +23 −0
  • site/index.html +0 −16
  • site/landing/page.html.tmpl +195 −0
  • site/landing/strings/ar.json +88 −0
  • site/landing/strings/bn.json +88 −0
  • site/landing/strings/en.json +88 −0
  • site/landing/strings/es.json +88 −0
  • site/landing/strings/ga.json +88 −0
  • site/landing/strings/hi.json +88 −0
  • site/landing/strings/ja.json +88 −0
  • site/landing/strings/pt-PT.json +88 −0
  • site/landing/strings/ru.json +88 −0
  • site/landing/strings/vi.json +88 −0
  • site/landing/strings/zh-Hans.json +88 −0
  • site/static/bunting.js +472 −0
  • site/static/site.css +144 −0
  • site/static/site.js +121 −0

CI passed — run details

CI log
=== gofmt ===
=== no-rastrillo ===
mkdir -p "/home/paulca/.local/state/amadan/runner/repos/rastrillo__fiesta/wt/gallery/.build/tmp"
go test -run '^(TestFiestaNeverImportsRastrillo|TestThePublicPackagesLinkNoBrowser)$' -count=1 .
ok  	amadan.net/rastrillo/fiesta	0.324s
=== size ===
go test ./internal/build -run '^TestTheOneLinkIsUnder25KiBGzipped$' -count=1 -v
=== RUN   TestTheOneLinkIsUnder25KiBGzipped
    build_test.go:138: fiesta-plain.css: 152856 bytes, 22303 bytes gzipped (21.8 KiB of the 25.0 KiB limit)
    build_test.go:138: fiesta-signal.css: 152951 bytes, 22414 bytes gzipped (21.9 KiB of the 25.0 KiB limit)
    build_test.go:138: fiesta.css: 155770 bytes, 23018 bytes gzipped (22.5 KiB of the 25.0 KiB limit)
--- PASS: TestTheOneLinkIsUnder25KiBGzipped (0.04s)
PASS
ok  	amadan.net/rastrillo/fiesta/internal/build	0.049s
=== suite ===
--- shard 0 of 12 ---
==> shard 0 of 12: make root
go build ./...
go vet ./...
FIESTA_TEST_REQUIRE_NODE=1 FIESTA_TEST_REQUIRE_GIT=1 go test -count=1 ./...
ok  	amadan.net/rastrillo/fiesta	2.174s
ok  	amadan.net/rastrillo/fiesta/check	8.410s
ok  	amadan.net/rastrillo/fiesta/cmd/fiesta	12.800s
ok  	amadan.net/rastrillo/fiesta/example	0.248s
ok  	amadan.net/rastrillo/fiesta/internal/axe	0.194s
ok  	amadan.net/rastrillo/fiesta/internal/build	2.455s
ok  	amadan.net/rastrillo/fiesta/internal/codeview	0.074s
ok  	amadan.net/rastrillo/fiesta/internal/gallery	8.739s
?   	amadan.net/rastrillo/fiesta/internal/harness	[no test files]
ok  	amadan.net/rastrillo/fiesta/internal/markup	0.073s
ok  	amadan.net/rastrillo/fiesta/internal/nodetest	0.767s
ok  	amadan.net/rastrillo/fiesta/internal/site	5.316s
ok  	amadan.net/rastrillo/fiesta/internal/tokens	0.091s
ok  	amadan.net/rastrillo/fiesta/internal/www	14.650s
--- shard 1 of 12 ---
==> shard 1 of 12: make staticcheck
go run honnef.co/go/tools/cmd/staticcheck@v0.8.2 -tags browser ./...
--- shard 2 of 12 ---
==> shard 2 of 12: make govulncheck
go run golang.org/x/vuln/cmd/govulncheck@v1.8.0 ./...
=== Symbol Results ===

No vulnerabilities found.

Your code is affected by 0 vulnerabilities.
This scan also found 2 vulnerabilities in packages you import and 5
vulnerabilities in modules you require, but your code doesn't appear to call
these vulnerabilities.
Use '-show verbose' for more details.
--- shard 3 of 12 ---
==> shard 3 of 12: make gitleaks
go run github.com/zricethezav/gitleaks/v8@v8.30.1 git --no-banner --redact --log-opts='--full-history --diff-filter=tuxdb HEAD' .
11:04PM INF Unknown SCM platform. Use --platform to include links in findings. host=amadan.net
11:04PM INF 1 commits scanned.
11:04PM INF scanned ~5826711 bytes (5.83 MB) in 6.27s
11:04PM INF no leaks found
--- shard 4 of 12 ---
==> shard 4 of 12: make browser.internal.harness
./hack/gotest.sh browser 'internal.harness'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
ok  	amadan.net/rastrillo/fiesta/internal/harness	14.530s
--- shard 5 of 12 ---
==> shard 5 of 12: make browser.check~1of3
./hack/gotest.sh browser 'check~1of3'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 1 of 3 of ./check/ runs 95 of 286 tests
ok  	amadan.net/rastrillo/fiesta/check	276.363s
--- shard 6 of 12 ---
==> shard 6 of 12: make browser.check~2of3
./hack/gotest.sh browser 'check~2of3'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 2 of 3 of ./check/ runs 95 of 286 tests
ok  	amadan.net/rastrillo/fiesta/check	300.716s
--- shard 7 of 12 ---
==> shard 7 of 12: make browser.check~3of3
./hack/gotest.sh browser 'check~3of3'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 3 of 3 of ./check/ runs 96 of 286 tests
ok  	amadan.net/rastrillo/fiesta/check	332.367s
--- shard 8 of 12 ---
==> shard 8 of 12: make browser.internal.gallery~1of2
./hack/gotest.sh browser 'internal.gallery~1of2'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 1 of 2 of ./internal/gallery/ runs 1 of 25 tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	153.193s
--- shard 9 of 12 ---
==> shard 9 of 12: make browser.internal.gallery~2of2
./hack/gotest.sh browser 'internal.gallery~2of2'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 2 of 2 of ./internal/gallery/ runs 24 of 25 tests
ok  	amadan.net/rastrillo/fiesta/internal/gallery	65.512s
--- shard 10 of 12 ---
==> shard 10 of 12: make browser.internal.www~1of2
./hack/gotest.sh browser 'internal.www~1of2'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 1 of 2 of ./internal/www/ runs 17 of 33 tests
ok  	amadan.net/rastrillo/fiesta/internal/www	59.799s
--- shard 11 of 12 ---
==> shard 11 of 12: make browser.internal.www~2of2
./hack/gotest.sh browser 'internal.www~2of2'
gotest: on DOCS-T1, driving the harness's own choice (/usr/bin/chromium)
gotest: slice 2 of 2 of ./internal/www/ runs 16 of 33 tests
ok  	amadan.net/rastrillo/fiesta/internal/www	48.414s
.amadan/ci.d/{50-suite@10 => 50-suite@12}

Loading diff…

Makefile

Loading diff…

cmd/fiesta/main.go

Loading diff…

cmd/fiesta/release_test.go

Loading diff…

examples/prose.json

Loading diff…

hack/seed/README.md

Loading diff…

hack/seed/_rastrillo/prose_fiestaseed_test.go

Loading diff…

hack/seed/prose-review.json

Loading diff…

hack/seed/run-prose.sh

Loading diff…

internal/gallery/copy.go

Loading diff…

internal/gallery/gallery.css

Loading diff…

internal/gallery/gallery.go

Loading diff…

internal/gallery/pages_a11y_browser_test.go

Loading diff…

internal/gallery/prose.go

Loading diff…

internal/gallery/prose_rule_test.go

Loading diff…

internal/gallery/prose_test.go

Loading diff…

internal/www/export_test.go

Loading diff…

internal/www/fs.go

Loading diff…

internal/www/landing.go

Loading diff…

internal/www/landing_browser_test.go

Loading diff…

internal/www/landing_test.go

Loading diff…

internal/www/links_test.go

Loading diff…

internal/www/serve_test.go

Loading diff…

internal/www/site_browser_test.go

Loading diff…

internal/www/strings.go

Loading diff…

internal/www/strings_test.go

Loading diff…

internal/www/www.go

Loading diff…

internal/www/www_test.go

Loading diff…

site/FOLLOW-UPS.md

Loading diff…

site/index.html

Loading diff…

site/landing/page.html.tmpl

Loading diff…

site/landing/strings/ar.json

Loading diff…

site/landing/strings/bn.json

Loading diff…

site/landing/strings/en.json

Loading diff…

site/landing/strings/es.json

Loading diff…

site/landing/strings/ga.json

Loading diff…

site/landing/strings/hi.json

Loading diff…

site/landing/strings/ja.json

Loading diff…

site/landing/strings/pt-PT.json

Loading diff…

site/landing/strings/ru.json

Loading diff…

site/landing/strings/vi.json

Loading diff…

site/landing/strings/zh-Hans.json

Loading diff…

site/static/bunting.js

Loading diff…

site/static/site.css

Loading diff…

site/static/site.js

Loading diff…