Skip to content

Releases: knope-dev/knope

0.16.0 (2024-03-20)

21 Mar 00:19
87ab0fb
Compare
Choose a tag to compare

Breaking Changes

Don't delete changesets for prereleases

Previously, using PrepareRelease to create a prerelease (for example, with --prerelease-label) would delete all
changesets, just like a full release. This was a bug, but the fix is a breaking change if you were
relying on that behavior.

Features

Add a shell variable for Command steps

You can now add shell=true to a Command step to run the command in the current shell.
This lets you opt in to the pre-0.15.0 behavior.

[[workflows.steps]]
type = "Command"
command = "echo $AN_ENV_VAR"
shell = true

0.15.0 (2024-03-18)

18 Mar 02:28
13e64f8
Compare
Choose a tag to compare

Breaking Changes

Don't run Command steps in shell

The Command step no longer attempts to run the command in a default shell for the detected operating system.
This fixes a compatibility issue with Windows.

If this change doesn't work for your workflow, please open an issue describing your need so we can fix it.

Notably, using && in a command (as was the case for some default workflows) will no longer work. Instead, split this
into multiple Command steps.

PR #919 closes issue #918. Thanks for reporting @alex-way!

0.14.1 (2024-02-23)

23 Feb 03:43
650a18f
Compare
Choose a tag to compare

Features

Add ignore_go_major_versioning option

You can now set ignore_go_major_versioning = true for a package in
knope.toml to turn off the major version validation & updating in go.mod files.

More details in the new docs.

Closes #863, thanks for the suggestion @BatmanAoD!

0.14.0 (2024-02-04)

04 Feb 04:21
3672338
Compare
Choose a tag to compare

Breaking Changes

Cargo.toml files must now have a package.name property

This was already required by Cargo, but wasn't enforced by Knope until now. Before, a Cargo.toml file like

[package]
version = "0.1.0"

was acceptable, but now it must be

[package]
name = "my-package"
version = "0.1.0"

Features

Add basic Cargo workspace support

If you have a Cargo.toml file in the working directory which represents a Cargo workspace containing fixed members, like:

[workspace]
members = [
"my-package",
"my-other-package",
]

then Knope will now treat each member like a package.
There must be a Cargo.toml file in each member directory, or Knope will error.

This doesn't work with path globbing yet, only manual directory entries. See the new docs for more details.

Use default packages/workflows even when knope.toml exists

If you define a knope.toml file without any packages, Knope will assume the default packages (as if you had no knope.toml file at all).

Likewise, if you have no [[workflows]] in a knope.toml file, Knope will assume the default workflows.

Fixes

Homebrew tap now contains Apple Silicon binaries and auto-publishes new versions (#827)

0.13.4 (2024-01-13)

13 Jan 01:46
68361b6
Compare
Choose a tag to compare

Features

Gitea support

PR #759 closed issue #743. Thank you, @FallenValkyrie!

  • Added Support for Gitea in the CreatePullRequest step
  • Added Support for Gitea in the Release step
  • Added A new SelectGiteaIssue step
  • Add support to generate Gitea config from known public Gitea instances

To use these new steps, just add a new section to your configuration, like this:

[gitea]
repo = "knope"
owner = "knope-dev"
host = "https://codeberg.org"

You can now use the supported steps in the same way as their GitHub equivalents.

Tip

Knope can now generate a configuration for you, if your repository's remote is one of the known
public Gitea instances. Currently only Codeberg is supported,
but feel free to add more here.

0.13.3 (2023-12-17)

17 Dec 20:09
0755eee
Compare
Choose a tag to compare

Features

Support pubspec.yaml in versioned_files

Knope can now version Dart projects! You can now add a pubspec.yaml file to your package.versioned_files.

PR #732 closes #731. Thanks @FallenValkyrie!

0.13.2 (2023-11-11)

11 Nov 03:11
c2e035e
Compare
Choose a tag to compare

Fixes

Add [github] section with knope --generate (#666)

--dry-run will no longer report deleting the same changeset twice (#668)

CreateChangeFile (like knope document-change) now prints package names. (#669)

0.13.1 (2023-11-05)

05 Nov 23:40
b86fd33
Compare
Choose a tag to compare

Documentation

There is a new docs website

Check out https://knope.tech/ to see the new docs, and please report any errors or gaps!
All error messages within Knope should be updated to point to the new docs.
If any are still pointed at GitHub pages (as of this version), that's a bug!

As part of this, you can also now install Knope through Chocolatey and Homebrew!

0.13.0 (2023-10-22)

22 Oct 17:08
ed7a1e9
Compare
Choose a tag to compare

Breaking Changes

Change changeset title level

The level of the title of a changeset no longer impacts the level of the release header in the changelog. To make this more obvious, changeset title are now level one headers by default. This is a breaking change because older versions of Knope will no longer properly handle the changesets from newer versions of Knope.

Change where new versions are inserted in changelog

In practice, this will not impact most changelogs, however, previous versions of Knope looked for the first header at a certain level (e.g., starting with ## ) and inserted the new version right before that. Now, Knope looks for the first header that is parseable as a semver version (e.g., ## 1.2.3) and inserts the new version right before that.

This will make it harder to adopt Knope in projects that have an existing changelog which is not of the same format,
but it makes inserting the new version in the changelog more robust.

Features

Allow overriding built-in changelog sections

If you don't want to use the default changelog sections of "Breaking changes", "Features",
and "Fixes", you can now override them by using the equivalent changeset types!
Overriding them resets their position in the changelog, so you probably want to reset all of them if you reset any.
This looks like:

[package]
extra_changelog_sections = [
{ type = "major", name = "❗️Breaking ❗" },
{ type = "minor", name = "🚀 Features" },
{ type = "patch", name = "🐛 Fixes" },
{ footer = "Changelog-Note", name = "📝 Notes" },
]

Support level-one release headers in changelogs

If the last release in a changelog file has a level-one header instead of Knope's default of level-two, new releases will be created with level-one headers as well. Sections will then be level two instead of level three.

0.12.0 (2023-09-30)

30 Sep 04:29
6b45a53
Compare
Choose a tag to compare

Breaking Changes

Prevent bumping major version of a go.mod file

According to the docs, aside from the v0 -> v1 transition, go.mod files should not be updated for new major versions, but instead a new v{major} directory should be created with a new go.mod file. This is for compatibility with older versions of Go tools.

In order to prevent someone from accidentally doing the wrong thing, Knope will no longer bump a go.mod file to v2 unless --override-version is used to bypass this check. Additionally, if a go.mod file is in the matching versioned directory (e.g., the go.mod file ending in /v2 is under a directory called v2), Knope will not allow the major version of that file to be bumped, as it would break the package.

Fixes

Handle version-specific go modules correctly

Fixes #584 from @BatmanAoD.

If you have a go.mod file representing a specific major version in a directory (as recommended in the go docs), Knope will now tag it correctly. Previously, a v2/go.mod file would generate a tag like v2/v2.1.3. Now, it will generate a tag like v2.1.3.

Additionally, when determining the current version for a go.mod file, only tags which match the major version of the go.mod file will be considered.

Properly version named packages containing a root go.mod file

Consider this package config in a knope.toml:

[packages.something]
versioned_files = ["go.mod"]

The Release step previously (and will still) add a tag like something/v1.2.3, however the correct Go module tag is v1.2.3 (without the package name prefix). Knope will now correctly add this second tag (previously, top-level tags were only added for single-package repos).

Documentation

Document conflict between package names and go module names

It is possible to write a knope.toml file which will cause conflicting tags during the Release step if you have go.mod files in nested directories. This is now documented.