Skip to content

Releases: Tooark/nuget-tooark

Release v4.1.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 06:03
5e0cec5

Release Notes v4.1.0

Data de lançamento: 18/09/2026

🆕 Resumo

Versão com a revisão das constantes de validação dos Value Objects (issue #29): valores usados nas validações passam a ser expostos como public const para consulta externa (ex.: dimensionamento de colunas, construção de strings delimitadas e configuração de timeout). Inclui também a correção das mensagens de erro padrão das validações de link de vídeo, originalmente rascunhada como v4.0.2 e absorvida por este lançamento. Não há breaking changes.


Adicionado

  • Tooark.ValueObjects — constantes públicas para consulta externa:
    • DelimitedString.DefaultDelimiter (;): delimitador padrão, antes private const;
    • LanguageCode.Length (5): tamanho do código de idioma no formato xx-XX (ex.: pt-BR).
  • Tooark.ValidationsValidation.DefaultTimeout (300 ms): tempo limite padrão das validações por expressão regular, antes internal const.

Modificado

  • Tooark.ValueObjectsLinkVideo: o timeout de regex deixa de ser o literal 300 e passa a referenciar Validation.DefaultTimeout (mesmo valor, sem mudança de comportamento).

Corrigido

  • Tooark.ValidationsLinkVideoValidation: os tipos passados para ValidationErrorMessages.IsValid nas sobrecargas com mensagem padrão estavam copiados do ProtocolValidation e foram corrigidos para refletir a validação real:
    • IsLinkVideo: "Url""LinkVideo";
    • IsLinkVideoYouTube: "Ftp""LinkVideoYouTube";
    • IsLinkVideoVimeo: "Sftp""LinkVideoVimeo";
    • IsLinkVideoDailymotion: "ProtocolFtp""LinkVideoDailymotion".
  • A validação em si (regex) não mudou — o defeito era apenas na mensagem padrão. As sobrecargas com message explícito não foram afetadas.

Impacto

  • Constantes novas são adições compatíveis à API pública (por isso minor, não patch). Atenção: valores de const são embutidos em tempo de compilação no assembly consumidor — se algum valor mudar em versão futura (ex.: revisão de tamanhos mínimos prevista para a v5), é necessário recompilar para enxergar o novo valor.
  • A mensagem padrão das quatro sobrecargas de LinkVideoValidation muda de Validation.IsNotValid;{Propriedade};{TipoAntigo} para Validation.IsNotValid;{Propriedade};{TipoNovo}. Quem parseia o terceiro segmento dessas mensagens deve atualizar os valores esperados.
  • Compatível com .NET 8.0+ e .NET 10.0+.

Fora do escopo

  • A exigência de tamanho mínimo diferente de 0 nas validações (segunda parte da issue #29) altera comportamento e fica para a v5, como breaking change documentado.
  • As constantes de cálculo de dígito verificador (DocumentDigit: pesos, offsets e tamanhos base) permanecem privadas por serem detalhes de implementação, sem valor de consulta externa.

Informações Adicionais

  • Issue relacionada: #29
  • Tag relacionado: v4.1.0
  • Data de lançamento: 2026-09-18

Release v3.3.6

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:37

Release Notes v3.3.6

Data de lançamento: 18/09/2026

🆕 Resumo

Versão de manutenção com a correção das mensagens de erro padrão das validações de link de vídeo do pacote Tooark.Validations, retroportada da v4.1.0. As sobrecargas sem parâmetro message exibiam tipos de validação copiados do ProtocolValidation, como "não é válido para Ftp" em um link do YouTube. Não há breaking changes.

⚠️ Aviso de fim de suporte: o suporte da linha v3 será encerrado em novembro de 2026, junto com o encerramento do suporte oficial ao .NET 8 (10/11/2026). Após essa data, a linha v3 não receberá novas correções de bugs, atualizações de dependências ou correções de segurança.

ℹ️ Migração necessária: para continuar recebendo atualizações e correções de segurança, é necessário migrar para a linha v4.x, que é a versão ativa em desenvolvimento. Consulte as release notes da versão v4.0.0 para o mapa de breaking changes.


Corrigido

  • Tooark.ValidationsLinkVideoValidation: os tipos passados para ValidationErrorMessages.IsValid nas sobrecargas com mensagem padrão estavam copiados do ProtocolValidation e foram corrigidos para refletir a validação real:
    • IsLinkVideo: "Url""LinkVideo";
    • IsLinkVideoYouTube: "Ftp""LinkVideoYouTube";
    • IsLinkVideoVimeo: "Sftp""LinkVideoVimeo";
    • IsLinkVideoDailymotion: "ProtocolFtp""LinkVideoDailymotion".
  • A validação em si (regex) não mudou — o defeito era apenas na mensagem padrão. As sobrecargas com message explícito não foram afetadas.

Build

  • Workflow de release: imagem do security-scanner atualizada de 1.8 para 1.9 e corrigida a URL do repositório na geração da release (uso de github.repository).

Impacto

  • A mensagem padrão gerada por essas quatro sobrecargas muda de Validation.IsNotValid;{Propriedade};{TipoAntigo} para Validation.IsNotValid;{Propriedade};{TipoNovo}. Quem parseia o terceiro segmento dessas mensagens deve atualizar os valores esperados.
  • Sem alterações na API pública dos pacotes.
  • Compatível com .NET 8.0+ e .NET 10.0+.

Informações Adicionais

  • Correção retroportada da v4.1.0 (origem: PR #47).
  • Tag relacionado: v3.3.6
  • Data de lançamento: 2026-09-18

Release v2.3.5

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:35

Release Notes v2.3.5

Data de lançamento: 18/09/2026

🆕 Resumo

Versão de manutenção com a correção das mensagens de erro padrão das validações de link de vídeo do pacote Tooark.Validations, retroportada da v4.1.0. As sobrecargas sem parâmetro message exibiam tipos de validação copiados do ProtocolValidation, como "não é válido para Ftp" em um link do YouTube. Não há breaking changes.

⚠️ Aviso de fim de suporte: o suporte da linha v2 será encerrado em novembro de 2026, junto com o encerramento do suporte oficial ao .NET 8 (10/11/2026). Após essa data, a linha v2 não receberá novas correções de bugs, atualizações de dependências ou correções de segurança.

ℹ️ Migração necessária: para continuar recebendo atualizações e correções de segurança, é necessário migrar para a linha v4.x, que é a versão ativa em desenvolvimento. Consulte as release notes das versões v3.0.0 e v4.0.0 para o mapa de breaking changes de cada salto de major.


Corrigido

  • Tooark.ValidationsLinkVideoValidation: os tipos passados para ValidationErrorMessages.IsValid nas sobrecargas com mensagem padrão estavam copiados do ProtocolValidation e foram corrigidos para refletir a validação real:
    • IsLinkVideo: "Url""LinkVideo";
    • IsLinkVideoYouTube: "Ftp""LinkVideoYouTube";
    • IsLinkVideoVimeo: "Sftp""LinkVideoVimeo";
    • IsLinkVideoDailymotion: "ProtocolFtp""LinkVideoDailymotion".
  • A validação em si (regex) não mudou — o defeito era apenas na mensagem padrão. As sobrecargas com message explícito não foram afetadas.

Build

  • Workflow de release: imagem do security-scanner atualizada de 1.7 para 1.9 e corrigida a URL do repositório na geração da release (uso de github.repository).

Impacto

  • A mensagem padrão gerada por essas quatro sobrecargas muda de Validation.IsNotValid;{Propriedade};{TipoAntigo} para Validation.IsNotValid;{Propriedade};{TipoNovo}. Quem parseia o terceiro segmento dessas mensagens deve atualizar os valores esperados.
  • Sem alterações na API pública dos pacotes.
  • Compatível com .NET 8.0+.

Informações Adicionais

  • Correção retroportada da v4.1.0 (issue de origem: PR #47).
  • Tag relacionado: v2.3.5
  • Data de lançamento: 2026-09-18

Release v4.0.1

Choose a tag to compare

@github-actions github-actions released this 25 Aug 01:43

Release Notes v4.0.1

Data de lançamento: 24/08/2026

🆕 Resumo

Versão de manutenção com atualização das referências do repositório renomeado no GitHub e ajuste no .gitignore para os arquivos de documentação XML gerados pelo build. Não há mudanças de código, comportamento ou API pública. Não há breaking changes.


Modificado

  • Repositório no GitHub renomeado de tooark-cs para nuget-tooark (o prefixo nuget- identifica o repositório dos pacotes NuGet na família Tooark). Referências atualizadas para https://github.com/Tooark/nuget-tooark:
    • Metadados NuGet (RepositoryBaseUrl, que alimenta RepositoryUrl e PackageProjectUrl) no Directory.Build.props — os pacotes passam a ser publicados com a nova URL a partir desta versão;
    • Links de contribuição e de licença (via raw.githubusercontent.com) em todos os READMEs.
    • As URLs antigas seguem funcionando via redirect do GitHub.

Build

  • .gitignore atualizado com a regra Tooark*/Tooark*.xml: os arquivos de documentação XML gerados pelo build na raiz de cada projeto (<Projeto>/<Projeto>.xml) deixam de aparecer como pendência no controle de versão. As regras existentes cobriam apenas os XMLs emitidos em bin/ e obj/.

Impacto

  • Sem breaking changes e sem alterações na API pública dos pacotes.
  • Compatível com .NET 8.0+ e .NET 10.0+.

Informações Adicionais

  • Tag relacionado: v4.0.1
  • Data de lançamento: 2026-08-24

Release v4.0.0

Choose a tag to compare

@paulosfjunior paulosfjunior released this 25 Aug 01:52

Release Notes v4.0.0

See notes: nuget-tooark-v4.0.0

Release v3.3.5

Choose a tag to compare

@paulosfjunior paulosfjunior released this 25 Aug 01:48

Release Notes v3.3.5

Data de lançamento: 24/08/2026

🆕 Resumo

Versão de manutenção com foco exclusivo em atualização de dependências, incorporando os últimos patches de segurança e servicing das bibliotecas utilizadas. Não há mudanças de código, comportamento ou API pública. Não há breaking changes.

⚠️ Aviso de fim de ciclo: as atualizações da linha v3 serão encerradas em outubro de 2026, junto com o encerramento do suporte oficial ao .NET 8. Após essa data, a linha v3 não receberá novas atualizações de dependências ou correções de segurança.

ℹ️ Nova versão disponível: a linha v4 já foi lançada, contendo duas breaking changes em relação à v3. Recomenda-se planejar a migração para a v4 para continuar recebendo atualizações e correções de segurança após o encerramento da linha v3.


Segurança

  • Verificação dotnet list package --vulnerable --include-transitive sem nenhum pacote vulnerável em todos os projetos da solução, nos dois targets (net8.0 e net10.0).
  • Mantidos os pins centrais de correção de CVE em System.Security.Cryptography.Xml (8.0.4 para net8.0 e 10.0.11 para net10.0).

Modificado

  • Atualização de dependências para as versões mais recentes, preservando a compatibilidade com os targets net8.0 e net10.0:
    • AWSSDK.S3 4.0.102.4;
    • Microsoft.NET.Test.Sdk 18.9.0;
    • OpenTelemetry 1.18.0 (core, exporters e instrumentações) e OpenTelemetry.Instrumentation.Process 1.18.0-rc.1.
  • Repositório no GitHub renomeado de tooark para nuget-tooark: RepositoryUrl e PackageProjectUrl dos pacotes NuGet e todos os links da documentação (READMEs) atualizados para https://github.com/Tooark/nuget-tooark.

Impacto

  • Sem breaking changes e sem alterações na API pública dos pacotes.
  • Compatível com .NET 8.0+ e .NET 10.0+.
  • Build limpo (0 avisos, 0 erros) e suíte completa de testes aprovada nos dois targets (3579 testes em net8.0 e 3579 em net10.0).

Informações Adicionais

  • Tag relacionado: v3.3.5
  • Data de lançamento: 2026-08-24

Release v2.3.4

Choose a tag to compare

@paulosfjunior paulosfjunior released this 25 Aug 01:44

Release Notes v2.3.4

Data de lançamento: 24/08/2026

🆕 Resumo

Versão de manutenção com foco exclusivo em atualização de dependências para correção de vulnerabilidades de segurança, mantendo o suporte ao .NET 8. Não há mudanças de código, comportamento ou API pública. Não há breaking changes.

⚠️ Aviso de fim de ciclo: as atualizações da linha v2 serão encerradas em outubro de 2026, junto com o encerramento do suporte oficial ao .NET 8. Após essa data, a linha v2 não receberá novas atualizações de dependências ou correções de segurança.

ℹ️ Novas versões disponíveis: já existem duas versões com breaking changes lançadas — v3 e v4. Recomenda-se planejar a migração para uma dessas linhas para continuar recebendo atualizações e correções de segurança após o encerramento da linha v2.


Segurança

  • Correção de vulnerabilidade transitiva HIGH de ReDoS (Regular Expression Denial of Service) em System.Text.RegularExpressions (GHSA-cmhx-cq75-c4mj):
    • adicionado pin central de System.Text.RegularExpressions 4.3.1, aplicado a toda a solução via CentralPackageTransitivePinningEnabled.
  • Correção de 7 vulnerabilidades transitivas HIGH em System.Security.Cryptography.Xml (via Microsoft.AspNetCore.MvcDataProtection), com pin central na versão 8.0.4.
  • Verificação dotnet list package --vulnerable --include-transitive sem nenhum pacote vulnerável em todos os 15 projetos da solução.

Modificado

  • Atualização de dependências para as versões mais recentes, preservando a compatibilidade com .NET 8:
    • Pacotes independentes de framework: AWSSDK.S3 4.0.102.4, Microsoft.NET.Test.Sdk 18.9.0, OpenTelemetry 1.18.0 (core, exporters e instrumentações) e ReportGenerator 5.5.11.
    • Pacotes atrelados ao framework atualizados dentro da linha 8.0.x: Microsoft.AspNetCore.Authentication.JwtBearer e Microsoft.Extensions.Localization 8.0.30, e Microsoft.AspNetCore.* (Http, Mvc, Mvc.Core) 2.3.12.
  • Workflow de release ajustado com a remoção do parâmetro make_latest na criação da release.

Impacto

  • Sem breaking changes e sem alterações na API pública dos pacotes.
  • Compatível com .NET 8.0+.
  • Build limpo (0 avisos, 0 erros) e suíte completa de testes aprovada (3483 testes).

Informações Adicionais

  • Tag relacionado: v2.3.4
  • Data de lançamento: 2026-08-24

Release v3.3.4

Choose a tag to compare

@github-actions github-actions released this 12 Aug 02:01

Release Notes v3.3.4

Data de lançamento: 11/08/2026

🆕 Resumo

Versão focada em Tooark.Observability e Tooark.Mediator. No Observability: correções funcionais (filtro de tracing, sanitização de dados sensíveis alinhada às convenções semânticas atuais do OpenTelemetry, overrides OTLP por sinal), melhorias de design (overrides programáticos refletidos no IOptions, intervalo de exportação de métricas com otimização serverless, eliminação de heurísticas por comparação de defaults). No Mediator: estratégia Sequential corrigida para execução sequencial real, fallback de scan de assemblies corrigido, dispatch reescrito com wrappers genéricos em cache (sem reflection por chamada) e scan de handlers resiliente. Inclui atualização de dependências (patches de servicing). Há breaking changes pontuais restritos a configuração programática e a semânticas corrigidas; configurações via appsettings.json permanecem 100% compatíveis.


Adicionado (Tooark.Observability)

  • OtlpOverrideOptions e OtlpBatchOverrideOptions: novos tipos com campos anuláveis para os overrides OTLP por sinal (Tracing:Otlp, Metrics:Otlp, Logging:Otlp):
    • Campos não informados (null) herdam o valor do OTLP global.
    • Campos informados sobrescrevem o global, mesmo quando iguais aos defaults — ex.: "Tracing": { "Otlp": { "Enabled": false } } desabilita o OTLP apenas para tracing com o global habilitado (antes era impossível).
  • MetricsOptions.ExportIntervalMilliseconds: intervalo de exportação de métricas via OTLP (PeriodicExportingMetricReaderOptions):
    • Padrão null: usa 60000ms, ou 5000ms quando o OTLP efetivo tem ServerlessOptimized habilitado (reduz perda de métricas em scale-to-zero).
    • Métricas usam reader periódico, não o processador Batch — as opções de Otlp.Batch nunca se aplicaram a métricas; agora há controle explícito e documentado.
  • Atributo de resource deployment.environment.name (convenção semântica atual), emitido junto com deployment.environment (chave legada, mantida para compatibilidade com backends antigos).

Modificado (Tooark.Observability)

  • Overrides programáticos (configure) passam a ser aplicados também ao IOptions<ObservabilityOptions> do container via services.PostConfigure — quem injeta as options vê o mesmo estado usado na configuração do OpenTelemetry. Removido registro duplicado de Configure<ObservabilityOptions>.
  • ServerlessOptimized deixa de detectar customização por comparação com números mágicos:
    • OtlpBatchOptions passa a usar backing fields anuláveis com flags internas de customização; os defaults serverless (MaxQueueSize=512, MaxExportBatchSize=128, ScheduledDelayMilliseconds=1000) aplicam-se apenas aos campos não customizados — valores definidos explicitamente são sempre mantidos, mesmo iguais aos defaults padrão.
    • Defaults e valores serverless extraídos para constantes nomeadas.
  • Clamp de MaxExportBatchSize <= MaxQueueSize movido do setter para a leitura, eliminando dependência da ordem de binding das propriedades.
  • Filtro de tracing ASP.NET Core (IgnorePaths/IgnorePathPrefix) pré-computado no startup — a normalização de prefixo e a montagem da lista deixam de executar a cada requisição HTTP.
  • Enrichers de sanitização reescritos para as convenções semânticas do OpenTelemetry 1.17:
    • ASP.NET Core: HideQueryParameters remove o atributo url.query (onde a query realmente é emitida).
    • HttpClient: HideQueryParameters remove a query do atributo url.full.
    • http.target (convenção legada) passa a ser apenas reescrito quando já presente com query — não é mais adicionado artificialmente.
  • Documentação: README do Tooark.Observability atualizado (novos tipos de override, semântica de herança por sinal, intervalo de métricas, tabela serverless, atributos de resource) e docs XML corrigidas (IgnorePaths lista os 7 paths reais do default).

Modificado (Tooark.Mediator)

  • Dispatch do Mediator reescrito com wrappers genéricos em cache estático (padrão MediatR):
    • Reflection (MakeGenericType/Activator) ocorre apenas na primeira chamada de cada tipo de mensagem; nas demais, o despacho é uma chamada virtual comum.
    • Exceções lançadas pelos handlers chegam ao chamador diretamente — sem embrulho em TargetInvocationException.
    • Compatível com AOT/trimming (sem Expression.Compile).
  • Scan de handlers do AddTooarkMediator:
    • Classes genéricas abertas são ignoradas (o dispatch não suporta open generics; antes quebravam a resolução do container).
    • Resiliente a ReflectionTypeLoadException: usa os tipos carregáveis do assembly em caso de falha parcial de carregamento.
  • MediatorOptions registrado via padrão Options (AddOptions<MediatorOptions>().Configure(...)):
    • Chamadas múltiplas de AddTooarkMediator (ex: aplicações modulares, um assembly por módulo) compõem as configurações em ordem de registro — antes, a configuração da segunda chamada era descartada silenciosamente pelo TryAddSingleton.
    • MediatorOptions continua resolvível por injeção direta (sem breaking change no construtor do Mediator).
    • Nova dependência: Microsoft.Extensions.Options (8.0.2 no TFM net8.0; 10.0.11 no TFM net10.0).
  • Interfaces IRequest<TResponse>, ICommand<TResponse> e IQuery<TResponse> (Tooark.Mediator.Abstractions) deixaram de declarar covariância (out) em TResponse:
    • O dispatch resolve o manipulador pelo tipo de resposta do ponto de chamada, então o uso covariante (enviar via referência de tipo-base) sempre falhava em runtime com Handler.NotFound; sem o out, esse uso passa a ser erro de compilação.
  • Documentação: README do Tooark.Mediator atualizado (recomendação de assemblies explícitos, semântica das estratégias de publicação, nota de desempenho do dispatch, tabela de dependências e âncoras do índice) e docs XML de ISender/IPublisher alinhadas às exceções reais.

Correções (Tooark.Mediator)

  • ENotifyStrategy.Sequential não era sequencial: todos os handlers de notificação eram iniciados imediatamente e a estratégia apenas mudava a forma de aguardá-los. Agora cada handler inicia somente após o anterior concluir, na ordem de registro, com fail-fast em caso de falha (handlers seguintes não são executados).
  • AddTooarkMediator() sem assemblies escaneava o assembly errado: o overload sem configure delegava para o overload com configure, fazendo Assembly.GetCallingAssembly() retornar o próprio Tooark.Mediator — nenhum handler da aplicação era registrado e todo SendAsync falhava com Handler.NotFound. O assembly chamador agora é capturado no ponto de entrada, com [MethodImpl(NoInlining)] para garantir resultado determinístico.

Correções (Tooark.Observability)

  • Filtro de tracing com IgnorePaths vazio desabilitava todo o tracing ASP.NET Core: com a lista vazia, o filtro retornava false para toda requisição; agora rastreia tudo (comportamento esperado).
  • Sanitização de query string sem efeito no OpenTelemetry 1.17: o enricher operava sobre http.target (convenção antiga, não mais emitida) e não removia a query dos atributos reais (url.query/url.full); a query podia vazar para o backend de telemetria.
  • Overrides OTLP por sinal não conseguiam "voltar ao default": a mesclagem por comparação com defaults ignorava valores explícitos iguais ao default (ex.: Enabled=false, Protocol=grpc), impossibilitando desabilitar OTLP por sinal ou reverter o protocolo. Resolvido pelos novos tipos anuláveis.
  • Crash em startup com ResourceAttributes que normalizam para a mesma chave (ex.: "My Key" e "my.key"): o ToDictionary lançava ArgumentException; agora a última ocorrência vence. O método também não muta mais o dicionário das options.
  • Serverless perdido no caminho real de configuração: a clonagem das opções de batch via getters marcava todos os campos como customizados, impedindo a aplicação dos defaults serverless após ResolveOtlpOptions; a cópia agora preserva a distinção entre customizado e default.

Pacotes Atualizados

  • Pacotes independentes do runtime:
    • AWSSDK.S3 4.0.101.4 -> 4.0.102.1
    • Microsoft.AspNetCore.Http 2.3.11 -> 2.3.12
    • Microsoft.AspNetCore.Mvc 2.3.11 -> 2.3.12
    • Microsoft.AspNetCore.Mvc.Core 2.3.11 -> 2.3.12
    • ReportGenerator 5.5.10 -> 5.5.11
  • Grupo net8.0 — linha 8.0.x (LTS), servicing:
    • Microsoft.AspNetCore.Authentication.JwtBearer 8.0.29 -> 8.0.30
    • Microsoft.Extensions.Localization 8.0.29 -> 8.0.30
    • Demais pacotes da linha mantidos (já no servicing mais recente).
  • Grupo net10.0 — linha 10.0.x, servicing (10.0.10 -> 10.0.11):
    • Microsoft.AspNetCore.Authentication.JwtBearer, Microsoft.Extensions.Caching.Memory, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.DependencyInjection.Abstractions, Microsoft.Extensions.FileProviders.Abstractions, Microsoft.Extensions.Localization, System.Security.Cryptography.Xml (override de segurança).
  • OpenTelemetry: todos os 8 pacotes já estão na última versão estável (1.17.0); OpenTelemetry.Instrumentation.Process segue em 1.17.0-rc.1 (não há versão estável publicada).

Testes

  • Suite validada com sucesso em ambos os TFMs após as alterações:
    • 3579 testes aprovados (net8.0)
    • 3579 testes aprovados (net10.0)
    • 0 falhas, 0 ignorados
  • Build validado nos dois TFMs sem erros ou avisos.
  • Cobertura (coverlet, net10.0):
    • Tooark.Observability: 97,99% linhas / 93,04% branches / 100% métodos
    • Tooark.Mediator: 100% linhas / 95,65% branches / 100% métodos
    • Tooark.Mediator.Abstractions: 100% linhas / 100% branches / 100% métodos
  • Novos testes do Observability: overrides por sinal (desabilitar OTLP com global habilitado, reverter protocolo ao default, override completo de ...
Read more

Release v3.3.3

Choose a tag to compare

@github-actions github-actions released this 27 Jul 00:49

Release Notes v3.3.3

Data de lançamento: 25/07/2026

🆕 Resumo

Versão de compatibilidade focada em permitir o consumo dos pacotes Tooark em aplicações .NET 10 sem o erro de restore NU1605 (downgrade de dependências). Os projetos passam a ser multi-target (net8.0;net10.0), declarando versões de Microsoft.Extensions.* e correlatos adequadas a cada framework. Consumidores em .NET 8 continuam recebendo a linha 8.0.x (LTS); consumidores em .NET 10 recebem a linha 10.0.x. Não há breaking changes de API para os pacotes de runtime.


Modificado

  • Multi-targeting de todos os pacotes publicáveis: net8.0 -> net8.0;net10.0.
  • Reorganização do Directory.Packages.props, separando os pacotes atrelados à versão do runtime em grupos condicionais por TFM (net8.0 e net10.0).
  • Atualização do global.json para SDK 10.0.100 com rollForward: latestMinor (um SDK .NET 10 compila ambos os TFMs).
  • Remoção do override explícito de DocumentationFile no Directory.Build.props, que causava colisão de escrita do XML de documentação entre os dois TFMs (o GenerateDocumentationFile já gera o arquivo por TFM).
  • Pipeline de build/publish:
    • actions/setup-dotnet passa a instalar os SDKs 8.0.x e 10.0.x.
    • Inclusão de etapa de varredura de segurança com a imagem pré-configurada ghcr.io/tooark/security-scanner:1.5 (Trivy + Hadolint + Betterleaks), parametrizada pela variável de ambiente SECURITY_SCANNER_IMAGE e atuando como gate de publicação (falha em vulnerabilidades HIGH/CRITICAL via TRIVY_SEVERITY_FAIL).
    • Release do GitHub publicada como latest (deixa de ser draft).

Correções

  • Correção do erro NU1605 (downgrade de pacote) ao consumir o Tooark em projetos .NET 10:
    • Os pisos das dependências diretas deixam de ficar fixados em 8.0.x para consumidores .NET 10, alinhando-se à linha 10.0.x exigida pelo framework compartilhado.
  • Correção de vulnerabilidade de gravidade alta em System.Security.Cryptography.Xml:
    • No TFM net10.0, a linha de runtime foi alinhada a 10.0.10 e mantido override explícito de System.Security.Cryptography.Xml em 10.0.10 para garantir a versão corrigida (GHSA-37gx-xxp4-5rgx, GHSA-w3x6-4m5h-cxqf).
    • No TFM net8.0, mantido override explícito em 8.0.4 (servicing mais recente da linha 8.0.x com a correção).
    • Os overrides devem ser removidos caso o pacote base passe a referenciar a versão corrigida transitivamente.
  • Correção de regressão na validação do endpoint OTLP introduzida a partir da atualização do OpenTelemetry (linha 1.16.0/1.17.0):
    • O momento de execução do callback de configuração do exportador (AddOtlpExporter) mudou e deixou de disparar na instanciação dos provedores de logging, fazendo com que endpoints inválidos não lançassem mais InternalServerErrorException.
    • A validação do endpoint passou a ser feita de forma eager (no momento da configuração de logging/tracing/metrics), de forma determinística e independente do timing interno do OpenTelemetry.
  • Correção do mapeamento indevido das notificações pelo Entity Framework Core em entidades que herdam de BaseEntity:
    • As propriedades derivadas de Notification (Notifications, Codes, Keys, Messages, IsValid, Count) passam a ser anotadas com [NotMapped].
    • O EF Core deixa de descobrir NotificationItem como entidade e de criar colunas/tabelas fantasmas, sem exigir configuração nas aplicações consumidoras.
    • Usa System.ComponentModel.DataAnnotations.Schema do framework compartilhado, mantendo Tooark.Notifications sem dependência de Entity Framework.

Pacotes Atualizados

  • Grupo net10.0 (novo) — linha 10.0.x:
    • Microsoft.AspNetCore.Authentication.JwtBearer -> 10.0.10
    • Microsoft.Extensions.Caching.Memory -> 10.0.10
    • Microsoft.Extensions.DependencyInjection -> 10.0.10
    • Microsoft.Extensions.DependencyInjection.Abstractions -> 10.0.10
    • Microsoft.Extensions.FileProviders.Abstractions -> 10.0.10
    • Microsoft.Extensions.Localization -> 10.0.10
    • System.Security.Cryptography.Xml -> 10.0.10 (override de segurança)
  • Grupo net8.0 — linha 8.0.x (LTS), atualizações de servicing:
    • Microsoft.AspNetCore.Authentication.JwtBearer 8.0.28 -> 8.0.29
    • Microsoft.Extensions.Localization 8.0.28 -> 8.0.29
    • System.Security.Cryptography.Xml 8.0.3 -> 8.0.4 (override de segurança)
    • Demais pacotes atrelados ao runtime mantidos (já na versão de servicing mais recente da linha).
  • Pacotes independentes do runtime (mesma versão em todos os TFMs):
    • AWSSDK.S3 4.0.24.3 -> 4.0.101.4
    • coverlet.msbuild 8.0.1 -> 10.0.1
    • Microsoft.NET.Test.Sdk 18.6.0 -> 18.8.1
    • System.IO.Abstractions 22.1.1 -> 22.2.0
    • OpenTelemetry 1.15.3 -> 1.17.0
    • OpenTelemetry.Exporter.Console 1.15.3 -> 1.17.0
    • OpenTelemetry.Exporter.OpenTelemetryProtocol 1.15.3 -> 1.17.0
    • OpenTelemetry.Extensions.Hosting 1.15.3 -> 1.17.0
    • OpenTelemetry.Instrumentation.AspNetCore 1.15.2 -> 1.17.0
    • OpenTelemetry.Instrumentation.Http 1.15.1 -> 1.17.0
    • OpenTelemetry.Instrumentation.Runtime 1.15.1 -> 1.17.0
    • OpenTelemetry.Instrumentation.Process 1.15.1-beta.1 -> 1.17.0-rc.1

Testes

  • Projeto de testes (Tooark.Tests) passou a ser multi-target (net8.0;net10.0), executando toda a suíte nos dois runtimes.
  • Suite de testes validada apos as alterações com sucesso em ambos os TFMs:
    • 3556 testes aprovados (net8.0)
    • 3556 testes aprovados (net10.0)
    • 0 falhas
    • 0 ignorados
  • Build validado nos dois TFMs (net8.0 e net10.0) sem erros ou avisos.
  • Estabilização de testes sensíveis a paralelismo, expostos ao rodar os dois TFMs simultaneamente:
    • Testes que alteram a cultura global (Language.SetCulture) foram agrupados na coleção CultureSensitive com paralelização desabilitada, evitando corridas com outros testes sensíveis à cultura.
    • Teste de cancelamento do Mediator tornado determinístico (handler aguarda o cancelamento em vez de depender de uma janela de tempo fixa).

Impacto

  • Sem breaking changes de API para consumo dos pacotes Tooark em runtime.
  • Resolução do NU1605 para consumidores em .NET 10, mantendo total compatibilidade com .NET 8.
  • Postura de segurança reforçada no TFM .NET 10 e validação automatizada via security-scanner (Trivy + Hadolint + Betterleaks) antes da publicação.
  • Integração com Entity Framework Core mais previsível: entidades que herdam de BaseEntity não geram mais mapeamentos indesejados a partir das notificações.
  • Atenção (infraestrutura): o pipeline de build passa a exigir o SDK .NET 10 instalado no runner.

Informações Adicionais

  • Tag relacionada: v3.3.3
  • Data de lançamento: 2026-07-25
  • Tipo de release: Compatibilidade (.NET 10) + Segurança

Release v2.3.3

Choose a tag to compare

@github-actions github-actions released this 27 Jul 02:33

Release Notes v2.3.3

Data de lançamento: 26/07/2026

🆕 Resumo

Versão de manutenção com foco em atualização de dependências (mantendo o suporte ao .NET 8), reforço do pipeline de CI/CD com etapa de análise de segurança, além de correções pontuais em Tooark.Notifications e Tooark.Observability e melhorias na estabilidade da suíte de testes. Não há breaking changes.


Adicionado

  • Etapa de análise de segurança (security scan) como gate no pipeline de CI/CD:
    • execução do scanner (Trivy via imagem security-scanner) sobre o filesystem;
    • cache da base de vulnerabilidades para acelerar execuções;
    • publicação dos relatórios de segurança como artefato do workflow.
  • Nova coleção de testes CultureSensitive (DisableParallelization) para isolar testes que alteram a cultura global do processo.

Modificado

  • Atualização de dependências para as versões mais recentes, preservando a compatibilidade com .NET 8:
    • Pacotes independentes de framework atualizados para as últimas versões estáveis: AWSSDK.S3 4.0.101.4, coverlet.msbuild 10.0.1, Microsoft.NET.Test.Sdk 18.8.1, OpenTelemetry 1.17.0 (core, exporters e instrumentações), ReportGenerator 5.5.10 e System.IO.Abstractions 22.2.0.
    • Pacotes atrelados ao framework atualizados dentro da linha 8.0.x: Microsoft.AspNetCore.Authentication.JwtBearer e Microsoft.Extensions.Localization 8.0.29, e Microsoft.AspNetCore.* (Http, Mvc, Mvc.Core) 2.3.11.
  • Atualização das GitHub Actions do pipeline (checkout@v6, setup-dotnet@v5) e publicação da release como definitiva (draft=false, make_latest=true).
  • Extração de ValidateOtlpEndpoint em Tooark.Observability, com validação eager do endpoint OTLP durante a configuração de Logging, Metrics e Tracing.

Correções

  • Tooark.Notifications: propriedades de Notification (Notifications, IsValid, Count, Codes, Keys, Messages) marcadas com [NotMapped] para evitar mapeamento indevido por ORMs (EF Core).
  • Tooark.Observability: validação do endpoint OTLP passa a ocorrer de forma eager, evitando dependência do timing do callback do AddOtlpExporter, que pode variar entre versões do OpenTelemetry e não disparar na instanciação dos provedores.

Testes

  • Testes sensíveis à cultura global do processo (GetInfoTests, LanguageTests, ILanguageTests, JsonStringLocalizerExtensionTests) associados à coleção CultureSensitive para evitar corridas não determinísticas na execução paralela.

Build

  • .gitignore atualizado para ignorar scripts (*.ps1, *.sh), relatórios (reports/*.json) e a pasta .claude/.

Impacto

  • Sem breaking changes.
  • Compatível com .NET 8.0+.
  • Maior segurança do pipeline de publicação e maior estabilidade da suíte de testes, sem alterações na API pública dos pacotes.

Informações Adicionais

  • Tag relacionado: v2.3.3
  • Data de lançamento: 2026-07-26