Changelog
Changelog
Destacados seleccionados de los últimos lanzamientos. Para ver las versiones completas de la API y la política de cambios disruptivos, consulte el Versionado de API y política LTS.
Cambios detallados en endpoints individuales: Especificación OpenAPI y referencia interactiva de la API.
2026-04 · Analíticas del Dashboard por código QR
- Dashboard: El botón de analíticas en la lista de códigos QR ahora abre la página de estadísticas del código QR correspondiente en
/dashboard/codes/{id}. - Routing: El alias
/dashboard/codessigue redirigiendo a/dashboard, pero ya no intercepta rutas de detalle como/dashboard/codes/{id}. - API: La página de detalles carga el código QR directamente mediante
GET /v1/codes/:id; de este modo, ya no depende de los límites de paginación de la lista. - Tests: Las pruebas de regresión cubren la redirección del alias y la carga directa del código.
2026-04 · Diálogo de eliminación en el Dashboard para códigos QR
- Dashboard: El icono de papelera en la lista de códigos QR ahora abre un diálogo de React propio en lugar de una ventana emergente nativa del navegador.
- Feedback: Después de la eliminación, aparece una notificación toast de éxito o error.
- Tests:
packages/dashboard/tests/dashboard.test.tsevita regresiones enconfirm()en el flujo de eliminación de códigos QR.
2026-04 · Prueba de enlace corto en el Dashboard para códigos QR dinámicos
- Dashboard: Los shortcodes en la lista de códigos QR ahora se pueden hacer clic directamente como enlaces de redirección externos. El icono de enlace externo junto a, por ejemplo,
wu3qaaabrehttps://qr3.app/{shortCode}en una nueva pestaña. - i18n: Se han añadido textos de información sobre herramientas (tooltips) para alemán e inglés.
- Tests:
packages/dashboard/tests/dashboard.test.tsprotege el href del enlace, el comportamiento de nueva pestaña,noopener noreferrery el icono contra regresiones.
2026-04 · Ruta del Redirect-Worker para códigos QR dinámicos
- Fix: Los códigos QR dinámicos en
https://qr3.app/{shortCode}vuelven a ser procesados por el Redirect-Worker. La ruta de producción ahora utilizaqr3.app/*porque las rutas de Cloudflare Workers no admiten parámetros de ruta:code. - Robustez: Las rutas que no coinciden se pasan al origen de la landing page para que las páginas normales como
/de/pricingno sean bloqueadas por el Redirect-Worker. - Tests:
packages/redirect/tests/unit/redirect.test.tsverifica la ruta comodín (wildcard), el procesamiento de shortcodes y el paso directo al origen (pass-through).
2026-04 · Resumen de escaneos DPP del Workspace (Q3.4.2)
- Neu:
GET /v1/workspace/stats/dpp?days=30— agrega todos losdpp_scansdel Workspace de la clave API (active_dpps,scans_by_day,top_dppscon nombre de producto/categoría). - Dashboard: Tarjeta en la página de inicio (
/dashboard) con gráfico de barras de 30 días + listas principales — en paralelo a las tarjetas de códigos QR. - Public: Enlace corto de marketing
GET /dpp/dpp_<id>(un segmento) para demostraciones en vivo, en paralelo a/dpp/{gtin}/{serial}.
2026-04 · Analíticas de escaneos DPP (Q3.4.1)
- Neu:
GET /v1/dpp/:id/stats?days=30— escaneos agregados del resolver público GS1 por DPP. Campos:total_scans,period_scans,scans_by_day,top_countries,top_devices,top_representations. - Neu: Tabla
dpp_scans(migración0011) — separada descans(Redirect-Worker). Las direcciones IP se cifran con un hash utilizando una sal (salt) rotativa diaria, las IP en bruto nunca llegan a D1. - Dashboard: Tarjeta de minigráfico (SVG, sin biblioteca de gráficos) en
/dashboard/dpp/:dppIdcon barras de 30 días + desgloses de los 3 principales. Estado vacío (empty state) tan pronto como un DPP esté activo pero aún no haya tenido escaneos.
2026-04 · Simulador de conformidad de la UE en vivo (Q3.3.7)
- Neu:
POST /v1/dpp/:id/validate-update— simula actualizaciones parciales sin estado (stateless) (estado, lista de mercados, …) sin persistencia. La respuesta contieneeu_compliance+preview.changed_fields. - Dashboard: Tarjeta de simulador en el detalle del DPP (
/dashboard/dpp/:dppId) — etiquetas (chips) paraDE/AT/FR/IT/ES/NL+ personalizadas, menú desplegable de estado, Preview EU impact / Save changes / Reset. No bloqueante a través de RemixuseFetcher. - Robustez: Funciones auxiliares del simulador externalizadas (
readUpdatePatchFromForm,marketCountriesKey) + 18 nuevas pruebas unitarias; corrección de errores: la entrada única no ISO ya no borra la lista de mercados.
2026-04 · Vista previa de conformidad de la UE en vivo en el formulario de creación (Q3.3.6)
- Geändert:
POST /v1/dpp/validateahora también devuelveeu_compliance— el mismo validador queGET /v1/dpp/:id/eu-compliance, sin estado (stateless) antes de guardar. - Dashboard: Vista previa debajo del panel de validación existente + nuevo banner de protección de guardado antes de los botones de envío si hay errores/advertencias pendientes (pluralización i18n DE/EN).
2026-04 · Validador de la UE + UI textil (Q3.3.4 + Q3.3.5)
- Neu: Validador de conformidad de la UE con 5 reglas textiles (
TEXTILE_AGEC_REQUIRED,TEXTILE_MICROPLASTICS_CONSISTENCY,TEXTILE_SVHC_THRESHOLD,TEXTILE_GREENWASHING,TEXTILE_ESPR_READY). - Neu:
GET /v1/dpp/:id/eu-complianceconcompliant/espr_ready/issues[]/summary. - Dashboard: Sección de conformidad de la UE en el detalle del DPP (mosaicos de resumen, tarjetas de problemas agrupadas, insignia ESPR-Ready en el encabezado).
2026-04 · Esquema DPP textil (Q3.3.1–Q3.3.3)
- Neu: Categoría
textilecon cadena obligatoria AGEC (tejeduría/punto → teñido/estampado → confección), por fibraorigin_country+recycled_pct,svhc_substances[], opción de exclusión voluntaria (opt-in) de ESPR (PEF, vida útil, reciclabilidad). - Neu: Campo básico
market_countries: string[](ISO 3166-1 alpha-2) en todas las categorías DPP — controla las reglas AGEC específicas de Francia y la nota obligatoria para el consumidor francés. - Neu: Plantilla HTML para el consumidor con cuadro de advertencia de microplásticos AGEC, cadena de origen de 3 niveles (píldoras con banderas), lista SVHC, sección de durabilidad y reciclabilidad.
- Migración:
0010_dpp_market_countries(D1).
2026-04 · Importación masiva de DPP (Q3.2.1–Q3.2.5)
- Neu:
POST /v1/dpp/importacepta CSV y XLSX (compatible con Workers a través de SheetJSxlsx, ~283 KB de paquete comprimido con gzip). - Skaliert: límite basado en el plan (Free 100 → Enterprise 10k) +
db.batch()fragmentado (chunked) de 100 en 100 + límite de cuerpo de 5 MB. - Neu: Informe de errores en formato CSV en el campo
errors_csvde la respuesta 201;GET /v1/dpp/import/templates/:category?format=csv|xlsxproporciona plantillas listas para usar para baterías y textiles. - Dashboard: Carga mediante arrastrar y soltar (drag-and-drop) en
/dashboard/dpp/importcon proxy de plantilla y descarga de CSV en línea.
Sin cambios disruptivos — Extensiones LTS
Todos los cambios mencionados anteriormente son aditivos:
- Los clientes existentes de
POST /v1/dpp/validateignoran el nuevo campoeu_compliancesin necesidad de realizar cambios. - Los flujos de
batteryexistentes permanecen sin cambios. market_countrieses opcional y tiene como valor predeterminado[].
Consulte Versionado de API para conocer la política de cambios disruptivos.