Skip to content

Bug: Knope misbehavior when changeset header doesn't match #1827

@hazre

Description

@hazre

Knope cli tries to prepare a pre-release when changesets don't match and the behavior is really weird, It pulls changes from last versions.

for example:

I have this knope config:

[package]
versioned_files = ["package.json"]
changelog = "CHANGELOG.md"
extra_changelog_sections = [
    { name = "Documentation", types = ["docs"] },
    { name = "Notes", types = ["note"] },
]

[changes]
ignore_conventional_commits = true

[[workflows]]
name = "prepare-release"
help_text = "Prepare a release PR"

[[workflows.steps]]
type = "Command"
command = "git switch -c release"

[[workflows.steps]]
type = "PrepareRelease"

[[workflows.steps]]
type = "Command"
command = "git commit -m \"chore: prepare release $version\""

[[workflows.steps]]
type = "Command"
command = "git push --force --set-upstream origin release"

[[workflows.steps]]
type = "CreatePullRequest"
base = "dev"

[workflows.steps.title]
template = "chore: prepare release $version"

[workflows.steps.body]
template = """
> [!IMPORTANT]
> Merging this PR will create a new release.

$changelog"""

[[workflows]]
name = "release"
help_text = "Create a GitHub release"

[[workflows.steps]]
type = "Release"

[[workflows]]
name = "document-change"
help_text = "Create a new change file to be included in the next release"

[[workflows.steps]]
type = "CreateChangeFile"

[github]
owner = "SableClient"
repo = "Sable"

[release_notes]
# The <!-- commit:$commit_hash --> marker is used by prepare-release.yml
change_templates = [
    "### $summary <!-- commit:$commit_hash -->\n\n$details",
    "* $summary <!-- commit:$commit_hash -->",
]

Note that my package.json version right now is 1.7.0

and if I have a single change like it this in my changeset:

---
'default': minor
---

Show group DM participants with triangle avatar layout. Group DMs now display up to 3 member avatars in a triangle formation (most recent sender on top), with bot filtering and DM count badge support.

You can replace 'default' with anything but default.

I get this when I run knope prepare-release --dry-run:

> knope prepare-release --dry-run 
Would run git switch -c release
Would run git commit -m "chore: prepare release 1.7.0"
Would run git push --force --set-upstream origin release
Would create or update a pull request from HEAD to dev:
        Title: chore: prepare release 1.7.0
        Body: > [!IMPORTANT]
> Merging this PR will create a new release.


## Features

* Added ability to start calls in DMs and rooms. DM calls will trigger a notification popup & ringtone (for other sable users/compatible clients, probably). <!-- commit:0110522 -->
* Merge in upstream call things and remove the duplicate new voice room button. <!-- commit:49af037 -->
* Add button to save a sticker you see in the message timeline to your personal account sticker pack. <!-- commit:e4fb834 -->
* Added config option `hideUsernamePasswordFields` for hosts to hide username and password fields from login page. <!-- commit:7a700ab -->
* Add silent replies when clicking the bell icon during composing a reply. <!-- commit:1647586 -->
* Device names are now dynamic, showing your browser and OS (e.g., "Sable on Firefox for Windows") instead of just "Sable Web". <!-- commit:b71320e -->
* Implement an interface to allow room/space profile customization without needing to call the relating commands directly. <!-- commit:4839466 -->
* Added hover menu inside Message Version Pop-out. <!-- commit:9562aa8 -->

## Fixes

* Added a few accessibility tags to the elements involved in message composing. <!-- commit:485834b -->
* Clarify notification settings and functionality once and for all. <!-- commit:8053c45 -->
* Fix DM notifications, encrypted event notifications, and enable reaction notifications <!-- commit:976d2e8 -->
* Fix images without an empty body display as "Broken Message" <!-- commit:b66f53a -->
* Prevent overly wide emotes from taking up the entire screen width. <!-- commit:bee0356 -->
* Change to more standard compliant msgtype `m.emote` for `/headpat` event. <!-- commit:399915d -->
* fix message forwarding metadata leak when forwarding from private rooms [see issue 190](https://github.com/SableClient/Sable/issues/190) <!-- commit:6ec4f99 -->
* "Underline Links" setting no longer affects the entire app, only links in chat, bios, and room descriptions. <!-- commit:c51e895 -->

it's pulling changelogs from 1.7.0, instead of creating 1.8.0 or even just erroring out.

If I fix the mistake in the changeset:

---
default: minor
---

Show group DM participants with triangle avatar layout. Group DMs now display up to 3 member avatars in a triangle formation (most recent sender on top), with bot filtering and DM count badge support.

I get this when I run knope prepare-release --dry-run:

> knope prepare-release --dry-run 
Would run git switch -c release
Would add the following to package.json: version = 1.8.0
Would delete .changeset\feat-group-dm-triangle-avatars.md
Would add the following to CHANGELOG.md: 
## 1.8.0 (2026-03-12)

### Features

* Show group DM participants with triangle avatar layout. Group DMs now display up to 3 member avatars in a triangle formation (most recent sender on top), with bot filtering and DM count badge support. <!-- commit:c6bb5ed -->

Would add files to git:
  package.json
  .changeset/feat-group-dm-triangle-avatars.md
  CHANGELOG.md
Would run git commit -m "chore: prepare release 1.8.0"
Would run git push --force --set-upstream origin release
Would create or update a pull request from HEAD to dev:
        Title: chore: prepare release 1.8.0
        Body: > [!IMPORTANT]
> Merging this PR will create a new release.

## Features

* Show group DM participants with triangle avatar layout. Group DMs now display up to 3 member avatars in a triangle formation (most recent sender on top), with bot filtering and DM count badge support. <!-- commit:c6bb5ed -->

Which is the expected outcome.

sorry for the long issue, idk how else to explain this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions