Saltearse al contenido

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/codes sigue 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.ts evita regresiones en confirm() 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, wu3qaa abre https://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.ts protege el href del enlace, el comportamiento de nueva pestaña, noopener noreferrer y 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 utiliza qr3.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/pricing no sean bloqueadas por el Redirect-Worker.
  • Tests: packages/redirect/tests/unit/redirect.test.ts verifica 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 los dpp_scans del Workspace de la clave API (active_dpps, scans_by_day, top_dpps con 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ón 0011) — separada de scans (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/:dppId con 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 contiene eu_compliance + preview.changed_fields.
  • Dashboard: Tarjeta de simulador en el detalle del DPP (/dashboard/dpp/:dppId) — etiquetas (chips) para DE/AT/FR/IT/ES/NL + personalizadas, menú desplegable de estado, Preview EU impact / Save changes / Reset. No bloqueante a través de Remix useFetcher.
  • 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/validate ahora también devuelve eu_compliance — el mismo validador que GET /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-compliance con compliant / 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 textile con cadena obligatoria AGEC (tejeduría/punto → teñido/estampado → confección), por fibra origin_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/import acepta CSV y XLSX (compatible con Workers a través de SheetJS xlsx, ~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_csv de la respuesta 201; GET /v1/dpp/import/templates/:category?format=csv|xlsx proporciona plantillas listas para usar para baterías y textiles.
  • Dashboard: Carga mediante arrastrar y soltar (drag-and-drop) en /dashboard/dpp/import con 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/validate ignoran el nuevo campo eu_compliance sin necesidad de realizar cambios.
  • Los flujos de battery existentes permanecen sin cambios.
  • market_countries es opcional y tiene como valor predeterminado [].

Consulte Versionado de API para conocer la política de cambios disruptivos.