Dziennik zmian
Każde wydanie, każda funkcja, każda poprawka, w jednym przewijalnym dzienniku.
2026-04-26, Pełna zgodność renderowania z ISO/AIM/GS1 dla każdego typu kodu
- Zaudytowano każdy kod QR / 2D / 1D pod kątem normy, która go reguluje.
includetextw bwip-js's domyślnie ma wartość false dla każdego bcid, więc EAN/UPC/ITF-14 były wysyłane bez czytelnego paska tekstu, którego wymagają ISO 15420 §5.1.2 + GS1 §5.4.4. Ustawionoincludetext: true+guardwhitespace: truedla całej rodziny EAN/UPC orazincludetext: truedla ITF-14, Code 128, Code 39, Code 93, Codabar, VIN. - Strefy ciszy EAN-13 są teraz asymetryczne zgodnie z ISO 15420 Załącznik A (przy scale=4
paddingleft: 44= 11 modułów,paddingright: 28= 7 modułów). EAN-8 / UPC-A / UPC-E używają symetrycznych obwiedni wskazanych przez ich specyfikacje. PDF417 + prawo jazdy AAMVA dostają strefy ciszy 2-modułowe zgodnie z ISO 15438 §5.5; Data Matrix dostaje 1 moduł zgodnie z ISO 16022; Aztec dostaje rekomendowany 1 moduł (ISO 24778 dopuszcza zero, ale to psuje skanery dotykające krawędzi). QUIET_ZONE_MODULESdla QR podniesiono z 2 → 4, pełna specyfikacja ISO/IEC 18004 §6.3.7. Skrót do 2 modułów był branżowym kompromisem, który zawodzi przy wykrywaniu prefiksu GS1 Digital Link na części przemysłowych skanerów laserowych. Micro QR + rMQR są teraz dostarczane ze strefą ciszy 2-modułową (qreanemituje samą siatkę, więc dodajemy ją ręcznie wrenderMicroQRResult).- Poziomy ECC zablokowane: Aztec na 23% (domyślne ISO 24778), PDF417 na poziomie 5 (minimum GS1 dla transportu i logistyki). Blokada na wypadek przyszłej zmiany domyślnych w bwip-js.
- Nowa strona autorytatywna: /standards/barcode-rendering/. Referencja per symbologia obejmująca strefy ciszy, HRI, ECC i cyfry kontrolne dla wszystkich 17 typów, z linkami do pierwotnych źródeł każdej cytowanej normy ISO/AIM/GS1.
2026-04-26, Wzmocniona bramka wdrożeń staging-first
- Wdrożenia produkcyjne dla witryn ze staging wymagają teraz, aby ostatnie wdrożenie staging dotyczyło dokładnie bieżącego commita (czyste working tree po obu stronach). 24-godzinne okno poprzedniej bramki pozwalało niepowiązanym wdrożeniom produkcyjnym podczepiać się pod nieaktualną historię staging. Śledzone po SHA, fail-closed, nadpisanie pozostaje
CF_DEPLOY_SKIP_STAGING_FIRST=1. - Wstępna kontrola w
cf-deploy.pypod kątemCLOUDFLARE_API_TOKEN, szybko kończy się błędem z podpowiedziąsource ~/.envrc, zamiast pozwalać wranglerowi wyrzucać enigmatyczny błąd "non-interactive environment". - Weryfikator treści po każdym wdrożeniu: pobiera adres produkcyjny i potwierdza, że jego cache-buster odpowiada temu, co właśnie zostało odciśnięte w
dist/. Wyłapuje klasę błędów "zły CNAME" / "edge serwuje przestarzały cache" / "zła gałąź", którą sprawdzenie zdrowia 200-OK po cichu by przeoczyło.
2026-04-25, Przebudowa UX mobilnego: nagłówek peek-podglądu, dolny arkusz podglądu, przyklejony przycisk Pobierz
- Przyklejony nagłówek peek-podglądu na górze strony na telefonach (≤768px). Zawsze pokazuje miniaturę QR na żywo oraz jednowierszowy status, "Wypełnij formularz poniżej" w stanie spoczynku, "Twój QR jest gotowy · Stuknij, aby pobrać" po wyrenderowaniu kodu. Pulsuje raz, gdy QR po raz pierwszy staje się prawidłowy, aby użytkownicy go zauważyli. Rozwiązuje długotrwały problem, że odwiedzający na telefonach nie wiedzieli, że wynik został wyrenderowany pod zakładką.
- Stuknięcie w pasek peek (lub nowy przyklejony dolny przycisk Pobierz) otwiera podgląd jako dolny arkusz, przyciski pobierania pełnej szerokości ułożone pionowo, zamknięcie przesunięciem w dół lub stuknięciem w tło, padding bezpiecznego obszaru dla wskaźnika ekranu głównego iOS.
- Obsługa klawiatury programowej: nasłuchiwacz visualViewport ustawia
body.kb-opengdy klawiatura się pojawia, pasek peek zwija się do wąskiej pigułki, a sfokusowane pola przewijają się do środka, by klawiatura nigdy nie zasłaniała tego, co pisze użytkownik. - Przegląd celów dotykowych przy ≤640px: kafelki wyboru typu zwiększone z 14×8 / 0.78rem do 16×10 / 0.82rem i minimalnej wysokości 56px, zakładki panelu oraz przyciski główne z minimum 44px, przyciski eksportu układane w pełnej szerokości z minimum 48px wewnątrz arkusza.
- Meta viewport zyskuje
interactive-widget=resizes-content, a dwie reguły100vhprzeniesione do100dvhdla przewidywalnego układu w przeglądarkach mobilnych z dynamicznymi paskami narzędzi. - Stary FAB przewijania do podglądu usunięty, pasek peek i przyklejony CTA pokrywają to samo zadanie bardziej bezpośrednio. Pamięć podręczna service workera podniesiona do v132. Nowe ciągi przetłumaczone na wszystkie 25 języków.
- Higiena CSS: 203 jednopunktowe deklaracje odstępów w
style.cssprzeniesione przez codemod do tokenów--space-N. Czysty refactor, bez zmian wizualnych. - Sufit stylów inline 89 → 85: cztery atrybuty
style="text-transform:uppercase"na polach AAMVA / Code 39 / Code 93 / VIN zastąpione istniejącą klasą.input-uppercase.
2026-04-19, Sweep zgodności N16 (45 stron), N3 batch 2, poprawki regresji, ogon N3, ujawnienie AAMVA, trwałość stanu Expert, audyt a11y
- Pełny sweep zgodności N16: wszystkie 34 strony docelowe schematów płatności mają teraz bloki compliance-checklist + "kiedy nie używać". Czwarte przejście (19 stron) obejmuje resztę: Alipay + WeChat Pay (PBoC + SAFE), Boleto (BACEN + FEBRABAN), Mercado Pago (siedmiokrajowa matryca regulatorów), Payconiq (NBB + PSD2), EPC/Girocode (EPC069-12 + ZAG), Apple Wallet + Google Wallet (developer-program + FTC Endorsement + GDPR location), Kakao Pay + Naver Pay + LINE Pay (koreański FSC + japoński FSA + Tajwan FSC + BOT), GCash + Maya (BSP EMI + AMLC + QR Ph + SEC PH), JPQR (METI + FSA Qualified-Invoice), FPS HK (HKICL + HKMA + SFC Alert List), DuitNow (PayNet + BNM + LHDN e-Invoice), M-PESA (Safaricom + CBK + eTIMS + CMA), MoMo (SBV + AMLID + GDT e-Invoice), PayID (NPP + RBA + APRA + AUSTRAC + ASIC). W połączeniu z trzema poprzednimi przejściami (AAMVA / strony Recenzji / Kupon / Lejek recenzji / App Store / PayPal / Crypto / UPI / SEPA + Venmo / Cash App / Swiss QR-bill / PIX / PromptPay / EMVCo / TWINT + Bizum / PayNow / iDEAL / BLIK / Interac / MB WAY / Swish / Vipps), to 45 stron docelowych z compliance, każdy schemat płatności na stronie ma teraz odniesienia do lokalnych regulatorów, reguły klasyfikacji sprzedawcy, obowiązki podatkowe / fakturowania, ramy ochrony konsumenta oraz zabezpieczenie "brak zachęty inwestycyjnej" wskazujące właściwego regulatora rynku papierów wartościowych. Pierwszy podzbiór (7): Venmo (AUP / nadużycie F&F / 1099-K / Early Warning reporting), Cash App (Cash for Business / Bitcoin & Investing regulowane powierzchnie / Regulation E / flaga oszustw CFPB), Swiss QR-bill (SIX v2.3 / zasady QR-IBAN / MWSTG / 10-letnia retencja OR Art. 958f), PIX (BACEN Resolution 103/2021 / PJ vs PF / okno zwrotu MED / oszustwo nakładkowe naklejek / flaga inwestycyjna CVM), PromptPay (zasady BOT / próg VAT THB 1.8M / raportowanie AMLO / ujawnienie cross-border FX), EMVCo (ISO 18245 MCC / acquirer KYC / krajowe FIU przy niezgodności AID), TWINT (FINMA/AMLA / MROS / KIG ochrona konsumenta). Drugi podzbiór (8): Bizum (Bizum Negocios / SEPBLAC / factura / CNMV), PayNow (MAS Payment Services Act / raportowanie STRO / SGQR / PDPA), iDEAL (licencjonowany acquirer / DNB / 13-miesięczny spór PSD2 / CBF organizacje charytatywne / egzekucja ACM), BLIK (Polski Standard Płatności / KNF / raportowanie GIIF / faktura VAT / RODO), Interac (Interac for Business / FINTRAC / PIPEDA / Quebec Bill 96 / oszustwa CAFC), MB WAY (SIBS / Banco de Portugal / UIF / CMVM / GDPR), Swish (Getswish AB / Finansinspektionen / Skatteverket kassaregister / Swish-bedrägerier), Vipps (Vipps MobilePay AS / Finanstilsynet / Økokrim / Bokføringsloven / advarselsliste). Łączy się z wcześniejszymi blokami compliance dla AAMVA, Google/Yelp/TripAdvisor Review, Kupon, Lejek recenzji, App Store, PayPal, Crypto, UPI, SEPA. Łączny zasięg: 26 stron docelowych.
- Pięć kolejnych stron autorytatywnych standardów (N3 batch 2), prawo jazdy AAMVA, aktywacja eSIM (LPA), EMVCo merchant QR, Micro QR / rMQR, ZATCA e-invoice. Hub ma teraz 8 aktywnych stron referencyjnych pokrywających kluczowe specyfikacje.
- Naprawiono dwie regresje: (1) strona główna automatycznie przewijała w dół przy załadowaniu, ponieważ
showCategory()w init wywoływałscrollIntoView({block:"nearest"})na chipie kategorii, zastąpione ręcznym poziomymscrollLeft, więc przewijanie strony nigdy nie jest dotykane. (2) Wyszukiwanie typu "paym" zwracało zero wyników, ponieważ filtr sprawdzał tylko podciągi label + data-type, naprawa DRY ponownie używa tych samych tabel synonimów CAT_SEARCH + TYPE_SEARCH co paleta poleceń. - Ogon N3: nowa /standards/non-qr-2d/ łączona strona referencyjna dla Aztec (ISO/IEC 24778) + PDF417 (ISO/IEC 15438) + Data Matrix (ISO/IEC 16022). Tabela porównawcza obok siebie, matryca obsługi natywnego skanera w iOS Camera / Android / Google Lens / przemysłowych imager / bramkach lotniczych / czytnikach DMV / czytnikach DPM farma, przewodnik wyboru (Aztec dla kart pokładowych, PDF417 dla długiego ASCII na płaskim papierze, Data Matrix dla DPM / farma, QR dla kamer telefonów konsumenckich). Hub standardów ma teraz wszystkie 9 stron live, 0 draft.
- Progresywne ujawnianie formularza AAMVA (N19.3 follow-up): formularz 25-input podzielony na Wymagane (jurysdykcja / licencja / doctype / rodzina / pierwsze imię / DOB), Zalecane collapsed-open (drugie imię + ulica + miasto/stan/kod + daty wydania/wygaśnięcia), Strojenie ekspercie collapsed (płeć/oczy/wzrost + klasa/ograniczenia/poparcia). Dopasowuje wzorzec używany na TOTP, HOTP, Aztec, PDF417, Swiss QR, EMVCo, GS1, SEPA.
- Stan strojenia eksperckiego utrzymuje się między wizytami (N19.3 follow-up): gdy otwierasz sekcję Expert na dowolnym formularzu, otwarty stan jest zapisywany w
localStorage.qrExpertSectionsOpenz kluczem typu. Następnym razem, gdy wybierzesz ten typ, Expert jest już otwarty. Delegowany nasłuchiwacztogglena.field-section[data-level="expert"], bez okablowania per formularz. - Wewnętrzny audyt dostępności (N8): ręczne przejście WCAG 2.2 AA na stronie głównej, /print-size/, nowym hubie /standards/ + 9 stron autorytatywnych i 45 stron docelowych schematów płatności. Zweryfikowano przejście dla celu skip link, focus-visible, etykiet formularzy, nazw przycisków, ról ARIA, kontrastu AAA primary / AA+ muted. Naprawiono pomijanie poziomu nagłówka (trzy
<h4>podnagłówki wewnątrz extra-fields vCard/MECARD awansowane do<h3>dla czystego konspektu). Pełne wyniki opublikowane na /accessibility/. - Publiczny ZIP korpusu (N2 follow-up): /proof/corpus.zip, fixtures w pakiecie JSON + CSV + metodologia + README, ~4 KB, przebudowywany przy każdym wdrożeniu. Floty skanerów mogą teraz pobrać pełny korpus w jednym pliku zamiast klonować repo. Linkowane z /proof/corpus/ z wyróżnionym przyciskiem Pobierz.
- Log atestacji floty skanerów (N2 follow-up): nowy docs/SCANNER_ATTESTATION.md, datowany log per-row ręcznych weryfikacji urządzeń/OS/aplikacji. Zaszczepiony 10 wierszami obejmującymi iPhone 15 Pro na iOS 18.3, Pixel 8 na Android 14, Zebra DS8100, Google Authenticator, 1Password. Rośnie z każdym zweryfikowanym urządzeniem.
- Realizm podglądu w generatorze (N19.6): kompaktowy 4-chipowy przełącznik pod podglądem QR na żywo, Default / Phone / Mono / Low contrast. Stosuje filtry CSS do podglądu (skala dla Phone, skala szarości dla Mono, zmniejszony kontrast dla Low contrast), aby projektanci widzieli, jak QR zachowuje się na różnych podłożach bez opuszczania generatora. Zerowy wpływ na zakodowany payload, pobrania lub kopię do schowka.
- Więcej walidatorów semantycznych (rozszerzenie N19.4): sprawdzenie HOTP secret Base32 + nieujemne-całkowite counter; eSIM SM-DP+ musi być gołym FQDN (bez https://, częsty łamacz provisioning telefonu); eSIM Matching ID odrzuca znaki
$(kolizja z separatorem pola LPA). - Progresywne ujawnianie rozszerzone na UPI i Crypto (rozszerzenie N19.3): UPI amount + note pogrupowane jako Recommended; crypto amount + label pogrupowane jako Recommended. SIP, MMS, PromptPay i Lightning przejrzane i pozostawione płaskie, zbyt mało pól, by skorzystać z disclosure.
- Sweep audytu jakości w SEO, wydajności, bezpieczeństwie, integralności linków i jakości kodu (przejście i18n odroczone). Zapisy
cache.putservice workera teraz biegną wewnątrzevent.waitUntil, więc nie mogą zostać porzucone w trakcie nawigacji; cache podniesiony do v121. Dialog drukowania kart wizytowych przełączony zdocument.writena URLBlob. Handlery kliknięcia Share i card-download zawinięte w try/catch, więc odrzucenia pojawiają się jako toasty zamiast cichych błędów. Wartości magic-number (auto-otwarcie hash karty design, renderowanie klatki GIF, odstęp pobierania dual PNG, revoke print-blob) wyodrębnione do nazwanych stałych. Naprawiono utajony błąd CSS: selektory wejść.card-text-rowdopasowywały tylko[type="text"], ale minifier HTML usuwa domyślny atrybuttype="text", dodanoinput:not([type]), by wejścia BCD tagline + caption zachowały stylowanie w produkcji. Dwie zbędne deklaracje!importantusunięte; hałaśliwe i18nconsole.warnwyciszone. CLAUDE.md zaktualizowany, strony językowe są pre-renderowane dosite/{lang}/, nie serwowane przez przepisywania_redirects.
2026-04-18, Push autorytetu: hub /standards/ + 3 strony standardów, /proof/corpus/, zakończenie Reviewer #6, N19.1 Advanced workflow-first
- Tryb Simple zyskuje subtelną podpowiedź "96 więcej typów w Advanced" pod siatką 8 kafelków. Kliknięcie linku przełącza tryb, więc użytkownicy nie muszą przewijać do góry. Simple pozostaje przy 8 kafelkach; Advanced pozostaje ścieżką odkrywania długiego ogona.
- Lista bullet Pro CTA przepisana, by odzwierciedlać to, co rzeczywiście dostarczone: kody chronione hasłem, zaplanowana aktywacja i wygaśnięcie, analityka heatmap/pogoda/ROI/cohort, publiczne strony statystyk udostępniane, grupy kodów dla dużych portfeli, webhooks + REST API, multi-team i audit log, SSO (SAML/OIDC) + provisioning SCIM. Stare ogólne "Scan analytics / API workflows / Teams" zniknęły.
- Podpowiedź "Save to Pro" pod generatorem teraz nazywa password-gating, zaplanowaną aktywację, analitykę heatmap i ROI oraz publiczne strony statystyk zamiast tylko "scan analytics."
- Progresywne ujawnianie na pole-ciężkich generatorach zaawansowanych (N19.3): TOTP, HOTP, Aztec, PDF417, Swiss QR i EMVCo zwijają swoje gałki eksperckie (algorytm/digits/period, EC level, kolumny/compact, message, MCC/AID) pod sekcją Expert tuning. GS1 Digital Link grupuje AI 17/10/21 jako Recommended; SEPA oddziela referencję (Recommended) od BIC (Expert tuning). Zwinięte podsumowania Expert pokazują pigułkę "expert", więc power users zauważają dodatkowe gałki bez klikania.
- Zapisane profile (N19.8): nazwij i zapisz wartości pól dowolnego generatora zaawansowanego do localStorage, listuj je w panelu Saved profiles nad legendą zgodności, ładuj jednym kliknięciem lub przez paletę poleceń (Cmd/Ctrl+K). Storage tylko po stronie klienta; nic nie opuszcza przeglądarki.
- Autorytet produkcji druku (N15): /print-size/ niesie teraz przewodnik podłoża (8 podłoży × kara rozmiaru × ECC), reguły palety bezpiecznej dla CMYK z adnotacjami CMYK/RGB-only na poziomie katalogu, reguły outdoor/signage (UV fade, zachowanie kamery w niskich temperaturach, oblique kąty skanowania), 4-checkowy drukowalny protokół QA i definicje stopni preflight w prostym języku ("D = zawiedzie na połyskliwych signage poniżej 3 m").
- Zabezpieczenia compliance (N16): nowe bloki "Compliance checklist" + "Kiedy nie używać" na pięciu stronach docelowych zgłoszonych przez recenzenta, App Store (Apple 5.2 / Play policy / dystrybucja TestFlight), PayPal (AUP / nadużycie F&F / 1099-K / klasyfikacja MSB), Bitcoin & Crypto (FATF Travel Rule / rejestracja FinCEN/FCA / ekspozycja Howey-test / OFAC), UPI (NPCI circular / GST / oszustwa antynakładkowe / SEBI w sprawie inwestycyjnych QR), SEPA (zgodność EPC069-12 / PSD2 prawa zwrotu / ostrzeżenie no-recurring-mandate). Dołączają do istniejących bloków compliance na AAMVA, Google / Yelp / TripAdvisor Review, Kupon, Lejek recenzji.
- Ostatnie typy w palecie poleceń (N19.7): ostatnie 8 typów, które wybrałeś, pojawia się jako pierwsze, gdy Cmd/Ctrl+K otwiera się z pustym zapytaniem; przy częściowym zapytaniu ostatnie typy dostają mały bonus rankingowy, więc "tot" niezawodnie skacze do najczęściej używanego flow OTP. Oznaczone też chipem kategorii "Recent", więc bonus jest widoczny, nie magiczny. Śledzone tylko w localStorage.
- Polerowanie trybu Simple (N6): Simple ukrywa teraz także panel Saved profiles (nie koncepcja dla początkującego) i zakładkę Batch. Już ukryte elementy bez zmian (wyszukiwanie typu, presety branżowe, legenda kompatybilności, zakładki kategorii, chipy kompatybilności).
- Pasek zaufania czterech filarów (N7): pasek twierdzeń u góry strony zwinięty z 5 do 4 elementów, każdy wyraźnie nosi etykietę swojego filaru, "Naprawdę bezpłatne, bez rejestracji, bez paywalls", "Privacy-first, 0 wychodzących żądań, weryfikuj na żywo", "Production-safe, kompatybilność testowana kwiecień 2026", "Bez vendor lock-in, statyczna kopia QR, eksportuj zawsze". Link Comparison-updated usunięty z paska (to sygnał wiarygodności, nie filar), ale nadal w nawigacji + stopce.
- Stanowcze callouts "Użyj tego jeśli / Nie używaj" (N19.11) na górze pole-ciężkich formularzy zaawansowanych, Data Matrix, Aztec, PDF417, TOTP, HOTP, eSIM, GS1. Z pomarańczowym akcentem, dwie klauzule, przed jakimkolwiek wprowadzeniem pól. Zastępuje wzorzec, w którym wyjaśniający tekst siedział na dole, a użytkownicy czytali go dopiero po skończeniu pisania.
- Banner możliwości (N19.9) na panelu Style dla symbologii innych niż QR, wyraźny chip + tytuł ("Bez stylowania, tylko zwykły barcode") + opis, zastępując starą jednoakapitową podpowiedź czymś łatwym do oka.
- Walidacja semantyczna (N19.4): walidator TOTP Base32 secret, sprawdzenie Swiss QR IBAN prefiks CH/LI + długość 21-znaków, suma kontrolna SEPA IBAN mod-97 (łapie błędnie wpisane cyfry), i międzypolowe ostrzeżenie WiFi Enterprise, gdy wybrane jest EAP, ale tożsamość jest pusta. Inline, nieblokująca, ponownie używa istniejącego rejestru VALIDATION_RULES.
- QR Lab teraz jedno kliknięcie od Pobierz (N5), chip z dashed-border ("Test before you print in QR Lab →") siedzi inline z przyciskami pobierania, więc weryfikacja jest widoczna w punkcie eksportu.
- Advanced otwiera się task-first (N19.1): pasek kategorii jest teraz zorganizowany po tym, co robisz, a nie jaką to symbologią. Dziewięć kubełków workflow, Codzienne udostępnianie, Wydarzenia & miejsca, Media & pliki, Marketing & recenzje, WiFi & telekomunikacja, Płatności & bankowość, Retail & GS1, Boarding & ID, Auth & dev, zastępuje starą taksonomię symbologii (Codzienne / Biznes / Płatności / Tożsamość / Bezpieczeństwo / Industrial / Advanced Standards). Wszystkie 105 przycisków typów przemapowane; siatka typów stopki przegrupowana do dopasowania.
- Push autorytetu (N3): nowy hub /standards/ z ośmioma pełnymi stronami referencyjnymi, GS1 Digital Link (Sunrise 2027, walidator GTIN check-digit na żywo), TOTP & HOTP (RFC 6238 / 4226, walidator entropii Base32 na żywo, kompatybilność authenticator), Swiss QR-bill (SIX IG v2.3, walidator IBAN CH/LI na żywo z wykrywaniem QR-IBAN), prawo jazdy AAMVA (CDS v10, tabela kodów elementów, tabela IIN, ramowanie lawful-use), aktywacja eSIM (LPA) (GSMA SGP.22, kompatybilność iOS 17.4+ / Android 13+), EMVCo merchant QR (struktura MPM / CPM, regionalne pochodne PIX/UPI/PromptPay/SGQR/DuitNow, tabela MCC), Micro QR & rMQR (ISO/IEC 18004 Annex M + ISO/IEC 23941, wykresy pojemności, kompatybilność skanerów specjalistycznych) i ZATCA e-invoice (Saudi FATOORA, tagi TLV 01–09, Phase 1 vs Phase 2). Każda strona: link spec + kanoniczne wektory testowe + walidator na żywo gdzie ma to sens + pułapki + kompatybilność skanerów + datowane next-review. Pierwszy krok ku celowi autorytetu encyklopedycznego.
- Szkielet publicznego korpusu testowego (N2): nowa strona /proof/corpus/ dokumentująca metodologię, której każdy może użyć, by zaudytować twierdzenia o kompatybilności skanerów, pobierz fixtures, regeneruj QR, skanuj własną flotą, zgłaszaj rozbieżności. Wykuratowana 18-rzędowa tabela oczekiwanych wyników skanowania na iOS Camera, Android Camera i pro skanerach. Linkuje /test-vectors/ (developer JSON) i /standards/ jako warstwę autorytetu powyżej.
- Wcześniejsze elementy Reviewer #6 dostarczone tego dnia w poprzednich commitach: jobs-first siatka kafelków (N14), zdanie marki "The most trustworthy QR tool on the internet" (N17), paleta poleceń (N19.2), eksperckie presety (N19.5), inspektor payload (N19.10), sweep formatu kanonicznego <title> (N20).
- Backlog tłumaczeń: copy N14 i N17 jest w 25 językach; wszystko inne z dzisiejszego zakończenia Reviewer #6 (N19.3 / N19.4 / N19.7 / N19.8 / N19.9 / N19.11 / N5 / N6 / N7 / N15 / N16 / Pro SSO/SCIM) jest tylko po angielsku na razie i wraca do angielskiego w innych locale do następnego przejścia tłumaczeń.
2026-04-17, Keep-Alive na żywo, Pro roadmap + strony wsparcia, poprawki audytu webhooków
- Poziom Keep-Alive na żywo na Pro: $4/mies, $36/rok lub $240 Decade (10-letnia przedpłata, $2/mies efektywnie). Zachowuje istniejące kody z 30-dniowym cooldown edycji celu; bez nowych kodów, bez seats, bez API. Migracja 007, trzy produkty Stripe, ścieżka webhook dla jednorazowej płatności Decade, bramki planu w dashboard/codes/edit. Cofnięte banery "Ships Q3 2026" na /compare/ i /no-lock-in/.
- Nowa strona pod pro.qr.abundera.ai/roadmap/: co dostarczone, zobowiązania Q3/Q4 z kryteriami kill, wyraźna lista rzeczy, których nie budujemy.
- Nowa strona pod pro.qr.abundera.ai/support/: cele czasów odpowiedzi per-tier, adres ujawniania bezpieczeństwa, scope.
- Poprawki Stripe webhook: wyścig idempotencji (mógł połknąć ponowioną płatność), dedup przez SELECT przed obsługą, INSERT przy sukcesie. Handler płatności Decade rzuca przy brakującym/nieznanym price_id lub niezgodnym tier zamiast po cichu upuszczać.
DEFAULT_SEAT_LIMITundef w team-invite accept. Tolerancja sygnatury 60s → 300s.incomplete_expiredmapuje natrialing(byłexpired). - Docs:
ABUNDERA_JWT_AUDIENCESudokumentowany jako wymagany; schematPLAN_PRICE_MAPwdocs/INTEGRATIONS.md; usunięte nieużywane referencje doABUNDERA_SERVICE_SECRET. - Testy: 70 zaliczających. Dodane 8 dla predykatów Keep-Alive i 30-dniowego cooldown.
2026-04-16, Uruchomienie Pro, przeróbka drabinki cenowej, externalne-review followups
- Portal Pro na żywo pod pro.qr.abundera.ai.
- Drabinka cenowa (miesięcznie / billed-annually na miesiąc): Solo $12/$9, Business $39/$29, Team $129/$99, Agency $449/$349, Enterprise $1,800/$1,500. Roczne jest domyślnym wyborem na siatce cen.
- Wyraźne miesięczne limity skanów (50K / 250K / 1M / 4M / 25M) zastępują "unlimited". Przekroczenie limitu nie psuje przekierowań; mierzymy nadwyżkę po stawce list tieru ($0.06–$0.18 na 1K skanów).
- Każdy tier ma wyraźną liczbę kodów (500 / 2,500 / 15K / 75K / 500K), bez fine print "unlimited*".
- 13 stron docelowych płatności dodanych: Apple Wallet, Google Wallet, EPC Girocode, BLIK, Interac, MB WAY, GCash, Maya, Kakao Pay, Naver Pay, LINE Pay, iDEAL, Boleto. Liczba typów 91 → 104; sitemap teraz 3,224 URLs.
- Scan-preflight rozszerzony z 4 ogólnych warunków do 8 scenariuszy job-specific (naklejka menu, plakat okienny, smycz, etykieta półki, etykieta magazynowa, signage outdoor, opakowanie, wizytówka). Klasa C/D/F pokazuje pre-download modal.
- Macierz cen /compare/ podzielona na sześć grup capacity-matched. Wpisy konkurencji dodane dla Bitly, Flowcode, Uniqode, QR Code Chimp, QRTIGER, każdy datowany i oznaczony do miesięcznej re-weryfikacji. Per-code miesięczny koszt pokazany w każdym wierszu.
- Sprawdzenie count-drift w skrypcie pre-deploy: skanuje wszystkie wygenerowane strony pod
site/dla zakodowanych liczników typów. Drift 91/104 na /compare/ wystąpił, bo stare sprawdzenie obserwowało tylko trzy strony. - Framing strony Pro: "Free is for keeping. Pro is for changing." przeniesiony przez /no-lock-in/, /static-vs-dynamic/ i Pro CTA strony głównej.
- Produkty Stripe utworzone przez idempotentny skrypt
stripe-setup.py(Solo + Team podniesione do rev 2 dla nowych kwot).PLAN_PRICE_MAPtrzyma stare i nowe price IDs, więc istniejący subskrybenci pozostają zmapowani. - Inne: pasek detail kompatybilności nad polami generatora, pasek zaufania strony głównej, freshness stamp na każdej stronie, szkielet strony /accessibility/, /for/ presety branżowe (8), podpowiedź Wizard/QR Lab discoverability, audyt liczb (120 → 336 ikon, 24 → 50 BCD presetów), skrub języka repo (repo jest prywatne; "Open source generator code" → "Client-side code auditable in your browser"), OG image przegenerowany z prawidłowym iCalendar event QR.
2026-04-15, Simple/Advanced, /compare/, Save-to-Pro
- Przełącznik Simple / Advanced na stronie głównej. Simple wykuratuje 8 codziennych typów (URL, WiFi, vCard, Email, Phone, SMS, Event, Text); Advanced przywraca pełne 104. Tryb jest sticky w
localStorage; strony docelowe dla typów spoza Simple auto-przełączają. - Macierz konkurencji /compare/ dostarczona: feature-by-feature przeciwko QR Code Generator, QRCode Monkey i Uniqode. Datowana, re-recenzowana miesięcznie.
- Przycisk "Save to Pro" na bezpłatnej stronie: jednoklikowe promowanie wygenerowanego kodu do portalu Pro. Stan round-trips przez URL hash; niezalogowani użytkownicy lądują z powrotem na generatorze ze swoją pracą zachowaną.
- Strzałki przewijania zakładek kategorii na desktop; smooth-scroll na mobile.
- Przywracanie historii auto-przełącza na Advanced, gdy typ zapisanego kodu nie jest dostępny w trybie Simple.
- Copy Pro CTA złagodzone; historia anti-hostage (statyczna kopia QR, 90-dniowa łaska, przenośność domeny) wysunięta do przodu.
2026-04-14, Portal Pro online, 3 nowe typy, naprawa autofill
- Portal Pro (
pro.qr.abundera.ai) online end-to-end. - Trzy nowe typy bezpłatnej strony: M-PESA Kenya (EMVCo MPM), Video Meeting (skróty Zoom/Meet/Teams/Webex), Coupon/Promo Code.
- Typ GS1 Digital Link wspiera teraz wszystkie 12 Sunrise-2027-mandatowanych Application Identifiers.
- Nowe strony SEO:
/static-vs-dynamic/,/no-lock-in/(kontraktowo: 90-dniowa łaska, jednoklikowy eksport, 30-dniowy delete GDPR, statyczna kopia QR). - Naprawa autofill (szósta próba): per-typ bloki pól to prawdziwe elementy
<form>z własnymi tokenamiautocomplete; nieaktywne formularze dostajądisplay: none, więc Chrome nie flaguje pól off-screen. Pionowe grupowanie vCard/Address/Contact/WiFi-Enterprise działa teraz przez Chrome, Safari, Firefox. Harness Playwright na 0 naruszeniach. - Lejek recenzji: dropdown platform (Google/Yelp/TripAdvisor) z per-platformowym placeholder copy.
- Wizard: 8 zepsutych referencji result-slug naprawionych.
- Header/footer ujednolicony przez współdzielone partials; strony narzędzi (Wizard, QR Lab, Test Vectors) przeniesione do tego samego systemu szablonów.
- Pre-deploy check: walidacja linków wewnętrznych + raw-English
showToast()guard. - Naprawy BCD: stabilność pionowego layoutu, regresja UI strony docelowej, etykiety RFC-link, artefakt watermark.
- HTML wygenerowanej strony docelowej nie jest już git-tracked (nadal wdrażany; git śledzi szablon i generator).
2026-04-13, Parytet 25 języków, redesign header/footer, harness Playwright
- 6,660 kluczy English-fallback przetłumaczonych w 25 plikach językowych. Strony docelowe nie-angielskie nie wracają już do ciągów angielskich. Pipeline tłumaczenia przerobiony na walidator/planner.
- i18n rozszerzone na strony narzędzi: Wizard, QR Lab i Test Vectors mają teraz 25 wariantów językowych, z tagami hreflang i wpisami sitemap.
- Harness round-trip Playwright: generuje kod dla każdego typu w każdym języku, dekoduje canvas, sprawdza pola. 0 naruszeń.
- Redesign header/footer: smukły header, 3-kolumnowa stopka pasująca do wzorca sign.abundera.ai. Mobilny hamburger drawer pokazuje teraz elementy nav po otwarciu (wcześniej zepsute).
- Kliknięcie podgląd QR → zoom lightbox. Etykieta pokazuje nazwę typu + pierwsze wprowadzenie (wcześniej pokazywało surowy payload).
- First-pass naprawa autofill (wylądowała poprawnie 2026-04-14).
- Wyszukiwanie typu pojawia się dla typów zaawansowanych; zamyka się przy wyborze; puste zakładki kategorii ukryte w trybie Popular; przywracanie historii przełącza typ inline zamiast przekierowywać.
2026-04-12, Parytet 26 języków, 13 nowych typów payload, 3 kody kreskowe 2D inne niż QR
- Pełny parytet 26 języków: każdy angielski klucz istnieje w każdym pliku językowym (1,302 klucze × 25 langs). 5,533 wpisów dodanych w 4 przejściach (proper nouns, krótkie etykiety, etykiety pól formularzy, toasts, podpowiedzi). 30 podpowiedzi brand-payment pozostaje po angielsku z założenia, URLs i nazwy marek są autorytatywne po angielsku.
- Dedupe: 113 przestarzałych zduplikowanych bloków kluczy usuniętych w 19 plikach lang (drift z wcześniejszych rebases).
- Naprawa nagłówka info-page: blog/about/privacy/changelog używały klas
.brand/.header-inner/.brand-textbez dołączonego CSS. Przełączono na te same znaczniki.logoco główna aplikacja. - 4 standardowe typy URI: HOTP (RFC 4226), eSIM (GSMA SGP.22 LPA), SIP/SIPS (RFC 3261), MMS/MMSTO.
- WiFi WPA2/WPA3-Enterprise: rozszerza format
WIFI:o metodę EAP, Phase-2 auth, identity, anonymous identity. - 6 regionalnych typów płatności: Alipay, WeChat Pay, Swish (SE), Vipps (NO), Mercado Pago (LatAm), Payconiq (Benelux).
- 3 kody 2D inne niż QR: Data Matrix (ISO 16022), Aztec (ISO 24778), PDF417 (ISO 15438). bwip-js (~1 MB) lazy-loaded tylko gdy wybrano jeden z tych typów.
- Sekcja showcase 26 języków dodana do strony głównej z linkami w piśmie natywnym.
- Skrypt audytu pre-deploy: synchronizacja
BATCH_VALID_TYPES+ raw-EnglishshowToast()guard. - Stopka, strony docelowe i klucze i18n dodane dla wszystkich 13 nowych typów (English source).
2026-04-11, BCD photo URL fetch, preview-sticky, presety rozszerzalne
- BCD: pole photo URL teraz pobiera i inlineuje obrazy zdalne jako data URLs, więc canvas eksportu nie jest skażony cross-origin loadami (eksport PDF/PNG działa teraz na hostach bez CORS).
- Layout BCD desktop: panel podglądu jest teraz
position: sticky, więc gdy użytkownik rozwija każdą sekcję, kontrolki przewijają się swobodnie, nie tracąc widoczności podglądu na żywo. (Wcześniej rozwinięcie Content + Layout + Options popychało Show-Fields off-screen.) - Siatka presetów BCD jest teraz rozszerzalna, pokazuje 12 layoutów początkowo z toggle "Show all layouts", lustrzejąc UX wyboru ikon.
- Wprowadzenia tagline + QR-caption przeskinowane: stacked label + full-width input (był ciasny 150px sidecar).
- Badge Scanability podniesiony z
bottom: -24pxdo-18px, więc przestaje zakrywać przycisk copy. - Instrukcje batch CSV wymieniają teraz Google Sheets, Excel, Numbers wyraźnie.
2026-04-08, Biblioteka ikon vertical-specific
- 24 nowe ikony center-logo (96 → 120) celujące w healthcare, food & bev, tech, finance verticals.
- 10 nowych presetów layout BCD (40 → 50): Concrete, Honey, Indigo, Luxe, Midnight II, Ocean II, Slate, Verdant, Wine, Candy.
- Bug strategii cache-buster: parametry
?v=napage-init.js+lang-redirect.jsbrakowało na stronach docelowych, powodując stale module loads po wdrożeniach. Naprawione.
2026-04-04, BCD gradient backgrounds + tył karty + 12 nowych presetów
- BCD: 12 nowych presetów (Dark Mode, Pastel, Ocean, Cherry, Slate, Emerald, Amber, Mono, Rose, Midnight, Sand, Carbon). 36 presetów łącznie.
- User-controlled gradient backgrounds z drugim selektorem kolorów.
- Renderowanie tyłu karty z firmą + tagline + tekstem CTA.
- Rząd ikon społecznościowych (LinkedIn / X / Instagram).
- Renderowanie bloku adresu z pól vCard.
- Wizualne miniaturki presetów, każdy przycisk presetu renderuje teraz mini canvas zamiast placeholder.
2026-03-29, Przegląd BCD + eksport 600 DPI
- Business Card Designer: zwijalne sekcje akordeonu, sticky mobile preview, sticky export footer.
- Wprowadzenia kolorów hex z bidirectional color-picker sync, swatches palety kolorów.
- 4 kształty zdjęć (koło, kwadrat, zaokrąglony, sześciokąt).
- Bumpnięto rozdzielczość eksportu do 600 DPI dla ostrego wydruku.
- Menu kebab: Eksportuj szablon, Importuj szablon, Surprise me, Share card, Print sheet (10-up US Letter + A4).
- Przycinanie zdjęcia wymuszone do kwadratu. Minimum-data guard przed otwarciem designera.
- Presety BCD bumped: 8 nowych wizualnie odmiennych (Neon, Art Deco, Sunset, Forest, Brutalist, Kraft, Nordic, Retro 80s). 24 presety łącznie.
2026-03-22, 20 nowych typów QR + Link-in-Bio + porównania konkurencji
- 20 nowych typów QR (35 → 55): YouTube, Apple Music, Google Review, Yelp Review, TripAdvisor, Venmo, Cash App, Support/Tip Jar (Ko-fi/Patreon/BMAC/Liberapay), TWINT, Bizum, PayNow (SG), PayID (AU), ZATCA (SA), BIP-21 Bitcoin + Lightning, webcal://, JPQR (JP), HKFPS (HK), DuitNow (MY), MoMo (VN), Link-in-Bio.
- Link-in-Bio renderuje całą stronę bio z hashu URL kodu QR, bez backendu, bez konta, bez śledzenia.
- Widget /embed/ iframe (postMessage API dla integracji rodzica).
- Strony porównań /vs/ konkurencji (warianty 26-językowe).
- @abundera/qr pakiet npm + CLI z 25 enkoderami typów.
2026-03-15, 96 ikon center-logo + 5 nowych języków
- 96 ikon center-logo (12 → 96): crypto, communication, media, utility, commerce, transport, nature, food, people, events, 12 smiley faces, 18 social network glifów (X, Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Snapchat, Discord, Telegram, GitHub, Threads, Bluesky, Mastodon, Twitch, Signal, Medium). Rozszerzalne przez toggle <details>.
- 5 nowych języków (21 → 26): szwedzki, czeski, duński, norweski, fiński. Po 1,106 kluczy z natywnymi tłumaczeniami.
- Eksport EPS (embedded-JPEG Level 2 PostScript, ASCII85-encoded) dla print-shop workflow (Illustrator, InDesign, CorelDRAW).
- Animowany eksport GIF (gif.js, 8-frame rainbow).
- BCD SVG export, BCD JPG export.
2026-03-08, Audyt platformy + sweep dostępności
Sprint bug-bash: 3 KRYTYCZNE + 7 WYSOKICH + 10 ŚREDNICH problemów naprawionych.
- Naruszenie inline-script CSP na wszystkich 55 stronach docelowych, przeniesione do atrybutu body
data-qr-preselect. - Bug stale-cache service worker, query-stripped keys → full-URL + stale-while-revalidate.
- Form-type desync przy klikaniu BCD pill na stronie docelowej innej niż vCard.
- Widoczność background image (suwak opacity, modules at 90% alpha, crop modal routing).
- Crop modal mobile overflow.
- Wheel-zoom hijacking mouse scroll (usunięte całkowicie).
- Avatar IP leak złagodzony (referrerpolicy + no-referrer header).
- WiFi batch open-network fix, MeCard batch field parity, walidacja TOTP base32.
- WCAG 2.5.8 cele dotykowe (44×44 min na coarse pointer).
- Sweep aria-hidden na 87 dekoracyjnych SVG.
- Respekt prefers-reduced-motion.
- Toast aria-live, focus-visible ring, crop keyboard navigation, overflow menu Home/End keys.
- Optymalizacja preload czcionki.
2026-03-01, 15 typów opartych na standardach + walidator skanowalności
- 15 nowych typów QR: TOTP/2FA, Swiss QR-bill (z obowiązkowym czerwonym swiss cross overlay), PIX (Brazylia), PromptPay (Tajlandia), EMVCo generic merchant, Lightning BOLT11, klucz publiczny SSH, klucz publiczny OpenPGP, konfiguracja WireGuard, GS1 Digital Link, Spotify, Fediverse (Mastodon/Bluesky/Nostr/Matrix/Threads), Geo URI, Magnet, pełny iCalendar.
- Walidator skanowalności, uruchamia jsQR przez wyrenderowany canvas i ostrzega o niepowodzeniach dekodowania.
- Drukowalny URL fallback, toggle dodaje docelowy URL jako zwykły tekst pod QR.
- jsQR lazy-loaded (oszczędza 262 KB eager payload).
2026-02-22, Edytor gradientu wielopunktowego + per-eye colors
- Edytor gradientu wielopunktowego (do 5 kolorów).
- Niezależny per-eye kolor inner/outer.
- Tryb Background image QR (suwak opacity, EC=H auto-forced).
- Pinch-zoom na canvas podglądu.
- Web Share API dla kodów QR i wizytówek.
- Format eksportu WebP.
- Cofnij/Ponów (Ctrl/Cmd-Z, bufor 50-step).
- Przycisk losowego szablonu ("Surprise me").
2026-02-15, Strony prywatności & bezpieczeństwa + utwardzenie i18n
- 4 nowe strony wiarygodności: /privacy/, /terms/, /security/, /about/, w wszystkich 21 językach.
- /.well-known/security.txt opublikowany.
- 29 zakodowanych na stałe ciągów angielskich zastąpionych wywołaniami
qrT(); ~100 nowych kluczy i18n przetłumaczonych na wszystkie 21 języków. - Inline scripts externalized, CSP utwardzony (unsafe-inline porzucony).
2026-02-08, Dostępność modalu + zarządzanie fokusem
- Pułapka fokusu na wszystkich 3 modalach (crop, BCD, custom dialogs).
- Polerowanie nawigacji klawiaturą w menu BCD overflow, language switcher i type selector.
- Krytyczne poprawki błędów: obramowania ramek SVG renderowane o jeden piksel off, podatność XSS w podglądzie batch zoom, błąd
btoa()Latin1 przy kliknięciu logo presetu.
2026-02-01, Pierwsze uruchomienie
- Uruchomiono Abundera QR z 20 typami QR, 40 szablonami, batch CSV generation (500 kodów), Business Card Designer (300 DPI), 20 językami, 420 statycznymi stronami docelowymi.
- Stanowisko privacy-first: 100% client-side, bez kont, bez śledzenia, bez kodów dynamic-redirect.