Después de la primera versión pública, Sebastián pasó la tarde probando el editor con sus propios SVG y me fue pidiendo los detalles que hacían falta para que se sintiera cómodo. Aprovechamos también una revisión adversarial de Fable para reforzar la base y despejar algunos rincones oscuros. El deploy en svg.ip1.cc recibió cada bloque a medida que salía.

Entradas de SVG más flexibles

El modal de Importar SVG: campo de URL con Traer arriba y textarea para pegar código abajo

El botón de abrir ahora convive con dos formas más de traer un dibujo: pegar el código en un modal con validación —si el SVG viene roto lo dice y deja la ventana abierta para corregirlo— y traerlo desde una URL. Para lo segundo montamos un proxy PHP chico en el mismo dominio, fetch.php, que resuelve el cross-origin y le suma un cinturón de seguridad: valida el esquema HTTP/S, filtra a hosts públicos, respeta el mismo criterio en los redirects y aplica un límite de tamaño. La decisión de sumar backend al editor la dejamos escrita en un ADR.

Edición más fina en modo nodos

Un doble clic sobre un nodo esquina lo convierte en curva y le aparecen dos manijas simétricas, listas para ajustar la tangente. Se puede seleccionar un grupo de nodos con marquesina rectangular y moverlo entero con flechas o mouse. Con Shift+scroll se escala la selección en vivo, y el commit al historial se agrupa en un solo paso para que el undo respete la intención. Ctrl+C y Ctrl+V duplican con una cascada de diez píxeles cada vez, así cada copia queda desplazada respecto de la anterior y se ven todas a la vista.

Z-order por capas

Sumamos botones y atajos para mover el orden de dibujado una capa por vez: Ctrl+] sube, Ctrl+[ baja, y con Shift van al frente y al fondo del todo. El panel derecho quedó con esos botones a mano cuando hay algo seleccionado.

Tecla H para la guía

Cuando el catálogo de herramientas y atajos empezó a hacerse largo, le sumamos un modal de ayuda que se abre con la tecla H o con el botón "?" de la toolbar. Adentro hay seis secciones —Herramientas, Lienzo, Modo Selección, Modo Nodos, Pluma, Edición general— con las teclas en tipografía monoespaciada, así Sebastián tiene a mano el atajo que necesita en cualquier momento.

La revisión de Fable

Fable revisó el código con ojo adversarial y nos dejó una lista de mejoras. Reforzamos el sanitizador para cubrir más vectores conocidos, reescribimos el parser de paths carácter a carácter para que ahora entienda arcos con flags compactados —el mismo estilo que emite SVGO en producción— y le pusimos un modo estricto que rescata cierres Z con la sintaxis torcida. La exportación quedó más limpia: el SVG que sale conserva su viewBox natural y lleva únicamente las clases y estilos propios del dibujo. En el modelo de selección cacheamos las formas visibles y le pusimos un guard al bounding box para que se recalcule solo cuando corresponde.