Skip to content

Conversation

@taimoorzaeem
Copy link
Collaborator

@taimoorzaeem taimoorzaeem commented Jan 9, 2026

Closes #4590.

  • Create nix script.
  • Add this to CI.

I would love some feedback on this.

@wolfgangwalther
Copy link
Member

Years ago I worked a bit on #1805, but this never really lead anywhere. I believe if we want any kind of checks for changelog (or improve the process to maybe only have a single source of truth or whatever), then we need to store the changelog in a structured way, not in the freetext format we have right now. I am skeptical of trying to read the current changelog and have any checks on it.

(I did not actually look much at the code itself, only very briefly skimmed it)

@steve-chavez
Copy link
Member

I believe if we want any kind of checks for changelog (or improve the process to maybe only have a single source of truth or whatever), then we need to store the changelog in a structured way, not in the freetext format we have right now. I am skeptical of trying to read the current changelog and have any checks on it.

Agree with the structured format. I also skimmed at the PR code before and looked like the check could fail in certain ways.

@taimoorzaeem taimoorzaeem marked this pull request as draft January 13, 2026 05:44
@taimoorzaeem
Copy link
Collaborator Author

taimoorzaeem commented Jan 13, 2026

I like the idea of a structured format as well. Just like in #1805, maybe we can have a format like:

changelog:
  - version: 14.0
    date: 2025-11-05
  added:
    - description: Bounded JWT cache using the SIEVE algorithm
      details:
        - It now uses a fixed size cache instead of arbitrary sized cache.
      author: mkleczek
      refs: [4084]
  fixed:
    - description: Fix not logging OpenAPI queries when `log-query=main-query` is enabled
      author: steve-chavez
      refs: [4226]
    - description: Fix not logging explain query when `log-query=main-query` is enabled
      author: steve-chavez
      refs: [4319]
  changed:
    - description: Drop support for PostgreSQL EOL version 12
      author: wolfgangwalther
      refs: [4319]

@wolfgangwalther
Copy link
Member

Just like in #1805, maybe we can have a format like:

A few high-level thoughts after having done similar things in the past:

  • The structured format is good for tooling, but not to read. Do we want to keep the current changelog file, but essentially recreate it from the structured data? Would we do that as part of a release, so that unreleased changes would not appear in the changelog, yet?
  • The proposed format has the same problem as any other format residing in a single file: Merge conflicts are annoying. Some changelog tools work by adding new changelog entries as separate file with arbitrary names in a folder, for example changes/. Each file represents one change. The changes are then transformed into something else at the time of release, the folder is cleared. This will prevent all kinds of merge conflicts, and will also prevent changes from going into the wrong changelog section after rebasing.

@steve-chavez
Copy link
Member

Do we want to keep the current changelog file, but essentially recreate it from the structured data?

I don't think that would work given given old releases didn't use the commit prefixes?

Some changelog tools work by adding new changelog entries as separate file with arbitrary names in a folder, for example changes/

Sounds interesting, which tool does that? 👀

@wolfgangwalther
Copy link
Member

I don't think that would work given given old releases didn't use the commit prefixes?

You can always append the existing changelog to the newly generated part.

Sounds interesting, which tool does that? 👀

There are probably multiple, I can't remember which tool I saw this first on. A google search brings up https://github.com/churchtools/changelogger.

@taimoorzaeem
Copy link
Collaborator Author

taimoorzaeem commented Jan 20, 2026

Some changelog tools work by adding new changelog entries as separate file with arbitrary names in a folder, for example changes/. Each file represents one change. The changes are then transformed into something else at the time of release, the folder is cleared. This will prevent all kinds of merge conflicts, and will also prevent changes from going into the wrong changelog section after rebasing.

There are probably multiple, I can't remember which tool I saw this first on. A google search brings up https://github.com/churchtools/changelogger.

@wolfgangwalther What you are describing seems very similar to https://github.com/twisted/towncrier, is this the one?

@wolfgangwalther
Copy link
Member

The name sounds familiar, could be it, not 100% sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Add CI workflow to enforce additions in CHANGELOG.md

3 participants