Skip to content

v1.2.0: binarios verificables y filtro de la galería - #63

Merged
BertMarti merged 7 commits into
mainfrom
v1.2-2026-11-02
Nov 10, 2026
Merged

BertMarti merged 7 commits into
mainfrom
v1.2-2026-11-02

Conversation

@BertMarti

Copy link
Copy Markdown
Owner

Versión 1.2.0 de commitling: binarios verificables y una galería más fácil de recorrer. action.yml no cambia y ninguna tarjeta SVG cambia (galería de main contra la rama: solo difieren index.html, page.js y style.css; huellas de v0.5.0 y v1.0.0 en verde).

Qué cambia

  • Atestaciones de procedencia (del PLAN «Después de la 1.0»): release.yml llama a actions/attest-build-provenance (fijada por SHA, v4.2.2) con subject-checksums sobre el checksums.txt que --check acaba de comparar, antes de gh release upload. id-token: write y attestations: write solo en el job binaries. La Action no cambia su descarga: sigue confiando solo en release/checksums.txt de su árbol (un test prohíbe atestaciones en action.yml).
  • Verificación para usuarios (gh attestation verify <binario> --repo BertMarti/commitling) en README (FAQ), docs/USO.md, docs/DESARROLLO.md, SECURITY.md y la web (sección «Binarios verificables», enlace «Verificar» en la cabecera), con un aviso «la 1.2.0 aún no está publicada» que quita la rama v1.2-tras-publicar.
  • Filtro «Ver en la galería»: Todas o una especie (fases, ánimos, accesorios y su tarjeta compacta). Progresivo (sin JavaScript se ve todo), sin almacenamiento (origen compartido), sin tocar location.hash, valor validado contra la lista cerrada de la carga, los enlaces «Ir a:» cambian el filtro si la especie estaba oculta, mensaje en role="status".
  • Versión 1.2.0 (CLI y web), CHANGELOG [1.2.0] - 2026-11-02, PLAN.md al día (fuera los pasos ya hechos de la 1.0.0 y la 1.1.0), MEMORY.md, AGENTS.md, skill publicar-version.
  • Último commit: release/checksums.txt de la 1.2.0 (Go 1.27.3; reproducible con GOFLAGS=-tags=zzz).
  • Mantenimiento: Go 1.27.3 sigue siendo el último parche (sin cambios en go.mod), govulncheck sin vulnerabilidades, 0 alertas y 0 PRs de Dependabot.

Cómo se ha probado

  • gofmt -l . vacío, go vet ./..., go test ./... (con los tests de Node), govulncheck, staticcheck y actionlint 1.7.12 sobre los workflows.
  • Tests nuevos: TestReleaseAttestsTheBinaries, TestGalleryHasSpeciesFilter, TestPageExplainsAttestations, TestPageBehaviourInNode (7 escenarios de page.js).
  • Chromium sin cabeza (uno solo, por CDP): filtro en claro, oscuro y móvil; «Ir a: Cactus» con el filtro en Calabaza cambia a Cactus y salta al ancla; flechas del teclado cambian la radio y el mensaje; 0 px de desborde a 320 y 390 px (con y sin filtro); 0 violaciones de CSP/Trusted Types.

Quién hizo qué

  • Claude Opus 5.5 (jefe): diseño, release.yml y su test, docs, versión, checksums, revisión y pruebas en navegador.
  • GPT-5.6 Luna (OpenCode, delegado): filtro de la galería, sección de la web y sus tests (no pudo ejecutar Go en su sesión; lo ejecutó Claude y corrigió la lista cerrada y el test). Revisión cruzada (--agent plan): sin hallazgos en código y docs; dos notas sobre tests textuales (cubiertas por actionlint en el CI y la prueba en Chromium).

Publicación

Orden: fusionar → release v1.2.0 sobre el SHA del merge → esperar a «Release» (binarios + atestaciones) → gh attestation verify → mover v1 → PR de v1.2-tras-publicar. Nada más en main entre la fusión y la release.

🤖 Generated with Claude Code

BertMarti and others added 7 commits November 5, 2026 13:04
release.yml firma con actions/attest-build-provenance (fijada por SHA,
v4.2.2) una atestación de procedencia de cada binario, con
subject-checksums sobre el checksums.txt que --check acaba de comparar con
release/checksums.txt y antes de subirlos. id-token: write y
attestations: write solo en el job binaries. La Action no cambia: sigue
confiando solo en release/checksums.txt de su árbol.
TestReleaseAttestsTheBinaries vigila permisos, orden y que action.yml no
use atestaciones.

Hecho por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Selector de especie en la galería (Todas o una sola: fases, ánimos,
  accesorios y tarjeta compacta), progresivo: sin JavaScript se ve todo.
  Sin almacenamiento (origen compartido), sin tocar location.hash, valor
  validado contra la lista cerrada de la carga; los enlaces «Ir a:» y
  hashchange cambian el filtro si la especie estaba oculta; mensaje en
  role=status.
- «Binarios verificables» en Privacidad (y enlace «Verificar» en la
  cabecera): cómo comprobar un binario con gh attestation verify.
- Tests: page.test.js (Node, 7 escenarios), TestGalleryHasSpeciesFilter,
  TestPageExplainsAttestations; recuentos de botones de copia y opciones
  marcadas al día. Ninguna tarjeta SVG cambia.

Hecho por GPT-5.6 Luna (delegado); revisado, corregido (lista cerrada
fijada al cargar, bloques compactos en el test, gh auth login) y probado
en Chromium por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CLI 1.2.0, CHANGELOG [1.2.0] - 2026-11-02 (incluye lo de la rama tras
publicar de la 1.1.0), PLAN.md al día (fuera los pasos de publicación de
la 1.0.0 y la 1.1.0 ya hechos y el aviso de Private vulnerability
reporting, ya activo), MEMORY.md, AGENTS.md, skill publicar-version.
Verificación con gh attestation verify en README, docs/USO.md,
docs/DESARROLLO.md y SECURITY.md, con el aviso «la 1.2.0 aún no está
publicada» que quita la rama v1.2-tras-publicar.

Hecho por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
release/checksums.txt generado con scripts/build-release.sh --write (Go
1.27.3) después del último cambio de código y de la web; reproducible
(con GOFLAGS=-tags=zzz, los mismos bytes). Activa el binario precompilado
al publicar la v1.2.0; antes, el paso bin recibe 404 y compila.

Hecho por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Al envolver cada especie en .species-block, h3.species:first-of-type se
  aplicaba a todas las especies y a «Tarjeta compacta», que perdían la
  línea discontinua y el margen. Ahora solo el primer bloque de la
  galería (#galeria > .species-block:first-of-type > h3.species). Test:
  TestGalleryHasSpeciesFilter (comprobado que falla con la regla vieja)
  y medido en Chromium con «Todas».
- #species-pick-msg va con hidden en la plantilla y page.js lo muestra
  junto al selector.
- La web explica que, con solo --repo, gh attestation verify comprueba
  que lo firmó un workflow del repositorio, y ofrece --signer-workflow
  para exigir el de «Release» (gh 2.49 o posterior).
- TestReleaseAttestsTheBinaries: ci.yml y action-test.yml no pueden
  mencionar id-token ni attestations; deploy.yml no puede escribir
  atestaciones y su único id-token: write es el del job deploy junto a
  pages: write (lo necesita actions/deploy-pages).

Arreglos de la revisión final de Fable, hechos por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
README, docs/USO.md, SECURITY.md y CHANGELOG: con solo --repo se
comprueba que el archivo lo firmó un workflow de BertMarti/commitling;
con --signer-workflow .../release.yml, que fue el de «Release»; hace falta
gh 2.49 o posterior. «Lo que tienes que hacer tú» del README y la skill
publicar-version: comprobar las atestaciones de los 6 binarios tras
«Release» y antes de mover v1 (firma con gh >= 2.49; por la API con
cualquier gh).

Arreglos de la revisión final de Fable, hechos por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…evisión

release/checksums.txt regenerado con scripts/build-release.sh --write (Go
1.27.3) después del último cambio de la web; reproducible (con
GOFLAGS=-tags=zzz, los mismos bytes).

Hecho por Claude.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@BertMarti
BertMarti merged commit d78fdc7 into main Nov 10, 2026
5 checks passed
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