diff --git a/CHANGELOG.md b/CHANGELOG.md index 763e1f8bb..6f972fdd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## Unreleased +## 1.3.0-beta3 - 2026-08-05 + +Third beta of the Command Timeline release, fixing the beta2 field report +that long-running commands animate the Visual Progress bar forever. Like the +earlier betas, 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 @@ -22,6 +27,11 @@ the success/error/cancelled result presentations keep their existing behavior. +### Changed + +- Advanced the beta: application version `1.3.0-beta3`, package/file version + `1.3.0.6`, PowerShell module `1.3.0` with prerelease suffix `beta3`. + ## 1.3.0-beta2 - 2026-08-04 diff --git a/README.md b/README.md index 666fe75d7..a640cff0c 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-beta2](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0-beta2) +[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. @@ -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-beta2`; +The current source version is `1.3.0-beta3`; 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-beta2 -Platform x64 -.\scripts\winterm\build-portable.ps1 -Version 1.3.0-beta2 -Platform x64 +.\scripts\winterm\build-installer.ps1 -Version 1.3.0-beta3 -Platform x64 +.\scripts\winterm\build-portable.ps1 -Version 1.3.0-beta3 -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 c5e8d432c..9448828f9 100644 --- a/docs/current-progress.md +++ b/docs/current-progress.md @@ -1,30 +1,33 @@ # Current development progress -Last updated: 2026-08-04 +Last updated: 2026-08-05 ## Repository state -- Branch: `release/1.3.0-beta2` -- Base branch: `main` at `a6ec9a415` (prompt exit code fix, pull request - #39) +- Branch: `release/v1.3.0-beta3` +- Base: `fix/visual-progress-shell-fallback-one-shot` at `baf6f8a87` + (one-shot launch fallback fix, pull request #41), based on `main` at + `39193206c` (1.3.0-beta2 release metadata, pull request #40) - Microsoft Terminal upstream revision: `1cea42d433253d95c4487a3037db48197b5e72f4` -- Application version: `1.3.0-beta2` -- Package/file version: `1.3.0.5` -- PowerShell module version: `1.3.0` with prerelease suffix `beta2` +- Application version: `1.3.0-beta3` +- Package/file version: `1.3.0.6` +- PowerShell module version: `1.3.0` with prerelease suffix `beta3` - Release channel: `beta` -- Release tag: `v1.3.0-beta2` +- Release tag: `v1.3.0-beta3` - Current public Latest: `v1.2.0`, the stable Visual Progress release - Supported target: Windows 11 x64 -`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. +`v1.3.0-beta3` is the third beta of the Command Timeline release. It fixes +the beta2 field report that any long-running command — k9s, vim, top, +FastAPI/uvicorn, Spring Boot, Node dev servers, `tail -f`, +`kubectl port-forward` — kept the Visual Progress rainbow animation looping +for its whole lifetime. The OSC 133 Shell Integration fallback is now a +bounded one-shot launch indication scoped by a shell command generation. The +release workflow marks any non-stable channel with `--prerelease` and +`--latest=false`, so `/releases/latest` keeps resolving to v1.2.0. Like the +earlier betas, it is listed on the winTerm website next to the stable v1.2.0 +download and is skipped by the WinGet workflow. ## Command Timeline status @@ -51,6 +54,24 @@ 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`. +## Beta2 findings + +Field testing the published beta2 build with long-running processes surfaced +one defect, fixed through pull request #41 and carried by this release +branch: + +1. The Shell Integration fallback animated forever for any command that + intentionally stays running (Alternate Screen TUIs, development servers, + `tail -f`). The fallback is now a bounded one-shot launch indication: the + comet plays one 1,800 ms traversal driven by a one-shot compositor batch + (no timer, no polling loop), then the overlay hides with a silent + Hidden/Running snapshot. The expiration is command-generation scoped, so + stale completions cannot affect a newer command, alternate-screen churn + cannot replay a consumed launch, and an expired fallback cannot resurrect + after a provider or explicit OSC 9;4 owner clears. Explicit progress, + recognized providers, short commands, and the result presentations are + unchanged. + ## Beta1 findings Producing the sanitized website screenshots against the published beta1 diff --git a/docs/releases/1.3.0-beta3.md b/docs/releases/1.3.0-beta3.md new file mode 100644 index 000000000..bda2f87ad --- /dev/null +++ b/docs/releases/1.3.0-beta3.md @@ -0,0 +1,189 @@ +# winTerm 1.3.0-beta3 + +**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-beta3 is the third beta of the **Command Timeline** release. +It fixes one Visual Progress defect reported from beta2 field testing and is +otherwise identical to beta2. + +## Fixed since 1.3.0-beta2 + +- **Long-running commands no longer animate the progress bar forever.** Any + command without a real progress source used to keep the Visual Progress + rainbow animation looping until it exited — effectively forever for + Alternate Screen applications (k9s, vim, top, htop), development servers + (FastAPI/uvicorn, Spring Boot, Node.js), `tail -f`, and + `kubectl port-forward`. The OSC 133 launch fallback is now a bounded + one-shot launch indication: the comet makes one traversal, then the overlay + disappears and releases its animation resources while the command keeps + printing output normally. Entering or leaving the Alternate Screen, + resizing, or switching tabs does not replay it, and the eventual real + result still shows the normal success, error, or cancelled presentation. + Explicit OSC 9;4 progress, recognized CLI providers (Docker, pip, Git, + curl, wget, npm/pnpm/yarn, nvm, Maven, Gradle), and short-lived commands + keep their existing behavior, and no command-name or process-name matching + is involved. Screen readers hear neither a fake completion nor a fake + cancellation when the launch indication ends. + +## 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. Visual Progress settings are +unchanged; the bounded launch behavior needs no new setting. + +## 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. +- beta3: the Shell Integration launch fallback is a bounded one-shot, so + long-running commands no longer animate the progress bar forever. + +## 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 keeps its v1.2.0 semantics for +explicit progress, recognized providers, determinate values, and the +success/error/cancelled presentations; only the generic launch fallback is +now bounded as described 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.6`. Package identity stays separate from Microsoft +Terminal, so it does not disturb an existing Windows Terminal installation. + +Publisher: `helloThisWorld`. Tag: `v1.3.0-beta3`. + +## Signing + +The winTerm 1.3.0-beta3 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 e566a3187..87025cd16 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 'beta2' -or - $version.applicationVersion -ne '1.3.0-beta2' -or + $version.modulePrerelease -ne 'beta3' -or + $version.applicationVersion -ne '1.3.0-beta3' -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 5145a6ba3..890af4b60 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.0-beta2' - packageVersion = '1.3.0.5' + applicationVersion = '1.3.0-beta3' + packageVersion = '1.3.0.6' moduleVersion = '1.3.0' - modulePrerelease = 'beta2' + modulePrerelease = 'beta3' channel = 'beta' - tag = 'v1.3.0-beta2' + tag = 'v1.3.0-beta3' workspaceSchemaVersion = 2 dockingModelVersion = 1 shellProtocolVersion = 1 @@ -1451,39 +1451,39 @@ try } } $shellVersion = $source.ShellVersion | ConvertFrom-Json - if ($shellVersion.applicationVersion -ne '1.3.0-beta2' -or $shellVersion.moduleVersion -ne '1.3.0' -or $shellVersion.protocolVersion -ne 1) + if ($shellVersion.applicationVersion -ne '1.3.0-beta3' -or $shellVersion.moduleVersion -ne '1.3.0' -or $shellVersion.protocolVersion -ne 1) { - throw 'Shell version metadata does not match winTerm release 1.3.0-beta2 with protocol version 1.' + throw 'Shell version metadata does not match winTerm release 1.3.0-beta3 with protocol version 1.' } foreach ($surface in @( - @{ 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.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.3.0-beta3" }'; Description = 'About release metadata' }, + @{ Content = $source.PackageManifest; Value = 'Version="1.3.0.6"'; Description = 'MSIX package manifest' }, + @{ Content = $source.HostResource; Value = 'FILEVERSION 1,3,0,6'; Description = 'Terminal host file version' }, + @{ Content = $source.HostResource; Value = '"ProductVersion", "1.3.0-beta3\0"'; Description = 'Terminal host display version' }, + @{ Content = $source.ShimResource; Value = 'FILEVERSION 1,3,0,6'; Description = 'Shim file version' }, + @{ Content = $source.ShimResource; Value = '"ProductVersion", "1.3.0-beta3\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-beta2"'; Description = 'Workspace application-version fallback' } + @{ Content = $source.WorkspaceSerializer; Value = '"1.3.0-beta3"'; Description = 'Workspace application-version fallback' } )) { Assert-Contains $surface.Content $surface.Value $surface.Description } foreach ($required in @( - "applicationVersion -eq '1.3.0-beta2'", - "packageVersion -eq '1.3.0.5'", + "applicationVersion -eq '1.3.0-beta3'", + "packageVersion -eq '1.3.0.6'", "moduleVersion -eq '1.3.0'", - "tag -eq 'v1.3.0-beta2'", + "tag -eq 'v1.3.0-beta3'", "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-beta2 version validation surface' + Assert-Contains $source.VerifyVersion $required 'Authoritative v1.3.0-beta3 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 fcc8887fc..edf9d94a4 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 'beta2' -or + $manifest.PrivateData.PSData.Prerelease -ne 'beta3' -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 a4e504562..46aaa77da 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.5') -Message "$Path uses package version 1.3.0.5" + Test-Requirement -Condition ($null -ne $identity -and $identity.Version -eq '1.3.0.6') -Message "$Path uses package version 1.3.0.6" 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 28ce5f4a2..179c92e95 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-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.applicationVersion -eq '1.3.0-beta3') 'Application version is 1.3.0-beta3' + Assert-Condition ($version.packageVersion -eq '1.3.0.6') 'Package version is 1.3.0.6' Assert-Condition ($version.moduleVersion -eq '1.3.0') 'PowerShell module version is 1.3.0' - Assert-Condition ($version.modulePrerelease -eq 'beta2') 'PowerShell module prerelease suffix is beta2' + Assert-Condition ($version.modulePrerelease -eq 'beta3') 'PowerShell module prerelease suffix is beta3' # 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-beta2') 'Release tag is v1.3.0-beta2' + Assert-Condition ($version.tag -eq 'v1.3.0-beta3') 'Release tag is v1.3.0-beta3' 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-beta2" }')) 'About metadata application version is 1.3.0-beta2' + Assert-Condition ($releaseHeader.Contains('ApplicationVersion{ L"1.3.0-beta3" }')) 'About metadata application version is 1.3.0-beta3' 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-beta2" }')) 'Workspace model application-version fallback is 1.3.0-beta2' + Assert-Condition ((Get-Text 'src\winterm\Workspaces\Model\WorkspaceDescriptor.h').Contains('applicationVersion{ "1.3.0-beta3" }')) 'Workspace model application-version fallback is 1.3.0-beta3' 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-beta2"')) 'Workspace serializer application-version fallback is 1.3.0-beta2' + Assert-Condition ((Get-Text 'src\winterm\Workspaces\Persistence\WorkspaceSerializer.cpp').Contains('"1.3.0-beta3"')) 'Workspace serializer application-version fallback is 1.3.0-beta3' $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-beta2' + Assert-Condition ($LASTEXITCODE -eq 0 -and $tag -eq $version.tag) 'Checked-out commit is exactly tagged v1.3.0-beta3' } 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 7daf5384a..5428bd543 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 = 'beta2' + Prerelease = 'beta3' 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 dd69cabf8..fe072a0ba 100644 --- a/shell/shared/version.json +++ b/shell/shared/version.json @@ -1,6 +1,6 @@ { - "applicationVersion": "1.3.0-beta2", + "applicationVersion": "1.3.0-beta3", "moduleVersion": "1.3.0", - "modulePrerelease": "beta2", + "modulePrerelease": "beta3", "protocolVersion": 1 } diff --git a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest index 5b56ab425..35c602499 100644 --- a/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest +++ b/src/cascadia/CascadiaPackage/Package-winTerm.appxmanifest @@ -18,7 +18,7 @@ + Version="1.3.0.6" /> winTerm diff --git a/src/cascadia/WindowsTerminal/WindowsTerminal.rc b/src/cascadia/WindowsTerminal/WindowsTerminal.rc index 16da2fc07..fd81c8855 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,5 - PRODUCTVERSION 1,3,0,5 + FILEVERSION 1,3,0,6 + PRODUCTVERSION 1,3,0,6 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.5\0" + VALUE "FileVersion", "1.3.0.6\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-beta2\0" + VALUE "ProductVersion", "1.3.0-beta3\0" END END BLOCK "VarFileInfo" diff --git a/src/cascadia/wt/wt.rc b/src/cascadia/wt/wt.rc index 507b4b34a..9ca4e210d 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,5 - PRODUCTVERSION 1,3,0,5 + FILEVERSION 1,3,0,6 + PRODUCTVERSION 1,3,0,6 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.5\0" + VALUE "FileVersion", "1.3.0.6\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-beta2\0" + VALUE "ProductVersion", "1.3.0-beta3\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 8174833b9..d221c720a 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,5 - PRODUCTVERSION 1,3,0,5 + FILEVERSION 1,3,0,6 + PRODUCTVERSION 1,3,0,6 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.5\0" + VALUE "FileVersion", "1.3.0.6\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-beta2\0" + VALUE "ProductVersion", "1.3.0-beta3\0" END END BLOCK "VarFileInfo" diff --git a/src/winterm/Branding/ReleaseMetadata.h b/src/winterm/Branding/ReleaseMetadata.h index a93ea91f7..d4681f444 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-beta2" }; + inline constexpr std::wstring_view ApplicationVersion{ L"1.3.0-beta3" }; 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 81ed8bb17..99082cd9f 100644 --- a/src/winterm/Branding/version.json +++ b/src/winterm/Branding/version.json @@ -1,10 +1,10 @@ { - "applicationVersion": "1.3.0-beta2", - "packageVersion": "1.3.0.5", + "applicationVersion": "1.3.0-beta3", + "packageVersion": "1.3.0.6", "moduleVersion": "1.3.0", - "modulePrerelease": "beta2", + "modulePrerelease": "beta3", "channel": "beta", - "tag": "v1.3.0-beta2", + "tag": "v1.3.0-beta3", "workspaceSchemaVersion": 2, "dockingModelVersion": 1, "shellProtocolVersion": 1, diff --git a/src/winterm/Workspaces/Model/WorkspaceDescriptor.h b/src/winterm/Workspaces/Model/WorkspaceDescriptor.h index 22f6dc151..68686acbf 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-beta2" }; + std::string applicationVersion{ "1.3.0-beta3" }; 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 19fe75cf5..99ab22803 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-beta2"); + workspace.applicationVersion = StringOrDefault(json, "applicationVersion", "1.3.0-beta3"); workspace.protocolVersion = UIntOrDefault(json, "protocolVersion", 1); workspace.dockingModelVersion = UIntOrDefault(json, "dockingModelVersion", DockingModelVersion); if (const auto& startup = json["startupBehavior"]; !startup.isNull())