-
Notifications
You must be signed in to change notification settings - Fork 0
Development Changes
HelloThisWorld edited this page Aug 27, 2026
·
33 revisions
This ledger maps winTerm source changes to their durable GitHub records and the Wiki pages synchronized with them. Source commits remain authoritative; the Wiki explains their user-visible and engineering effect.
-
Source:
9d34c790545f0ccc2b9c043279726804de806660 - Pull request: #52 — fix: restore reliable click-to-position cursor in 1.4.3
-
Merged source:
bcfbe0e6d20432c60ed8ab6f85b56e8e278ca8f5 -
Branch:
fix/v1.4.3-click-position, based onmainat0ee3adcb63c9cb028a44badeddb0362db38fa5f7. -
Release: v1.4.3 — winTerm 1.4.3,
published 2026-08-27 01:19:38 UTC as stable, non-draft, non-prerelease, and
GitHub Latest. The annotated
v1.4.3tag resolves to the exact mergedmaincommitbcfbe0e6d20432c60ed8ab6f85b56e8e278ca8f5. -
Bug and root cause: normal sub-threshold physical pointer jitter could
make Click to position cursor intermittent, and one rejected gesture could
poison later clicks.
PointerMovedasked Core to extend a selection even when no drag selection existed; Core correctly ignored the request, but Interactivity still marked selection-copy state dirty.PointerReleasedthen treated that unrelated state as a reason to reject cursor positioning, and the stale value could survive into later gestures. - Fix: selection-end updates now start only after the existing drag threshold is crossed or while a drag already exists. Core reports whether an update actually changed a selection, CopyOnSelect state becomes dirty only for that real update, and release-time cursor repositioning is governed by its own pending gesture state while no-selection releases normalize stale copy state. Existing hyperlink, VT mouse, multi-click, Shift+Click, selection, coordinate, editable-range, full-width-glyph, and split-pane precedence and safety checks remain intact.
- Regression coverage: focused cursor-reposition tests pass 11/11, including sub-threshold jitter, several and repeated clicks, poisoned-state recovery, threshold boundaries, CopyOnSelect ownership, and stale-state recovery. Debug suites pass SettingsModel 245/245, TerminalApp 51/51, and TerminalControl 100/100; the same three Release suites also pass. Full x64 Release application/test build, smoke, version, branding, source-boundary, and staged-layout validation pass. Supplemental OS-injected real-window validation passed 30/30 insertion/readback clicks with actual one-pixel motion plus paced drag, double-click word, and triple-click line selection.
-
Formal release workflow: run 33027002544
passed exact-source guards, full x64 Release build and compiled tests,
current-user/all-users installer lifecycle tests, Portable verification,
attestations, Draft asset round-trip, publication, and public asset
round-trip. The public Release contains exactly eight allowlisted assets;
independent anonymous re-download verified all checksums, layouts, metadata,
SBOMs, notes, and the explicitly unsigned installer state. GitHub
/releases/latestresolves tov1.4.3. -
Manual release gate: physical-mouse validation and five clean prompt
lifecycles remain explicitly NOT RUN. Pull request #52 was created as a
Draft without the
buildlabel, then merged by the repository owner before this gate completed. The repository owner subsequently authorized Release and website publication; this authorization does not convert the unrun physical/manual scenarios into a PASS. -
Website: winterm-site PR #13
merged as
71de156486029d151d2447a823e708468f5ce7bd. winterm.dev and its Japanese homepage/changelog now show 1.4.3, the real asset URLs and publication date, focused regression notes, current application-asset download counts, and a calendar-month NEW expiry of 2026-11-27 01:19:38 UTC. Site CI, Cloudflare Pages, browser checks, SEO/structured data, sitemap, robots, and public HTTP verification pass. - Documentation: release notes, repository changelog, and current progress.
-
Source:
74ac41f62ba26d603ccde0c39acbcaed33e15e98 - Pull request: #51 — release: winTerm 1.4.2 stable
-
Merged source:
0ee3adcb63c9cb028a44badeddb0362db38fa5f7 -
Branch:
codex/release-v1.4.2, based onmainat09dc76796725d9b7bd7b0d86a28196bce14698c7. -
Release intent: stable
1.4.2/ package1.4.2.0/ module1.4.2with no prerelease suffix / intended tagv1.4.2. -
Reason: the immutable
v1.4.1tag completed its build, compiled tests, packaging, installer/Portable lifecycle tests, checksum coverage, and exact asset allowlist, but publication stopped before attestations or GitHub Release creation because the notes used## Signing noticerather than the verifier's canonical## Signingheading. Repository safeguards prohibit moving or replacing a published tag, so the corrected candidate advances to a new patch version. - Summary: preserves the fully validated Pane Search and Click to position cursor application payload while synchronizing every application, package, module, Windows resource, workspace fallback, README, release note, changelog, progress, and validation surface to 1.4.2. The notes retain exactly one unsigned-installer disclosure and the SmartScreen guidance.
- Validation: version consistency, branding, Visual Progress source boundaries, release-workflow security, privacy, whitespace, and the complete Smoke suite pass locally. The pull-request and guarded tag workflows remain authoritative for the rebuilt x64 Release binaries and public asset round-trip.
- Documentation: release notes, repository changelog, and current progress.
-
Source:
2dbd0bfe86292fc377e279b8556c20e69b7cf247 - Pull request: #50 — release: winTerm 1.4.1 stable
-
Merged source:
09dc76796725d9b7bd7b0d86a28196bce14698c7 -
Branch:
codex/release-v1.4.1, based onmainat63c52f538abc29d434077c60acfc5e4aafe95d1b. -
Release intent: stable
1.4.1/ package1.4.1.0/ module1.4.1with no prerelease suffix / intended tagv1.4.1. This candidate promotes the complete Pane Search development line and Click to position cursor as stable features; the guarded tag workflow remains authoritative for the final public build, asset round trip, attestation, and GitHub Latest state. -
Summary: makes plain single-click cursor positioning a release-time
action after the established drag threshold, preserves selection,
Ctrl+Click hyperlink, and VT mouse precedence, restricts movement to a
trustworthy current OSC 133 command, validates every coordinate before
TextBuffer access, and counts full-width glyphs as one shell character. The
winTerm-branded default is enabled while explicit user
falsesettings and generic Microsoft Terminal defaults remain unchanged. English and Japanese Settings resources, stable release/version metadata, READMEs, changelog, release notes, shortcuts, and progress records move together to 1.4.1. -
Upstream provenance: safety intent reviewed from Microsoft Terminal PR
#20442, merged as
de3fc87d186e5da1d5ccd8731412905f5e2aba30; later upstream history was audited for directly related cursor-reposition fixes without performing a broad upstream merge. - Validation: Debug x64 package and the Settings Model, Terminal App, and Control test projects build cleanly; compiled suites pass 381/381, 51/51, and 93/93 respectively. Relevant, Smoke, Visual Progress source, version, branding, and whitespace gates pass. Interactive multi-shell GUI exercises remain a separately reported manual-validation boundary.
- Documentation: release notes, repository changelog, and current progress.
-
Source:
63c52f538(pull request #48) -
Version intent: published GitHub prerelease
1.4.0-betaon the beta channel — package version1.4.0.1, module1.4.0with suffixbeta, tagv1.4.0-beta. Manual validation of v1.4.0-alpha passed (live search under sustained Kafka/Spring Boot log output, navigation, counter, scrollbar overview), so the alpha content is promoted unchanged with beta metadata. The same guarded pipeline published it; the new stable v1.3.0 holds Latest, and this beta replaces v1.4.0-alpha as the newest prerelease. The stable pointers onmain(READMEs, CHANGELOG assertion, verify-version) moved from 1.2.0 to 1.3.0 in the same pull request. -
Summary: Pane Search for wider testing —
Ctrl+Factive-pane live search across the entire scrollback with all-match highlighting, wrap-around navigation, case/regex modes, the winTerm compact search box with thecurrent / totalcounter, the scrollbar match overview, and the Phase 3 hardening for sustained output, huge match counts, resize/reflow, alternate screens, and Unicode. Beta feedback decides the stable 1.4.0 promotion. - Wiki pages synchronized: Changelog.
-
Source:
79f4c8033on therelease/v1.3.0maintenance branch (from thev1.3.0-beta3tree atfeb2687e5; merged intomainhistory through pull request #49) -
Version intent: stable release
1.3.0— package version1.3.0.7, no prerelease suffix, channelstable,ReleaseChannel Stable. Content is identical to the field-tested v1.3.0-beta3; only the version metadata changed. The full guarded release pipeline built, round-trip-tested, attested, and published the assets, and GitHub Latest moved from v1.2.0 to v1.3.0. - Summary: the Command Timeline generation reaches stable — per-pane OSC 133 command history with load-without-executing, filtering, copy command/output, jump to output, and trustworthy status; automatic PowerShell shell integration; and the Visual Progress hardening from six prerelease field rounds, including the bounded one-shot launch fallback.
- Wiki pages synchronized: Changelog.
-
Source:
45cf23975(pull request #47) -
Branch:
release/v1.4.0-alpha, based onmainate436fdf00(Pane Search Phase 3 checkpoint, pull request #46) -
Version intent: published GitHub prerelease
1.4.0-alphaon the alpha channel — package version1.4.0.0, module1.4.0with prerelease suffixalpha, executable metadata1.4, tagv1.4.0-alpha. Unlike the engineering checkpoints, the tag runs the full guarded release pipeline (x64 Release build with compiled tests, artifact generation, draft asset re-download and installer/portable round-trip testing, attestation, then publication with--prerelease --latest=false). GitHub Latest keeps pointing at v1.2.0; WinGet is untouched; v1.4.0-alpha replaces v1.3.0-beta3 as the newest published prerelease. -
Summary: the integration candidate bundling the three Pane Search
engineering checkpoints — Phase 1 active-pane
Ctrl+Fsearch (v1.3.1), Phase 2 winTerm search box and scrollbar overview (v1.3.2), and Phase 3 performance/edge-case hardening (v1.3.3) — on top of everything in v1.3.0-beta3, published for hands-on manual validation. APASSverdict promotes the build to1.4.0-beta; aFAILproduces a fixed1.4.1-alpha. Only the user authorizes the promotion. -
Wiki pages synchronized: Changelog mirrors the canonical
CHANGELOG.mdentry for 1.4.0-alpha.
-
Source:
cc8f82774(pull request #46) -
Branch:
feature/v1.3.3-pane-search-phase3, based onmainat97ecb7e85(Pane Search Phase 2 checkpoint, pull request #45) -
Version intent: engineering checkpoint
1.3.3, same mechanism as v1.3.1/v1.3.2: stable channel, no prerelease suffix, package version1.3.3.0, andv1.3.3appended to the release workflow's checkpoint-tag lists so a pushed checkpoint tag runs quick validation only. Not a published release; Latest and WinGet keep pointing at v1.2.0, and v1.3.0-beta3 remains the newest published prerelease. -
Summary: no new search feature and no visual change — Phase 3 makes
the Phase 1/2 pane search reliable under real workloads. Live typing is
coalesced per pane (50 ms, leading immediate + trailing latest; the
callback re-reads the search box at fire time, so the latest query
always wins, navigation never acts on a stale query, and a fire after
Esc finds the box closed). An open search now converges during
sustained output: the debounced 100 ms OutputIdle refresh — which
continuous output starves indefinitely — is complemented by a
non-debounced 500 ms cap armed only while a search is active, so
tail -f-style streams keep the counter, highlights, and scrollbar overview current, while a closed search costs the output path one relaxed atomic load and schedules nothing. The scrollbar mark bitmap repaints only when its content inputs change (geometry, categories, search-state generation, pip color, buffer mutation id while generic marks render), so plain scrolling with huge result sets stops re-enumerating occurrences and mark rows for identical pixels. - Edge-case fixes: pane resize with an active search no longer converts pre-reflow spans into a stray selection (the GH#19358 select-on-close behavior now belongs to the close path only); main/alternate screen-buffer switches drop the other buffer's highlight spans immediately while search keeps following the active buffer; and clearing search releases the terminal-side highlight copy instead of retaining its capacity. Regex stays on the existing ICU engine, whose compiled-in time/stack limits bound pathological patterns; invalid patterns keep reporting the existing invalid status with no stale results.
- Architecture: still no second search engine, no index, no buffer mirror, no polling, no timers outside the two bounded throttles, and pane-local scheduling only — one pane's typing can never cancel another pane's search.
-
Tests: deterministic coverage for mutation invalidation and
post-output count refresh, focused-match anchoring while output appends
matches, scrollback-eviction safety, reflow invalidation with the
no-stray-selection guarantee, alternate-screen transitions, search
generation/arming semantics, scrollbar repaint-signature contracts, and
wide-character span widths (Traditional/Simplified Chinese, Japanese,
Korean, accented Latin, emoji); plus a log-only scan-cost benchmark
scaled locally through
WINTERM_SEARCH_BENCH_LINES. No wall-clock assertions in CI. -
Wiki pages synchronized: Changelog mirrors the
canonical
CHANGELOG.mdentry for 1.3.3.
-
Source:
740ff18f7(pull request #45) -
Branch:
feature/v1.3.2-pane-search-phase2, based onmainat8015963ad(Pane Search Phase 1 checkpoint, pull request #44) -
Version intent: engineering checkpoint
1.3.2, same mechanism as v1.3.1: stable channel, no prerelease suffix, package version1.3.2.0, andv1.3.2appended to the release workflow's checkpoint-tag lists so a pushed checkpoint tag runs quick validation only. Not a published release; Latest and WinGet keep pointing at v1.2.0, and v1.3.0-beta3 remains the newest published prerelease. -
Summary: the Phase 1 functional search becomes the winTerm search
experience.
SearchBoxControlis restyled in place to the winTerm compact overlay language — search glyph, input,current / totalcounter, case/regex toggles, previous/next, close, at 27px chrome density with theme-awareSystemControl*brushes and the 8px overlay radius — and adapts to narrow panes through width-driven Normal/Compact/Minimal layout states that always keep the input and the close button usable. The scrollbar shows a search overview while search is open: one right-aligned pip per matching buffer row across the full scrollback (same-row occurrences deduplicated; the counter stays occurrence-based), with the current match's row drawn at double width into the bitmap's empty center stripe. -
ShowMarks decoupling: the mark surface now renders when generic
marks are enabled or a search is open; generic shell/prompt marks keep
obeying
ShowMarks(default off) while search pips render whenever the search box is open. Closing search removes only the search pips and collapses a search-only canvas; a deliberately hidden scrollbar is respected through a zero-dimension guard — search stays fully functional without the overview. Refreshes ride the existing throttled scrollbar update path, now also on plain navigation so the emphasized pip tracks the search core; no timers, no polling, and a closed search performs no marker work. -
Architecture: no second search engine, canvas, renderer, or marker
database.
ControlCore::SearchCurrentMatchRow()projects the searcher's focused index onto its buffer row; the new pureSearchUxHelpers.hcarries the layout thresholds, the mark-surface eligibility rule, and the distinct-row enumeration shared by the drawing code and the tests. In-terminal focused-match rendering was already native (AtlasEnginehighlightFocuscolors) and is retained untouched. -
Tests: four new
ControlCoreTests— invalid-regex error state with no stale results, current-match row tracking through navigation and wrap-around, same-row occurrence deduplication (3 occurrences → 1 overview row), and the helper contracts including the ShowMarks × search eligibility matrix. FullControl.Unit.Tests.dllpasses 81/81 and the Phase 1KeyBindingsTestsregression passes 20/20 locally (x64 Release).verify-version,verify-branding,test-release-workflow, and the Smoke suite all pass. - Deferred: Phase 3 performance work (debounce, large-scrollback optimization, caching, worker threads); clickable or hoverable markers and result previews remain out of scope.
-
Documentation:
CHANGELOG.md,docs/user/keyboard-shortcuts.md, anddocs/current-progress.md.
-
Source:
0852526f6(pull request #44) -
Branch:
feature/v1.3.1-pane-search-phase1, based onmainat4753fba68(Japanese README, pull request #43) -
Version intent: engineering checkpoint
1.3.1, following the v1.2.1–v1.2.4 convention: stable channel, no prerelease suffix, package version1.3.1.0, and thev1.3.1tag added to the release workflow's checkpoint-tag list so a pushed checkpoint tag runs quick validation only and can never publish artifacts. Not a published release; Latest and WinGet keep pointing at v1.2.0, and v1.3.0-beta3 remains the newest published prerelease. -
Summary:
Ctrl+Fnow opens Find in the active pane.defaults.jsongains{ "keys": "ctrl+f", "id": "Terminal.FindText" }, andCtrl+Shift+Fstays bound as a compatibility alias; both chords remain ordinary remappable keybindings, soctrl+fcan be unbound to restore a raw^Ffor terminal applications. The root cause of "Ctrl+F does nothing" was simply that no default binding existed — the chord fell through the ActionMap and reached the shell as^F. -
Architecture: the mature upstream search pipeline is reused end to
end — the pane-local
SearchBoxControloverlay,ControlCore::Search,Search/TextBuffer::SearchText, and renderer search highlights — giving live search over the pane's scrollback with every match highlighted at once, Enter/Shift+Enter navigation with wrap-around, Esc cleanup throughClearSearch(), search-box input isolation from the shell, and per-TermControlstate so split panes never share search state. Active-pane routing flows through the existing pane model:_HandleFind→ focusedTab→GetActiveTerminalControl()→CreateSearchBoxControl(). No second search engine, index, or buffer copy was introduced, and a closed search performs no recurring background work. -
Tests:
KeyBindingsTests::FindDefaultShortcutsAndUserOverrideverifies both default chords resolve toShortcutAction::Findand that a user unbind ofctrl+fkeeps the alias bound. Three newControlCoreTestscover all-match highlight spans with case-insensitive/case-sensitive/no-match/empty-needle behavior, navigation wrap-around plusClearSearch()cleanup, and search-state isolation across two independent cores. -
Validation:
verify-version.ps1,verify-branding.ps1, andtest.ps1 -Suite Smoke -Configuration Release -Platform x64all pass locally; the pull request carries nobuildlabel, so CI runs quick validation only. Compiled TAEF results are recorded in the pull request conversation. - Deferred: scrollbar overview markers and the winTerm-specific search UI redesign (Phase 2), performance hardening and large-scrollback optimization (Phase 3), per the roadmap.
-
Follow-up:
9f4a9183cfixed the two new tests after the first local TAEF run: the layered ActionMap scenario now mirrors the modern defaults.json shape (in-box legacycommand+keysentries do not resolve throughGetActionByKeyChord), and the all-match span assertion expects the exclusive end column reported byTextBuffer::SearchText.525497ebathen realignedDeserializationTests::FragmentActionNoKeys, which had proved "a fragment cannot bind keys" by asserting Ctrl+F resolved to nothing — valid only while the chord was unbound in the defaults; it now asserts the chord still resolves to the in-box Find action rather than the fragment's. Final local results (x64 Release): KeyBindingsTests 20/20, ControlCoreTests 20/20, full Control DLL 77/77, full SettingsModel DLL 244/244. -
Documentation:
CHANGELOG.md,docs/user/keyboard-shortcuts.md, anddocs/current-progress.md.
-
Source:
0ccac1d0c(pull request #43) -
Branch:
docs/japanese-readme, based onmainat9dc2c54c2(1.3.0-beta3 release metadata, pull request #42) -
Version intent: none. Documentation only; no application code,
resource, or version file changed, and no release was produced. The
repository changelog records this under
Unreleasedrather than fabricating a version. -
Summary: Added
README.ja.mdas a maintained Japanese counterpart to the English README, plus a language selector at the top of both files (README.mdlinks toREADME.ja.md, and back). The translation mirrors the English original section for section — download channels, distribution formats, core features, portable mode, build and test commands, privacy and security, code signing policy, license and upstream, and support — and links to the Japanese website at https://winterm.dev/ja/. -
Fidelity: Commands, filenames, executable names, JSON setting names,
version strings, keyboard shortcuts, paths, release URLs, and relative
documentation links are preserved verbatim; the single PowerShell code
block is byte-identical to the English one. Facts derive from the current
README: source version
1.3.0-beta3, latest stable1.2.0, thev1.3.0-beta3prerelease,SHA256SUMS.txt, and the pinned upstream baselinerelease-1.25@1cea42d433253d95c4487a3037db48197b5e72f4. -
Disclosures: Nothing was softened for promotion. The unsigned
installer and SmartScreen warning, the checksum verification step, the
"not Authenticode-signed" status, the exact SignPath attribution sentence,
the signing roles and manual-approval requirement, the Microsoft
non-affiliation disclaimer, and the full privacy no-collection list are all
carried over. Links to English-only documentation are labelled (英語), and
the README states that winTerm-specific new features still display some
English text, matching the actual
ja-JPresource coverage (1303 of 1421 keys, with all 25 Command Timeline keys untranslated). -
Validation:
scripts/winterm/verify-version.ps1gained eleven checks covering the two language links, the website link, both version references, the checksum filename, the signing disclosures, the SignPath attribution, the non-affiliation disclaimer, and the upstream baseline; the script passes.scripts/winterm/test-ci-classification.ps1passes. All 21 relative links inREADME.ja.mdresolve, and the file is UTF-8 with LF endings and no BOM. -
Build cost:
README.ja.mdwas added to the documentation allowlist inscripts/winterm/ci/ChangeClassification.psm1. The pull request carries nobuildlabel and classifies asvalidation-only(RunReleaseDelivery: False), so the native build workflow does not run. -
Related website change: the Japanese pages this README links to are
added in
winterm-sitepull request #10. -
Documentation:
README.ja.md,README.md, and repository changelog. -
Follow-up:
776edb633restoredscripts/winterm/verify-version.ps1to ASCII-only literals. The Japanese phrases embedded there made it the only non-ASCII PowerShell file in the repository, andTest-PowerShellSyntaxparses scripts withParser::ParseFile, which decodes a BOM-less file using the host's active code page. That corrupted the literals on the CI runner and failed quick validation, while the file parsed cleanly on a UTF-8 host. The checks now assert the same facts through the ASCII tokens the Japanese prose contains, plus three guards that keep an English or mis-encoded copy from passing: no UTF-8 BOM, strict UTF-8 decoding, and more than 500 kana and kanji characters (currently 2713). -
CI:
Classify exact change set,Quick source and smoke validation, andci-gateall pass; both native build jobs reportskipping. -
Pending: this entry records the branch head
776edb633. It must be updated to the final merge or squash SHA once pull request #43 lands.
-
Source:
feb2687e5(pull request #42) -
Branch:
release/v1.3.0-beta3, carrying the one-shot launch fallback fixbaf6f8a87(pull request #41), based onmainat39193206c(1.3.0-beta2 release metadata, pull request #40) -
Version intent:
1.3.0-beta3/ tagv1.3.0-beta3, channelbeta, package/file version1.3.0.6. -
Summary: Third beta of the Command Timeline release, fixing the beta2
field report that long-running commands (k9s, vim, top, FastAPI/uvicorn,
Spring Boot, Node dev servers,
tail -f,kubectl port-forward) animate the Visual Progress rainbow bar forever. The OSC 133 launch fallback is now a bounded one-shot launch indication scoped by a shell command generation; everything else is identical to beta2. -
Publication boundary:
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0 and WinGet skips the release. The beta is listed onwinterm-sitenext to the stable v1.2.0 download. The Setup EXE is unsigned and says so. Published 2026-08-05 14:01 UTC after all draft gates passed (release). - Documentation: release notes, repository changelog, and current progress.
-
Source:
baf6f8a87(pull request #41) -
Branch:
fix/visual-progress-shell-fallback-one-shot, based onmainat39193206c(1.3.0-beta2 release metadata, pull request #40) - Version intent: fix ahead of the next prerelease; version metadata unchanged.
-
Summary: Long-running commands no longer loop the Visual Progress
rainbow animation forever. The OSC 133
CommandExecutedfallback used to stay Indeterminate/Running untilCommandFinished, so k9s, vim, top, FastAPI/uvicorn, Spring Boot, Node dev servers,tail -f, andkubectl port-forwardanimated for their whole lifetime. The fallback is now a bounded one-shot launch indication scoped by a shell command generation (no command-name or process-name heuristics): the comet makes one 1,800 ms traversal, driven by a one-shot compositor batch rather than a timer or polling loop, and the overlay then hides with a silent Hidden/Running snapshot. Stale completions cannot affect a newer command, alternate-screen churn and pane rehydration cannot replay a consumed launch, and an expired fallback cannot resurrect after a CLI provider or explicit OSC 9;4 owner clears. Explicit progress, recognized providers, short-lived commands, and the success/error/cancelled presentations keep their existing behavior. Four new TAEF tests cover the generation and expiration semantics (48/48 passing), and the smoke fixture gains long-running and alternate-screen cases. - Documentation: repository changelog and the Phase 2 development document ("Bounded shell launch fallback").
-
Source:
39193206c(pull request #40) onmain, carrying the prompt exit code fixa6ec9a415(pull request #39) -
Version:
1.3.0-beta2/ tagv1.3.0-beta2, channelbeta, package/file version1.3.0.5. -
Summary: Second beta of the Command Timeline release. Producing the
website screenshots against the published beta1 build surfaced that every
Timeline entry reported
✓ Succeeded: the prompt wrapper executedGet-Modulebefore reading$?, soGet-WinTermExitCodealways received a success. The wrapper now captures$?as its first statement and passes it intoInvoke-WinTermPrompt -LastSuccess; the shell integration suite gained an installed-wrapper regression test covering the first-prompt, success, cmdlet-failure, native-failure, and recovery sequences (verified red on the unfixed module). -
Publication boundary:
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0 and WinGet skips the release. The beta is listed onwinterm-sitenext to the stable v1.2.0 download. The Setup EXE is unsigned and says so. - Documentation: release notes, repository changelog, and current progress.
-
Source:
2a721715d8c375445221012c3acc384dc2212052 -
Branch:
release/v1.3.0-beta1, based onmainatc089caeb(1.3.0-alpha4 release metadata, pull request #37) -
Version intent:
1.3.0-beta1/ tagv1.3.0-beta1, channelbeta, package/file version1.3.0.4. - Summary: First beta of the Command Timeline. Feature content is identical to 1.3.0-alpha4, which passed local field testing across four alpha rounds. The channel advances alpha → beta (About metadata channel Beta), the README gains the Command Timeline and auto shell integration in its feature list plus a stable/beta download split, and verify-version now checks the README source version against release metadata while separately pinning the stable wording to 1.2.0.
-
Publication boundary:
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0 and WinGet skips the release. Unlike the alphas, the beta will be listed onwinterm-sitenext to the stable v1.2.0 download. The Setup EXE is unsigned and says so. - Documentation: release notes, repository changelog, and current progress.
-
Source:
a98c3e9e2a3aef0bddce6ba4cdc600291b6f82f5 -
Branch:
release/v1.3.0-alpha4, based onmainat49ee5eb3(alpha3 field-report fixes, pull request #36) -
Version intent:
1.3.0-alpha4/ tagv1.3.0-alpha4, channelalpha, package/file version1.3.0.3. -
Summary: Promotes the three alpha3 field-report fixes to a fourth
installable alpha. Metadata only: application version
1.3.0-alpha4, module prerelease suffixalpha4, package version1.3.0.3, and the version literals pinned by the verification scripts. -
Publication boundary: The release workflow marks any non-stable channel
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0. The alpha is deliberately not listed onwinterm-siteand is not submitted to WinGet. The Setup EXE is unsigned and says so in its release notes. - Documentation: release notes, repository changelog, and current progress.
-
Source:
2ecd3bc7d19a7e818dfccb4ee70ecb687de07c87 -
Branch:
fix/alpha3-feedback, based onmainatca371f78(1.3.0-alpha3 release metadata, pull request #35) - Version intent: fixes ahead of the next prerelease; version metadata unchanged.
-
Summary: Fixes the three issues reported from local v1.3.0-alpha3
testing. The antivirus alert on every new PowerShell tab traced to
Compatibility.ps1: bisection showed the rawFile::Openwrite intouchcombined with the native-dispatch blocks read as a write-then-execute shape; file creation now goes throughNew-Itemand the full module imports clean on the engine that previously flagged it. Every completed command displayed? Unknownbecause the Enter keypress heuristic that supplies the command-executed transition never notified the lifecycle, so the capability chain never read Full; the Enter path now reports CommandExecuted for shell-established marks with non-empty input, restoring ✓/✕ results and the Running state, covered by a new end-to-end keypress test. Timeline rows now carry a full-command tooltip, and the Unknown status explains itself on hover. -
Validation: module bisect and clean import verified in both shells,
touchbehavior verified (create, timestamp update, no truncation), and the command-timeline, visual-progress, privacy, version, release-workflow, CI-classification, and Smoke gates all pass. Compiled Control tests, including the newEnterKeypressSuppliesExecutedTransition, run in the pull request validation cycle. - Documentation: repository changelog.
-
Source:
9f8198cf247190903e6a3fdce08d058c8b4b025f -
Branch:
release/v1.3.0-alpha3, based onmainate0fd786c(alpha2 field-report fixes, pull request #34) -
Version intent:
1.3.0-alpha3/ tagv1.3.0-alpha3, channelalpha, package/file version1.3.0.2. -
Summary: Promotes the five alpha2 field-report fixes to a third
installable alpha. Metadata only: application version
1.3.0-alpha3, module prerelease suffixalpha3, package version1.3.0.2, and the version literals pinned by the verification scripts. -
Publication boundary: The release workflow marks any non-stable channel
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0. The alpha is deliberately not listed onwinterm-siteand is not submitted to WinGet. The Setup EXE is unsigned and says so in its release notes. - Documentation: release notes, repository changelog, and current progress.
-
Source:
09bd1b5f19f05a9e5ae8bf41453e25feba62dd98 -
Branch:
fix/alpha2-feedback, based onmainate225933e(1.3.0-alpha2 release metadata, pull request #33) -
Version intent: fixes ahead of
1.3.0-alpha3; version metadata unchanged. -
Summary: Fixes the five issues reported from local v1.3.0-alpha2 testing.
The shell integration module wrote its string terminator as a PowerShell
single-quoted
'\'— two literal characters — leaving one stray backslash on screen per emitted sequence, and wrote its marks as console side effects, which the host prints before a prompt function's returned text, so the command-start mark landed before the visible prompt: the Timeline recorded the whole prompt line and Load inserted the prompt path. The wrapper now returns one string with the marks embedded in FinalTerm order and a single-character terminator. The progress state machine no longer shows a bar for133;B(composing input), so an idle integrated prompt stays quiet; the lifecycle model no longer creates a Timeline entry at133;B, removing the phantomCommand text unavailable / Runningrow; and selection-only Timeline updates reuse the existing rows, removing the arrow-key/hover jitter. A module component blocked by antivirus at parse time is now skipped silently and recorded in diagnostics. -
Validation: SettingsModel winTerm TAEF classes 44/44, Control
CommandTimelineTests43/43 on fresh builds, both test projects x64 Release exit 0, live-session prompt bytes verified in FinalTerm order, and all eight repository gates pass. - Documentation: PowerShell integration and repository changelog.
-
Source:
1202129f6d89627b5ac1bd8baa801dcfe3e81232 -
Branch:
release/v1.3.0-alpha2, based onmainat18310e9f(alpha1 field-report fixes, pull request #32) -
Version intent:
1.3.0-alpha2/ tagv1.3.0-alpha2, channelalpha, package/file version1.3.0.1. -
Summary: Promotes the four alpha1 field-report fixes to a second
installable alpha. This commit only moves release metadata: application
version
1.3.0-alpha2, module prerelease suffixalpha2, package version advanced to1.3.0.1so alpha binaries stay distinguishable, and the version literals pinned by the verification scripts. -
Publication boundary: The release workflow marks any non-stable channel
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0. The alpha is deliberately not listed onwinterm-siteand is not submitted to WinGet. The Setup EXE is unsigned and says so in its release notes. - Documentation: release notes, repository changelog, and current progress.
-
Source:
f3697b8c30776b7eb031b35bd29adac20d43c2a4 -
Branch:
fix/alpha1-feedback, based onmainated70755(pull request #31) -
Version intent: fixes ahead of
1.3.0-beta1; version metadata unchanged. -
Summary: Fixes the four issues reported from local v1.3.0-alpha1 testing.
The Command Timeline handle is now a thin auto-hiding strip flush against the
terminal's left edge that widens on hover, focus, or while the overlay is
open, instead of a floating button that covered terminal content. A pointer
press on the terminal area now light-dismisses an open overlay. The Visual
Progress recognition engine no longer claims ownership from a bare
product-name mention (a
dirlisting containing.gradlepreviously started a bar that never stopped), no longer rematches arbitrary records under an established claim, structurally clears a still-running provider bar after two consecutive ordinary records, and no longer reads slashed dates as completed/total meters. Bare PowerShell profile commandlines are now rewritten at connection creation to import the packagedwinTerm.Shellmodule, so OSC 133 marks and the Command Timeline work out of the box; the rewrite is gated by the new per-profile setting"shellIntegration.autoInject"(defaulttrue) and refuses every customized invocation. -
Validation:
SettingsModelwinTerm TAEF classes 44/44, ControlCommandTimelineTests43/43,TerminalAppLibandControl.UnitTestsx64 Release builds clean, and the command-timeline, visual-progress, privacy, version, release-workflow, CI-classification, and Smoke gates all pass. - Documentation: PowerShell integration, repository changelog, and current progress.
-
Source:
cdfa02be0ac0f9f3c7ba8bd34200854323dbf130 -
Branch:
release/v1.3.0-alpha1, based onmain -
Version intent:
1.3.0-alpha1/ tagv1.3.0-alpha1, channelalpha. -
Summary: Promotes the Command Timeline to a testable alpha. The feature
content was already on
mainas checkpoints v1.2.1–v1.2.4; this moves the release metadata and makes the version gates channel-aware.verify-version.ps1now acceptsstable,alpha, andbetaand enforces that the channel, the module prerelease suffix, and the application-version suffix agree. The WinGet workflow now skips prerelease Releases. -
Publication boundary: The release workflow marks any non-stable channel
--prerelease --latest=false, so/releases/latestkeeps resolving to v1.2.0. The alpha is deliberately not listed onwinterm-siteand is not submitted to WinGet. The Setup EXE is unsigned and says so in its release notes. - Documentation: Wiki changelog, release notes, repository changelog, and current progress.
-
Source:
c1426996372c5af0ba442eebf5603bad15a9135e -
Branch:
feature/command-timeline-v1.3.0-phase4, based onmain(Phase 3 was squash-merged tomainas5fd2172through pull request #29) - Pull request: #30 — feat: complete Command Timeline Phase 4 checkpoint
-
Version intent:
1.2.4/ tagv1.2.4. -
Summary: Completes the in-memory Command Timeline surface. Adds pane-local
literal case-insensitive search over each pane's bounded command-text index
with a 256 UTF-16 surrogate-safe query cap, a filtered projection that keeps
stable
CommandIdidentity,/and Tab focus routing that never reaches the PTY, Escape clear-then-close, thecommandTimeline.enabledandcommandTimeline.historyLimitsettings with a Settings UI section, four distinct shell-degradation states, and bounded per-pane history with oldest-first eviction. - Documentation: Wiki changelog, repository changelog, Phase 4 development notes, Command Timeline user guide, keyboard shortcuts, privacy, and current progress.
- Boundary: No persistent history, output cache, output search, regex or fuzzy matching, telemetry, automatic execution, ConPTY/VT/TextBuffer/renderer change, workspace or shell protocol schema change, installer, Portable packaging, Release asset, Latest update, website change, or screenshot.
-
Source:
08afcea737e21ca2d8b7f83704efe94601215c3f - Pull request: #29 — feat: complete Command Timeline Phase 3 checkpoint
-
Merged source:
5fd217238452b2f9fd4352629f86ffb7befd9b54(squash merge tomain) -
Branch:
feature/command-timeline-v1.3.0 -
Version intent:
1.2.3/ tagv1.2.3. -
Summary: Adds Command Timeline entry actions: load the selected command
onto the focused pane input with Enter or a single click, Space to jump to a
command's output, Ctrl+C to copy the selected command, and a per-entry
context menu with copy command, copy output, and jump to output. Adds a pure
CommandTimelineActionModel, execution-generation tracking that makes a late completion detectable, multi-line and large-load protection, and on-demand output resolution. - Documentation: Wiki changelog, repository changelog, Phase 3 development notes, Command Timeline user guide, and current progress.
- Boundary: A load never executes, never reads the Windows clipboard, and is never forwarded by input broadcast. No output cache, persistence, search, filtering, telemetry, Release asset, installer, website, or screenshot change.
-
Source:
e3033cced4f68ae6e50962b48c91eb432d3d0e17 - Pull request: #28 — feat: add Command Timeline phase 2 checkpoint
-
Merged source:
395f9becd3237bf0d439ba58de50a667a911445d -
Version intent:
1.2.2/ tagv1.2.2. - Summary: Adds the pane-owned, read-only Command Timeline overlay; pure deterministic navigation; incremental Phase 1 index consumption; keyboard, pointer, wheel, accessibility, privacy, warm-access, and cleanup behavior; shortcut remapping; version synchronization; CI badge repair; and permanent changelog/Wiki policy.
- Documentation: Wiki changelog, repository changelog, and current progress.
- Boundary: No command insertion, copy, paste, execution, output jump, search, persistence, Release asset, installer, website, or screenshot change.
-
Merged source:
510c326e474eccfbc40f8f6763b4b9227a2aa6b0 - Pull request: #26 — feat: add Command Timeline Phase 1 checkpoint
-
Version intent:
1.2.1/ tagv1.2.1. -
Summary: Introduced pane-local OSC 133 indexing, stable native mark
identity, bounded command-text caching, no output cache or persistence, warm
markRevisionreads, and lifecycle/reflow/eviction/close coverage. - Documentation: Wiki changelog and repository changelog.
-
Merged source:
abb581a2a661f1d3a1f34b2ac384ce4c7e3c69c9 - Pull request: #27 — fix: prevent hanging tests and optimize CI builds
-
Summary: Added bounded TAEF process-tree cleanup and made native build,
delivery, and
ci:fullvalidation explicit maintainer-selected gates while ordinary pull requests retain quick validation.
Every source commit that changes user-visible behavior, versioning, release
status, or project history must update the root CHANGELOG.md and the matching
Wiki record in the same delivery cycle. A later source correction receives a
new ledger entry; published tags and Releases are never rewritten.