Skip to content

Latest commit

 

History

History
78 lines (58 loc) · 5.52 KB

File metadata and controls

78 lines (58 loc) · 5.52 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

A partir desta entrada cada pacote NuGet é versionado individualmente (<Version> declarado em cada .csproj em vez de centralizado em Directory.Build.props). As entradas abaixo identificam o pacote e a versão afetados.

2026-05-12

Build

  • Repositório<Version> removido de Directory.Build.props e movido para cada .csproj publicável. Cada pacote agora evolui independentemente; alterações em um pacote não disparam mais um build novo dos demais. Pacotes que não tiveram alteração ficaram congelados em 6.2.2.
  • CI — Workflows release.yml e mcp-release.yml passaram a usar somente -p:PackageVersion= no dotnet pack. O -p:Version= anterior cascateava para todos os projetos do build graph (incluindo ProjectReference), o que reescrevia silenciosamente a versão das dependências no .nuspec e produzia pacotes com referências quebradas — sintoma observado em Codout.Framework.EF 6.3.0, publicado declarando Codout.Framework.Data >= 6.3.0 enquanto Data estava em 6.2.2 no csproj.
  • Repositório — Pacotes Codout.Framework.DP, Codout.Framework.NetCore.Repository.Cosmos e Codout.Framework.NetCore.Repository.DocumentDB marcados com <IsPackable>false</IsPackable> e removidos de .github/release-packages.json. Os três estão abandonados (DP implementa um IRepository<T> antigo e referencia a pasta Codout.Framework.DAL que não existe; Cosmos/DocumentDB targetam netcoreapp2.0 e referenciam projetos NetStandard.* ausentes). Mass-release agora ignora os três; consulte CLAUDE.md antes de tentar revivê-los.

Codout.Framework.Data 6.3.0

Changed

  • Bump de versão técnico para alinhar com Codout.Framework.EF 6.3.0. Não há alterações de código ou contrato em Codout.Framework.Data — esta versão existe para satisfazer a dependência Codout.Framework.Data >= 6.3.0 declarada (incorretamente) pelo pacote EF 6.3.0 já publicado. Pacotes futuros do EF voltarão a depender da versão minor real de Data, agora que o workflow não cascateia mais o -p:Version=.

Codout.Framework.EF 6.3.0

Fixed

  • EFRepository.SaveOrUpdate / SaveOrUpdateAsync decidiam insert vs. update via IEntity.IsTransient(), o que quebrava qualquer entidade que pré-atribuísse o Id no construtor (ex.: Id = Guid.NewGuid()). A entidade era marcada como Modified e o SaveChanges falhava ao tentar UPDATE em uma linha inexistente. Agora a decisão é feita inspecionando Context.Entry(entity).State e, para entidades Detached com chave atribuída, consultando o banco via Find / FindAsync.
  • SaveOrUpdateAsync deixou de bloquear a thread chamando Find síncrono; agora usa FindAsync e respeita o CancellationToken recebido.
  • Quando o SaveOrUpdate precisa atualizar uma entidade existente, os valores são copiados via Entry(existing).CurrentValues.SetValues(entity), preservando os OriginalValues (e portanto tokens de concorrência como [Timestamp]/RowVersion) trazidos do banco.

Changed

  • SaveOrUpdate em entidade já rastreada com estado Unchanged não força mais a transição para Modified. Confia no change tracker para detectar mutações. Consumidores que dependiam do "force full update" devem chamar Update(entity) explicitamente.
  • SaveOrUpdate em entidade Detached com chave não-default agora executa um roundtrip ao banco (Find / FindAsync) para distinguir insert de update. Em hot paths onde a intenção é conhecida, prefira Save(entity) ou Update(entity) para evitar a query.

[6.2.0] - 2025-07-17

Added

  • Codout.Mailer.Razor — novo pacote satélite que implementa ITemplateEngine usando a engine Razor nativa do ASP.NET Core (IRazorViewEngine + RuntimeCompilation + EmbeddedFileProvider).
  • Extension method AddMailerRazor() para registro do template engine Razor via DI.
  • Classe RazorMailerOptions com opções TemplateAssembly, RootNamespace e EnableCache.

Changed

  • Codout.Mailer — o core agora é agnóstico ao template engine. A interface ITemplateEngine permanece, mas nenhuma implementação é registrada automaticamente.
  • AddMailer() não registra mais ITemplateEngine por padrão — o consumidor deve registrar via AddMailerRazor() ou implementação própria.
  • MailerOptions simplificado — removidas propriedades TemplateRootType, RazorLight e a classe RazorLightOptions.
  • Dependências Microsoft.Extensions.* agora são referenciadas explicitamente no Codout.Mailer.csproj (antes eram transitivas via RazorLight).

Removed

  • RazorLight — removida dependência do pacote RazorLight 2.3.1 do core Codout.Mailer.
  • Classe RazorTemplateEngine removida do core (substituída por RazorViewTemplateEngine no pacote Codout.Mailer.Razor).
  • Classe RazorLightOptions removida do core.

Migration Guide

Antes (v6.x):

services.AddMailer(configuration, options =>
{
    options.TemplateRootType = typeof(Program);
    options.RazorLight.DefaultNamespace = "MyApp.Templates";
});

Depois (v7.0):

services.AddMailer(configuration);
services.AddMailerRazor(options =>
{
    options.TemplateAssembly = typeof(Program).Assembly;
    options.RootNamespace = "MyApp.Templates";
});

[6.0.1] - 2025-07-01

  • Previous release targeting .NET 10 with RazorLight-based template engine.