fix(update): discover dormant winget installs + don't skip a non-running broker#522
Merged
Merged
Conversation
…ing broker Two self-update fixes from live-Windows testing. #1 — a dormant WinGet install was invisible to `uffs --update`. Root discovery was anchor-only (invoking exe + running daemon/broker/mcp), so with nothing running from the winget copy and `--update` invoked from a hand-placed ~\bin copy, the winget root had no anchor and was never found — the updater could neither see nor reconcile it. WinGet doesn't expose a portable package's path (`winget list` prints the version, not the folder), but the location is deterministic, so detect() now also scans `…\Microsoft\WinGet\Packages\ SkyLLC.UFFS_*` (user + machine scope) and adds any root holding uffs.exe. Windows-only; a no-op elsewhere. New `Anchor::Winget`. #2 — the "Access Broker was left running and NOT updated" note fired even when no broker service was running (a plain hand-placed uffs-broker.exe), and the binary was needlessly skipped from the swap. The broker is only un-updatable when it's a *running* LocalSystem service (locked .exe, needs elevation to cycle). Gate the skip on Snapshot::broker_is_running(): otherwise treat uffs-broker.exe as any other binary and swap it in place, no note. Tests: winget package-folder matching + one-level root scan (tempdir, cross-platform); broker_is_running needs a running entry not just a binary. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…[Unreleased] Keep [Unreleased] populated per-PR so the ship roll has something to move — the habit that had gone stale (0.6.19-0.6.22 shipped undocumented). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two self-update fixes from live-Windows testing (issues #1 and #2 from the dual-install
uffs --updaterun).#1 — a dormant WinGet install was invisible to
uffs --updateRoot discovery was anchor-only (invoking exe + running daemon/broker/MCP). With nothing running from the winget copy and
--updateinvoked from a hand-placed~\bincopy, the winget root had no anchor → never found, never reconciled. WinGet doesn't expose a portable package's path (winget listprints the version, not the folder), but the location is deterministic, sodetect()now also scans…\Microsoft\WinGet\Packages\SkyLLC.UFFS_*(user + machine scope) and adds any root holdinguffs.exe. Windows-only; a no-op elsewhere. Newwinget_discovermodule +Anchor::Winget.#2 — broker note fired when no broker was running
The "Access Broker was left running and NOT updated" note fired even for a plain hand-placed
uffs-broker.exewith no service — and the binary was needlessly skipped. The broker is only un-swappable when it's a runningLocalSystemservice. Now gated onSnapshot::broker_is_running(); otherwiseuffs-broker.exeis swapped in place like any binary, no note.(#3 from that session was the user's own
delof the other binaries — the "missing core → restore" behavior was correct; no change.)Tests
winget package-folder matching + one-level root scan (tempdir, cross-platform);
broker_is_runningneeds a running entry not just a binary. Clippy clean on both crates.Changelog
Adds an
[Unreleased]entry (renewing the per-PR habit that had gone stale).