diff --git a/CHANGELOG.md b/CHANGELOG.md index 86bc65340..9cecd7694 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,31 @@ # Changelog +## 1.4.0-beta - 2026-08-13 + +Beta prerelease of the Pane Search release. Manual validation of +v1.4.0-alpha passed — live search under sustained log output (Kafka / +Spring Boot workloads), match navigation, the counter, and the scrollbar +overview all behaved — so the alpha is promoted to beta with beta version +metadata (package version `1.4.0.1`, prerelease suffix `beta`) and no code +changes. Published as a GitHub prerelease; the new stable v1.3.0 holds +GitHub Latest, and this beta replaces v1.4.0-alpha as the newest published +prerelease. Beta feedback decides the stable 1.4.0 promotion. + +## 1.3.0 - 2026-08-13 + +Stable release of the **Command Timeline** and **Visual Progress** +generation, promoting the field-tested v1.3.0-beta3 build to the stable +channel from the `release/v1.3.0` maintenance branch. GitHub Latest moves +from v1.2.0 to v1.3.0; content is identical to v1.3.0-beta3 apart from the +stable version metadata (package version `1.3.0.7`, no prerelease suffix). +Highlights since v1.2.0: the per-pane Command Timeline (`Ctrl+Tab` or the +left-edge handle) built exclusively from OSC 133 shell integration with +load-without-executing, filtering, copy command/output, jump to output, +and trustworthy ✓/✕/Running status; automatic PowerShell shell +integration for bare `powershell.exe`/`pwsh.exe` profiles; and the Visual +Progress hardening from six prerelease field-testing rounds, including +the bounded one-shot launch fallback for long-running commands. + ## 1.4.0-alpha - 2026-08-13 Alpha prerelease: the integration candidate of the Pane Search release, diff --git a/README.ja.md b/README.ja.md index e9d5e5af7..6891ac799 100644 --- a/README.ja.md +++ b/README.ja.md @@ -15,8 +15,8 @@ 最新の安定版リリースページには、インストーラー(Setup EXE)、ポータブルZIP、 リリースノート、チェックサムがまとめて掲載されています。 -Pane Search(ペイン検索)を先行して試せる**アルファ版**のプレリリースもあります。 -[v1.4.0-alpha](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-alpha) +Pane Search(ペイン検索)を先行して試せる**ベータ版**のプレリリースもあります。 +[v1.4.0-beta](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-beta) はGitHubのプレリリースとして公開されており、資産の構成は安定版と同じです。 プレリリースは動作確認を目的とした配布のため、通常の利用には上記の安定版を推奨します。 @@ -38,8 +38,8 @@ Microsoft、Windows、Windows Terminalのロゴも使用していません。 - `winTerm--setup-x64.exe` — 現在のユーザー、または全ユーザーへのインストール用; - `winTerm--portable-x64.zip` — 展開してそのまま実行する用。 -現在のソースバージョンは `1.4.0-alpha` で、 -最新の安定版リリースは `1.2.0` です。公開されている資産の一覧とチェックサムの全体は、 +現在のソースバージョンは `1.4.0-beta` で、 +最新の安定版リリースは `1.3.0` です。公開されている資産の一覧とチェックサムの全体は、 [最新の公式リリース](https://github.com/HelloThisWorld/winTerm/releases/latest) を参照してください。 @@ -111,8 +111,8 @@ PowerShell 7と、[ビルド手順(英語)](docs/build.md)に記載された .\scripts\winterm\build.ps1 -Configuration Release -Platform x64 -IncludeTests .\scripts\winterm\test.ps1 -Suite Relevant -Configuration Release -Platform x64 .\scripts\winterm\build-unpackaged.ps1 -Configuration Release -Platform x64 -.\scripts\winterm\build-installer.ps1 -Version 1.4.0-alpha -Platform x64 -.\scripts\winterm\build-portable.ps1 -Version 1.4.0-alpha -Platform x64 +.\scripts\winterm\build-installer.ps1 -Version 1.4.0-beta -Platform x64 +.\scripts\winterm\build-portable.ps1 -Version 1.4.0-beta -Platform x64 ``` アンパッケージ形式の生成処理では、統合されたリソースインデックスを作るための diff --git a/README.md b/README.md index 320790050..f955592b9 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ English | [日本語](README.ja.md) The latest stable Release page provides the Setup EXE, Portable ZIP, release notes, and checksums together. -An **alpha** prerelease is also available for early access to Pane Search: -[v1.4.0-alpha](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-alpha) +A **beta** prerelease is also available for early access to Pane Search: +[v1.4.0-beta](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-beta) is published as a GitHub prerelease with the same asset layout. Prereleases are for testing; the stable release above stays the recommended download. @@ -36,8 +36,8 @@ application downloads are: - `winTerm--setup-x64.exe` — current-user or all-users installation; - `winTerm--portable-x64.zip` — extract and run without installation. -The current source version is `1.4.0-alpha`; -the latest stable release is `1.2.0`. See the +The current source version is `1.4.0-beta`; +the latest stable release is `1.3.0`. See the [latest official Release](https://github.com/HelloThisWorld/winTerm/releases/latest) for the complete published asset list and checksums. @@ -47,7 +47,7 @@ Release. No MSIX certificate, Developer Mode, Visual Studio, Windows SDK, or `Add-AppxPackage` is required to install a release EXE. See [installation guidance](docs/user/installation.md) and the -[1.2.0 release notes](docs/releases/1.2.0.md). +[1.3.0 release notes](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0), and the earlier [1.2.0 notes](docs/releases/1.2.0.md). ## Core features @@ -105,8 +105,8 @@ Use PowerShell 7 and the Microsoft Terminal toolchain described in .\scripts\winterm\build.ps1 -Configuration Release -Platform x64 -IncludeTests .\scripts\winterm\test.ps1 -Suite Relevant -Configuration Release -Platform x64 .\scripts\winterm\build-unpackaged.ps1 -Configuration Release -Platform x64 -.\scripts\winterm\build-installer.ps1 -Version 1.4.0-alpha -Platform x64 -.\scripts\winterm\build-portable.ps1 -Version 1.4.0-alpha -Platform x64 +.\scripts\winterm\build-installer.ps1 -Version 1.4.0-beta -Platform x64 +.\scripts\winterm\build-portable.ps1 -Version 1.4.0-beta -Platform x64 ``` The unpackaged generator uses an unsigned MSIX only as an upstream build diff --git a/docs/current-progress.md b/docs/current-progress.md index 67d299a66..f4f431acc 100644 --- a/docs/current-progress.md +++ b/docs/current-progress.md @@ -4,35 +4,37 @@ Last updated: 2026-08-13 ## Repository state -- Branch: `release/v1.4.0-alpha`, based on `main` at - `e436fdf00` (Pane Search Phase 3 checkpoint, pull request #46) +- Branch: `release/v1.4.0-beta`, based on `main` at + `45cf23975` (1.4.0-alpha release metadata, pull request #47) - Microsoft Terminal upstream revision: `1cea42d433253d95c4487a3037db48197b5e72f4` -- Application version: `1.4.0-alpha` -- Package/file version: `1.4.0.0` -- PowerShell module version: `1.4.0` with prerelease suffix `alpha` -- Release channel: `alpha` (published as a GitHub prerelease) -- Release tag: `v1.4.0-alpha`. This is not an engineering checkpoint: the - tag runs the full guarded release pipeline (build, compiled tests, - artifact generation, draft asset round-trip testing, then publication as - a prerelease). The checkpoint-tag allowlist is unchanged. -- Current public Latest: `v1.2.0`, the stable Visual Progress release -- Newest published prerelease: `v1.4.0-alpha` (replacing `v1.3.0-beta3`) +- Application version: `1.4.0-beta` +- Package/file version: `1.4.0.1` +- PowerShell module version: `1.4.0` with prerelease suffix `beta` +- Release channel: `beta` (published as a GitHub prerelease) +- Release tag: `v1.4.0-beta`, running the full guarded release pipeline; + the checkpoint-tag allowlist is unchanged. +- Current public Latest: `v1.3.0`, the stable Command Timeline release + (moved from v1.2.0, the Visual Progress stable, on 2026-08-13) +- Newest published prerelease: `v1.4.0-beta` (replacing `v1.4.0-alpha`) - Supported target: Windows 11 x64 -`v1.4.0-alpha` is the integration candidate of the Pane Search release. It -bundles the three engineering checkpoints (`1.3.1`, `1.3.2`, `1.3.3`) for -manual validation. `/releases/latest` keeps resolving to v1.2.0, and WinGet -is not updated for prereleases. +`v1.4.0-beta` is the beta of the Pane Search release. Manual validation of +`v1.4.0-alpha` passed — live search under sustained Kafka/Spring Boot log +output, navigation, the counter, and the scrollbar overview all behaved — +so the alpha content is promoted unchanged with beta metadata. +`/releases/latest` resolves to v1.3.0, and WinGet is not updated for +prereleases. ## Pane Search status (v1.4 roadmap) - Phase 1 — active-pane search — complete at `1.3.1`. - Phase 2 — search UX and scrollbar overview — complete at `1.3.2`. - Phase 3 — performance and edge-case hardening — complete at `1.3.3`. -- Final integration — `1.4.0-alpha` published for manual user validation. - `PASS` promotes to `1.4.0-beta`; `FAIL` produces a fixed `1.4.1-alpha`. - Only the user authorizes the alpha → beta promotion. +- Final integration — `1.4.0-alpha` published 2026-08-13; manual user + validation **passed**. +- Beta — `1.4.0-beta` published for wider testing. Beta feedback decides + the stable `1.4.0` promotion; only the user authorizes it. Phase 1 made `Ctrl+F` (with the retained `Ctrl+Shift+F` alias) open the existing Microsoft Terminal search box inside the focused pane only, @@ -190,15 +192,12 @@ through pull request #32: ## Next steps -1. Manual user validation of the published `v1.4.0-alpha` prerelease - (typing responsiveness, continuous output, huge match counts, resize - and reflow, split panes, alternate-screen applications, Unicode - queries, rapid open/close). `PASS` promotes to `1.4.0-beta`; `FAIL` - produces a fixed `1.4.1-alpha`. Only the user authorizes the - promotion. -2. Collect Command Timeline and Pane Search beta feedback; promote a - stable release only after beta testing, which is the point at which - Latest, WinGet, and the website stable slot move. +1. Collect Pane Search feedback on the published `v1.4.0-beta` + prerelease; promote a stable `1.4.0` only after beta testing. Only the + user authorizes the promotion, which is the point at which Latest, + WinGet, and the website stable slot move to 1.4.0. +2. Keep the winTerm website's stable slot (v1.3.0) and prerelease slot + (v1.4.0-beta) in sync with GitHub Releases. ## Validation state diff --git a/docs/releases/1.4.0-beta.md b/docs/releases/1.4.0-beta.md new file mode 100644 index 000000000..c21b7e7da --- /dev/null +++ b/docs/releases/1.4.0-beta.md @@ -0,0 +1,61 @@ +# winTerm 1.4.0-beta + +**This is a beta prerelease.** The current stable release is +[v1.3.0](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0), +and `/releases/latest` points there. The beta is published as a GitHub +prerelease with the standard asset layout; it is not submitted to WinGet. + +winTerm 1.4.0-beta is the beta of the **Pane Search** release. Manual +validation of v1.4.0-alpha passed — live search under sustained log +output (Kafka / Spring Boot workloads), match navigation, the counter, +and the scrollbar overview — so the alpha build is promoted unchanged +with beta version metadata. + +## Pane Search + +`Ctrl+F` opens Find in the **active pane only** (`Ctrl+Shift+F` stays as +a compatibility alias; both chords are remappable). The proven Microsoft +Terminal search pipeline is reused end to end — no second engine, no +index, no buffer duplication. + +- **Search that follows your typing.** Results update live while you + type, across the pane's entire scrollback, with every match + highlighted at once. `Enter` / `Shift+Enter` step through matches with + wrap-around; case-sensitive and regular-expression modes are one + toggle away; `Esc` closes and returns focus to the shell. +- **The winTerm search box.** Compact overlay with a search glyph, the + input, a `current / total` match counter, case/regex toggles, + previous/next, and close — adapting to narrow panes while always + keeping the input and the close button usable. +- **A scrollbar search overview.** One marker per matching buffer row + across the full scrollback, the current match's row emphasized at + double width, independent of the `showMarksOnScrollbar` setting, and + fully pane-local in splits. +- **Built for real workloads.** Coalesced live typing, convergence while + output streams continuously (`tail -f`, dev servers, Kafka logs), + bounded scrollbar repainting with huge match counts, and deterministic + safety across pane resize/reflow, scrollback eviction, + alternate-screen applications, wide characters (CJK, emoji), and + invalid regular expressions. + +## Everything in v1.3.0 is included + +The Command Timeline, automatic PowerShell shell integration, Visual +Progress, Workspaces, pane management, themes, and portable mode ship +unchanged from the new stable release. + +## Downloads + +- `winTerm-1.4.0-beta-setup-x64.exe` — current-user or all-users + installation. +- `winTerm-1.4.0-beta-portable-x64.zip` — extract and run without + installation (creates `portable.marker` alongside the executable). +- `SHA256SUMS.txt` — checksums for both application assets; verify + before running. + +Upgrading from any earlier version installs over the existing +installation and keeps settings, themes, workspaces, and snapshots. + +Requires Windows 11 x64. winTerm is an independent open-source project +based on Microsoft Terminal source code; it is not a Microsoft product +and is not affiliated with or endorsed by Microsoft. diff --git a/scripts/winterm/package-shell-assets.ps1 b/scripts/winterm/package-shell-assets.ps1 index d64cdf6c5..2fa5ec83e 100644 --- a/scripts/winterm/package-shell-assets.ps1 +++ b/scripts/winterm/package-shell-assets.ps1 @@ -33,8 +33,8 @@ foreach ($relativePath in $sourceAssets) $version = Get-Content -LiteralPath (Join-Path $repositoryRoot 'shell\shared\version.json') -Raw | ConvertFrom-Json if ($version.moduleVersion -ne '1.4.0' -or - $version.modulePrerelease -ne 'alpha' -or - $version.applicationVersion -ne '1.4.0-alpha' -or + $version.modulePrerelease -ne 'beta' -or + $version.applicationVersion -ne '1.4.0-beta' -or $version.protocolVersion -ne 1) { throw 'The winTerm Shell asset version metadata is invalid.' diff --git a/scripts/winterm/test-visual-progress.ps1 b/scripts/winterm/test-visual-progress.ps1 index 509d7ff4d..665d525c0 100644 --- a/scripts/winterm/test-visual-progress.ps1 +++ b/scripts/winterm/test-visual-progress.ps1 @@ -1431,12 +1431,12 @@ try $version = $source.VersionMetadata | ConvertFrom-Json $expectedVersionValues = [ordered]@{ - applicationVersion = '1.4.0-alpha' - packageVersion = '1.4.0.0' + applicationVersion = '1.4.0-beta' + packageVersion = '1.4.0.1' moduleVersion = '1.4.0' - modulePrerelease = 'alpha' - channel = 'alpha' - tag = 'v1.4.0-alpha' + modulePrerelease = 'beta' + channel = 'beta' + tag = 'v1.4.0-beta' workspaceSchemaVersion = 2 dockingModelVersion = 1 shellProtocolVersion = 1 @@ -1451,39 +1451,39 @@ try } } $shellVersion = $source.ShellVersion | ConvertFrom-Json - if ($shellVersion.applicationVersion -ne '1.4.0-alpha' -or $shellVersion.moduleVersion -ne '1.4.0' -or $shellVersion.protocolVersion -ne 1) + if ($shellVersion.applicationVersion -ne '1.4.0-beta' -or $shellVersion.moduleVersion -ne '1.4.0' -or $shellVersion.protocolVersion -ne 1) { - throw 'Shell version metadata does not match winTerm version 1.4.0-alpha with protocol version 1.' + throw 'Shell version metadata does not match winTerm version 1.4.0-beta with protocol version 1.' } foreach ($surface in @( - @{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.4.0-alpha" }'; Description = 'About release metadata' }, - @{ Content = $source.PackageManifest; Value = 'Version="1.4.0.0"'; Description = 'MSIX package manifest' }, - @{ Content = $source.HostResource; Value = 'FILEVERSION 1,4,0,0'; Description = 'Terminal host file version' }, - @{ Content = $source.HostResource; Value = '"ProductVersion", "1.4.0-alpha\0"'; Description = 'Terminal host display version' }, - @{ Content = $source.ShimResource; Value = 'FILEVERSION 1,4,0,0'; Description = 'Shim file version' }, - @{ Content = $source.ShimResource; Value = '"ProductVersion", "1.4.0-alpha\0"'; Description = 'Shim display version' }, + @{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.4.0-beta" }'; Description = 'About release metadata' }, + @{ Content = $source.PackageManifest; Value = 'Version="1.4.0.1"'; Description = 'MSIX package manifest' }, + @{ Content = $source.HostResource; Value = 'FILEVERSION 1,4,0,1'; Description = 'Terminal host file version' }, + @{ Content = $source.HostResource; Value = '"ProductVersion", "1.4.0-beta\0"'; Description = 'Terminal host display version' }, + @{ Content = $source.ShimResource; Value = 'FILEVERSION 1,4,0,1'; Description = 'Shim file version' }, + @{ Content = $source.ShimResource; Value = '"ProductVersion", "1.4.0-beta\0"'; Description = 'Shim display version' }, @{ Content = $source.CustomProps; Value = '1'; Description = 'Executable major version' }, @{ Content = $source.CustomProps; Value = '4'; Description = 'Executable minor version' }, @{ Content = $source.ShellModuleManifest; Value = "ModuleVersion = '1.4.0'"; Description = 'PowerShell module manifest' }, @{ Content = $source.ShellModule; Value = "`$script:WinTermModuleVersion = '1.4.0'"; Description = 'PowerShell module runtime' }, @{ Content = $source.PackageShellAssets; Value = "'shell\shared\version.json'"; Description = 'Canonical shell version metadata packaging' }, - @{ Content = $source.WorkspaceSerializer; Value = '"1.4.0-alpha"'; Description = 'Workspace application-version fallback' } + @{ Content = $source.WorkspaceSerializer; Value = '"1.4.0-beta"'; Description = 'Workspace application-version fallback' } )) { Assert-Contains $surface.Content $surface.Value $surface.Description } foreach ($required in @( - "applicationVersion -eq '1.4.0-alpha'", - "packageVersion -eq '1.4.0.0'", + "applicationVersion -eq '1.4.0-beta'", + "packageVersion -eq '1.4.0.1'", "moduleVersion -eq '1.4.0'", - "tag -eq 'v1.4.0-alpha'", + "tag -eq 'v1.4.0-beta'", "Workspace Schema version remains 2", "Docking Model version remains 1", "Shell Protocol version remains 1", "Theme Schema remains at version 1" )) { - Assert-Contains $source.VerifyVersion $required 'Authoritative v1.4.0-alpha version validation surface' + Assert-Contains $source.VerifyVersion $required 'Authoritative v1.4.0-beta version validation surface' } $testBinary = Join-Path $root "bin\$Platform\$Configuration\UnitTests_SettingsModel\SettingsModel.Unit.Tests.dll" diff --git a/scripts/winterm/test.ps1 b/scripts/winterm/test.ps1 index f0e4f0e6c..30af8d165 100644 --- a/scripts/winterm/test.ps1 +++ b/scripts/winterm/test.ps1 @@ -293,7 +293,7 @@ function Test-ShellExperienceFoundations $manifest = Import-PowerShellDataFile -LiteralPath $moduleManifest if ($manifest.ModuleVersion -ne '1.4.0' -or - $manifest.PrivateData.PSData.Prerelease -ne 'alpha' -or + $manifest.PrivateData.PSData.Prerelease -ne 'beta' -or $manifest.PowerShellVersion -ne '5.1') { throw 'The winTerm PowerShell module manifest does not declare the supported version boundary.' diff --git a/scripts/winterm/verify-branding.ps1 b/scripts/winterm/verify-branding.ps1 index 83ad3693d..831698d34 100644 --- a/scripts/winterm/verify-branding.ps1 +++ b/scripts/winterm/verify-branding.ps1 @@ -126,7 +126,7 @@ function Test-Manifest Test-Requirement -Condition ($null -ne $identity -and $identity.Name -eq 'HelloThisWorld.winTerm') -Message "$Path uses package identity HelloThisWorld.winTerm" Test-Requirement -Condition ($null -ne $identity -and $identity.Name -notmatch '^Microsoft\.') -Message "$Path does not use a Microsoft package name" Test-Requirement -Condition ($null -ne $identity -and $identity.Publisher -ceq $ExpectedPublisher) -Message "$Path uses the expected non-Microsoft publisher" - Test-Requirement -Condition ($null -ne $identity -and $identity.Version -eq '1.4.0.0') -Message "$Path uses package version 1.4.0.0" + Test-Requirement -Condition ($null -ne $identity -and $identity.Version -eq '1.4.0.1') -Message "$Path uses package version 1.4.0.1" Test-Requirement -Condition ($null -ne $properties -and $properties.DisplayName -eq 'winTerm') -Message "$Path package display name is winTerm" Test-Requirement -Condition ($null -ne $application -and $application.Id -eq 'winTerm') -Message "$Path application ID is winTerm" Test-Requirement -Condition ($null -ne $visualElements -and $visualElements.DisplayName -eq 'winTerm') -Message "$Path application display name is winTerm" diff --git a/scripts/winterm/verify-version.ps1 b/scripts/winterm/verify-version.ps1 index 060aff383..27f3aeb55 100644 --- a/scripts/winterm/verify-version.ps1 +++ b/scripts/winterm/verify-version.ps1 @@ -49,10 +49,10 @@ try $versionPath = Join-Path $repositoryRoot 'src\winterm\Branding\version.json' $version = Get-Content -LiteralPath $versionPath -Raw | ConvertFrom-Json - Assert-Condition ($version.applicationVersion -eq '1.4.0-alpha') 'Application version is 1.4.0-alpha' - Assert-Condition ($version.packageVersion -eq '1.4.0.0') 'Package version is 1.4.0.0' + Assert-Condition ($version.applicationVersion -eq '1.4.0-beta') 'Application version is 1.4.0-beta' + Assert-Condition ($version.packageVersion -eq '1.4.0.1') 'Package version is 1.4.0.1' Assert-Condition ($version.moduleVersion -eq '1.4.0') 'PowerShell module version is 1.4.0' - Assert-Condition ($version.modulePrerelease -eq 'alpha') 'PowerShell module prerelease suffix is alpha' + Assert-Condition ($version.modulePrerelease -eq 'beta') 'PowerShell module prerelease suffix is beta' # The release workflow treats any channel other than 'stable' as a # prerelease: it marks the GitHub Release --prerelease and --latest=false. @@ -66,7 +66,7 @@ try Assert-Condition ($version.packageVersion -match '^\d+\.\d+\.\d+\.\d+$') 'Package version stays a four-part numeric version' Assert-Condition ($version.moduleVersion -match '^\d+\.\d+\.\d+$') 'PowerShell module version stays numeric' - Assert-Condition ($version.tag -eq 'v1.4.0-alpha') 'Prerelease tag is v1.4.0-alpha' + Assert-Condition ($version.tag -eq 'v1.4.0-beta') 'Prerelease tag is v1.4.0-beta' Assert-Condition ($version.workspaceSchemaVersion -eq 2) 'Workspace Schema version remains 2' Assert-Condition ($version.dockingModelVersion -eq 1) 'Docking Model version remains 1' Assert-Condition ($version.shellProtocolVersion -eq 1) 'Shell Protocol version remains 1' @@ -98,8 +98,8 @@ try Assert-Condition ($shellVersion.protocolVersion -eq $version.shellProtocolVersion) 'Shell asset protocol version matches release metadata' $releaseHeader = Get-Text 'src\winterm\Branding\ReleaseMetadata.h' - Assert-Condition ($releaseHeader.Contains('ApplicationVersion{ L"1.4.0-alpha" }')) 'About metadata application version is 1.4.0-alpha' - Assert-Condition ($releaseHeader.Contains('ReleaseChannel{ L"Alpha" }')) 'About metadata channel is Alpha' + Assert-Condition ($releaseHeader.Contains('ApplicationVersion{ L"1.4.0-beta" }')) 'About metadata application version is 1.4.0-beta' + Assert-Condition ($releaseHeader.Contains('ReleaseChannel{ L"Beta" }')) 'About metadata channel is Beta' Assert-Condition ($releaseHeader.Contains($version.microsoftTerminalUpstreamRevision)) 'About metadata contains the Microsoft Terminal upstream revision' Assert-Condition ($releaseHeader.Contains('WorkspaceSchemaVersion{ 2 }')) 'About metadata contains Workspace Schema version 2' Assert-Condition ($releaseHeader.Contains('DockingModelVersion{ 1 }')) 'About metadata contains Docking Model version 1' @@ -129,10 +129,10 @@ try Assert-Condition ((Get-Text 'src\winterm\Workspaces\Model\WorkspaceDescriptor.h').Contains('WorkspaceSchemaVersion{ 2 }')) 'Workspace model remains at Schema version 2' Assert-Condition ((Get-Text 'src\winterm\Workspaces\Model\WorkspaceDescriptor.h').Contains('DockingModelVersion{ 1 }')) 'Workspace model remains at Docking version 1' - Assert-Condition ((Get-Text 'src\winterm\Workspaces\Model\WorkspaceDescriptor.h').Contains('applicationVersion{ "1.4.0-alpha" }')) 'Workspace model application-version fallback is 1.4.0-alpha' + Assert-Condition ((Get-Text 'src\winterm\Workspaces\Model\WorkspaceDescriptor.h').Contains('applicationVersion{ "1.4.0-beta" }')) 'Workspace model application-version fallback is 1.4.0-beta' Assert-Condition ((Get-Text 'src\winterm\Shell\Protocol\ShellIntegrationProtocol.h').Contains('ShellProtocolVersion{ 1 }')) 'Shell protocol remains at version 1' Assert-Condition ((Get-Text 'src\winterm\Appearance\Themes\ThemeDescriptor.h').Contains('CurrentThemeSchemaVersion{ 1 }')) 'Theme Schema remains at version 1' - Assert-Condition ((Get-Text 'src\winterm\Workspaces\Persistence\WorkspaceSerializer.cpp').Contains('"1.4.0-alpha"')) 'Workspace serializer application-version fallback is 1.4.0-alpha' + Assert-Condition ((Get-Text 'src\winterm\Workspaces\Persistence\WorkspaceSerializer.cpp').Contains('"1.4.0-beta"')) 'Workspace serializer application-version fallback is 1.4.0-beta' $releaseWorkflow = Get-Text '.github\workflows\release.yml' Assert-Condition ($releaseWorkflow.Contains("- 'v*'")) 'Release workflow accepts version tags through a generic guarded trigger' @@ -141,9 +141,9 @@ try Assert-Condition ($releaseWorkflow.Contains("`$expectedTag = `"v`$(`$metadata.applicationVersion)`"")) 'Release workflow derives the expected tag from version.json' Assert-Condition ($releaseWorkflow.Contains("`$metadata.tag -cne `$expectedTag")) 'Release workflow rejects a version metadata tag mismatch' - Assert-Condition ((Get-Text 'CHANGELOG.md').Contains('## 1.2.0 - 2026-08-01')) 'Changelog retains public Latest 1.2.0' + Assert-Condition ((Get-Text 'CHANGELOG.md').Contains('## 1.3.0 - 2026-08-13')) 'Changelog contains the 1.3.0 stable entry' Assert-Condition ((Get-Text 'README.md').Contains("current source version is ``$($version.applicationVersion)``")) 'README source version matches release metadata' - Assert-Condition ((Get-Text 'README.md').Contains('latest stable release is `1.2.0`')) 'README retains public Latest 1.2.0' + Assert-Condition ((Get-Text 'README.md').Contains('latest stable release is `1.3.0`')) 'README stable pointer is 1.3.0' # The Japanese README is a maintained counterpart, not a marketing summary: # both files must link to each other, the translation must point at the @@ -162,7 +162,7 @@ try Assert-Condition ($readmeJa.Contains('[English](README.md)')) 'Japanese README links back to the English README' Assert-Condition ($readmeJa.Contains('https://winterm.dev/ja/')) 'Japanese README links to the Japanese website' Assert-Condition ($readmeJa.Contains("``$($version.applicationVersion)``")) 'Japanese README source version matches release metadata' - Assert-Condition ($readmeJa.Contains('`1.2.0`')) 'Japanese README retains public Latest 1.2.0' + Assert-Condition ($readmeJa.Contains('`1.3.0`')) 'Japanese README stable pointer is 1.3.0' Assert-Condition ($readmeJa.Contains('winTerm--setup-x64.exe')) 'Japanese README retains the installer asset pattern' Assert-Condition ($readmeJa.Contains('winTerm--portable-x64.zip')) 'Japanese README retains the portable asset pattern' Assert-Condition ($readmeJa.Contains('SHA256SUMS.txt')) 'Japanese README retains the checksum filename' @@ -187,7 +187,7 @@ try if ($RequireTag) { $tag = (& git describe --tags --exact-match 2>$null).Trim() - Assert-Condition ($LASTEXITCODE -eq 0 -and $tag -eq $version.tag) 'Checked-out commit is exactly tagged v1.4.0-alpha' + Assert-Condition ($LASTEXITCODE -eq 0 -and $tag -eq $version.tag) 'Checked-out commit is exactly tagged v1.4.0-beta' } Write-Host 'winTerm version consistency verification passed.' -ForegroundColor Green diff --git a/shell/powershell/winTerm.Shell/winTerm.Shell.psd1 b/shell/powershell/winTerm.Shell/winTerm.Shell.psd1 index 5dcc446cf..001c3352c 100644 --- a/shell/powershell/winTerm.Shell/winTerm.Shell.psd1 +++ b/shell/powershell/winTerm.Shell/winTerm.Shell.psd1 @@ -12,7 +12,7 @@ AliasesToExport = @() PrivateData = @{ PSData = @{ - Prerelease = 'alpha' + Prerelease = 'beta' Tags = @('winTerm', 'terminal', 'shell-integration') ProjectUri = 'https://github.com/HelloThisWorld/winTerm' LicenseUri = 'https://github.com/HelloThisWorld/winTerm/blob/main/LICENSE' diff --git a/shell/shared/version.json b/shell/shared/version.json index 9055422d5..9e7310ba2 100644 --- a/shell/shared/version.json +++ b/shell/shared/version.json @@ -1,6 +1,6 @@ { - "applicationVersion": "1.4.0-alpha", + "applicationVersion": "1.4.0-beta", "moduleVersion": "1.4.0", - "modulePrerelease": "alpha", + "modulePrerelease": "beta", "protocolVersion": 1 } diff --git a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest index a3161ff87..457c7bf87 100644 --- a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest @@ -18,7 +18,7 @@ + Version="1.4.0.1" /> winTerm diff --git a/src/cascadia/WindowsTerminal/WindowsTerminal.rc b/src/cascadia/WindowsTerminal/WindowsTerminal.rc index c550b07e7..bccda1209 100644 --- a/src/cascadia/WindowsTerminal/WindowsTerminal.rc +++ b/src/cascadia/WindowsTerminal/WindowsTerminal.rc @@ -83,8 +83,8 @@ IDI_APPICON_HC_WHITE ICON "..\\..\\..\\res\\terminal\\imag #if defined(WT_BRANDING_WINTERM) 1 VERSIONINFO - FILEVERSION 1,4,0,0 - PRODUCTVERSION 1,4,0,0 + FILEVERSION 1,4,0,1 + PRODUCTVERSION 1,4,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -101,12 +101,12 @@ BEGIN BEGIN VALUE "CompanyName", "helloThisWorld\0" VALUE "FileDescription", "winTerm Terminal Host\0" - VALUE "FileVersion", "1.4.0.0\0" + VALUE "FileVersion", "1.4.0.1\0" VALUE "InternalName", "WindowsTerminal\0" VALUE "LegalCopyright", "Copyright (c) winTerm contributors. Portions copyright Microsoft Corporation.\0" VALUE "OriginalFilename", "WindowsTerminal.exe\0" VALUE "ProductName", "winTerm\0" - VALUE "ProductVersion", "1.4.0-alpha\0" + VALUE "ProductVersion", "1.4.0-beta\0" END END BLOCK "VarFileInfo" diff --git a/src/cascadia/wt/wt.rc b/src/cascadia/wt/wt.rc index b91630248..7a812666e 100644 --- a/src/cascadia/wt/wt.rc +++ b/src/cascadia/wt/wt.rc @@ -58,8 +58,8 @@ IDI_APPICON ICON "..\\..\\..\\res\\terminal.ico" #if defined(WT_BRANDING_WINTERM) 1 VERSIONINFO - FILEVERSION 1,4,0,0 - PRODUCTVERSION 1,4,0,0 + FILEVERSION 1,4,0,1 + PRODUCTVERSION 1,4,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -76,12 +76,12 @@ BEGIN BEGIN VALUE "CompanyName", "helloThisWorld\0" VALUE "FileDescription", "winTerm Launcher\0" - VALUE "FileVersion", "1.4.0.0\0" + VALUE "FileVersion", "1.4.0.1\0" VALUE "InternalName", "winTerm\0" VALUE "LegalCopyright", "Copyright (c) winTerm contributors. Portions copyright Microsoft Corporation.\0" VALUE "OriginalFilename", "winTerm.exe\0" VALUE "ProductName", "winTerm\0" - VALUE "ProductVersion", "1.4.0-alpha\0" + VALUE "ProductVersion", "1.4.0-beta\0" END END BLOCK "VarFileInfo" diff --git a/src/winterm-tools/winterm-shim/winterm-shim.rc b/src/winterm-tools/winterm-shim/winterm-shim.rc index a2b1332e4..befa6a8e6 100644 --- a/src/winterm-tools/winterm-shim/winterm-shim.rc +++ b/src/winterm-tools/winterm-shim/winterm-shim.rc @@ -4,8 +4,8 @@ #include 1 VERSIONINFO - FILEVERSION 1,4,0,0 - PRODUCTVERSION 1,4,0,0 + FILEVERSION 1,4,0,1 + PRODUCTVERSION 1,4,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS VS_FF_DEBUG @@ -22,12 +22,12 @@ BEGIN BEGIN VALUE "CompanyName", "helloThisWorld\0" VALUE "FileDescription", "winTerm Shell Integration Helper\0" - VALUE "FileVersion", "1.4.0.0\0" + VALUE "FileVersion", "1.4.0.1\0" VALUE "InternalName", "winterm-shim\0" VALUE "LegalCopyright", "Copyright (c) winTerm contributors.\0" VALUE "OriginalFilename", "winterm-shim.exe\0" VALUE "ProductName", "winTerm\0" - VALUE "ProductVersion", "1.4.0-alpha\0" + VALUE "ProductVersion", "1.4.0-beta\0" END END BLOCK "VarFileInfo" diff --git a/src/winterm/Branding/ReleaseMetadata.h b/src/winterm/Branding/ReleaseMetadata.h index 52df43937..bcb615f96 100644 --- a/src/winterm/Branding/ReleaseMetadata.h +++ b/src/winterm/Branding/ReleaseMetadata.h @@ -25,8 +25,8 @@ namespace winTerm::Branding { inline constexpr std::wstring_view Publisher{ L"helloThisWorld" }; - inline constexpr std::wstring_view ApplicationVersion{ L"1.4.0-alpha" }; - inline constexpr std::wstring_view ReleaseChannel{ L"Alpha" }; + inline constexpr std::wstring_view ApplicationVersion{ L"1.4.0-beta" }; + inline constexpr std::wstring_view ReleaseChannel{ L"Beta" }; inline constexpr std::wstring_view CommitSha{ WINTERM_BUILD_COMMIT_SHA }; inline constexpr std::wstring_view BuildTimestamp{ WINTERM_BUILD_TIMESTAMP }; inline constexpr std::wstring_view WorkflowRunId{ WINTERM_BUILD_WORKFLOW_RUN_ID }; diff --git a/src/winterm/Branding/version.json b/src/winterm/Branding/version.json index b32242e58..195a855d3 100644 --- a/src/winterm/Branding/version.json +++ b/src/winterm/Branding/version.json @@ -1,10 +1,10 @@ { - "applicationVersion": "1.4.0-alpha", - "packageVersion": "1.4.0.0", + "applicationVersion": "1.4.0-beta", + "packageVersion": "1.4.0.1", "moduleVersion": "1.4.0", - "modulePrerelease": "alpha", - "channel": "alpha", - "tag": "v1.4.0-alpha", + "modulePrerelease": "beta", + "channel": "beta", + "tag": "v1.4.0-beta", "workspaceSchemaVersion": 2, "dockingModelVersion": 1, "shellProtocolVersion": 1, diff --git a/src/winterm/Workspaces/Model/WorkspaceDescriptor.h b/src/winterm/Workspaces/Model/WorkspaceDescriptor.h index cb0d5f878..55829fa25 100644 --- a/src/winterm/Workspaces/Model/WorkspaceDescriptor.h +++ b/src/winterm/Workspaces/Model/WorkspaceDescriptor.h @@ -219,7 +219,7 @@ namespace winTerm::Workspaces std::string createdAt; std::string updatedAt; WorkspaceSource source{ WorkspaceSource::User }; - std::string applicationVersion{ "1.4.0-alpha" }; + std::string applicationVersion{ "1.4.0-beta" }; uint32_t protocolVersion{ 1 }; uint32_t dockingModelVersion{ DockingModelVersion }; WorkspaceStartupBehavior startupBehavior; diff --git a/src/winterm/Workspaces/Persistence/WorkspaceSerializer.cpp b/src/winterm/Workspaces/Persistence/WorkspaceSerializer.cpp index 7934b6a11..7f6fd2633 100644 --- a/src/winterm/Workspaces/Persistence/WorkspaceSerializer.cpp +++ b/src/winterm/Workspaces/Persistence/WorkspaceSerializer.cpp @@ -618,7 +618,7 @@ WorkspaceDescriptor WorkspaceSerializer::FromJson(const Json::Value& json, const throw std::runtime_error("The workspace source is not supported."); } workspace.source = *source; - workspace.applicationVersion = StringOrDefault(json, "applicationVersion", "1.4.0-alpha"); + workspace.applicationVersion = StringOrDefault(json, "applicationVersion", "1.4.0-beta"); workspace.protocolVersion = UIntOrDefault(json, "protocolVersion", 1); workspace.dockingModelVersion = UIntOrDefault(json, "dockingModelVersion", DockingModelVersion); if (const auto& startup = json["startupBehavior"]; !startup.isNull())