v2.9 Share & Power Input: compartir doc por URL (gzip nativo), regex en reemplazo, JSONPath y accesibilidad (92/92 tests)#9
Merged
Conversation
…idad Features: - Compartir documento por URL: botón que comprime el documento con CompressionStream (gzip nativo del navegador, cero dependencias) y lo codifica en base64url dentro del hash de la URL — que nunca se envía a ningún servidor. loadDocFromHash() descomprime al abrir el enlace. Límite ~45KB comprimido; aviso en navegadores sin soporte. - Regex en buscar y reemplazar: checkbox 'regex' con grupos $1,$2... en Reemplazar y Todo. Regex inválida muestra aviso sin romper. - JSONPath en el árbol JSON: click en una clave copia su ruta ($.tienda.libros[0].titulo) al portapapeles, en paridad con el árbol XML. - Accesibilidad (primera pasada WCAG): role=alert en errores, aria-live en validación, aria-label en iconos/selects, aria-hidden en gutters, y foco visible por teclado (outline ámbar) en todos los controles y temas. Descartado: UI bilingüe ES/EN (~100+ strings, riesgo de regresiones). Tests: 7 nuevos — 92/92 pasando. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumen
v2.9 "Share & Power Input": cuatro mejoras del backlog, todas dentro de la filosofía un-archivo/cero-dependencias. 92/92 tests pasando.
📤 Compartir documento por URL
Botón 📤 Compartir doc: comprime el documento con
CompressionStream(gzip nativo del navegador, cero dependencias) y lo codifica en base64url dentro del hash de la URL. El hash nunca se envía a ningún servidor — la privacidad del proyecto queda intacta. Al abrir el enlace,loadDocFromHash()descomprime y carga el documento con validación en vivo.😀 ñandú & más)+,/,=) — apto para URL sin escaparCompressionStream♻️ Regex en buscar y reemplazar
Checkbox regex en la fila de reemplazo: expresiones regulares con grupos
$1, $2...tanto en "Reemplazar" (siguiente desde el cursor, con vuelta al inicio) como en "Todo". Regex inválida muestra aviso sin romper. Verificado:(\d+) USD→$1 EURreemplazó 2 coincidencias correctamente.🧭 JSONPath en el árbol JSON
Paridad con el árbol XML: click en una clave copia su ruta JSONPath (
$.tienda.libros[0].titulo) al portapapeles. Las rutas XML siguen rellenando además el campo XPath (hay motor de consulta); las JSON solo se copian (no hay motor JSONPath embebido).♿ Accesibilidad (primera pasada WCAG)
Estaba prometida en los objetivos de calidad de SCOPE.md y nunca se había hecho:
role="alert"en el contenedor de errores,aria-live="polite"en la validación en vivoaria-labelen botones de icono (▲▼) y selectsaria-hidden="true"en los gutters decorativos (no son contenido para lectores)Descartado en esta versión
UI bilingüe ES/EN — ~100+ strings a tocar con riesgo real de regresiones. Se reconsiderará como versión propia si el proyecto gana tracción internacional. Documentado en SCOPE.md y ROADMAP.md.
Tests
7 nuevos: JSONPath en árbol JSON, gzip/gunzip roundtrip + base64url, regex con grupos (UI), regex inválida (UI), carga desde
#doc=(UI), y atributos ARIA (UI). 92/92 pasando; el CI correrá el workflow headless al abrir el PR.Métricas
index.html: ~2277 líneas / ~88KB (límites: ~2500 / 100KB duro).🤖 Generated with Claude Code