Izmaiņu žurnāls
Izmaiņu žurnāls
Atlasīti pēdējo laidienu svarīgākie punkti. Pilnu informāciju par API versijām un saderību traucējošu izmaiņu politiku skatiet sadaļā API versiju izveide un LTS politika.
Detalizētas izmaiņas atsevišķos galapunktos: OpenAPI specifikācija un interaktīvā API atsauce.
2026-10 · Krāsas Dashboard
- Jaunums: koda detalizētajā lapā ir kartīte Krāsas: priekšplāns un fons kā heksadecimāla vērtība, caurspīdīgs fons, priekšskatījums caur īsto attēla maršrutu. Pārbaude ir tā pati, ko veic
PATCH /v1/codes/{id}: kritiskiem pāriem nepieciešams apstiprinājums, pārus zem 1,5:1 nevar saglabāt. - Atiestatīšana uz melnu uz balta visos četros formātos atkal atdod tos pašus baitus kā bez krāsām. Kodi bez krāsām nemainās.
- Caurspīdīgi kodi visos Dashboard priekšskatījumos tiek rādīti uz šaha galdiņa raksta. Sīkāk: Krāsas Dashboard.
2026-10 · Krāsas PDF un EPS
- Jaunums:
qr.pdfunqr.epsattēlofgunbggan kā parametrus, gan kā saglabātās krāsas. Melna un jebkura pelēka krāsa tiek ierakstīta kā pelēktoņi (tikai melnā plate), jebkura cita krāsa kā CMYK veselos procentos, piemēram,1F4E79kā C74 M36 Y0 K53. - Fons tāpat kā SVG: Tiklīdz ir izvēlēta krāsa, aiz koda un tā klusuma zonas atrodas necaurspīdīgs laukums, balts vai
bg.bg=transparentneattēlo nevienu. Virsraksts paliek melns, logo pamatne balta. - Bez krāsām nekas nemainās: Bez
fg/bgun bez saglabātām krāsām abi formāti nodrošina tos pašus baitus, ko iepriekš. Produkta pases PDF paliek nekrāsots. - Ierobežojumi: nav ICC profila, nav PDF/X. Sīkāka informācija: Krāsas drukāšanā.
2026-09 · Statiskie kodi bez pāradresācijas kešatmiņas, vienlaicīga dzēšana
- Mainīts: Statiskie kodi vairs neatrodas pāradresācijas kešatmiņā. Izsaucot to īso saiti (
redirect_url), vienmēr tiek nolasīts aktuālais stāvoklis. Tāpēc pēcDELETE /v1/accountstatiskais kods nākamajā izsaukumā vairs nepāradresē, savukārt iepriekš tas varēja turpināties līdz pat 24 stundām. Arī tarifa maiņa statiskajiem kodiem stājas spēkā nekavējoties. Dinamiskos kodus konta dzēšana iztīra tāpat kā līdz šim. Drukātie statiskie kodi tieši satur savu mērķi un netiek ietekmēti. - Novērsts: Divi vienlaicīgi
DELETE /v1/codes/:idpieprasījumi tam pašam kodam vienreiz atgriež200un vienreiz404. Webhookqr.deletedtiek nosūtīts tieši vienreiz, iepriekš divreiz. - Jaunums:
POSTunDELETE /v1/codes/:id/logoatbild ar409(errors/conflict), ja cits pieprasījums vienlaicīgi ir mainījis tā paša koda logotipu, un tad nekas netiek mainīts. Iepriekš augšupielādētais logotips varēja palikt saglabāts bez izmantošanas. Divi vienlaicīgiDELETE /v1/codes/:id/logopieprasījumi abi atgriež200. Sīkāka informācija: Logo.
2026-09 · TypeScript-SDK 1.2.0
- Jaunums
@qr3/sdk1.2.0:client.codes.update()pieņemappearanceun rezultātā sniedz kontrasta pārbaudes atradumus kāissues; ja atradumu nav, šis lauks trūkst.client.codes.imageUrl()pieņemfg,bgunecc. Katrs kods, ko atgriež API (get,list,create,update,batchCreate), saturtitleunappearance. - Atjaunināšana:
npm install @qr3/sdk@latest. Sekos Python, Go un PHP. Sīkāka informācija: SDK un CLI un Krāsu saglabāšana kodā.
2026-09 · Mainītais derīguma termiņš stājas spēkā aptuveni vienas minūtes laikā
- Novērsts: Veicot
PATCHpieprasījumu parametramexpires_at, tagad tiek iztīrīta koda pāradresācijas kešatmiņa. Tādējādi jaunais derīguma termiņš stājas spēkā aptuveni vienas minūtes laikā, nevis tikai pēc līdz pat 24 stundām. Iepriekš noņemts vai pārcelts derīguma termiņš līdz pat 24 stundām turpināja atgriezt410, savukārt uz pašreizējo brīdi iestatīts derīguma termiņš ļāva pāradresācijai darboties vēl līdz pat 24 stundām. - Novērsts: Kods, kas izveidots ar
expires_at, beidzas precīzi laikā arī tad, ja derīguma termiņš ir pirmo 24 stundu laikā. - Novērsts: Ja kods tiek dzēsts, kamēr tā logotips tiek augšupielādēts vai noņemts,
POSTunDELETE /v1/codes/:id/logoatbild ar404un nemaina dzēsto kodu, tāpat kā tas jau ir arPATCH. - Novērsts: Arī statisks kods, kura īsā saite (
redirect_url) ir tikusi izsaukta, atrodas pāradresācijas kešatmiņā. Tā mainīšana, apturēšana un dzēšana tagad arī to iztīra, nevis tikai dinamisko kodu gadījumā.
2026-09 · Krāsu saglabāšana pie koda
- Jaunums:
PATCH /v1/codes/:idpieņemappearancearforeground_colorunbackground_color(#RRGGBB, fonam arītransparent).qr.svgunqr.pngattēlo saglabātās krāsas bez jebkādiem parametriem; tāds vaicājuma parametrs kā?fg=000000joprojām ir prioritārs. PDF un EPS krāsas attēlos tikai kādā no nākamajiem laidieniem. - Kontrasta pārbaude: pāris, kura attiecība ir mazāka par 1,5:1, atgriež
422. Vājāki pāri tiek saglabāti un uzrādītimeta.issueskāwarningvaicritical; caurspīdīgs fons vienmēr ircritical, nekad netiek bloķēts. - Apvienošana: izlaistie lauki saglabā savu saglabāto vērtību,
nullveic atiestatīšanu. Vienlaicīgas izmaiņas vienā un tajā pašā kodā vairs nepārraksta viena otru. - Katrā koda atbildē:
appearanceir iekļauts katrā koda atbildē un webhooksqr.createdunqr.updated.POST, pakešapstrāde un imports to noraida ar422. - Nav izmaiņu esošajiem kodiem: bez saglabātām krāsām katrs kods atgriež tos pašus baitus, ko iepriekš. Sīkāka informācija: Krāsu saglabāšana pie koda.
2026-09 · Krāsas un kļūdu labošana kā attēlu maršrutu parametri
- Jaunums: Visi četri attēlu maršruti pieņem
fg(priekšplāna krāsa),bg(fona krāsa vaitransparent) unecc(kļūdu labošanaL,M,Q,H). SVG un PNG zīmē krāsas; PDF un EPS tās pieņem, bet zīmēs tikai vēlākā laidienā.eccdarbojas visos četros formātos, logotips joprojām pieprasaH. - Caurspīdīgs:
bg=transparentnodrošina SVG bez fona un PNG ar īstu alfa kanālu. Pamatnei jābūt gaišai un jāatstāj brīva klusuma zona. - Nekad neizraisa kļūdu: Nederīgas vērtības tiek ignorētas; attēls tiek parādīts tieši tāpat kā bez parametriem.
- Kešatmiņa: Katrs spēkā esošais parametrs nodrošina
Cache-Control: public, max-age=300standarta attēla 24 stundu vietā. - Nav uzvedības izmaiņu bez parametriem: Jebkurš esošais kods nodrošina visos četros formātos tos pašus baitus, ko iepriekš.
- Pieejams visos tarifu plānos. Sīkāka informācija: Krāsas un kļūdu labošana.
2026-09 · PDF un EPS tagad arī iegulst logo
- Paplašinājums:
qr.pdfunqr.epstagad iegulst iestatīto logo tieši tāpat kāqr.svgunqr.png(skatīt zemāk) — kā iegultu attēlu (PDF izmantojotImage XObject, EPS izmantojot attēlu vārdnīcu PostScript, tur tikai ar%%LanguageLevel: 3), centrētu tajā pašā laukumā, ar tādu pašu kļūdu labošanas līmeņa paaugstināšanu uzH. Abi formāti iepriekš logo neiekļāva; tagad tas ir novērsts. - Kešatmiņa: Ja ir iestatīts logo, tagad arī
qr.pdfunqr.epsnodrošinaCache-Control: public, max-age=300parasto 24 stundu vietā — tieši tāpat kā SVG/PNG. - Atkāpšanās režīms: Ja pašu logo attēlu nevar apstrādāt (piemēram, bojāts saglabātais objekts), kļūdu labošana joprojām paliek
H, taču rezervētais laukums paliek tukšs attēla vietā — nekad netiek izraisīta servera kļūda. - Nav uzvedības izmaiņu bez logo: Kodi bez logo joprojām nodrošina baitos identiskus
qr.pdf/qr.epsfailus ar nemainīgu 24 stundu kešatmiņu. - Sīkāka informācija un drukāšanas norādes: Logo QR kodā.
2026-09 · Logo QR kodā — Dashboard un API
- Jaunums: Kods tagad var saturēt logo vidū. Dashboard koda detaļu lapā tiek izveidota atsevišķa logo karte: Izvēlēties logo, pievienojot pirmo reizi vai noņemot, jāapstiprina brīdinājums ar obligātu atzīmi (abi maina punktu rakstu), pēc tam Augšupielādēt logo/Noņemt logo. Aizstāšanai nav nepieciešams apstiprinājums — mainās tikai attēls, nevis raksts. Loma
viewerredz statusu un priekšskatījumu, bet nevienu no trim darbībām. - API:
POST /v1/codes/{id}/logo(multipart lauksfile; PNG, JPEG vai WebP, ne vairāk kā 1 MB, SVG tiek noraidīts) izveido vai aizstāj logo;DELETE /v1/codes/{id}/logoto atkal noņem un ir idempotents. Pārāk liels attēls atgriež413, neatbalstīts formāts —422, lomaviewer—403. - Renderēšana:
qr.svgunqr.pngiegulst logo kā faktiskus pikseļus (512 × 512, normalizēts) un šim nolūkam paaugstina kļūdu labošanu uzH. Tādējādi pievienošana un noņemšana maina punktu rakstu (M↔H), bet aizstāšana — nē.qr.pdfunqr.epsneiegulst logo un paliek nemainīti. Jau izdrukāts kods jebkurā gadījumā turpina darboties, jo kodētais mērķis nav atkarīgs no logo — no jauna jādrukā tikai tiem, kuri vēlas redzēt (jauno) logo izskatu arī uz materiāla, un šajā gadījumā nevajadzētu jaukt vecos un jaunos drukas failus. - Kešatmiņa: Ja logo ir iestatīts,
qr.svgunqr.pngatgriežCache-Control: public, max-age=300parasto 24 stundu vietā. Sīkāka informācija, ierobežojumi un drukas norādījumi: Logo QR kodā.
2026-08 · operationId visām 75 operācijām un “kad lietot” norādījumi aģentiem
- Papildinājums: Visām 75 OpenAPI specifikācijas operācijām tagad ir
operationId—listCodes,createCode,getCodeStats,archiveWorkspaceun tā tālāk. Līdz šim šī lauka vispār nebija, tāpēc katram ģeneratoram metodes nosaukums bija jāatvasina no HTTP metodes un ceļa (postV1Codes). Šādi nosaukumi ir piesaistīti ceļam un mainās līdz ar katru ceļa pārveidi. Nosaukumu formāts visās 75 vietās ir vienāds:list/get/create/update/replace/delete, pretējā gadījumā tiek izmantots biznesa darbības darbības vārds (validateDpp,registerGs1Identifier,pingWebhook). Darbības vārds atbilst biznesa loģikai, nevis HTTP metodei —archiveWorkspaceirDELETE,importDppsirPOST. - Ietekme uz pašu ģenerētiem klientiem: Tie, kas ģenerē savu SDK no specifikācijas, nākamajā palaišanas reizē iegūs pārdēvētas metodes (
postV1Codes→createCode). Tas ir šo izmaiņu mērķis, taču tā ir pārdēvēšana svešā kodā — tāpēc tas šeit ir īpaši pieminēts. Ceļi, parametri, atbilžu formāti un statusa kodi nav mainīti; oficiālie SDK, CLI un MCP serveri netiek ietekmēti. - Ievads aģentiem: Failā
https://qr3.app/llms.txtir sadaļa## When to use qr3.app— seši uzdevumi sešu funkciju vietā, kā arī teikums par to, kam qr3.app nav piemērots rīks. To pašu informāciju MCP serveris tagad sniedz savienojuma izveides laikā:initializepieprasījums prethttps://mcp.qr3.app/mcpatbild ar laukuinstructions(iepriekš: vienpadsmit rīki bez jebkāda iedalījuma). Tāpat ir norādīts, kuriem izsaukumiem ir nepieciešama API atslēga —initializeuntools/listnē, bet katramtools/calljā. - Labojumi failā
llms.txt: Četras norādes tika pārbaudītas pret produkcijas vidi un izrādījās neprecīzas: (1) Python SDKqr3appnav publicēts PyPI — rindapip installir izņemta bez aizstāšanas; (2)Accept: text/markdownattiecas uz sākumlapu un emuāru, nevis uz katru servera pusē renderētu lapu; (3) kontaktadrese ir[email protected], arī sākumlapas JSON-LD; (4)/de/security/ir pāradresācija uz enkuru, nevis atsevišķa lapa. Jaunā saite:docs.qr3.app/de/skills/. - Aizsardzība: Trīs apgalvojumi failā
openapi-spec.test.ts— pilnīgums, unikalitāte,lowerCamelCase—, katrs pārbaudīts ar mutāciju. Vēl deviņi testi fiksē četras labotās norādes, lai tās neatkārtotos. - Zināms ierobežojums: Divas no 75 operācijām ir aprakstītas specifikācijā, taču atbild ar
404(GET /v1/codes/{id}/statsunGET /v1/account). Šeit tām tika piešķirts nosaukums, un tās to atkal zaudēs, tiklīdz tiks pieņemts lēmums par to izstrādi vai svītrošanu.
2026-08 · Tarifu pazemināšana un atcelšana tagad ietekmē arī ierobežojumus
- Labojums: Stripe webhook plāna maiņas un atcelšanas gadījumā ierakstīja tikai plāna nosaukumu, nevis četras organizācijas ierobežojumu kolonnas (
max_workspaces,max_members,max_dynamic_codes,max_scans_per_month). Tā kā ierobežojumu piemērošanā tiek izmantota maksimālā vērtība no saglabātās vērtības un plāna bāzes līnijas, pazemināta vai atcelta organizācija saglabāja savus vecos, lielākos ierobežojumus — plāna pazemināšanai nebija ietekmes. Tagad webhook katras reālas plāna maiņas gadījumā iestata kolonnas uz jaunā tarifa bāzes līniju, bet atcelšanas gadījumā — uz Free bāzes līniju, tieši tāpat, kā to jau dara administratora pārvaldība. - Uzvedība: Abonementa rutīnas atjauninājumi (pagarināšana, maksāšanas līdzekļi, proporcionālais pārrēķins) joprojām neietekmē ierobežojumus; individuāli piešķirtie lielākie ierobežojumi paliek nemainīgi. Tikai reāla plāna maiņa atiestata tos uz jaunā tarifa bāzes līniju.
- Ietekme: Nav API vai atbildes formāta izmaiņu. Organizācijas, kuru plāna pazemināšana notika pirms šī labojuma, saglabā vecās vērtības, līdz stājas spēkā nākamā plāna maiņa vai atbalsta dienests tās pielāgo.
2026-08 · Keyset kursors tagad visos sarakstu galapunktos
- Labojums: Kursora labojums galapunktiem
GET /v1/codesunGET /v1/dpp(skatīt zemāk) tagad ir ieviests visos pārējos sarakstos ar kursora pagināciju:GET /v1/qr-codes/:id/comments,/v1/workspaces,/v1/gs1/identifiers,/v1/members,/v1/audit-logs,/v1/admin/orgs,/v1/admin/usersun/v1/webhooks/:id/deliveries. Visi tie veica šķirstīšanu tikai pēccreated_at; rindas ar identisku laika zīmogu (audita ieraksti no batch operācijas, webhook atkārtotie mēģinājumi, dalībnieku importēšana) nākamajā lapā varēja tikt pazaudētas. Kārtošanas atslēga tagad visur ir kortežs(created_at, id). - API izmaiņas: Šajos sarakstos
meta.pagination.next_cursorno šī brīža ir arī necaurredzama vērtība (base64url), nevis vienkāršs laika zīmogs; nenolasāmi kursori atgriež400, bet vecie laika zīmoga kursori pārejas periodā joprojām tiks pieņemti. Izņēmums irGET /v1/webhooks/:id/deliveries: turnext_cursorjoprojām ir pēdējās piegādes ID (nezināms ID → pirmā lapa). Klientiem, kas atgriežnext_cursornemainītu — Dashboard, CLI, SDKs, MCP —, nekas nav jāmaina. - Ietekme: Nav nepieciešama migrācija. Ja kādā no šiem sarakstiem (piemēram, audita žurnālā vai piegādes žurnālā Dashboard) šķirstīšanas laikā pamanījāt trūkstošus ierakstus: tie nekad nebija pazuduši — saraksti tagad tos parāda pilnībā.
2026-08 · Laika zīmogi pēc rediģēšanas un dzēšanas atkal atbilst OpenAPI
- Labojums: Pēc
PATCH /v1/codes/{id}vērtībaupdated_attika atgriezta SQLite formātā bez laika zonas (2026-08-17 09:00:00), lai gan OpenAPI specifikācija paredzformat: date-timeun izveide (POST) nodrošina ISO laika zīmogu (2026-08-17T09:00:00.000Z). Tas pats attiecās uzdeleted_at/updated_atsoft-delete gadījumā, kā arī uz API atslēgu, organizāciju, darbvietu, dalībnieku, komentāru un webhook rediģēšanas/dzēšanas ceļiem, un papildus uz API atslēgulast_used_atun webhooklast_triggered_at. Visi rakstīšanas ceļi tagad izmanto ISO 8601 (UTC,TunZ). - Ietekme: Klienti, kas parsē
updated_atarnew Date(...)(SDKs, CLI, Dashboard), nolasīja atstarpes formātu kā vietējo laiku — CLI vienreiz rediģētiem kodiem rādīja laiku, kas nobīdīts par vietējo nobīdi (Vīne: −2 h). Tas ir novērsts. Papildus tam datu migrācija normalizē jau saglabātās vērtības vecajā formātā uz ISO, lai kārtošana un salīdzināšana jauktos datos būtu pareiza. Nav nekādu izmaiņu lauku nosaukumos vai atbildes struktūrā. - Konteksts: Tā pati kļūdu klase, kas abos tālāk minētajos labojumos (API atslēgu derīguma termiņš, atkārtotās skenēšanas robežlaiks): SQLite
datetime('now')rakstaYYYY-MM-DD HH:MM:SS, bet visi pārējie rakstītāji — ISO 8601. Pirmkoda aizsardzības tests turpmāk novērsīs jaunus šādus gadījumus.
2026-08 · Saraksta paginācija vairs nezaudē batch kodus
- Labojums:
GET /v1/codesunGET /v1/dppveica pagināciju tikai pēccreated_at. Tomēr kodi noPOST /v1/codes/batch,POST /v1/dpp/batchun CSV/XLSX importa koplieto vienu laika zīmogu — tiklīdz batch apjoms bija lielāks parlimit(pēc noklusējuma 20), otrā lapa vairs neatgrieza atlikušās rindas ar to pašu laika zīmogu. Kodi eksistēja un bija sasniedzami, izmantojotGET /v1/codes/:id, taču sarakstā (Dashboard, CLIqr3 list, SDKs, MCP) tie nekad neparādījās. Kursors tagad ir keyset pār(created_at, id). - API izmaiņas:
meta.pagination.next_cursorno šī brīža ir necaurredzama vērtība (base64url), nevis vienkāršs laika zīmogs. Tiem, kas atgriež kursoru nemainītu kā?cursor=— kā to dara Dashboard, CLI, visi SDKs un MCP serveris —, nekas nav jāmaina. Vecie laika zīmoga kursori pārejas periodā joprojām tiks pieņemti; nesalasāmi kursori tagad atgriež400, nevis klusi parāda pirmo lapu. - Ietekme: Ja pēc batch importa sarakstā redzējāt mazāk kodu, nekā tika izveidots: kodi nekad nebija pazuduši — saraksts tagad tos parāda pilnībā. Migrācija nav nepieciešama.
2026-08 · Drošības atkārtotā skenēšana atkal darbojas 24 stundu ciklā
- Labojums: Periodiskā mērķa URL un mērķlapu saišu (Google Web Risk) atkārtotā skenēšana izlaida kodus, kuru pēdējā skenēšana bija tajā pašā kalendārajā dienā, kad 24 stundu robežlaiks — atkarībā no diennakts laika atkārtotā skenēšana aizkavējās pat par vēl vienu dienu. Robežlaiks tagad tiek aprēķināts tajā pašā ISO formātā, kurā tiek saglabāti skenēšanas laika zīmogi.
- Ietekme: Mērķa URL, kas pēc pēdējās skenēšanas tiek klasificēts kā nedrošs, atkal izraisa automātisku koda apturēšanu dokumentētajā 24 stundu logā. Nav API vai atbildes formāta izmaiņu.
2026-08 · API atslēgu derīguma termiņš beidzas precīzā beigu laikā
- Labojums: API atslēga, kuras
expires_atbija tajā pašā dienā, joprojām tika akceptēta līdz pusnaktij pēc UTC. Derīguma termiņa beigas tagad tiek salīdzinātas kā laika zīmogs, nevis kā rakstzīmju virkne — atslēga ar beigušos derīguma termiņu nekavējoties atgriež401. - Konteksts:
expires_attiek saglabāts kā ISO laika zīmogs (2026-08-14T09:00:00Z), savukārt salīdzināšanas puse nodrošināja formātu ar atstarpi (2026-08-14 09:00:00). Tāpēc tiešais rakstzīmju virkņu salīdzinājums bija pareizs tikai tik ilgi, kamēr atšķīrās pats datums. - Ietekme: Migrācija nav nepieciešama, atbildes formāts no
GET /v1/api-keyspaliek nemainīgs. Nelasāmas derīguma termiņa vērtības tagad tiek uzskatītas par beigušām, nevis derīgām.
2026-08 · API atsauce: tenant pārvaldība dokumentēta
- OpenAPI: Specifikācija — un līdz ar to arī interaktīvā atsauce — tagad dokumentē organizācijas (tostarp
GET /v1/organizations/usage), darbvietas, dalībniekus un lomas un audita žurnālus. - Billing: Tarifu pārskats (
GET /v1/billing/plans) ir publisks; Checkout (POST /v1/billing/checkout) un Stripe klientu portāls (GET /v1/billing/portal) ir norādīti kā galapunkti organizācijas administratoriem. - Skenēšanas eksports: Skenēšanas statistika (
GET /v1/codes/{id}/scans) un neapstrādāto datu eksports (…/scans.csv,…/scans.xlsx) ir pilnībā dokumentēti — tostarp VDAR paziņojums:ip_hashnekad netiek iekļauts eksportā. - Kļūdu reakcija: Tagad ir dokumentēta arī pieprasījuma validācijas
400atbilde: pamatteksts ir neapstrādāta Zod kļūda, nevis RFC-7807 problēmas dokuments — tomēr tas tiek piegādāts ar Content-Typeapplication/problem+json.
2026-08 · Publisko failu saišu kopēšana
- Dashboard: Publiskiem failiem koda detaļu lapā tagad ir poga, kas kopē faila publisko saiti starpliktuvē – to var uzreiz izmantot kā QR koda mērķa URL, ja skenēšanai jāatver konkrēts dokuments, nevis mērķlapa ar failu sarakstu.
- API: Failu galapunkti (
/v1/files) papildus atgriežpublic_url. Lauks ir aizpildīts tikai failiem arvisibility: public– privātiem failiem publiskas adreses nav. - Uzvedība: Saite darbojas bez pieteikšanās un atver failu tieši pārlūkprogrammā. Funkcija Aizstāt to atstāj nemainītu, tāpēc ar šo saiti izdrukāts kods paliek derīgs. Sīkāka informācija: Faili un datu lapas.
2026-07 · Komandas lomas: Līdzstrādnieks bez dzēšanas un administratora norēķini
- Jaunums: dalībnieka loma Līdzstrādnieks (bez dzēšanas) — izveido un rediģē QR kodus, failus un Digital Product Passports, bet nevar neko dzēst vai izveidot API atslēgas. Visi destruktīvie galapunkti pārbauda lomu servera pusē (
403). - Norēķini: tarifu plānu jauninājumi un Stripe klientu portāls (
POST /v1/billing/checkout,GET /v1/billing/portal) tagad ir pieejami tikai organizācijas Administratoriem — visas pārējās lomas redz tikai lasāmu tarifu pārskatu. - Dashboard: darbības, kuras lietotāja loma nepieļauj, tiek paslēptas: piemēram, Skatītājs neredz pogas izveidei, rediģēšanai vai dzēšanai, taču saraksti, lejupielādes un statistika paliek redzami. Sīkāka informācija: Komanda un lomas.
2026-06 · Ārējās saites koda mērķlapā
- Mērķlapa: Koda qr3 mitinātā mērķlapa tagad var uzskaitīt ārējas, pašmitinātas saites (
{ label, url }) papildus augšupielādētajiem failiem vai to vietā – piemēram, datu lapām jūsu pašu vietnē. - API:
POST/PATCH /v1/codespieņem masīvulinks(0–20 ierakstu,http(s), ≤ 2048 rakstzīmju). Katrs URL tiek pārbaudīts ar Google Web Risk; nedrošs URL atgriež422. Tukšs masīvs dzēš visas saites. - Dashboard: Pievienojiet, pārkārtojiet un noņemiet saites koda detaļu lapā.
- Drošība: Renderētās saites paliek drošas pret XSS (ar atsoļa rakstzīmēm, tikai
http(s)), un lapa saglabā savunoindexgalveni.
2026-04 · Dashboard analītika katram QR kodam
- Dashboard: Analītikas poga QR kodu sarakstā tagad atver attiecīgā QR koda statistikas lapu adresē
/dashboard/codes/{id}. - Maršrutēšana: Aizstājvārds
/dashboard/codesjoprojām novirza uz/dashboard, taču vairs nepārtver detalizētos maršrutus, piemēram,/dashboard/codes/{id}. - API: Detalizētā lapa ielādē QR kodu tieši, izmantojot
GET /v1/codes/:id; tādējādi tā vairs nav atkarīga no saraksta lapošanas (pagination) ierobežojumiem. - Testi: Regresijas testi aptver aizstājvārda novirzīšanu un tiešo koda ielādi.
2026-04 · Dashboard dzēšanas dialoglodziņš QR kodiem
- Dashboard: Atkritumu tvertnes ikona QR kodu sarakstā tagad atver atsevišķu React dialoglodziņu, nevis pārlūkprogrammas noklusējuma uznirstošo logu.
- Atsauksmes: Pēc dzēšanas parādās “toast” paziņojums par veiksmīgu darbību vai kļūdu.
- Testi:
packages/dashboard/tests/dashboard.test.tsnovērš regresijas attiecībā uzconfirm()QR kodu dzēšanas plūsmā.
2026-04 · Dashboard īso saišu tests dinamiskajiem QR kodiem
- Dashboard: Īsie kodi (shortcodes) QR kodu sarakstā tagad ir tieši klikšķināmi kā ārējās novirzīšanas saites. Ārējās saites ikona blakus, piemēram,
wu3qaa, atverhttps://qr3.app/{shortCode}jaunā cilnē. - i18n: Pievienoti rīka padomu (tooltip) teksti vācu un angļu valodā.
- Testi:
packages/dashboard/tests/dashboard.test.tsaizsargā saites href, jaunās cilnes uzvedību,noopener noreferrerun ikonu pret regresijām.
2026-04 · Redirect-Worker maršruts dinamiskajiem QR kodiem
- Labojums: Dinamiskos QR kodus adresē
https://qr3.app/{shortCode}atkal apstrādā Redirect-Worker. Produkcijas maršruts tagad izmantoqr3.app/*, jo Cloudflare Worker maršruti neatbalsta:codeceļa parametrus. - Drošības uzlabošana: Neatbilstošie ceļi tiek nodoti tālāk uz galveno izcelsmes adresi (landing origin), lai Redirect-Worker nebloķētu parastās lapas, piemēram,
/de/pricing. - Testi:
packages/redirect/tests/unit/redirect.test.tspārbauda aizstājzīmes (wildcard) maršrutu, īso kodu apstrādi un izcelsmes caurlaidi (pass-through).
2026-04 · Workspace DPP skenēšanas pārskats (Q3.4.2)
- Jaunums:
GET /v1/workspace/stats/dpp?days=30— apkopo visus API atslēgas darba vietas (workspace)dpp_scans(active_dpps,scans_by_day,top_dppsar produkta nosaukumu/kategoriju). - Dashboard: Kartīte sākumlapā (
/dashboard) ar 30 dienu joslu diagrammu + top sarakstiem — paralēli QR kodu kartītēm. - Publisks: Mārketinga īsā saite
GET /dpp/dpp_<id>(viens segments) tiešraides demonstrācijām, paralēli/dpp/{gtin}/{serial}.
2026-04 · DPP skenēšanas analītika (Q3.4.1)
- Jaunums:
GET /v1/dpp/:id/stats?days=30— apkopoti publiskā GS1 atrisinātāja (resolver) skenējumi katram DPP. Lauki:total_scans,period_scans,scans_by_day,top_countries,top_devices,top_representations. - Jaunums: Tabula
dpp_scans(migrācija0011) — atdalīta noscans(Redirect-Worker). IP adreses tiek jauktas (hashed) ar katru dienu rotējošu sāli (salt), neapstrādātas IP adreses nekad nesasniedz D1. - Dashboard: Mini diagrammas kartīte (SVG, bez diagrammu bibliotēkas) adresē
/dashboard/dpp/:dppIdar 30 dienu joslām + top 3 sadalījumiem. Tukšs stāvoklis (empty state), tiklīdz DPP ir aktīvs, bet tam vēl nav bijis skenējumu.
2026-04 · Tiešsaistes ES atbilstības simulators (Q3.3.7)
- Jaunums:
POST /v1/dpp/:id/validate-update— simulē daļējus atjauninājumus bezstāvokļa (stateless) režīmā (statuss, tirgus saraksts, …) bez saglabāšanas. Atbilde satureu_compliance+preview.changed_fields. - Dashboard: Simulatora kartīte DPP detaļās (
/dashboard/dpp/:dppId) — čipi (chips) priekšDE/AT/FR/IT/ES/NL+ pielāgoti, statusa nolaižamā izvēlne, Preview EU impact / Save changes / Reset. Nebloķējoša darbība, izmantojot RemixuseFetcher. - Drošības uzlabošana: Ārēji simulatora palīgi (
readUpdatePatchFromForm,marketCountriesKey) + 18 jauni vienību testi; kļūdas labojums: atsevišķa ne-ISO ievade vairs neizdzēš tirgus sarakstu.
2026-04 · Tiešsaistes ES atbilstības priekšskatījums izveides formā (Q3.3.6)
- Mainīts:
POST /v1/dpp/validatepapildus sniedzeu_compliance— tas pats validators, kasGET /v1/dpp/:id/eu-compliance, bezstāvokļa režīmā pirms saglabāšanas. - Dashboard: Priekšskatījums zem esošā validācijas paneļa + jauns Save-Guard baneris pirms iesniegšanas pogām, ja ir aktīvas kļūdas/brīdinājumi (i18n daudzskaitļa formas DE/EN).
2026-04 · ES validators + tekstila saskarne (Q3.3.4 + Q3.3.5)
- Jaunums: ES atbilstības validators ar 5 tekstila noteikumiem (
TEXTILE_AGEC_REQUIRED,TEXTILE_MICROPLASTICS_CONSISTENCY,TEXTILE_SVHC_THRESHOLD,TEXTILE_GREENWASHING,TEXTILE_ESPR_READY). - Jaunums:
GET /v1/dpp/:id/eu-compliancearcompliant/espr_ready/issues[]/summary. - Dashboard: ES atbilstības sadaļa DPP detaļās (kopsavilkuma flīzes, grupētas problēmu kartītes, ESPR-Ready nozīmīte galvenē).
2026-04 · Tekstila DPP shēma (Q3.3.1–Q3.3.3)
- Jaunums: Kategorija
textilear AGEC obligāto ķēdi (aušana/adīšana → krāsošana/apdrukāšana → konfekcija), katrai šķiedraiorigin_country+recycled_pct,svhc_substances[], ESPR izvēles iespēja (PEF, kalpošanas laiks, Recyclability). - Jaunums: Bāzes lauks
market_countries: string[](ISO 3166-1 alpha-2) visām DPP kategorijām — kontrolē Francijai specifiskos AGEC noteikumus un Francijas patērētāju obligāto paziņojumu. - Jaunums: Patērētāju HTML veidne ar AGEC mikroplastmasas brīdinājuma lodziņu, 3 pakāpju izcelsmes ķēdi (karogu tabletes), SVHC sarakstu, Durability un Recyclability sadaļu.
- Migrācija:
0010_dpp_market_countries(D1).
2026-04 · DPP lielapjoma imports (Q3.2.1–Q3.2.5)
- Jaunums:
POST /v1/dpp/importpieņem CSV un XLSX (saderīgs ar Worker, izmantojot SheetJSxlsx, ~283 KB gzip pakotne). - Mērogots: uz plānu balstīts ierobežojums (Free 100 → Enterprise 10k) + sadalīts
db.batch()pa 100 + 5 MB ķermeņa (body) ierobežojums. - Jaunums: Kļūdu ziņojums kā CSV atbildes 201 laukā
errors_csv;GET /v1/dpp/import/templates/:category?format=csv|xlsxnodrošina gatavas veidnes akumulatoriem un tekstilam. - Dashboard: Vilkšanas un nomešanas (drag-and-drop) augšupielāde sadaļā
/dashboard/dpp/importar veidņu starpniekserveri (template proxy) un iekļautu CSV lejupielādi.
Saderīgas izmaiņas — LTS paplašinājumi
Visas iepriekš minētās izmaiņas ir papildinošas:
- Esošie
POST /v1/dpp/validateklienti ignorē jaunoeu_compliancelauku bez izmaiņām. - Esošās
batteryplūsmas paliek nemainītas. market_countriesir izvēles lauks, un tā noklusējuma vērtība ir[].
Skatīt API versiju izveide saderību traucējošu izmaiņu politikai.