Skip to content

v2.7.2

Choose a tag to compare

@github-actions github-actions released this 08 May 09:10
· 93 commits to main since this release

WinTUI v2.7.2 Release Notes

A small follow-up to v2.7.1 fixing two bugs that together prevented the
disk cache from being written and made the Health tab show "no cached
scan yet" right after a successful workspace scan.

Narrow-column upgrade tables now parse

When only one or two upgrades are pending and their package data is
short, winget renders the upgrade table with single-space gaps
between Version, Available, and Source instead of the usual ≥2-space
column padding:

Name      Id                  Version Available Source
------------------------------------------------------
WireGuard WireGuard.WireGuard 1.0.1   1.1       winget

The v2.7.1 column-aware parser groups headers by runs of two-or-more
spaces, so it folded those three headers into a single cell
(Version Available Source), reported

winget output: 3-column upgrade table is not a known shape; first header was "Name"

and bailed out. As a downstream effect:

  • cache.setUpgradeable was never called, so the in-memory upgrade
    cache stayed nil.
  • saveToDiskLocked requires both lists populated, so cache.json was
    never written.
  • The Health tab showed INFO Sources no cached scan yet and
    INFO Updates no cached upgrade scan yet even immediately after
    the workspace tab had finished scanning successfully.

The header parser now subdivides any cell whose whitespace-separated
tokens all resolve through the locale dictionary, so tightly-packed
English upgrade tables parse correctly. Localized headers with
intentional internal spaces (Korean 장치 ID, 사용 가능, etc.) are
unaffected because their tokens don't individually resolve through the
dictionary.

winget list and winget upgrade no longer race

Cold-start scans previously ran winget list and winget upgrade in
parallel goroutines. winget serialises those subcommands on an internal
lock and one of them returns 0x8a150001 with empty output ~50% of the
time when called concurrently. The existing retry covered the empty
case, but on systems that hit the parser bug above, the retry's parsed
output was the same broken-shape failure and setUpgradeable was still
skipped.

fetchPackages and startBackgroundRefresh now run the two queries
sequentially. Cold start is ~1s slower; subsequent restarts are
unaffected because the disk cache covers them for 24h.

Notes

  • No setting changes, no breaking changes, no new Win32 surface.
  • settings.json and cache.json formats are fully backward
    compatible.
  • Regression coverage:
    testdata/winget/upgrade_narrow_columns.txt exercises the
    WireGuard-shaped header that triggered the bug end-to-end.

Verification

VirusTotal scans of the published artifacts for v2.7.2 (run 2026-05-08):

Asset SHA256 Detections Report
wintui_2.7.2_windows_amd64.exe (6.8 MB) ae1e0601cea1… 1/71 VT report
wintui_2.7.2_windows_amd64.zip (2.4 MB) 32000162a2b2… 0/68 VT report
wintui_2.7.2_windows_arm64.exe (6.3 MB) 3d1663a19ffb… 1/69 VT report
wintui_2.7.2_windows_arm64.zip (2.2 MB) ce29e78f7fbb… 0/67 VT report

Detections at scan time were single-vendor low-signal ML/reputation noise. Microsoft Defender returned clean across all artifacts.

Full SHA256 hashes:

  • wintui_2.7.2_windows_amd64.exe: ae1e0601cea12a389cac5f4720bbf280f50a2f89151af6fd2f45fbe12b8c82bd
  • wintui_2.7.2_windows_amd64.zip: 32000162a2b2f988960490ad7df9965b8a06be8a42a135f34f0f1db89ac351c6
  • wintui_2.7.2_windows_arm64.exe: 3d1663a19ffbb1681d7af9021810722045b50ab2d0b3f3a0dde9b6daafe7ab4b
  • wintui_2.7.2_windows_arm64.zip: ce29e78f7fbb9df937d16807c8cc62eded44afe3172a001e619502c2bebfb04f