Skip to content

Development Changes

HelloThisWorld edited this page Aug 13, 2026 · 25 revisions

Development Changes

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.

2026-08-13 — Pane Search beta published (v1.4.0-beta prerelease)

  • Source: 63c52f538 (pull request #48)
  • Version intent: published GitHub prerelease 1.4.0-beta on the beta channel — package version 1.4.0.1, module 1.4.0 with suffix beta, tag v1.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 on main (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+F active-pane live search across the entire scrollback with all-match highlighting, wrap-around navigation, case/regex modes, the winTerm compact search box with the current / total counter, 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.

2026-08-13 — winTerm 1.3.0 stable published; GitHub Latest moves (v1.3.0)

  • Source: 79f4c8033 on the release/v1.3.0 maintenance branch (from the v1.3.0-beta3 tree at feb2687e5; merged into main history through pull request #49)
  • Version intent: stable release 1.3.0 — package version 1.3.0.7, no prerelease suffix, channel stable, 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.

2026-08-13 — Pane Search integration candidate published (v1.4.0-alpha prerelease)

  • Source: 45cf23975 (pull request #47)
  • Branch: release/v1.4.0-alpha, based on main at e436fdf00 (Pane Search Phase 3 checkpoint, pull request #46)
  • Version intent: published GitHub prerelease 1.4.0-alpha on the alpha channel — package version 1.4.0.0, module 1.4.0 with prerelease suffix alpha, executable metadata 1.4, tag v1.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+F search (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. A PASS verdict promotes the build to 1.4.0-beta; a FAIL produces a fixed 1.4.1-alpha. Only the user authorizes the promotion.
  • Wiki pages synchronized: Changelog mirrors the canonical CHANGELOG.md entry for 1.4.0-alpha.

2026-08-12 — Pane Search Phase 3: performance and edge-case hardening (v1.3.3 checkpoint)

  • Source: cc8f82774 (pull request #46)
  • Branch: feature/v1.3.3-pane-search-phase3, based on main at 97ecb7e85 (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 version 1.3.3.0, and v1.3.3 appended 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.md entry for 1.3.3.

2026-08-12 — Pane Search Phase 2: search UX and scrollbar overview (v1.3.2 checkpoint)

  • Source: 740ff18f7 (pull request #45)
  • Branch: feature/v1.3.2-pane-search-phase2, based on main at 8015963ad (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 version 1.3.2.0, and v1.3.2 appended 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. SearchBoxControl is restyled in place to the winTerm compact overlay language — search glyph, input, current / total counter, case/regex toggles, previous/next, close, at 27px chrome density with theme-aware SystemControl* 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 pure SearchUxHelpers.h carries 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 (AtlasEngine highlightFocus colors) 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. Full Control.Unit.Tests.dll passes 81/81 and the Phase 1 KeyBindingsTests regression 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, and docs/current-progress.md.

2026-08-11 — Pane Search Phase 1: active-pane Ctrl+F search (v1.3.1 checkpoint)

  • Source: 0852526f6 (pull request #44)
  • Branch: feature/v1.3.1-pane-search-phase1, based on main at 4753fba68 (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 version 1.3.1.0, and the v1.3.1 tag 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+F now opens Find in the active pane. defaults.json gains { "keys": "ctrl+f", "id": "Terminal.FindText" }, and Ctrl+Shift+F stays bound as a compatibility alias; both chords remain ordinary remappable keybindings, so ctrl+f can be unbound to restore a raw ^F for 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 SearchBoxControl overlay, 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 through ClearSearch(), search-box input isolation from the shell, and per-TermControl state so split panes never share search state. Active-pane routing flows through the existing pane model: _HandleFind → focused TabGetActiveTerminalControl()CreateSearchBoxControl(). No second search engine, index, or buffer copy was introduced, and a closed search performs no recurring background work.
  • Tests: KeyBindingsTests::FindDefaultShortcutsAndUserOverride verifies both default chords resolve to ShortcutAction::Find and that a user unbind of ctrl+f keeps the alias bound. Three new ControlCoreTests cover all-match highlight spans with case-insensitive/case-sensitive/no-match/empty-needle behavior, navigation wrap-around plus ClearSearch() cleanup, and search-state isolation across two independent cores.
  • Validation: verify-version.ps1, verify-branding.ps1, and test.ps1 -Suite Smoke -Configuration Release -Platform x64 all pass locally; the pull request carries no build label, 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: 9f4a9183c fixed the two new tests after the first local TAEF run: the layered ActionMap scenario now mirrors the modern defaults.json shape (in-box legacy command+keys entries do not resolve through GetActionByKeyChord), and the all-match span assertion expects the exclusive end column reported by TextBuffer::SearchText. 525497eba then realigned DeserializationTests::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, and docs/current-progress.md.

2026-08-06 — Japanese README (README.ja.md)

  • Source: 0ccac1d0c (pull request #43)
  • Branch: docs/japanese-readme, based on main at 9dc2c54c2 (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 Unreleased rather than fabricating a version.
  • Summary: Added README.ja.md as a maintained Japanese counterpart to the English README, plus a language selector at the top of both files (README.md links to README.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 stable 1.2.0, the v1.3.0-beta3 prerelease, SHA256SUMS.txt, and the pinned upstream baseline release-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-JP resource coverage (1303 of 1421 keys, with all 25 Command Timeline keys untranslated).
  • Validation: scripts/winterm/verify-version.ps1 gained 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.ps1 passes. All 21 relative links in README.ja.md resolve, and the file is UTF-8 with LF endings and no BOM.
  • Build cost: README.ja.md was added to the documentation allowlist in scripts/winterm/ci/ChangeClassification.psm1. The pull request carries no build label and classifies as validation-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-site pull request #10.
  • Documentation: README.ja.md, README.md, and repository changelog.
  • Follow-up: 776edb633 restored scripts/winterm/verify-version.ps1 to ASCII-only literals. The Japanese phrases embedded there made it the only non-ASCII PowerShell file in the repository, and Test-PowerShellSyntax parses scripts with Parser::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, and ci-gate all pass; both native build jobs report skipping.
  • Pending: this entry records the branch head 776edb633. It must be updated to the final merge or squash SHA once pull request #43 lands.

2026-08-05 — winTerm 1.3.0-beta3 prerelease

  • Source: feb2687e5 (pull request #42)
  • Branch: release/v1.3.0-beta3, carrying the one-shot launch fallback fix baf6f8a87 (pull request #41), based on main at 39193206c (1.3.0-beta2 release metadata, pull request #40)
  • Version intent: 1.3.0-beta3 / tag v1.3.0-beta3, channel beta, package/file version 1.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/latest keeps resolving to v1.2.0 and WinGet skips the release. The beta is listed on winterm-site next 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.

2026-08-05 — Visual Progress one-shot shell launch fallback

  • Source: baf6f8a87 (pull request #41)
  • Branch: fix/visual-progress-shell-fallback-one-shot, based on main at 39193206c (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 CommandExecuted fallback used to stay Indeterminate/Running until CommandFinished, so k9s, vim, top, FastAPI/uvicorn, Spring Boot, Node dev servers, tail -f, and kubectl port-forward animated 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").

2026-08-04 — winTerm 1.3.0-beta2 prerelease

  • Source: 39193206c (pull request #40) on main, carrying the prompt exit code fix a6ec9a415 (pull request #39)
  • Version: 1.3.0-beta2 / tag v1.3.0-beta2, channel beta, package/file version 1.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 executed Get-Module before reading $?, so Get-WinTermExitCode always received a success. The wrapper now captures $? as its first statement and passes it into Invoke-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/latest keeps resolving to v1.2.0 and WinGet skips the release. The beta is listed on winterm-site next to the stable v1.2.0 download. The Setup EXE is unsigned and says so.
  • Documentation: release notes, repository changelog, and current progress.

2026-08-04 — winTerm 1.3.0-beta1 prerelease

  • Source: 2a721715d8c375445221012c3acc384dc2212052
  • Branch: release/v1.3.0-beta1, based on main at c089caeb (1.3.0-alpha4 release metadata, pull request #37)
  • Version intent: 1.3.0-beta1 / tag v1.3.0-beta1, channel beta, package/file version 1.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/latest keeps resolving to v1.2.0 and WinGet skips the release. Unlike the alphas, the beta will be listed on winterm-site next to the stable v1.2.0 download. The Setup EXE is unsigned and says so.
  • Documentation: release notes, repository changelog, and current progress.

2026-08-04 — winTerm 1.3.0-alpha4 prerelease

  • Source: a98c3e9e2a3aef0bddce6ba4cdc600291b6f82f5
  • Branch: release/v1.3.0-alpha4, based on main at 49ee5eb3 (alpha3 field-report fixes, pull request #36)
  • Version intent: 1.3.0-alpha4 / tag v1.3.0-alpha4, channel alpha, package/file version 1.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 suffix alpha4, package version 1.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/latest keeps resolving to v1.2.0. The alpha is deliberately not listed on winterm-site and 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.

2026-08-04 — Alpha3 field-report fixes

  • Source: 2ecd3bc7d19a7e818dfccb4ee70ecb687de07c87
  • Branch: fix/alpha3-feedback, based on main at ca371f78 (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 raw File::Open write in touch combined with the native-dispatch blocks read as a write-then-execute shape; file creation now goes through New-Item and the full module imports clean on the engine that previously flagged it. Every completed command displayed ? Unknown because 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, touch behavior 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 new EnterKeypressSuppliesExecutedTransition, run in the pull request validation cycle.
  • Documentation: repository changelog.

2026-08-04 — winTerm 1.3.0-alpha3 prerelease

  • Source: 9f8198cf247190903e6a3fdce08d058c8b4b025f
  • Branch: release/v1.3.0-alpha3, based on main at e0fd786c (alpha2 field-report fixes, pull request #34)
  • Version intent: 1.3.0-alpha3 / tag v1.3.0-alpha3, channel alpha, package/file version 1.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 suffix alpha3, package version 1.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/latest keeps resolving to v1.2.0. The alpha is deliberately not listed on winterm-site and 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.

2026-08-04 — Alpha2 field-report fixes

  • Source: 09bd1b5f19f05a9e5ae8bf41453e25feba62dd98
  • Branch: fix/alpha2-feedback, based on main at e225933e (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 for 133;B (composing input), so an idle integrated prompt stays quiet; the lifecycle model no longer creates a Timeline entry at 133;B, removing the phantom Command text unavailable / Running row; 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 CommandTimelineTests 43/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.

2026-08-04 — winTerm 1.3.0-alpha2 prerelease

  • Source: 1202129f6d89627b5ac1bd8baa801dcfe3e81232
  • Branch: release/v1.3.0-alpha2, based on main at 18310e9f (alpha1 field-report fixes, pull request #32)
  • Version intent: 1.3.0-alpha2 / tag v1.3.0-alpha2, channel alpha, package/file version 1.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 suffix alpha2, package version advanced to 1.3.0.1 so 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/latest keeps resolving to v1.2.0. The alpha is deliberately not listed on winterm-site and 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.

2026-08-04 — Alpha1 field-report fixes

  • Source: f3697b8c30776b7eb031b35bd29adac20d43c2a4
  • Branch: fix/alpha1-feedback, based on main at ed70755 (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 dir listing containing .gradle previously 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 packaged winTerm.Shell module, 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" (default true) and refuses every customized invocation.
  • Validation: SettingsModel winTerm TAEF classes 44/44, Control CommandTimelineTests 43/43, TerminalAppLib and Control.UnitTests x64 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.

2026-08-04 — winTerm 1.3.0-alpha1 prerelease

  • Source: cdfa02be0ac0f9f3c7ba8bd34200854323dbf130
  • Branch: release/v1.3.0-alpha1, based on main
  • Version intent: 1.3.0-alpha1 / tag v1.3.0-alpha1, channel alpha.
  • Summary: Promotes the Command Timeline to a testable alpha. The feature content was already on main as checkpoints v1.2.1–v1.2.4; this moves the release metadata and makes the version gates channel-aware. verify-version.ps1 now accepts stable, alpha, and beta and 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/latest keeps resolving to v1.2.0. The alpha is deliberately not listed on winterm-site and 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.

2026-08-04 — Command Timeline Phase 4 checkpoint

  • Source: c1426996372c5af0ba442eebf5603bad15a9135e
  • Branch: feature/command-timeline-v1.3.0-phase4, based on main (Phase 3 was squash-merged to main as 5fd2172 through pull request #29)
  • Pull request: #30 — feat: complete Command Timeline Phase 4 checkpoint
  • Version intent: 1.2.4 / tag v1.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 CommandId identity, / and Tab focus routing that never reaches the PTY, Escape clear-then-close, the commandTimeline.enabled and commandTimeline.historyLimit settings 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.

2026-08-03 — Command Timeline Phase 3 checkpoint

2026-08-02 — Command Timeline Phase 2 checkpoint

2026-08-02 — Command Timeline Phase 1 checkpoint

2026-08-02 — Test cleanup and label-gated CI

Synchronization rule

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.

Clone this wiki locally