Skip to content
Helm v0.19.0 is live. The stable release introduces the Wayfinder native-experience foundation, integrated update planning, and offline resilience. v0.18.0 remains withdrawn; users of v0.18.0 should update to v0.19.0. Report issues on GitHub.

Changelog

All notable changes to Helm are documented here. The format is based on Keep a Changelog and follows SemVer-compatible versioning.

For the full changelog, see CHANGELOG.md on GitHub.

Latest entries below reflect the current release-finalization snapshots.


Patch 0.18.2 is the final v0.18 containment release before production v0.19 native-experience and first-run implementation.

  • An append-only SQLite migration identity manifest records released migration versions, names, up/down SQL, and SHA-256 definition checksums.
  • Migration 20 persists and backfills migration-definition checksums, with verified private pre-migration backups providing bounded recovery points.
  • Project WOW first-run contracts and the Native Mac Experience audit, information architecture, prototypes, state matrix, quality budgets, research protocol, and migration map form the closed v0.18 design baseline.
  • SQLite initialization validates ledger continuity and immutable migration identity, separates default debug databases from release data, and propagates failures through CLI, FFI, XPC, and Service Health paths.
  • Release CI exercises persisted SQLite upgrade, rollback, tampering, backup, CLI, and FFI boundaries through the shared migration-compatibility gate.
  • Pre-1.0 planning targets Health, Updates, Packages, Activity, and Sources, with separate Settings, contextual diagnostics, command-based search, and explicit Helm, Helm Pro, and Helm Fleet boundaries.
  • Unknown, missing, reordered, renamed, or checksum-mismatched migration ledger entries fail closed.

The design artifacts are planning contracts only; this release does not add the planned first-run or redesigned UI behavior.

Patch 0.18.1 is the corrective stable successor to withdrawn v0.18.0.

  • SQLite startup now reconciles the known development migration 17 collision before applying the released doctor/repair schema, preserving existing user data.
  • Already-current databases no longer replay destructive historical DDL during startup, preserving package identifiers and making repeated migration initialization idempotent.
  • Rust service initialization now succeeds for affected databases, restoring Refresh task submission and Helm CLI installation after updating to v0.18.0.

Withdrawn: v0.18.0 was removed from public distribution after discovery of a critical SQLite migration defect. Its immutable release record remains for auditability; v0.18.1 is the corrective stable successor. Users of v0.18.0 should update to v0.18.1 before further use.

Helm 0.18.0 publishes the local doctor/repair foundation and internal security-advisory cache groundwork.

  • SQLite-backed doctor scan generations, finding lifecycle, repair knowledge, local overrides, provenance, and repair history.
  • Deterministic finding fingerprints and scoped scan completion semantics across CLI and FFI/XPC paths.
  • Internal advisory records and cache persistence with normalized identity, freshness evaluation, deterministic ordering, and pruning.
  • Repair planning resolves persisted, integrity-checked knowledge through a compiled allowlist of typed actions.
  • Repair execution revalidates active findings, records history, and verifies outcomes with follow-up scans.
  • Knowledge imports reject forged trust, policy weakening, equivocation, protected rebinding, unknown actions, and executable payload content.
  • Advisory providers, scheduler integration, doctor advisory findings, and public advisory UI/CLI surfaces remain deferred beyond 0.18.x.

Patch 0.17.12 moves bulk and scoped upgrade workflow sequencing into the Rust execution boundary.

  • Authority phases now wait for every submitted task to become terminal before standard or guarded manager work is scheduled.
  • Scoped-workflow cancellation prevents later phase submission while preserving individual task cancellation and diagnostics.
  • Indeterminate workflow-status probes recover UI state after a bounded retry window without moving execution ownership into SwiftUI.
  • SwiftUI submits and renders scoped upgrade workflows while Rust/FFI/XPC owns their sequencing.

Patch 0.17.11 ships manager lifecycle, release-process, and execution-safety hardening.

  • Manager install-instance provenance now records ownership confidence, competing evidence, and the active instance across core, CLI, service, and GUI surfaces.
  • Manager and package uninstall flows now provide provenance-aware blast-radius previews before mutating the system.
  • Manager install, update, and uninstall planning now shares deterministic lifecycle routing across the CLI, FFI, and GUI.
  • Release automation now validates existing releases before auxiliary builds, produces deterministic provenance manifests, and verifies publication metadata convergence.
  • Cancellation now terminates registered processes after the grace period, including callers waiting on terminal state.
  • MacPorts self-uninstall cleanup rejects unsafe paths, and XPC access now accepts only the Helm application caller.
  • Dependency upgrades resolve known Rust and web-package vulnerabilities while retaining CI compatibility.

Patch 0.17.10 focuses on final stable-line hardening before broader 0.18.x work begins.

  • Doctor/repair now detects stale selected manager executable overrides and can clear them locally through the existing repair flow.
  • Executable discovery now accounts for non-default CARGO_HOME, ASDF_DIR, ASDF_DATA_DIR, and modern mise/rtx shim and install roots more consistently across core, FFI, and CLI surfaces.
  • Catalog-sync participation is now explicitly scoped instead of being inferred from generic package-search participation.
  • Onboarding no longer risks clobbering a valid discovered rustup executable path during follow-up detection.
  • Non-default cargo, cargo-binstall, and rustup installs now route execution through the correct resolved binary path instead of assuming ~/.cargo/bin.
  • Executable discovery caches now self-heal when cached paths disappear and are invalidated on recent manager lifecycle transitions.

Patch 0.17.9 completes current-scope manager adapter coverage and package workflow hardening ahead of the 0.18.x doctor/repair and local-security cycle.

  • Rustup package workflows are now first-class in Helm, including toolchain search/install/uninstall/upgrade and rustup toolchain detail controls for components, targets, profile, default toolchain, and directory overrides.
  • End-to-end orchestration coverage now spans the remaining manager adapters, including Homebrew casks, MacPorts, the remaining language managers, and the guarded/status system adapters.
  • Manager adapter scope is now explicitly documented so package, status, and detection-only managers are considered complete relative to Helm’s product model.
  • Package-family workflows now keep the main package surfaces collapsed while moving exact version/member targeting into inspector and install flows.
  • Homebrew formulae and casks, asdf, mise, and rustup are now treated as complete first-class package workflows within Helm’s intended scope.
  • Version-scoped virtual pinning now applies coherently across GUI, CLI, and TUI for multi-version managers.
  • Shared package-search participation policy is now consistent across core, CLI, TUI, and FFI surfaces.
  • Homebrew-backed outdated detection for colima, podman, and docker-desktop is now provenance-aware instead of assuming Homebrew ownership for non-Homebrew installs.
  • Cargo-binstall end-to-end tracking coverage now waits deterministically for persisted mutation state, eliminating the observed CI race in tracked-package assertions.
  • Managed Helm CLI shim installation now routes through the service helper path and validates the final shim state so sandboxed app builds install a non-quarantined shim correctly.

Patch 0.17.8 finalizes manager lifecycle parity expansion and managed CLI shim hardening.

  • Expanded manager lifecycle parity across core, CLI, FFI, and GUI for planner-backed manager install/update/uninstall paths.
  • Merged the manager lifecycle parity sweep into one stable patch cut.
  • Managed CLI shim installs now stage through a temporary .helm.tmp file before replacement.
  • Managed CLI shim flow now clears quarantine attributes to avoid blocked execution.
  • Release preflight now avoids the unsupported gh secret list --limit invocation path.

Patch 0.17.7 closes the pre-release quality audit and release-gate blockers.

  • Runtime queue timeout diagnostics now include heartbeat logging and richer timeout/cancellation context.
  • Timeout process coverage now verifies child process-group cleanup to prevent orphaned processes.
  • Refresh orchestration now logs effective timeout derivation as min(policy_timeout, orchestration_cap) with retry context.
  • Graceful cancellation now re-checks terminal state before forced abort.
  • Removed remaining Homebrew adapter clippy blockers and strict-clippy regressions in touched CLI/FFI surfaces.
  • Hardened runtime-queue waits to remove an intermittent rustup timeout race.

Patch 0.17.6 hardens refresh reliability and diagnostics after the v0.17.5 release cycle.

  • Task diagnostics now include effective working directory, timing, exit metadata, and structured error attribution.
  • Diagnostics summary now includes failure-class counters to speed triage.
  • Coordinator health diagnostics now surface stale-state reasons (dead PID, missing executable target, invalid ready payload).
  • Coordinator request handling now performs one stale-state recovery retry on timeout.
  • Refresh/search request-response now retries once for transient timeout and network-resolution failures.
  • npm list timeout was increased from 60s to 120s.
  • Process execution now falls back to a valid existing working directory when a recorded cwd no longer exists.

Patch 0.17.5 finalized the release-process hardening phases delivered after v0.17.4.

  • Added release preflight and runbook operator scripts for prepare, tag, publish, and verify.
  • Release workflows now keep hard failures for true artifact/signing issues while reporting follow-up-required status for open metadata publish PRs.
  • Added publish verification and drift-guard checkpoints to reduce release metadata divergence risk.

Patch 0.17.2 ships post-0.17.x manager-control, onboarding/detection, and Control Center execution-plan fixes as a stable incremental release.

  • Manager Inspector executable/install-method selection is now actionable and persisted, including explicit PATH-default executable mode.
  • Failed-task diagnostics panes now support selectable text and Copy All controls for diagnostics, stderr, stdout, and logs.
  • Runtime detection now emits structured per-manager timing telemetry with slow-detection warnings at >=3000ms.
  • Core manager execution now uses selected executable overrides instead of implicit PATH dependency, and manager install/update/uninstall flows honor selected install method where implemented (mise, mas, rustup).
  • Onboarding detection now runs detection-only (no immediate refresh list work), pre-seeds manager presence immediately, and shows localized Loading placeholders until version probes finish.
  • License acceptance now appears as onboarding step 2 and no longer loops onboarding after acceptance.
  • Execution-plan modal presentation is now host-scoped to the initiating surface (Control Center vs popover), preventing duplicate modal presentation.
  • Disabled managers are now enforced across refresh/search/package/task behavior, centralized task submission, and in-flight cancellation.
  • Manager executable discovery now falls back to direct filesystem probing when which lookup fails.
  • Packages and Tasks list dark-mode backgrounds now align with app branding.
  • Removed deprecated execution-plan Dry Run action.

Patch 0.17.1 supersedes the failed v0.17.0 artifact build attempt and ships stable signed artifacts from the corrected release source.

  • Stable macOS release builds now include the LocalizationManager explicit-self capture fix required by release compilation settings.
  • Release packaging now publishes signed/notarized artifacts from the corrected 0.17.1 tag lineage instead of the failed v0.17.0 tag build.

Stable 0.17.0 consolidates all rc.1 through rc.5 deliveries and includes final release-readiness hardening across diagnostics, updater reliability, responsiveness, and website release surfaces.

  • Diagnostics/logging capabilities are now fully shipped in stable (task lifecycle log persistence, Inspector log filtering/pagination, structured support export redaction, service health diagnostics, and manager detection diagnostics).
  • Packages include localized Pinned filtering (with Upgradable exclusion), and popover search now supports quick icon actions for install/uninstall/update/pin.
  • Failed-task inline command/output expansion and manager-error View Diagnostics entry points are now available for operator troubleshooting.
  • Privileged manager operations now trigger administrator authentication via managed sudo -A askpass handling.
  • Website now includes a blog section with RSS feed support, blog social-share actions, and right-aligned landing nav links for Blog and Docs.
  • Pre-stable hardening centralized manager-display-name localization mapping, moved localization diagnostics to structured logger output, introduced lower-frequency idle polling cadence, and enforced default SQLite pragmas for resilience.
  • Rust build generation now fingerprints Rust/script/build inputs and skips redundant artifact rewrites when unchanged.
  • Sparkle appcast release notes now point to website-hosted release notes pages generated from the changelog.
  • Developer ID onboarding now requires license-terms acceptance tracked by version/timestamp with About-surface re-review access.
  • Popover and Control Center are now mutually exclusive with deep links from popover health/metric cards into target Control Center sections.
  • Software Update manager now maps to valid SF Symbol applelogo.
  • Manager-priority drag now takes precedence over window drag-to-move in Managers.
  • Inflight task dedupe now favors running/newest rows so command/live output remains populated when backend output exists.
  • Terminal task retention now starts from completion/failure transition time and includes cancelled cleanup behavior.
  • Swift lint rule config/usage is now aligned with current rule identifiers to avoid stale lint noise.
  • Packages now include a localized Pinned filter, and Upgradable excludes pinned packages.
  • Popover package search rows now include quick icon actions for install, uninstall, update, and pin.
  • Failed tasks now support inline command/output expansion (single-expanded-task behavior), and manager inspector error states now include View Diagnostics.
  • Privileged manager actions now prompt for administrator authentication via a managed sudo -A askpass flow when elevation is required.
  • Control Center/popover responsiveness improved with section-scoped derived-state snapshots, adaptive polling cadence, and lazy container usage in scroll-heavy surfaces.
  • Inflight task deduplication now prefers running/newest rows so command/live output remains populated when backend output exists.
  • Task terminal retention timing now starts at completion/failure transition time to preserve diagnostics visibility.
  • Package and inspector actions now use compact icon affordances with tooltip labels for narrow layouts.
  • Software Update manager now maps to valid SF Symbol applelogo.
  • Manager-priority drag interactions now take precedence over window drag-to-move behavior in Managers.
  • Manager inspector executable-path lists are now scrollable when the list is long.

  • Settings now include a Launch Helm at login toggle (macOS 13+), with localized unsupported guidance on older systems.
  • Manager inspector now lists all discovered executable paths, emphasizing the active executable.
  • Manager inspector now exposes install-method metadata through a disabled dropdown with localized recommended/preferred tags.
  • Managers are now drag-reorderable within authority groups, with Restore Manager Priority in advanced settings.
  • Sparkle appcast entries now link to website-hosted per-tag release notes pages.
  • Developer ID onboarding now requires current license-terms acceptance (tracked by version/timestamp) with automatic re-prompt on license-version changes.
  • About now includes View License Terms plus build/channel/update-authority/last-update-check metadata.
  • Popover and Control Center are now mutually exclusive, with popover health/metric cards deep-linking to Control Center sections.
  • Popover outside-click handling now responds only to click events (not pointer movement).
  • Popover hover cursor forcing was removed so interactive controls keep expected hover affordances.
  • Reset local data now clears persisted license-acceptance state.
  • Executable-path discovery now skips undetected managers and caches detected-manager discovery results.

  • Non-App-Store prerelease builds now preserve prerelease marketing versions so Sparkle “up to date” messaging reflects full RC versions (for example, 0.17.0-rc.3).
  • Running task rows now support inline expand/collapse details with single-row expansion behavior per task list.
  • Package list and popover search now consolidate same-name packages across managers into one row and list all matching managers under the package name.
  • Inspector package descriptions now render HTML summaries as attributed text so bold/italic/code formatting is preserved, with plain-text fallback if parsing fails.
  • Inspector detail content now stays full-width and leading-aligned, avoiding centered narrow text columns when values are short.
  • Running-task inline details now show the resolved command and a live-updating output panel.
  • Hungarian locale coverage now includes the newly added task/inspector UX copy.
  • Prerelease updater eligibility now rejects bundle metadata mismatches that can cause release-candidate version labeling drift.
  • Inspector description links now only allow safe http:///https:// destinations.
  • Task output buffering now enforces bounded command/output storage for long-running tasks.

  • Sparkle appcast generation now preserves prerelease display versions (for example, 0.17.0-rc.2) in sparkle:shortVersionString and appcast item titles.
  • Release automation now passes tag-derived display versions into appcast generation for prerelease tags.
  • Release DMG verification now enforces Sparkle installer-launcher and sandbox entitlement requirements for updater compatibility.
  • Enabled Sparkle installer launcher service metadata in Helm app bundles for sandboxed update installs.
  • Added required Sparkle sandbox entitlement exceptions for installer/status mach services and shared preference access.
  • Fixed updater install failures seen in v0.17.0-rc.1 where Sparkle could download updates but fail launching the installer.

  • Diagnostics/logging release-candidate delivery for v0.17.x:
    • SQLite-backed task lifecycle logs and retrieval APIs
    • Inspector task-log viewer with level/status filters and pagination
    • Structured support export payloads with redaction
    • Settings service-health diagnostics panel
    • Manager detection diagnostics in Inspector
  • Hungarian (hu) locale bootstrap added across app + service localization files with language-picker support.
  • SupportRedactor test coverage added for support-export redaction guarantees.
  • Diagnostics/reporting now preserves attributed last-error context (source, action, manager, task_type) across fetch/action/settings paths.
  • Third-party licensing compliance baseline documentation is now tracked in release prep for RC handoff.
  • Manager display-name localization coverage expanded across all implemented manager IDs with brand-preserving labels.
  • Task-log ordering in diagnostics now presents newest entries first.
  • Hungarian onboarding copy shortened to pass layout-overflow validation thresholds.

  • Sparkle feed access now works in sandboxed builds via com.apple.security.network.client app entitlement.
  • Sparkle startup now clears persisted feed URL overrides and logs the resolved feed URL used for manual checks.
  • Release workflow now fails fast when HELM_SPARKLE_FEED_URL is not DNS-resolvable or not https://.
  • macOS deployment target baseline lowered to 11.0 across app, service, and tests.
  • Version metadata source-of-truth bumped to 0.16.2 so generated appcast short version aligns with release tags.

  • Documentation-only rollout restructuring (no security feature implementation shipped).
  • Added staged security model:
    • Stage 1 (0.18.x) local internal groundwork
    • Stage 2 (1.3.x) Security Advisory System (Pro, local-first, optional public advisory APIs, local TTL cache)
    • Stage 3 (1.4.x) Shared Brain (fingerprint sharing, known-fix lookup, centralized backend, App Attest controls)
  • Moved previous 0.18.x hardening scope to 0.19.x.
  • Shifted previous 1.4.x+ roadmap milestones forward by one minor version.
  • Updated documented minimum platform to macOS 11+ (Big Sur) in README/website installation references.

0.16.0 — 2026-02-21 (Release Finalization Snapshot)

Section titled “0.16.0 — 2026-02-21 (Release Finalization Snapshot)”
  • Channel-aware update configuration and direct-channel Sparkle integration scaffolding in the macOS app.
  • Signed appcast generation and publication path for direct Developer ID releases.
  • Expanded support surfaces with six-channel “Support Helm” actions in both Settings and status-menu flows.
  • Runtime self-update gating now blocks package-manager-managed, translocated, and DMG-mounted installs.
  • Release automation now enforces appcast policy validation and deterministic rerun-safe artifact publication.
  • Upgrade transparency surfaces now include richer diagnostics (diagnostics, stderr, stdout) and clearer review-first failure handling.

  • End-to-end upgrade-plan preview model with scoped execution controls and failed-step retry.
  • Inspector task-output retrieval with command context for troubleshooting.
  • Scoped bulk upgrade execution now runs by authority phase with stronger stale-callback and timeout guards.
  • Updates/Inspector UX refined for long-plan scrolling, row selection hit targets, and explicit execution feedback.

  • Promoted 0.14.x alpha and rc delivery slices into the stable v0.14.0 checkpoint
  • Aligned release status metadata across README, docs, website, and generated version artifacts

  • Completed 0.14 manager rollout across alpha.1 through alpha.5:
    • Container/VM managers: Docker Desktop, podman, colima
    • Detection-only managers: Sparkle, Setapp, Parallels Desktop
    • Security/Firmware managers: Xcode Command Line Tools, Rosetta 2, Firmware Updates
    • Optional managers: asdf, MacPorts, nix-darwin
    • Homebrew cask status manager (homebrew_cask)
  • Added 0.14 manager capability sweep artifact at docs/validation/v0.14.0-alpha.5-manager-capability-sweep.md
  • Added future-state distribution/licensing planning docs:
    • multi-channel build matrix (MAS, Developer ID, Setapp, Fleet)
    • channel licensing/update authority mapping
    • staged roadmap phases for Sparkle, MAS, Setapp, Fleet, PKG/MDM, and offline licensing
  • FFI manager status now reports full 0.14 implementation baseline (isImplemented=true for all registry managers)
  • Optional managers remain default-disabled until explicitly enabled (asdf, macports, nix_darwin)
  • Swift fallback manager metadata aligned to 0.14 implementation coverage
  • Clarified consumer vs fleet lifecycle separation in architecture/enterprise planning docs (documentation-only)

  • Website: changelog page, visual tour with 10 UI screenshots, FAQ & troubleshooting guide
  • Website: Open Graph and Twitter Card meta tags for social sharing
  • Website: Starlight lastUpdated timestamps on all pages
  • Promoted 0.13.x beta and rc slices into the stable v0.13.0 checkpoint

  • “Support & Feedback” card in control-center Settings with 5 action buttons: Support Helm (GitHub Sponsors, Patreon, Buy Me a Coffee, Ko-fi, PayPal, Venmo), Report a Bug, Request a Feature, Send Feedback (mailto), Copy Diagnostics
  • “Include Diagnostics” toggle that copies diagnostics to clipboard before opening GitHub issue templates
  • Transient “Copied!” confirmation with animated opacity transition
  • “Support Helm” destinations now include all six configured channels (GitHub Sponsors, Patreon, Buy Me a Coffee, Ko-fi, PayPal, Venmo)
  • .github/FUNDING.yml for GitHub Sponsors and Patreon integration, with direct support links for Buy Me a Coffee, Ko-fi, PayPal, and Venmo
  • 11 new L10n keys across all 6 locales
  • AppDelegate decomposed to satisfy SwiftLint file/function length thresholds
  • README.md updated with funding links and issue template links

  • Inspector sidebar task detail view with status badge, task type, manager name, label key, and label args
  • Post-upgrade validation across all 11 adapter upgrade handlers — prevents silent upgrade failures
  • Control Center menu item in status menu right-click
  • Manager inspector enriched with health badge, installed/outdated counts, and View Packages navigation
  • Security Advisory System milestone added to ROADMAP.md (1.3.x)
  • 16 new L10n keys for inspector views across all 6 locales
  • Inspector selection clearing: selecting a manager no longer shows stale package inspector
  • RubyGems upgrade tasks showing “completed” when packages were not actually updated
  • Task labels now include package names for upgrade tasks across all managers

  • Structured #[instrument] tracing spans on adapter execution entry points
  • Unit tests for Homebrew split_upgrade_target() function
  • On-device validation report template and usability test plan
  • INTERFACES.md Section 10 filled with concrete XPC, FFI, and SQLite inventories

  • XPC timeout enforcement on all service calls (30s data fetches, 300s mutations)
  • Exponential backoff on XPC reconnection (2s base, doubling to 60s cap)
  • Search deduplication logic extracted from views to HelmCore
  • Task-to-manager inference removed: tasks now carry managerId directly
  • Authority, capability, and symbol lookups consolidated as ManagerInfo computed properties
  • Legacy redesign scaffold removed (18 files)

  • Guided onboarding walkthrough with SpotlightOverlay component (6 popover + 7 control-center steps)
  • WalkthroughManager with UserDefaults persistence, skip, and replay from Settings
  • 31 walkthrough L10n keys across all 6 locales
  • Onboarding copy updated across all 6 locales for friendlier tone

  • VoiceOver accessibility support across all interactive UI elements
  • Task cancel button wired to XPC cancelTask method
  • Per-manager “Upgrade All” button in Managers view
  • CI test enforcement (ci-test.yml with cargo test + xcodebuild test)
  • HelmCore decomposed from 1,133 lines into 5 files
  • DashboardView decomposed from 1,919 lines into 4 files
  • SwiftLint thresholds tightened

  • Universal-build support for Apple Silicon + Intel
  • Release automation workflow for signed DMG packaging
  • Beta binary installation guidance on website

  • Redesigned menu bar popover with updates attention banner, layered overlays, and right-click quick actions
  • Redesigned control-center with titlebar-hidden presentation, integrated global search, and card-based Settings
  • Keyboard shortcuts (Cmd+F, Esc, Cmd+W)

  • Localization hardening across all 6 shipped locales (key parity, placeholder consistency, overflow validation)
  • Dedicated Upgrade Preview UI surface with execution-plan sections
  • Dry-run support in Upgrade Preview flow

  • Bounded retry handling for transient task-store persistence failures
  • Regression coverage for refresh-response error attribution

  • Priority 1 core language-manager support: npm (global), pipx, pip (global), cargo, cargo-binstall
  • Package-identifier validation on mutating adapter actions
  • Poisoned-lock recovery at FFI boundary

  • Internationalization foundation: LocalizationManager, type-safe L10n accessor, JSON locale architecture
  • Language picker in Settings (persisted to UserDefaults)
  • All user-facing strings localized

  • End-to-end pinning and policy controls (native Homebrew pin/unpin, virtual pin fallback, safe mode)
  • Individual package upgrade actions for Homebrew, mise, and rustup
  • helm_upgrade_all orchestration with pin filtering and safe-mode enforcement

  • Manager update/self-update controls (Homebrew update, mas/mise upgrades, rustup self-update)
  • Authority-order regression tests for capability-aware refresh
  • mas package parsing using app names instead of numeric IDs