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/codesomdirigerar 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.tsfö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öppnarhttps://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.tsskyddar länkens href, beteende för ny flik,noopener noreferreroch 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 nuqr3.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/pricingnicht vom Redirect-Worker blockiert werden. - Tester:
packages/redirect/tests/unit/redirect.test.tskontrollerar 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 alladpp_scansför API-nyckelns workspace (active_dpps,scans_by_day,top_dppsmed 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(migrering0011) — separerad frånscans(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/:dppIdmed 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ållereu_compliance+preview.changed_fields. - Dashboard: Simulatorkort i DPP-detaljvyn (
/dashboard/dpp/:dppId) — taggar (chips) förDE/AT/FR/IT/ES/NL+ anpassade, status-rullgardinsmeny, Preview EU impact / Save changes / Reset. Icke-blockerande via RemixuseFetcher. - 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/validatereturnerar dessutomeu_compliance— samma validerare wieGET /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-compliancemedcompliant/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
textilemed obligatorisk AGEC-kedja (vävning/stickning → färgning/tryckning → konfektionering), per fiberorigin_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/importaccepterar CSV och XLSX (Worker-kompatibel via SheetJSxlsx, ~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_csvi 201-svaret;GET /v1/dpp/import/templates/:category?format=csv|xlsxlevererar färdiga mallar för batteri och textil. - Dashboard: Dra-och-släpp-uppladdning under
/dashboard/dpp/importmed 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 nyaeu_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.