Skip to content

Latest commit

 

History

History
232 lines (163 loc) · 8.66 KB

File metadata and controls

232 lines (163 loc) · 8.66 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.

Stadium Release Names

This project uses famous football stadiums (A-Z) that hosted FIFA World Cup matches (with notable fallbacks where necessary):

Letter Stadium Name Location Tag Name
A Azteca Mexico (1970, 1986, 2026) azteca
B Bernabéu Spain (1982) bernabeu
C Centenario Uruguay (1930) centenario
D Düsseldorf (Merkur Spiel-Arena) Germany (2006) dusseldorf
E Ekaterinburg Arena Russia (2018) ekaterinburg
F Frankfurt Waldstadion Germany (1974, 2006) frankfurt
G Gelsenkirchen Germany (2006) gelsenkirchen
H Hard Rock Stadium USA (2026) hardrock
I Ibn Batouta Stadium Morocco (2030) ibnbatouta
J Johannesburg Soccer City South Africa (2010) johannesburg
K Kazan Arena Russia (2018) kazan
L Lusail Qatar (2022) lusail
M Maracanã Brazil (1950, 2014) maracana
N Nantes Beaujoire France (1998) nantes
O Olympiastadion Berlin Germany (1974, 2006) olympiastadion
P Parc des Princes France (1938, 1998) parcdesprinces
Q Qatar 974 Qatar (2022) qatar974
R Rose Bowl USA (1994) rosebowl
S San Siro Italy (1934, 1990) sansiro
T Toronto BMO Field Canada (2026) toronto
U Ullevi Sweden (1958) ullevi
V Volgograd Arena Russia (2018) volgograd
W Wembley England (1966) wembley
X Xiamen Egret Stadium (famous fallback) xiamen
Y Yokohama International Stadium Japan (2002) yokohama
Z Zentralstadion Leipzig Germany (1974, 2006) zentralstadion

Added

  • Add ValidateAsync_SquadNumberNegative_ReturnsValidationError test to exercise the GreaterThan(0) rule with a negative value, which passes NotEmpty() but fails the greater-than rule (#427)
  • Add ValidateAsync_FirstNameEmptyInUpdateRuleSet_ReturnsValidationError test to verify the "Update" rule set enforces structural field validation (#427)
  • Add adr/ directory with 12 Architecture Decision Records documenting architectural choices, technology decisions, and design trade-offs (#372)
  • Add ADR index and template at adr/README.md (#372)
  • Add Architecture Decisions section to README.md referencing the ADR index (#372)
  • Add ADR guidance section to CONTRIBUTING.md (#372)
  • Add ADR context loading instructions to .github/copilot-instructions.md (#372)

Changed

  • Rename ValidateAsync_SquadNumber_BelongsToPlayerBeingUpdated_ReturnsNoErrors to ValidateAsync_SquadNumberBelongsToPlayerBeingUpdated_ReturnsNoErrors to align with the 3-segment naming convention for service/validator tests (#427)
  • Make CSharpier step in /pre-commit conditional (skip with a note if not installed), consistent with the Docker and CodeRabbit steps (#427)
  • Add "Verify tag commit is reachable from master" step to CD workflow using git merge-base --is-ancestor before any build or publish steps (#439)

Fixed

  • GET /players now returns 200 OK with an empty list [] when no players exist, instead of 404 Not Found (#425)
  • AutoMapper Player → PlayerResponseModel profile now explicitly ignores the Id source member via ForSourceMember, making the exclusion intentional rather than implicit (#425)

Removed


2.1.0 - dusseldorf - 2026-03-29

Added

  • Add SonarCloud configuration via .sonarcloud.properties with explicit CPD exclusions for migrations, generated code, test files, and structurally repetitive production files (#426, #435)
  • Add bug report issue template (.github/ISSUE_TEMPLATE/bug_report.md) (#426)

Changed

  • Normalize player dataset: add Lo Celso (squad 27), correct Fernández/Mac Allister/Messi team data, replace random UUIDs with deterministic UUID v5 values (#435)
  • Align CRUD test fixtures: Lo Celso (squad 27) for Create and Delete, Messi (squad 10) for Retrieve, Damián Martínez (squad 23) for Update (#435)
  • Bump codecov/codecov-action from 5.5.2 to 5.5.3 (#423)

Fixed

  • Scope BeUniqueSquadNumber validator to "Create" rule set to prevent false rejection of valid PUT requests (#424)

2.0.0 - centenario - 2026-03-18

Changed

  • Refactor error responses to use RFC 7807 Problem Details (#418)
  • Add /squadNumber/ path segment to PUT and DELETE routes — breaking change (#418)
  • Extract NotFoundTitle constant and remove redundant null-conditional operator (#418)
  • Rename test methods to follow Microsoft .NET naming standard (#396)
  • Upgrade AutoMapper from 14.x to 16.1.1 (#414) — see Security section
  • Bump FluentAssertions from 8.8.0 to 8.9.0 (#417)
  • Bump coverlet.collector from 8.0.0 to 8.0.1 (#419)
  • Bump softprops/action-gh-release from 2.6.0 to 2.6.1 (#416)

Fixed

  • Add squad number mismatch guard in PutAsync and update README (#418)
  • Strengthen test assertions for Problem Details responses (#418)
  • Fix broken 201 assertion in controller test for Post_Players_NonExisting (#396)
  • Add missing edge case tests for UpdateAsync, DeleteAsync, and DateOfBirth boundary validation (#396)

Security

  • Sanitize player data before logging to prevent log forging
  • Upgrade AutoMapper from 14.x to 16.1.1 to resolve high-severity security vulnerability GHSA-rvv3-g6hj-g44x (#414)

1.1.0 - bernabeu - 2026-02-09

Changed

  • Upgrade to .NET 10 LTS from .NET 8 (#368)
  • Update Microsoft.AspNetCore.OpenApi to 10.0.0
  • Update Microsoft.EntityFrameworkCore.Sqlite to 10.0.0
  • Update Microsoft.EntityFrameworkCore.Design to 10.0.0
  • Update Microsoft.VisualStudio.Web.CodeGeneration.Design to 10.0.0
  • Update Docker images to .NET 10 SDK and runtime (now based on Ubuntu 24.04 LTS instead of Debian 12)
  • Update Dockerfile user creation commands for Ubuntu compatibility (groupadd/useradd instead of adduser)
  • Update CI/CD pipelines to use .NET 10 SDK
  • Token efficiency strategy for Copilot/AI agents with optimized instruction loading and improved token counting script (#364)
  • Bump Swashbuckle.AspNetCore from 10.1.0 to 10.1.2
  • Bump docker/login-action from 3.6.0 to 3.7.0
  • Bump softprops/action-gh-release from 2.2.0 to 2.5.0
  • Bump actions/checkout from 6.0.1 to 6.0.2

1.0.0 - azteca - 2026-01-22

Initial release. See README.md for complete feature list and documentation.


How to Release

To create a new release, follow these steps in order:

1. Update CHANGELOG.md

Move items from the [Unreleased] section to a new release section:

## [X.Y.Z - STADIUM_NAME] - YYYY-MM-DD

### Added
- New features here

### Changed
- Changes here

### Fixed
- Bug fixes here

### Removed
- Removed features here

Important: Commit and push this change before creating the tag.

2. Create and Push Version Tag

git tag -a vX.Y.Z-stadium -m "Release X.Y.Z - Stadium"
git push origin vX.Y.Z-stadium

Example:

git tag -a v1.0.0-azteca -m "Release 1.0.0 - Azteca"
git push origin v1.0.0-azteca

3. Automated CD Workflow

The CD workflow automatically:

  • ✅ Validates the stadium name against the A-Z list
  • ✅ Builds and tests the project in Release configuration
  • ✅ Publishes Docker images to GHCR with three tags (:X.Y.Z, :stadium, :latest)
  • ✅ Creates a GitHub Release with auto-generated notes from commits

Pre-Release Checklist

  • CHANGELOG.md updated with release notes
  • CHANGELOG.md changes committed and pushed
  • Tag created with correct format: vX.Y.Z-stadium
  • Stadium name is valid (A-Z from table above)
  • Tag pushed to trigger CD workflow