fix(software-updater): fix winget parsing bugs and add ignore feature#59
fix(software-updater): fix winget parsing bugs and add ignore feature#59
Conversation
Fix two user-reported winget parsing issues: - Strip "< " version prefix (like existing "> " handling) and skip entries where stripped version equals available (e.g. Driver Booster falsely showing as outdated) - Strip trailing version numbers from display names (e.g. "HandBrake 1.11.0" → "HandBrake") Add persistent ignore feature so users can hide apps from the update list across sessions. Ignored app IDs are stored in KuduSettings and survive app restarts and re-checks. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 330942ad55
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…tition on load - Add `ignoredSoftwareUpdates` to `validateSettingsPartial` allowed keys with array-of-strings validation, so settingsSet() actually persists - Make `loadIgnoredIds` repartition already-loaded apps (moves entries from `apps` to `ignoredApps`) so background scans don't leave ignored apps visible - Load ignored IDs in `useBackgroundScans` before the software check so the first setApps() call partitions correctly - Add 4 ipc-validation tests for the new field Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4d9e962d17
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…dIgnoredIds Rebuild both lists from the combined pool of apps + ignoredApps so that a changed ignore set (e.g. from a stale/fresh read race) correctly removes entries that are no longer ignored instead of leaving them stuck. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fe43bd6b7f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| // When winget reports "< X" for the installed version and X matches the | ||
| // available version, it cannot determine the real version — the app is | ||
| // likely already up to date, so skip it. | ||
| if (version === available) continue |
There was a problem hiding this comment.
Gate equal-version skip on the original '<' marker
The new if (version === available) continue filter is broader than the intended fix and now suppresses every row with equal version strings after normalization, not just the "< X" ambiguity case described in the comment. If winget emits equal versions for other upgradeable cases (for example metadata/installer transitions), those updates are silently dropped from apps and cannot be acted on. Preserve whether the installed version originally had the < prefix and apply the equality skip only for that path.
Useful? React with 👍 / 👎.
Summary
<version prefix from winget output (like existing>handling). When the stripped version equals the available version, the app is already up to date — skip it.KuduSettingsand persist across app restarts and re-checks. A collapsible "Ignored" section lets users restore previously ignored apps.Changes
software-updater.ts:stripTrailingVersion()helper,<prefix stripping, skip-if-equal logicupdater-store.ts:ignoredApps,ignoredIds,ignoreApp(),unignoreApp(),loadIgnoredIds();setApps()auto-splits by ignored statusSoftwareUpdaterPage.tsx: Ignore button on each row, collapsible ignored section with restore, race-condition-safe settings load before auto-scan, fixed "all up to date" and toast counts to exclude ignored appstypes.ts+ bothsettings-store.ts: AddedignoredSoftwareUpdates: string[]toKuduSettingsupdates.json: Added i18n keys for ignore/unignore/ignored sectionsoftware-updater.test.ts: 8 new tests for<prefix, version-equal skip, name stripping,stripTrailingVersion()Test plan
npx vitest run— 49/49 tests pass onsoftware-updater.test.tsnpx tsc --noEmit— 0 new TypeScript errors (8 pre-existing)🤖 Generated with Claude Code