Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/release-packages.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
"api-dto": "Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj",
"application": "Codout.Framework.Application/Codout.Framework.Application.csproj",
"common": "Codout.Framework.Common/Codout.Framework.Common.csproj",
"dp": "Codout.Framework.DP/Codout.Framework.DP.csproj",
"data": "Codout.Framework.Data/Codout.Framework.Data.csproj",
"domain": "Codout.Framework.Domain/Codout.Framework.Domain.csproj",
"ef": "Codout.Framework.EF/Codout.Framework.EF.csproj",
Expand All @@ -20,8 +19,6 @@
"mailer-sendgrid": "Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj",
"multitenancy": "Codout.Multitenancy/Codout.Multitenancy.csproj",
"softprime-multitenancy": "Codout.Multitenancy/Softprime.Multitenancy.csproj",
"cosmos": "src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj",
"documentdb": "src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj",
"security-argon2": "src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj",
"security-bcrypt": "src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj",
"security-core": "src/Security/Codout.Security.Core/Codout.Security.Core.csproj",
Expand Down
6 changes: 5 additions & 1 deletion .github/workflows/mcp-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,13 @@ jobs:

- name: Pack
run: |
# Mcp has no internal ProjectReferences today, so -p:Version would
# not actively break anything here, but we still use only
# -p:PackageVersion to stay consistent with release.yml and avoid
# reintroducing the cascade trap if a ProjectReference is added
# later. See release.yml for the full explanation.
if [ -n "${{ steps.version.outputs.version }}" ]; then
dotnet pack "$PROJECT" --configuration "$CONFIGURATION" --no-build \
-p:Version=${{ steps.version.outputs.version }} \
-p:PackageVersion=${{ steps.version.outputs.version }} \
--output ./artifacts
else
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,15 @@ jobs:
# Pack performs its own restore/build for the target. Some packages
# (Cosmos, DocumentDB, etc.) are not part of Codout.Framework.sln, so
# we deliberately do NOT pass --no-build here.
#
# IMPORTANT: when overriding the package version via workflow_dispatch,
# use ONLY -p:PackageVersion=. Passing -p:Version= cascades to every
# project in the build graph (including ProjectReferences), which
# silently rewrites dependency versions in the generated .nuspec and
# produces broken packages. -p:PackageVersion only affects the
# outgoing package and leaves ProjectReference resolution alone.
if [ -n "$VERSION" ]; then
dotnet pack "$PROJECT" --configuration "$CONFIGURATION" \
-p:Version="$VERSION" \
-p:PackageVersion="$VERSION" \
--output ./artifacts
else
Expand Down
10 changes: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,15 @@ versão afetados.

### 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`.
- **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.
- **Baseline alignment** — todos os pacotes publicáveis do `Codout.Framework` foram alinhados em `6.3.0` como ponto zero do esquema per-pacote. A partir daqui cada pacote diverge conforme suas mudanças reais. Pacotes que receberam alteração real nesta release: `Codout.Framework.EF` (fix do `SaveOrUpdate`, ver abaixo) e `Codout.Framework.Data` (bump técnico para satisfazer dependência do EF 6.3.0). Os outros 22 pacotes (`Codout.DynamicLinq`, `Codout.Framework.Api`, `Codout.Framework.Api.Client`, `Codout.Framework.Api.Dto`, `Codout.Framework.Application`, `Codout.Framework.Common`, `Codout.Framework.Domain`, `Codout.Framework.Mongo`, `Codout.Framework.NH`, `Codout.Framework.Storage`, `Codout.Framework.Storage.Azure`, `Codout.Image.Extensions`, `Codout.Mailer`, `Codout.Mailer.AWS`, `Codout.Mailer.Razor`, `Codout.Mailer.SendGrid`, `Codout.Multitenancy`, `Softprime.Multitenancy`, `Codout.Security.Argon2`, `Codout.Security.Bcrypt`, `Codout.Security.Core`, `Codout.Security.Scrypt`) sobem para `6.3.0` sem mudança de código ou contrato — alinhamento técnico para que toda referência cruzada no ecosystem tenha `>= 6.3.0` disponível como floor consistente. `Codout.Framework.Mcp` segue o próprio ciclo via `mcp-release.yml` e não foi incluído.
- **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

Expand Down
14 changes: 14 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,20 @@ Quando o usuário pedir "gerar nova versão e publicar do pacote X" (ou equivale
- **Codout.Framework.Mcp**: usa workflow próprio (`.github/workflows/mcp-release.yml`) com passo `--validate` específico do CLI. Tag deve ser `mcp-v<X.Y.Z>` (NÃO use `mcp` como short-name no `release.yml` — está intencionalmente bloqueado por padrão de tag para evitar duplo release).
- **Mass release** (todos os pacotes de uma vez via `.github/workflows/mass-release.yml`): só execute se o usuário pedir explicitamente "mass release" ou "publicar todos". Mesmo assim, oriente o usuário a disparar via Actions UI com `dry_run: true` primeiro e revisar os artifacts antes de re-disparar com `dry_run: false`. Não tente disparar pela CLI sem autorização explícita.

## Pacotes excluídos do release automatizado

Os seguintes csproj têm `<IsPackable>false</IsPackable>` e **não** estão em `.github/release-packages.json`. Não tente publicá-los antes de modernizá-los:

- `Codout.Framework.DP` — implementa um `IRepository<T>` antigo (sem `Where`, `AllReadOnly`, `WherePaged`, `Refresh`, overloads de `CancellationToken`, etc.) e referencia a pasta legada `Codout.Framework.DAL` que não existe mais.
- `src/NetCore/Codout.Framework.NetCore.Repository.Cosmos` — `netcoreapp2.0` (fora de suporte), SDK legado `Microsoft.Azure.DocumentDB.Core`, refs pra projetos `NetStandard.*` que sumiram do repo.
- `src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB` — idem.

Se o usuário pedir pra publicar um deles, **avise que está deprecated** e pergunte se quer fazer o port completo antes (não tente packar como está — vai falhar).

## Cuidados ao usar `dotnet pack`

**NUNCA passe `-p:Version=` no `dotnet pack`.** Essa propriedade cascateia para TODOS os projetos do build (incluindo `ProjectReference`), o que reescreve silenciosamente a versão das dependências no `.nuspec` gerado e produz pacotes com deps quebradas (ex.: `Codout.Framework.EF 6.3.0` declarando `Codout.Framework.Data >= 6.3.0` quando Data está em 6.2.2 no csproj). Para sobrescrever a versão do pacote alvo sem cascatear, use **apenas** `-p:PackageVersion=`. Os workflows já fazem assim — se for criar um novo, siga o mesmo padrão.

## O que NÃO fazer

- ❌ Reintroduzir `<Version>` em `Directory.Build.props`.
Expand Down
2 changes: 1 addition & 1 deletion Codout.DynamicLinq/Codout.DynamicLinq.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Wrapper para datasource de lista paginada</Description>
<PackageTags>Codout;Framework;DynamicLinq</PackageTags>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Biblioteca de funções para Cliente Api do Framework da Codout</Description>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>

Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Api/Codout.Framework.Api.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Bliblioteca abstrata de implementação para Web API Restfull</Description>
<PackageTags>Codout</PackageTags>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Bliblioteca de implementação base da camada Application Service</Description>
<PackageTags>Codout</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Common/Codout.Framework.Common.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Biblioteca de funcões comuns do Framework da Codout</Description>
<PackageTags>Codout;Framework</PackageTags>
</PropertyGroup>
Expand Down
9 changes: 9 additions & 0 deletions Codout.Framework.DP/Codout.Framework.DP.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,15 @@
<PropertyGroup>
<Version>6.2.2</Version>
<TargetFramework>netstandard2.1</TargetFramework>
<!--
Unmaintained. Implementa uma versão antiga de IRepository<T> (Find em vez
de Where, sem AllReadOnly/WhereReadOnly/WherePaged/Refresh/overloads com
CancellationToken, FirstOrDefault/Any/Count/ToListAsync, etc.) e ainda
referencia a pasta legada Codout.Framework.DAL (renomeada para
Codout.Framework.Data há tempo). Não builda no estado atual. Para reviver
é preciso reescrever DPRepository contra o IRepository<T> atual.
-->
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Data/Codout.Framework.Data.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Interface da Biblioteca de persistência do Framework da Codout</Description>
<PackageTags>Codout;Framework;ORM;DAL;Repository;UnitOfWork;Specification;Auditing</PackageTags>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Domain/Codout.Framework.Domain.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Camada de Domínio do Framework da Codout</Description>
<PackageTags>Codout;Framework;Domain;</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Mongo/Codout.Framework.Mongo.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Implementação da interface Codout.Framework.Data para MongoDB</Description>
<PackageTags>Codout;Framework;ORM;DAL;MongoDB;Repository;UnitOfWork;</PackageTags>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.NH/Codout.Framework.NH.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Implementação da interface Codout.Framework.Data para NHibernate</Description>
<PackageTags>Codout;Framework;ORM;DAL;NHibernate;Repository;UnitOfWork;</PackageTags>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<Title>Codout Framework Storage Azure</Title>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Framework.Storage/Codout.Framework.Storage.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<Title>Codout Framework Storage</Title>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Image.Extensions/Codout.Image.Extensions.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Biblioteca de funções para imagens</Description>
<PackageTags>Codout;Framework;Images;</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Mailer.AWS/Codout.Mailer.AWS.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Sender da Amazon Simple Email Service para envio de E-mails utilizando a biblioteca Codout.Mailer</Description>
<PackageTags>Codout;Framework;Mail;Email;Mailer;SendGrid;</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Mailer.Razor/Codout.Mailer.Razor.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Implementação do template engine para Codout.Mailer utilizando a engine Razor nativa do ASP.NET Core</Description>
<PackageTags>Codout;Framework;Mail;Email;Mailer;Razor;</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Sender da SendGrid para envio de E-mails utilizando a biblioteca Codout.Mailer</Description>
<PackageTags>Codout;Framework;Mail;Email;Mailer;SendGrid;</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Mailer/Codout.Mailer.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Description>Biblioteca extensível para envio de e-mails com suporte a múltiplos providers (SendGrid, AWS SES), health checks e observabilidade. O template engine é plugável via ITemplateEngine (veja Codout.Mailer.Razor).</Description>
<PackageTags>Codout;Framework;Mail;Email;Mailer;</PackageTags>
</PropertyGroup>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Multitenancy/Codout.Multitenancy.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<Product></Product>
<Description>Modulo Multitenancy da Codout para aplicações Asp.net Core</Description>
<PackageTags>Codout;Framework</PackageTags>
Expand Down
2 changes: 1 addition & 1 deletion Codout.Multitenancy/Softprime.Multitenancy.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
<PropertyGroup>
<Version>6.2.2</Version>
<TargetFramework>netcoreapp2.0</TargetFramework>
<!--
Unmaintained. Target netcoreapp2.0 saiu de suporte em 2018. Usa o SDK
legado Microsoft.Azure.DocumentDB.Core (substituído por
Microsoft.Azure.Cosmos). ProjectReferences apontam para projetos
Codout.Framework.NetStandard.* que não existem mais no repo. Não builda.
Excluído do release automatizado até ser revivido contra o stack atual.
-->
<IsPackable>false</IsPackable>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Authors>Marcelo &amp; Clovis</Authors>
<Company>Codout</Company>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@
<PropertyGroup>
<Version>6.2.2</Version>
<TargetFramework>netcoreapp2.0</TargetFramework>
<!--
Unmaintained. Target netcoreapp2.0 saiu de suporte em 2018. Usa o SDK
legado Microsoft.Azure.DocumentDB.Core (substituído por
Microsoft.Azure.Cosmos). ProjectReferences apontam para projetos
Codout.Framework.NetStandard.* que não existem mais no repo. Não builda.
Excluído do release automatizado até ser revivido contra o stack atual.
-->
<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>6.2.2</Version>
<Version>6.3.0</Version>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
Expand Down
Loading