Skip to content

Add KeepAChangelog#717

Open
64J0 wants to merge 5 commits intomasterfrom
add-keepachangelog
Open

Add KeepAChangelog#717
64J0 wants to merge 5 commits intomasterfrom
add-keepachangelog

Conversation

@64J0
Copy link
Copy Markdown
Member

@64J0 64J0 commented Mar 15, 2026

Description

With this PR, I'm:

How to test

dotnet pack -v normal -c Release --include-symbols --include-source -o nupkg src/Giraffe/Giraffe.*proj

Then, inspect the package.

Related issues

@64J0 64J0 self-assigned this Mar 15, 2026
@64J0 64J0 marked this pull request as ready for review March 22, 2026 01:45
@64J0 64J0 changed the title [WIP] Add KeepAChangelog Add KeepAChangelog Mar 22, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds Keep a Changelog support to Giraffe’s packaging/release workflow by introducing a repository CHANGELOG.md and wiring Ionide.KeepAChangelog.Tasks into the main library project, with corresponding release-process documentation updates.

Changes:

  • Add CHANGELOG.md in Keep a Changelog format (historic entries included).
  • Configure src/Giraffe/Giraffe.fsproj to use Ionide.KeepAChangelog.Tasks and point it at CHANGELOG.md (also removes the hard-coded <Version>).
  • Update DEVGUIDE.md release steps to include updating CHANGELOG.md.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 9 comments.

File Description
src/Giraffe/Giraffe.fsproj Removes explicit versioning and adds KeepAChangelog task + configuration to source metadata from CHANGELOG.md.
DEVGUIDE.md Updates release process steps to maintain both RELEASE_NOTES.md and CHANGELOG.md.
CHANGELOG.md Introduces a Keep a Changelog formatted changelog with prior release history.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +46 to +49
<PropertyGroup>
<!-- Configuration for Ionide.KeepAChangelog.Tasks -->
<ChangelogFile>$(MSBuildThisFileDirectory)../../CHANGELOG.md</ChangelogFile>
</PropertyGroup>
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ionide.KeepAChangelog.Tasks is being added/configured here, but this project file still hard-codes PackageReleaseNotes earlier to the RELEASE_NOTES.md URL. If the goal is to let KeepAChangelog populate PackageReleaseNotes (and/or Version/PackageVersion) from CHANGELOG.md, the explicit PackageReleaseNotes value should be removed or made conditional so the generated value isn’t ignored/overridden.

Copilot uses AI. Check for mistakes.
Comment on lines +7 to +9
1. Checkout `master` branch.
1. `git checkout master`.
2. Add a new entry at the top of the **RELEASE_NOTES.md** and **CHANGELOG.md** with a version and a date.
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The git checkout master command includes a trailing period inside the inline code block, which will break copy/paste. Move punctuation outside the backticks (same applies to any other commands in this section).

Copilot uses AI. Check for mistakes.

### Security

- [Some security fixes for Giraffe](https://github.com/giraffe-fsharp/Giraffe/pull/691) - Credits @
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changelog entry has an incomplete credit (Credits @) which will leak into generated release notes. Fill in the author handle (or remove the credits suffix if unknown) to avoid publishing malformed metadata.

Suggested change
- [Some security fixes for Giraffe](https://github.com/giraffe-fsharp/Giraffe/pull/691) - Credits @
- [Some security fixes for Giraffe](https://github.com/giraffe-fsharp/Giraffe/pull/691)

Copilot uses AI. Check for mistakes.
### Fixed

- `routeBind` works when nested in a `subRoute` handler now
- `routeBind` doesn't crate a model object any more if the route arguments do not match the provided model
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in changelog text: "doesn't crate" should be "doesn't create".

Suggested change
- `routeBind` doesn't crate a model object any more if the route arguments do not match the provided model
- `routeBind` doesn't create a model object any more if the route arguments do not match the provided model

Copilot uses AI. Check for mistakes.
Comment on lines +721 to +724
### Added

- Added three additional `HttpContext` extension methods in the `Giraffe.HttpContextExtensions` module: `WriteJson`, `WriteXml` and `WriteText`. These three methods can be used for direct HttpReponse writing from within a custom handler without having to sub-call the `json`, `xml` or `text` http handlers.
- Changed the `UseGiraffeErrorHandler` method to return an `IApplicationBuilder` now. This change allows [middleware chaining](https://github.com/dustinmoris/Giraffe/pull/118). This is a breaking change and you'll either have to chain middleware or append an `|> ignore` in your application set up.
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in changelog text: "HttpReponse" should be "HttpResponse".

Copilot uses AI. Check for mistakes.
### Added

- Added a new programmatic view engine called `Giraffe.HtmlEngine`
- Addd a new `HttpHandler` named `renderHtml` to return views from the new view engine
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in changelog text: "Addd" should be "Added".

Suggested change
- Addd a new `HttpHandler` named `renderHtml` to return views from the new view engine
- Added a new `HttpHandler` named `renderHtml` to return views from the new view engine

Copilot uses AI. Check for mistakes.

### Changed

- Deprecated `Griaffe.Tasks`. Giraffe uses the original [TaskBuilder.fs](https://github.com/rspeele/TaskBuilder.fs) library now.
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in changelog text: "Griaffe.Tasks" should be "Giraffe.Tasks".

Suggested change
- Deprecated `Griaffe.Tasks`. Giraffe uses the original [TaskBuilder.fs](https://github.com/rspeele/TaskBuilder.fs) library now.
- Deprecated `Giraffe.Tasks`. Giraffe uses the original [TaskBuilder.fs](https://github.com/rspeele/TaskBuilder.fs) library now.

Copilot uses AI. Check for mistakes.
### Changed

- Changed the default json serializer to use camel case for serialization (this change prevents users from being able to change the default serializer through the `JsonConvert.DefaultSettings` object - use `customJson` instead if customization is required)
- Changed the `serializeJson`, `deserializeJson` methods to accept an aditional parameter of type `JsonSerializerSettings`
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo in changelog text: "aditional" should be "additional".

Suggested change
- Changed the `serializeJson`, `deserializeJson` methods to accept an aditional parameter of type `JsonSerializerSettings`
- Changed the `serializeJson`, `deserializeJson` methods to accept an additional parameter of type `JsonSerializerSettings`

Copilot uses AI. Check for mistakes.
Comment on lines +12 to +18
3. Create a new commit:
1. `git add RELEASE_NOTES.md`, and `git add CHANGELOG.md`.
2. `git commit -m "Release 6.0.0-beta001"`. Notice that the pre-release versioning scheme is semantic versioning (SemVer), so each section of the pre-release part is compared separately, and purely-numeric sections are compared as integers. For example, if you eventually release `v6.4.1-alpha-9` and `v6.4.1-alpha-10`, the `alpha-9` version will be ranked higher on Nuget. Keep this in mind and prefer the alphaXXX/betaXXX structure, where XXX are integers starting from 001 to 999. First mentioned at this PR comment: [link](https://github.com/giraffe-fsharp/Giraffe/pull/596#issuecomment-2111097042).
5. Make a new tag
1. `git tag v6.0.0-beta001`
6. Push changes
1. `git push --atomic origin master v6.0.0-beta001`
7. Create a [new pre-release](https://github.com/giraffe-fsharp/Giraffe/releases) on GitHub
1. Choose the tag you just pushed
2. Title the pre-release the same as the version
3. Copy the pre-release notes from RELEASE_NOTES.md
4. This will trigger a github action to build and publish the nuget package
8. Do any additional testing or tell certain people to try it out
9. Once satisfied repeat the process but without any alpha/beta/rc suffixes.
1. Run through steps 2-7, creating a **release** instead of a pre-release
10. Tell the internet about it
1. Tweet about it
2. Post in F# Slack
3. Post in F# Discord
11. Celebrate 🎉
4. Make a new tag.
1. Example: `git tag v6.0.0-beta001`.
5. Push changes.
1. Example: `git push --atomic origin master v6.0.0-beta001`
Copy link

Copilot AI Mar 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Several example commands include trailing punctuation inside inline code blocks (e.g., git commit ...". and git tag ....); this will break copy/paste. Keep the command inside backticks without the trailing . and put punctuation outside the code span.

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Contributor

@nojaf nojaf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As you have multiple projects which you submit to NuGet, you could consider having some of this stuff in Build.Directory.props.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use KeepAChangelog

3 participants