Changelog
Changelog
Destaques selecionados dos últimos lançamentos. Para versões completas da API e política de alterações incompatíveis (breaking changes), consulte a Versão da API e Política LTS.
Alterações detalhadas em endpoints individuais: Especificação OpenAPI e Referência interativa da API.
2026-04 · Análise do Dashboard por QR Code
- Dashboard: O botão de análise (Analytics) na lista de QR Codes agora abre a página de estatísticas do respectivo QR Code em
/dashboard/codes/{id}. - Roteamento: O alias
/dashboard/codescontinua a redirecionar para/dashboard, mas não interseta mais rotas de detalhes como/dashboard/codes/{id}. - API: A página de detalhes carrega o QR Code diretamente via
GET /v1/codes/:id; com isso, ela não depende mais dos limites de paginação da lista. - Testes: Testes de regressão cobrem o redirecionamento do alias e o carregamento direto do código.
2026-04 · Diálogo de exclusão de QR Codes no Dashboard
- Dashboard: O ícone de lixeira na lista de QR Codes agora abre um diálogo React próprio em vez de um popup nativo do navegador.
- Feedback: Após a exclusão, uma notificação toast é exibida para indicar sucesso ou erro.
- Testes:
packages/dashboard/tests/dashboard.test.tsprevine regressões noconfirm()do fluxo de exclusão de QR Codes.
2026-04 · Teste de link curto no Dashboard para QR Codes dinâmicos
- Dashboard: Os shortcodes na lista de QR Codes agora são clicáveis diretamente como links de redirecionamento externos. O ícone de link externo ao lado de, por exemplo,
wu3qaaabrehttps://qr3.app/{shortCode}em uma nova aba. - i18n: Adicionados textos de dica (tooltip) em alemão e inglês.
- Testes:
packages/dashboard/tests/dashboard.test.tsprotege o href do link, o comportamento de nova aba,noopener noreferrere o ícone contra regressões.
2026-04 · Rota do Redirect Worker para QR Codes dinâmicos
- Correção: Os QR Codes dinâmicos em
https://qr3.app/{shortCode}voltam a ser processados pelo Redirect Worker. A rota de produção agora usaqr3.app/*, pois as rotas do Cloudflare Workers não suportam parâmetros de caminho:code. - Robustez: Caminhos que não correspondem são encaminhados para a origem da landing page, para que páginas normais como
/de/pricingnão sejam bloqueadas pelo Redirect Worker. - Testes:
packages/redirect/tests/unit/redirect.test.tsverifica a rota curinga (wildcard), o processamento de shortcode e o encaminhamento de origem (pass-through).
2026-04 · Visão geral de varreduras DPP do Workspace (Q3.4.2)
- Novo:
GET /v1/workspace/stats/dpp?days=30— agrega todas asdpp_scansdo workspace da chave de API (active_dpps,scans_by_day,top_dppscom nome/categoria do produto). - Dashboard: Cartão na página inicial (
/dashboard) com gráfico de barras de 30 dias + listas dos principais — em paralelo com os cartões de QR Code. - Público: Link curto de marketing
GET /dpp/dpp_<id>(um segmento) para demonstrações ao vivo, em paralelo com/dpp/{gtin}/{serial}.
2026-04 · Análise de varreduras DPP (Q3.4.1)
- Novo:
GET /v1/dpp/:id/stats?days=30— varreduras agregadas do resolvedor GS1 público por DPP. Campos:total_scans,period_scans,scans_by_day,top_countries,top_devices,top_representations. - Novo: Tabela
dpp_scans(migração0011) — separada descans(Redirect Worker). Os endereços IP são transformados em hash com um salt rotativo diário, IPs brutos nunca chegam ao D1. - Dashboard: Cartão de minigráfico (SVG, sem biblioteca de gráficos) em
/dashboard/dpp/:dppIdcom barras de 30 dias + detalhamento dos 3 principais. Estado vazio (empty state) assim que um DPP estiver ativo, mas ainda não tiver varreduras.
2026-04 · Simulador de conformidade da UE ao vivo (Q3.3.7)
- Novo:
POST /v1/dpp/:id/validate-update— simula atualizações parciais stateless (status, lista de mercados, …) sem persistência. A resposta contémeu_compliance+preview.changed_fields. - Dashboard: Cartão do simulador nos detalhes do DPP (
/dashboard/dpp/:dppId) — chips paraDE/AT/FR/IT/ES/NL+ personalizado, menu suspenso de status, Preview EU impact / Save changes / Reset. Não bloqueante via RemixuseFetcher. - Robustez: Auxiliares do simulador extraídos (
readUpdatePatchFromForm,marketCountriesKey) + 18 novos testes unitários; correção de bug: entrada única não ISO não limpa mais a lista de mercados.
2026-04 · Visualização de conformidade da UE ao vivo no formulário de criação (Q3.3.6)
- Alterado:
POST /v1/dpp/validateagora também retornaeu_compliance— o mesmo validador deGET /v1/dpp/:id/eu-compliance, stateless antes de salvar. - Dashboard: Visualização abaixo do painel de validação existente + novo banner de proteção de salvamento antes dos botões de envio, caso haja erros/avisos pendentes (pluralização i18n DE/EN).
2026-04 · Validador da UE + UI Têxtil (Q3.3.4 + Q3.3.5)
- Novo: Validador de conformidade da UE com 5 regras têxteis (
TEXTILE_AGEC_REQUIRED,TEXTILE_MICROPLASTICS_CONSISTENCY,TEXTILE_SVHC_THRESHOLD,TEXTILE_GREENWASHING,TEXTILE_ESPR_READY). - Novo:
GET /v1/dpp/:id/eu-compliancecomcompliant/espr_ready/issues[]/summary. - Dashboard: Seção de conformidade da UE nos detalhes do DPP (blocos de resumo, cartões de problemas agrupados, selo ESPR-Ready no cabeçalho).
2026-04 · Esquema de DPP Têxtil (Q3.3.1–Q3.3.3)
- Novo: Categoria
textilecom cadeia obrigatória AGEC (tecelagem/tricô → tingimento/impressão → confecção), por fibraorigin_country+recycled_pct,svhc_substances[], opt-in ESPR (PEF, vida útil, reciclabilidade). - Novo: Campo básico
market_countries: string[](ISO 3166-1 alpha-2) em todas as categorias de DPP — controla as regras AGEC específicas da França e a nota obrigatória do consumidor francês. - Novo: Modelo HTML do consumidor com caixa de aviso de microplásticos AGEC, cadeia de origem de 3 etapas (pílulas com bandeiras), lista SVHC, seção de durabilidade e reciclabilidade.
- Migração:
0010_dpp_market_countries(D1).
2026-04 · Importação em lote de DPP (Q3.2.1–Q3.2.5)
- Novo:
POST /v1/dpp/importaceita CSV und XLSX (compatível com Workers via SheetJSxlsx, pacote gzip de ~283 KB). - Escalável: limite baseado no plano (Free 100 → Enterprise 10k) +
db.batch()fragmentado em lotes de 100 + limite de corpo de 5 MB. - Novo: Relatório de erros como CSV no campo
errors_csvda resposta 201;GET /v1/dpp/import/templates/:category?format=csv|xlsxfornece modelos prontos para baterias e têxteis. - Dashboard: Upload por arrastar e soltar em
/dashboard/dpp/importcom proxy de modelo e download de CSV em linha.
Extensões LTS sem alterações incompatíveis (Non-Breaking)
Todas as alterações mencionadas acima são aditivas:
- Clientes existentes de
POST /v1/dpp/validateignoram o novo campoeu_compliancesem alterações. - Os fluxos de
batteryexistentes permanecem inalterados. market_countriesé opcional e tem como padrão[].
Consulte Versão da API para obter a política de alterações incompatíveis (breaking changes).