Skip to content

release: prepare winTerm 1.3.0-alpha1 prerelease - #31

Merged
HelloThisWorld merged 1 commit into
mainfrom
release/v1.3.0-alpha1
Aug 3, 2026
Merged

release: prepare winTerm 1.3.0-alpha1 prerelease#31
HelloThisWorld merged 1 commit into
mainfrom
release/v1.3.0-alpha1

Conversation

@HelloThisWorld

Copy link
Copy Markdown
Owner

Summary

Prepares the winTerm 1.3.0-alpha1 prerelease. The feature content is already
on main as engineering checkpoints v1.2.1–v1.2.4; this PR only moves the
release metadata and makes the version gates channel-aware.

Merging this and then pushing tag v1.3.0-alpha1 will run the full release
workflow and publish a GitHub prerelease with Setup EXE and Portable ZIP.

Latest is protected. The release workflow marks any channel other than
stable with --prerelease --latest=false, so /releases/latest keeps
resolving to v1.2.0. This alpha is deliberately not listed on
winterm-site and, with the new guard, not submitted to WinGet.

Related issues

No tracking issue.

Detailed changes

Version surfaces

Field Value Why
applicationVersion 1.3.0-alpha1 release.yml and winget.yml both require the tag to be exactly v$applicationVersion, so the suffix has to live here
packageVersion 1.3.0.0 MSIX Identity/@Version and Win32 FILEVERSION cannot express a suffix
moduleVersion 1.3.0 A PowerShell ModuleVersion cannot carry a suffix
modulePrerelease alpha1 Where the suffix lives for PowerShell, via PrivateData.PSData.Prerelease
channel alpha Any non-stable channel ⇒ --prerelease --latest=false
tag v1.3.0-alpha1

custom.props advances to 1.3. The Win32 resources take the numeric package
version for FILEVERSION/PRODUCTVERSION and the full application version for
the displayed ProductVersion string.

verify-version.ps1 is now channel-aware

It previously hard-asserted channel -eq 'stable' and modulePrerelease -eq '',
which made any prerelease impossible — the release workflow's own validate job
would have failed. It now accepts stable, alpha, and beta, and adds
consistency checks that are stronger than what it replaced:

  • channel, module prerelease suffix, and application-version suffix must agree
  • package version must stay four-part numeric
  • module version must stay numeric

So a prerelease can never publish as Latest, and a stable release can never
carry a prerelease suffix.

WinGet prerelease guard

winget.yml fires on release: published and previously had no prerelease
guard, so an alpha would have generated a WinGet manifest for a version string
WinGet cannot express. The validate job now runs only for non-prerelease
Releases (manual dispatch still works), and test-release-workflow.ps1 asserts
the guard is present.

Release notes

docs/releases/1.3.0-alpha1.md documents the Command Timeline, keyboard map,
settings and defaults, shell requirements, privacy boundaries, known
limitations, and the unsigned Setup EXE disclosure. Force-added because
.gitignore:19 ignores docs/releases/*.

Validation performed

Environment: Windows 11 Pro 26100, MSVC 14.44.35207, Windows SDK 10.0.26100.0.

Repository scripts — ran, passed

Command Result
verify-version.ps1 PASS — 1.3.0-alpha1 / 1.3.0.0 / 1.3.0+alpha1, channel alpha
verify-branding.ps1 -ExpectedPublisher 'CN=helloThisWorld' PASS
test-release-workflow.ps1 PASS (includes the new WinGet prerelease guard assertion)
test-ci-classification.ps1 PASS
test-command-timeline.ps1 PASS
test-privacy.ps1 PASS
test-visual-progress.ps1 PASS
test.ps1 -Suite Smoke -Configuration Release -Platform x64 PASS

Compiled tests — ran, passed (no source change here, re-run as a regression check)

Suite Result
CommandTimelineTests (Control) Total=43, Passed=43, Failed=0
WinTermCommandTimelineTests (SettingsModel) Total=4, Passed=4, Failed=0

Static gates — ran, passed

  • git diff --check: clean.
  • Version consistency verified through verify-version.ps1, which now covers
    every surface including the new channel/suffix agreement rules.

Not run, with reason

  • test-shell-integration.ps1 -Shell All — blocked by local antivirus/AMSI on
    shell/powershell/winTerm.Shell/Public/Compatibility.ps1, a file untouched by
    this PR and byte-identical to main. It runs in the release workflow's gates.
  • Full Release build, installer, and Portable packaging — these run in the
    tag-triggered release workflow, which is the authority for them.

No screenshot was needed or created. winterm-site is untouched.

Checklist

  • The change is focused and does not include unrelated formatting.
  • Tests were added or updated where appropriate.
  • All tests claimed above actually ran and passed.
  • User-facing behavior and limitations are documented in this repository.
  • This source/docs commit updates the root CHANGELOG.md.
  • The Wiki Development-Changes.md ledger has been pushed with the final source SHA, link, summary, and checkpoint/release.
  • Documentation screenshots reuse a suitable existing sanitized winterm-site asset, or no screenshot was added.
  • Version or schema changes include compatibility and migration notes.
  • Package identity, winterm.exe, and Microsoft Terminal coexistence remain isolated.
  • No command text, terminal output, clipboard content, credentials, or private paths are logged.
  • New source and script files contain the appropriate MIT license header.
  • I did not include generated build output, secrets, certificates, or local absolute paths.

Source ↔ Wiki mapping

Source commit Wiki commit Wiki pages
cdfa02b f558c6d Development-Changes, Changelog, Home

Boundary

Workspace schema (2), docking model (1), shell protocol (1), theme schema (1),
update manifest schema (1), package identity, and signing policy are unchanged.
No feature code changes. No winterm-site change. No WinGet submission. Latest
stays v1.2.0.

Next step after this merges: push tag v1.3.0-alpha1 to trigger the release
workflow. Beta and the website download slot come after local alpha testing.

Promotes the Command Timeline to a testable alpha. The feature content is
already on main as engineering checkpoints v1.2.1 through v1.2.4; this commit
only moves the release metadata and makes the version gates channel-aware.

- Set application version 1.3.0-alpha1, package/file version 1.3.0.0,
  PowerShell module version 1.3.0 with prerelease suffix alpha1, channel alpha,
  and tag v1.3.0-alpha1. The suffix lives on applicationVersion because
  release.yml and winget.yml both require the tag to be exactly
  "v$applicationVersion"; packageVersion stays four-part numeric for MSIX and
  the Win32 FILEVERSION fields, and moduleVersion stays numeric because a
  PowerShell ModuleVersion cannot carry a suffix.
- Advance custom.props to 1.3 so the executable metadata major/minor matches.
- Make verify-version.ps1 channel-aware instead of stable-only. It now accepts
  stable, alpha, and beta, and additionally enforces that the channel, the
  module prerelease suffix, and the application-version suffix agree, that the
  package version stays four-part numeric, and that the module version stays
  numeric. A prerelease therefore cannot publish as Latest and a stable release
  cannot carry a prerelease suffix.
- Skip prerelease Releases in the WinGet workflow so an alpha or beta never
  generates a WinGet manifest, and assert that guard in
  test-release-workflow.ps1.
- Add the 1.3.0-alpha1 release notes, including the unsigned Setup EXE
  disclosure, and the root changelog entry.

The release workflow marks any non-stable channel with --prerelease and
--latest=false, so /releases/latest keeps resolving to v1.2.0. Workspace
schema, docking model, shell protocol, theme schema, update manifest schema,
package identity, and signing policy are unchanged.
@HelloThisWorld
HelloThisWorld marked this pull request as ready for review August 3, 2026 17:57
@HelloThisWorld
HelloThisWorld merged commit ed70755 into main Aug 3, 2026
7 checks passed
@HelloThisWorld
HelloThisWorld deleted the release/v1.3.0-alpha1 branch August 3, 2026 17:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant