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.
0.17.10 — 2026-03-11
Section titled “0.17.10 — 2026-03-11”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.
Changed
Section titled “Changed”- Executable discovery now accounts for non-default
CARGO_HOME,ASDF_DIR,ASDF_DATA_DIR, and modernmise/rtxshim 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
rustupexecutable path during follow-up detection. - Non-default
cargo,cargo-binstall, andrustupinstalls 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.
0.17.9 — 2026-03-11
Section titled “0.17.9 — 2026-03-11”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.
Changed
Section titled “Changed”- 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, anddocker-desktopis 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.
0.17.8 — 2026-03-03
Section titled “0.17.8 — 2026-03-03”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.
Changed
Section titled “Changed”- Merged the manager lifecycle parity sweep into one stable patch cut.
- Managed CLI shim installs now stage through a temporary
.helm.tmpfile before replacement. - Managed CLI shim flow now clears quarantine attributes to avoid blocked execution.
- Release preflight now avoids the unsupported
gh secret list --limitinvocation path.
0.17.7 — 2026-02-26
Section titled “0.17.7 — 2026-02-26”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.
Changed
Section titled “Changed”- 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.
0.17.6 — 2026-02-24
Section titled “0.17.6 — 2026-02-24”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).
Changed
Section titled “Changed”- 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.
0.17.5 — 2026-02-24
Section titled “0.17.5 — 2026-02-24”Patch 0.17.5 finalized the release-process hardening phases delivered after v0.17.4.
Changed
Section titled “Changed”- Added release preflight and runbook operator scripts for
prepare,tag,publish, andverify. - 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.
0.17.2 — 2026-02-22
Section titled “0.17.2 — 2026-02-22”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 Allcontrols fordiagnostics,stderr,stdout, andlogs. - Runtime detection now emits structured per-manager timing telemetry with slow-detection warnings at
>=3000ms.
Changed
Section titled “Changed”- 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
Loadingplaceholders 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
whichlookup fails. - Packages and Tasks list dark-mode backgrounds now align with app branding.
- Removed deprecated execution-plan
Dry Runaction.
0.17.1 — 2026-02-22
Section titled “0.17.1 — 2026-02-22”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
LocalizationManagerexplicit-selfcapture fix required by release compilation settings. - Release packaging now publishes signed/notarized artifacts from the corrected
0.17.1tag lineage instead of the failedv0.17.0tag build.
0.17.0 — 2026-02-22
Section titled “0.17.0 — 2026-02-22”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
Pinnedfiltering (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 Diagnosticsentry points are now available for operator troubleshooting. - Privileged manager operations now trigger administrator authentication via managed
sudo -Aaskpass handling. - Website now includes a blog section with RSS feed support, blog social-share actions, and right-aligned landing nav links for
BlogandDocs.
Changed
Section titled “Changed”- 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
cancelledcleanup behavior. - Swift lint rule config/usage is now aligned with current rule identifiers to avoid stale lint noise.
0.17.0-rc.5 — 2026-02-22
Section titled “0.17.0-rc.5 — 2026-02-22”- Packages now include a localized
Pinnedfilter, 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 -Aaskpass flow when elevation is required.
Changed
Section titled “Changed”- 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.
0.17.0-rc.4 — 2026-02-22
Section titled “0.17.0-rc.4 — 2026-02-22”- Settings now include a
Launch Helm at logintoggle (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 Priorityin advanced settings.
Changed
Section titled “Changed”- 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 Termsplus 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.
0.17.0-rc.3 — 2026-02-21
Section titled “0.17.0-rc.3 — 2026-02-21”Changed
Section titled “Changed”- 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.
0.17.0-rc.2 — 2026-02-21
Section titled “0.17.0-rc.2 — 2026-02-21”Changed
Section titled “Changed”- Sparkle appcast generation now preserves prerelease display versions (for example,
0.17.0-rc.2) insparkle:shortVersionStringand 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.1where Sparkle could download updates but fail launching the installer.
0.17.0-rc.1 — 2026-02-21
Section titled “0.17.0-rc.1 — 2026-02-21”- 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. SupportRedactortest coverage added for support-export redaction guarantees.
Changed
Section titled “Changed”- 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.
0.16.2 — 2026-02-21
Section titled “0.16.2 — 2026-02-21”- Sparkle feed access now works in sandboxed builds via
com.apple.security.network.clientapp 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_URLis not DNS-resolvable or nothttps://.
Changed
Section titled “Changed”- macOS deployment target baseline lowered to
11.0across app, service, and tests. - Version metadata source-of-truth bumped to
0.16.2so generated appcast short version aligns with release tags.
0.16.1 — 2026-02-21
Section titled “0.16.1 — 2026-02-21”Changed
Section titled “Changed”- 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)
- Stage 1 (
- Moved previous
0.18.xhardening scope to0.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.
Changed
Section titled “Changed”- 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.
0.15.0 — 2026-02-20
Section titled “0.15.0 — 2026-02-20”- End-to-end upgrade-plan preview model with scoped execution controls and failed-step retry.
- Inspector task-output retrieval with command context for troubleshooting.
Changed
Section titled “Changed”- 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.
0.14.0 — 2026-02-19
Section titled “0.14.0 — 2026-02-19”Changed
Section titled “Changed”- Promoted
0.14.xalpha and rc delivery slices into the stablev0.14.0checkpoint - Aligned release status metadata across README, docs, website, and generated version artifacts
0.14.0-rc.1 — 2026-02-19
Section titled “0.14.0-rc.1 — 2026-02-19”- 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
Changed
Section titled “Changed”- FFI manager status now reports full 0.14 implementation baseline (
isImplemented=truefor 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)
0.13.0 — 2026-02-19
Section titled “0.13.0 — 2026-02-19”- 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
lastUpdatedtimestamps on all pages
Changed
Section titled “Changed”- Promoted
0.13.xbeta and rc slices into the stablev0.13.0checkpoint
0.13.0-rc.2 — 2026-02-19
Section titled “0.13.0-rc.2 — 2026-02-19”- “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.ymlfor 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
Changed
Section titled “Changed”- AppDelegate decomposed to satisfy SwiftLint file/function length thresholds
- README.md updated with funding links and issue template links
0.13.0-rc.1 — 2026-02-18
Section titled “0.13.0-rc.1 — 2026-02-18”- 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
Changed
Section titled “Changed”- Task labels now include package names for upgrade tasks across all managers
0.13.0-beta.6 — 2026-02-18
Section titled “0.13.0-beta.6 — 2026-02-18”- 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
0.13.0-beta.5 — 2026-02-18
Section titled “0.13.0-beta.5 — 2026-02-18”- XPC timeout enforcement on all service calls (30s data fetches, 300s mutations)
- Exponential backoff on XPC reconnection (2s base, doubling to 60s cap)
Changed
Section titled “Changed”- Search deduplication logic extracted from views to HelmCore
- Task-to-manager inference removed: tasks now carry
managerIddirectly - Authority, capability, and symbol lookups consolidated as
ManagerInfocomputed properties - Legacy redesign scaffold removed (18 files)
0.13.0-beta.4 — 2026-02-18
Section titled “0.13.0-beta.4 — 2026-02-18”- 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
Changed
Section titled “Changed”- Onboarding copy updated across all 6 locales for friendlier tone
0.13.0-beta.3 — 2026-02-18
Section titled “0.13.0-beta.3 — 2026-02-18”- VoiceOver accessibility support across all interactive UI elements
- Task cancel button wired to XPC
cancelTaskmethod - Per-manager “Upgrade All” button in Managers view
- CI test enforcement (
ci-test.ymlwith cargo test + xcodebuild test)
Changed
Section titled “Changed”- HelmCore decomposed from 1,133 lines into 5 files
- DashboardView decomposed from 1,919 lines into 4 files
- SwiftLint thresholds tightened
0.13.0-beta.2 — 2026-02-18
Section titled “0.13.0-beta.2 — 2026-02-18”- Universal-build support for Apple Silicon + Intel
- Release automation workflow for signed DMG packaging
- Beta binary installation guidance on website
0.13.0-beta.1 — 2026-02-18
Section titled “0.13.0-beta.1 — 2026-02-18”- 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)
0.12.0 — 2026-02-17
Section titled “0.12.0 — 2026-02-17”- 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
0.11.0-beta.2 — 2026-02-17
Section titled “0.11.0-beta.2 — 2026-02-17”- Bounded retry handling for transient task-store persistence failures
- Regression coverage for refresh-response error attribution
0.10.0 — 2026-02-17
Section titled “0.10.0 — 2026-02-17”- 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
0.9.0 — 2026-02-14
Section titled “0.9.0 — 2026-02-14”- Internationalization foundation:
LocalizationManager, type-safeL10naccessor, JSON locale architecture - Language picker in Settings (persisted to UserDefaults)
- All user-facing strings localized
0.8.0 — 2026-02-14
Section titled “0.8.0 — 2026-02-14”- 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_allorchestration with pin filtering and safe-mode enforcement
0.7.0 — 2026-02-13
Section titled “0.7.0 — 2026-02-13”- Manager update/self-update controls (Homebrew update, mas/mise upgrades, rustup self-update)
- Authority-order regression tests for capability-aware refresh
maspackage parsing using app names instead of numeric IDs