You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Extend front-door delegation to status/publish; refresh docs and roadmap
- status and publish now delegate to the Node tool when there are no .NET
projects (with autoRunNode), matching version; snapshot version passes
its tag through when delegating.
- The delegation loop guard is set on the Node child process only (via a
new IProcessExecutor environment overload), never on net's own process,
so it cannot leak between invocations.
- docs/config-file-options.md rewritten for the dotnet-nested schema and
all keys; ROADMAP.md updated (the GitHub Action already ships).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Extend front-door delegation to every release command. With `autoRunNode`, `status` and `publish` now delegate to the Node tool in a repository with no .NET projects (matching `version`), and a snapshot `version --snapshot <tag>` passes its tag through to the Node tool when delegating. The delegation loop guard is now set on the Node child process only (never on net's own environment), so it cannot leak between invocations.
- Tag and publish packages to a NuGet source (`tag`, `publish`)
10
+
- Interoperate with the Node [`@changesets`](https://github.com/changesets/changesets) tool in one
11
+
repository (`interop`, `autoRunNode`)
8
12
9
-
Unfortunately, these actions must currently be performed **manually** via the CLI tool `net-changeset`.
13
+
## ✅ GitHub Action
10
14
11
-
Several features and improvements are planned for future releases.
15
+
A composite GitHub Action ships in [`.github/actions/changesets`](.github/actions/changesets). It mirrors
16
+
[`@changesets/action`](https://github.com/changesets/action): when changesets are pending it runs the version
17
+
command and opens/updates a "Version Packages" pull request, and otherwise runs the publish command. The
18
+
version/publish/status commands are configurable, and in interop mode the tool's own `autoRunNode` chains to
19
+
the Node tool so a single action drives both ecosystems.
12
20
13
-
## 🚧 net-changesets GitHub Action
21
+
## Planned features
14
22
15
-
The main missing component of net-changesets is the GitHub action that will automate the process
16
-
of creating a pull request with updated package versions and changelogs based on the changesets in your repository.
17
-
For reference, see the original implementation of the [changesets action](https://github.com/changesets/action).
23
+
-**Changelog generators.** Beyond the default format, support the `changelog-git` (commit-hash prefix) and
24
+
`changelog-github` (PR links, commit links, and author thanks) generators, selected via the `changelog`
25
+
config key.
18
26
19
-
We can use **.NET** to develop a custom GitHub Action — see the official [documentation](https://learn.microsoft.com/en-us/dotnet/devops/create-dotnet-github-action).
20
-
21
-
The plan is to develop the GitHub Action **within this repository**, allowing us to reuse as much existing code as possible.
22
-
23
-
## Other features
24
-
25
-
While no specific features are planned at the moment, there is plenty of room for improving the existing functionality.
26
-
If you have an idea or suggestion, feel free to [open a GitHub issue](./issues) to start a discussion.
27
+
Have an idea or suggestion? [Open a GitHub issue](./issues) to start a discussion.
Changesets has a minimal amount of configuration options. Mostly these are for when you need to change the default workflows. These are stored in `.changeset/config.json`. The default config is:
3
+
Configuration lives in `.changeset/config.json`. net-changesets shares the [`@changesets`](https://github.com/changesets/changesets)
4
+
config schema so a polyglot repository can keep a single file both tools understand: the standard changesets
5
+
keys at the top level, and the .NET-only settings nested under a `dotnet` key (which the Node tool ignores).
6
+
7
+
`changeset init` writes a minimal config; every key below has a default, so you only set what you need.
4
8
5
9
```json
6
10
{
7
-
"sourcePath": "src",
11
+
"baseBranch": "main",
12
+
"access": "restricted",
13
+
"ignore": [],
14
+
"fixed": [],
15
+
"linked": [],
16
+
"updateInternalDependencies": "patch",
17
+
"format": false,
18
+
"dotnet": {
19
+
"sourcePath": ".",
8
20
"packageSource": "nuget"
21
+
}
9
22
}
10
23
```
11
24
12
-
## `sourcePath`
25
+
## Shared keys
13
26
14
-
Specify the relative path from the changeset command's execution folder to the location of the projects.
27
+
These mirror `@changesets`. net-changesets reads the ones below and ignores any others (such as `commit`,
28
+
`changelog`, or `access` beyond what it needs), so a stock Node config loads cleanly.
15
29
16
-
The default value is `.` (the working directory): when `sourcePath` is not set, projects are discovered from the whole repository. The scan always skips `node_modules`, `.git`, `bin`, and `obj`.
30
+
### `baseBranch`
17
31
18
-
## `packageSource`
32
+
The branch releases are cut from, used by `status --since` and the release action. Default `main`.
19
33
20
-
Specify the NuGet package source where the packages will be published.
34
+
### `updateInternalDependencies`
21
35
22
-
Default value is `nuget`. It is official [nuget.org](https://www.nuget.org/) repository.
36
+
How a package that depends on a changed package is bumped: `patch` (default) or `minor`. Because a
37
+
`ProjectReference` carries no version range, a changed dependency is always "out of range", so dependents are
38
+
always **patch**-bumped to match `@changesets` — this option does not change that for .NET projects.
23
39
24
-
You can define NuGet package sources using `nuget.config`. To create a default `nuget.config`, use the following CLI command:
40
+
### `fixed`
25
41
26
-
```bash
27
-
dotnet new nugetconfig
42
+
Groups of packages always released together at the same version when any member changes — including members
43
+
that had no changes. An array of arrays of project names, e.g. `[["Acme.Core", "Acme.Client"]]`.
44
+
45
+
### `linked`
46
+
47
+
Groups of packages coordinated to the same version, but only the members that are actually being released.
48
+
Same shape as `fixed`.
49
+
50
+
### `ignore`
51
+
52
+
Packages excluded from versioning. An array of project names or globs to skip, e.g. `["Acme.Internal", "Acme.Samples.*"]`.
53
+
54
+
### `format`
55
+
56
+
The formatter run over generated changelogs: a formatter name (`prettier`, `dprint`, `biome`, `oxfmt`, `deno`),
57
+
`"auto"` to detect one from the repo, or `false` (the default) to skip formatting.
0 commit comments