Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# Changelog

## 1.4.0-beta - 2026-08-13

Beta prerelease of the Pane Search release. Manual validation of
v1.4.0-alpha passed — live search under sustained log output (Kafka /
Spring Boot workloads), match navigation, the counter, and the scrollbar
overview all behaved — so the alpha is promoted to beta with beta version
metadata (package version `1.4.0.1`, prerelease suffix `beta`) and no code
changes. Published as a GitHub prerelease; the new stable v1.3.0 holds
GitHub Latest, and this beta replaces v1.4.0-alpha as the newest published
prerelease. Beta feedback decides the stable 1.4.0 promotion.

## 1.3.0 - 2026-08-13

Stable release of the **Command Timeline** and **Visual Progress**
generation, promoting the field-tested v1.3.0-beta3 build to the stable
channel from the `release/v1.3.0` maintenance branch. GitHub Latest moves
from v1.2.0 to v1.3.0; content is identical to v1.3.0-beta3 apart from the
stable version metadata (package version `1.3.0.7`, no prerelease suffix).
Highlights since v1.2.0: the per-pane Command Timeline (`Ctrl+Tab` or the
left-edge handle) built exclusively from OSC 133 shell integration with
load-without-executing, filtering, copy command/output, jump to output,
and trustworthy ✓/✕/Running status; automatic PowerShell shell
integration for bare `powershell.exe`/`pwsh.exe` profiles; and the Visual
Progress hardening from six prerelease field-testing rounds, including
the bounded one-shot launch fallback for long-running commands.

## 1.4.0-alpha - 2026-08-13

Alpha prerelease: the integration candidate of the Pane Search release,
Expand Down
12 changes: 6 additions & 6 deletions README.ja.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@
最新の安定版リリースページには、インストーラー(Setup EXE)、ポータブルZIP、
リリースノート、チェックサムがまとめて掲載されています。

Pane Search(ペイン検索)を先行して試せる**アルファ版**のプレリリースもあります。
[v1.4.0-alpha](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-alpha)
Pane Search(ペイン検索)を先行して試せる**ベータ版**のプレリリースもあります。
[v1.4.0-beta](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-beta)
はGitHubのプレリリースとして公開されており、資産の構成は安定版と同じです。
プレリリースは動作確認を目的とした配布のため、通常の利用には上記の安定版を推奨します。

Expand All @@ -38,8 +38,8 @@ Microsoft、Windows、Windows Terminalのロゴも使用していません。
- `winTerm-<version>-setup-x64.exe` — 現在のユーザー、または全ユーザーへのインストール用;
- `winTerm-<version>-portable-x64.zip` — 展開してそのまま実行する用。

現在のソースバージョンは `1.4.0-alpha` で、
最新の安定版リリースは `1.2.0` です。公開されている資産の一覧とチェックサムの全体は、
現在のソースバージョンは `1.4.0-beta` で、
最新の安定版リリースは `1.3.0` です。公開されている資産の一覧とチェックサムの全体は、
[最新の公式リリース](https://github.com/HelloThisWorld/winTerm/releases/latest)
を参照してください。

Expand Down Expand Up @@ -111,8 +111,8 @@ PowerShell 7と、[ビルド手順(英語)](docs/build.md)に記載された
.\scripts\winterm\build.ps1 -Configuration Release -Platform x64 -IncludeTests
.\scripts\winterm\test.ps1 -Suite Relevant -Configuration Release -Platform x64
.\scripts\winterm\build-unpackaged.ps1 -Configuration Release -Platform x64
.\scripts\winterm\build-installer.ps1 -Version 1.4.0-alpha -Platform x64
.\scripts\winterm\build-portable.ps1 -Version 1.4.0-alpha -Platform x64
.\scripts\winterm\build-installer.ps1 -Version 1.4.0-beta -Platform x64
.\scripts\winterm\build-portable.ps1 -Version 1.4.0-beta -Platform x64
```

アンパッケージ形式の生成処理では、統合されたリソースインデックスを作るための
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ English | [日本語](README.ja.md)
The latest stable Release page provides the Setup EXE, Portable ZIP, release
notes, and checksums together.

An **alpha** prerelease is also available for early access to Pane Search:
[v1.4.0-alpha](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-alpha)
A **beta** prerelease is also available for early access to Pane Search:
[v1.4.0-beta](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.4.0-beta)
is published as a GitHub prerelease with the same asset layout. Prereleases
are for testing; the stable release above stays the recommended download.

Expand All @@ -36,8 +36,8 @@ application downloads are:
- `winTerm-<version>-setup-x64.exe` — current-user or all-users installation;
- `winTerm-<version>-portable-x64.zip` — extract and run without installation.

The current source version is `1.4.0-alpha`;
the latest stable release is `1.2.0`. See the
The current source version is `1.4.0-beta`;
the latest stable release is `1.3.0`. See the
[latest official Release](https://github.com/HelloThisWorld/winTerm/releases/latest)
for the complete published asset list and checksums.

Expand All @@ -47,7 +47,7 @@ Release. No MSIX certificate, Developer Mode, Visual Studio, Windows SDK, or
`Add-AppxPackage` is required to install a release EXE.

See [installation guidance](docs/user/installation.md) and the
[1.2.0 release notes](docs/releases/1.2.0.md).
[1.3.0 release notes](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0), and the earlier [1.2.0 notes](docs/releases/1.2.0.md).

## Core features

Expand Down Expand Up @@ -105,8 +105,8 @@ Use PowerShell 7 and the Microsoft Terminal toolchain described in
.\scripts\winterm\build.ps1 -Configuration Release -Platform x64 -IncludeTests
.\scripts\winterm\test.ps1 -Suite Relevant -Configuration Release -Platform x64
.\scripts\winterm\build-unpackaged.ps1 -Configuration Release -Platform x64
.\scripts\winterm\build-installer.ps1 -Version 1.4.0-alpha -Platform x64
.\scripts\winterm\build-portable.ps1 -Version 1.4.0-alpha -Platform x64
.\scripts\winterm\build-installer.ps1 -Version 1.4.0-beta -Platform x64
.\scripts\winterm\build-portable.ps1 -Version 1.4.0-beta -Platform x64
```

The unpackaged generator uses an unsigned MSIX only as an upstream build
Expand Down
55 changes: 27 additions & 28 deletions docs/current-progress.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,35 +4,37 @@ Last updated: 2026-08-13

## Repository state

- Branch: `release/v1.4.0-alpha`, based on `main` at
`e436fdf00` (Pane Search Phase 3 checkpoint, pull request #46)
- Branch: `release/v1.4.0-beta`, based on `main` at
`45cf23975` (1.4.0-alpha release metadata, pull request #47)
- Microsoft Terminal upstream revision:
`1cea42d433253d95c4487a3037db48197b5e72f4`
- Application version: `1.4.0-alpha`
- Package/file version: `1.4.0.0`
- PowerShell module version: `1.4.0` with prerelease suffix `alpha`
- Release channel: `alpha` (published as a GitHub prerelease)
- Release tag: `v1.4.0-alpha`. This is not an engineering checkpoint: the
tag runs the full guarded release pipeline (build, compiled tests,
artifact generation, draft asset round-trip testing, then publication as
a prerelease). The checkpoint-tag allowlist is unchanged.
- Current public Latest: `v1.2.0`, the stable Visual Progress release
- Newest published prerelease: `v1.4.0-alpha` (replacing `v1.3.0-beta3`)
- Application version: `1.4.0-beta`
- Package/file version: `1.4.0.1`
- PowerShell module version: `1.4.0` with prerelease suffix `beta`
- Release channel: `beta` (published as a GitHub prerelease)
- Release tag: `v1.4.0-beta`, running the full guarded release pipeline;
the checkpoint-tag allowlist is unchanged.
- Current public Latest: `v1.3.0`, the stable Command Timeline release
(moved from v1.2.0, the Visual Progress stable, on 2026-08-13)
- Newest published prerelease: `v1.4.0-beta` (replacing `v1.4.0-alpha`)
- Supported target: Windows 11 x64

`v1.4.0-alpha` is the integration candidate of the Pane Search release. It
bundles the three engineering checkpoints (`1.3.1`, `1.3.2`, `1.3.3`) for
manual validation. `/releases/latest` keeps resolving to v1.2.0, and WinGet
is not updated for prereleases.
`v1.4.0-beta` is the beta of the Pane Search release. Manual validation of
`v1.4.0-alpha` passed — live search under sustained Kafka/Spring Boot log
output, navigation, the counter, and the scrollbar overview all behaved —
so the alpha content is promoted unchanged with beta metadata.
`/releases/latest` resolves to v1.3.0, and WinGet is not updated for
prereleases.

## Pane Search status (v1.4 roadmap)

- Phase 1 — active-pane search — complete at `1.3.1`.
- Phase 2 — search UX and scrollbar overview — complete at `1.3.2`.
- Phase 3 — performance and edge-case hardening — complete at `1.3.3`.
- Final integration — `1.4.0-alpha` published for manual user validation.
`PASS` promotes to `1.4.0-beta`; `FAIL` produces a fixed `1.4.1-alpha`.
Only the user authorizes the alpha → beta promotion.
- Final integration — `1.4.0-alpha` published 2026-08-13; manual user
validation **passed**.
- Beta — `1.4.0-beta` published for wider testing. Beta feedback decides
the stable `1.4.0` promotion; only the user authorizes it.

Phase 1 made `Ctrl+F` (with the retained `Ctrl+Shift+F` alias) open the
existing Microsoft Terminal search box inside the focused pane only,
Expand Down Expand Up @@ -190,15 +192,12 @@ through pull request #32:

## Next steps

1. Manual user validation of the published `v1.4.0-alpha` prerelease
(typing responsiveness, continuous output, huge match counts, resize
and reflow, split panes, alternate-screen applications, Unicode
queries, rapid open/close). `PASS` promotes to `1.4.0-beta`; `FAIL`
produces a fixed `1.4.1-alpha`. Only the user authorizes the
promotion.
2. Collect Command Timeline and Pane Search beta feedback; promote a
stable release only after beta testing, which is the point at which
Latest, WinGet, and the website stable slot move.
1. Collect Pane Search feedback on the published `v1.4.0-beta`
prerelease; promote a stable `1.4.0` only after beta testing. Only the
user authorizes the promotion, which is the point at which Latest,
WinGet, and the website stable slot move to 1.4.0.
2. Keep the winTerm website's stable slot (v1.3.0) and prerelease slot
(v1.4.0-beta) in sync with GitHub Releases.

## Validation state

Expand Down
61 changes: 61 additions & 0 deletions docs/releases/1.4.0-beta.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# winTerm 1.4.0-beta

**This is a beta prerelease.** The current stable release is
[v1.3.0](https://github.com/HelloThisWorld/winTerm/releases/tag/v1.3.0),
and `/releases/latest` points there. The beta is published as a GitHub
prerelease with the standard asset layout; it is not submitted to WinGet.

winTerm 1.4.0-beta is the beta of the **Pane Search** release. Manual
validation of v1.4.0-alpha passed — live search under sustained log
output (Kafka / Spring Boot workloads), match navigation, the counter,
and the scrollbar overview — so the alpha build is promoted unchanged
with beta version metadata.

## Pane Search

`Ctrl+F` opens Find in the **active pane only** (`Ctrl+Shift+F` stays as
a compatibility alias; both chords are remappable). The proven Microsoft
Terminal search pipeline is reused end to end — no second engine, no
index, no buffer duplication.

- **Search that follows your typing.** Results update live while you
type, across the pane's entire scrollback, with every match
highlighted at once. `Enter` / `Shift+Enter` step through matches with
wrap-around; case-sensitive and regular-expression modes are one
toggle away; `Esc` closes and returns focus to the shell.
- **The winTerm search box.** Compact overlay with a search glyph, the
input, a `current / total` match counter, case/regex toggles,
previous/next, and close — adapting to narrow panes while always
keeping the input and the close button usable.
- **A scrollbar search overview.** One marker per matching buffer row
across the full scrollback, the current match's row emphasized at
double width, independent of the `showMarksOnScrollbar` setting, and
fully pane-local in splits.
- **Built for real workloads.** Coalesced live typing, convergence while
output streams continuously (`tail -f`, dev servers, Kafka logs),
bounded scrollbar repainting with huge match counts, and deterministic
safety across pane resize/reflow, scrollback eviction,
alternate-screen applications, wide characters (CJK, emoji), and
invalid regular expressions.

## Everything in v1.3.0 is included

The Command Timeline, automatic PowerShell shell integration, Visual
Progress, Workspaces, pane management, themes, and portable mode ship
unchanged from the new stable release.

## Downloads

- `winTerm-1.4.0-beta-setup-x64.exe` — current-user or all-users
installation.
- `winTerm-1.4.0-beta-portable-x64.zip` — extract and run without
installation (creates `portable.marker` alongside the executable).
- `SHA256SUMS.txt` — checksums for both application assets; verify
before running.

Upgrading from any earlier version installs over the existing
installation and keeps settings, themes, workspaces, and snapshots.

Requires Windows 11 x64. winTerm is an independent open-source project
based on Microsoft Terminal source code; it is not a Microsoft product
and is not affiliated with or endorsed by Microsoft.
4 changes: 2 additions & 2 deletions scripts/winterm/package-shell-assets.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ foreach ($relativePath in $sourceAssets)

$version = Get-Content -LiteralPath (Join-Path $repositoryRoot 'shell\shared\version.json') -Raw | ConvertFrom-Json
if ($version.moduleVersion -ne '1.4.0' -or
$version.modulePrerelease -ne 'alpha' -or
$version.applicationVersion -ne '1.4.0-alpha' -or
$version.modulePrerelease -ne 'beta' -or
$version.applicationVersion -ne '1.4.0-beta' -or
$version.protocolVersion -ne 1)
{
throw 'The winTerm Shell asset version metadata is invalid.'
Expand Down
36 changes: 18 additions & 18 deletions scripts/winterm/test-visual-progress.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -1431,12 +1431,12 @@ try

$version = $source.VersionMetadata | ConvertFrom-Json
$expectedVersionValues = [ordered]@{
applicationVersion = '1.4.0-alpha'
packageVersion = '1.4.0.0'
applicationVersion = '1.4.0-beta'
packageVersion = '1.4.0.1'
moduleVersion = '1.4.0'
modulePrerelease = 'alpha'
channel = 'alpha'
tag = 'v1.4.0-alpha'
modulePrerelease = 'beta'
channel = 'beta'
tag = 'v1.4.0-beta'
workspaceSchemaVersion = 2
dockingModelVersion = 1
shellProtocolVersion = 1
Expand All @@ -1451,39 +1451,39 @@ try
}
}
$shellVersion = $source.ShellVersion | ConvertFrom-Json
if ($shellVersion.applicationVersion -ne '1.4.0-alpha' -or $shellVersion.moduleVersion -ne '1.4.0' -or $shellVersion.protocolVersion -ne 1)
if ($shellVersion.applicationVersion -ne '1.4.0-beta' -or $shellVersion.moduleVersion -ne '1.4.0' -or $shellVersion.protocolVersion -ne 1)
{
throw 'Shell version metadata does not match winTerm version 1.4.0-alpha with protocol version 1.'
throw 'Shell version metadata does not match winTerm version 1.4.0-beta with protocol version 1.'
}
foreach ($surface in @(
@{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.4.0-alpha" }'; Description = 'About release metadata' },
@{ Content = $source.PackageManifest; Value = 'Version="1.4.0.0"'; Description = 'MSIX package manifest' },
@{ Content = $source.HostResource; Value = 'FILEVERSION 1,4,0,0'; Description = 'Terminal host file version' },
@{ Content = $source.HostResource; Value = '"ProductVersion", "1.4.0-alpha\0"'; Description = 'Terminal host display version' },
@{ Content = $source.ShimResource; Value = 'FILEVERSION 1,4,0,0'; Description = 'Shim file version' },
@{ Content = $source.ShimResource; Value = '"ProductVersion", "1.4.0-alpha\0"'; Description = 'Shim display version' },
@{ Content = $source.ReleaseMetadata; Value = 'ApplicationVersion{ L"1.4.0-beta" }'; Description = 'About release metadata' },
@{ Content = $source.PackageManifest; Value = 'Version="1.4.0.1"'; Description = 'MSIX package manifest' },
@{ Content = $source.HostResource; Value = 'FILEVERSION 1,4,0,1'; Description = 'Terminal host file version' },
@{ Content = $source.HostResource; Value = '"ProductVersion", "1.4.0-beta\0"'; Description = 'Terminal host display version' },
@{ Content = $source.ShimResource; Value = 'FILEVERSION 1,4,0,1'; Description = 'Shim file version' },
@{ Content = $source.ShimResource; Value = '"ProductVersion", "1.4.0-beta\0"'; Description = 'Shim display version' },
@{ Content = $source.CustomProps; Value = '<VersionMajor>1</VersionMajor>'; Description = 'Executable major version' },
@{ Content = $source.CustomProps; Value = '<VersionMinor>4</VersionMinor>'; Description = 'Executable minor version' },
@{ Content = $source.ShellModuleManifest; Value = "ModuleVersion = '1.4.0'"; Description = 'PowerShell module manifest' },
@{ Content = $source.ShellModule; Value = "`$script:WinTermModuleVersion = '1.4.0'"; Description = 'PowerShell module runtime' },
@{ Content = $source.PackageShellAssets; Value = "'shell\shared\version.json'"; Description = 'Canonical shell version metadata packaging' },
@{ Content = $source.WorkspaceSerializer; Value = '"1.4.0-alpha"'; Description = 'Workspace application-version fallback' }
@{ Content = $source.WorkspaceSerializer; Value = '"1.4.0-beta"'; Description = 'Workspace application-version fallback' }
))
{
Assert-Contains $surface.Content $surface.Value $surface.Description
}
foreach ($required in @(
"applicationVersion -eq '1.4.0-alpha'",
"packageVersion -eq '1.4.0.0'",
"applicationVersion -eq '1.4.0-beta'",
"packageVersion -eq '1.4.0.1'",
"moduleVersion -eq '1.4.0'",
"tag -eq 'v1.4.0-alpha'",
"tag -eq 'v1.4.0-beta'",
"Workspace Schema version remains 2",
"Docking Model version remains 1",
"Shell Protocol version remains 1",
"Theme Schema remains at version 1"
))
{
Assert-Contains $source.VerifyVersion $required 'Authoritative v1.4.0-alpha version validation surface'
Assert-Contains $source.VerifyVersion $required 'Authoritative v1.4.0-beta version validation surface'
}

$testBinary = Join-Path $root "bin\$Platform\$Configuration\UnitTests_SettingsModel\SettingsModel.Unit.Tests.dll"
Expand Down
2 changes: 1 addition & 1 deletion scripts/winterm/test.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ function Test-ShellExperienceFoundations

$manifest = Import-PowerShellDataFile -LiteralPath $moduleManifest
if ($manifest.ModuleVersion -ne '1.4.0' -or
$manifest.PrivateData.PSData.Prerelease -ne 'alpha' -or
$manifest.PrivateData.PSData.Prerelease -ne 'beta' -or
$manifest.PowerShellVersion -ne '5.1')
{
throw 'The winTerm PowerShell module manifest does not declare the supported version boundary.'
Expand Down
2 changes: 1 addition & 1 deletion scripts/winterm/verify-branding.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ function Test-Manifest
Test-Requirement -Condition ($null -ne $identity -and $identity.Name -eq 'HelloThisWorld.winTerm') -Message "$Path uses package identity HelloThisWorld.winTerm"
Test-Requirement -Condition ($null -ne $identity -and $identity.Name -notmatch '^Microsoft\.') -Message "$Path does not use a Microsoft package name"
Test-Requirement -Condition ($null -ne $identity -and $identity.Publisher -ceq $ExpectedPublisher) -Message "$Path uses the expected non-Microsoft publisher"
Test-Requirement -Condition ($null -ne $identity -and $identity.Version -eq '1.4.0.0') -Message "$Path uses package version 1.4.0.0"
Test-Requirement -Condition ($null -ne $identity -and $identity.Version -eq '1.4.0.1') -Message "$Path uses package version 1.4.0.1"
Test-Requirement -Condition ($null -ne $properties -and $properties.DisplayName -eq 'winTerm') -Message "$Path package display name is winTerm"
Test-Requirement -Condition ($null -ne $application -and $application.Id -eq 'winTerm') -Message "$Path application ID is winTerm"
Test-Requirement -Condition ($null -ne $visualElements -and $visualElements.DisplayName -eq 'winTerm') -Message "$Path application display name is winTerm"
Expand Down
Loading