Skip to content

feat: add v1.2.0 Phase 1 progress core and optimize CI - #22

Merged
HelloThisWorld merged 4 commits into
mainfrom
codex/feature-v1.2.0-phase1-progress-core-ci
Jul 31, 2026
Merged

feat: add v1.2.0 Phase 1 progress core and optimize CI#22
HelloThisWorld merged 4 commits into
mainfrom
codex/feature-v1.2.0-phase1-progress-core-ci

Conversation

@HelloThisWorld

@HelloThisWorld HelloThisWorld commented Jul 31, 2026

Copy link
Copy Markdown
Owner

Summary

  • Consolidates pull-request validation into one classified workflow with a stable ci-gate result.
  • Adds the safe, static Phase 1 Visual Progress foundation behind an off-by-default preview setting.
  • Reuses OSC 9;4 taskbar progress and the existing OSC 133 semantic-mark layer; it does not add output-line parsing, scrollback scanning, polling, timers, or animation.

Related issues

Closes #

Detailed changes

CI optimization

The exact PR base-to-head diff is classified as:

  • docs-only: every file is in the conservative documentation allowlist; runs quick validation only.
  • code: any non-documentation change that is not delivery-sensitive; runs quick validation plus one x64 Release build and relevant compiled tests.
  • delivery: workflows, build/project/dependency configuration, manifests, version/branding, packaging, installer, portable, signing, attestation, release, or equivalent delivery-sensitive paths; runs quick validation once, Debug and Release builds/tests, packaging, lifecycle tests, and the existing distribution allowlist.

The ci:full and delivery labels force delivery validation. Manual dispatch supports auto, fast, and full. New PR commits cancel obsolete runs through PR-scoped concurrency.

The unrestricted push trigger and duplicate winterm-full-build.yml PR path are removed, so merging a normal PR to main no longer repeats ordinary validation. The separate v* tag-triggered .github/workflows/release.yml workflow is unchanged and remains the authoritative release build.

ci-gate uses if: always(), depends on classification and every conditional job, rejects missing/failed/cancelled required work, and accepts skipped jobs only when the selected class does not require them.

Visual Progress Phase 1

  • Adds a small per-pane normalized state model for hidden/determinate/indeterminate and running/waiting/success/error/cancelled states.
  • Clamps determinate values, preserves meaningful error/paused values, suppresses duplicates, gives explicit OSC 9;4 progress precedence, and coalesces UI work in a one-element mailbox.
  • Uses non-blocking try-lock ingress so decorative progress updates may be dropped rather than delaying terminal output.
  • Adds the smallest semantic OSC 133 event boundary needed to expose prompt, command start/executed, command finish, and exit code through TerminalCoreControlCoreTermControlTerminalPaneContentPane.
  • Adds one non-hit-testable, six-DIP static overlay to each enabled leaf pane in the existing content row, with dark/light/High Contrast resources and split/close/detach cleanup.
  • Adds the off-by-default visualProgress.enabled global setting. WINTERM_DISABLE_VISUAL_PROGRESS=1 always disables the feature.
  • Fails open: visual creation/dispatch/update errors are logged and disable the affected pane overlay without affecting PTY, input, output, selection, copy/paste, or pane controls.

Validation performed

Passed locally on Windows x64 with Visual Studio/MSBuild 17.14.51 and Windows SDK 10.0.22621.0:

  • ./scripts/winterm/test-ci-classification.ps1
  • ./scripts/winterm/test-release-workflow.ps1
  • ./scripts/winterm/test-visual-progress.ps1 -SourceOnly -Configuration Release -Platform x64
  • ./scripts/winterm/test.ps1 -Suite Smoke -Configuration Release -Platform x64
  • ./scripts/winterm/build.ps1 -Configuration Release -Platform x64 -IncludeTests
  • ./scripts/winterm/test.ps1 -Suite Relevant -Configuration Release -Platform x64
  • PowerShell parser validation for all 46 scripts/winterm/**/*.ps1 files
  • YAML parsing for all .github/workflows/*.yml files
  • git diff --check for each staged commit and the complete branch diff

The final Relevant run passed the Settings Model group (including all new Visual Progress tests) and all 30 Control tests. The Release build completed with only existing PRI/XAML resource warnings.

Not run locally:

  • Debug native build, unpackaged/Setup/Portable packaging, installer lifecycle, portable launch, and package allowlist validation. This PR changes workflow/project files, so classification must select the authoritative delivery path in GitHub Actions and run those jobs there.
  • The manual interactive overlay fixture was not run because it requires launching the packaged UI; scripts/winterm/invoke-visual-progress-smoke.ps1 is included for that exercise.

GitHub Actions (winTerm validation run 30656749400): passed.

  • Change classification: passed; selected delivery.
  • Quick source and smoke validation: passed.
  • Release-only fast job: intentionally skipped for the delivery class.
  • x64 Debug build and Relevant compiled tests: passed (23m 3s).
  • x64 Release build and Relevant compiled tests: passed (30m 13s).
  • Unpackaged, Setup, and Portable build/verification; current-user and all-users installer lifecycles; portable launch; and exact distribution allowlist upload: passed (21m 3s).
  • ci-gate: passed.
  • Independent WinGet workflow-boundary check: passed; public-Release manifest generation was intentionally skipped for this non-release PR.

Known limitations and Phase 2 exclusions

  • The preview is configured in JSON; no polished Settings UI is included.
  • Command completion remains static until the next semantic prompt clears it.
  • Phase 1 intentionally excludes rainbow/gradient animation, glow, bloom, sparks, interpolation, moving indeterminate effects, CLI-specific parsers, output suppression, labels, ETA/speed, notifications, and website/version/release changes.
  • The application version remains 1.1.3.

Branch protection

After this workflow lands, repository branch protection should require the single stable ci-gate check. This PR does not change repository settings programmatically.

Checklist

  • The change is focused and does not include unrelated formatting.
  • Tests were added or updated where appropriate.
  • All tests claimed above actually ran and passed.
  • User-facing behavior and limitations are documented in this repository.
  • Version or schema changes include compatibility and migration notes.
  • Package identity, winterm.exe, and Microsoft Terminal coexistence remain isolated.
  • No command text, terminal output, clipboard content, credentials, or private paths are logged.
  • New source and script files contain the appropriate MIT license header.
  • I did not include generated build output, secrets, certificates, or local absolute paths.

@HelloThisWorld
HelloThisWorld marked this pull request as ready for review July 31, 2026 19:47
@HelloThisWorld
HelloThisWorld merged commit e04724a into main Jul 31, 2026
9 checks passed
@HelloThisWorld
HelloThisWorld deleted the codex/feature-v1.2.0-phase1-progress-core-ci branch July 31, 2026 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant