Skip to content

Queue summary, retry failed and log menu (#24, part 2) - #26

Merged
FedeB2160 merged 6 commits into
feat/details-sourcefrom
feat/repair-queue
Oct 14, 2026
Merged

FedeB2160 merged 6 commits into
feat/details-sourcefrom
feat/repair-queue

Conversation

@FedeB2160

@FedeB2160 FedeB2160 commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Second of three PRs for #24. It is built on #25 and retargets to main once #25 is merged.

Repair: tried and removed

Repair was implemented and tested in Windows Sandbox, then removed. winget repairs an MSI with msiexec /f, which re-reads the original MSI. winget deleted that MSI after the install, so the repair fails with Error 1706 and exit 1603, and the same happens from a terminal. The evidence is in ADR 0018 and on #24. What remains: the message for a mismatched account names the queue's verb instead of always saying "uninstall".

Queue report

  • Summary. Every queue ends with one line counted from its rows: Update complete: 5 ok, 1 with warnings, 2 failed, 3 not run. A cancelled queue gets the same counts.
  • Retry failed (N), above the log, runs the last queue again on its failed rows, after a Yes/No confirmation with No as the default, through Start-WinGetQueue, so there is still one choke point (ADR 0003).
    • Only failed rows that are still in their list count. After a rescan the old objects drop out, with no hook in the scans.
    • The Updates "press Check" lock does not apply: it protects against re-running rows that succeeded.
  • Right-click the log: Copy, Select all, Save log... (a UTF-8 text file) and Clear log. A custom menu replaces the TextBox's standard one, so Copy and Select all are put back. The rule that menu entries say "highlighted" now applies to the grid menus only.

Docs

Tests

  • Repair is absent on purpose: a test fails if BtnRepair or Start-RepairSelected comes back.
  • Get-QueueSummary, including that zero counts are left out.
  • Get-RetryRows: a failed row no longer in its list is not retried.
  • The Retry button shows and hides, and is disabled while busy; Start-RetryFailed confirms with No as the default.
  • The log menu has Copy, Select all, Save log... and Clear log; Write-LogFile keeps an accented letter, and Clear log empties the log.
  • -Live: the full queue cycle (cancelled with 1 of 5 run) now also checks the summary line and that Retry failed appears with the failed count.

Both suites pass offline, and Test-Ui.ps1 -Live passes. I checked the log header layout in a render of the window.

🤖 Generated with Claude Code

Repair in the Installed tab runs the installer of the ticked packages
again, behind the same confirmation as uninstall, on the shared queue.
winget's 'not supported' codes (0x8A150079/7A/7C) become a readable
row detail; the 0x8A15007D retry without elevation already covers it.

Every queue ends with a summary counted from its rows. Retry failed (N)
above the log reruns the last queue on its failed rows that are still
in their list, after a confirmation, through Start-WinGetQueue. Save
log writes the log to a UTF-8 file.

Part of #24.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
FedeB2160 and others added 4 commits October 14, 2026 13:59
Without --source, winget repair looks the package up in every source;
with the Store unreachable (Windows Sandbox) it stopped on 0x8A15003B,
a REST error, before repairing anything.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Repair was tested in Windows Sandbox and removed. With --source winget
the repair ran, but winget repairs an MSI with msiexec /f, which re-reads
the original MSI; winget deleted it after the install (Error 1706, exit
1603). Every MSI installed by winget is in that state, so the button
would almost always fail. The evidence is in ADR 0018.

Save log... and a new Clear log move from a button to the log's
right-click menu, next to Copy and Select all, which a custom menu would
otherwise take away. The 'highlighted' rule for menu entries now applies
to the grid menus only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@FedeB2160 FedeB2160 changed the title Repair, queue summary, retry failed and save log (#24, part 2) Queue summary, retry failed and log menu (#24, part 2) Oct 14, 2026
After a queue the tab's own list is read again (Load-Upgrades /
Load-Installed -KeepOutcome) and each row's outcome is carried over to
the new rows by Id, so the Result column and Retry failed survive: the
reason there was no automatic rescan. Lists of other tabs are marked
stale and read again when their tab is opened. No more 'press Check' or
'press Refresh'.

Retry failed (N) moves from above the log to the top right of each tab,
shown only where the list holds failed rows; the rows to retry are found
by Id, so they are the refreshed objects.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@FedeB2160
FedeB2160 merged commit f1d16a9 into feat/details-source Oct 14, 2026
2 checks passed
FedeB2160 added a commit that referenced this pull request Oct 14, 2026
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