diff --git a/CHANGELOG.md b/CHANGELOG.md index 11e542952..86bc65340 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,38 @@ # Changelog +## 1.4.0-alpha - 2026-08-13 + +Alpha prerelease: the integration candidate of the Pane Search release, +bundling the v1.3.1, v1.3.2, and v1.3.3 engineering checkpoints on top of +v1.3.0-beta3 for manual validation. Published as a GitHub prerelease with +the standard asset layout; GitHub Latest and WinGet keep pointing at the +stable v1.2.0, and this alpha replaces v1.3.0-beta3 as the newest published +prerelease. A `PASS` verdict from manual testing promotes this build to +`1.4.0-beta`; a `FAIL` produces a fixed `1.4.1-alpha`. + +### Added + +- Pane Search, end to end: `Ctrl+F` opens Find in the active pane only + (`Ctrl+Shift+F` retained as a remappable alias), with live search over + the pane's entire scrollback, all-match highlighting, `Enter` / + `Shift+Enter` navigation with wrap-around, case-sensitive and regex + modes, and full input isolation from the shell (Phase 1, v1.3.1); the + winTerm compact search box with the `current / total` counter and + width-adaptive layouts, plus the scrollbar search overview with one + marker per matching row and current-match emphasis, independent of the + `ShowMarks` setting (Phase 2, v1.3.2); and performance/edge-case + hardening — per-pane typing coalescing, mid-output refresh convergence, + scrollbar repaint signatures, resize/reflow and alternate-screen safety, + eviction and Unicode coverage (Phase 3, v1.3.3). + +### Changed + +- Executable metadata major.minor advances to `1.4`; the release channel + switches to `alpha` with package version `1.4.0.0` and module prerelease + suffix `alpha`. The `v1.4.0-alpha` tag runs the full guarded release + pipeline (build, compiled tests, artifact generation, draft asset + round-trip testing) before the prerelease is published. + ## 1.3.3 - 2026-08-12 Engineering checkpoint for the Pane Search roadmap, Phase 3: performance and diff --git a/README.ja.md b/README.ja.md index 73230c072..e9d5e5af7 100644 --- a/README.ja.md +++ b/README.ja.md @@ -15,10 +15,10 @@ 最新の安定版リリースページには、インストーラー(Setup EXE)、ポータブルZIP、 リリースノート、チェックサムがまとめて掲載されています。 -Command Timelineを先行して試せる**ベータ版**のチャンネルもあります。 -[v1.3.0-beta3](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0-beta3) +Pane Search(ペイン検索)を先行して試せる**アルファ版**のプレリリースもあります。 +[v1.4.0-alpha](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-alpha) はGitHubのプレリリースとして公開されており、資産の構成は安定版と同じです。 -ベータ版は動作確認を目的とした配布のため、通常の利用には上記の安定版を推奨します。 +プレリリースは動作確認を目的とした配布のため、通常の利用には上記の安定版を推奨します。 インストーラーは署名されていないため、Windowsに「不明な発行元」または SmartScreenの警告が表示される場合があります。必ず上記の公式リリースから @@ -38,7 +38,7 @@ Microsoft、Windows、Windows Terminalのロゴも使用していません。 - `winTerm--setup-x64.exe` — 現在のユーザー、または全ユーザーへのインストール用; - `winTerm--portable-x64.zip` — 展開してそのまま実行する用。 -現在のソースバージョンは `1.3.3` で、 +現在のソースバージョンは `1.4.0-alpha` で、 最新の安定版リリースは `1.2.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.3.3 -Platform x64 -.\scripts\winterm\build-portable.ps1 -Version 1.3.3 -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 ``` アンパッケージ形式の生成処理では、統合されたリソースインデックスを作るための diff --git a/README.md b/README.md index 58dab2537..320790050 100644 --- a/README.md +++ b/README.md @@ -13,11 +13,10 @@ English | [日本語](README.ja.md) The latest stable Release page provides the Setup EXE, Portable ZIP, release notes, and checksums together. -A **beta** channel is also available for early access to the Command -Timeline: -[v1.3.0-beta3](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0-beta3) -is published as a GitHub prerelease with the same asset layout. Betas are for -testing; the stable release above stays the recommended download. +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) +is published as a GitHub prerelease with the same asset layout. Prereleases +are for testing; the stable release above stays the recommended download. The installer is unsigned, so Windows may display Unknown Publisher or a SmartScreen warning. Download only from the official release above and verify @@ -37,7 +36,7 @@ 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.3.3`; +The current source version is `1.4.0-alpha`; the latest stable release is `1.2.0`. See the [latest official Release](https://github.com/HelloThisWorld/winTerm/releases/latest) for the complete published asset list and checksums. @@ -106,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.3.3 -Platform x64 -.\scripts\winterm\build-portable.ps1 -Version 1.3.3 -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 ``` The unpackaged generator uses an unsigned MSIX only as an upstream build diff --git a/custom.props b/custom.props index 7957ab45c..96590ff9a 100644 --- a/custom.props +++ b/custom.props @@ -5,7 +5,7 @@ true 2026 1 - 3 + 4 winTerm Windows Terminal 1033 diff --git a/docs/current-progress.md b/docs/current-progress.md index 6cab7af53..67d299a66 100644 --- a/docs/current-progress.md +++ b/docs/current-progress.md @@ -1,37 +1,38 @@ # Current development progress -Last updated: 2026-08-12 +Last updated: 2026-08-13 ## Repository state -- Branch: `feature/v1.3.3-pane-search-phase3`, based on `main` at - `97ecb7e85` (Pane Search Phase 2 checkpoint, pull request #45) +- Branch: `release/v1.4.0-alpha`, based on `main` at + `e436fdf00` (Pane Search Phase 3 checkpoint, pull request #46) - Microsoft Terminal upstream revision: `1cea42d433253d95c4487a3037db48197b5e72f4` -- Application version: `1.3.3` -- Package/file version: `1.3.3.0` -- PowerShell module version: `1.3.3` with no prerelease suffix -- Release channel: `stable` (engineering checkpoint; nothing is published) -- Checkpoint tag: `v1.3.3`, listed with the earlier checkpoint tags in the - release workflow so a pushed checkpoint tag runs quick validation only and - can never produce release artifacts +- 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.3.0-beta3` on the beta channel +- Newest published prerelease: `v1.4.0-alpha` (replacing `v1.3.0-beta3`) - Supported target: Windows 11 x64 -`v1.3.3` is an engineering checkpoint, the third of the Pane Search roadmap -toward v1.4. Like the v1.2.1 through v1.2.4 Command Timeline checkpoints, it -is a source/development version only: no GitHub Release, website slot, or -WinGet update is produced, and `/releases/latest` keeps resolving to v1.2.0. +`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. ## 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`, promoted to beta only after manual - user validation. Starting `1.4.0-alpha` requires a separate instruction; - it is not begun automatically. +- 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. Phase 1 made `Ctrl+F` (with the retained `Ctrl+Shift+F` alias) open the existing Microsoft Terminal search box inside the focused pane only, @@ -189,12 +190,15 @@ through pull request #32: ## Next steps -1. Final integration checkpoint `1.4.0-alpha`, then manual user validation - before any beta promotion. This stage requires a separate instruction - from the user; do not begin it automatically. -2. Collect Command Timeline beta feedback; promote a stable `v1.3.0` only - after beta testing, which is the point at which Latest, WinGet, and the - website stable slot move. +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. ## Validation state diff --git a/docs/releases/1.4.0-alpha.md b/docs/releases/1.4.0-alpha.md new file mode 100644 index 000000000..448375355 --- /dev/null +++ b/docs/releases/1.4.0-alpha.md @@ -0,0 +1,77 @@ +# winTerm 1.4.0-alpha + +**This is an alpha prerelease.** The current stable release remains +[v1.2.0](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.2.0), and +`/releases/latest` continues to point there. The alpha is published as a +GitHub prerelease for manual validation; it is not submitted to WinGet and +is not the recommended download for everyday use. + +winTerm 1.4.0-alpha is the integration candidate of the **Pane Search** +release. It bundles the three engineering checkpoints of the Pane Search +roadmap (v1.3.1, v1.3.2, v1.3.3) on top of v1.3.0-beta3 for hands-on +testing before any beta promotion. + +## What is new since v1.3.0-beta3: 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 — there is no second search +engine, no index, and 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. Typed characters never leak into + the terminal. +- **The winTerm search box.** The pane-local box follows the winTerm + compact overlay language — search glyph, input, `current / total` match + counter, case/regex toggles, previous/next, close — and adapts to narrow + panes through layout states that always keep the input and the close + button usable. The counter keeps the familiar semantics, including + `No results`, the bounded `999+` form, and the invalid-regex message. +- **A scrollbar search overview.** While search is open, the scrollbar + shows one marker per matching buffer row across the full scrollback, + with the current match's row emphasized at double width. The overview is + independent of the `showMarksOnScrollbar` setting (generic shell marks + keep obeying it), coexists with generic marks, disappears on close, and + respects a deliberately hidden scrollbar. Split panes keep fully + isolated search state, including their overview markers. +- **Hardened for real workloads.** Rapid typing is coalesced per pane + (leading keystroke searches immediately; the latest query always wins). + An open search keeps converging while output streams continuously — + `tail -f`-style logs update the counter, highlights, and overview + instead of freezing them — and a closed search costs the terminal + nothing. Scrolling with very large result sets no longer repaints + identical scrollbar pixels. Pane resize/reflow, scrollback eviction, + alternate-screen applications (`vim`, `less`, TUIs), wide characters + (CJK, emoji), and invalid regular expressions are all covered by + deterministic regression tests. + +## What to validate in this alpha + +This build exists for manual confirmation of the Pane Search experience +under real use: typing responsiveness at large scrollback, continuous +output with an open search, huge match counts, pane resize and reflow, +multiple panes with independent searches, alternate-screen entry/exit, +Unicode queries, and rapid open/close. A `PASS` verdict promotes this +build to `1.4.0-beta`; a `FAIL` produces a fixed `1.4.1-alpha`. + +## Everything in v1.3.0-beta3 is included + +The Command Timeline, Visual Progress, shell integration, Workspaces, +pane management, and all fixes through v1.3.0-beta3 ship unchanged in +this alpha. + +## Downloads + +- `winTerm-1.4.0-alpha-setup-x64.exe` — current-user or all-users + installation. +- `winTerm-1.4.0-alpha-portable-x64.zip` — extract and run without + installation (creates `portable.marker` alongside the executable). +- `SHA256SUMS.txt` — checksums for both application assets; verify before + running. + +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 b144a6610..d64cdf6c5 100644 --- a/scripts/winterm/package-shell-assets.ps1 +++ b/scripts/winterm/package-shell-assets.ps1 @@ -32,9 +32,9 @@ foreach ($relativePath in $sourceAssets) } $version = Get-Content -LiteralPath (Join-Path $repositoryRoot 'shell\shared\version.json') -Raw | ConvertFrom-Json -if ($version.moduleVersion -ne '1.3.3' -or - $version.modulePrerelease -ne '' -or - $version.applicationVersion -ne '1.3.3' -or +if ($version.moduleVersion -ne '1.4.0' -or + $version.modulePrerelease -ne 'alpha' -or + $version.applicationVersion -ne '1.4.0-alpha' -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 a714d20b7..509d7ff4d 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.3.3' - packageVersion = '1.3.3.0' - moduleVersion = '1.3.3' - modulePrerelease = '' - channel = 'stable' - tag = 'v1.3.3' + applicationVersion = '1.4.0-alpha' + packageVersion = '1.4.0.0' + moduleVersion = '1.4.0' + modulePrerelease = 'alpha' + channel = 'alpha' + tag = 'v1.4.0-alpha' workspaceSchemaVersion = 2 dockingModelVersion = 1 shellProtocolVersion = 1 @@ -1451,39 +1451,39 @@ try } } $shellVersion = $source.ShellVersion | ConvertFrom-Json - if ($shellVersion.applicationVersion -ne '1.3.3' -or $shellVersion.moduleVersion -ne '1.3.3' -or $shellVersion.protocolVersion -ne 1) + if ($shellVersion.applicationVersion -ne '1.4.0-alpha' -or $shellVersion.moduleVersion -ne '1.4.0' -or $shellVersion.protocolVersion -ne 1) { - throw 'Shell version metadata does not match winTerm version 1.3.3 with protocol version 1.' + throw 'Shell version metadata does not match winTerm version 1.4.0-alpha with protocol version 1.' } foreach ($surface in @( - @{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.3.3" }'; Description = 'About release metadata' }, - @{ Content = $source.PackageManifest; Value = 'Version="1.3.3.0"'; Description = 'MSIX package manifest' }, - @{ Content = $source.HostResource; Value = 'FILEVERSION 1,3,3,0'; Description = 'Terminal host file version' }, - @{ Content = $source.HostResource; Value = '"ProductVersion", "1.3.3\0"'; Description = 'Terminal host display version' }, - @{ Content = $source.ShimResource; Value = 'FILEVERSION 1,3,3,0'; Description = 'Shim file version' }, - @{ Content = $source.ShimResource; Value = '"ProductVersion", "1.3.3\0"'; Description = 'Shim display version' }, + @{ 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.CustomProps; Value = '1'; Description = 'Executable major version' }, - @{ Content = $source.CustomProps; Value = '3'; Description = 'Executable minor version' }, - @{ Content = $source.ShellModuleManifest; Value = "ModuleVersion = '1.3.3'"; Description = 'PowerShell module manifest' }, - @{ Content = $source.ShellModule; Value = "`$script:WinTermModuleVersion = '1.3.3'"; Description = 'PowerShell module runtime' }, + @{ 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.3.3"'; Description = 'Workspace application-version fallback' } + @{ Content = $source.WorkspaceSerializer; Value = '"1.4.0-alpha"'; Description = 'Workspace application-version fallback' } )) { Assert-Contains $surface.Content $surface.Value $surface.Description } foreach ($required in @( - "applicationVersion -eq '1.3.3'", - "packageVersion -eq '1.3.3.0'", - "moduleVersion -eq '1.3.3'", - "tag -eq 'v1.3.3'", + "applicationVersion -eq '1.4.0-alpha'", + "packageVersion -eq '1.4.0.0'", + "moduleVersion -eq '1.4.0'", + "tag -eq 'v1.4.0-alpha'", "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.3.3 version validation surface' + Assert-Contains $source.VerifyVersion $required 'Authoritative v1.4.0-alpha 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 5e46e0637..f0e4f0e6c 100644 --- a/scripts/winterm/test.ps1 +++ b/scripts/winterm/test.ps1 @@ -292,8 +292,8 @@ function Test-ShellExperienceFoundations } $manifest = Import-PowerShellDataFile -LiteralPath $moduleManifest - if ($manifest.ModuleVersion -ne '1.3.3' -or - $manifest.PrivateData.PSData.Prerelease -ne '' -or + if ($manifest.ModuleVersion -ne '1.4.0' -or + $manifest.PrivateData.PSData.Prerelease -ne 'alpha' -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 be11c4409..83ad3693d 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.3.3.0') -Message "$Path uses package version 1.3.3.0" + 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 $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 51cba6e64..060aff383 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.3.3') 'Application version is 1.3.3' - Assert-Condition ($version.packageVersion -eq '1.3.3.0') 'Package version is 1.3.3.0' - Assert-Condition ($version.moduleVersion -eq '1.3.3') 'PowerShell module version is 1.3.3' - Assert-Condition ($version.modulePrerelease -eq '') 'PowerShell module has no prerelease suffix' + 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.moduleVersion -eq '1.4.0') 'PowerShell module version is 1.4.0' + Assert-Condition ($version.modulePrerelease -eq 'alpha') 'PowerShell module prerelease suffix is alpha' # 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.3.3') 'Engineering checkpoint tag is v1.3.3' + Assert-Condition ($version.tag -eq 'v1.4.0-alpha') 'Prerelease tag is v1.4.0-alpha' 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' @@ -85,12 +85,12 @@ try $propsNamespace.AddNamespace('m', 'http://schemas.microsoft.com/developer/msbuild/2003') $major = $customProps.SelectSingleNode('//m:VersionMajor', $propsNamespace).'#text' $minor = $customProps.SelectSingleNode('//m:VersionMinor', $propsNamespace).'#text' - Assert-Condition ("$major.$minor" -eq '1.3') 'Executable metadata major and minor versions match 1.3' + Assert-Condition ("$major.$minor" -eq '1.4') 'Executable metadata major and minor versions match 1.4' $moduleManifest = Import-PowerShellDataFile -LiteralPath (Join-Path $repositoryRoot 'shell\powershell\winTerm.Shell\winTerm.Shell.psd1') Assert-Condition ($moduleManifest.ModuleVersion.ToString() -eq $version.moduleVersion) 'PowerShell manifest version matches release metadata' Assert-Condition ($moduleManifest.PrivateData.PSData.Prerelease -eq $version.modulePrerelease) 'PowerShell manifest prerelease matches release metadata' - Assert-Condition ((Get-Text 'shell\powershell\winTerm.Shell\winTerm.Shell.psm1').Contains("`$script:WinTermModuleVersion = '1.3.3'")) 'PowerShell module runtime version matches release metadata' + Assert-Condition ((Get-Text 'shell\powershell\winTerm.Shell\winTerm.Shell.psm1').Contains("`$script:WinTermModuleVersion = '1.4.0'")) 'PowerShell module runtime version matches release metadata' $shellVersion = Get-Text 'shell\shared\version.json' | ConvertFrom-Json Assert-Condition ($shellVersion.applicationVersion -eq $version.applicationVersion) 'Shell asset application version matches release metadata' @@ -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.3.3" }')) 'About metadata application version is 1.3.3' - Assert-Condition ($releaseHeader.Contains('ReleaseChannel{ L"Stable" }')) 'About metadata channel is Stable' + 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($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.3.3" }')) 'Workspace model application-version fallback is 1.3.3' + 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\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.3.3"')) 'Workspace serializer application-version fallback is 1.3.3' + 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' $releaseWorkflow = Get-Text '.github\workflows\release.yml' Assert-Condition ($releaseWorkflow.Contains("- 'v*'")) 'Release workflow accepts version tags through a generic guarded trigger' @@ -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.3.3' + Assert-Condition ($LASTEXITCODE -eq 0 -and $tag -eq $version.tag) 'Checked-out commit is exactly tagged v1.4.0-alpha' } 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 4304a865e..5dcc446cf 100644 --- a/shell/powershell/winTerm.Shell/winTerm.Shell.psd1 +++ b/shell/powershell/winTerm.Shell/winTerm.Shell.psd1 @@ -1,6 +1,6 @@ @{ RootModule = 'winTerm.Shell.psm1' - ModuleVersion = '1.3.3' + ModuleVersion = '1.4.0' GUID = 'f65cd8f4-5d25-4a2a-a0d4-58df1ab3dc5a' Author = 'winTerm contributors' CompanyName = 'winTerm' @@ -12,7 +12,7 @@ AliasesToExport = @() PrivateData = @{ PSData = @{ - Prerelease = '' + Prerelease = 'alpha' Tags = @('winTerm', 'terminal', 'shell-integration') ProjectUri = 'https://github.com/HelloThisWorld/winTerm' LicenseUri = 'https://github.com/HelloThisWorld/winTerm/blob/main/LICENSE' diff --git a/shell/powershell/winTerm.Shell/winTerm.Shell.psm1 b/shell/powershell/winTerm.Shell/winTerm.Shell.psm1 index 606ab3824..94b5e9d6e 100644 --- a/shell/powershell/winTerm.Shell/winTerm.Shell.psm1 +++ b/shell/powershell/winTerm.Shell/winTerm.Shell.psm1 @@ -3,7 +3,7 @@ Set-StrictMode -Version Latest -$script:WinTermModuleVersion = '1.3.3' +$script:WinTermModuleVersion = '1.4.0' $script:WinTermProtocolVersion = 1 $script:WinTermIntegrationEnabled = $false $script:WinTermPromptWrapped = $false diff --git a/shell/shared/version.json b/shell/shared/version.json index 8cc197724..9055422d5 100644 --- a/shell/shared/version.json +++ b/shell/shared/version.json @@ -1,6 +1,6 @@ { - "applicationVersion": "1.3.3", - "moduleVersion": "1.3.3", - "modulePrerelease": "", + "applicationVersion": "1.4.0-alpha", + "moduleVersion": "1.4.0", + "modulePrerelease": "alpha", "protocolVersion": 1 } diff --git a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest index ea5908120..a3161ff87 100644 --- a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest @@ -18,7 +18,7 @@ + Version="1.4.0.0" /> winTerm diff --git a/src/cascadia/WindowsTerminal/WindowsTerminal.rc b/src/cascadia/WindowsTerminal/WindowsTerminal.rc index cdec15d2b..c550b07e7 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,3,3,0 - PRODUCTVERSION 1,3,3,0 + FILEVERSION 1,4,0,0 + PRODUCTVERSION 1,4,0,0 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.3.3.0\0" + VALUE "FileVersion", "1.4.0.0\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.3.3\0" + VALUE "ProductVersion", "1.4.0-alpha\0" END END BLOCK "VarFileInfo" diff --git a/src/cascadia/wt/wt.rc b/src/cascadia/wt/wt.rc index b500a652e..b91630248 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,3,3,0 - PRODUCTVERSION 1,3,3,0 + FILEVERSION 1,4,0,0 + PRODUCTVERSION 1,4,0,0 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.3.3.0\0" + VALUE "FileVersion", "1.4.0.0\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.3.3\0" + VALUE "ProductVersion", "1.4.0-alpha\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 a7e1555a1..a2b1332e4 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,3,3,0 - PRODUCTVERSION 1,3,3,0 + FILEVERSION 1,4,0,0 + PRODUCTVERSION 1,4,0,0 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.3.3.0\0" + VALUE "FileVersion", "1.4.0.0\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.3.3\0" + VALUE "ProductVersion", "1.4.0-alpha\0" END END BLOCK "VarFileInfo" diff --git a/src/winterm/Branding/ReleaseMetadata.h b/src/winterm/Branding/ReleaseMetadata.h index 5252c3f3d..52df43937 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.3.3" }; - inline constexpr std::wstring_view ReleaseChannel{ L"Stable" }; + inline constexpr std::wstring_view ApplicationVersion{ L"1.4.0-alpha" }; + inline constexpr std::wstring_view ReleaseChannel{ L"Alpha" }; 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 54ea67914..b32242e58 100644 --- a/src/winterm/Branding/version.json +++ b/src/winterm/Branding/version.json @@ -1,10 +1,10 @@ { - "applicationVersion": "1.3.3", - "packageVersion": "1.3.3.0", - "moduleVersion": "1.3.3", - "modulePrerelease": "", - "channel": "stable", - "tag": "v1.3.3", + "applicationVersion": "1.4.0-alpha", + "packageVersion": "1.4.0.0", + "moduleVersion": "1.4.0", + "modulePrerelease": "alpha", + "channel": "alpha", + "tag": "v1.4.0-alpha", "workspaceSchemaVersion": 2, "dockingModelVersion": 1, "shellProtocolVersion": 1, diff --git a/src/winterm/Workspaces/Model/WorkspaceDescriptor.h b/src/winterm/Workspaces/Model/WorkspaceDescriptor.h index f88455b65..cb0d5f878 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.3.3" }; + std::string applicationVersion{ "1.4.0-alpha" }; 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 94ecf99c4..7934b6a11 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.3.3"); + workspace.applicationVersion = StringOrDefault(json, "applicationVersion", "1.4.0-alpha"); workspace.protocolVersion = UIntOrDefault(json, "protocolVersion", 1); workspace.dockingModelVersion = UIntOrDefault(json, "dockingModelVersion", DockingModelVersion); if (const auto& startup = json["startupBehavior"]; !startup.isNull())