Registro de Alterações
Cada versão, cada recurso, cada correção, em um log completo.
2026-04-26, Conformidade total de renderização ISO/AIM/GS1 em todos os tipos de código
- Auditados todos os códigos QR / 2D / 1D em relação ao seu padrão vigente. O padrão de
includetextdo bwip-js é false para cada bcid, portanto EAN/UPC/ITF-14 eram gerados sem a faixa de texto legível por humanos exigida por ISO 15420 §5.1.2 + GS1 §5.4.4. Definidoincludetext: true+guardwhitespace: truepara toda a família EAN/UPC, além deincludetext: truepara ITF-14, Code 128, Code 39, Code 93, Codabar, VIN. - As zonas silenciosas do EAN-13 agora são assimétricas conforme ISO 15420 Anexo A (
paddingleft: 44= 11 módulos,paddingright: 28= 7 módulos em scale=4). EAN-8 / UPC-A / UPC-E usam os envelopes simétricos definidos em suas especificações. PDF417 + carteira AAMVA recebem zonas silenciosas de 2 módulos conforme ISO 15438 §5.5; Data Matrix recebe 1 módulo conforme ISO 16022; Aztec recebe 1 módulo recomendado (zero permitido pela ISO 24778, mas causa falhas em scanners que tocam a borda). - O
QUIET_ZONE_MODULESdo QR foi elevado de 2 → 4, a especificação completa ISO/IEC 18004 §6.3.7. O atalho de 2 módulos era um compromisso da indústria que falha na detecção de prefixo GS1 Digital Link em alguns scanners laser industriais. Micro QR + rMQR agora são gerados com zona silenciosa de 2 módulos (qreanemite a grade pura, então a adicionamos manualmente emrenderMicroQRResult). - Níveis ECC fixados: Aztec em 23% (padrão ISO 24778), PDF417 no nível 5 (mínimo GS1 para transporte e logística). Proteção contra deriva futura do bwip-js.
- Nova página de referência: /standards/barcode-rendering/. Referência por simbologia cobrindo zonas silenciosas, HRI, ECC e dígitos verificadores para todos os 17 tipos, com links para a fonte primária de cada padrão ISO/AIM/GS1 citado.
2026-04-26, Reforço do gate de deploy staging-first
- Deploys de produção em sites com staging agora exigem que o deploy de staging mais recente corresponda exatamente ao commit atual (árvore de trabalho limpa dos dois lados). A janela de 24 horas do gate anterior permitia que deploys de produção não relacionados aproveitassem o histórico de staging desatualizado. Rastreado por SHA, fail-closed; o override continua sendo
CF_DEPLOY_SKIP_STAGING_FIRST=1. - Verificação prévia no
cf-deploy.pyparaCLOUDFLARE_API_TOKEN, falha rapidamente com uma dicasource ~/.envrcem vez de deixar o wrangler emitir seu erro críptico de "non-interactive environment". - Verificador de conteúdo pós-deploy em cada deploy: busca a URL em produção e confirma que o cache-buster corresponde ao que acabou de ser carimbado em
dist/. Pega a classe de bugs "CNAME errado" / "edge servindo conteúdo obsoleto" / "branch errado" que a verificação de saúde 200-OK deixaria passar silenciosamente.
2026-04-25, Revisão de UX móvel: cabeçalho de pré-visualização fixo, folha inferior de pré-visualização, CTA de download fixo
- Cabeçalho de pré-visualização fixo no topo da página em celulares (≤768px). Exibe sempre uma miniatura ao vivo do QR mais um status em uma linha, "Preencha o formulário abaixo" quando ocioso, "Seu QR está pronto · Toque para baixar" assim que um código é renderizado. Pulsa uma vez quando o QR fica válido pela primeira vez para que os usuários notem. Corrige o problema antigo em que visitantes no celular não percebiam que o resultado havia sido renderizado abaixo da dobra.
- Tocar na barra de pré-visualização (ou no novo botão de Download fixo na parte inferior) abre a pré-visualização como uma folha inferior, botões de download de largura total empilhados verticalmente, fechar deslizando para baixo ou tocando no fundo, preenchimento de área segura para o indicador de início do iOS.
- Tratamento de teclado virtual: um listener visualViewport marca
body.kb-openquando o teclado sobe, a barra de pré-visualização colapsa para uma pílula fina e os campos em foco rolam para a vista para que o teclado nunca oculte o que o usuário está digitando. - Varredura de alvos de toque em ≤640px: blocos do seletor de tipo aumentados de 14×8 / 0.78rem para 16×10 / 0.82rem e altura mínima de 56px, abas do painel e botões primários com mínimo de 44px, botões de exportação empilhados em largura total com mínimo de 48px dentro da folha.
- O meta viewport recebe
interactive-widget=resizes-contente as duas regras100vhforam migradas para100dvhpara layout previsível em navegadores móveis com barras de ferramentas dinâmicas. - O antigo FAB de rolar até a pré-visualização foi removido, a barra de pré-visualização mais o CTA fixo cobrem a mesma função de forma mais direta. Cache do service worker elevado para v132. Novas strings traduzidas para todos os 25 idiomas.
- Higiene de CSS: 203 declarações de espaçamento de valor único em
style.cssmigradas para tokens--space-Nvia codemod. Refatoração pura, sem alteração visual. - Teto de estilos inline 89 → 85: quatro atributos
style="text-transform:uppercase"nos inputs de AAMVA / Code 39 / Code 93 / VIN substituídos pela classe existente.input-uppercase.
2026-04-19, Varredura de conformidade N16 (45 páginas), N3 lote 2, correções de regressão, cauda N3, divulgação AAMVA, persistência de estado Expert, auditoria de a11y
- Varredura completa de conformidade N16: todas as 34 páginas de destino de esquemas de pagamento agora contêm blocos de checklist de conformidade + "quando não usar". Quarta passagem (19 páginas) cobre o restante: Alipay + WeChat Pay (PBoC + SAFE), Boleto (BACEN + FEBRABAN), Mercado Pago (matriz regulatória de sete países), Payconiq (NBB + PSD2), EPC/Girocode (EPC069-12 + ZAG), Apple Wallet + Google Wallet (programa de desenvolvedor + FTC Endorsement + GDPR localização), Kakao Pay + Naver Pay + LINE Pay (FSC coreana + FSA japonesa + FSC de Taiwan + BOT), GCash + Maya (BSP EMI + AMLC + QR Ph + SEC PH), JPQR (METI + FSA Qualified-Invoice), FPS HK (HKICL + HKMA + lista de alerta SFC), DuitNow (PayNet + BNM + e-Invoice LHDN), M-PESA (Safaricom + CBK + eTIMS + CMA), MoMo (SBV + AMLID + e-Invoice GDT), PayID (NPP + RBA + APRA + AUSTRAC + ASIC). Combinado com as três passagens anteriores (AAMVA / páginas de Avaliação / Cupom / Funil de Avaliação / App Store / PayPal / Cripto / UPI / SEPA + Venmo / Cash App / Swiss QR-bill / PIX / PromptPay / EMVCo / TWINT + Bizum / PayNow / iDEAL / BLIK / Interac / MB WAY / Swish / Vipps), são 45 páginas de destino com bloqueio de conformidade, todo esquema de pagamento no site agora tem referências de reguladores locais, regras de classificação de comerciante, obrigações fiscais / de faturamento, estrutura de proteção ao consumidor e uma proteção "sem solicitação de investimento" apontando para o regulador de valores mobiliários correto. Primeiro sub-lote (7): Venmo (AUP / abuso F&F / 1099-K / relatórios Early Warning), Cash App (Cash for Business / superfícies reguladas Bitcoin & Investing / Regulation E / sinalizador CFPB de fraude), Swiss QR-bill (SIX v2.3 / regras QR-IBAN / MWSTG / retenção OR Art. 958f de 10 anos), PIX (Resolução BACEN 103/2021 / PJ vs PF / janela de devolução MED / fraude de sobreposição / sinalizador de investimento CVM), PromptPay (regras BOT / limiar de VAT THB 1,8M / relatórios AMLO / divulgação de câmbio transfronteiriço), EMVCo (ISO 18245 MCC / KYC do adquirente / FIU nacional em incompatibilidade de AID), TWINT (FINMA/AMLA / MROS / proteção ao consumidor KIG). Segundo sub-lote (8): Bizum (Bizum Negocios / SEPBLAC / factura / CNMV), PayNow (MAS Payment Services Act / relatórios STRO / SGQR / PDPA), iDEAL (adquirente licenciado / DNB / disputa PSD2 13 meses / instituições beneficentes CBF / aplicação ACM), BLIK (Polski Standard Płatności / KNF / relatórios GIIF / faktura VAT / RODO), Interac (Interac for Business / FINTRAC / PIPEDA / Quebec Bill 96 / fraude 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). Junta-se aos blocos de conformidade pré-existentes em AAMVA, Google / Yelp / TripAdvisor Review, Cupom, Funil de Avaliação, App Store, PayPal, Cripto, UPI, SEPA. Cobertura total agora: 26 páginas de destino.
- Mais cinco páginas de referência de padrões (N3 lote 2), carteira de motorista AAMVA, ativação eSIM (LPA), QR de comerciante EMVCo, Micro QR / rMQR, e-fatura ZATCA. O hub agora tem 8 páginas de referência ao vivo cobrindo as especificações principais.
- Duas regressões corrigidas: (1) a página inicial rolava automaticamente para baixo ao carregar porque a inicialização de
showCategory()chamavascrollIntoView({block:"nearest"})no chip de categoria, substituído porscrollLefthorizontal manual para que a rolagem da página nunca seja acionada. (2) A busca de tipo por "paym" retornava zero resultados porque o filtro só verificava substrings de label + data-type, a correção DRY agora reutiliza as mesmas tabelas de sinônimos CAT_SEARCH + TYPE_SEARCH que a paleta de comandos usa. - Cauda N3: nova página de referência combinada /standards/non-qr-2d/ para Aztec (ISO/IEC 24778) + PDF417 (ISO/IEC 15438) + Data Matrix (ISO/IEC 16022). Tabela comparativa lado a lado, matriz de suporte de scanner nativo entre Câmera iOS / Android / Google Lens / scanners industriais / portões de aeroporto / leitores DMV / leitores DPM farmacêuticos, guia de escolha (Aztec para cartões de embarque, PDF417 para ASCII longo em papel plano, Data Matrix para DPM / farmacêutico, QR para câmeras de celular do consumidor). O hub de padrões agora tem todas as 9 páginas ao vivo, 0 rascunho.
- Divulgação progressiva do formulário AAMVA (acompanhamento N19.3): formulário de 25 inputs dividido em Obrigatório (jurisdição / licença / tipo de documento / sobrenome / nome / data de nascimento), Recomendado expandido (nome do meio + rua + cidade/estado/CEP + datas de emissão/expiração), ajuste Expert recolhido (sexo/cor dos olhos/altura + classe/restrições/endossos). Corresponde ao padrão usado em TOTP, HOTP, Aztec, PDF417, Swiss QR, EMVCo, GS1, SEPA.
- O estado de ajuste Expert persiste entre visitas (acompanhamento N19.3): quando a seção Expert é aberta em qualquer formulário, o estado aberto é salvo em
localStorage.qrExpertSectionsOpenindexado por tipo. Na próxima vez que aquele tipo for selecionado, Expert já estará aberto. Listenertoggledelegado em.field-section[data-level="expert"], sem conexão por formulário. - Auditoria interna de acessibilidade (N8): passagem manual WCAG 2.2 AA na página inicial, /print-size/, no novo hub /standards/ + 9 páginas de referência e nas 45 páginas de destino de esquemas de pagamento. Verificada aprovação em: destino do skip link, focus-visible, rótulos de formulários, nomes de botões, papéis ARIA, contraste AAA primário / AA+ secundário. Corrigido um salto de nível de cabeçalho (três sub-cabeçalhos
<h4>dentro de extra-fields vCard/MECARD promovidos a<h3>para hierarquia limpa). Resultados completos publicados em /accessibility/. - Corpus público em ZIP (acompanhamento N2): /proof/corpus.zip, fixtures empacotados JSON + CSV + metodologia + README, ~4 KB, reconstruído a cada deploy. Frotas de scanners agora podem baixar o corpus completo em um único arquivo em vez de clonar o repositório. Vinculado em /proof/corpus/ com um botão de Download em destaque.
- Log de atestação de frota de scanners (acompanhamento N2): novo docs/SCANNER_ATTESTATION.md, log datado por linha de verificações manuais de dispositivo/SO/app. Iniciado com 10 entradas cobrindo iPhone 15 Pro no iOS 18.3, Pixel 8 no Android 14, Zebra DS8100, Google Authenticator, 1Password. Cresce com cada dispositivo verificado.
- Realismo da pré-visualização no gerador (N19.6): alternador compacto de 4 chips abaixo da pré-visualização ao vivo do QR, Padrão / Telefone / Mono / Baixo contraste. Aplica filtros CSS na pré-visualização (escala para Telefone, escala de cinza para Mono, contraste reduzido para Baixo contraste) para que designers vejam como o QR se comporta em diferentes substratos sem sair do gerador. Zero efeito na carga codificada, downloads ou cópia para área de transferência.
- Mais validadores semânticos (extensão N19.4): verificação de Base32 do segredo HOTP + validação de inteiro não-negativo para o contador; o SM-DP+ do eSIM deve ser um FQDN simples (sem https://, erro comum no provisionamento de telefone); o Matching ID do eSIM rejeita caracteres
$(conflito com o separador de campo LPA). - Divulgação progressiva estendida para UPI e Cripto (extensão N19.3): valor + nota UPI agrupados como Recomendado; valor + rótulo cripto agrupados como Recomendado. SIP, MMS, PromptPay e Lightning revisados e mantidos simples, poucos campos para justificar a divulgação.
- Varredura de auditoria de qualidade em SEO, desempenho, segurança, integridade de links e qualidade de código (passagem i18n adiada). Gravações
cache.putdo service worker agora rodam dentro deevent.waitUntilpara não serem descartadas no meio da navegação; cache elevado para v121. O diálogo de impressão do cartão de visita trocoudocument.writepor URLBlob. Handlers de clique de compartilhamento e download de cartão envolvidos em try/catch para que rejeições apareçam como toasts em vez de falhas silenciosas. Tempos de números mágicos (auto-abertura de hash do cartão de design, renderização de quadros GIF, intervalo de download de PNG duplo, revogação de blob de impressão) extraídos para constantes nomeadas. Bug latente de CSS corrigido: seletores de input.card-text-rowsó correspondiam a[type="text"], mas o minificador HTML remove o atributo padrãotype="text", adicionadoinput:not([type])para que os inputs de slogan + legenda do BCD mantenham o estilo em produção. Duas declarações!importantdesnecessárias removidas;console.warnruidoso de i18n silenciado. CLAUDE.md atualizado, as páginas de idioma são pré-renderizadas emsite/{lang}/, não servidas via reescritas_redirects.
2026-04-18, Impulso de autoridade: hub /standards/ + 3 páginas de padrões, /proof/corpus/, conclusão do Revisor #6, Avançado workflow-first N19.1
- O modo Simples ganha uma dica sutil "96 tipos a mais em Avançado" abaixo da grade de 8 blocos. Clicar no link ativa o alternador de modo para que os usuários não precisem rolar de volta ao topo. Simples permanece com 8 blocos; Avançado continua como o caminho de descoberta para a cauda longa.
- Lista de bullets do CTA Pro reescrita para refletir o que foi efetivamente entregue: códigos protegidos por senha, ativação e expiração programadas, análises de mapa de calor/clima/ROI/coorte, páginas de estatísticas públicas compartilháveis, grupos de códigos para grandes portfólios, webhooks + API REST, múltiplas equipes e log de auditoria, SSO (SAML/OIDC) + provisionamento SCIM. Os antigos bullets genéricos "Análise de scans / Workflows de API / Equipes" foram removidos.
- A dica "Salvar no Pro" abaixo do gerador agora menciona proteção por senha, ativação programada, mapa de calor e análise de ROI, e páginas de estatísticas públicas em vez de apenas "análise de scans".
- Divulgação progressiva em geradores avançados com muitos campos (N19.3): TOTP, HOTP, Aztec, PDF417, Swiss QR e EMVCo recolhem seus controles avançados (algoritmo/dígitos/período, nível EC, colunas/compacto, mensagem, MCC/AID) em uma seção de ajuste Expert. GS1 Digital Link agrupa AI 17/10/21 como Recomendado; SEPA separa referência (Recomendado) de BIC (ajuste Expert). Resumos Expert recolhidos mostram uma pílula "expert" para que usuários avançados notem os controles extras sem clicar.
- Perfis salvos (N19.8): nomeie e salve os valores de campo atuais de qualquer gerador avançado no localStorage, liste-os no painel Perfis salvos acima da legenda de compatibilidade e carregue-os com um clique ou via paleta de comandos (Cmd/Ctrl+K). Armazenamento somente no lado do cliente; nada sai do navegador.
- Referência de produção de impressão (N15): /print-size/ agora inclui um guia de substrato (8 substratos × penalidade de tamanho × ECC), regras de paleta CMYK-segura com anotações de catálogo CMYK/RGB-only, regras de exterior/sinalização (desbotamento UV, comportamento da câmera em clima frio, ângulos de scan oblíquos), um protocolo de QA imprimível de 4 verificações e definições de grau preflight em linguagem simples ("D = falhará em sinalização brilhante abaixo de 3 m").
- Cercas de conformidade (N16): novos blocos "Checklist de conformidade" + "Quando não usar" em cinco páginas de destino sinalizadas pelo revisor, App Store (Apple 5.2 / política Play / distribuição TestFlight), PayPal (AUP / abuso F&F / 1099-K / classificação MSB), Bitcoin & Cripto (FATF Travel Rule / registro FinCEN/FCA / exposição ao teste Howey / OFAC), UPI (circular NPCI / GST / golpes anti-fraude de sobreposição / SEBI em QRs de investimento), SEPA (conformidade EPC069-12 / direitos de devolução PSD2 / aviso de não-mandato-recorrente). Junta-se aos blocos de conformidade pré-existentes em AAMVA, Google / Yelp / TripAdvisor Review, Cupom, Funil de Avaliação.
- Tipos recentes na paleta de comandos (N19.7): os últimos 8 tipos selecionados aparecem primeiro quando Cmd/Ctrl+K é aberto com consulta vazia; com consulta parcial, tipos recentes recebem um pequeno bônus de classificação para que "tot" salte de forma confiável para o fluxo OTP mais usado. Também marcado com chip de categoria "Recente" para que o impulso seja visível, não mágico. Rastreado apenas no localStorage.
- Polimento do modo Simples (N6): Simples agora também oculta o painel Perfis salvos (não é um conceito para iniciantes) e a aba Lote. Itens já ocultos permanecem inalterados (busca de tipo, presets do setor, legenda de compatibilidade, abas de categoria, chips de compatibilidade).
- Faixa de confiança de quatro pilares (N7): a faixa de afirmações no topo da página foi comprimida de 5 itens para 4, cada um com seu rótulo de pilar explícito, "Verdadeiramente gratuito, sem cadastro, sem paywalls", "Privacidade primeiro, 0 requisições externas, verifique ao vivo", "Seguro para produção, compatibilidade testada em abril de 2026", "Sem lock-in, QR de backup estático, exporte quando quiser". O link Comparison-updated foi removido da faixa (é um sinal de credibilidade, não um pilar), mas ainda aparece na nav + rodapé.
- Avisos decisivos "Use se / Não use" (N19.11) no topo de formulários avançados com muitos campos, Data Matrix, Aztec, PDF417, TOTP, HOTP, eSIM, GS1. Destaque laranja, duas cláusulas, antes de qualquer entrada de campo. Substitui o padrão em que a prosa explicativa ficava na parte inferior e os usuários só a liam após terminar de digitar.
- Banner de capacidade (N19.9) no painel Estilo para simbologias não-QR, chip explícito + título ("Sem estilização, apenas código de barras simples") + descrição, substituindo a antiga dica de parágrafo único por algo mais escaneável.
- Validação semântica (N19.4): validador de segredo Base32 TOTP, verificação de prefixo CH/LI + 21 caracteres do Swiss QR IBAN, checksum mod-97 do IBAN SEPA (detecta dígitos digitados incorretamente) e um aviso de campo cruzado de WiFi Enterprise quando EAP está selecionado mas a identidade está em branco. Inline, não-bloqueante, reutiliza o registro VALIDATION_RULES existente.
- QR Lab agora a um clique do Download (N5), um chip de borda tracejada ("Teste antes de imprimir no QR Lab →") fica inline com os botões de download para que a verificação seja visível no ponto de exportação.
- Avançado abre com foco na tarefa (N19.1): a faixa de categorias agora é organizada por o que você está fazendo em vez de qual simbologia é. Nove buckets de fluxo de trabalho, Compartilhamento cotidiano, Eventos & locais, Mídia & arquivos, Marketing & avaliações, WiFi & telecom, Pagamentos & bancário, Varejo & GS1, Embarque & ID, Auth & dev, substituem a antiga taxonomia de simbologia (Cotidiano / Negócios / Pagamentos / Identidade / Segurança / Industrial / Padrões Avançados). Todos os 105 botões de tipo remapeados; grade de tipos do rodapé reagrupada para corresponder.
- Impulso de autoridade (N3): novo hub /standards/ com oito páginas completas de referência, GS1 Digital Link (Sunrise 2027, validador ao vivo de dígito verificador GTIN), TOTP & HOTP (RFC 6238 / 4226, validador ao vivo de entropia Base32, compatibilidade de autenticador), Swiss QR-bill (SIX IG v2.3, validador ao vivo de IBAN CH/LI com detecção de QR-IBAN), carteira de motorista AAMVA (CDS v10, tabela de código de elemento, tabela IIN, enquadramento de uso legal), ativação eSIM (LPA) (GSMA SGP.22, compatibilidade iOS 17.4+ / Android 13+), QR de comerciante EMVCo (estrutura MPM / CPM, derivativos regionais PIX/UPI/PromptPay/SGQR/DuitNow, tabela MCC), Micro QR & rMQR (ISO/IEC 18004 Anexo M + ISO/IEC 23941, gráficos de capacidade, compatibilidade de scanner especializado) e e-fatura ZATCA (FATOORA da Arábia Saudita, tags TLV 01–09, Fase 1 vs Fase 2). Cada página: link da especificação + vetores canônicos de teste + validador ao vivo onde aplicável + armadilhas + compatibilidade de scanner + data da próxima revisão. Primeiro passo em direção ao objetivo de autoridade enciclopédica.
- Esqueleto do corpus de teste público (N2): nova página /proof/corpus/ documentando a metodologia que qualquer pessoa pode usar para auditar afirmações de compatibilidade de scanner, baixe os fixtures, regenere QRs, escaneie com sua própria frota, reporte discrepâncias. Tabela curada de 18 linhas de resultados de scan esperados em Câmera iOS, Câmera Android e scanners profissionais. Linka /test-vectors/ (o JSON de desenvolvedor) e /standards/ como a camada de autoridade superior.
- Itens anteriores do Revisor #6 enviados neste dia em commits anteriores: grade de blocos jobs-first (N14), frase de marca "A ferramenta QR mais confiável da internet" (N17), paleta de comandos (N19.2), presets expert (N19.5), inspetor de carga (N19.10), varredura de formato canônico <title> (N20).
- Backlog de tradução: as cópias N14 e N17 estão em 25 idiomas; todo o restante da conclusão do Revisor #6 de hoje (N19.3 / N19.4 / N19.7 / N19.8 / N19.9 / N19.11 / N5 / N6 / N7 / N15 / N16 / Pro SSO/SCIM) está apenas em inglês por enquanto e usa fallback para inglês em outros locais até a próxima passagem de tradução.
2026-04-17, Keep-Alive ao vivo, páginas de roadmap + suporte Pro, correções de webhook
- Camada Keep-Alive ao vivo no Pro: $4/mês, $36/ano ou $240 Decade (pré-pagamento de 10 anos, $2/mês efetivo). Preserva códigos existentes com um cooldown de edição de destino de 30 dias; sem novos códigos, sem assentos, sem API. Migração 007, três produtos Stripe, caminho de webhook para o pagamento único Decade, gates de plano no painel/códigos/edição. Banners "Lança no Q3 2026" revertidos em /compare/ e /no-lock-in/.
- Nova página em pro.qr.abundera.ai/roadmap/: o que foi entregue, compromissos Q3/Q4 com critérios de encerramento, lista explícita do que não vamos construir.
- Nova página em pro.qr.abundera.ai/support/: metas de tempo de resposta por camada, endereço de divulgação de segurança, escopo.
- Correções de webhook Stripe: corrida de idempotência (poderia perder um pagamento repetido), dedup via SELECT antes de processar, INSERT em caso de sucesso. Handler de pagamento Decade lança exceção em price_id ausente/desconhecido ou camada incompatível em vez de descartar silenciosamente.
DEFAULT_SEAT_LIMITindefinido na aceitação de convite de equipe. Tolerância de assinatura 60s → 300s.incomplete_expiredmapeado paratrialing(eraexpired). - Documentação:
ABUNDERA_JWT_AUDIENCESdocumentado como obrigatório; esquemaPLAN_PRICE_MAPemdocs/INTEGRATIONS.md; referências não utilizadas deABUNDERA_SERVICE_SECRETremovidas. - Testes: 70 passando. Adicionados 8 para predicados Keep-Alive e o cooldown de 30 dias.
2026-04-16, Lançamento Pro, reformulação da escada de preços, acompanhamentos de revisão externa
- Portal Pro ao vivo em pro.qr.abundera.ai.
- Escada de preços (mensal / cobrado anualmente por mês): Solo $12/$9, Business $39/$29, Team $129/$99, Agency $449/$349, Enterprise $1.800/$1.500. Anual é a seleção padrão na grade de preços.
- Limites de scan mensais explícitos (50K / 250K / 1M / 4M / 25M) substituem "ilimitado". Exceder o limite não quebra redirecionamentos; medimos a sobrecarga à taxa de lista da camada ($0,06–$0,18 por 1K scans).
- Cada camada tem uma contagem de códigos explícita (500 / 2.500 / 15K / 75K / 500K), sem letras miúdas "ilimitado*".
- 13 páginas de destino de pagamento adicionadas: Apple Wallet, Google Wallet, EPC Girocode, BLIK, Interac, MB WAY, GCash, Maya, Kakao Pay, Naver Pay, LINE Pay, iDEAL, Boleto. Contagem de tipos 91 → 104; sitemap agora com 3.224 URLs.
- Pré-verificação de scan expandida de 4 condições genéricas para 8 cenários específicos de tarefa (adesivo de menu, pôster de janela, crachá em cordão, etiqueta de prateleira, etiqueta de armazém, sinalização externa, embalagem, cartão de visita). Grau C/D/F exibe um modal antes do download.
- Matriz de preços /compare/ dividida em seis grupos compatíveis em capacidade. Entradas de concorrentes adicionadas para Bitly, Flowcode, Uniqode, QR Code Chimp, QRTIGER, cada uma datada e marcada para verificação mensal. Custo mensal por código exibido em cada linha.
- Verificação de deriva de contagem no script pré-deploy: analisa todas as páginas geradas em
site/em busca de contagens de tipos codificadas. A deriva 91/104 em /compare/ foi publicada porque a verificação antiga só observava três páginas. - Enquadramento do site Pro: "Gratuito é para guardar. Pro é para mudar." aplicado em /no-lock-in/, /static-vs-dynamic/ e no CTA Pro da página inicial.
- Produtos Stripe criados via o script idempotente
stripe-setup.py(Solo + Team elevados para rev 2 com os novos valores).PLAN_PRICE_MAPmantém price IDs antigos e novos para que assinantes existentes permaneçam mapeados. - Outros: faixa de detalhes de compatibilidade acima dos campos do gerador, faixa de confiança na página inicial, carimbo de atualização em cada página, página esqueleto /accessibility/, packs de presets do setor /for/ (8), dica de descoberta do Wizard/QR Lab, auditoria de contagem (120 → 336 ícones, 24 → 50 presets BCD), limpeza de linguagem do repositório (o repo é privado; "Código do gerador open source" → "Código do lado do cliente auditável no navegador"), imagem OG regenerada com QR de evento iCalendar válido.
2026-04-15, Simples/Avançado, /compare/, Salvar no Pro
- Alternador Simples / Avançado na página inicial. Simples exibe 8 tipos cotidianos (URL, WiFi, vCard, Email, Telefone, SMS, Evento, Texto); Avançado restaura os 104 completos. O modo é persistido no
localStorage; páginas de destino para tipos não-Simples alternam automaticamente. - Matriz de concorrentes /compare/ publicada: recurso por recurso contra QR Code Generator, QRCode Monkey e Uniqode. Datada, revisada mensalmente.
- Botão "Salvar no Pro" no site gratuito: promova com um clique um código gerado para o portal Pro. O estado vai e volta via hash de URL; usuários não autenticados retornam ao gerador com o trabalho preservado.
- Setas de rolagem na faixa de categorias no desktop; rolagem suave no celular.
- A restauração de histórico alterna automaticamente para Avançado quando o tipo de um código salvo não está disponível no modo Simples.
- Texto do CTA Pro suavizado; história anti-lock-in (QR de backup estático, carência de 90 dias, portabilidade de domínio) trazida para o topo.
2026-04-14, Portal Pro online, 3 novos tipos, correção de autofill
- Portal Pro (
pro.qr.abundera.ai) online de ponta a ponta. - Três novos tipos no site gratuito: M-PESA Quênia (EMVCo MPM), Reunião por Vídeo (atalhos Zoom/Meet/Teams/Webex), Cupom/Código Promocional.
- O tipo GS1 Digital Link agora suporta todos os 12 Application Identifiers obrigatórios para Sunrise-2027.
- Novas páginas SEO:
/static-vs-dynamic/,/no-lock-in/(contratual: carência de 90 dias, exportação com um clique, exclusão GDPR de 30 dias, QR de backup estático). - Correção de autofill (sexta tentativa): blocos de campo por tipo são elementos
<form>reais com seus próprios tokensautocomplete; formulários inativos recebemdisplay: nonepara que o Chrome não sinalize os inputs fora da tela. O agrupamento vertical vCard/Endereço/Contato/WiFi-Enterprise agora funciona no Chrome, Safari e Firefox. Harness Playwright com 0 violações. - Funil de avaliação: dropdown de plataforma (Google/Yelp/TripAdvisor) com texto de placeholder por plataforma.
- Wizard: 8 referências quebradas de result-slug corrigidas.
- Cabeçalho/rodapé unificados via partials compartilhados; páginas de ferramenta (Wizard, QR Lab, Test Vectors) movidas para o mesmo sistema de templates.
- Verificação pré-deploy: validação de link interno + guarda de
showToast()em inglês puro. - Correções BCD: estabilidade de layout vertical, regressão de UI em página de destino, rótulos de links RFC, artefato de marca d'água.
- HTML de página de destino gerada não é mais rastreado pelo git (ainda implantado; git rastreia o template e o gerador).
2026-04-13, Paridade em 25 idiomas, redesign de cabeçalho/rodapé, harness Playwright
- 6.660 chaves com fallback em inglês traduzidas em 25 arquivos de idioma. Páginas de destino em idiomas não-inglês não recorrem mais a strings em inglês. Pipeline de tradução refatorado em validador/planejador.
- i18n estendido para as páginas de ferramentas: Wizard, QR Lab e Test Vectors agora têm 25 variantes de idioma, com tags hreflang e entradas no sitemap.
- Harness round-trip Playwright: gera um código para cada tipo em cada idioma, decodifica o canvas, verifica os campos. 0 violações.
- Redesign de cabeçalho/rodapé: cabeçalho slim, rodapé de 3 colunas correspondendo ao padrão sign.abundera.ai. O drawer hamburger no celular agora exibe os itens de navegação ao ser aberto (estava quebrado anteriormente).
- Clicar na pré-visualização do QR → lightbox de zoom. O rótulo exibe nome do tipo + primeiro input (antes mostrava a carga bruta).
- Correção de autofill da primeira passagem (efetivada em 2026-04-14).
- A busca de tipo revela tipos avançados; fecha ao selecionar; abas de categoria vazias ocultas no modo Popular; a restauração de histórico alterna o tipo inline em vez de redirecionar.
2026-04-12, Paridade em 26 idiomas, 13 novos tipos de carga, 3 códigos de barras 2D não-QR
- Paridade completa em 26 idiomas: cada chave em inglês existe em todos os arquivos de idioma (1.302 chaves × 25 idiomas). 5.533 entradas adicionadas em 4 passagens (nomes próprios, rótulos curtos, rótulos de campos de formulário, toasts, dicas). Os 30 hints de pagamentos de marca ficam em inglês por design, URLs e nomes de marca são autoritativos em inglês.
- Deduplicação: 113 blocos de chaves duplicadas obsoletos removidos em 19 arquivos de idioma (deriva acumulada de rebases anteriores).
- Correção do cabeçalho de páginas de informação: blog/about/privacy/changelog usavam classes
.brand/.header-inner/.brand-textsem CSS definido. Alternados para o mesmo markup.logodo app principal. - 4 tipos de URI baseados em padrões: HOTP (RFC 4226), eSIM (GSMA SGP.22 LPA), SIP/SIPS (RFC 3261), MMS/MMSTO.
- WiFi WPA2/WPA3-Enterprise: estende o formato
WIFI:com método EAP, autenticação de fase 2, identidade, identidade anônima. - 6 tipos de pagamento regionais: Alipay, WeChat Pay, Swish (SE), Vipps (NO), Mercado Pago (LatAm), Payconiq (Benelux).
- 3 códigos de barras 2D não-QR: Data Matrix (ISO 16022), Aztec (ISO 24778), PDF417 (ISO 15438). bwip-js (~1 MB) carregado de forma lazy apenas quando um desses tipos é selecionado.
- Seção de vitrine em 26 idiomas adicionada à página inicial com links em escrita nativa.
- Script de auditoria pré-deploy ganhou verificação de sincronização
BATCH_VALID_TYPES+ guarda deshowToast()em inglês puro. - Rodapé, páginas de destino e chaves i18n para todos os 13 novos tipos (fonte em inglês).
2026-04-11, Busca de URL de foto BCD, pré-visualização sticky, presets expansíveis
- BCD: o campo de URL de foto agora busca e incorpora imagens remotas como data URLs para que o canvas de exportação não seja contaminado por carregamentos cross-origin (exportação PDF/PNG agora funciona em hosts sem CORS).
- Layout de desktop BCD: o painel de pré-visualização agora é
position: sticky, de modo que quando o usuário expande todas as seções, os controles rolam livremente sem perder a visibilidade da pré-visualização ao vivo. (Antes, expandir Conteúdo + Layout + Opções empurrava Mostrar-Campos para fora da tela.) - A grade de presets BCD agora é expansível, mostra 12 layouts inicialmente com um botão "Mostrar todos os layouts", espelhando a UX do seletor de ícones.
- Inputs de slogan + legenda QR reformulados: rótulo empilhado + input de largura total (antes era uma barra lateral de 150px).
- Distintivo de escaneabilidade elevado de
bottom: -24pxpara-18pxpara parar de cobrir o botão de copiar. - Instruções de CSV em lote agora mencionam Google Sheets, Excel e Numbers explicitamente.
2026-04-08, Biblioteca de ícones por setor
- 24 novos ícones de logo central (96 → 120) voltados para saúde, alimentação & bebidas, tecnologia e finanças.
- 10 novos presets de layout BCD (40 → 50): Concrete, Honey, Indigo, Luxe, Midnight II, Ocean II, Slate, Verdant, Wine, Candy.
- Bug de estratégia de cache-buster corrigido: parâmetros
?v=empage-init.js+lang-redirect.jsestavam ausentes nas páginas de destino, causando carregamentos obsoletos de módulos após deploys.
2026-04-04, Fundos gradientes BCD + verso do cartão + 12 novos presets
- BCD: 12 novos presets (Dark Mode, Pastel, Ocean, Cherry, Slate, Emerald, Amber, Mono, Rose, Midnight, Sand, Carbon). 36 presets no total.
- Fundos gradientes controlados pelo usuário com segundo seletor de cor.
- Renderização do verso do cartão com empresa + slogan + texto CTA.
- Linha de ícones sociais (LinkedIn / X / Instagram).
- Bloco de endereço renderizado a partir de campos vCard.
- Miniaturas visuais de presets, cada botão de preset agora renderiza um mini canvas em vez de um placeholder.
2026-03-29, Reforma do BCD + exportação a 600 DPI
- Business Card Designer com seções de acordeão recolhíveis, pré-visualização móvel sticky, rodapé de exportação sticky.
- Inputs de cor hexadecimal com sincronização bidirecional com o seletor de cor, amostras de paleta de cores.
- 4 formatos de foto (círculo, quadrado, arredondado, hexágono).
- Resolução de exportação elevada para 600 DPI para impressão nítida.
- Menu kebab: Exportar template, Importar template, Surpreenda-me, Compartilhar cartão, Imprimir folha (10 em US Letter + A4).
- Recorte de foto forçado quadrado. Guarda de dados mínimos antes de abrir o designer.
- Presets BCD aumentados: 8 novos visualmente distintos (Neon, Art Deco, Sunset, Forest, Brutalist, Kraft, Nordic, Retro 80s). 24 presets no total.
2026-03-22, 20 novos tipos QR + Link-in-Bio + comparações com concorrentes
- 20 novos tipos 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 renderiza toda a página bio a partir do hash URL do QR, sem backend, sem conta, sem rastreamento.
- Widget iframe /embed/ (API postMessage para integração com o pai).
- Páginas de comparação com concorrentes /vs/ (variantes em 26 idiomas).
- Pacote npm @abundera/qr + CLI com 25 codificadores de tipo.
2026-03-15, 96 ícones de logo central + 5 novos idiomas
- 96 ícones de logo central (12 → 96): cripto, comunicação, mídia, utilitário, comércio, transporte, natureza, alimentos, pessoas, eventos, 12 carinhas, 18 glifos de redes sociais (X, Facebook, Instagram, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Snapchat, Discord, Telegram, GitHub, Threads, Bluesky, Mastodon, Twitch, Signal, Medium). Expansível via botão <details>.
- 5 novos idiomas (21 → 26): sueco, tcheco, dinamarquês, norueguês, finlandês. 1.106 chaves cada um com traduções nativas.
- Exportação EPS (PostScript Nível 2 com JPEG embutido, codificado em ASCII85) para fluxos de trabalho gráficos (Illustrator, InDesign, CorelDRAW).
- Exportação GIF animado (gif.js, arco-íris de 8 quadros).
- Exportação SVG BCD, exportação JPG BCD.
2026-03-08, Auditoria de plataforma + varredura de acessibilidade
Sprint de correção de bugs: 3 problemas CRÍTICOS + 7 ALTOS + 10 MÉDIOS corrigidos.
- Violação de CSP de script inline em todas as 55 páginas de destino, movido para atributo
data-qr-preselectno body. - Bug de cache obsoleto do service worker, chaves sem query string → URL completa + stale-while-revalidate.
- Desincronização do tipo de formulário ao clicar na pílula BCD em página de destino não-vCard.
- Visibilidade de imagem de fundo (slider de opacidade, módulos com 90% de transparência, roteamento do modal de recorte).
- Overflow do modal de recorte no celular.
- Zoom por rolagem do mouse removido (estava sequestrando o scroll).
- Vazamento de IP do avatar mitigado (referrerpolicy + cabeçalho no-referrer).
- Correção de rede aberta WiFi em lote, paridade de campos MeCard em lote, validação Base32 TOTP.
- Alvos de toque WCAG 2.5.8 (mínimo 44×44 em ponteiro grosseiro).
- Varredura aria-hidden em 87 SVGs decorativos.
- Respeito a prefers-reduced-motion.
- Toast aria-live, anel focus-visible, navegação por teclado no recorte, teclas Home/End no menu de overflow.
- Otimização de pré-carregamento de fonte.
2026-03-01, 15 tipos baseados em padrões + validador de escaneabilidade
- 15 novos tipos QR: TOTP/2FA, Swiss QR-bill (com sobreposição obrigatória da cruz vermelha suíça), PIX (Brasil), PromptPay (Tailândia), EMVCo comerciante genérico, Lightning BOLT11, chave pública SSH, chave pública OpenPGP, configuração WireGuard, GS1 Digital Link, Spotify, Fediverse (Mastodon/Bluesky/Nostr/Matrix/Threads), Geo URI, Magnet, iCalendar completo.
- Validador de escaneabilidade, executa jsQR sobre o canvas renderizado e avisa sobre falhas de decodificação.
- URL imprimível de fallback, botão adiciona a URL de destino como texto simples abaixo do QR.
- jsQR carregado de forma lazy (economiza 262 KB de carregamento imediato).
2026-02-22, Editor de gradiente com múltiplas paradas + cores por olho
- Editor de gradiente com múltiplas paradas (até 5 cores).
- Cor interior/exterior independente por olho.
- Modo QR com imagem de fundo (slider de opacidade, EC=H forçado automaticamente).
- Pinch-zoom no canvas de pré-visualização.
- Web Share API para QR codes e cartões de visita.
- Formato de exportação WebP.
- Desfazer/refazer (Ctrl/Cmd-Z, buffer de 50 passos).
- Botão de template aleatório ("Surpreenda-me").
2026-02-15, Páginas de privacidade & segurança + reforço de i18n
- 4 novas páginas de credibilidade: /privacy/, /terms/, /security/, /about/, em todos os 21 idiomas.
- /.well-known/security.txt publicado.
- 29 strings em inglês codificadas substituídas por chamadas
qrT(); ~100 novas chaves i18n traduzidas para todos os 21 idiomas. - Scripts inline externalizados, CSP reforçado (unsafe-inline removido).
2026-02-08, Acessibilidade de modais + gerenciamento de foco
- Armadilha de foco em todos os 3 modais (recorte, BCD, diálogos personalizados).
- Polimento de navegação por teclado no menu de overflow BCD, seletor de idioma e seletor de tipo.
- Correções críticas: bordas de quadros SVG renderizadas um pixel fora, vulnerabilidade XSS na pré-visualização de zoom em lote, erro
btoa()Latin1 ao clicar no logo de preset.
2026-02-01, Lançamento inicial
- Abundera QR lançado com 20 tipos QR, 40 templates, geração CSV em lote (500 códigos), Business Card Designer (300 DPI), 20 idiomas, 420 páginas de destino estáticas.
- Postura privacy-first: 100% no lado do cliente, sem contas, sem rastreamento, sem códigos de redirecionamento dinâmico.