Skip to content

Fase 3: especie cactus, tema de la web, Trusted Types, acciones por SHA y binario precompilado preparado - #57

Merged
BertMarti merged 6 commits into
mainfrom
fase3-2026-10-25
Oct 26, 2026
Merged

BertMarti merged 6 commits into
mainfrom
fase3-2026-10-25

Conversation

@BertMarti

Copy link
Copy Markdown
Owner

Fase 3: especie cactus, tema de la web, Trusted Types, acciones por SHA y binario precompilado preparado

Termina lo pendiente del PLAN que más se nota. La interfaz de action.yml no cambia (entradas, salida path, archivos, SVG) y musgo y hongo salen byte a byte iguales. No se crea ninguna release ni se mueve ninguna etiqueta.

Qué cambia

  • Tercera especie: cactus (species: cactus), sprites pixel-art propios: Yema → Bolita → Cactus → Cactus con brazos → Cactus centenario, en su maceta. Galería (58 archivos nuevos), compacta, OG (reajustada a tres filas), generadores de la web, CLI, docs. install.js escribía species: mushroom para cualquier especie no predeterminada: corregido.
  • Selector de tema de la web (Sistema · Claro · Oscuro) en la cabecera: sin recargar, sin parpadeo (theme.js en <head>), cambia también todas las tarjetas (<source media>) y theme-color. Guarda commitling:theme (solo light/dark; «Sistema» borra la clave; otro valor se ignora y se borra). Sin JS sigue al sistema. CSP sin cambios salvo Trusted Types.
  • Trusted Types: require-trusted-types-for 'script'; trusted-types commitling. Única política en generator.js, solo para wasm_exec.js.
  • Acciones de terceros fijadas por SHA (# vX.Y.Z) en los workflows y en action.yml; test que lo vigila. Dependabot las sigue actualizando.
  • Binario precompilado preparado, inactivo: scripts/build-release.sh (reproducible), .github/workflows/release.yml (solo al publicar una release), paso bin en action.yml que solo usa un binario cuyo SHA-256 esté en el release/checksums.txt de su propio árbol. Ese archivo no existe en este PR → la Action hace exactamente lo de antes (setup-go + go run).

Cómo se ha probado

  • gofmt, go vet (también wasm), go test ./... en la Raspberry (GOFLAGS=-p=2); tests de Node (generador, instalador, tema).
  • Galería de main vs rama: los 120 SVG y el favicon existentes idénticos; CLI idéntica en las 8 combinaciones de musgo/hongo; las 96 huellas de v0.5.0 pasan.
  • Chromium (CDP): demo, generador con usuario real y cactus, instalador, criatura en vivo y selector de tema → 0 violaciones de CSP/Trusted Types y 0 errores de consola; innerHTML/script.src con cadena y una política ajena quedan bloqueados; sin desbordes a 320 px.
  • Paso bin simulado en local: binario bueno → se usa; manipulado → se borra y compila; sin release → compila; sin checksums.txt → no hace nada. En el CI, job binario con las mismas tres rutas.

Quién hizo qué

  • GPT-5.6 Luna (OpenCode, delegado): selector de tema (revisado y corregido por Claude) y andamiaje de la especie (sus sprites no valían y los redibujó Claude); revisión cruzada con --agent plan (un hallazgo, ver informe).
  • Claude (jefe): sprites del cactus, Trusted Types, SHA, binario precompilado, OG, tests, docs, pruebas en navegador.

Tras fusionar (Alberto)

Release v0.8.0 con las notas del CHANGELOG y mover v1. Opcional: activar el binario precompilado (docs/DESARROLLO.md).

🤖 Generated with Claude Code

BertMarti and others added 6 commits October 26, 2026 02:10
- theme.js en <head> (sin parpadeo): data-theme, <source> y theme-color
  forzados o restaurados; localStorage commitling:theme con lista cerrada
  (light, dark); «Sistema» borra la clave; todo con try/catch.
- CSP: require-trusted-types-for 'script'; trusted-types commitling. La
  única política (generator.js) solo crea la URL de wasm_exec.js.
- Tests: theme.test.js (Node), theme_test.go, escenarios de Trusted Types en
  generator.test.js y CSP. gallery.go/gallery_test.go incluyen ya la intro y
  el recuento de archivos de la especie cactus (commit siguiente).

Interfaz hecha por GPT-5.6 Luna (delegado) y revisada y corregida por Claude
(lectura de valores fuera de lista, test de almacenamiento); Trusted Types
por Claude. Probado en Chromium: 0 violaciones.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Yema, Bolita, Cactus, Cactus con brazos y Cactus centenario, en su maceta.
Musgo y hongo salen byte a byte iguales (galería y CLI comparadas con main).
La imagen OG se reajusta para tres filas; install.js escribía «species:
mushroom» para cualquier especie no predeterminada: ahora la que se elige.

Andamiaje y tests por GPT-5.6 Luna (delegado); sus mapas no valían (una
fila de 15 píxeles, «con brazos» sin brazos) y los redibujó Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- checkout, setup-go, upload-pages-artifact y deploy-pages fijadas por SHA
  con su versión en comentario, también en action.yml (test).
- scripts/build-release.sh: binarios reproducibles de 6 plataformas;
  release.yml los sube al publicar una release si coinciden con
  release/checksums.txt.
- action.yml: paso bin que solo usa un binario cuyo SHA-256 está en el
  release/checksums.txt de su propio árbol; si no, setup-go y go run como
  siempre. Sin ese archivo (hoy) nada cambia. Job «binario» en action-test
  con las tres rutas; paso de cactus en la prueba de la Action.

Hecho por Claude; revisión cruzada de GPT-5.6 Luna (--agent plan).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lado)

Documentación hecha por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…Index < 0)

Arreglo de Claude tras el job de seguridad del CI.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- build-release.sh exporta GOFLAGS=-p=2 GOEXPERIMENT= GOFIPS140=off: el
  entorno (p. ej. GOFLAGS=-tags=…, que queda en el binario) ya no cambia
  los SHA-256. El CI recompila con GOFLAGS=-tags=zzz y compara; test.
  Los SHA-256 no cambian (comprobado en la Raspberry).
- Paso bin de action.yml: mkdir, sha256sum/shasum y chmod ya no pueden
  cortar el job con bash -e -o pipefail (siempre cae a go run); test.

Arreglos de Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@BertMarti
BertMarti merged commit f499292 into main Oct 26, 2026
5 checks passed
@BertMarti
BertMarti deleted the fase3-2026-10-25 branch November 2, 2026 17:49
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.

1 participant