From ab3d630daa5fff080873a2c2646cc2ac0a452c0e Mon Sep 17 00:00:00 2001 From: HelloThisWorld Date: Tue, 4 Aug 2026 23:08:37 +0800 Subject: [PATCH] release: prepare winTerm 1.3.0-beta2 prerelease Second beta of the Command Timeline release. It carries the prompt wrapper exit code fix from #39 and is otherwise identical to beta1. - Application version 1.3.0-beta2, package/file version 1.3.0.5, PowerShell module 1.3.0 with prerelease suffix beta2, channel beta. - Version literals moved across the branding metadata, manifests, resource scripts, and the six verification scripts that pin them. - README source version and build examples advanced to 1.3.0-beta2; the stable download reference stays at 1.2.0. - CHANGELOG, current progress, and docs/releases/1.3.0-beta2.md record the beta1 finding and the fix. --- CHANGELOG.md | 19 ++ README.md | 8 +- docs/current-progress.md | 40 ++-- docs/releases/1.3.0-beta2.md | 177 ++++++++++++++++++ scripts/winterm/package-shell-assets.ps1 | 4 +- scripts/winterm/test-visual-progress.ps1 | 34 ++-- scripts/winterm/test.ps1 | 2 +- scripts/winterm/verify-branding.ps1 | 2 +- scripts/winterm/verify-version.ps1 | 16 +- .../winTerm.Shell/winTerm.Shell.psd1 | 2 +- shell/shared/version.json | 4 +- .../Package-winTerm.appxmanifest | 2 +- .../WindowsTerminal/WindowsTerminal.rc | 8 +- src/cascadia/wt/wt.rc | 8 +- .../winterm-shim/winterm-shim.rc | 8 +- src/winterm/Branding/ReleaseMetadata.h | 2 +- src/winterm/Branding/version.json | 8 +- .../Workspaces/Model/WorkspaceDescriptor.h | 2 +- .../Persistence/WorkspaceSerializer.cpp | 2 +- 19 files changed, 279 insertions(+), 69 deletions(-) create mode 100644 docs/releases/1.3.0-beta2.md diff --git a/CHANGELOG.md b/CHANGELOG.md index d073bf485..258a2fc3c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## 1.3.0-beta2 - 2026-08-04 + +Second beta of the Command Timeline release, fixing a failure-reporting +defect found while capturing the beta1 screenshots. Like beta1, this is +published as a GitHub prerelease; GitHub Latest and WinGet continue to +point at v1.2.0 until a stable 1.3.0. + +### Fixed + +- Command Timeline entries no longer report every command as Succeeded. + The PowerShell prompt wrapper ran `Get-Module` before reading `$?`, so + the finished mark always carried exit code 0. The wrapper now captures + `$?` as its first statement and passes it into the prompt function, so + failed cmdlets report exit code 1 and native commands report their real + exit codes. The shell integration suite now drives the installed prompt + wrapper end to end and locks in the first-prompt, success, cmdlet + failure, native failure, and recovery sequences. + + ## 1.3.0-beta1 - 2026-08-04 First beta of the Command Timeline release. The feature content is identical diff --git a/README.md b/README.md index 21773f53c..666fe75d7 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ notes, and checksums together. A **beta** channel is also available for early access to the Command Timeline: -[v1.3.0-beta1](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0-beta1) +[v1.3.0-beta2](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0-beta2) is published as a GitHub prerelease with the same asset layout. Betas are for testing; the stable release above stays the recommended download. @@ -35,7 +35,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.0-beta1`; +The current source version is `1.3.0-beta2`; 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. @@ -104,8 +104,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.0-beta1 -Platform x64 -.\scripts\winterm\build-portable.ps1 -Version 1.3.0-beta1 -Platform x64 +.\scripts\winterm\build-installer.ps1 -Version 1.3.0-beta2 -Platform x64 +.\scripts\winterm\build-portable.ps1 -Version 1.3.0-beta2 -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 8f7449465..c5e8d432c 100644 --- a/docs/current-progress.md +++ b/docs/current-progress.md @@ -4,25 +4,27 @@ Last updated: 2026-08-04 ## Repository state -- Branch: `release/v1.3.0-beta1` -- Base branch: `main` at `c089caeb` (1.3.0-alpha4 release metadata, pull - request #37) +- Branch: `release/1.3.0-beta2` +- Base branch: `main` at `a6ec9a415` (prompt exit code fix, pull request + #39) - Microsoft Terminal upstream revision: `1cea42d433253d95c4487a3037db48197b5e72f4` -- Application version: `1.3.0-beta1` -- Package/file version: `1.3.0.4` -- PowerShell module version: `1.3.0` with prerelease suffix `beta1` +- Application version: `1.3.0-beta2` +- Package/file version: `1.3.0.5` +- PowerShell module version: `1.3.0` with prerelease suffix `beta2` - Release channel: `beta` -- Release tag: `v1.3.0-beta1` +- Release tag: `v1.3.0-beta2` - Current public Latest: `v1.2.0`, the stable Visual Progress release - Supported target: Windows 11 x64 -`v1.3.0-beta1` is the first beta of the Command Timeline release, with -feature content identical to `v1.3.0-alpha4`, which passed local field -testing. The release workflow marks any non-stable channel with -`--prerelease` and `--latest=false`, so `/releases/latest` keeps resolving to -v1.2.0. Unlike the alphas, the beta is listed on the winTerm website next to -the stable v1.2.0 download; it is still skipped by the WinGet workflow. +`v1.3.0-beta2` is the second beta of the Command Timeline release. It fixes +a beta1 defect found while producing the website screenshots: the PowerShell +prompt wrapper reset `$?` before reading it, so every Timeline entry reported +Succeeded and a failure mark could never appear. The release workflow marks +any non-stable channel with `--prerelease` and `--latest=false`, so +`/releases/latest` keeps resolving to v1.2.0. Like beta1, the beta is listed +on the winTerm website next to the stable v1.2.0 download; it is still +skipped by the WinGet workflow. ## Command Timeline status @@ -49,6 +51,18 @@ prerelease suffix. The package version stays four-part numeric for MSIX and the Win32 resource fields, and the PowerShell module version stays numeric with the suffix carried in `PrivateData.PSData.Prerelease`. +## Beta1 findings + +Producing the sanitized website screenshots against the published beta1 +portable build surfaced one defect, fixed on `main` through pull request #39: + +1. Every Command Timeline entry reported `✓ Succeeded`, including commands + that failed. The prompt wrapper executed `Get-Module` before the prompt + function read `$?`, so the finished mark always carried exit code 0. The + wrapper now captures `$?` first and passes it through, and the shell + integration suite drives the installed wrapper end to end (first prompt, + success, cmdlet failure, native exit code, recovery). + ## Alpha3 field reports Local testing of `v1.3.0-alpha3` surfaced three issues, all fixed on `main` diff --git a/docs/releases/1.3.0-beta2.md b/docs/releases/1.3.0-beta2.md new file mode 100644 index 000000000..41bccf49a --- /dev/null +++ b/docs/releases/1.3.0-beta2.md @@ -0,0 +1,177 @@ +# winTerm 1.3.0-beta2 + +**This is a beta 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 beta is listed on the winTerm +website next to the stable download and is published as a GitHub prerelease; +it is not submitted to WinGet. + +winTerm 1.3.0-beta2 is the second beta of the **Command Timeline** release. +It fixes one defect found in 1.3.0-beta1 and is otherwise identical to it. + +## Fixed since 1.3.0-beta1 + +- **Failed commands are reported as failed again.** In beta1, every finished + command showed `✓ Succeeded`, including commands that clearly failed. The + PowerShell prompt wrapper executed `Get-Module` before it read `$?`, so the + shell always reported exit code 0. The wrapper now captures `$?` as its + first statement and hands it to the prompt function: a failed cmdlet + reports exit code 1, a native command reports its real exit code, and the + Timeline resolves entries to `✕ Failed` accordingly. The shell integration + test suite now drives the installed prompt wrapper exactly like the console + host and locks in the first-prompt, success, cmdlet-failure, native-failure, + and recovery sequences. + +## What is new since v1.2.0: Command Timeline + +The Command Timeline is a per-pane, in-memory list of the commands that pane +has run. Open it with `Ctrl+Tab`, or with the thin auto-hiding handle on the +left edge of the terminal; click the terminal, press `Escape`, or press +`Ctrl+Tab` again to close it. + +- **Per-pane history.** Each pane keeps its own list, built from OSC 133 + shell integration only. winTerm never guesses where a prompt or output + begins, and `cmd.exe` — which does not report command boundaries — shows + `Command timeline unavailable` rather than untrustworthy results. +- **Works out of the box.** A profile whose commandline is a bare + `powershell.exe` or `pwsh.exe` (optionally with `-NoLogo`/`-NoExit`) + automatically imports the packaged `winTerm.Shell` integration module at + startup. Any customized commandline launches unchanged; the per-profile + setting `"shellIntegration.autoInject": false` turns the rewrite off. +- **Load without executing.** `Enter` or a single click puts the selected + command on the input line and stops there. No carriage return is ever sent, + the Windows clipboard is never read, and input broadcast never forwards the + load to another pane. +- **Filtering.** Press `/` or `Tab` and type to narrow the list. Matching is + a plain, case-insensitive substring match over command text only — no + wildcards, no regular expressions, no fuzzy matching, and command output is + never searched. +- **Copy and jump.** Right-click an entry to copy the command, copy its + output, or scroll to where its output begins. Output is read from the + terminal buffer only at that moment and is never cached. +- **Trustworthy status.** A command shows ● Running while it executes and + resolves to ✓ Succeeded or ✕ Failed when the shell reports its exit code. + `Unknown` appears only when the shell genuinely did not report a result, + and explains itself on hover. Status is never conveyed by color alone. +- **Readable rows.** Hover any row for the full command text; the selection + moves without rebuilding rows, so the list stays steady under the arrow + keys. + +## Keyboard + +| Shortcut | Behavior | +| --- | --- | +| `Ctrl+Tab` | Toggle the Command Timeline for the focused pane | +| `Ctrl+T` | Next tab | +| `Ctrl+Shift+T` | Previous tab | +| `Ctrl+Alt+T` | Open new tab | + +While the Timeline is open: + +| Key | Behavior | +| --- | --- | +| `/` or `Tab` | Move focus to the filter box | +| `Up` / `Down` | Move the selection by one command | +| `Left` / `Right` | Select the first / last command on the current page | +| `Enter` | Load the selected command; never runs it | +| `Space` | Scroll the terminal to that command's output | +| `Ctrl+C` | Copy the selected command text | +| `Escape` | Clear the filter, or close the Timeline if the filter is empty | + +Your own key bindings take precedence over every default above. Keys the +Timeline consumes are not sent to the shell, and filter text never reaches +the shell. + +## Settings + +```json +{ + "commandTimeline.enabled": true, + "commandTimeline.historyLimit": 500 +} +``` + +Per profile: + +```json +{ + "shellIntegration.autoInject": true +} +``` + +- **Show command timeline** defaults on. Turning it off hides the handle, + closes an open overlay, and stops `Ctrl+Tab` from opening it. +- **Commands remembered per pane** defaults to 500 and accepts 50 through + 5000. An out-of-range value is clamped rather than failing the settings + load. + +An existing settings file needs no migration. + +## Changes accumulated through the prerelease series + +- alpha2: auto-injected shell integration, the auto-hiding handle, + terminal-click light dismiss, and the recognition-engine fixes for stuck + progress bars. +- alpha3: correct FinalTerm mark emission (no stray characters, exact command + capture), no progress bar at an idle prompt, no phantom Timeline row, no + selection jitter, and silent degradation when antivirus blocks an optional + module component. +- alpha4: the antivirus write-then-execute false positive removed at its + source, ✓/✕ results restored through the Enter-keypress lifecycle + notification, and full-command tooltips. +- beta2: real exit codes restored to the finished mark, so failures resolve + to ✕ Failed instead of a false ✓ Succeeded. + +## Privacy + +- Command text lives only in memory, only in the pane that ran it, and only + while that pane is open. Nothing is written to disk; there is no command + history file or database. +- Command output is never cached, indexed, or searched. +- Filter text is never saved and never leaves the pane. +- No telemetry is written, and no command, output, path, or filter text is + logged. +- The clipboard is written only by an explicit copy action, and is never + read. + +See the [privacy policy](https://github.com/HelloThisWorld/winTerm/blob/main/PRIVACY.md). + +## Unchanged in this release + +Workspace schema (2), docking model (1), shell protocol (1), theme schema +(1), update manifest schema (1), package identity, and signing policy are all +unchanged from v1.2.0. Visual Progress behavior is unchanged apart from the +recognition fixes above. + +## Known limitations + +- The Timeline requires OSC 133 shell integration; it stays unavailable under + `cmd.exe`. +- A multi-line command is refused when the shell has not enabled bracketed + paste, because unbracketed line breaks would be read as pressing Enter. +- Loading a command longer than 1024 characters asks for a confirming + `Enter`. +- Command history does not survive closing a pane, and is intentionally never + persisted. + +## Installation + +The Setup EXE supports current-user and all-users installation; the Portable +ZIP can be extracted to a writable directory and run without installation. +Installing the beta over v1.2.0 or an earlier prerelease is supported; the +file version is `1.3.0.5`. Package identity stays separate from Microsoft +Terminal, so it does not disturb an existing Windows Terminal installation. + +Publisher: `helloThisWorld`. Tag: `v1.3.0-beta2`. + +## Signing + +The winTerm 1.3.0-beta2 Setup EXE is not Authenticode-signed. Windows may +display Unknown Publisher or a SmartScreen warning. Download only from the +official GitHub Release and verify the file against `SHA256SUMS.txt` before +running it. + +## Policies + +- [Code signing policy](https://github.com/HelloThisWorld/winTerm/blob/main/CODE_SIGNING_POLICY.md) +- [Privacy policy](https://github.com/HelloThisWorld/winTerm/blob/main/PRIVACY.md) diff --git a/scripts/winterm/package-shell-assets.ps1 b/scripts/winterm/package-shell-assets.ps1 index e653affd1..e566a3187 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.3.0' -or - $version.modulePrerelease -ne 'beta1' -or - $version.applicationVersion -ne '1.3.0-beta1' -or + $version.modulePrerelease -ne 'beta2' -or + $version.applicationVersion -ne '1.3.0-beta2' -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 b707b9d9b..e806449ef 100644 --- a/scripts/winterm/test-visual-progress.ps1 +++ b/scripts/winterm/test-visual-progress.ps1 @@ -1378,12 +1378,12 @@ try $version = $source.VersionMetadata | ConvertFrom-Json $expectedVersionValues = [ordered]@{ - applicationVersion = '1.3.0-beta1' - packageVersion = '1.3.0.4' + applicationVersion = '1.3.0-beta2' + packageVersion = '1.3.0.5' moduleVersion = '1.3.0' - modulePrerelease = 'beta1' + modulePrerelease = 'beta2' channel = 'beta' - tag = 'v1.3.0-beta1' + tag = 'v1.3.0-beta2' workspaceSchemaVersion = 2 dockingModelVersion = 1 shellProtocolVersion = 1 @@ -1398,39 +1398,39 @@ try } } $shellVersion = $source.ShellVersion | ConvertFrom-Json - if ($shellVersion.applicationVersion -ne '1.3.0-beta1' -or $shellVersion.moduleVersion -ne '1.3.0' -or $shellVersion.protocolVersion -ne 1) + if ($shellVersion.applicationVersion -ne '1.3.0-beta2' -or $shellVersion.moduleVersion -ne '1.3.0' -or $shellVersion.protocolVersion -ne 1) { - throw 'Shell version metadata does not match winTerm release 1.3.0-beta1 with protocol version 1.' + throw 'Shell version metadata does not match winTerm release 1.3.0-beta2 with protocol version 1.' } foreach ($surface in @( - @{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.3.0-beta1" }'; Description = 'About release metadata' }, - @{ Content = $source.PackageManifest; Value = 'Version="1.3.0.4"'; Description = 'MSIX package manifest' }, - @{ Content = $source.HostResource; Value = 'FILEVERSION 1,3,0,4'; Description = 'Terminal host file version' }, - @{ Content = $source.HostResource; Value = '"ProductVersion", "1.3.0-beta1\0"'; Description = 'Terminal host display version' }, - @{ Content = $source.ShimResource; Value = 'FILEVERSION 1,3,0,4'; Description = 'Shim file version' }, - @{ Content = $source.ShimResource; Value = '"ProductVersion", "1.3.0-beta1\0"'; Description = 'Shim display version' }, + @{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.3.0-beta2" }'; Description = 'About release metadata' }, + @{ Content = $source.PackageManifest; Value = 'Version="1.3.0.5"'; Description = 'MSIX package manifest' }, + @{ Content = $source.HostResource; Value = 'FILEVERSION 1,3,0,5'; Description = 'Terminal host file version' }, + @{ Content = $source.HostResource; Value = '"ProductVersion", "1.3.0-beta2\0"'; Description = 'Terminal host display version' }, + @{ Content = $source.ShimResource; Value = 'FILEVERSION 1,3,0,5'; Description = 'Shim file version' }, + @{ Content = $source.ShimResource; Value = '"ProductVersion", "1.3.0-beta2\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.0'"; Description = 'PowerShell module manifest' }, @{ Content = $source.ShellModule; Value = "`$script:WinTermModuleVersion = '1.3.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.0-beta1"'; Description = 'Workspace application-version fallback' } + @{ Content = $source.WorkspaceSerializer; Value = '"1.3.0-beta2"'; Description = 'Workspace application-version fallback' } )) { Assert-Contains $surface.Content $surface.Value $surface.Description } foreach ($required in @( - "applicationVersion -eq '1.3.0-beta1'", - "packageVersion -eq '1.3.0.4'", + "applicationVersion -eq '1.3.0-beta2'", + "packageVersion -eq '1.3.0.5'", "moduleVersion -eq '1.3.0'", - "tag -eq 'v1.3.0-beta1'", + "tag -eq 'v1.3.0-beta2'", "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.0-beta1 version validation surface' + Assert-Contains $source.VerifyVersion $required 'Authoritative v1.3.0-beta2 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 3408af0f9..fcc8887fc 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.3.0' -or - $manifest.PrivateData.PSData.Prerelease -ne 'beta1' -or + $manifest.PrivateData.PSData.Prerelease -ne 'beta2' -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 792a8a452..a4e504562 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.0.4') -Message "$Path uses package version 1.3.0.4" + Test-Requirement -Condition ($null -ne $identity -and $identity.Version -eq '1.3.0.5') -Message "$Path uses package version 1.3.0.5" 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 a9da4a5d3..28ce5f4a2 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.0-beta1') 'Application version is 1.3.0-beta1' - Assert-Condition ($version.packageVersion -eq '1.3.0.4') 'Package version is 1.3.0.4' + Assert-Condition ($version.applicationVersion -eq '1.3.0-beta2') 'Application version is 1.3.0-beta2' + Assert-Condition ($version.packageVersion -eq '1.3.0.5') 'Package version is 1.3.0.5' Assert-Condition ($version.moduleVersion -eq '1.3.0') 'PowerShell module version is 1.3.0' - Assert-Condition ($version.modulePrerelease -eq 'beta1') 'PowerShell module prerelease suffix is beta1' + Assert-Condition ($version.modulePrerelease -eq 'beta2') 'PowerShell module prerelease suffix is beta2' # 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.0-beta1') 'Release tag is v1.3.0-beta1' + Assert-Condition ($version.tag -eq 'v1.3.0-beta2') 'Release tag is v1.3.0-beta2' 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,7 +98,7 @@ 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.0-beta1" }')) 'About metadata application version is 1.3.0-beta1' + Assert-Condition ($releaseHeader.Contains('ApplicationVersion{ L"1.3.0-beta2" }')) 'About metadata application version is 1.3.0-beta2' 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' @@ -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.0-beta1" }')) 'Workspace model application-version fallback is 1.3.0-beta1' + Assert-Condition ((Get-Text 'src\winterm\Workspaces\Model\WorkspaceDescriptor.h').Contains('applicationVersion{ "1.3.0-beta2" }')) 'Workspace model application-version fallback is 1.3.0-beta2' 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.0-beta1"')) 'Workspace serializer application-version fallback is 1.3.0-beta1' + Assert-Condition ((Get-Text 'src\winterm\Workspaces\Persistence\WorkspaceSerializer.cpp').Contains('"1.3.0-beta2"')) 'Workspace serializer application-version fallback is 1.3.0-beta2' $releaseWorkflow = Get-Text '.github\workflows\release.yml' Assert-Condition ($releaseWorkflow.Contains("- 'v*'")) 'Release workflow accepts version tags through a generic guarded trigger' @@ -148,7 +148,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.0-beta1' + Assert-Condition ($LASTEXITCODE -eq 0 -and $tag -eq $version.tag) 'Checked-out commit is exactly tagged v1.3.0-beta2' } 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 9a3bc1bf2..7daf5384a 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 = 'beta1' + Prerelease = 'beta2' 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 77c3383b5..dd69cabf8 100644 --- a/shell/shared/version.json +++ b/shell/shared/version.json @@ -1,6 +1,6 @@ { - "applicationVersion": "1.3.0-beta1", + "applicationVersion": "1.3.0-beta2", "moduleVersion": "1.3.0", - "modulePrerelease": "beta1", + "modulePrerelease": "beta2", "protocolVersion": 1 } diff --git a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest index 02af9f2fa..5b56ab425 100644 --- a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest @@ -18,7 +18,7 @@ + Version="1.3.0.5" /> winTerm diff --git a/src/cascadia/WindowsTerminal/WindowsTerminal.rc b/src/cascadia/WindowsTerminal/WindowsTerminal.rc index 0e0f1ec1c..16da2fc07 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,0,4 - PRODUCTVERSION 1,3,0,4 + FILEVERSION 1,3,0,5 + PRODUCTVERSION 1,3,0,5 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.0.4\0" + VALUE "FileVersion", "1.3.0.5\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.0-beta1\0" + VALUE "ProductVersion", "1.3.0-beta2\0" END END BLOCK "VarFileInfo" diff --git a/src/cascadia/wt/wt.rc b/src/cascadia/wt/wt.rc index b0bd67d11..507b4b34a 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,0,4 - PRODUCTVERSION 1,3,0,4 + FILEVERSION 1,3,0,5 + PRODUCTVERSION 1,3,0,5 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.0.4\0" + VALUE "FileVersion", "1.3.0.5\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.0-beta1\0" + VALUE "ProductVersion", "1.3.0-beta2\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 2f49ab36e..8174833b9 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,0,4 - PRODUCTVERSION 1,3,0,4 + FILEVERSION 1,3,0,5 + PRODUCTVERSION 1,3,0,5 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.0.4\0" + VALUE "FileVersion", "1.3.0.5\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.0-beta1\0" + VALUE "ProductVersion", "1.3.0-beta2\0" END END BLOCK "VarFileInfo" diff --git a/src/winterm/Branding/ReleaseMetadata.h b/src/winterm/Branding/ReleaseMetadata.h index b94e469f7..a93ea91f7 100644 --- a/src/winterm/Branding/ReleaseMetadata.h +++ b/src/winterm/Branding/ReleaseMetadata.h @@ -25,7 +25,7 @@ namespace winTerm::Branding { inline constexpr std::wstring_view Publisher{ L"helloThisWorld" }; - inline constexpr std::wstring_view ApplicationVersion{ L"1.3.0-beta1" }; + inline constexpr std::wstring_view ApplicationVersion{ L"1.3.0-beta2" }; 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 }; diff --git a/src/winterm/Branding/version.json b/src/winterm/Branding/version.json index fdeabb1c7..81ed8bb17 100644 --- a/src/winterm/Branding/version.json +++ b/src/winterm/Branding/version.json @@ -1,10 +1,10 @@ { - "applicationVersion": "1.3.0-beta1", - "packageVersion": "1.3.0.4", + "applicationVersion": "1.3.0-beta2", + "packageVersion": "1.3.0.5", "moduleVersion": "1.3.0", - "modulePrerelease": "beta1", + "modulePrerelease": "beta2", "channel": "beta", - "tag": "v1.3.0-beta1", + "tag": "v1.3.0-beta2", "workspaceSchemaVersion": 2, "dockingModelVersion": 1, "shellProtocolVersion": 1, diff --git a/src/winterm/Workspaces/Model/WorkspaceDescriptor.h b/src/winterm/Workspaces/Model/WorkspaceDescriptor.h index 58933b3e1..22f6dc151 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.0-beta1" }; + std::string applicationVersion{ "1.3.0-beta2" }; 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 8518c102d..19fe75cf5 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.0-beta1"); + workspace.applicationVersion = StringOrDefault(json, "applicationVersion", "1.3.0-beta2"); workspace.protocolVersion = UIntOrDefault(json, "protocolVersion", 1); workspace.dockingModelVersion = UIntOrDefault(json, "dockingModelVersion", DockingModelVersion); if (const auto& startup = json["startupBehavior"]; !startup.isNull())