diff --git a/.github/release-packages.json b/.github/release-packages.json index 2839bfd..8d88d90 100644 --- a/.github/release-packages.json +++ b/.github/release-packages.json @@ -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", @@ -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", diff --git a/.github/workflows/mcp-release.yml b/.github/workflows/mcp-release.yml index 84770b8..ffba866 100644 --- a/.github/workflows/mcp-release.yml +++ b/.github/workflows/mcp-release.yml @@ -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 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9950cc5..e857db7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -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 diff --git a/CHANGELOG.md b/CHANGELOG.md index d252608..729ab3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,15 @@ versão afetados. ### Build -- **Repositório** — `` 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** — `` 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 `false` e removidos de `.github/release-packages.json`. Os três estão abandonados (DP implementa um `IRepository` 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 diff --git a/CLAUDE.md b/CLAUDE.md index fe4ddb1..bc25dde 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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` (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 `false` 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` 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 `` em `Directory.Build.props`. diff --git a/Codout.DynamicLinq/Codout.DynamicLinq.csproj b/Codout.DynamicLinq/Codout.DynamicLinq.csproj index 57d3a68..71c60b8 100644 --- a/Codout.DynamicLinq/Codout.DynamicLinq.csproj +++ b/Codout.DynamicLinq/Codout.DynamicLinq.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Wrapper para datasource de lista paginada Codout;Framework;DynamicLinq diff --git a/Codout.Framework.Api.Client/Codout.Framework.Api.Client.csproj b/Codout.Framework.Api.Client/Codout.Framework.Api.Client.csproj index 1af0ccc..1b8fd50 100644 --- a/Codout.Framework.Api.Client/Codout.Framework.Api.Client.csproj +++ b/Codout.Framework.Api.Client/Codout.Framework.Api.Client.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Biblioteca de funções para Cliente Api do Framework da Codout diff --git a/Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj b/Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj index 4126fb8..ccda5c7 100644 --- a/Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj +++ b/Codout.Framework.Api.Dto/Codout.Framework.Api.Dto.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 netstandard2.1 diff --git a/Codout.Framework.Api/Codout.Framework.Api.csproj b/Codout.Framework.Api/Codout.Framework.Api.csproj index 533c249..5e0f6d2 100644 --- a/Codout.Framework.Api/Codout.Framework.Api.csproj +++ b/Codout.Framework.Api/Codout.Framework.Api.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Bliblioteca abstrata de implementação para Web API Restfull Codout diff --git a/Codout.Framework.Application/Codout.Framework.Application.csproj b/Codout.Framework.Application/Codout.Framework.Application.csproj index c5a5504..ec8de4e 100644 --- a/Codout.Framework.Application/Codout.Framework.Application.csproj +++ b/Codout.Framework.Application/Codout.Framework.Application.csproj @@ -1,7 +1,7 @@ - 6.2.2 + 6.3.0 Bliblioteca de implementação base da camada Application Service Codout diff --git a/Codout.Framework.Common/Codout.Framework.Common.csproj b/Codout.Framework.Common/Codout.Framework.Common.csproj index 36d271d..f484e83 100644 --- a/Codout.Framework.Common/Codout.Framework.Common.csproj +++ b/Codout.Framework.Common/Codout.Framework.Common.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Biblioteca de funcões comuns do Framework da Codout Codout;Framework diff --git a/Codout.Framework.DP/Codout.Framework.DP.csproj b/Codout.Framework.DP/Codout.Framework.DP.csproj index 75f9079..832e5b3 100644 --- a/Codout.Framework.DP/Codout.Framework.DP.csproj +++ b/Codout.Framework.DP/Codout.Framework.DP.csproj @@ -3,6 +3,15 @@ 6.2.2 netstandard2.1 + + false diff --git a/Codout.Framework.Data/Codout.Framework.Data.csproj b/Codout.Framework.Data/Codout.Framework.Data.csproj index 4f1e668..3ebc3c3 100644 --- a/Codout.Framework.Data/Codout.Framework.Data.csproj +++ b/Codout.Framework.Data/Codout.Framework.Data.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Interface da Biblioteca de persistência do Framework da Codout Codout;Framework;ORM;DAL;Repository;UnitOfWork;Specification;Auditing true diff --git a/Codout.Framework.Domain/Codout.Framework.Domain.csproj b/Codout.Framework.Domain/Codout.Framework.Domain.csproj index 714164e..884877a 100644 --- a/Codout.Framework.Domain/Codout.Framework.Domain.csproj +++ b/Codout.Framework.Domain/Codout.Framework.Domain.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Camada de Domínio do Framework da Codout Codout;Framework;Domain; diff --git a/Codout.Framework.Mongo/Codout.Framework.Mongo.csproj b/Codout.Framework.Mongo/Codout.Framework.Mongo.csproj index 9d5376c..b5d43c5 100644 --- a/Codout.Framework.Mongo/Codout.Framework.Mongo.csproj +++ b/Codout.Framework.Mongo/Codout.Framework.Mongo.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Implementação da interface Codout.Framework.Data para MongoDB Codout;Framework;ORM;DAL;MongoDB;Repository;UnitOfWork; true diff --git a/Codout.Framework.NH/Codout.Framework.NH.csproj b/Codout.Framework.NH/Codout.Framework.NH.csproj index ad1f438..08e066d 100644 --- a/Codout.Framework.NH/Codout.Framework.NH.csproj +++ b/Codout.Framework.NH/Codout.Framework.NH.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Implementação da interface Codout.Framework.Data para NHibernate Codout;Framework;ORM;DAL;NHibernate;Repository;UnitOfWork; true diff --git a/Codout.Framework.Storage.Azure/Codout.Framework.Storage.Azure.csproj b/Codout.Framework.Storage.Azure/Codout.Framework.Storage.Azure.csproj index a5e2e3b..650c1fb 100644 --- a/Codout.Framework.Storage.Azure/Codout.Framework.Storage.Azure.csproj +++ b/Codout.Framework.Storage.Azure/Codout.Framework.Storage.Azure.csproj @@ -1,7 +1,7 @@ - 6.2.2 + 6.3.0 latest enable Codout Framework Storage Azure diff --git a/Codout.Framework.Storage/Codout.Framework.Storage.csproj b/Codout.Framework.Storage/Codout.Framework.Storage.csproj index 4a17024..3cb192d 100644 --- a/Codout.Framework.Storage/Codout.Framework.Storage.csproj +++ b/Codout.Framework.Storage/Codout.Framework.Storage.csproj @@ -1,7 +1,7 @@ - 6.2.2 + 6.3.0 latest enable Codout Framework Storage diff --git a/Codout.Image.Extensions/Codout.Image.Extensions.csproj b/Codout.Image.Extensions/Codout.Image.Extensions.csproj index 835eb24..7248e52 100644 --- a/Codout.Image.Extensions/Codout.Image.Extensions.csproj +++ b/Codout.Image.Extensions/Codout.Image.Extensions.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Biblioteca de funções para imagens Codout;Framework;Images; diff --git a/Codout.Mailer.AWS/Codout.Mailer.AWS.csproj b/Codout.Mailer.AWS/Codout.Mailer.AWS.csproj index db259c7..decbff6 100644 --- a/Codout.Mailer.AWS/Codout.Mailer.AWS.csproj +++ b/Codout.Mailer.AWS/Codout.Mailer.AWS.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Sender da Amazon Simple Email Service para envio de E-mails utilizando a biblioteca Codout.Mailer Codout;Framework;Mail;Email;Mailer;SendGrid; diff --git a/Codout.Mailer.Razor/Codout.Mailer.Razor.csproj b/Codout.Mailer.Razor/Codout.Mailer.Razor.csproj index 745b035..d1adeeb 100644 --- a/Codout.Mailer.Razor/Codout.Mailer.Razor.csproj +++ b/Codout.Mailer.Razor/Codout.Mailer.Razor.csproj @@ -1,7 +1,7 @@ - 6.2.2 + 6.3.0 Implementação do template engine para Codout.Mailer utilizando a engine Razor nativa do ASP.NET Core Codout;Framework;Mail;Email;Mailer;Razor; diff --git a/Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj b/Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj index a3834f0..1df58e8 100644 --- a/Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj +++ b/Codout.Mailer.SendGrid/Codout.Mailer.SendGrid.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 Sender da SendGrid para envio de E-mails utilizando a biblioteca Codout.Mailer Codout;Framework;Mail;Email;Mailer;SendGrid; diff --git a/Codout.Mailer/Codout.Mailer.csproj b/Codout.Mailer/Codout.Mailer.csproj index 7df4e7b..245955b 100644 --- a/Codout.Mailer/Codout.Mailer.csproj +++ b/Codout.Mailer/Codout.Mailer.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 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). Codout;Framework;Mail;Email;Mailer; diff --git a/Codout.Multitenancy/Codout.Multitenancy.csproj b/Codout.Multitenancy/Codout.Multitenancy.csproj index 64b5f8d..3239b41 100644 --- a/Codout.Multitenancy/Codout.Multitenancy.csproj +++ b/Codout.Multitenancy/Codout.Multitenancy.csproj @@ -1,7 +1,7 @@ - 6.2.2 + 6.3.0 Modulo Multitenancy da Codout para aplicações Asp.net Core Codout;Framework diff --git a/Codout.Multitenancy/Softprime.Multitenancy.csproj b/Codout.Multitenancy/Softprime.Multitenancy.csproj index dd8d928..25e04fe 100644 --- a/Codout.Multitenancy/Softprime.Multitenancy.csproj +++ b/Codout.Multitenancy/Softprime.Multitenancy.csproj @@ -1,7 +1,7 @@ - 6.2.2 + 6.3.0 netstandard2.0 diff --git a/src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj b/src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj index 7c3dde8..3d3d1cc 100644 --- a/src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj +++ b/src/NetCore/Codout.Framework.NetCore.Repository.Cosmos/Codout.Framework.NetCore.Repository.Cosmos.csproj @@ -3,6 +3,14 @@ 6.2.2 netcoreapp2.0 + + false true Marcelo & Clovis Codout diff --git a/src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj b/src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj index d736052..9907699 100644 --- a/src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj +++ b/src/NetCore/Codout.Framework.NetCore.Repository.DocumentDB/Codout.Framework.NetCore.Repository.DocumentDB.csproj @@ -3,6 +3,14 @@ 6.2.2 netcoreapp2.0 + + false diff --git a/src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj b/src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj index 1f85499..0044902 100644 --- a/src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj +++ b/src/Security/Codout.Security.Argon2/Codout.Security.Argon2.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 net10.0 enable enable diff --git a/src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj b/src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj index 1818b4a..99ac856 100644 --- a/src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj +++ b/src/Security/Codout.Security.Bcrypt/Codout.Security.Bcrypt.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 net10.0 enable enable diff --git a/src/Security/Codout.Security.Core/Codout.Security.Core.csproj b/src/Security/Codout.Security.Core/Codout.Security.Core.csproj index dd59ce2..9f05ce6 100644 --- a/src/Security/Codout.Security.Core/Codout.Security.Core.csproj +++ b/src/Security/Codout.Security.Core/Codout.Security.Core.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 net10.0 enable enable diff --git a/src/Security/Codout.Security.Scrypt/Codout.Security.Scrypt.csproj b/src/Security/Codout.Security.Scrypt/Codout.Security.Scrypt.csproj index b58745b..e08b9a4 100644 --- a/src/Security/Codout.Security.Scrypt/Codout.Security.Scrypt.csproj +++ b/src/Security/Codout.Security.Scrypt/Codout.Security.Scrypt.csproj @@ -1,7 +1,7 @@  - 6.2.2 + 6.3.0 net10.0 enable enable