Ga naar inhoud

Changelog-conventies

Deze pagina beschrijft het contract dat elke openbare NextPDF-repository volgt bij het vastleggen van wijzigingen en het publiceren van releases. Het is een referentie voor conventies; het definieert geen pakketgedrag. Releaseopmerkingen per pakket en versie staan in de eigen CHANGELOG.md van elke repository. Deze gedeelde regels houden de repository-overstijgende changelogsamenvatting consistent en voorkomen dat er informatie uitlekt.

Elk commitonderwerp gebruikt type(scope): description. Het type is een van deze waarden:

TypeBetekenisZichtbaar voor gebruikerVersie-effect
featNieuwe functionaliteitjaminor-verhoging
fixGecorrigeerd gedragjapatch-verhoging
perfPrestatieverbetering zonder gedragswijzigingjapatch-verhoging
refactorInterne herstructurering zonder waarneembare wijzigingneegeen
docsAlleen documentatieneegeen
testAlleen testsneegeen
build / ciAlleen build of pipelineneegeen
choreOnderhoud, afhankelijkheden of toolingneegeen
revertTerugdraaien van een eerdere commitafhankelijkafhankelijk

Een breaking change markeer je met een ! na het type of de scope (feat(api)!: …) of met een BREAKING CHANGE:-footer. Beide markeringen verhogen de major-versie volgens Semantic Versioning. Leg een beveiligingsrelevante fix zo vast dat deze in de kolom Security van de samenvatting over alle repository’s heen kan verschijnen.

Versieverhogingen worden mechanisch bepaald. Een release met een breaking change is een major. Een release zonder breaking change maar met een feat is een minor. Een release zonder breaking change of feat maar met een fix of perf is een patch. Pakketten van vóór 1.0 mogen volgens SemVer §4 de minor verhogen voor een breaking change. De commit draagt nog steeds de breaking-markering, zodat de samenvatting nauwkeurig blijft.

De CHANGELOG.md van elke repository volgt Keep a Changelog 1.1.0: vermeldingen worden per uitgebrachte versie gegroepeerd onder Added, Changed, Deprecated, Removed, Fixed en Security. Een [Unreleased]-sectie mag in de repository lopende notities bevatten, maar de repository-overstijgende samenvatting telt alleen getagde, uitgebrachte versies. Niet-uitgebracht werk verschijnt nooit in de openbare index.

Hoe de repository-overstijgende samenvatting wordt afgeleid (en informatielekkage voorkomt)

Sectie met titel “Hoe de repository-overstijgende samenvatting wordt afgeleid (en informatielekkage voorkomt)”

De samenvattingstabel op de changelogindex wordt gegenereerd door de Conventional Commits-geschiedenis van elke repository op de laatste uitgebrachte tag in alleen-lezenmodus uit te lezen en de categorieën te tellen. De afleidingsregels zijn bewust beperkt, zodat interne details niet uitlekken:

  1. Aantallen, geen inhoud. Alleen het aantal commits per gebruikerszichtbaar type wordt gerapporteerd. Er wordt geen commitonderwerp, -tekst, -footer of -hash weergegeven.
  2. Alleen gebruikerszichtbare types. docs, test, ci, chore en refactor worden uitgesloten omdat ze niets wijzigen wat een pakketgebruiker waarneemt.
  3. Alleen uitgebracht. Een commit telt pas mee zodra die deel uitmaakt van een getagde release van een openbaar pakket.
  4. Geen identificatoren. Interne verwijzingen naar issues, tickets, cycli, waves of werkitems die in een privé-commitscope kunnen voorkomen, worden nooit getoond, omdat de scopetekst zelf nooit wordt weergegeven. Alleen het type wordt gelezen.
  5. Geen automatiseringsattributie. Trailers van automatisering voor bijdragers worden niet gelezen of weergegeven.

Daarom is de openbare changelog een categoriesamenvatting met koppelingen naar de eigen CHANGELOG.md van elk pakket, geen geaggregeerde commitfeed. Door dit ontwerp lekt de samenvatting geen interne informatie. Gezaghebbende releaseteksten blijven bij het pakket dat ze beheert.