Pular para o conteúdo

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/codes continua 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.ts previne regressões no confirm() do fluxo de exclusão de QR Codes.
  • 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, wu3qaa abre https://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.ts protege o href do link, o comportamento de nova aba, noopener noreferrer e 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 usa qr3.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/pricing não sejam bloqueadas pelo Redirect Worker.
  • Testes: packages/redirect/tests/unit/redirect.test.ts verifica 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 as dpp_scans do workspace da chave de API (active_dpps, scans_by_day, top_dpps com 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ção 0011) — separada de scans (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/:dppId com 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ém eu_compliance + preview.changed_fields.
  • Dashboard: Cartão do simulador nos detalhes do DPP (/dashboard/dpp/:dppId) — chips para DE/AT/FR/IT/ES/NL + personalizado, menu suspenso de status, Preview EU impact / Save changes / Reset. Não bloqueante via Remix useFetcher.
  • 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/validate agora também retorna eu_compliance — o mesmo validador de GET /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-compliance com compliant / 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 textile com cadeia obrigatória AGEC (tecelagem/tricô → tingimento/impressão → confecção), por fibra origin_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/import aceita CSV und XLSX (compatível com Workers via SheetJS xlsx, 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_csv da resposta 201; GET /v1/dpp/import/templates/:category?format=csv|xlsx fornece modelos prontos para baterias e têxteis.
  • Dashboard: Upload por arrastar e soltar em /dashboard/dpp/import com 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/validate ignoram o novo campo eu_compliance sem alterações.
  • Os fluxos de battery existentes 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).