Registro de cambios
Cada versión, cada función, cada corrección, en un registro desplazable.
2026-04-26, Cumplimiento total de renderizado ISO/AIM/GS1 en cada tipo de código
- Auditados todos los códigos QR / 2D / 1D contra su estándar regulador. El
includetextde bwip-js's está en false por defecto en cada bcid, así que EAN/UPC/ITF-14 se publicaban sin la franja de texto legible que exigen ISO 15420 §5.1.2 + GS1 §5.4.4. Establecidoincludetext: true+guardwhitespace: truepara toda la familia EAN/UPC, además deincludetext: truepara ITF-14, Code 128, Code 39, Code 93, Codabar, VIN. - Las zonas tranquilas de EAN-13 ahora son asimétricas según ISO 15420 Anexo A (
paddingleft: 44= 11 módulos,paddingright: 28= 7 módulos a scale=4). EAN-8 / UPC-A / UPC-E usan los márgenes simétricos que sus especificaciones nombran. PDF417 + licencia de conducir AAMVA reciben zonas tranquilas de 2 módulos según ISO 15438 §5.5; Data Matrix recibe 1 módulo según ISO 16022; Aztec recibe 1 módulo recomendado (cero permitido por ISO 24778 pero rompe los escáneres que tocan el borde). - El
QUIET_ZONE_MODULESde QR subió de 2 → 4, la especificación completa ISO/IEC 18004 §6.3.7. El atajo de 2 módulos era un compromiso de la industria que falla en la detección del prefijo GS1 Digital Link en algunos escáneres láser industriales. Micro QR + rMQR ahora se entregan con una zona tranquila de 2 módulos (qreanemite la cuadrícula desnuda, así que la añadimos manualmente enrenderMicroQRResult). - Niveles ECC fijados: Aztec al 23 % (predeterminado de ISO 24778), PDF417 en nivel 5 (mínimo GS1 transporte y logística). Bloqueando contra futura deriva de bwip-js.
- Nueva página de referencia: /standards/barcode-rendering/. Referencia por simbología que cubre zonas tranquilas, HRI, ECC y dígitos de control para los 17 tipos, con enlaces a la fuente primaria de cada estándar ISO/AIM/GS1 citado.
2026-04-26, Refuerzo de la puerta de despliegue staging-first
- Los despliegues a producción de sitios con staging ahora exigen que el último despliegue de staging corresponda exactamente al commit actual (árbol de trabajo limpio en ambos lados). La ventana de 24 horas de la puerta anterior permitía que despliegues de producción no relacionados se montaran sobre historial de staging desactualizado. Verificación por SHA, fail-closed, la anulación sigue siendo
CF_DEPLOY_SKIP_STAGING_FIRST=1. - Comprobación previa en
cf-deploy.pyparaCLOUDFLARE_API_TOKEN, falla rápido con una pistasource ~/.envrcen lugar de dejar que wrangler arroje su críptico error de "non-interactive environment". - Verificador de contenido posterior al despliegue en cada deploy: descarga la URL en producción y confirma que su cache-buster coincide con lo que acaba de estamparse en
dist/. Detecta los errores tipo "CNAME equivocado" / "edge sirviendo caché obsoleta" / "rama equivocada" que la verificación de salud 200-OK pasaría por alto en silencio.
2026-04-25, Renovación de UX móvil: cabecera de vista rápida, hoja inferior de vista previa, CTA de descarga fijo
- Cabecera fija de vista rápida en la parte superior en móviles (≤768 px). Siempre muestra una miniatura en vivo del QR más un estado en una línea, "Rellena el formulario" cuando está en reposo, "Tu QR está listo · Toca para descargar" cuando un código se renderiza. Pulsa una vez cuando el QR se vuelve válido por primera vez para que los usuarios la noten. Resuelve el problema de siempre en el que los visitantes móviles no se daban cuenta de que el resultado quedaba bajo el pliegue.
- Tocar la barra de vista rápida (o el nuevo botón fijo Descargar de la parte inferior) abre la vista previa como una hoja inferior, botones de descarga a ancho completo apilados verticalmente, cerrar con deslizar hacia abajo o tocar el fondo, padding de área segura para el indicador de inicio de iOS.
- Manejo del teclado virtual: un escucha de visualViewport marca
body.kb-opencuando aparece el teclado, la barra de vista rápida se colapsa a una píldora delgada y los campos enfocados se desplazan al centro para que el teclado nunca oculte lo que el usuario escribe. - Repaso de áreas táctiles a ≤640 px: las tarjetas del selector de tipo suben de 14×8 / 0.78rem a 16×10 / 0.82rem y 56 px de altura mínima, las pestañas de panel y los botones primarios quedan en 44 px mínimo, los botones de exportación se apilan a ancho completo con un mínimo de 48 px dentro de la hoja.
- El meta de viewport gana
interactive-widget=resizes-contenty las dos reglas de100vhse migran a100dvhpara un layout predecible en navegadores móviles con barras dinámicas. - El antiguo FAB de desplazarse a la vista previa fue eliminado, la barra de vista rápida más el CTA fijo cubren la misma tarea de forma más directa. La caché del service worker subió a v132. Cadenas nuevas traducidas a los 25 idiomas.
- Higiene de CSS: 203 declaraciones de espaciado de un solo valor en
style.cssmigradas a tokens--space-Nmediante codemod. Refactor puro, sin cambio visual. - Techo de estilos en línea 89 → 85: cuatro atributos
style="text-transform:uppercase"en los inputs de AAMVA / Code 39 / Code 93 / VIN reemplazados por la clase existente.input-uppercase.
2026-04-19, Barrido de cumplimiento N16 (45 páginas), lote 2 de N3, correcciones de regresión, cola de N3, divulgación AAMVA, persistencia del estado Experto, auditoría de accesibilidad
- Barrido completo de cumplimiento N16: las 34 páginas de destino de esquemas de pago ahora llevan bloques de lista de comprobación de cumplimiento + "cuándo no usar esto". La cuarta pasada (19 páginas) cubre el resto: Alipay + WeChat Pay (PBoC + SAFE), Boleto (BACEN + FEBRABAN), Mercado Pago (matriz reguladora de siete países), Payconiq (NBB + PSD2), EPC/Girocode (EPC069-12 + ZAG), Apple Wallet + Google Wallet (developer-program + FTC Endorsement + GDPR location), Kakao Pay + Naver Pay + LINE Pay (Korean FSC + Japanese FSA + Taiwan FSC + BOT), GCash + Maya (BSP EMI + AMLC + QR Ph + SEC PH), JPQR (METI + FSA Qualified-Invoice), FPS HK (HKICL + HKMA + SFC Alert List), DuitNow (PayNet + BNM + LHDN e-Invoice), M-PESA (Safaricom + CBK + eTIMS + CMA), MoMo (SBV + AMLID + GDT e-Invoice), PayID (NPP + RBA + APRA + AUSTRAC + ASIC). Combinado con las tres pasadas anteriores (AAMVA / páginas de Reseña / Cupón / Embudo de reseña / App Store / PayPal / Cripto / UPI / SEPA + Venmo / Cash App / Swiss QR-bill / PIX / PromptPay / EMVCo / TWINT + Bizum / PayNow / iDEAL / BLIK / Interac / MB WAY / Swish / Vipps), eso son 45 páginas de destino con cumplimiento bloqueado, cada esquema de pago en el sitio tiene ahora referencias a su regulador local, reglas de clasificación de comerciante, deberes fiscales / de facturación, marco de protección al consumidor y una barrera "sin solicitud de inversión" apuntando al regulador de valores correcto. Primer sublote (7): Venmo (AUP / abuso de F&F / 1099-K / reporte Early Warning), Cash App (Cash for Business / Bitcoin & Investing como superficies reguladas / Regulation E / aviso de fraude del CFPB), Swiss QR-bill (SIX v2.3 / reglas de QR-IBAN / MWSTG / retención de 10 años OR Art. 958f), PIX (BACEN Resolución 103/2021 / PJ vs PF / ventana de reembolso MED / fraude de pegatina superpuesta / aviso de inversión CVM), PromptPay (reglas BOT / umbral IVA THB 1,8M / reporte AMLO / divulgación FX transfronteriza), EMVCo (ISO 18245 MCC / KYC del adquirente / FIU nacional ante discrepancia AID), TWINT (FINMA/AMLA / MROS / protección al consumidor KIG). Segundo sublote (8): Bizum (Bizum Negocios / SEPBLAC / factura / CNMV), PayNow (MAS Payment Services Act / reporte STRO / SGQR / PDPA), iDEAL (adquirente con licencia / DNB / disputa PSD2 de 13 meses / CBF para organizaciones benéficas / aplicación ACM), BLIK (Polski Standard Płatności / KNF / reporte GIIF / faktura VAT / RODO), Interac (Interac for Business / FINTRAC / PIPEDA / Quebec Bill 96 / fraude CAFC), MB WAY (SIBS / Banco de Portugal / UIF / CMVM / GDPR), Swish (Getswish AB / Finansinspektionen / Skatteverket kassaregister / Swish-bedrägerier), Vipps (Vipps MobilePay AS / Finanstilsynet / Økokrim / Bokføringsloven / advarselsliste). Se suma a los bloques de cumplimiento previos sobre AAMVA, Reseña Google/Yelp/TripAdvisor, Cupón, Embudo de reseña, App Store, PayPal, Cripto, UPI, SEPA. Cobertura total ahora: 26 páginas de destino.
- Cinco páginas de autoridad de estándares más (lote 2 de N3), licencia de conducir AAMVA, activación de eSIM (LPA), QR de comerciante EMVCo, Micro QR / rMQR, e-factura ZATCA. El hub tiene ahora 8 páginas de referencia en vivo que cubren las especificaciones principales.
- Dos regresiones corregidas: (1) la página de inicio se desplazaba automáticamente al cargar porque la inicialización de
showCategory()llamaba ascrollIntoView({block:"nearest"})en el chip de categoría, reemplazado por unscrollLefthorizontal manual para que el desplazamiento de la página nunca se toque. (2) La búsqueda de tipo "paym" devolvía cero resultados porque el filtro solo verificaba subcadenas de etiqueta + data-type, la corrección DRY ahora reutiliza las mismas tablas de sinónimos CAT_SEARCH + TYPE_SEARCH que usa la paleta de comandos. - Cola de N3: nueva página combinada de referencia /standards/non-qr-2d/ para Aztec (ISO/IEC 24778) + PDF417 (ISO/IEC 15438) + Data Matrix (ISO/IEC 16022). Tabla de comparación lado a lado, matriz de soporte de escáner nativo en iOS Camera / Android / Google Lens / capturadores industriales / puertas de aerolínea / lectores DMV / lectores DPM farmacéuticos, guía para escoger el correcto (Aztec para tarjetas de embarque, PDF417 para ASCII largo en papel plano, Data Matrix para DPM / farmacia, QR para cámaras de teléfonos de consumo). El hub de estándares tiene ahora las 9 páginas en vivo, 0 borradores.
- Divulgación progresiva del formulario AAMVA (seguimiento de N19.3): formulario de 25 entradas dividido en Requerido (jurisdicción / licencia / tipo de doc / familia / nombre / FdN), Recomendado abierto-colapsado (segundo nombre + calle + ciudad/estado/cp + fechas de emisión/expiración), Ajuste experto colapsado (sexo/ojo/altura + clase/restricciones/avales). Coincide con el patrón usado en TOTP, HOTP, Aztec, PDF417, Swiss QR, EMVCo, GS1, SEPA.
- El estado de Ajuste experto persiste entre visitas (seguimiento de N19.3): cuando abres la sección Experto en cualquier formulario, el estado abierto se guarda en
localStorage.qrExpertSectionsOpencon clave por tipo. La próxima vez que escojas ese tipo, Experto ya está abierto. Escuchatoggledelegado en.field-section[data-level="expert"], sin cableado por formulario. - Auditoría interna de accesibilidad (N8): pasada manual de WCAG 2.2 AA contra la página de inicio, /print-size/, el nuevo hub /standards/ + 9 páginas de autoridad, y las 45 páginas de destino de esquemas de pago. Verificado correcto en destino del enlace de salto, focus-visible, etiquetas de formulario, nombres de botón, roles ARIA, contraste AAA primario / AA+ atenuado. Se corrigió un salto en el nivel de encabezado (tres subtítulos
<h4>dentro de los campos extra de vCard/MECARD ascendidos a<h3>para un esquema limpio). Hallazgos completos publicados en /accessibility/. - ZIP del corpus público (seguimiento de N2): /proof/corpus.zip, bundle de fixtures JSON + CSV + metodología + README, ~4 KB, reconstruido en cada despliegue. Las flotas de escáneres ahora pueden descargar el corpus completo en un archivo en lugar de clonar el repo. Enlazado desde /proof/corpus/ con un botón Descargar prominente.
- Registro de atestación de flotas de escáneres (seguimiento de N2): nuevo docs/SCANNER_ATTESTATION.md, registro fechado por fila de verificaciones manuales de dispositivo/SO/app. Sembrado con 10 filas que cubren iPhone 15 Pro en iOS 18.3, Pixel 8 en Android 14, Zebra DS8100, Google Authenticator, 1Password. Crece con cada dispositivo que verifiquemos.
- Realismo de vista previa en el generador (N19.6): toggle compacto de 4 chips bajo la vista previa QR en vivo, Predeterminado / Teléfono / Mono / Bajo contraste. Aplica filtros CSS a la vista previa (escala para Teléfono, escala de grises para Mono, contraste reducido para Bajo contraste) para que los diseñadores vean cómo se comporta el QR en distintos sustratos sin salir del generador. Cero efecto en el payload codificado, descargas o copia al portapapeles.
- Más validadores semánticos (extensión de N19.4): comprobación de Base32 + entero no negativo del contador para HOTP; el SM-DP+ de eSIM debe ser un FQDN puro (sin https://, un rompedor común de aprovisionamiento de teléfono); el Matching ID de eSIM rechaza caracteres
$(colisiona con el separador de campos LPA). - Divulgación progresiva extendida a UPI y Cripto (extensión de N19.3): cantidad + nota de UPI agrupadas como Recomendado; cantidad + etiqueta de cripto agrupadas como Recomendado. SIP, MMS, PromptPay y Lightning revisados y dejados planos, pocos campos para beneficiarse de divulgación.
- Barrido de auditoría de calidad en SEO, rendimiento, seguridad, integridad de enlaces y calidad de código (pasada de i18n diferida). Las escrituras
cache.putdel service worker ahora corren dentro deevent.waitUntilpara que no puedan caerse a media navegación; caché elevada a v121. El diálogo de impresión de la tarjeta de visita pasó dedocument.writea una URLBlob. Los manejadores de clic de Compartir y descarga de tarjeta envueltos en try/catch para que los rechazos surjan como toasts en vez de fallos silenciosos. Tiempos de números mágicos (auto-apertura de hash de design-card, renderizado de fotograma GIF, separación de descarga doble PNG, revoke de blob de impresión) extraídos a constantes nombradas. Bug latente de CSS corregido: los selectores de input de.card-text-rowsolo coincidían con[type="text"], pero el minificador HTML elimina el atributotype="text"por defecto, añadidoinput:not([type])para que las entradas de eslogan + leyenda BCD conserven su estilo en producción. Dos declaraciones!importantgratuitas eliminadas;console.warnruidoso de i18n silenciado. CLAUDE.md actualizado, las páginas de idioma se prerenderizan asite/{lang}/, no se sirven mediante reescrituras de_redirects.
2026-04-18, Empuje de autoridad: hub /standards/ + 3 páginas de estándares, /proof/corpus/, cierre del Reviewer #6, N19.1 Avanzado-primero-flujo
- El modo Simple recibe una pista sutil "96 tipos más en Avanzado" debajo de la cuadrícula de 8 mosaicos. Hacer clic en el enlace voltea el toggle de modo para que los usuarios no se desplacen hacia atrás. Simple permanece en 8 mosaicos; Avanzado sigue siendo el camino de descubribilidad para la cola larga.
- La lista de viñetas del CTA de Pro reescrita para reflejar lo que realmente se ha lanzado: códigos con contraseña, activación y caducidad programadas, analítica de mapas de calor/clima/ROI/cohorte, páginas públicas compartibles de estadísticas, grupos de códigos para portafolios grandes, webhooks + API REST, multi-equipo y registro de auditoría, SSO (SAML/OIDC) + aprovisionamiento SCIM. Las viñetas genéricas antiguas "Analítica de escaneo / Flujos de API / Equipos" han desaparecido.
- La pista "Guardar en Pro" debajo del generador ahora nombra contraseña, activación programada, analítica de mapa de calor y ROI, y páginas públicas de estadísticas en vez de solo "analítica de escaneo".
- Divulgación progresiva en generadores avanzados con muchos campos (N19.3): TOTP, HOTP, Aztec, PDF417, Swiss QR y EMVCo colapsan sus perillas expertas (algoritmo/dígitos/período, nivel EC, columnas/compacto, mensaje, MCC/AID) bajo una sección Ajuste experto. GS1 Digital Link agrupa AI 17/10/21 como Recomendado; SEPA separa referencia (Recomendado) de BIC (Ajuste experto). Los resúmenes Experto colapsados muestran una píldora "experto" para que los usuarios avanzados detecten las perillas extra sin clic.
- Perfiles guardados (N19.8): nombrar y guardar los valores actuales de cualquier generador avanzado en localStorage, listarlos en el panel Perfiles guardados sobre la leyenda de compatibilidad y cargarlos con un clic o vía la paleta de comandos (Cmd/Ctrl+K). El almacenamiento es solo del lado del cliente; nada sale del navegador.
- Autoridad de impresión-producción (N15): /print-size/ ahora lleva una guía de sustratos (8 sustratos × penalización de tamaño × ECC), reglas de paleta CMYK-segura con anotaciones de catálogo CMYK/RGB-only, reglas exteriores/de señalización (decoloración UV, comportamiento de cámara en frío, ángulos de escaneo oblicuos), un protocolo de QA imprimible de 4 verificaciones, y definiciones de grado preflight en lenguaje claro ("D = fallará en señalización brillante a menos de 3 m").
- Cercado de cumplimiento (N16): nuevos bloques "Lista de comprobación de cumplimiento" + "Cuándo no usar esto" en cinco páginas de destino marcadas por revisor, App Store (Apple 5.2 / política de Play / distribución TestFlight), PayPal (AUP / abuso de F&F / 1099-K / clasificación MSB), Bitcoin & Cripto (Travel Rule de FATF / registro FinCEN/FCA / exposición Howey / OFAC), UPI (circular NPCI / GST / estafas anti-fraude por superposición / SEBI sobre QRs de inversión), SEPA (conformidad EPC069-12 / derechos de devolución PSD2 / advertencia de no-mandato-recurrente). Se suma a los bloques de cumplimiento preexistentes en AAMVA, Reseña Google / Yelp / TripAdvisor, Cupón, Embudo de Reseña.
- Tipos recientes en la paleta de comandos (N19.7): los últimos 8 tipos que escogiste aparecen primero cuando Cmd/Ctrl+K se abre con consulta vacía; con consulta parcial, los tipos recientes obtienen un pequeño bono de ranking para que "tot" salte de forma confiable a tu flujo OTP más usado. También marcados con un chip de categoría "Reciente" para que el bono sea visible, no mágico. Rastreado solo en localStorage.
- Pulido de modo Simple (N6): Simple ahora también oculta el panel Perfiles guardados (no es concepto de principiante) y la pestaña por lotes. Elementos ya ocultos sin cambios (búsqueda de tipo, presets de industria, leyenda de compatibilidad, pestañas de categoría, chips de compatibilidad).
- Tira de confianza de cuatro pilares (N7): la tira superior de afirmaciones colapsada de 5 elementos a 4, cada uno cargando explícitamente su etiqueta de pilar, "Verdaderamente gratis, sin registro, sin muros de pago", "Privacidad primero, 0 solicitudes salientes, verifica en vivo", "Seguro para producción, compatibilidad probada en abril de 2026", "Sin lock-in, QR estático de respaldo, exporta cuando quieras". El enlace Comparación-actualizada se eliminó de la tira (es señal de credibilidad, no pilar) pero sigue viviendo en la nav + footer.
- Llamadas decisivas "Usa esto si / No uses" (N19.11) en la parte superior de los formularios avanzados con muchos campos, Data Matrix, Aztec, PDF417, TOTP, HOTP, eSIM, GS1. Acentuadas en naranja, dos cláusulas, antes de cualquier entrada de campo. Reemplaza el patrón donde la prosa explicativa quedaba abajo y los usuarios solo la leían después de escribir.
- Banner de capacidad (N19.9) en el panel Estilo para simbologías no-QR, chip + título explícito ("Sin estilo, solo código de barras simple") + descripción, reemplazando la antigua pista de un solo párrafo por algo de un vistazo.
- Validación semántica (N19.4): validador de secreto Base32 TOTP, comprobación de prefijo CH/LI + longitud de 21 caracteres en IBAN Swiss QR, suma de comprobación mod-97 IBAN SEPA (capta dígitos mal tecleados) y advertencia de campo cruzado de WiFi Enterprise cuando se selecciona EAP pero la identidad está vacía. Inline, no-bloqueante, reutiliza el registro existente VALIDATION_RULES.
- QR Lab a un clic de Descargar (N5), un chip de borde discontinuo ("Prueba antes de imprimir en QR Lab →") se sienta en línea con los botones de descarga para que la verificación esté visible en el punto de exportación.
- Avanzado abre tarea-primero (N19.1): la tira de categorías ahora se organiza por lo que estás haciendo en vez de qué simbología es. Nueve cubos de flujo de trabajo, Compartir cotidiano, Eventos y lugares, Medios y archivos, Marketing y reseñas, WiFi y telecom, Pagos y banca, Retail y GS1, Embarque e ID, Auth y dev, reemplazan la antigua taxonomía de simbología (Cotidiano / Negocios / Pagos / Identidad / Seguridad / Industrial / Estándares avanzados). Los 105 botones de tipo remapeados; rejilla de tipos del footer reagrupada para coincidir.
- Empuje de autoridad (N3): nuevo hub /standards/ con ocho páginas de referencia completas, GS1 Digital Link (Sunrise 2027, validador de dígito de comprobación GTIN en vivo), TOTP & HOTP (RFC 6238 / 4226, validador de entropía Base32 en vivo, compatibilidad con autenticadores), Swiss QR-bill (SIX IG v2.3, validador IBAN CH/LI en vivo con detección de QR-IBAN), licencia de conducir AAMVA (CDS v10, tabla de códigos de elementos, tabla IIN, marco de uso lícito), activación eSIM (LPA) (GSMA SGP.22, compatibilidad iOS 17.4+ / Android 13+), QR de comerciante EMVCo (estructura MPM / CPM, derivados regionales PIX/UPI/PromptPay/SGQR/DuitNow, tabla MCC), Micro QR & rMQR (ISO/IEC 18004 Annex M + ISO/IEC 23941, tablas de capacidad, compatibilidad de escáner especialista) y e-factura ZATCA (FATOORA saudí, etiquetas TLV 01–09, Fase 1 vs Fase 2). Cada página: enlace de especificación + vectores de prueba canónicos + validador en vivo donde aplica + escollos + compatibilidad de escáner + próxima revisión fechada. Primer paso hacia la meta de autoridad de grado enciclopedia.
- Andamiaje de corpus de prueba público (N2): nueva página /proof/corpus/ que documenta la metodología que cualquiera puede usar para auditar las afirmaciones de compatibilidad de escáner, descargar las fixtures, regenerar QRs, escanear con tu propia flota, reportar discrepancias. Tabla curada de 18 filas de resultado-de-escaneo-esperado en iOS Camera, Android Camera y escáneres profesionales. Enlaza /test-vectors/ (el JSON para desarrolladores) y /standards/ como capa de autoridad superior.
- Elementos anteriores del Reviewer #6 lanzados este día en commits previos: cuadrícula de mosaicos jobs-first (N14), frase de marca "La herramienta QR más confiable de internet" (N17), paleta de comandos (N19.2), presets expertos (N19.5), inspector de payload (N19.10), barrido del formato canónico de <title> (N20).
- Pendiente de traducción: la copia de N14 y N17 está en 25 idiomas; todo lo demás del cierre del Reviewer #6 de hoy (N19.3 / N19.4 / N19.7 / N19.8 / N19.9 / N19.11 / N5 / N6 / N7 / N15 / N16 / Pro SSO/SCIM) está solo en inglés por ahora y cae a inglés en otras localizaciones hasta la próxima pasada de traducción.
2026-04-17, Keep-Alive en vivo, páginas de roadmap + soporte de Pro, correcciones de auditoría de webhook
- Tier Keep-Alive en vivo en Pro: 4 $/mes, 36 $/año, o 240 $ por Década (prepago de 10 años, 2 $/mes efectivos). Preserva los códigos existentes con un cooldown de 30 días para editar el destino; sin códigos nuevos, sin asientos, sin API. Migración 007, tres productos de Stripe, ruta de webhook para el pago único de Década, puertas de plan en panel/códigos/edición. Revertidos los banners "Llega Q3 2026" en /compare/ y /no-lock-in/.
- Nueva página en pro.qr.abundera.ai/roadmap/: lo que está lanzado, compromisos de Q3/Q4 con criterios de cancelación, lista explícita de cosas que no estamos construyendo.
- Nueva página en pro.qr.abundera.ai/support/: objetivos de tiempo de respuesta por tier, dirección de divulgación de seguridad, alcance.
- Correcciones de webhook de Stripe: carrera de idempotencia (podía tragarse un pago reintentado), dedup vía SELECT antes de manejar, INSERT al éxito. El manejador de pago Década lanza error en price_id ausente/desconocido o tier que no coincide en lugar de descartar en silencio.
DEFAULT_SEAT_LIMITindef en aceptación de invitación de equipo. Tolerancia de firma 60s → 300s.incomplete_expiredmapea atrialing(eraexpired). - Docs:
ABUNDERA_JWT_AUDIENCESdocumentada como requerida; esquemaPLAN_PRICE_MAPendocs/INTEGRATIONS.md; eliminadas las referencias no usadas aABUNDERA_SERVICE_SECRET. - Tests: 70 pasando. Añadidos 8 para predicados Keep-Alive y el cooldown de 30 días.
2026-04-16, Lanzamiento de Pro, retrabajo de la escalera de precios, seguimientos de revisión externa
- Portal Pro en vivo en pro.qr.abundera.ai.
- Escalera de precios (mensual / facturado anual por mes): Solo 12$/9$, Business 39$/29$, Team 129$/99$, Agency 449$/349$, Enterprise 1.800$/1.500$. Anual es la selección por defecto en la cuadrícula de precios.
- Topes de escaneo mensuales explícitos (50K / 250K / 1M / 4M / 25M) reemplazan a "ilimitado". Exceder el tope no rompe las redirecciones; medimos el exceso a la tarifa de lista del propio tier (0,06$–0,18$ por 1K escaneos).
- Cada tier tiene un conteo explícito de códigos (500 / 2.500 / 15K / 75K / 500K), sin letras pequeñas de "ilimitado*".
- 13 páginas de destino de pago añadidas: Apple Wallet, Google Wallet, EPC Girocode, BLIK, Interac, MB WAY, GCash, Maya, Kakao Pay, Naver Pay, LINE Pay, iDEAL, Boleto. Conteo de tipos 91 → 104; sitemap ahora con 3.224 URLs.
- Preflight de escaneo expandido de 4 condiciones genéricas a 8 escenarios específicos de trabajo (pegatina de menú, póster de ventana, lanyard, etiqueta de estante, etiqueta de almacén, señalización exterior, empaquetado, tarjeta de visita). Grado C/D/F muestra un modal previo a la descarga.
- Matriz de precios de /compare/ dividida en seis grupos de capacidad emparejada. Entradas de competidores añadidas para Bitly, Flowcode, Uniqode, QR Code Chimp, QRTIGER, cada una fechada y marcada para reverificación mensual. Costo mensual por código mostrado en cada fila.
- Verificación de deriva de conteo en script previo al despliegue: escanea todas las páginas generadas bajo
site/en busca de conteos de tipo codificados. La deriva 91/104 en /compare/ se publicó porque el cheque antiguo solo vigilaba tres páginas. - Encuadre del sitio Pro: "Gratis es para conservar. Pro es para cambiar." llevado a /no-lock-in/, /static-vs-dynamic/, y el CTA Pro de la página de inicio.
- Productos de Stripe creados vía script idempotente
stripe-setup.py(Solo + Team subidos a rev 2 para los nuevos importes).PLAN_PRICE_MAPmantiene los antiguos y nuevos price IDs para que cualquier suscriptor existente quede mapeado. - Otros: tira de detalle de compatibilidad sobre los campos del generador, tira de confianza de la página de inicio, sello de frescura en cada página, página esqueleto /accessibility/, packs de presets de industria /for/ (8), pista de descubribilidad de Wizard/QR Lab, auditoría de conteo (120 → 336 iconos, 24 → 50 presets BCD), depuración de lenguaje del repo (el repo es privado; "Código de generador open source" → "Código del lado del cliente auditable en tu navegador"), imagen OG regenerada con un evento de iCalendar QR válido.
2026-04-15, Simple/Avanzado, /compare/, Save-to-Pro
- Toggle Simple / Avanzado en la página de inicio. Simple cura 8 tipos cotidianos (URL, WiFi, vCard, Email, Teléfono, SMS, Evento, Texto); Avanzado restaura los 104 completos. El modo es persistente en
localStorage; las páginas de destino para tipos no-Simple cambian automáticamente. - Matriz competidora /compare/ lanzada: característica por característica contra QR Code Generator, QRCode Monkey y Uniqode. Fechada, re-revisada mensualmente.
- Botón "Guardar en Pro" en el sitio gratuito: un clic promueve un código generado al portal Pro. El estado va y vuelve vía hash de URL; los usuarios sin firmar aterrizan de regreso en el generador con su trabajo preservado.
- Flechas de scroll en pestañas de categoría en escritorio; smooth-scroll en móvil.
- La restauración de historial cambia automáticamente a Avanzado cuando el tipo de un código guardado no está disponible en modo Simple.
- Copia del CTA Pro suavizada; historia anti-rehén (QR estático de respaldo, gracia de 90 días, portabilidad de dominio) traída al frente.
2026-04-14, Portal Pro online, 3 nuevos tipos, corrección de autocompletar
- Portal Pro (
pro.qr.abundera.ai) online de extremo a extremo. - Tres nuevos tipos del sitio gratuito: M-PESA Kenia (EMVCo MPM), Reunión de video (atajos Zoom/Meet/Teams/Webex), Cupón/Código promocional.
- El tipo GS1 Digital Link ahora soporta los 12 Identificadores de Aplicación obligatorios para Sunrise-2027.
- Nuevas páginas SEO:
/static-vs-dynamic/,/no-lock-in/(contractual: gracia de 90 días, exportación de un clic, eliminación GDPR de 30 días, QR estático de respaldo). - Corrección de autocompletar (sexto intento): los bloques de campos por tipo son elementos
<form>reales con sus propios tokensautocomplete; los formularios inactivos recibendisplay: nonepara que Chrome no marque las entradas fuera de pantalla. La agrupación vertical vCard/Dirección/Contacto/WiFi-Enterprise ahora funciona en Chrome, Safari, Firefox. Arnés Playwright en 0 violaciones. - Embudo de reseña: desplegable de plataforma (Google/Yelp/TripAdvisor) con copia de placeholder por plataforma.
- Wizard: 8 referencias rotas a slug de resultado corregidas.
- Header/footer unificados vía partials compartidos; las páginas de herramientas (Wizard, QR Lab, Test Vectors) movidas al mismo sistema de plantillas.
- Verificación previa al despliegue: validación de enlaces internos + guardia de
showToast()en inglés crudo. - Correcciones BCD: estabilidad del layout vertical, regresión de UI en página de destino, etiquetas de enlace RFC, artefacto de marca de agua.
- El HTML generado de página de destino ya no se rastrea por git (sigue desplegándose; git rastrea la plantilla y el generador).
2026-04-13, Paridad en 25 idiomas, rediseño de header/footer, arnés Playwright
- 6.660 claves de fallback en inglés traducidas a 25 archivos de idioma. Las páginas de destino no inglesas ya no caen a cadenas en inglés. Pipeline de traducción refactorizada en validador/planificador.
- i18n extendida a las páginas de herramientas: Wizard, QR Lab y Test Vectors ahora tienen 25 variantes de idioma, con etiquetas hreflang y entradas de sitemap.
- Arnés Playwright de ida y vuelta: genera un código para cada tipo en cada idioma, decodifica el canvas, verifica los campos. 0 violaciones.
- Rediseño de header/footer: header delgado, footer de 3 columnas que coincide con el patrón de sign.abundera.ai. El cajón hamburguesa móvil ahora muestra los elementos de nav cuando se abre (antes roto).
- Clic en vista previa QR → lightbox de zoom. La etiqueta muestra nombre de tipo + primera entrada (antes mostraba payload crudo).
- Primer intento de corrección de autocompletar (aterrizó correctamente 2026-04-14).
- La búsqueda de tipo aflora tipos avanzados; cierra al escoger; pestañas de categoría vacías ocultas en modo Popular; la restauración de historial cambia tipo en línea en lugar de redirigir.
2026-04-12, Paridad en 26 idiomas, 13 nuevos tipos de carga, 3 códigos de barras 2D no QR
- Paridad completa en 26 idiomas: cada clave en inglés existe en cada archivo de idioma (1.302 claves × 25 idiomas). 5.533 entradas añadidas en 4 pasadas (nombres propios, etiquetas cortas, etiquetas de campos de formulario, toasts, pistas). Las 30 pistas de pagos de marca quedan en inglés por diseño, las URLs y nombres de marca son autoritativos en inglés.
- Deduplicación: 113 bloques de claves duplicadas obsoletas eliminados en 19 archivos de idioma (deriva desde rebases anteriores).
- Corrección de header de páginas info: blog/about/privacy/changelog usaban clases
.brand/.header-inner/.brand-textsin CSS adjunto. Cambiadas al mismo marcado.logode la app principal. - 4 tipos URI basados en estándares: HOTP (RFC 4226), eSIM (GSMA SGP.22 LPA), SIP/SIPS (RFC 3261), MMS/MMSTO.
- WPA2/WPA3-Enterprise WiFi: extiende el formato
WIFI:con método EAP, autenticación de Phase-2, identidad, identidad anónima. - 6 tipos de pago regionales: Alipay, WeChat Pay, Swish (SE), Vipps (NO), Mercado Pago (LatAm), Payconiq (Benelux).
- 3 códigos de barras 2D no QR: Data Matrix (ISO 16022), Aztec (ISO 24778), PDF417 (ISO 15438). bwip-js (~1 MB) cargado de forma diferida solo cuando se selecciona uno de esos tipos.
- Sección de presentación en 26 idiomas añadida a la página de inicio con enlaces en escritura nativa.
- Script de auditoría previa al despliegue: verificación de sincronización de
BATCH_VALID_TYPES+ guardia deshowToast()en inglés crudo. - Footer, páginas de destino y claves i18n añadidos para los 13 nuevos tipos (fuente en inglés).
2026-04-11, Obtención de URL de foto BCD, vista previa fija, presets expandibles
- BCD: el campo de URL de foto ahora obtiene e incrusta imágenes remotas como URLs de datos para que el canvas de exportación no quede contaminado por cargas de origen cruzado (la exportación PDF/PNG ahora funciona en hosts sin CORS).
- Diseño de escritorio BCD: el panel de vista previa ahora es
position: sticky, así cuando un usuario expande cada sección los controles se desplazan libremente sin perder visibilidad de la vista previa en vivo. (Antes, expandir Contenido + Diseño + Opciones empujaba Show-Fields fuera de pantalla.) - La cuadrícula de presets BCD ahora es expandible, muestra 12 diseños inicialmente con un toggle "Mostrar todos los diseños", espejando la UX del selector de iconos.
- Inputs de eslogan + leyenda QR rediseñados: etiqueta apilada + input de ancho completo (antes carro lateral apretado de 150px).
- La insignia de escaneabilidad subió de
bottom: -24pxa-18pxpara dejar de cubrir el botón de copia. - Las instrucciones CSV por lotes ahora mencionan Google Sheets, Excel, Numbers explícitamente.
2026-04-08, Biblioteca de iconos por sector vertical
- 24 nuevos iconos de logo central (96 → 120) orientados a sectores de salud, alimentos y bebidas, tecnología, finanzas.
- 10 nuevos presets de diseño BCD (40 → 50): Concrete, Honey, Indigo, Luxe, Midnight II, Ocean II, Slate, Verdant, Wine, Candy.
- Bug en estrategia de cache-buster: los parámetros
?v=enpage-init.js+lang-redirect.jsfaltaban en páginas de destino, causando cargas de módulos obsoletos tras los despliegues. Corregido.
2026-04-04, Fondos degradados BCD + reverso de tarjeta + 12 nuevos presets
- BCD: 12 nuevos presets (Dark Mode, Pastel, Ocean, Cherry, Slate, Emerald, Amber, Mono, Rose, Midnight, Sand, Carbon). 36 presets en total.
- Fondos degradados controlados por el usuario con segundo selector de color.
- Renderizado del reverso de tarjeta con empresa + eslogan + texto CTA.
- Fila de iconos sociales (LinkedIn / X / Instagram).
- Bloque de dirección renderizado desde campos vCard.
- Miniaturas visuales de presets, cada botón de preset ahora renderiza un mini canvas en lugar de un placeholder.
2026-03-29, Renovación de BCD + exportación a 600 DPI
- Secciones de acordeón plegables en Business Card Designer, vista previa móvil fija, pie de exportación fijo.
- Entradas de color hexadecimal con sincronización bidireccional del selector de color, muestras de paleta de colores.
- 4 formas de foto (círculo, cuadrado, redondeado, hexágono).
- Resolución de exportación aumentada a 600 DPI para una impresión nítida.
- Menú kebab: Exportar plantilla, Importar plantilla, Sorpréndeme, Compartir tarjeta, Imprimir hoja (10-up US Letter + A4).
- Recorte de foto forzado a cuadrado. Guardia de datos mínimos antes de abrir el diseñador.
- Presets BCD aumentados: 8 nuevos visualmente distintos (Neon, Art Deco, Sunset, Forest, Brutalist, Kraft, Nordic, Retro 80s). 24 presets en total.
2026-03-22, 20 nuevos tipos QR + Link-in-Bio + comparaciones con competidores
- 20 nuevos tipos QR (35 → 55): YouTube, Apple Music, Google Review, Yelp Review, TripAdvisor, Venmo, Cash App, Support/Tip Jar (Ko-fi/Patreon/BMAC/Liberapay), TWINT, Bizum, PayNow (SG), PayID (AU), ZATCA (SA), BIP-21 Bitcoin + Lightning, webcal://, JPQR (JP), HKFPS (HK), DuitNow (MY), MoMo (VN), Link-in-Bio.
- Link-in-Bio renderiza toda la página bio desde el hash URL del QR, sin backend, sin cuenta, sin seguimiento.
- Widget iframe /embed/ (postMessage API para integración con el sitio padre).
- Páginas de comparación con competidores /vs/ (variantes en 26 idiomas).
- Paquete npm @abundera/qr + CLI con 25 codificadores de tipo.
2026-03-15, 96 iconos de logo central + 5 nuevos idiomas
- 96 iconos de logo central (12 → 96): cripto, comunicación, medios, utilidad, comercio, transporte, naturaleza, alimentos, personas, eventos, 12 caritas sonrientes, 18 glifos de redes sociales (X, Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Snapchat, Discord, Telegram, GitHub, Threads, Bluesky, Mastodon, Twitch, Signal, Medium). Expandible vía toggle <details>.
- 5 nuevos idiomas (21 → 26): sueco, checo, danés, noruego, finlandés. 1.106 claves cada uno con traducciones nativas.
- Exportación EPS (PostScript de Nivel 2 con JPEG embebido, codificado en ASCII85) para flujos de imprenta (Illustrator, InDesign, CorelDRAW).
- Exportación GIF animado (gif.js, arcoíris de 8 fotogramas).
- Exportación SVG BCD, exportación JPG BCD.
2026-03-08, Auditoría de plataforma + revisión de accesibilidad
Sprint de corrección de errores: 3 problemas CRÍTICOS + 7 ALTOS + 10 MEDIOS corregidos.
- Violación de CSP de scripts en línea en las 55 páginas de destino, movido a atributo de cuerpo
data-qr-preselect. - Bug de caché obsoleta del service worker, claves con query stripped → URL completa + stale-while-revalidate.
- Desincronización de tipo de formulario al hacer clic en píldora BCD en una página de destino que no es vCard.
- Visibilidad de imagen de fondo (deslizador de opacidad, módulos al 90% alpha, enrutamiento de modal de recorte).
- Desbordamiento móvil del modal de recorte.
- El zoom con rueda secuestraba el desplazamiento del ratón (eliminado por completo).
- Fuga de IP de avatar mitigada (referrerpolicy + cabecera no-referrer).
- Corrección de red abierta WiFi por lotes, paridad de campos MeCard por lotes, validación base32 TOTP.
- Objetivos táctiles WCAG 2.5.8 (mínimo 44×44 en puntero grueso).
- Barrido aria-hidden en 87 SVGs decorativos.
- Respeto a prefers-reduced-motion.
- aria-live en toast, anillo focus-visible, navegación por teclado en recorte, teclas Home/End en menú de desbordamiento.
- Optimización de preload de fuentes.
2026-03-01, 15 tipos basados en estándares + validador de escaneabilidad
- 15 nuevos tipos QR: TOTP/2FA, Swiss QR-bill (con cruz suiza roja obligatoria superpuesta), PIX (Brasil), PromptPay (Tailandia), EMVCo merchant genérico, Lightning BOLT11, clave pública SSH, clave pública OpenPGP, configuración WireGuard, GS1 Digital Link, Spotify, Fediverse (Mastodon/Bluesky/Nostr/Matrix/Threads), Geo URI, Magnet, iCalendar completo.
- Validador de escaneabilidad, ejecuta jsQR sobre el canvas renderizado y advierte sobre fallos de decodificación.
- URL imprimible de respaldo, el toggle añade la URL de destino como texto plano debajo del QR.
- jsQR cargado de forma diferida (ahorra 262 KB de payload eager).
2026-02-22, Editor de gradiente de múltiples paradas + colores por ojo
- Editor de gradiente de múltiples paradas (hasta 5 colores).
- Color interior/exterior independiente por ojo.
- Modo QR con imagen de fondo (deslizador de opacidad, EC=H forzado automáticamente).
- Zoom con pellizco en el canvas de vista previa.
- Web Share API para códigos QR y tarjetas de visita.
- Formato de exportación WebP.
- Deshacer/rehacer (Ctrl/Cmd-Z, búfer de 50 pasos).
- Botón de plantilla aleatoria («Sorpréndeme»).
2026-02-15, Páginas de privacidad y seguridad + endurecimiento i18n
- 4 nuevas páginas de credibilidad: /privacy/, /terms/, /security/, /about/, en los 21 idiomas.
- Se publicó /.well-known/security.txt.
- 29 cadenas en inglés codificadas de forma fija reemplazadas por llamadas
qrT(); ~100 nuevas claves i18n traducidas a los 21 idiomas. - Scripts en línea externalizados, CSP endurecido (unsafe-inline eliminado).
2026-02-08, Accesibilidad en modales + gestión del foco
- Trampa de foco en los 3 modales (recorte, BCD, diálogos personalizados).
- Mejoras en la navegación por teclado en el menú de desbordamiento BCD, el selector de idioma y el selector de tipo.
- Correcciones de errores críticos: bordes de marcos SVG renderizados con un píxel de error, vulnerabilidad XSS en la vista previa de zoom por lotes, error
btoa()Latin1 al hacer clic en el logo de preset.
2026-02-01, Lanzamiento inicial
- Se lanzó Abundera QR con 20 tipos QR, 40 plantillas, generación por lotes CSV (500 códigos), Business Card Designer (300 DPI), 20 idiomas, 420 páginas de destino estáticas.
- Postura de privacidad primero: 100% del lado del cliente, sin cuentas, sin seguimiento, sin códigos de redirección dinámica.