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
-**Triggers**: `workflow_dispatch` (manual trigger from GitHub Actions UI)
54
-
-**Inputs**:
55
-
-`release_type`: Choose from `beta`, `rc`, or `stable`
56
-
-`version_override`: (Optional) Specify exact version number, otherwise GitVersion calculates it
57
-
-**Process**:
58
-
1. Checks out `main` branch
59
-
2. Determines version using GitVersion or override
60
-
3. Creates annotated git tag (e.g., `v2.0.1-rc.1` or `v2.1.0`)
61
-
4. Creates release commit with message
62
-
5. Pushes tag and commit to repository
63
-
6. Creates GitHub Release (marked as pre-release if not stable)
64
-
7. Automatically triggers publish workflow (see below)
65
-
-**Purpose**: Automates the release process to prevent manual errors
66
-
67
-
### 5) Publish to NuGet (`.github/workflows/publish.yml`)
51
+
### 4) Publish to NuGet (`.github/workflows/publish.yml`)
68
52
69
53
-**Triggers**: push to `develop` and tags `v*` (ignores `**.md`)
70
54
- Uses GitVersion to compute SemVer, builds Release, packs Terminal.Gui and Terminal.Gui.Interop.Spectre with symbols, and pushes both to NuGet.org using `NUGET_API_KEY`
71
-
-**Automatically triggered** by the Create Release workflow when a new tag is pushed
55
+
-**Automatically triggered**when a `v*` tag is pushed — typically by the **Finalize Release** workflow after a release PR (from **Prepare Release**) is merged into `main`
72
56
-**Additional actions on tag push** (`v*`):
73
57
- Triggers Terminal.Gui.templates repository update via repository_dispatch (requires `TEMPLATE_REPO_TOKEN` secret)
74
58
75
-
### 6) Build and publish API docs (`.github/workflows/api-docs.yml`)
59
+
### 5) Build and publish API docs (`.github/workflows/api-docs.yml`)
76
60
77
-
-**Triggers**: push to `main`
61
+
-**Triggers**: push to `develop`, and `workflow_dispatch`
78
62
- Builds DocFX site on Windows and deploys to GitHub Pages
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+10-12Lines changed: 10 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -336,23 +336,21 @@ foreach (Rune rune in text.EnumerateRunes ())
336
336
337
337
### Automated Release Workflow
338
338
339
-
Releases are now automated using GitHub Actions to prevent manual errors. To create a release:
339
+
Releases are automated using GitHub Actions to prevent manual errors. The flow is PR-based: **Prepare Release** opens a release PR from `develop` → `main`, and merging it runs **Finalize Release**. To create a release:
340
340
341
341
1.**Navigate to Actions tab** in the GitHub repository
342
-
2.**Select "Create Release" workflow** from the left sidebar
342
+
2.**Select "Prepare Release" workflow** from the left sidebar
343
343
3.**Click "Run workflow"** button
344
344
4.**Configure release parameters:**
345
-
-**Branch:** Ensure `main` is selected
346
-
-**Release type:** Choose from `prealpha`, `alpha`, `beta`, `rc`, or `stable`
345
+
-**Release type:** Choose from `beta`, `rc`, or `stable`
347
346
-**Version override:** (Optional) Specify exact version (e.g., `2.0.0`), otherwise GitVersion calculates it automatically
348
-
5.**Click "Run workflow"** to start the automated release process
349
-
350
-
The workflow will:
351
-
- Create an annotated git tag (e.g., `v2.0.0-prealpha` or `v2.0.0`)
352
-
- Create a release commit on `main`
353
-
- Push the tag and commit to the repository
354
-
- Create a GitHub Release
355
-
- Automatically trigger the publish workflow to push the package to NuGet.org
347
+
5.**Click "Run workflow"** to create the release PR
348
+
349
+
Prepare Release creates a `release/<tag>` branch — where `<tag>` is the full version tag, e.g. `release/v2.0.0` for a stable release or `release/v2.0.0-beta.1` for a pre-release — with the GitVersion label updated for the release type, and opens a PR into `main`. After CI passes, **review and merge that PR**. Merging triggers **Finalize Release**, which:
350
+
- Creates an annotated git tag (e.g., `v2.0.0-beta.1` or `v2.0.0`)
351
+
- Creates a GitHub Release with auto-generated notes
352
+
- Opens a back-merge PR from `main` → `develop`
353
+
- Triggers the publish workflow (via the `v*` tag) to push the package to NuGet.org
Copy file name to clipboardExpand all lines: Terminal.Gui/Configuration/Settings/TuiConfigurationBuilder.cs
+14-13Lines changed: 14 additions & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -1,4 +1,3 @@
1
-
usingSystem.ComponentModel;
2
1
usingSystem.Diagnostics.CodeAnalysis;
3
2
usingSystem.Reflection;
4
3
usingMicrosoft.Extensions.Configuration;
@@ -168,7 +167,7 @@ public void ApplyToStaticFacades ()
168
167
169
168
[UnconditionalSuppressMessage("Trimming","IL2026",Justification="Settings POCOs are simple types preserved by DynamicDependency in ConfigPropertyHostTypes.")]
170
169
[UnconditionalSuppressMessage("AOT","IL3050",Justification="Settings POCOs are simple types; no generic instantiation needed at runtime.")]
/// Binds flat dotted keys (e.g. <c>Driver.Force16Colors</c>) from the configuration root to the
209
-
/// corresponding properties on the settings POCO.
208
+
/// corresponding properties on the settings POCO. <typeparamref name="T"/>'s public properties are
209
+
/// preserved for trimming via the <see cref="DynamicallyAccessedMembersAttribute"/> on the type parameter.
210
210
/// </summary>
211
-
[UnconditionalSuppressMessage("Trimming","IL2026",Justification="Settings POCOs are simple types preserved by DynamicDependency in ConfigPropertyHostTypes.")]
1. Go to **Actions → Prepare Release → Run workflow**.
53
53
2. Pick the release type (`beta`, `rc`, `stable`) and optionally override the version.
54
-
3. The workflow creates a `release/vX.Y.Z` branch from `develop`, updates the `GitVersion.yml` label, and opens a PR into `main`.
54
+
3. The workflow creates a `release/<tag>` branch from `develop` — where `<tag>` is the full version tag, e.g. `release/v2.0.0` or `release/v2.0.0-beta.1` — updates the `GitVersion.yml` label, and opens a PR into `main`.
55
55
4. Review the PR — CI runs, branch protections apply.
56
56
57
57
**Step 2 — [Finalize Release](../.github/workflows/finalize-release.yml)** (automatic on PR merge):
@@ -110,8 +110,7 @@ All workflows are in [`.github/workflows/`](../.github/workflows/):
110
110
|----------|---------|---------|
111
111
|**[prepare-release.yml](../.github/workflows/prepare-release.yml)**| Manual dispatch | Creates a release PR from `develop` → `main` with label updates |
112
112
|**[finalize-release.yml](../.github/workflows/finalize-release.yml)**| Release PR merged to `main`| Creates tag, GitHub Release, back-merge PR to `develop`|
113
-
|**[publish.yml](../.github/workflows/publish.yml)**| Push to `main` or `develop`, version tags | Builds Release config, packs, and publishes to NuGet.org |
114
-
|**[release.yml](../.github/workflows/release.yml)**| Manual dispatch |**(Legacy)** Direct tag-and-release on `main`; superseded by prepare/finalize |
113
+
|**[publish.yml](../.github/workflows/publish.yml)**| Push to `develop`, or `v*` tags | Builds Release config, packs, and publishes to NuGet.org |
115
114
|**[build-validation.yml](../.github/workflows/build-validation.yml)**| Push/PR to `main` or `develop`| Builds all configurations to validate compilation |
116
115
|**[unit-tests.yml](../.github/workflows/unit-tests.yml)**| Push/PR to `main` or `develop`| Runs all unit tests |
117
116
|**[api-docs.yml](../.github/workflows/api-docs.yml)**| Push to `develop`| Builds and deploys API docs to GitHub Pages |
@@ -135,7 +134,7 @@ These branches are **not** configured in `GitVersion.yml` (the config was remove
0 commit comments