Nhật ký thay đổi
Mọi bản phát hành, mọi tính năng, mọi bản sửa lỗi, trong một nhật ký có thể cuộn.
2026-04-26, Tuân thủ đầy đủ chuẩn render ISO/AIM/GS1 trên mọi loại mã
- Đã rà soát mọi mã QR / 2D / 1D so với chuẩn quản trị tương ứng.
includetextcủa bwip-js's mặc định là false cho mọi bcid, nên EAN/UPC/ITF-14 đã được phát hành mà không có dải văn bản con người đọc được mà ISO 15420 §5.1.2 + GS1 §5.4.4 yêu cầu. Đặtincludetext: true+guardwhitespace: truecho toàn bộ họ EAN/UPC, cộng thêmincludetext: truecho ITF-14, Code 128, Code 39, Code 93, Codabar, VIN. - Vùng yên tĩnh của EAN-13 nay không đối xứng theo ISO 15420 Phụ lục A (ở scale=4:
paddingleft: 44= 11 mô-đun,paddingright: 28= 7 mô-đun). EAN-8 / UPC-A / UPC-E dùng phong bì đối xứng do chính spec quy định. PDF417 + bằng lái AAMVA nhận vùng yên tĩnh 2 mô-đun theo ISO 15438 §5.5; Data Matrix nhận 1 mô-đun theo ISO 16022; Aztec nhận 1 mô-đun khuyến nghị (ISO 24778 cho phép 0 nhưng làm hỏng các máy quét chạm sát viền). QUIET_ZONE_MODULEScủa QR tăng từ 2 → 4, đúng spec đầy đủ ISO/IEC 18004 §6.3.7. Lối tắt 2 mô-đun là một sự thỏa hiệp của ngành, gây trượt nhận diện tiền tố GS1 Digital Link trên một số máy quét laser công nghiệp. Micro QR + rMQR nay cũng phát hành với vùng yên tĩnh 2 mô-đun (qreanchỉ xuất lưới trần, nên ta thêm thủ công trongrenderMicroQRResult).- Khóa mức ECC: Aztec ở 23% (mặc định ISO 24778), PDF417 ở mức 5 (mức tối thiểu GS1 cho vận tải và logistics). Khóa lại để chống trôi giá trị mặc định của bwip-js trong tương lai.
- Trang chuẩn mực mới: /standards/barcode-rendering/. Tham chiếu theo từng symbology, bao gồm vùng yên tĩnh, HRI, ECC và chữ số kiểm tra cho cả 17 loại, kèm liên kết nguồn gốc cho từng chuẩn ISO/AIM/GS1 được trích dẫn.
2026-04-26, Siết chặt cổng triển khai staging-first
- Triển khai production cho các site có staging giờ yêu cầu lần triển khai staging gần nhất phải đúng commit hiện tại (working tree sạch ở cả hai phía). Cửa sổ 24 giờ của cổng trước đây cho phép các triển khai production không liên quan cưỡi lên lịch sử staging cũ. Theo dõi bằng SHA, fail-closed, lệnh ghi đè vẫn là
CF_DEPLOY_SKIP_STAGING_FIRST=1. - Kiểm tra trước trong
cf-deploy.pychoCLOUDFLARE_API_TOKEN, fail nhanh kèm gợi ýsource ~/.envrcthay vì để wrangler trả về lỗi khó hiểu "non-interactive environment". - Bộ kiểm tra nội dung sau triển khai ở mỗi lần deploy: tải URL trực tiếp và xác nhận cache-buster của nó khớp với cái vừa được đóng dấu vào
dist/. Bắt được lớp lỗi "sai CNAME" / "edge đang phục vụ cache cũ" / "sai branch" mà kiểm tra sức khỏe 200-OK sẽ âm thầm bỏ qua.
2026-04-25, Cải tổ UX di động: tiêu đề xem trước cố định, tấm dưới xem trước, nút Tải xuống cố định
- Tiêu đề xem trước cố định ở đầu trang trên điện thoại (≤768px). Luôn hiển thị hình thu nhỏ trực tiếp của mã QR cùng trạng thái một dòng, "Điền vào biểu mẫu bên dưới" khi chờ, "Mã QR của bạn đã sẵn sàng · Chạm để tải xuống" khi mã đã được kết xuất. Đập một nhịp khi mã QR hợp lệ lần đầu để người dùng nhận ra. Giải quyết vấn đề lâu nay rằng khách truy cập di động không biết kết quả đã được kết xuất bên dưới nếp gấp.
- Chạm vào thanh xem trước (hoặc nút Tải xuống cố định mới ở dưới) sẽ mở phần xem trước dưới dạng tấm dưới, các nút tải xuống chiều rộng đầy đủ xếp dọc, đóng bằng vuốt xuống hoặc chạm vào nền, đệm vùng an toàn cho chỉ báo trang chủ iOS.
- Xử lý bàn phím ảo: bộ lắng nghe
visualViewportđánh dấubody.kb-openkhi bàn phím xuất hiện, thanh xem trước thu lại thành một viên thuốc mỏng, và các trường được lấy nét cuộn vào giữa để bàn phím không bao giờ che mất nội dung người dùng đang nhập. - Quét mục tiêu chạm ở ≤640px: ô chọn loại tăng từ 14×8 / 0.78rem lên 16×10 / 0.82rem và chiều cao tối thiểu 56px, tab bảng và nút chính tối thiểu 44px, các nút xuất trong tấm xếp đầy chiều rộng với tối thiểu 48px.
- Thẻ meta viewport được bổ sung
interactive-widget=resizes-content, và hai quy tắc100vhđược chuyển sang100dvhđể bố cục dự đoán được trên các trình duyệt di động có thanh công cụ động. - FAB cũ cuộn-tới-xem-trước đã bị xóa, thanh xem trước và CTA cố định bao quát cùng nhiệm vụ một cách trực tiếp hơn. Bộ nhớ đệm service worker được nâng lên v132. Các chuỗi mới được dịch sang tất cả 25 ngôn ngữ.
- Vệ sinh CSS: 203 khai báo space đơn giá trị trong
style.cssđược codemod chuyển sang token--space-N. Thuần refactor, không thay đổi giao diện. - Trần inline-style 89 → 85: bốn thuộc tính
style="text-transform:uppercase"trên các input AAMVA / Code 39 / Code 93 / VIN được thay bằng class sẵn có.input-uppercase.
2026-04-19, Sweep tuân thủ N16 (45 trang), N3 lô 2, sửa hồi quy, đuôi N3, công khai AAMVA, lưu trạng thái Expert, audit a11y
- Sweep tuân thủ N16 đầy đủ: cả 34 trang đích về phương án thanh toán nay mang khối compliance-checklist + "khi không nên dùng cái này". Lượt thứ tư (19 trang) bao quát phần còn lại: Alipay + WeChat Pay (PBoC + SAFE), Boleto (BACEN + FEBRABAN), Mercado Pago (ma trận cơ quan quản lý bảy quốc gia), Payconiq (NBB + PSD2), EPC/Girocode (EPC069-12 + ZAG), Apple Wallet + Google Wallet (developer-program + FTC Endorsement + GDPR location), Kakao Pay + Naver Pay + LINE Pay (FSC Hàn + FSA Nhật + FSC Đài Loan + 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). Cùng với ba lượt trước (AAMVA / trang Review / Coupon / Review Funnel / 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), đó là 45 trang đích bị chặn vì compliance, mọi phương án thanh toán trên trang nay đều có tham chiếu cơ quan quản lý địa phương, quy tắc phân loại merchant, nghĩa vụ thuế / hóa đơn, khung bảo vệ người tiêu dùng, và một rào cản "không chào mời đầu tư" trỏ về cơ quan quản lý chứng khoán đúng. Lô con đầu (7): Venmo (AUP / lạm dụng F&F / 1099-K / báo cáo Early Warning), Cash App (Cash for Business / mặt Bitcoin & Đầu tư bị quản lý / Regulation E / cảnh báo gian lận CFPB), Swiss QR-bill (SIX v2.3 / quy tắc QR-IBAN / MWSTG / lưu trữ 10 năm theo OR Art. 958f), PIX (BACEN Resolution 103/2021 / PJ vs PF / cửa sổ hoàn tiền MED / gian lận dán đè sticker / cờ đầu tư CVM), PromptPay (quy tắc BOT / ngưỡng VAT 1,8M THB / báo cáo AMLO / công khai FX xuyên biên giới), EMVCo (ISO 18245 MCC / KYC bên acquirer / FIU quốc gia khi sai AID), TWINT (FINMA/AMLA / MROS / bảo vệ người tiêu dùng KIG). Lô con thứ hai (8): Bizum (Bizum Negocios / SEPBLAC / factura / CNMV), PayNow (MAS Payment Services Act / báo cáo STRO / SGQR / PDPA), iDEAL (acquirer được cấp phép / DNB / tranh chấp PSD2 13 tháng / CBF từ thiện / thực thi ACM), BLIK (Polski Standard Płatności / KNF / báo cáo GIIF / faktura VAT / RODO), Interac (Interac for Business / FINTRAC / PIPEDA / Quebec Bill 96 / gian lận 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). Cùng với các khối compliance đã có sẵn cho AAMVA, Google/Yelp/TripAdvisor Review, Coupon, Review Funnel, App Store, PayPal, Crypto, UPI, SEPA. Tổng độ phủ giờ: 26 trang đích.
- Năm trang authority chuẩn mới (N3 lô 2), bằng lái AAMVA, kích hoạt eSIM (LPA), EMVCo merchant QR, Micro QR / rMQR, ZATCA e-invoice. Hub giờ có 8 trang tham chiếu trực tiếp bao quát các spec cốt lõi.
- Sửa hai hồi quy: (1) trang chủ tự cuộn xuống khi tải vì
showCategory()init gọiscrollIntoView({block:"nearest"})trên category chip, thay bằngscrollLeftngang thủ công nên cuộn trang không bao giờ bị ảnh hưởng. (2) Tìm kiếm loại với "paym" trả về 0 kết quả vì bộ lọc chỉ kiểm tra label + chuỗi con data-type, sửa DRY giờ tái dùng cùng bảng đồng nghĩa CAT_SEARCH + TYPE_SEARCH mà command palette dùng. - Đuôi N3: trang tham chiếu kết hợp mới /standards/non-qr-2d/ cho Aztec (ISO/IEC 24778) + PDF417 (ISO/IEC 15438) + Data Matrix (ISO/IEC 16022). Bảng so sánh kề bên, ma trận hỗ trợ scanner gốc trên iOS Camera / Android / Google Lens / imager công nghiệp / cổng hàng không / đầu đọc DMV / đầu đọc DPM dược, hướng dẫn chọn đúng (Aztec cho boarding pass, PDF417 cho ASCII dài trên giấy, Data Matrix cho DPM / pharma, QR cho camera điện thoại). Hub standards giờ có cả 9 trang trực tiếp, 0 bản nháp.
- Tiến trình tiết lộ AAMVA (theo dõi N19.3): biểu mẫu 25-input chia thành Bắt buộc (jurisdiction / license / doctype / family / first / DOB), Khuyến nghị mở mặc định (middle name + street + city/state/zip + ngày phát hành/hết hạn), Tinh chỉnh chuyên gia thu gọn (sex/eye/height + class/restrictions/endorsements). Khớp mẫu đã dùng trên TOTP, HOTP, Aztec, PDF417, Swiss QR, EMVCo, GS1, SEPA.
- Trạng thái Expert-tuning lưu qua các lượt thăm (theo dõi N19.3): khi mở phần Expert trên bất kỳ form nào, trạng thái mở được lưu vào
localStorage.qrExpertSectionsOpentheo loại. Lần sau chọn lại loại đó, Expert đã được mở. Listenertoggleđược ủy thác trên.field-section[data-level="expert"], không cần wiring trên từng form. - Audit khả năng truy cập nội bộ (N8): pass thủ công WCAG 2.2 AA trên trang chủ, /print-size/, hub /standards/ mới + 9 trang authority, và 45 trang đích phương án thanh toán. Xác nhận đạt skip link target, focus-visible, nhãn form, tên nút, vai trò ARIA, độ tương phản AAA chính / AA+ tắt. Sửa một bước nhảy tầng heading (ba
<h4>phụ trong vCard/MECARD extra-fields được thăng lên<h3>để outline sạch). Toàn bộ findings công bố trên /accessibility/. - ZIP corpus công khai (theo dõi N2): /proof/corpus.zip, gói fixture JSON + CSV + methodology + README, ~4 KB, tái tạo ở mỗi lần deploy. Đội scanner giờ tải toàn bộ corpus trong một file thay vì clone repo. Liên kết từ /proof/corpus/ với nút Download nổi bật.
- Nhật ký xác thực đội scanner (theo dõi N2): docs/SCANNER_ATTESTATION.md mới, log có ngày từng dòng cho xác minh device/OS/app thủ công. Khởi đầu với 10 dòng cho iPhone 15 Pro trên iOS 18.3, Pixel 8 trên Android 14, Zebra DS8100, Google Authenticator, 1Password. Tăng dần theo từng thiết bị xác minh.
- Tính chân thực xem trước trong generator (N19.6): toggle 4-chip gọn dưới xem trước QR, Default / Phone / Mono / Low contrast. Áp dụng filter CSS lên xem trước (scale cho Phone, grayscale cho Mono, giảm contrast cho Low contrast) để designer thấy QR hành xử thế nào trên các substrate khác nhau mà không rời generator. Không ảnh hưởng đến payload, download, hoặc clipboard copy.
- Validator semantic mới (mở rộng N19.4): kiểm tra HOTP secret Base32 + counter số nguyên không âm; eSIM SM-DP+ phải là FQDN trần (không có https://, lỗi phổ biến phá provisioning điện thoại); eSIM Matching ID từ chối ký tự
$(xung đột với separator field LPA). - Tiến trình tiết lộ mở rộng cho UPI và Crypto (mở rộng N19.3): UPI amount + note nhóm thành Khuyến nghị; crypto amount + label nhóm thành Khuyến nghị. SIP, MMS, PromptPay, Lightning đã rà soát và để phẳng, quá ít trường để cần tiến trình tiết lộ.
- Sweep audit chất lượng cho SEO, hiệu năng, bảo mật, tính toàn vẹn liên kết, và chất lượng code (lượt i18n hoãn). Service worker
cache.putwrites giờ chạy trongevent.waitUntilđể không bị bỏ giữa chừng điều hướng; cache lên v121. Print dialog Business Card chuyển từdocument.writesang Blob URL. Share và card-download click handler bọc try/catch để rejection xuất hiện như toast thay vì im lặng. Magic-number timing (design-card hash auto-open, GIF frame rendering, dual PNG download gap, print-blob revoke) trích thành named constants. Sửa lỗi CSS ẩn:.card-text-rowinput selector chỉ khớp[type="text"], nhưng HTML minifier xóa thuộc tínhtype="text"mặc định, thêminput:not([type])để input BCD tagline + caption giữ styling trên production. Hai khai báo!importantkhông cần thiết được xóa;console.warni18n ồn được tắt. CLAUDE.md cập nhật, trang ngôn ngữ tiền-render vàosite/{lang}/, không phục vụ qua_redirectsrewrite.
2026-04-18, Đẩy authority: hub /standards/ + 3 trang chuẩn, /proof/corpus/, kết Reviewer #6, Advanced workflow-first N19.1
- Chế độ Simple có gợi ý nhỏ "96 loại nữa trong Advanced" dưới lưới 8 ô. Click link sẽ lật toggle chế độ để người dùng không phải cuộn lên. Simple giữ 8 ô; Advanced giữ vai trò khám phá đuôi dài.
- Bullet list Pro CTA viết lại để phản ánh đúng thứ đã ship: mã được khóa mật khẩu, kích hoạt và hết hạn theo lịch, phân tích heatmap/thời tiết/ROI/cohort, trang thống kê công khai có thể chia sẻ, nhóm mã cho danh mục lớn, webhook + REST API, đa nhóm và nhật ký kiểm tra, SSO (SAML/OIDC) + cấp tài khoản SCIM. Bullet generic cũ "Phân tích quét / Quy trình API / Nhóm" đã đi.
- Gợi ý "Save to Pro" dưới generator nay nêu khóa mật khẩu, kích hoạt theo lịch, phân tích heatmap và ROI, và trang thống kê công khai thay vì chỉ "phân tích quét".
- Tiến trình tiết lộ trên các generator nhiều trường (N19.3): TOTP, HOTP, Aztec, PDF417, Swiss QR, và EMVCo thu gọn các nút expert (algorithm/digits/period, EC level, columns/compact, message, MCC/AID) dưới mục Expert tuning. GS1 Digital Link nhóm AI 17/10/21 thành Khuyến nghị; SEPA tách reference (Khuyến nghị) khỏi BIC (Expert tuning). Tóm tắt Expert thu gọn hiển thị nhãn "expert" để power user nhìn thấy nút thêm mà không cần click.
- Profile lưu (N19.8): đặt tên và lưu giá trị trường hiện tại của bất kỳ generator nâng cao nào vào localStorage, liệt kê chúng trong panel Saved profiles trên legend tương thích, và load chúng bằng một click hoặc qua command palette (Cmd/Ctrl+K). Lưu trữ chỉ phía client; không gì rời trình duyệt.
- Authority in ấn (N15): /print-size/ giờ mang hướng dẫn substrate (8 substrate × phạt kích thước × ECC), quy tắc palette CMYK-safe với ghi chú catalog-level CMYK/RGB-only, quy tắc ngoài trời/biển hiệu (UV mờ, hành vi camera trời lạnh, góc quét xiên), giao thức QA in 4 bước, và định nghĩa preflight grade rõ ràng ("D = sẽ fail trên biển bóng dưới 3m").
- Rào compliance (N16): khối "Compliance checklist" + "Khi không nên dùng cái này" trên năm trang đích bị reviewer gắn cờ, App Store (Apple 5.2 / chính sách Play / phân phối TestFlight), PayPal (AUP / lạm dụng F&F / 1099-K / phân loại MSB), Bitcoin & Crypto (FATF Travel Rule / đăng ký FinCEN/FCA / phơi nhiễm Howey-test / OFAC), UPI (vòng NPCI / GST / lừa đảo overlay chống gian lận / SEBI về QR đầu tư), SEPA (tuân thủ EPC069-12 / quyền return PSD2 / cảnh báo không có mandate định kỳ). Cùng với các khối compliance đã có trên AAMVA, Google / Yelp / TripAdvisor Review, Coupon, Review Funnel.
- Recent types trong command palette (N19.7): 8 loại bạn chọn gần nhất nổi lên đầu khi Cmd/Ctrl+K mở với truy vấn rỗng; với truy vấn một phần, recent types được boost xếp hạng nhỏ nên "tot" đáng tin cậy nhảy đến luồng OTP bạn dùng nhiều nhất. Cũng được đánh dấu chip category "Recent" để boost được nhìn thấy, không phải phép thuật. Theo dõi chỉ trong localStorage.
- Đánh bóng chế độ Simple (N6): Simple giờ cũng ẩn panel Saved profiles (không phải khái niệm cho người mới) và tab Batch. Các mục đã ẩn không thay đổi (tìm kiếm loại, preset ngành, legend tương thích, tab category, chip tương thích).
- Dải tin cậy bốn-trụ (N7): dải nhận định trên cùng trang thu từ 5 mục thành 4, mỗi mục mang nhãn trụ rõ ràng, "Thực sự miễn phí, không đăng ký, không paywall", "Ưu tiên quyền riêng tư, 0 yêu cầu ra ngoài, kiểm tra trực tiếp", "An toàn cho production, kiểm tra tương thích tháng 4 năm 2026", "Không khóa, QR backup tĩnh, xuất bất kỳ lúc nào". Link Comparison-updated bị bỏ khỏi dải (đó là tín hiệu uy tín, không phải trụ) nhưng vẫn ở nav + footer.
- Callout dứt khoát "Dùng nếu / Không dùng" (N19.11) ở đầu form nhiều trường, Data Matrix, Aztec, PDF417, TOTP, HOTP, eSIM, GS1. Nhấn cam, hai mệnh đề, trước mọi input. Thay mẫu cũ nơi prose giải thích nằm dưới và người dùng chỉ đọc sau khi đã gõ xong.
- Banner năng lực (N19.9) trên panel Style cho symbology không phải QR, chip rõ ràng + tiêu đề ("Không styling, chỉ barcode trơn") + mô tả, thay gợi ý đoạn cũ bằng thứ liếc thấy được.
- Validation semantic (N19.4): validator TOTP Base32 secret, kiểm tra prefix CH/LI và độ dài 21 ký tự cho Swiss QR IBAN, checksum mod-97 SEPA IBAN (bắt sai số gõ), và cảnh báo cross-field WiFi Enterprise khi chọn EAP nhưng identity rỗng. Inline, không chặn, tái dùng registry VALIDATION_RULES sẵn có.
- QR Lab giờ chỉ một click từ Download (N5), chip viền đứt ("Test before you print in QR Lab →") nằm trong cùng dòng với nút download để xác minh được nhìn thấy ở điểm export.
- Advanced mở task-first (N19.1): dải category giờ tổ chức theo việc bạn đang làm thay vì nó là symbology gì. Chín nhóm workflow, Everyday sharing, Events & venues, Media & files, Marketing & reviews, WiFi & telecom, Payments & banking, Retail & GS1, Boarding & ID, Auth & dev, thay phân loại symbology cũ (Everyday / Business / Payments / Identity / Security / Industrial / Advanced Standards). Cả 105 nút loại được map lại; lưới loại chân trang nhóm lại tương ứng.
- Đẩy authority (N3): hub mới /standards/ với tám trang tham chiếu đầy đủ, GS1 Digital Link (Sunrise 2027, validator GTIN check-digit trực tiếp), TOTP & HOTP (RFC 6238 / 4226, validator Base32 entropy trực tiếp, tương thích authenticator), Swiss QR-bill (SIX IG v2.3, validator CH/LI IBAN trực tiếp với phát hiện QR-IBAN), bằng lái AAMVA (CDS v10, bảng element-code, bảng IIN, khung dùng hợp pháp), kích hoạt eSIM (LPA) (GSMA SGP.22, tương thích iOS 17.4+ / Android 13+), EMVCo merchant QR (cấu trúc MPM / CPM, các biến thể vùng PIX/UPI/PromptPay/SGQR/DuitNow, bảng MCC), Micro QR & rMQR (ISO/IEC 18004 Annex M + ISO/IEC 23941, biểu đồ dung lượng, tương thích scanner chuyên dụng), và ZATCA e-invoice (FATOORA Saudi, tag TLV 01–09, Phase 1 vs Phase 2). Mỗi trang: link spec + test vector chuẩn + validator trực tiếp khi áp dụng + cạm bẫy + tương thích scanner + lần review tiếp theo có ngày. Bước đầu tiên hướng tới mục tiêu authority tầm bách khoa.
- Khung corpus thử nghiệm công khai (N2): trang mới /proof/corpus/ tài liệu phương pháp ai cũng có thể dùng để audit tuyên bố tương thích scanner, tải fixture, tái tạo QR, quét bằng đội của bạn, báo cáo sai lệch. Bảng kết quả quét kỳ vọng 18 dòng được biên soạn cho iOS Camera, Android Camera, và scanner pro. Liên kết /test-vectors/ (JSON cho developer) và /standards/ như tầng authority phía trên.
- Các mục Reviewer #6 trước đó đã ship trong ngày này ở các commit trước: lưới ô jobs-first (N14), câu thương hiệu "Công cụ QR đáng tin cậy nhất internet" (N17), command palette (N19.2), preset chuyên gia (N19.5), payload inspector (N19.10), sweep canonical <title> format (N20).
- Tồn dịch: bản sao N14 và N17 có trong 25 ngôn ngữ; mọi thứ khác từ kết Reviewer #6 hôm nay (N19.3 / N19.4 / N19.7 / N19.8 / N19.9 / N19.11 / N5 / N6 / N7 / N15 / N16 / Pro SSO/SCIM) chỉ tiếng Anh trước mắt và fallback về tiếng Anh ở các locale khác cho đến lượt dịch tiếp theo.
2026-04-17, Keep-Alive trực tiếp, trang Pro roadmap + support, sửa audit webhook
- Tier Keep-Alive trực tiếp trên Pro: $4/tháng, $36/năm, hoặc $240 Decade (trả trước 10 năm, $2/tháng hiệu dụng). Bảo toàn mã hiện có với cooldown chỉnh đích 30 ngày; không mã mới, không seat, không API. Migration 007, ba sản phẩm Stripe, đường webhook cho thanh toán Decade một lần, rào plan trên dashboard/codes/edit. Đảo banner "Ships Q3 2026" trên /compare/ và /no-lock-in/.
- Trang mới tại pro.qr.abundera.ai/roadmap/: thứ đã ship, cam kết Q3/Q4 với tiêu chí bỏ, danh sách rõ ràng những thứ chúng tôi không xây.
- Trang mới tại pro.qr.abundera.ai/support/: mục tiêu thời gian phản hồi theo tier, địa chỉ công khai bảo mật, phạm vi.
- Sửa Stripe webhook: race idempotency (có thể nuốt thanh toán retry), dedup qua SELECT trước khi xử lý, INSERT khi thành công. Handler thanh toán Decade ném lỗi khi thiếu/không biết price_id hoặc tier không khớp thay vì âm thầm bỏ.
DEFAULT_SEAT_LIMITchưa định nghĩa trong accept invite team. Tolerance signature 60s → 300s.incomplete_expiredmap vềtrialing(trước làexpired). - Tài liệu:
ABUNDERA_JWT_AUDIENCESđược ghi là bắt buộc; lược đồPLAN_PRICE_MAPtrongdocs/INTEGRATIONS.md; xóa các tham chiếuABUNDERA_SERVICE_SECRETkhông dùng. - Tests: 70 đậu. Thêm 8 cho predicate Keep-Alive và cooldown 30 ngày.
2026-04-16, Ra mắt Pro, làm lại bậc giá, các theo dõi review ngoài
- Cổng Pro trực tiếp tại pro.qr.abundera.ai.
- Bậc giá (theo tháng / theo tháng khi thanh toán theo năm): Solo $12/$9, Business $39/$29, Team $129/$99, Agency $449/$349, Enterprise $1.800/$1.500. Trên lưới giá, năm là lựa chọn mặc định.
- Giới hạn quét theo tháng rõ ràng (50K / 250K / 1M / 4M / 25M) thay "không giới hạn". Vượt mức không phá redirect; chúng tôi tính phí vượt theo giá list của tier ($0,06–$0,18 mỗi 1K quét).
- Mỗi tier có số mã rõ ràng (500 / 2.500 / 15K / 75K / 500K), không có chữ nhỏ "không giới hạn*".
- Thêm 13 trang đích thanh toán: Apple Wallet, Google Wallet, EPC Girocode, BLIK, Interac, MB WAY, GCash, Maya, Kakao Pay, Naver Pay, LINE Pay, iDEAL, Boleto. Số loại 91 → 104; sitemap giờ 3.224 URL.
- Scan-preflight mở rộng từ 4 điều kiện chung sang 8 kịch bản theo công việc (sticker menu, áp phích cửa sổ, dây đeo, thẻ kệ, nhãn kho, biển ngoài trời, bao bì, danh thiếp). Grade C/D/F hiện modal trước khi tải.
- Ma trận giá /compare/ tách thành sáu nhóm khớp dung lượng. Thêm các cột đối thủ Bitly, Flowcode, Uniqode, QR Code Chimp, QRTIGER, mỗi cột có ngày và gắn cờ tái xác minh hằng tháng. Chi phí mỗi mã hằng tháng hiển thị trên mọi dòng.
- Kiểm tra trôi số đếm trong script pre-deploy: quét mọi trang sinh dưới
site/để tìm số loại được hardcode. Trôi 91/104 trên /compare/ ship vì kiểm tra cũ chỉ theo dõi ba trang. - Khung Pro-site: "Free is for keeping. Pro is for changing." mang qua /no-lock-in/, /static-vs-dynamic/, và Pro CTA trên trang chủ.
- Sản phẩm Stripe được tạo qua script idempotent
stripe-setup.py(Solo + Team đẩy lên rev 2 cho số tiền mới).PLAN_PRICE_MAPgiữ cả price ID cũ và mới để mọi subscriber hiện có vẫn được map. - Khác: dải chi tiết tương thích trên đầu trường generator, dải tin cậy trang chủ, dấu mốc tươi mới trên mọi trang, trang khung /accessibility/, các gói preset ngành /for/ (8), gợi ý khám phá Wizard/QR Lab, audit số đếm (120 → 336 biểu tượng, 24 → 50 preset BCD), dọn ngôn ngữ repo (repo riêng tư; "Code generator open source" → "Code phía client kiểm tra được trong trình duyệt của bạn"), OG image tái tạo với event QR iCalendar hợp lệ.
2026-04-15, Simple/Advanced, /compare/, Save-to-Pro
- Toggle Simple / Advanced trên trang chủ. Simple chọn 8 loại hằng ngày (URL, WiFi, vCard, Email, Phone, SMS, Event, Text); Advanced khôi phục đầy đủ 104. Chế độ dính trong
localStorage; trang đích cho loại không-Simple tự chuyển. - Ma trận đối thủ /compare/ ship: tính năng đối tính năng so với QR Code Generator, QRCode Monkey, và Uniqode. Có ngày, review lại hằng tháng.
- Nút "Save to Pro" trên trang miễn phí: một click thăng mã đã sinh vào cổng Pro. Trạng thái round-trip qua URL hash; người dùng chưa đăng nhập về lại generator với công việc được giữ.
- Mũi tên cuộn category-tab trên desktop; cuộn mượt trên di động.
- Khôi phục history tự chuyển sang Advanced khi loại của mã đã lưu không có ở chế độ Simple.
- Bản sao Pro CTA dịu lại; câu chuyện chống bắt cóc (QR backup tĩnh, ân hạn 90 ngày, di động tên miền) đẩy lên trước.
2026-04-14, Cổng Pro online, 3 loại mới, sửa autofill
- Cổng Pro (
pro.qr.abundera.ai) online từ đầu đến cuối. - Ba loại mới trên trang miễn phí: M-PESA Kenya (EMVCo MPM), Video Meeting (Zoom/Meet/Teams/Webex shortcut), Coupon/Promo Code.
- Loại GS1 Digital Link giờ hỗ trợ tất cả 12 Application Identifier mà Sunrise-2027 yêu cầu.
- Trang SEO mới:
/static-vs-dynamic/,/no-lock-in/(theo hợp đồng: ân hạn 90 ngày, một-click export, GDPR xóa 30 ngày, QR backup tĩnh). - Sửa autofill (lần thử thứ sáu): khối trường theo loại là phần tử
<form>thật với tokenautocompleteriêng; form không hoạt động nhậndisplay: noneđể Chrome không gắn cờ input ngoài màn hình. Nhóm dọc vCard/Address/Contact/WiFi-Enterprise giờ hoạt động trên Chrome, Safari, Firefox. Harness Playwright ở 0 vi phạm. - Phễu review: dropdown nền tảng (Google/Yelp/TripAdvisor) với bản sao placeholder theo từng nền tảng.
- Wizard: 8 tham chiếu result-slug hỏng được sửa.
- Header/footer thống nhất qua partial chia sẻ; trang công cụ (Wizard, QR Lab, Test Vectors) chuyển sang cùng hệ template.
- Pre-deploy check: xác thực liên kết nội bộ + chốt
showToast()tiếng Anh thô. - Sửa BCD: ổn định bố cục dọc, hồi quy UI trang đích, nhãn link RFC, artifact watermark.
- HTML trang đích sinh ra không còn được git theo dõi (vẫn deploy; git theo dõi template và generator).
2026-04-13, Đồng đẳng 25 ngôn ngữ, làm lại header/footer, harness Playwright
- 6.660 khóa fallback tiếng Anh được dịch trên 25 file ngôn ngữ. Trang đích không tiếng Anh không còn fallback về chuỗi tiếng Anh. Pipeline dịch refactor thành validator/planner.
- i18n mở rộng đến trang công cụ: Wizard, QR Lab, và Test Vectors giờ có 25 biến thể ngôn ngữ, với thẻ hreflang và mục sitemap.
- Harness round-trip Playwright: sinh mã cho mọi loại trong mọi ngôn ngữ, decode canvas, kiểm tra trường. 0 vi phạm.
- Làm lại header/footer: header mảnh, footer 3 cột khớp mẫu sign.abundera.ai. Drawer hamburger di động giờ hiện mục nav khi mở (trước hỏng).
- Click xem trước QR → lightbox phóng to. Nhãn hiện tên loại + input đầu tiên (trước hiện payload thô).
- Lượt sửa autofill đầu (đáp đúng vào 2026-04-14).
- Type search lộ ra loại nâng cao; đóng khi chọn; tab category rỗng ẩn ở chế độ Popular; khôi phục history chuyển loại inline thay vì redirect.
2026-04-12, Đồng đẳng 26 ngôn ngữ, 13 loại payload mới, 3 mã vạch 2D phi-QR
- Đồng đẳng đầy đủ 26 ngôn ngữ: mọi khóa tiếng Anh tồn tại trong mọi file ngôn ngữ (1.302 khóa × 25 lang). 5.533 mục thêm qua 4 lượt (danh từ riêng, nhãn ngắn, nhãn trường form, toast, gợi ý). 30 gợi ý brand-payment để tiếng Anh theo thiết kế, URL và tên thương hiệu là nguồn gốc bằng tiếng Anh.
- Khử trùng lặp: 113 khối khóa trùng lặp cũ được xóa trong 19 file lang (trôi từ rebase trước).
- Sửa header trang info: blog/about/privacy/changelog dùng class
.brand/.header-inner/.brand-textkhông có CSS gắn. Chuyển sang cùng markup.logonhư app chính. - 4 loại URI dựa trên tiêu chuẩn: HOTP (RFC 4226), eSIM (GSMA SGP.22 LPA), SIP/SIPS (RFC 3261), MMS/MMSTO.
- WiFi WPA2/WPA3-Enterprise: mở rộng định dạng
WIFI:với phương thức EAP, xác thực Phase-2, identity, identity ẩn danh. - 6 loại thanh toán theo khu vực: Alipay, WeChat Pay, Swish (SE), Vipps (NO), Mercado Pago (LatAm), Payconiq (Benelux).
- 3 mã vạch 2D phi-QR: Data Matrix (ISO 16022), Aztec (ISO 24778), PDF417 (ISO 15438). bwip-js (~1 MB) lazy-load chỉ khi một trong các loại đó được chọn.
- Phần giới thiệu 26 ngôn ngữ thêm vào trang chủ với liên kết chữ viết gốc.
- Script audit pre-deploy: kiểm tra đồng bộ
BATCH_VALID_TYPES+ chốtshowToast()tiếng Anh thô. - Footer, trang đích, và khóa i18n thêm cho cả 13 loại mới (nguồn tiếng Anh).
2026-04-11, Lấy ảnh URL BCD, xem trước cố định, preset có thể mở rộng
- BCD: trường ảnh URL giờ lấy và inline ảnh ngoài thành data URL để canvas xuất không bị nhiễm cross-origin (xuất PDF/PNG giờ hoạt động trên host không CORS).
- Layout BCD desktop: pane xem trước giờ
position: sticky, nên khi người dùng mở mọi mục, controls cuộn tự do mà không mất hiển thị xem trước trực tiếp. (Trước, mở Content + Layout + Options sẽ đẩy Show-Fields ra ngoài màn hình.) - Lưới preset BCD giờ có thể mở rộng, hiện 12 layout đầu với toggle "Hiện mọi layout", phản chiếu UX của icon picker.
- Input tagline + QR-caption làm mới: nhãn xếp + input đầy chiều rộng (trước hẹp 150px sidecar).
- Badge khả năng quét nâng từ
bottom: -24pxlên-18pxđể không che nút copy. - Hướng dẫn batch CSV giờ nêu rõ Google Sheets, Excel, Numbers.
2026-04-08, Thư viện biểu tượng theo ngành dọc
- 24 biểu tượng logo trung tâm mới (96 → 120) hướng tới y tế, thực phẩm & đồ uống, tech, tài chính.
- 10 preset layout BCD mới (40 → 50): Concrete, Honey, Indigo, Luxe, Midnight II, Ocean II, Slate, Verdant, Wine, Candy.
- Lỗi chiến lược cache-buster: tham số
?v=trênpage-init.js+lang-redirect.jsbị thiếu trên trang đích, gây load module cũ sau deploy. Đã sửa.
2026-04-04, Nền gradient BCD + mặt sau thẻ + 12 preset mới
- BCD: 12 preset mới (Dark Mode, Pastel, Ocean, Cherry, Slate, Emerald, Amber, Mono, Rose, Midnight, Sand, Carbon). Tổng 36 preset.
- Nền gradient do người dùng điều khiển với bộ chọn màu thứ hai.
- Hiển thị mặt sau thẻ với công ty + khẩu hiệu + văn bản CTA.
- Hàng biểu tượng xã hội (LinkedIn / X / Instagram).
- Khối địa chỉ kết xuất từ trường vCard.
- Hình thumbnail preset trực quan, mỗi nút preset giờ kết xuất canvas mini thay vì placeholder.
2026-03-29, Tái thiết kế BCD + xuất 600 DPI
- Business Card Designer phần accordion thu gọn, xem trước cố định trên di động, chân trang xuất cố định.
- Input màu hex với đồng bộ hai chiều với bộ chọn màu, swatch palette màu.
- 4 hình dạng ảnh (tròn, vuông, bo tròn, lục giác).
- Đẩy độ phân giải xuất lên 600 DPI cho output in sắc nét.
- Menu kebab: Xuất template, Nhập template, Surprise me, Chia sẻ thẻ, In trang (10-up US Letter + A4).
- Cắt ảnh ép vuông. Bảo vệ dữ liệu tối thiểu trước khi mở designer.
- Preset BCD đẩy: 8 mới khác biệt thị giác (Neon, Art Deco, Sunset, Forest, Brutalist, Kraft, Nordic, Retro 80s). Tổng 24 preset.
2026-03-22, 20 loại QR mới + Link-in-Bio + so sánh đối thủ
- 20 loại QR mới (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 kết xuất toàn bộ trang bio từ URL hash của QR, không backend, không tài khoản, không theo dõi.
- Widget iframe /embed/ (postMessage API cho tích hợp parent).
- Trang so sánh đối thủ /vs/ (26 biến thể ngôn ngữ).
- Gói npm @abundera/qr + CLI với 25 encoder loại.
2026-03-15, 96 biểu tượng logo trung tâm + 5 ngôn ngữ mới
- 96 biểu tượng logo trung tâm (12 → 96): crypto, communication, media, utility, commerce, transport, nature, food, people, events, 12 mặt cười, 18 glyph mạng xã hội (X, Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Snapchat, Discord, Telegram, GitHub, Threads, Bluesky, Mastodon, Twitch, Signal, Medium). Mở rộng qua toggle <details>.
- 5 ngôn ngữ mới (21 → 26): Thụy Điển, Séc, Đan Mạch, Na Uy, Phần Lan. Mỗi ngôn ngữ 1.106 khóa với bản dịch gốc.
- Xuất EPS (PostScript Level 2 với JPEG nhúng, mã hóa ASCII85) cho luồng print-shop (Illustrator, InDesign, CorelDRAW).
- Xuất GIF động (gif.js, 8-frame cầu vồng).
- Xuất SVG BCD, xuất JPG BCD.
2026-03-08, Audit nền tảng + sweep khả năng truy cập
Sprint sửa lỗi: 3 NGHIÊM TRỌNG + 7 CAO + 10 TRUNG BÌNH được sửa.
- Vi phạm CSP script nội tuyến trên cả 55 trang đích, chuyển sang thuộc tính body
data-qr-preselect. - Lỗi cache cũ service worker, khóa strip query → URL đầy đủ + stale-while-revalidate.
- Mất đồng bộ loại form khi click pill BCD trên trang đích không phải vCard.
- Hiển thị ảnh nền (slider opacity, module ở 90% alpha, định tuyến crop modal).
- Tràn modal crop trên di động.
- Wheel-zoom cướp scroll chuột (xóa hoàn toàn).
- Rò IP avatar được giảm thiểu (referrerpolicy + header no-referrer).
- WiFi batch sửa open-network, đồng đẳng trường MeCard batch, xác thực TOTP base32.
- Mục tiêu chạm WCAG 2.5.8 (tối thiểu 44×44 trên coarse pointer).
- Sweep aria-hidden trên 87 SVG trang trí.
- Tôn trọng prefers-reduced-motion.
- Toast aria-live, ring focus-visible, điều hướng bàn phím crop, phím Home/End menu overflow.
- Tối ưu preload font.
2026-03-01, 15 loại dựa trên tiêu chuẩn + validator khả năng quét
- 15 loại QR mới: TOTP/2FA, Swiss QR-bill (với overlay chữ thập đỏ Thụy Sĩ bắt buộc), PIX (Brazil), PromptPay (Thailand), EMVCo merchant chung, Lightning BOLT11, khóa công khai SSH, khóa công khai OpenPGP, config WireGuard, GS1 Digital Link, Spotify, Fediverse (Mastodon/Bluesky/Nostr/Matrix/Threads), Geo URI, Magnet, iCalendar đầy đủ.
- Validator khả năng quét, chạy jsQR trên canvas đã kết xuất và cảnh báo khi decode thất bại.
- Fallback URL có thể in, toggle thêm URL đích như văn bản thuần dưới QR.
- jsQR lazy-load (tiết kiệm 262 KB payload eager).
2026-02-22, Trình soạn thảo gradient nhiều điểm dừng + màu theo từng mắt
- Trình soạn thảo gradient nhiều điểm dừng (tối đa 5 màu).
- Màu trong/ngoài độc lập theo từng mắt.
- Chế độ ảnh nền QR (slider opacity, EC=H tự ép).
- Pinch-zoom trên canvas xem trước.
- Web Share API cho mã QR và danh thiếp.
- Định dạng xuất WebP.
- Hoàn tác/Làm lại (Ctrl/Cmd-Z, đệm 50 bước).
- Nút template ngẫu nhiên ("Surprise me").
2026-02-15, Trang quyền riêng tư & bảo mật + tăng cường i18n
- 4 trang uy tín mới: /privacy/, /terms/, /security/, /about/, trong tất cả 21 ngôn ngữ.
- /.well-known/security.txt được công bố.
- 29 chuỗi tiếng Anh cố định được thay thế bằng lệnh gọi
qrT(); ~100 khóa i18n mới được dịch sang cả 21 ngôn ngữ. - Script nội tuyến được externalized, CSP được tăng cường (unsafe-inline đã bỏ).
2026-02-08, Khả năng truy cập modal + quản lý tiêu điểm
- Bẫy tiêu điểm trên cả 3 modal (cắt xén, BCD, hộp thoại tùy chỉnh).
- Đánh bóng điều hướng bàn phím qua menu overflow BCD, switcher ngôn ngữ, và bộ chọn loại.
- Sửa lỗi nghiêm trọng: viền khung SVG kết xuất lệch một pixel, lỗ hổng XSS trong xem trước thu phóng batch, lỗi
btoa()Latin1 khi click logo preset.
2026-02-01, Ra mắt lần đầu
- Ra mắt Abundera QR với 20 loại QR, 40 template, sinh CSV batch (500 mã), Business Card Designer (300 DPI), 20 ngôn ngữ, 420 trang đích tĩnh.
- Ưu tiên quyền riêng tư: 100% phía client, không tài khoản, không theo dõi, không mã chuyển hướng động.