Releases: Tooark/nuget-tooark
Release list
Release v4.1.0
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, antesprivate const;LanguageCode.Length(5): tamanho do código de idioma no formatoxx-XX(ex.:pt-BR).
Tooark.Validations—Validation.DefaultTimeout(300ms): tempo limite padrão das validações por expressão regular, antesinternal const.
Modificado
Tooark.ValueObjects—LinkVideo: o timeout de regex deixa de ser o literal300e passa a referenciarValidation.DefaultTimeout(mesmo valor, sem mudança de comportamento).
Corrigido
Tooark.Validations—LinkVideoValidation: os tipos passados paraValidationErrorMessages.IsValidnas sobrecargas com mensagem padrão estavam copiados doProtocolValidatione 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
messageexplí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
constsã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
LinkVideoValidationmuda deValidation.IsNotValid;{Propriedade};{TipoAntigo}paraValidation.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
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.Validations—LinkVideoValidation: os tipos passados paraValidationErrorMessages.IsValidnas sobrecargas com mensagem padrão estavam copiados doProtocolValidatione 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
messageexplícito não foram afetadas.
Build
- Workflow de release: imagem do
security-scanneratualizada de1.8para1.9e corrigida a URL do repositório na geração da release (uso degithub.repository).
Impacto
- A mensagem padrão gerada por essas quatro sobrecargas muda de
Validation.IsNotValid;{Propriedade};{TipoAntigo}paraValidation.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
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.Validations—LinkVideoValidation: os tipos passados paraValidationErrorMessages.IsValidnas sobrecargas com mensagem padrão estavam copiados doProtocolValidatione 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
messageexplícito não foram afetadas.
Build
- Workflow de release: imagem do
security-scanneratualizada de1.7para1.9e corrigida a URL do repositório na geração da release (uso degithub.repository).
Impacto
- A mensagem padrão gerada por essas quatro sobrecargas muda de
Validation.IsNotValid;{Propriedade};{TipoAntigo}paraValidation.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
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-csparanuget-tooark(o prefixonuget-identifica o repositório dos pacotes NuGet na família Tooark). Referências atualizadas parahttps://github.com/Tooark/nuget-tooark:- Metadados NuGet (
RepositoryBaseUrl, que alimentaRepositoryUrlePackageProjectUrl) noDirectory.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.
- Metadados NuGet (
Build
.gitignoreatualizado com a regraTooark*/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 embin/eobj/.
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
Release Notes v4.0.0
See notes: nuget-tooark-v4.0.0
Release v3.3.5
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-transitivesem 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.S34.0.102.4;Microsoft.NET.Test.Sdk18.9.0;OpenTelemetry1.18.0 (core, exporters e instrumentações) eOpenTelemetry.Instrumentation.Process1.18.0-rc.1.
- Repositório no GitHub renomeado de
tooarkparanuget-tooark:RepositoryUrlePackageProjectUrldos pacotes NuGet e todos os links da documentação (READMEs) atualizados parahttps://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
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.RegularExpressions4.3.1, aplicado a toda a solução viaCentralPackageTransitivePinningEnabled.
- adicionado pin central de
- Correção de 7 vulnerabilidades transitivas HIGH em
System.Security.Cryptography.Xml(viaMicrosoft.AspNetCore.Mvc→DataProtection), com pin central na versão 8.0.4. - Verificação
dotnet list package --vulnerable --include-transitivesem 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.S34.0.102.4,Microsoft.NET.Test.Sdk18.9.0,OpenTelemetry1.18.0 (core, exporters e instrumentações) eReportGenerator5.5.11. - Pacotes atrelados ao framework atualizados dentro da linha 8.0.x:
Microsoft.AspNetCore.Authentication.JwtBearereMicrosoft.Extensions.Localization8.0.30, eMicrosoft.AspNetCore.*(Http, Mvc, Mvc.Core) 2.3.12.
- Pacotes independentes de framework:
- Workflow de release ajustado com a remoção do parâmetro
make_latestna 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
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)
OtlpOverrideOptionseOtlpBatchOverrideOptions: 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).
- Campos não informados (
MetricsOptions.ExportIntervalMilliseconds: intervalo de exportação de métricas via OTLP (PeriodicExportingMetricReaderOptions):- Padrão
null: usa 60000ms, ou 5000ms quando o OTLP efetivo temServerlessOptimizedhabilitado (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.Batchnunca se aplicaram a métricas; agora há controle explícito e documentado.
- Padrão
- Atributo de resource
deployment.environment.name(convenção semântica atual), emitido junto comdeployment.environment(chave legada, mantida para compatibilidade com backends antigos).
Modificado (Tooark.Observability)
- Overrides programáticos (
configure) passam a ser aplicados também aoIOptions<ObservabilityOptions>do container viaservices.PostConfigure— quem injeta as options vê o mesmo estado usado na configuração do OpenTelemetry. Removido registro duplicado deConfigure<ObservabilityOptions>. ServerlessOptimizeddeixa de detectar customização por comparação com números mágicos:OtlpBatchOptionspassa 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 <= MaxQueueSizemovido 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:
HideQueryParametersremove o atributourl.query(onde a query realmente é emitida). - HttpClient:
HideQueryParametersremove a query do atributourl.full. http.target(convenção legada) passa a ser apenas reescrito quando já presente com query — não é mais adicionado artificialmente.
- ASP.NET Core:
- 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 (
IgnorePathslista os 7 paths reais do default).
Modificado (Tooark.Mediator)
- Dispatch do
Mediatorreescrito 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).
- Reflection (
- 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.
MediatorOptionsregistrado 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 peloTryAddSingleton. MediatorOptionscontinua resolvível por injeção direta (sem breaking change no construtor doMediator).- Nova dependência:
Microsoft.Extensions.Options(8.0.2no TFMnet8.0;10.0.11no TFMnet10.0).
- Chamadas múltiplas de
- Interfaces
IRequest<TResponse>,ICommand<TResponse>eIQuery<TResponse>(Tooark.Mediator.Abstractions) deixaram de declarar covariância (out) emTResponse:- 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 oout, esse uso passa a ser erro de compilação.
- 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
- 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/IPublisheralinhadas às exceções reais.
Correções (Tooark.Mediator)
ENotifyStrategy.Sequentialnã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 semconfiguredelegava para o overload comconfigure, fazendoAssembly.GetCallingAssembly()retornar o próprio Tooark.Mediator — nenhum handler da aplicação era registrado e todoSendAsyncfalhava comHandler.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
IgnorePathsvazio desabilitava todo o tracing ASP.NET Core: com a lista vazia, o filtro retornavafalsepara 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
ResourceAttributesque normalizam para a mesma chave (ex.:"My Key"e"my.key"): oToDictionarylançavaArgumentException; 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.S34.0.101.4->4.0.102.1Microsoft.AspNetCore.Http2.3.11->2.3.12Microsoft.AspNetCore.Mvc2.3.11->2.3.12Microsoft.AspNetCore.Mvc.Core2.3.11->2.3.12ReportGenerator5.5.10->5.5.11
- Grupo
net8.0— linha8.0.x(LTS), servicing:Microsoft.AspNetCore.Authentication.JwtBearer8.0.29->8.0.30Microsoft.Extensions.Localization8.0.29->8.0.30- Demais pacotes da linha mantidos (já no servicing mais recente).
- Grupo
net10.0— linha10.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.Processsegue em1.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:
3579testes aprovados (net8.0)3579testes aprovados (net10.0)0falhas,0ignorados
- Build validado nos dois TFMs sem erros ou avisos.
- Cobertura (coverlet,
net10.0):Tooark.Observability: 97,99% linhas / 93,04% branches / 100% métodosTooark.Mediator: 100% linhas / 95,65% branches / 100% métodosTooark.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 ...
Release v3.3.3
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.0enet10.0). - Atualização do
global.jsonpara SDK10.0.100comrollForward: latestMinor(um SDK .NET 10 compila ambos os TFMs). - Remoção do override explícito de
DocumentationFilenoDirectory.Build.props, que causava colisão de escrita do XML de documentação entre os dois TFMs (oGenerateDocumentationFilejá gera o arquivo por TFM). - Pipeline de build/publish:
actions/setup-dotnetpassa a instalar os SDKs8.0.xe10.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 ambienteSECURITY_SCANNER_IMAGEe atuando como gate de publicação (falha em vulnerabilidadesHIGH/CRITICALviaTRIVY_SEVERITY_FAIL). - Release do GitHub publicada como
latest(deixa de serdraft).
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.xpara consumidores .NET 10, alinhando-se à linha10.0.xexigida pelo framework compartilhado.
- Os pisos das dependências diretas deixam de ficar fixados em
- Correção de vulnerabilidade de gravidade alta em
System.Security.Cryptography.Xml:- No TFM
net10.0, a linha de runtime foi alinhada a10.0.10e mantido override explícito deSystem.Security.Cryptography.Xmlem10.0.10para garantir a versão corrigida (GHSA-37gx-xxp4-5rgx,GHSA-w3x6-4m5h-cxqf). - No TFM
net8.0, mantido override explícito em8.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.
- No TFM
- Correção de regressão na validação do endpoint OTLP introduzida a partir da atualização do
OpenTelemetry(linha1.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 maisInternalServerErrorException. - 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.
- O momento de execução do callback de configuração do exportador (
- 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
NotificationItemcomo entidade e de criar colunas/tabelas fantasmas, sem exigir configuração nas aplicações consumidoras. - Usa
System.ComponentModel.DataAnnotations.Schemado framework compartilhado, mantendoTooark.Notificationssem dependência de Entity Framework.
- As propriedades derivadas de
Pacotes Atualizados
- Grupo
net10.0(novo) — linha10.0.x:Microsoft.AspNetCore.Authentication.JwtBearer->10.0.10Microsoft.Extensions.Caching.Memory->10.0.10Microsoft.Extensions.DependencyInjection->10.0.10Microsoft.Extensions.DependencyInjection.Abstractions->10.0.10Microsoft.Extensions.FileProviders.Abstractions->10.0.10Microsoft.Extensions.Localization->10.0.10System.Security.Cryptography.Xml->10.0.10(override de segurança)
- Grupo
net8.0— linha8.0.x(LTS), atualizações de servicing:Microsoft.AspNetCore.Authentication.JwtBearer8.0.28->8.0.29Microsoft.Extensions.Localization8.0.28->8.0.29System.Security.Cryptography.Xml8.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.S34.0.24.3->4.0.101.4coverlet.msbuild8.0.1->10.0.1Microsoft.NET.Test.Sdk18.6.0->18.8.1System.IO.Abstractions22.1.1->22.2.0OpenTelemetry1.15.3->1.17.0OpenTelemetry.Exporter.Console1.15.3->1.17.0OpenTelemetry.Exporter.OpenTelemetryProtocol1.15.3->1.17.0OpenTelemetry.Extensions.Hosting1.15.3->1.17.0OpenTelemetry.Instrumentation.AspNetCore1.15.2->1.17.0OpenTelemetry.Instrumentation.Http1.15.1->1.17.0OpenTelemetry.Instrumentation.Runtime1.15.1->1.17.0OpenTelemetry.Instrumentation.Process1.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:
3556testes aprovados (net8.0)3556testes aprovados (net10.0)0falhas0ignorados
- Build validado nos dois TFMs (
net8.0enet10.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çãoCultureSensitivecom 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).
- Testes que alteram a cultura global (
Impacto
- Sem breaking changes de API para consumo dos pacotes Tooark em runtime.
- Resolução do
NU1605para 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
BaseEntitynã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
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.
- execução do scanner (Trivy via imagem
- 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.S34.0.101.4,coverlet.msbuild10.0.1,Microsoft.NET.Test.Sdk18.8.1,OpenTelemetry1.17.0 (core, exporters e instrumentações),ReportGenerator5.5.10 eSystem.IO.Abstractions22.2.0. - Pacotes atrelados ao framework atualizados dentro da linha 8.0.x:
Microsoft.AspNetCore.Authentication.JwtBearereMicrosoft.Extensions.Localization8.0.29, eMicrosoft.AspNetCore.*(Http, Mvc, Mvc.Core) 2.3.11.
- Pacotes independentes de framework atualizados para as últimas versões estáveis:
- 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
ValidateOtlpEndpointemTooark.Observability, com validação eager do endpoint OTLP durante a configuração deLogging,MetricseTracing.
Correções
Tooark.Notifications: propriedades deNotification(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 doAddOtlpExporter, 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çãoCultureSensitivepara evitar corridas não determinísticas na execução paralela.
Build
.gitignoreatualizado 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