devdocs/HOWTOS.md
cargo tree --duplicates)workspace.dependencies in the root Cargo.toml and simply inherit it with cratename = { workspace = true }dev-dependencies with our script to check the crate release order )crates/ in the nushell monorepo, unless:
reedline) depend on a common interface, so it needs to be released before the nushell workspace AND an existing outside crate -> new independent crate in the nushell organizationnushell organization has the benefit of maintaining the commit history and being more accessible to other interested users (e.g. nu-ansi-term)Cargo.toml if necessary/possiblepackage fields are specified: https://doc.rust-lang.org/cargo/reference/publishing.html#before-publishing-a-new-crateThe Nushell Project authorsworkspace.members table in the root Cargo.toml (currently dependabot only finds the crates specified there)nushell/publishing member review the PRThis is handled by members of the nushell/publishing team
The current procedure is specified adjacent to the helper scripts
In order to make creating the release notes easier, we have a script which can generate the release notes from PR descriptions. To make sure we don't fall behind, we should aim to make sure the release notes summary for each PR is complete before merging.
Here are the steps to make sure the PR is properly formatted for the release notes script.
The "Release notes summary" section must be a second-level heading. ✅ Correct These will be detected as release notes summaries by the script.
## Release notes summary
## Release notes summary - What our users need to know
❌ Incorrect These will not be detected as release notes summaries by the script.
# Release notes summary
### Release notes summary - What our users need to know
**Release notes summary**
If the PR is using our old PR template with a "User-Facing Changes", the easiest way to add this is to simply add a "Release notes summary" section underneath:
# User-Facing Changes
## Release notes summary
Don't be afraid to edit the release notes summaries provided by the PR author; these should be considered a starting point. We want our release notes to meet a certain level of polish, but don't need every contributor to understand the specifics of how we format and style our release notes.
Make sure every change is accounted for in the release notes summary. If a PR deprecates functionality, or an addition also changes how the previous behavior works, this needs to be noted in the summary!!
TODO explain TODO(release-notes)
TODO explain user friendly title / third level heading
If a PR has multiple, distinct changes which should each be given their own section in the release notes, make sure each of these changes are under their own third-level heading. ✅ Correct
## Release notes summary - What our users need to know
### New foo command
This release adds the `foo` command, which lets you do XYZ.
### `bar` command `--xyz` flag deprecated
Since the new `foo` command does XYZ, the `bar` command no longer needs the `--xyz` flag.
❌ Incorrect: These will incorrectly appear as a single change in the release notes.
## Release notes summary
This release adds the `foo` command, which lets you do XYZ.
Since the new `foo` command does XYZ, the `bar` command no longer needs the `--xyz` flag.
## Release notes summary
* This release adds the `foo` command, which lets you do XYZ.
* Since the new `foo` command does XYZ, the `bar` command no longer needs the `--xyz` flag.
We should try to follow a somewhat consistent style so our release notes are cohesive. When editing PR release note summaries, you can reference the Release notes style guide.
notes: labels for each section of the release notes, such as "Additions", "Breaking changes", and "Deprecations".Here are some guidelines on how to write release note summaries. These aren't firm rules, but they can help guide us towards easily understandable and cohesive release notes.
Describe how changes affect Nushell itself
Avoid using the term "users"
Our PR template says the release notes summary should contain "what our users need to know". This explains what the scope of the summary should be, but this shouldn't affect how we describe the changes.
The subject of the summary should be the feature, command, or whatever is being changed. Describing the change in how "users" interact with Nushell unnecessarily complicates the explanation.
✅ Good: The summary describes how the my-command command has changed in a straight-forward manner.
The
my-commandcommand now has a--foobarflag which enables the foobar functionality.
⚠️ Avoid: By explaining how the change affects users, the actual thing which has changed (my-command) is not clear until the latter half of the sentence.
Users can now pass the
--foobarflag to themy-commandcommand to enable the foobar functionality.
Describe behavior in reference to the release
Use callouts for notes, tips, and warnings TODO explain gh callouts vs blog callouts
Do not use screenshots to represent code or output that can be represented sufficiently informatively as text in a code fence (triple backtick section). Do use a screenshot to demonstrate things that are not otherwise easy to explain (e.g. new behavior in the completion UI, explore etc.). Make sure to use a reasonable crop and resolution, as we want to make sure the page loading times are quick.