Hoppa till innehåll

Changelog

Changelog

Kurerade höjdpunkter från de senaste releaserna. För fullständiga API-versioner och breaking change-policy, se API-versionering & LTS-policy.

Detaljerade ändringar för enskilda slutpunkter: OpenAPI-specifikation och interaktiv API-referens.


2026-04 · Dashboard-analys per QR-kod

  • Dashboard: Analysknappen i QR-kodlistan öppnar nu statistikbana för respektive QR-kod under /dashboard/codes/{id}.
  • Routing: Aliaset /dashboard/codes omdirigerar fortfarande till /dashboard, men fångar inte längre upp detaljerade rutter som /dashboard/codes/{id}.
  • API: Detaljsidan läser in QR-koden direkt via GET /v1/codes/:id; därmed är den inte längre beroende av pagineringsgränser för listor.
  • Tester: Regressionsprovning täcker alias-omdirigeringen och direkt inläsning av koder.

2026-04 · Dashboard-borttagningsdialog för QR-koder

  • Dashboard: Papperskorgen i QR-kodlistan öppnar nu en egen React-dialogruta istället för en inbyggd webbläsarpupup.
  • Feedback: Efter borttagning visas en toast-notis för framgång eller fel.
  • Tester: packages/dashboard/tests/dashboard.test.ts förhindrar regressioner på confirm() i QR-kodens borttagningsflöde.

2026-04 · Dashboard-kortlänkstest för dynamiska QR-koder

  • Dashboard: Kortkoder i QR-kodlistan är nu direkt klickbara som externa omdirigeringslänkar. Ikonen för extern länk bredvid t.ex. wu3qaa öppnar https://qr3.app/{shortCode} i en ny flik.
  • i18n: Verktygstips-texter (tooltips) för tyska och engelska har lagts till.
  • Tester: packages/dashboard/tests/dashboard.test.ts skyddar länkens href, beteende för ny flik, noopener noreferrer och ikon mot regressioner.

2026-04 · Redirect-Worker-rutt för dynamiska QR-koder

  • Fix: Dynamiska QR-koder under https://qr3.app/{shortCode} hanteras återigen av Redirect-Workern. Produktionsrutten använder nu qr3.app/* eftersom Cloudflare Worker-rutter inte stöder sökvägsparametern :code.
  • Härdning: Sökvägar som inte matchar skickas vidare till landningssidan (landing origin), så att vanliga sidor som /de/pricing nicht vom Redirect-Worker blockiert werden.
  • Tester: packages/redirect/tests/unit/redirect.test.ts kontrollerar wildcard-rutten, kortkodshantering och vidarebefordran till ursprung (origin pass-through).

2026-04 · Workspace-DPP-skanningsöversikt (Q3.4.2)

  • Nytt: GET /v1/workspace/stats/dpp?days=30 — aggregerar alla dpp_scans för API-nyckelns workspace (active_dpps, scans_by_day, top_dpps med produktnamn/kategori).
  • Dashboard: Kort på startsidan (/dashboard) med 30-dagars stapeldiagram + topplistor — parallellt med QR-kodkorten.
  • Offentlig: Marknadsföringskortlänk GET /dpp/dpp_<id> (ett segment) för livedemos, parallellt med /dpp/{gtin}/{serial}.

2026-04 · DPP-skanningsanalys (Q3.4.1)

  • Nytt: GET /v1/dpp/:id/stats?days=30 — aggregerade skanningar från den offentliga GS1-resolveraren per DPP. Fält: total_scans, period_scans, scans_by_day, top_countries, top_devices, top_representations.
  • Nytt: Tabellen dpp_scans (migrering 0011) — separerad från scans (Redirect-Worker). IP-adresser hashas med ett dagligen roterande salt, råa IP-adresser når aldrig D1.
  • Dashboard: Minidiagramkort (SVG, inget diagrambibliotek) på /dashboard/dpp/:dppId med 30-dagarsstaplar + topp-3-uppdelningar. Empty state så snart en DPP är live men ännu inte har haft några skanningar.

2026-04 · Live EU-efterlevnadssimulator (Q3.3.7)

  • Nytt: POST /v1/dpp/:id/validate-update — simulerar delvisa uppdateringar tillståndslöst (stateless) (status, marknadslista, …) utan persistens. Svaret innehåller eu_compliance + preview.changed_fields.
  • Dashboard: Simulatorkort i DPP-detaljvyn (/dashboard/dpp/:dppId) — taggar (chips) för DE/AT/FR/IT/ES/NL + anpassade, status-rullgardinsmeny, Preview EU impact / Save changes / Reset. Icke-blockerande via Remix useFetcher.
  • Härdning: Utbrutna simulator-hjälpfunktioner (readUpdatePatchFromForm, marketCountriesKey) + 18 nya enhetstester; buggfix: Enstaka icke-ISO-inmatning raderar inte längre marknadslistan.

2026-04 · Live EU-efterlevnadsförhandsvisning i skapa-formuläret (Q3.3.6)

  • Ändrat: POST /v1/dpp/validate returnerar dessutom eu_compliance — samma validerare wie GET /v1/dpp/:id/eu-compliance, tillståndslöst (stateless) före sparande.
  • Dashboard: Förhandsvisning under den befintliga valideringspanelen + ny Save-Guard-banner före skicka-knapparna (submit) om det finns öppna fel/varningar (i18n-pluralisering DE/EN).

2026-04 · EU-validerare + Textil-UI (Q3.3.4 + Q3.3.5)

  • Nytt: EU-efterlevnadsvaliderare med 5 textilregler (TEXTILE_AGEC_REQUIRED, TEXTILE_MICROPLASTICS_CONSISTENCY, TEXTILE_SVHC_THRESHOLD, TEXTILE_GREENWASHING, TEXTILE_ESPR_READY).
  • Nytt: GET /v1/dpp/:id/eu-compliance med compliant / espr_ready / issues[] / summary.
  • Dashboard: EU-efterlevnadssektion i DPP-detaljvyn (sammanfattningskort, grupperade problemkort, ESPR-Ready-badge i sidhuvudet).

2026-04 · Textil-DPP-schema (Q3.3.1–Q3.3.3)

  • Nytt: Kategorin textile med obligatorisk AGEC-kedja (vävning/stickning → färgning/tryckning → konfektionering), per fiber origin_country + recycled_pct, svhc_substances[], ESPR-tillval (PEF, livslängd, återvinningsbarhet).
  • Nytt: Basisfältet market_countries: string[] (ISO 3166-1 alpha-2) på alla DPP-kategorier — styr FR-specifika AGEC-regler och det franska obligatoriska konsumentmeddelandet.
  • Nytt: Konsument-HTML-mall med AGEC-mikroplastvarning, herkomstkedja i 3 steg (flaggpiller), SVHC-lista, durability- och recyclability-sektioner.
  • Migrering: 0010_dpp_market_countries (D1).

2026-04 · DPP-bulkimport (Q3.2.1–Q3.2.5)

  • Nytt: POST /v1/dpp/import accepterar CSV och XLSX (Worker-kompatibel via SheetJS xlsx, ~283 KB gzip-paket).
  • Skalat: planbaserad gräns (Free 100 → Enterprise 10k) + uppdelad (chunked) db.batch() à 100 + 5 MB body-gräns.
  • Nytt: Felrapport som CSV i fältet errors_csv i 201-svaret; GET /v1/dpp/import/templates/:category?format=csv|xlsx levererar färdiga mallar för batteri och textil.
  • Dashboard: Dra-och-släpp-uppladdning under /dashboard/dpp/import med mall-proxy och inline-CSV-nedladdning.

Icke-brytande — LTS-utökningar

Alla ovan nämnda ändringar är additiva:

  • Befintliga POST /v1/dpp/validate-klienter ignorerar det nya eu_compliance-fältet utan ändringar.
  • Befintliga battery-flöden är oförändrade.
  • market_countries är valfritt och har standardvärdet [].

Se API-versionering för breaking change-policy.