Published on 2024-01-19.
-
e712276 minor - Support custom languages with the custom language option. Example custom language configuration:
--- language: custom repo: "https://github.com/appsignal/appsignal-python" bootstrap: command: "echo bootstrap" clean: command: "hatch clean" build: command: "hatch build" publish: command: "hatch publish" test: command: "hatch run test:pytest" read_version: "hatch version" write_version: "hatch version"
-
7853508 minor - Add mono publish
--no-git
flag. When this flag is given tomono publish
, the publishing process will not commit the changes to Git, create a tag or push the changes to the remote. This can be useful when you want mono to only generate changelogs and update package version. -
10ce9e4 minor - Add mono publish
--no-package-push
flag. When this flag is given tomono publish
, the publishing process will not push the packages to their version managers. This can be useful when you want mono to only generate changelogs and update package version. -
cbd946d minor - Add mono publish
--yes
flag. When this flag is given tomono publish
, the publishing process will not prompt to confirm publishing. Any OTP prompts by the package managers may still prompt for input. -
d7ab1e0 patch - Support custom tags for Node.js packages. Call
mono publish
with the--tag
option to set custom tags for new releases. By default Node.js adds thelatest
tag to new releases, but this may not always be desired. The tag specified applies to all packages published by mono. The--tag
option has precedence over the--prerelease
option.mono publish --tag 2.x-stable
-
7837ef1 patch - When the
mono publish
command fails at or before the publishing step, offer the user the possibility to rollback changes performed to the Git repository.
- 56d7135 minor - Require Ruby 3 going forward.
- 8ae7c7f minor - Use a selection prompt for the semver change in
mono changeset add
. The prompts were inconsistency asking between a number and text input. It now will only require you to select options with numbers. - 19eb6f7 patch - Remove [ci skip] tag from publish commit. Run the CI build for the publish commit just in case anything could break with updating the version.
- 4e21aed patch - Improve publish commit message. When only one package is publish, show the version number in the commit subject. Add a small description to the message what was changed.
- b0474af patch - When running
mono publish
, check if the Git tag that is about to be published already exists, and if so, abort the publishing process early. - ad5a451 patch - Add the publish date for each version to the changelog. This allows people to see at a glance when a version was released.
- db13740 patch - Fix changeset filenames containing a backticks by replacing it with a dash (
-
). If a backtick was present in the changeset description it would fail to open the right file when prompted. - 6596f02 patch - Check if the directory in which Mono is run is Mono project before performing commands. Previously Mono would error with a non-user friendly Ruby error about a missing file. This case is now handled with a better error message.
- bdbbcf5 patch - Support Node.js package.json
devDependencies
. Any package in the workspace that's specified as a dev dependency by other packages are also updated upon publish.
- 546b81a patch - Strip out colons from changeset filenames. The colon and semicolon symbols are now replaced with a dash symbol.
- 393d60d patch - Fix publishing with changeset filenames containing unescaped symbols.
- 3eb2f57 patch - Prevent duplicate dependency bump changesets. Previously, if a package's dependency had a dependency that was also updated, the final package in the tree would track multiple changesets for the same dependency update.
- d81182b minor - Add types to changesets. The following types are supported: add, change, deprecate, remove, fix and security. Use the appropriate one for the change and the changelog will include sections for every present type of change. This will make it easier for readers to understand the impact of a new release's changes.
- dd19f67 minor - Add support for the
fish
shell in thescript/setup
installation script. - dd19f67 patch - Print changeset summaries on publish. This makes it easier to tell which changes are about to be published for every package.
- dd19f67 patch - Print changeset type on publish preview.
- 81b0614 patch - Validate changesets when parsing. With the addition of changeset types, make sure that the changesets have a version bump and type specified and that they are known values. Otherwise, these changesets would not be picked up by mono.
- dd19f67 patch - Validate user input of the package number for changesets in mono repositories better. Non number characters and other invalid strings will prompt the user again to enter a valid package number.
- 616571e patch - Add
mono-dev
executable to allow for testing mono. Themono
executable will not allow usage of mono with uncommitted changes. This will prevent accidental usage of mono with uncommitted changes that would cause mono to crash unexpectedly. - 43cc5fc patch - Retry failed publish commands. When a publish command like
gem push
fails, prompt the user to retry it rather than fail the entire publish process. - 709caa4 patch - Fix mono production check directory. It would perform the check in the current directory, not the mono install directory.
- f70a877 patch - Check Git branch for mono to prevent accidental usage of mono on an unmerged branch.
- e89e57c patch - Skip Git check if Git command fails. If
git status
fails in themono
directory, skip the check. It's probably a production download.
- 244ec4f patch - Aside from working on Elixir projects with their version set in a module attribute (
@version "1.2.3"
andversion: @version
), add support for projects with their versions set directly in theproject
block (version: "1.2.3"
). - 221dd5f patch - Move the [ci-ckip] tag to commit message body instead of printing it in the subject.
- 940b0ac patch - Fix Node.js package publishing using yarn. Calling
yarn publish
prompted the user to enter a new version while Mono already knows what version to upgrade the package to. This prompt is now removed.
- 3f06eec patch - Improve circular dependency error message.
- ac15342 patch - Print exit message with line break. This gives a more user friendly end stopping the publish process, rather than a message with a missing line break.
- 54540cb patch - Improve command failure error message. Explain in more detail what the message is about.
- 8a86a6e patch - Require npm 7.12 at minimum, this should fix the issue with certain workspaces not being found on older npm versions.
- dd2a62f patch - Remove commit info from some changeset entries made by mono. Changeset entries made by mono for dependency bumps do not have a commit, as they are part of the "publish" commit, which doesn't exist at time of changelog generation, so omit the information to reduce noise.
- 2c54ba1 patch - Implement dependency tree, this accounts for package dependencies in compilation order. When package B depends on package A it will first compile package A and then package B. This prevents compilation errors.
- 0a3f464 patch - Support final releases from prereleases without changes. Run
mono publish
for a package with version1.0.0-rc.4
and mono will publish it as1.0.0
if no changesets are present. It's always possible to publish another prerelease, as long as there are changesets.
- ec52f98 patch - Fix prerelease version incrementation. Mono would not properly update an alpha 1 release to an alpha 2 release.
- bcd4b76 patch - Fix packages being published multiple times. If a package had a changeset and a dependency that was updated, it was recorded twice as being updated causing errors.
- c0dce23 patch - Fix dependent package versions to prereleases. Dependencies wouldn't be updated to use a prerelease version if a prerelease version was chosen on
mono publish --alpha|beta|rc
.
- 5bb53cc patch - Remove tag_prefix config option. It is no longer necessary for Node.js packages. We already read the package name from the
package.json
file, where the package name includes the prefix already.
- f289e39 patch - Run npm publish in package dir to publish packages. Fixes the inability to publish packages with npm.
- 5de62a5 patch - Add support for Node.js prerelease tags. When a prerelease is published, it will automatically tag the release on npmjs.org with the matching prerelease tag. For example:
mono publish --alpha
creates the "alpha" tag. - 4bfd850 patch - Fix base release after prerelease. The
mono publish
command would fail if the package version was a prerelease, updating to a base/final release.
- 9ddd720 minor - Update dependent packages in project. When there are multiple packages in the mono repo, and they depend on one another, when a dependency of a package gets updated, it also updates the package that depends on it with the new version number. This only works for Ruby and Node.js currently. It uses a strict version lock system now, but we hope to add support for range based version locks, e.g.
~> 1.2.0
. - 80979ab patch - Remove all node_modules on unbootstrap. Also remove the node_modules directory for mono repos in the packages dir.
- 6070517 minor - Add the unbootstrap command. This command will be the same behavior as the previous "clean" command. The clean command will instead be the opposite of the "build" command, cleaning up after the build command, removing any build artifacts.
- c4bc910 minor - Add --parallel CLI option to mono run to run commands in parallel like
npm run build:watch
on all packages in a mono repo. For example:mono run npm run build:watch --parallel
. - 4e17aa5 patch - Add
CHANGELOG.md
file when it did not exist before during publish. When noCHANGELOG.md
file existed, and had not been checked in, mono would not commit the file in the publish commit before. - 5ec9e9d patch - Fix inconsistencies in clean command from other commands. Add
--package
CLI option. - 47f3505 patch - Clean the Node.js root as well. This change also clears the root
node_modules
directory for mono repos. - 4972148 patch - Validate
--package
names. When specifying a package with the--package
CLI option, mono will exit with an error if no package with the specified name does not exist. - ce8c835 patch - No dots in changeset filenames. Filter out dots in changeset filenames. We filter out all special symbols that could affect how filetypes are detected and dots are one of those symbols.
- 19add5b patch - Move setup script location to
script/setup
. Prevents the monosetup
script becoming available everywhere, like themono
executable. Which could accidentally run the mono setup script outside of the mono project directory.
-
2267f21 minor - Add --package option to commands. This allows users to select which packages to run a command on. To either build, test, publish or run a custom command on.
mono build --package package_one mono test --package package_two mono publish --package package_one,package_two mono run --package package_one,package_two
-
e427d95 patch - Support different version.rb paths. For the Ruby packages, update the
lib/*/version.rb
for the package, instead of using the hardcoded path for the AppSignal Ruby gem. This allows us to hopefully release mono with mono later on. -
1020fb7 patch - Improve dir package selection for Node.js. Instead of having a filter by a specific directory name, exclude all directories that don't have a
package.json
inside them. This way we filter out more directories than justnode_modules
.