theme-calma
.amadan/ci
+6 −0
.amadan/ciLoading diff…
.amadan/ci.d/10-vet
+2 −0
.amadan/ci.d/10-vetLoading diff…
.amadan/ci.d/20-fmt
+2 −0
.amadan/ci.d/20-fmtLoading diff…
.amadan/ci.d/30-test
+2 −0
.amadan/ci.d/30-testLoading diff…
.amadan/ci.d/40-migration-check
+2 −0
.amadan/ci.d/40-migration-checkLoading diff…
.gitignore
+8 −0
.gitignoreLoading diff…
AGENTS.md
+73 −0
AGENTS.mdLoading diff…
CLAUDE.md
+5 −0
CLAUDE.mdLoading diff…
Makefile
+113 −0
MakefileLoading diff…
README.md
+122 −0
README.mdLoading diff…
cmd/fichas/main.go
+87 −0
cmd/fichas/main.goLoading diff…
docs/superpowers/specs/2026-09-19-fichas-design.md
+280 −24
docs/superpowers/specs/2026-09-19-fichas-design.mdLoading diff…
go.mod
+41 −0
go.modLoading diff…
go.sum
+99 −0
go.sumLoading diff…
internal/fichas/app.go
+131 −0
internal/fichas/app.goLoading diff…
internal/fichas/auth.go
+196 −0
internal/fichas/auth.goLoading diff…
internal/fichas/auth_navigation.go
+120 −0
internal/fichas/auth_navigation.goLoading diff…
internal/fichas/auth_navigation_test.go
+122 −0
internal/fichas/auth_navigation_test.goLoading diff…
internal/fichas/catalogue.go
+264 −0
internal/fichas/catalogue.goLoading diff…
internal/fichas/catalogue_test.go
+218 −0
internal/fichas/catalogue_test.goLoading diff…
internal/fichas/config.go
+174 −0
internal/fichas/config.goLoading diff…
internal/fichas/config_test.go
+200 −0
internal/fichas/config_test.goLoading diff…
internal/fichas/handlers.go
+288 −0
internal/fichas/handlers.goLoading diff…
internal/fichas/icons/icons.go
+47 −0
internal/fichas/icons/icons.goLoading diff…
internal/fichas/migrations.go
+42 −0
internal/fichas/migrations.goLoading diff…
internal/fichas/migrations/0001_init.sql
+68 −0
internal/fichas/migrations/0001_init.sqlLoading diff…
internal/fichas/migrations/0002_immutable_entries.sql
+43 −0
internal/fichas/migrations/0002_immutable_entries.sqlLoading diff…
internal/fichas/migrations/schema.sql
+71 −0
internal/fichas/migrations/schema.sqlLoading diff…
internal/fichas/models.go
+346 −0
internal/fichas/models.goLoading diff…
internal/fichas/models_test.go
+137 −0
internal/fichas/models_test.goLoading diff…
internal/fichas/print.go
+84 −0
internal/fichas/print.goLoading diff…
internal/fichas/print_test.go
+76 −0
internal/fichas/print_test.goLoading diff…
internal/fichas/read.go
+336 −0
internal/fichas/read.goLoading diff…
internal/fichas/render.go
+87 −0
internal/fichas/render.goLoading diff…
internal/fichas/seal/seal.go
+182 −0
internal/fichas/seal/seal.goLoading diff…
internal/fichas/seal/seal_test.go
+128 −0
internal/fichas/seal/seal_test.goLoading diff…
internal/fichas/seal/vectors_test.go
+72 −0
internal/fichas/seal/vectors_test.goLoading diff…
internal/fichas/static/brand/LICENSE.lucide
+43 −0
internal/fichas/static/brand/LICENSE.lucideLoading diff…
internal/fichas/static/brand/apple-touch-icon.png
binary
internal/fichas/static/brand/apple-touch-icon.pngLoading diff…
internal/fichas/static/brand/brand.css
+19 −0
internal/fichas/static/brand/brand.cssLoading diff…
internal/fichas/static/brand/icon-32.png
binary
internal/fichas/static/brand/icon-32.pngLoading diff…
internal/fichas/static/brand/icon.svg
+1 −0
internal/fichas/static/brand/icon.svgLoading diff…
internal/fichas/static/datetime.js
+1338 −0
internal/fichas/static/datetime.jsLoading diff…
internal/fichas/static/rastrillo.js
+337 −0
internal/fichas/static/rastrillo.jsLoading diff…
internal/fichas/static/select.js
+280 −0
internal/fichas/static/select.jsLoading diff…
internal/fichas/static/theme.css
+99 −0
internal/fichas/static/theme.cssLoading diff…
internal/fichas/static/tokens.css
+1664 −0
internal/fichas/static/tokens.cssLoading diff…
internal/fichas/store.go
+413 −0
internal/fichas/store.goLoading diff…
internal/fichas/store_test.go
+364 −0
internal/fichas/store_test.goLoading diff…
internal/fichas/templates/card_delete.html
+16 −0
internal/fichas/templates/card_delete.htmlLoading diff…
internal/fichas/templates/card_new.html
+20 −0
internal/fichas/templates/card_new.htmlLoading diff…
internal/fichas/templates/card_show.html
+53 −0
internal/fichas/templates/card_show.htmlLoading diff…
internal/fichas/templates/errors.html
+9 −0
internal/fichas/templates/errors.htmlLoading diff…
internal/fichas/templates/index.html
+32 −0
internal/fichas/templates/index.htmlLoading diff…
internal/fichas/templates/layout.html
+31 −0
internal/fichas/templates/layout.htmlLoading diff…
internal/fichas/templates/signin.html
+26 −0
internal/fichas/templates/signin.htmlLoading diff…
internal/fichastest/browser_test.go
+53 −0
internal/fichastest/browser_test.goLoading diff…
internal/fichastest/fontlink_test.go
+24 −0
internal/fichastest/fontlink_test.goLoading diff…
internal/fichastest/gates_test.go
+143 −0
internal/fichastest/gates_test.goLoading diff…
internal/fichastest/harness_test.go
+114 −0
internal/fichastest/harness_test.goLoading diff…
internal/fichastest/index_test.go
+77 −0
internal/fichastest/index_test.goLoading diff…
internal/fichastest/signin_test.go
+102 −0
internal/fichastest/signin_test.goLoading diff…
internal/fichastest/surface_test.go
+138 −0
internal/fichastest/surface_test.goLoading diff…
internal/fichastest/vendored_test.go
+74 −0
internal/fichastest/vendored_test.goLoading diff…
scripts/writetheme/main.go
+21 −0
scripts/writetheme/main.goLoading diff…