Changelog
Changelog
Kuratierte Highlights der letzten Releases. Für vollständige API-Versionen und Breaking-Change-Policy siehe die API-Versionierung & LTS-Policy.
Detaillierte Änderungen an einzelnen Endpoints: OpenAPI-Spezifikation und interaktive API-Referenz.
2026-04 · Dashboard-Analytics pro QR-Code
- Dashboard: Der Analytics-Button in der QR-Code-Liste öffnet jetzt die Statistikseite des jeweiligen QR-Codes unter
/dashboard/codes/{id}. - Routing: Der Alias
/dashboard/codesleitet weiterhin auf/dashboardum, fängt aber keine Detailrouten wie/dashboard/codes/{id}mehr ab. - API: Die Detailseite lädt den QR-Code direkt per
GET /v1/codes/:id; dadurch ist sie nicht mehr von Listen-Pagination-Limits abhängig. - Tests: Regressionstests decken den Alias-Redirect und den direkten Code-Load ab.
2026-04 · Dashboard-Löschdialog für QR-Codes
- Dashboard: Der Mistkübel in der QR-Code-Liste öffnet jetzt einen eigenen React-Dialog statt eines nativen Browser-Popups.
- Feedback: Nach dem Löschen erscheint eine Toast-Rückmeldung für Erfolg oder Fehler.
- Tests:
packages/dashboard/tests/dashboard.test.tsverhindert Regressionen aufconfirm()im QR-Code-Löschflow.
2026-04 · Dashboard-Kurzlink-Test für dynamische QR-Codes
- Dashboard: Shortcodes in der QR-Code-Liste sind jetzt direkt als externe Redirect-Links klickbar. Das External-Link-Icon neben z. B.
wu3qaaöffnethttps://qr3.app/{shortCode}in einem neuen Tab. - i18n: Tooltip-Texte für Deutsch und Englisch ergänzt.
- Tests:
packages/dashboard/tests/dashboard.test.tsschützt Link-Href, neues Tab-Verhalten,noopener noreferrerund Icon gegen Regressionen.
2026-04 · Redirect-Worker-Route für dynamische QR-Codes
- Fix: Dynamische QR-Codes unter
https://qr3.app/{shortCode}werden wieder vom Redirect-Worker verarbeitet. Die Production-Route nutzt jetztqr3.app/*, weil Cloudflare Worker-Routen keine:code-Pfadparameter unterstützen. - Härtung: Nicht passende Pfade werden an die Landing-Origin durchgereicht, damit normale Seiten wie
/de/pricingnicht vom Redirect-Worker blockiert werden. - Tests:
packages/redirect/tests/unit/redirect.test.tsprüft die Wildcard-Route, Shortcode-Verarbeitung und Origin-Pass-through.
2026-04 · Workspace-DPP-Scan-Übersicht (Q3.4.2)
- Neu:
GET /v1/workspace/stats/dpp?days=30— aggregiert alledpp_scansdes API-Key-Workspaces (active_dpps,scans_by_day,top_dppsmit Produktname/Kategorie). - Dashboard: Karte auf der Startseite (
/dashboard) mit 30-Tage-Balkendiagramm + Top-Listen — parallel zu den QR-Code-Karten. - Public: Marketing-Shortlink
GET /dpp/dpp_<id>(ein Segment) für Live-Demos, parallel zu/dpp/{gtin}/{serial}.
2026-04 · DPP-Scan-Analytics (Q3.4.1)
- Neu:
GET /v1/dpp/:id/stats?days=30— aggregierte Scans des öffentlichen GS1-Resolvers pro DPP. Felder:total_scans,period_scans,scans_by_day,top_countries,top_devices,top_representations. - Neu: Tabelle
dpp_scans(Migration0011) — getrennt vonscans(Redirect-Worker). IP-Adressen werden mit täglich rotierendem Salt gehasht, rohe IPs erreichen nie D1. - Dashboard: Mini-Chart-Karte (SVG, keine Chart-Library) auf
/dashboard/dpp/:dppIdmit 30-Tage-Balken + Top-3-Breakdowns. Empty-State sobald ein DPP live ist aber noch keine Scans hatte.
2026-04 · Live-EU-Compliance-Simulator (Q3.3.7)
- Neu:
POST /v1/dpp/:id/validate-update— simuliert Teil-Updates stateless (Status, Markt-Liste, …) ohne Persistenz. Antwort enthälteu_compliance+preview.changed_fields. - Dashboard: Simulator-Karte im DPP-Detail (
/dashboard/dpp/:dppId) — Chips fürDE/AT/FR/IT/ES/NL+ Custom, Status-Dropdown, Preview EU impact / Save changes / Reset. Non-blocking via RemixuseFetcher. - Härtung: Ausgelagerte Simulator-Helper (
readUpdatePatchFromForm,marketCountriesKey) + 18 neue Unit-Tests; Bugfix: Lone-Non-ISO-Input löscht die Marktliste nicht mehr.
2026-04 · Live-EU-Compliance-Preview im Create-Formular (Q3.3.6)
- Geändert:
POST /v1/dpp/validateliefert zusätzlicheu_compliance— derselbe Validator wieGET /v1/dpp/:id/eu-compliance, stateless vor dem Speichern. - Dashboard: Preview unter dem bestehenden Validation-Panel + neuer Save-Guard-Banner vor den Submit-Buttons, wenn Errors/Warnings offen sind (i18n-Pluralisierung DE/EN).
2026-04 · EU-Validator + Textil-UI (Q3.3.4 + Q3.3.5)
- Neu: EU-Compliance-Validator mit 5 Textil-Regeln (
TEXTILE_AGEC_REQUIRED,TEXTILE_MICROPLASTICS_CONSISTENCY,TEXTILE_SVHC_THRESHOLD,TEXTILE_GREENWASHING,TEXTILE_ESPR_READY). - Neu:
GET /v1/dpp/:id/eu-compliancemitcompliant/espr_ready/issues[]/summary. - Dashboard: EU-Compliance-Section im DPP-Detail (Summary-Tiles, gruppierte Issue-Karten, ESPR-Ready-Badge im Header).
2026-04 · Textil-DPP-Schema (Q3.3.1–Q3.3.3)
- Neu: Kategorie
textilemit AGEC-Pflichtchain (Weben/Stricken → Färben/Drucken → Konfektion), pro Faserorigin_country+recycled_pct,svhc_substances[], ESPR-Opt-in (PEF, Lebensdauer, Recyclability). - Neu: Basisfeld
market_countries: string[](ISO 3166-1 alpha-2) auf allen DPP-Kategorien — steuert FR-spezifische AGEC-Regeln und die französische Consumer-Pflichtnotiz. - Neu: Consumer-HTML-Template mit AGEC-Mikroplastik-Warnbox, 3-stufiger Herkunftskette (Flag-Pills), SVHC-Liste, Durability- und Recyclability-Section.
- Migration:
0010_dpp_market_countries(D1).
2026-04 · DPP-Bulk-Import (Q3.2.1–Q3.2.5)
- Neu:
POST /v1/dpp/importakzeptiert CSV und XLSX (Worker-kompatibel via SheetJSxlsx, ~283 KB gzip Bundle). - Skaliert: planbasiertes Limit (Free 100 → Enterprise 10k) + chunked
db.batch()à 100 + 5 MB Body-Limit. - Neu: Fehlerreport als CSV im
errors_csv-Feld der 201-Antwort;GET /v1/dpp/import/templates/:category?format=csv|xlsxliefert fertige Vorlagen für Batterie und Textil. - Dashboard: Drag-and-Drop-Upload unter
/dashboard/dpp/importmit Template-Proxy und Inline-CSV-Download.
Nicht-Breaking — LTS-Erweiterungen
Alle oben genannten Änderungen sind additiv:
- Bestehende
POST /v1/dpp/validate-Clients ignorieren das neueeu_compliance-Feld ohne Änderung. - Bestehende
battery-Flows sind unverändert. market_countriesist optional und defaultet auf[].
Siehe API-Versionierung für die Breaking-Change-Policy.