Skip to content

Development Changes

HelloThisWorld edited this page Aug 6, 2026 · 19 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-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.