Changelog

6.6.0.dev0 (unreleased)

[!WARNING] This version is not released yet and is under active development.

  • [mpm] Add a --cooldown DURATION option and [mpm] cooldown config key that refuse to install or upgrade any package version published more recently than the given release age (like 7 days or 1 week), as a mitigation against supply-chain attacks. Enforced through each manager’s native release-age mechanism: uv and uvx (UV_EXCLUDE_NEWER), npm (before), and pip and pipx (PIP_UPLOADED_PRIOR_TO, requires pip 26.1). Managers without native support are skipped during install and upgrade by default (fail-closed); pass --allow-no-cooldown (or set [mpm] allow_no_cooldown) to run them without the safeguard. See the new Release-age cooldown docs page for the per-manager support table.

  • [mpm] Fix pkg:cpan/…, pkg:guix/…, and pkg:nix/… pURL specifiers raising Unrecognized pURL type even though those managers are implemented. The cpan, guix, and nix entries in PURL_MAP were set to None, which shadowed the manager-id fallback in Specifier.parse_purl(); they now map to their respective managers.

  • [mpm] Add a scope attribute (ManagerScope.SYSTEM or ManagerScope.PROJECT) to PackageManager to distinguish system-wide installers from project-local dependency managers, plus a discover_projects() extension point reserved for the latter. All maintained managers are system-scoped; project scope is not supported yet.

  • [zerobrew] Add upgrade and upgrade_all support by wrapping the zb upgrade command introduced in zerobrew 0.3.0, and bump the minimum required zb version from 0.2.0 to 0.3.0. 0.3.0 also fixes the Linux Python install failures reported in https://github.com/lucasgelfond/zerobrew/issues/336, so the zerobrew install tests now run as stable on both x86 and ARM Linux.

  • [mpm] Drop the [validation] extra from the cyclonedx-python-lib runtime dependency, removing jsonschema, rfc3987-syntax, lark, and lxml from mpm’s install footprint. CycloneDX SBOM schema validation now runs in the test suite instead of inside CycloneDX.export().

6.5.1 (2026-05-28)

  • [mpm] Define mpm’s own OK_GLYPH () and KO_GLYPH () constants in meta_package_manager.output instead of importing them from click-extra.

6.5.0 (2026-05-25)

[!NOTE] 6.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [pwsh-gallery] Add PowerShell Gallery package manager with installed, outdated, search, install, upgrade, and remove support. Drives Microsoft.PowerShell.PSResourceGet (bundled with PowerShell 7.4+) through pwsh -NoProfile -NonInteractive -Command, parses JSON via ConvertTo-Json -AsArray, and targets -Scope CurrentUser for installs so no elevation is required. Cross-platform on Linux, macOS, and Windows. Non-zero pwsh exits raise CLIError immediately via must_succeed=True on all run_cli() calls; json.loads() is guarded with a JSONDecodeError catch as a second layer, so mpm logs a warning and skips the manager instead of crashing. Closes #1760.

  • [topgrade] Add topgrade itself as a supported package manager, in the spirit of XKCD #927. Only upgrade --all is implemented (the only operation topgrade exposes); mpm upgrade --topgrade runs topgrade --yes non-interactively. Requires topgrade >= 17.0.0. Selecting both topgrade and a manager topgrade already drives (brew, apt, pacman, etc.) in the same mpm upgrade --all will run that manager twice.

  • [mpm] Add [mpm.managers.<id>] configuration sections for per-manager attribute overrides. Closes #945. Recognized fields: cli_names, cli_search_path, deprecated, dry_run, extra_env, ignore_auto_updates, post_args, pre_args, pre_cmds, requirement, stop_on_error, timeout, version_cli_options, version_regexes. List-valued overrides use replace semantics, and per-manager values take precedence over the matching global [mpm] settings or --<flag> command-line values. Unknown manager IDs and field names log a warning and are skipped; type mismatches raise an error.

  • [mpm] Print an upstream contribution invitation on <stderr> when a user override targets a detection-related field (cli_names, cli_search_path, requirement, version_cli_options, version_regexes). The invitation includes a pre-filled GitHub new-issue URL targeting bug-report.yml with the manager ID, override value, and pre-override cli_path already populated. Silence via --no-suggest-contribs, MPM_SUGGEST_CONTRIBS=false, or [mpm] suggest_contribs = false in the config file.

  • [mpm] Add mpm dump-toml [manager-ids...] subcommand that prints every overridable attribute of each requested manager as a ready-to-paste [mpm.managers.<id>] TOML block. With no positional argument, every maintained manager is dumped. Doubles as the canonical reference for what each manager exposes: users can pipe the output into a config file and prune the rows that don’t apply.

  • [bar-plugin] Swap the default and alternate actions on package-upgrade entries: a regular click now opens a visible terminal that shows the upgrade output, and holding the Option key runs the upgrade silently. Reverses the previous behavior introduced in 3.3.0.

  • [mpm] Remove automated publishing of the Chocolatey package: the 🍫 Chocolatey job is gone from release.yaml, and the choco job that installed from the community repository is gone from tests-install.yaml. Submission 6.4.2 was rejected because the Windows x64 binary is flagged by more than 10 antivirus engines on VirusTotal, the cutoff for community-repository approval. The in-tree packaging/choco/meta-package-manager/ nuspec and the choco-source build-from-source job in tests-install.yaml are kept; install instructions in docs/install.md now point only at the local build path.

  • [mas] Bump minimum required mas version from 1.8.7 to 7.0.0, switch installed, outdated, and search to parse the new --json output instead of regex-matching the tabular format (avoids column-alignment ambiguities from app names with parentheses or extra whitespace), update homepage_url to https://github.com/mas-cli/mas (the project moved from argon/mas), and drop the explicit sudo wrapper around mas uninstall (mas 4.1.0+ requests root privileges itself when not already running as root).

  • [mpm] Fix Windows subprocess handling: spawn subprocesses with CREATE_NO_WINDOW | SW_HIDE to prevent console signal broadcasts; catch KeyboardInterrupt in run() to absorb CTRL_C_EVENT signals from winget’s finalizer processes; on TimeoutExpired, run taskkill /F /T against the PID and named cleanup processes like WindowsPackageManagerServer.exe before calling proc.communicate(), since grandchild installer processes inherit pipe write handles and keep them open after proc.kill(); extend the OSError handler to catch FileNotFoundError (WinError 2 / ENOENT), treating a missing executable as the manager being unavailable rather than a fatal crash; pass stdin=subprocess.DEVNULL to prevent interactive prompts from hanging indefinitely; and decode subprocess output with errors="replace" to avoid UnicodeDecodeError from Windows cp1252 package descriptions.

  • [yarn] Fix search to parse NDJSON output line by line. Newer versions of Yarn with --json emit multiple JSON objects on separate lines rather than a single JSON blob; the previous json.loads() raised JSONDecodeError when Yarn appended a trailing status line after the inspect object. Lines are now parsed individually and only inspect-type entries are collected, matching the pattern already used in outdated().

  • [mpm] Fix Nuitka onefile builds: remove the invalid nuitka = "False" entry from [tool.uv] exclude-newer-package (uv rejected it as an invalid exclude-newer value, printing a TOML parse error on every invocation), and configure the binary through the standard [tool.nuitka] section. repomatic 6.20.0’s repomatic run nuitka reads that section and translates it to CLI flags at build time (Nuitka itself reads it only for setuptools build-backend builds), so the binary now bundles click_extra’s themes.toml (loaded via importlib.resources) so it can start, and carries product metadata and native per-platform icons (docs/assets/icon.png/icon.icns/icon.ico for Linux/macOS/Windows, all rendered from icon.svg). Native formats are required: Nuitka would otherwise need the imageio package to convert a non-native image and fail the build. file-version/product-version are kept numeric, since Nuitka rejects PEP 440 .devN suffixes, and are kept in sync by [tool.bumpversion].

  • [xbps] Add Void Linux build-from-source installation instructions to docs/install.md. The package is pending upstream review at https://github.com/void-linux/void-packages/pull/60532; until that merges, users can build from the mpm branch of the fork.

6.4.3 (2026-05-11)

[!NOTE] 6.4.3 is available on 🐙 GitHub.

[!WARNING] 6.4.3 is not available on 🐍 PyPI.

  • [mpm] Re-release to fix PyPI upload issues.

6.4.2 (2026-05-08)

[!NOTE] 6.4.2 is available on 🐙 GitHub.

[!WARNING] 6.4.2 is not available on 🐍 PyPI.

  • [mpm] Compile version_regexes with re.MULTILINE only, dropping re.VERBOSE. Under re.VERBOSE, unescaped whitespace in the pattern is silently ignored, so patterns like r"guix \(GNU Guix\) (?P<version>...)" would never match guix --version output and the manager was reported as unavailable with could not parse version from <path> output. Affected guix, nix, and stew, all of which now correctly detect their installed version. steamcmd, which used \ escapes to work around the same flag, is unaffected.

6.4.1 (2026-05-04)

[!NOTE] 6.4.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [guix] Drop the >=1.0.0 version requirement and add a hex-hash regex variant. Guix is a rolling-release distribution: guix pull-managed installs and in-tree dev wrappers (./pre-inst-env guix, ./scripts/guix) report a git commit hash as the “version”, which the previous >=1.0.0 specifier rejected as not satisfying the requirement and made mpm skip the manager. The new version_regexes chain accepts stable releases (1.4.0), git describe-style versions (1.4.0-7-gabc1234), and bare 7–40-char lowercase hex hashes, so any working guix registers as available.

  • [mpm] Add PackageManager.unavailable_reason and use it in the pool’s “Skip” log line. When mpm drops a manager from selection, the message now spells out why it was dropped: not supported on '<sysname>', no executable named '<names>' found in PATH, '<path>' is not executable, could not parse version from '<path>' output, or version <X> does not satisfy '<spec>' requirement. Replaces the previous opaque Skip unavailable <id> manager. line.

  • [mpm] Move --cov and --cov-report=term from pyproject.toml [tool.pytest].addopts into the CI workflow. Removes pytest-cov as an unconditional test-time dependency for downstream packagers.

  • [mpm] Move --numprocesses=auto, --dist=loadgroup, and --maxschedchunk=1 from pyproject.toml [tool.pytest].addopts into the CI workflow. Removes pytest-xdist as an unconditional test-time dependency for downstream packagers.

  • [zypper] Loosen xmltodict floor from >=1 to >=0.12. The parse() API I rely on in managers/zypper.py has been stable since 0.12, so the bump to 1.0 was cosmetic and forced downstream packagers to ship a newer release than necessary.

  • [mpm] Drop more-itertools dependency. The single peekable use site in pool.py is replaced with a next(iterator, None) empty-check using stdlib only. Removes one transitive dependency for downstream packagers.

  • [choco] Move Chocolatey package files from packaging/choco/ into packaging/choco/meta-package-manager/ so the directory name matches the nuspec basename, as required by Chocolatey-AU’s Update-Package. Fixes the 🍫 Chocolatey release job that was failing with No nuspec file found in the package directory.

  • [mpm] Add choco-source, nix-source, and guix-source jobs to tests-install.yaml that build and install from the in-repo packaging specs (packaging/choco/meta-package-manager/, packaging/nix/, packaging/guix/). The workflow now also triggers on pushes and pull requests touching packaging/{choco,nix,guix}/**, so changes to in-repo specs are validated before merge.

  • [mpm] Render the chocolatey, guix, and nix release-PR bodies through repomatic pr-body --template-file .github/pr-templates/update-package-spec.md.noformat. PRs now include the standard <details> workflow-metadata block (trigger, actor, ref, commit, job, workflow, run links), the refresh-tip admonition pointing at the workflow’s dispatch URL, and the attribution footer, matching every other PR opened by repomatic-driven jobs across kdeldycke/* repositories.

6.4.0 (2026-04-27)

[!NOTE] 6.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [apk] Add Alpine Linux’s apk package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support.

  • [guix] Add GNU Guix package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support.

  • [macports] Add MacPorts package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support.

  • [ports] Add FreeBSD ports tree manager with installed, outdated, install, upgrade, upgrade_all, remove, sync, and cleanup support. Drives make-based source builds out of /usr/ports, delegates registry queries to pkg, and uses git for tree updates.

  • [sfsu] Add sfsu (Scoop alternative) package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support. Mutating operations delegate to Scoop.

  • [xbps] Add XBPS (Void Linux) package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support.

  • [apm,apt,choco,composer,emerge,flatpak,opkg,sdkman,snap,zypper] Add remove operation. Closes #1775.

  • [composer] Fix install operation: use composer global require instead of composer global install.

  • [apm,npm,pip] Add cleanup operation.

  • [gem,winget] Add sync operation.

  • [mpm] Add Delegate descriptor to capabilities.py for declarative cross-manager method delegation.

  • [mpm] Add Python version and platform to --version output.

  • [mpm] Add typed config_schema to the CLI group for configuration file validation.

  • [mpm] Document pyproject.toml auto-discovery for per-project [tool.mpm] configuration.

  • [mpm] Extend --table-format structured output to TOML, YAML, XML, JSON5, JSONC, and HJSON for all subcommands that produce machine-readable data (managers, installed, outdated, search, locate).

  • [mpm] Change JSON output indentation from 4 to 2 spaces and stop sorting keys, aligning with click-extra defaults.

  • [mpm] Rename --output-format / -o back to --table-format, aligning with the upstream click-extra default.

  • [mpm] Make Chocolatey release job idempotent: check if version already exists on Chocolatey before pushing, and open a PR to update the nuspec after a successful publish.

  • [mpm] Add Guix and Nix package definitions with automated update jobs on release; reorganize packaging/ directory into packaging/choco/, packaging/guix/, and packaging/nix/ subdirectories.

  • [pip] Filter mpm’s own dependency tree from outdated results to fix false positives in Homebrew-installed environments. Closes #1767.

  • [scoop] Fix CLI invocation in outdated operation.

  • [winget] Fix search crash when no results are returned.

  • [zypper] Skip install and remove tests on Linux CI runners: the RPM database at /var/lib/rpm is inaccessible on Ubuntu-based runners.

6.3.0 (2026-04-09)

[!NOTE] 6.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [cpan] Add CPAN package manager for Perl modules with installed, outdated, install, and upgrade support. Closes #602.

  • [deb-get] Add deb-get package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support. Closes #1609.

  • [nix] Add Nix package manager with installed, outdated, search, install, upgrade, remove, sync, and cleanup support.

  • [pacstall] Add Pacstall package manager with installed, outdated, search, install, upgrade, remove, and sync support. Closes #1610.

  • [sdkman] Add SDKMAN! package manager with installed, outdated, install, upgrade, sync, and cleanup support. Closes #729.

  • [stew] Add Stew package manager for installing pre-compiled binaries from GitHub Releases. Closes #1680.

  • [zerobrew] Add ZeroBrew manager with installed, outdated, install, and remove support. Closes #1681.

  • [uvx] Implement outdated operation. Bump minimal requirement to 0.10.10. Closes #1704.

  • [yarn] Split into Yarn Classic and Yarn Berry managers. Restrict Classic to <2.0.0. Closes #1548.

  • [yarn-berry] Add Yarn Berry (2.x+) manager with search and cleanup support.

  • [winget] Switch installed and outdated to winget list --details structured output; filter to Origin Source: winget packages only, excluding sideloaded and portable entries. Bump minimum required version to >=1.28.190.

  • [pip] Only report top-level packages as outdated, skipping transitive dependencies. Closes #1214.

  • [mpm] Support version range specifiers (e.g. >=1.20.0,<2.0.0) in manager requirement field. Refs #1548.

  • [mpm] Add must_succeed parameter to run_cli for structured-output calls, preventing silent data loss on CLI failures. Refs #1703.

  • [mpm] Add Chocolatey as a supported Windows installation method; automate package publishing on release.

  • [mpm] Overhaul version tokenization: preserve original separators and case, keep hex hashes as single tokens, normalize pre-release aliases (alpha/a, beta/b, c/rc), and recognize post/patch as post-release tags.

  • [mpm] Fix version comparison accuracy: integer tokens now rank above string tokens (e.g., 3.12.0 > 3.12.0a4), trailing .0 segments are treated as padding, the cosmetic v prefix is stripped, and false-positive outdated entries where parsed versions compare equal are filtered.

  • [mpm] Snap version diff highlighting to separator boundaries so the full diverging token and its preceding separator are colored.

  • [mpm] Detect Windows App Execution Aliases (reparse points) when resolving CLI paths, fixing detection of winget and similar tools installed via the Microsoft Store.

  • [gem] Remove --user-install flag from install, upgrade, and update commands so all operations target the same gem scope as list and outdated. Closes #389.

  • [pip] Remove --user flag from upgrade command so upgrades target the same scope as list and outdated.

  • [pip] Prepend the current Python executable to the list of candidates when searching for pip binaries, so the active environment is always checked first.

  • [mpm] Cache installed package IDs before the spec loop in upgrade and remove commands, avoiding redundant CLI calls per package specifier.

  • [mpm] Reduce CI matrix on pull requests: skip release builds, experimental Python versions, redundant architecture variants, and install tests. Declare windows-11-arm exclusion in [tool.repomatic.test-matrix] config instead of hardcoding it.

6.2.1 (2026-03-26)

[!NOTE] 6.2.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [brew,cask] Remove --quiet from outdated command where it conflicts with --json. Closes #1703.

  • [npm] Fix crash on installed when no global packages are present. Closes #1603.

  • [mpm] Fix --no-color having no effect on CSV output. Closes #1004.

  • [mpm] Fix version reported by compiled (Nuitka) binaries. Closes #1145.

6.2.0 (2026-03-25)

[!NOTE] 6.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Upgrade from reusable workflows to repomatic.

  • [mpm] Inline replace_content utility from click-extra which was removed in 7.6.2.

  • [mpm] Simplify uvx invocation from uvx --from meta-package-manager -- mpm to uvx meta-package-manager.

  • [brew,cask] Add --quiet option to all brew invocations to reduce log verbosity.

  • [composer] Add --no-ansi option to all composer invocations.

  • [composer] Fix search regex to strip whitespace-only descriptions.

  • [dnf,dnf5,yum] Add --quiet option to all invocations to reduce log verbosity.

  • [emerge] Add --quiet, --color n and --nospinner to pre_args. Refactor inline flags.

  • [pacaur,pacman,paru,yay] Add --color never option to all invocations.

  • [pkg] Add --quiet option to all pkg invocations to reduce log verbosity.

  • [yarn] Add --silent option to all yarn invocations to suppress console logs.

  • [mpm] Pre-compile regexes at class level across all managers.

  • [mpm] Set CycloneDX SBOM lifecycle phase to operations.

6.1.1 (2026-02-06)

[!NOTE] 6.1.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [choco] Add --retry-count=3 option to all choco invocations.

  • [mpm] Upgrade to extra-platforms 8.0.0. Remove usage of deprecated functions.

  • [mpm] Remove direct dependency on tabulate.

6.1.0 (2026-01-18)

[!NOTE] 6.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [uvx] Add uvx support for managing isolated Python tools via uv tool. Closes #1656, #1657.

6.0.2 (2026-01-09)

[!NOTE] 6.0.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [uv] Workaround uv parsing issues with package specifiers by not quoting them. Closes #1653.

6.0.1 (2026-01-02)

[!NOTE] 6.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Move auto-lock time from 8:43 to 4:43.

  • [mpm] Set cooldown period via the pyproject.toml.

  • [mpm] Add Download link to project metadata.

  • [mpm] Include license file in package.

  • [mpm] Replace deprecated codecov/test-results-action by codecov/codecov-action.

  • [mpm] Remove utilization workaround for macos-15-intel.

6.0.0 (2025-12-08)

[!NOTE] 6.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add --no-config option inherited from Click Extra.

  • [mpm] Replace Click Extra’s default --table-format option by our --output-format option, which allows sorted table rendering and JSON output.

  • [scoop] Fix parsing of scoop version to support raw Git output.

  • [gem] Remove hard-coded gem CLI search path.

  • [mpm] Remap pURL types to managers. Closes #1460.

  • [mpm] Allow multiple regular expressions to be used for version matching.

  • [mpm] Remove maximum capped version of all dependencies (relax all ~= specifiers to >=). This gives more freedom to downstream and upstream packagers. Document each minimal version choice.

  • [mpm] Add cooldown period for dependabot and uv.lock updates.

  • [mpm] Merge all label syncing jobs into a single one.

  • [mpm] Add yaml, json5, jsonc, hjson and xml extra dependencies to support respective configuration file formats.

  • [mpm] Change the test, typing and docs extra dependency groups into development dependency groups.

  • [mpm] Add official support of Python 3.14.

  • [mpm] Re-introduce Python 3.10 support.

  • [mpm] Run tests on Python 3.10, 3.14, 3.15, 3.14t and 3.15t.

  • [mpm] Skip tests on intermediate Python versions (3.11, 3.12 and 3.13) to reduce CI load.

  • [mpm] Produce mpm-windows-arm64.exe Windows binary for arm64 architecture.

  • [mpm] Replace ubuntu-24.04 by ubuntu-slim, macos-15 by macos-26, and macos-13 by macos-15-intel in workflow jobs.

  • [mpm] Unlock a CPU core stuck at 100% utilization on macos-15-intel.

  • [mpm] Use astral-sh/setup-uv action to install uv instead of manually installing it with pip.

  • [mpm] Move all typing-related imports behind a hard-coded TYPE_CHECKING guard to avoid runtime imports.

5.21.0 (2025-05-29)

[!NOTE] 5.21.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Drop support for Python 3.10.

  • [mpm] Fix parsing of package specifiers with multiple version separators.

  • [npm] Fix retrieval of installed packages.

  • [fwupd] Remove --offline parameter which has been silently disabled and has now been remove in v2.0.0 of fwupd. Refs #1511.

  • [bar-plugin] Bump minimal Python version to 3.9 to aligns it with macOS default.

  • [bar-plugin] Check minimal version of SwiftBar is 2.1.2.

  • [bar-plugin] Reduce size of error messages from 12 to 10.

  • [mpm] Remove reference to python3 command in documentation to reduce confusion.

  • [mpm] Build arm64 binary for Linux.

  • [mpm] Try to build arm64 binary for Windows but mark it as unstable.

  • [mpm] Use post-build binary test plans to check CLI behavior.

  • [mpm] Run tests on windows-2025 instead of windows-2022.

  • [mpm] Reactivates concurrency limits on tests.

  • [mpm] Uploads codecov test results.

5.20.0 (2024-11-25)

[!NOTE] 5.20.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [eopkg] Add support for new eopkg manager. Closes #1093.

  • [fwupd] Add support for new fwupd manager. Closes #1289.

  • [dnf5] Add support for new dnf5 manager. Refs #1423.

  • [mpm] Hide --manager and --exclude options from help output and silence deprecation warnings. Closes #1358.

  • [mpm] Add detailed documentation on manager selection with configuration file.

  • [mpm] Fix mixing of manager selector lists and flags.

5.19.0 (2024-11-14)

[!NOTE] 5.19.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [vscodium] Add support for VSCodium plugins.

  • [dnf,mas,vscode,yum] Implement remove operation.

  • [dnf,yum] Use query template instead of regex parsing to retrieve package data.

  • [flatpak] Fix parsing of descriptions with spaces.

  • [uv] Implement outdated and cleanup operation.

  • [uv] Bump minimal requirement to 0.5.0.

  • [uv] Always invoke uv with --no-progress parameter.

  • [mas] Bump minimal requirement to 1.8.7.

  • [mas] Reactivate mas tests.

  • [mpm] Add official support for Python 3.13.

  • [mpm] Drop support for Python 3.9.

  • [mpm] Replace local platform utilities by extra-platforms dependency.

  • [mpm] Run tests on Python 3.14-dev.

  • [mpm] Run tests and actions on ubuntu-24.04 instead of ubuntu-22.04.

  • [mpm] Run tests on macos-15 instead of macos-14.

  • [mpm] Add a Sankey diagram of all supported package managers.

5.18.0 (2024-08-02)

[!NOTE] 5.18.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add new command to export installed packages to a SBOM file in SPDX or CycloneDX standard. Closes #936.

  • [mpm] Add new dependencies on spdx-tools and cyclonedex-python-lib.

  • [mpm] Update list of recognized pURL scheme types.

  • [apt] Add architecture in package metadata.

5.17.0 (2024-07-08)

[!NOTE] 5.17.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [uv] Add support for uv package manager for Python.

  • [mpm] Add --no-<manager-id> negative selection flags for each single manager. Closes #882.

  • [mpm] Deprecate -m/--manager and -e/--exclude options in favor of single --<manager-id>/--no-<manager-id> selectors.

  • [bar-plugin] Identify uv-based virtual envs to run mpm executable.

  • [mpm] Stop CLI execution if manager selection parameters ends up with no managers being retained.

  • [mpm] Switch from Poetry to uv.

  • [mpm] Drop support for Python 3.8.

  • [mpm] Add dependency on more-itertools.

  • [mpm] Add metadata and icon to binaries produced by Nuitka.

  • [mpm] Mark Python 3.13-dev tests as stable.

  • [bar-plugin] Reactivate login shells invocation tests.

  • [bar-plugin] Skip rendering tests on GitHub.

  • [mpm] Remove sys.path cleaning hack in __main__ invocation.

  • [mpm] Reactivate config file test for restore subcommand.

5.16.0 (2024-05-24)

[!NOTE] 5.16.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [winget] Add support for WinGet on Windows. Closes #500 and #1241.

  • [scoop] Add mpm installation instructions with scoop.

  • [bar-plugin] Dynamiccaly search for Python, virtual envs and mpm executable instead of relying on hard-coded PATH environment variable.

  • [bar-plugin] Replace --check-mpm parameter by --search-mpm with complete results reporting.

  • [mpm] Slim down package by moving unit tests out of the main package.

  • [mpm] Split dev dependency groups into optional test, typing and docs groups.

  • [mpm] Remove direct dependency on click and mypy.

  • [mpm] Make typing-extensions dependency optional.

5.15.0 (2024-02-25)

[!NOTE] 5.15.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [pkg] Add support for pkg on FreeBSD.

  • [choco] Bump minimal choco requirement to 2.0.0.

  • [bar-plugin] Keep original indention of Python traceback.

  • [mpm] Build arm64 binaries on macos-14.

  • [mpm] Run tests on macos-14 instead of macos-13.

  • [mpm] Run tests on Python 3.13-dev branch.

  • [mas] Deactivate integration tests for mas on macOS, which always timeout.

  • [mpm] Reintroduce coloring of version. Refs #1152.

  • [mpm] Use external workflow to manage issues and PRs content-based labelling.

5.14.2 (2024-01-17)

[!NOTE] 5.14.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix installation from pipx. Closes #1154.

5.14.1 (2024-01-16)

[!NOTE] 5.14.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [bar-plugin] Always call mpm --version without color.

  • [bar-plugin] Increase robustness of mpm version parsing, whether its colored or not.

  • [mpm] Temporary disable version output in color to fix already installed plugin/binary pairs. Closes #1152.

5.14.0 (2024-01-13)

[!NOTE] 5.14.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add a -t/--timeout option to set the maximum duration of each CLI call. Defaults to 10 minutes.

  • [mpm] Drop support of Python 3.7.

  • [scoop] Fix parsing of Scoop version.

  • [mpm] Group platforms by family in the managers subcommand.

  • [mpm] Run tests and actions on released Python 3.12 version.

  • [mpm] Run tests on macos-13. Remove tests on macos-12, macos-11, ubuntu-20.04 and windows-2019.

  • [mpm] Run bar plugin unittests in their independent, non-parallel step.

  • [mpm] Skip testing on intermediate Python versions to speed up CI. Only the oldest and latest supported.

  • [mpm] Skip configuration-related tests while we investigate test isolation.

  • [mpm] Fix fetching of full local copy of cask tap in tests to allow for checkout of past formula.

  • [mpm] Replace unmaintained bump2version by bump-my-version.

5.13.1 (2023-05-06)

[!NOTE] 5.13.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [apt] Fix omission of the final result in an apt (non-mint) search.

  • [mpm] Defaults to case-insensitive, lexicographical sort of package IDs in backup subcommand.

  • [mpm] Update brew installation instructions now that mpm is available in official Homebrew repository.

5.13.0 (2023-04-04)

[!NOTE] 5.13.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add new which/locate subcommand to search for CLIs in user’s environment.

  • [mpm] Allow usage of sudo for CLI invocation on all UNIXes, not Linux only. Closes #976.

  • [apt] Fix parsing of search results for apt and apt-mint. Closes #881 and #966.

  • [mpm] Adds --run-destructive, --skip-destructive, --run-non-destructive and --skip-non-destructive custom options to Pytest.

  • [mpm] Run non-destructive tests in parallel and destructive ones in sequential order.

  • [mpm] Move all documentation assets to assets subfolder.

5.12.0 (2023-02-25)

[!NOTE] 5.12.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Refactor CLI search to allow all matching to be reported. This will open the way to future support of multiple versions of the same package manager. Refs #629.

  • [mpm] Exclude empty files for our CLI search results to skip Microsoft’s dummy placeholders on Windows. Closes #927.

  • [mpm] Fix composition of CLI search path on Windows.

  • [mpm] Deduplicate entries in the list of composed CLI search path.

  • [mpm] Do not search for CLI in current directory on Windows.

  • [mpm] Fix case-insensitive highlighting of CLI names in path on Windows.

  • [yarn] Do not test yarn on Linux and Windows.

  • [mpm] Do not force test order on Windows.

5.11.7 (2023-02-20)

[!NOTE] 5.11.7 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix overlapping detection of linux and wsl2 platforms. Closes #944.

  • [pip] Print Python’s own version in debug logs before checking for Pip’s version.

  • [mpm] Code, comments and documentation style change to conform to new QA workflows based on ruff.

  • [mpm] Produce dependency graph in Mermaid instead of Graphviz. Add new dev dependency on sphinxcontrib-mermaid.

5.11.6 (2023-02-12)

[!NOTE] 5.11.6 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix collection of artifact files from their folder.

5.11.5 (2023-02-12)

[!NOTE] 5.11.5 is available on 🐍 PyPI.

[!WARNING] 5.11.5 is not available on 🐙 GitHub.

  • [mpm] Fix collection of artifact files from their folder.

5.11.4 (2023-02-12)

[!NOTE] 5.11.4 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix attachment of binaries to GitHub release.

5.11.3 (2023-02-12)

[!NOTE] 5.11.3 is available on 🐍 PyPI.

[!WARNING] 5.11.3 is not available on 🐙 GitHub.

  • [mpm] Fix attachment of binaries to GitHub release.

5.11.2 (2023-02-11)

[!NOTE] 5.11.2 is available on 🐍 PyPI.

[!WARNING] 5.11.2 is not available on 🐙 GitHub.

  • [mpm] Refine bug report template.

  • [mpm] Fix attachment of binaries to GitHub release.

5.11.1 (2023-02-10)

[!NOTE] 5.11.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Remove temporary direct dependency on charset-normalizer, fix has been pushed upstream to Nuitka.

  • [mpm] Rename artifacts attached to releases to benefits from stable URLs pointing to latest downloads.

  • [mpm] Fix some Windows unittests.

5.11.0 (2023-01-30)

[!NOTE] 5.11.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Unlock run on any Unix-like platform. Closes #872.

  • [brew] Activate brew on Windows Subsystem for Linux v2.

  • [choco] Bump minimal choco requirement to 0.10.4.

  • [mpm] Depends on charset-normalizer < 3 to fix Nuitka compilation.

  • [mpm] Run tests on Python 3.12-dev.

  • [mpm] Reduce verbosity of pre-install steps in GitHub actions.

  • [mpm] Test mpm binaries.

  • [mpm] Force upgrade of Ruby on Windows test runners.

  • [mpm] Fix installation of old formulae in brew unittests.

  • [mpm] Force re-detection of npm CLI location on macOS subcommand unittests.

  • [mpm] Add new GitHub labels for newly supported platforms.

  • [mpm] Generates dependency graph in Graphviz format.

5.10.2 (2022-12-19)

[!NOTE] 5.10.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix uploading of artifacts to GitHub release.

5.10.1 (2022-12-19)

[!NOTE] 5.10.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix uploading of Nuitka binaries to GitHub release.

5.10.0 (2022-12-19)

[!NOTE] 5.10.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Build standalone executable for macOS, Linux and Windows. Closes #725.

  • [mpm] Force default output encoding of Windows executable to fix issue on Windows CI agents.

  • [bar-plugin] Disable --bar-plugin-path option if CLI not installed from sources.

  • [bar-plugin] Rename and move meta_package_manager.7h.py bar plugin script to eliminate dynamic module loading.

  • [mpm] Replace dynamic loading of package manager definition by static code.

  • [mpm] Highlight package manager’s executable name when printing their path in logs.

  • [mpm] Hint at deprecation of manager in the support matrix.

  • [mpm] Execute all workflows with Python 3.11.

5.9.0 (2022-11-20)

[!NOTE] 5.9.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [pacaur] Implement pacaur support. Closes #816.

  • [mpm] Allow managers to be flagged as deprecated.

  • [apm] Flag apm as deprecated.

  • [mpm] Remove Atom integration tests.

  • [mpm] Fix propagation of user selection of managers in upgrade and remove subcommands.

  • [mpm] Fix production of specifiers in restore subcommand.

  • [mpm] Fix installation of Scoop on Windows in unittests.

  • [mpm] Fix installation of brew on Ubuntu in unittests.

  • [mpm] Use form-based issue templates for bug reports and new package manager support requests.

  • [mpm] Remove use of deprecated ::set-output directives and replace them by environment files.

5.8.0 (2022-10-05)

[!NOTE] 5.8.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [gem] Implement remove operation.

  • [mpm] Allow multiple packages to be fed to install, upgrade and remove subcommands.

  • [mpm] Allow for a mix of plain, @-based and pkg:-prefixed purl specifiers on install, upgrade and remove subcommands. Closes #669.

  • [mpm] Pass version specifier to install operation in restore subcommand.

  • [mpm] Output warning for install and upgrade_one_cli operations not implementing version parameter.

  • [mpm] Remove GitHub edit link workaround in documentation.

5.7.0 (2022-09-28)

[!NOTE] 5.7.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [scoop] Add support for Scoop on Windows. Closes #546.

  • [mpm] Fix imports from click.extra. Closes #783.

5.6.2 (2022-09-27)

[!NOTE] 5.6.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix imports from click.extra.

5.6.1 (2022-09-26)

[!NOTE] 5.6.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix import from private click.extra submodule.

5.6.0 (2022-09-26)

[!NOTE] 5.6.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [brew,cask] Add support for remove operation in homebrew.

  • [pacman] Fix pacman install operation. Closes #766.

  • [bar-plugin] Check for minimal Python version.

  • [mpm] Run tests on ubuntu-22.04 and macos-12.

  • [mpm] Remove tests on macos-10.15 and ubuntu-18.04, they’re deprecated by GitHub.

  • [mpm] Fix plugin rendering tests.

  • [mpm] Always run plugin rendering tests in Poetry venv.

  • [bar-plugin] Add a --check-mpm option to tests the mpm binary search phase without running a full outdated package listing.

  • [mpm] Tests Python and plugin invocation in lots of shell configuration.

  • [mpm] Deactivate login shell tests.

  • [mpm] Force Homebrew tap repair in tests.

  • [mpm] Dynamiccaly get location of Homebrew Cask formulas in tests.

  • [mpm] Install dnf in tests as of ubuntu-22.04. Closes #563.

  • [mpm] Add upgrade_all operation in support matrix.

  • [mpm] Rely on external workflow to set Python version parameters for mypy, black and pyupgrade jobs.

5.5.1 (2022-07-11)

[!NOTE] 5.5.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Eliminate rendering of None cells to <null> in tables.

  • [mpm] Add a --refilter/--no-refilter option to search to allow bypassing of mpm default refiltering.

  • [npm] Implements remove operation.

  • [npm] Use canonical commands for operations.

  • [npm] Reduce output verbosity with --no-fund and --no-audit options.

  • [yarn] Implements remove operation.

  • [yarn] Fix, document and cleanup all global commands.

  • [yarn] Set minimal yarn version to 1.20.0, as it should have been.

  • [bar-plugin] Silence all errors but critical ones on outdated invocation to prevent a failing manager to block rendering of the plugin output.

5.5.0 (2022-07-08)

[!NOTE] 5.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Restore behavior of having upgrade assuming --all option on a bare call. Closes #715.

  • [cask] Fix parsing of multiple reported installed versions.

  • [emerge] Locate and validate qlist and eclean CLI availability.

  • [snap] Fix parsing of empty search results.

  • [mpm] Allow package name to be empty instead of duplicating it to package ID.

  • [mpm] Keep the operation matrix on the readme.md in sync with current code by inspecting implementation.

  • [mpm] Add type hints. Closes #655.

  • [mpm] Auto-check type hinting in CI.

  • [mpm] Render type hints in documentation.

  • [mpm] Add metadata for easy citation in academic content.

  • [mpm] Deactivate Atom install in macOS tests as it seems broken.

5.4.0 (2022-06-29)

[!NOTE] 5.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Allow global upgrade of a subset of packages from the command line if no ambiguity is identified.

  • [mpm] Add a -A/--all option to upgrade operation.

  • [mpm] Add a -d/--duplicates option to installed operation to only show packages sharing the same ID across multiple managers.

  • [mpm] Add a global --description option but only implement it for search operation.

  • [mpm] Always show description for --extended search. Closes #503.

  • [mpm] Rename --package-name search option to --id-name-only.

  • [mpm] Add operation aliases:

    • listinstalled

    • uninstallremove

    • updateupgrade

    • lock/freeze/snapshotbackup

  • [mpm] Add a --merge option on backup operation to update target TOML file with new installed packages.

  • [mpm] Add an --update-version option on backup operation to only update version in the target TOML file.

  • [mpm] Add a --overwrite/--force/--replace option on backup operation to force TOML overwrite if destination file exists.

  • [pipx] Implement outdated operation.

  • [pip] Do not wait for user confirmation on remove operation.

  • [mpm] Switch package ID and name columns in table rendering.

  • [mpm] Rename all *-like labels to *-based to help finer identification of families.

5.3.0 (2022-06-25)

[!NOTE] 5.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [paru] Add paru support.

  • [pacman,paru,yay] Run install, upgrade, remove and cleanup operations with sudo.

  • [brew,cask] Implement extended search on description.

  • [cargo] Implement remove operation.

  • [mas] Fix parsing of variable-length output in installed and outdated operations.

  • [npm] Apply global variables to all operations.

  • [bar-plugin] Fix rendering of package managers without outdated packages. Closes #631.

  • [mpm] Colorize version differences in outdated operation output.

  • [mpm] Add manager homepage URL metadata.

  • [mpm] Keep results matching description in --extended search mode.

  • [mpm] Simplify installed, outdated and search operation by relying on generators and a package dataclass.

  • [mpm] Disable workflow grouping and concurrency management.

5.2.0 (2022-06-16)

[!NOTE] 5.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [yay] Add yay support. Refs #527.

  • [mpm,pacman,pip,pipx] Add remove operation.

  • [mpm] Add description in search results. Refs #503.

  • [mpm] Always refilters search results manually to refine gross matchings.

  • [mpm] Document brew and Arch Linux installation. Refs #527.

  • [mpm] Benchmark distribution of all mpm alternatives.

  • [mpm] Group workflow jobs so new commits cancels in-progress execution triggered by previous commits.

  • [mpm] Run tests on early Python 3.11 releases.

5.1.0 (2022-05-15)

[!NOTE] 5.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [pipx] Add pipx support. Closes #468.

  • [cargo] Add cargo support. Closes #633.

  • [mpm] Factorize search result refiltering code.

  • [mpm] Regroup dnf and yum labels.

5.0.1 (2022-04-28)

[!NOTE] 5.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [apt] Fix commands incompatible with --yes option. Closes #625.

  • [mpm] Add topgrade and pacaptr in the list of benchmarked alternatives.

  • [mpm] Rename alternative page to benchmark.

  • [mpm] Fix label unittests.

5.0.0 (2022-04-25)

[!NOTE] 5.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [zypper] Add zypper support for Suse and OpenSuse. Closes #566.

  • [emerge] Add emerge support.

  • [steamcmd] Add steamcmd support. Refs #10.

  • [yum] Add dedicated yum package manager. Refs #415.

  • [bar-plugin] Add new DEFAULT_FONT and MONOSPACE_FONT variable.

  • [bar-plugin] Rename all reference of xbar to the generic bar-plugin label.

  • [bar-plugin] Improve search for Python and mpm executable.

  • [bar-plugin] Restructure the plugin ↔ mpm relationship to delegate all plugin layout and rendering logic to mpm.

  • [bar-plugin] Prevent leaks when modifying environment variables.

  • [mpm] Allow installed and outdated commands to be optionally implemented by package managers.

  • [mpm] Add new --plugin-output option to outdated command.

  • [mpm] Add tabulate as direct dependency and refactor table alignment in plugin around it.

  • [mpm] Rename --xbar-plugin-path option to --bar-plugin-path.

  • [mpm] Remove -c/--cli-format option.

  • [mpm] Use short-form selection option and fully-qualified path in mpm-based upgrade-all CLIs produced by outdated command.

  • [mpm] Add dedicated execution path for running sudo-prefixed commands.

  • [mpm] Fix local overriding of CLI parameters leading to missing sudo pre-command. Closes #579.

  • [mpm] Use string highlighting code from click-extra >= 2.1.0.

  • [mpm] Add edit links to documentation.

4.13.1 (2022-04-17)

[!NOTE] 4.13.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [apt] Add missing sudo pre-commands for apt calls that requires it. Closes #496 and #579.

  • [snap] Fix command argument order. Address #579.

  • [bar-plugin] Fix location of mpm binary on Apple Silicon machines.

  • [mpm] Replace sphinx_tabs by sphinx-design.

  • [mpm] Add SwiftBar plugin screenshots.

  • [mpm] Remove date-based shallowing of Homebrew git repository in unittests and considers the local runner copy to already be unshallowed.

4.13.0 (2022-04-16)

[!NOTE] 4.13.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [pacman] Add support for pacman. Closes #416.

  • [apt-mint] Fix search. Closes #572 and #573.

  • [apt-mint] Fix --apt-mint shortcut option.

  • [bar-plugin] Add support for SwiftBar.

  • [bar-plugin] Add new TABLE_RENDERING option to plugin.

  • [bar-plugin] Improve alignment of labels in monospaced font rendering.

  • [bar-plugin] Tweak icons.

  • [mpm] Allow the meta_package_manager module to be directly executed.

  • [mpm] Add --xbar-plugin-path option.

  • [mpm] Fix normalization of CLI arguments.

  • [mpm] Fix file not found error on non-Windows platform during version checking.

4.12.1 (2022-04-06)

[!NOTE] 4.12.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Make CLI path evaluation more robust on Windows. Closes #542.

4.12.0 (2022-04-04)

[!NOTE] 4.12.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [dnf] Add support for dnf. Closes #516, refs #415.

  • [yum] Allow yum to act as dnf. Closes #415.

  • [brew,cask] Fix execution of sync command.

  • [mpm] Fix extraction of version. Closes #536.

4.11.0 (2022-04-03)

[!NOTE] 4.11.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [brew,cask] Do not let homebrew auto-update on other commands. Refs #36.

  • [brew,cask] Disable analytics and env hints in logs.

  • [bar-plugin] Fix log verbosity and unittests for xbar plugin.

  • [mpm] Show in debug logs the extra environment variable used for CLIs.

  • [mpm] Enforce code structure in package manager definition files.

  • [mpm] Fix documentation generation.

4.10.0 (2022-03-31)

[!NOTE] 4.10.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Allow for package managers to simultaneously set a list of pre-commands and environment variables, as well as global arguments before and after the custom ones.

  • [mpm] Always run unittest in parallel. Adds development dependency on pytest-xdist and psutil.

  • [mpm] Use the tomllib from the standard library starting with Python 3.11.

  • [mpm] Cap click-extra requirement to <1.7.0 to fix regression. Closes #518.

4.9.10 (2022-03-09)

[!NOTE] 4.9.10 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix execution error on Python 3.10 by updating click-extra. Closes #467.

  • [mpm] Reactivate all unittests on Python 3.10.

  • [mpm] Remove artificial capping of Python 3.9 to some workflows.

  • [mpm] Use external workflow for dependency graph generation and Python code modernization.

  • [mpm] Remove direct dependency on cloup, simplejson and pipdeptree.

4.9.9 (2022-01-15)

[!NOTE] 4.9.9 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix upload of build artifacts in GitHub release.

4.9.8 (2022-01-15)

[!NOTE] 4.9.8 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix propagation of build artifacts to GitHub release and PyPI.

  • [mpm] Fix test of labelling rules.

  • [mpm] Remove local dependency on graphviz now that fixes were pushed upstream.

4.9.7 (2022-01-11)

[!WARNING] 4.9.7 is not available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add release version in artifacts produced by Poetry builds.

  • [mpm] Pass local PyPI token to reused workflow to fix publishing.

4.9.6 (2022-01-11)

[!NOTE] 4.9.6 is available on 🐙 GitHub.

[!WARNING] 4.9.6 is not available on 🐍 PyPI.

  • [mpm] Fix detection of Poetry in build workflow.

4.9.5 (2022-01-11)

[!WARNING] 4.9.5 is not available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Use external workflow for package building and publishing via Poetry.

  • [mpm] Reused external label maintenance workflows and definitions.

  • [mpm] Add our custom labels to external syncing workflow.

  • [mpm] Auto-label sponsors.

  • [mpm] Remove changelog code left-overs.

  • [mpm] Aligns content of all PRs locally produced by workflows.

4.9.4 (2022-01-04)

[!NOTE] 4.9.4 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Re-integrate artifacts in GitHub release on tagging.

4.9.3 (2022-01-04)

[!NOTE] 4.9.3 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix GitHub release’s content update.

4.9.2 (2022-01-04)

[!NOTE] 4.9.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Regenerate GitHub release content body dynamiccaly on tagging.

4.9.1 (2022-01-04)

[!NOTE] 4.9.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Automate minor and major version bump.

  • [mpm] Automate release preparation workflow.

  • [mpm] Trigger tagging, build and version bump on release event.

  • [mpm] Add a debug workflow for troubleshooting.

4.9.0 (2022-01-03)

[!NOTE] 4.9.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add single manager selector aliases: --apm, --apt, --apt-mint, --brew, --cask. --choco, --composer, --flatpak, --gem, --mas, --npm, --opkg, --pip, --snap, --vscode and --yarn.

  • [brew,cask] Thorough cleanup: call autoremove commands to remove unused dependencies and use --prune=all to scrub the whole cache.

  • [mpm] Switch default table rendering to rounded_outline.

  • [mpm] Rely on click-extra for table rendering and tests.

  • [mpm] Remove direct dependencies on click-log and cli-helpers.

  • [mpm] Automate post-release version bump.

  • [mpm] Outsource some workflow definition to external repository.

  • [mpm] Fix generation of dependency graph.

4.8.0 (2021-11-01)

[!NOTE] 4.8.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add --color/--no-color (aliased to --ansi/--no-ansi) flags.

  • [mpm] Forces no color on JSON output.

  • [mpm] Group commands and options in help screen.

  • [mpm] Colorize options, choices, metavars and default values in help screens.

  • [mpm] Reintroduce coloring of --version option.

  • [mpm] Add dependency on click-extra.

  • [mpm] Use sphinx-click to auto-generate CLI documentation.

  • [mpm] Autofix Markdown content with mdformat.

  • [mpm] Simplify project management by abandoning the dual use of main/develop branches.

4.7.0 (2021-10-13)

[!NOTE] 4.7.0 is available on 🐙 GitHub.

[!WARNING] 4.7.0 is not available on 🐍 PyPI.

  • [mpm] Add help screen coloring.

  • [mpm] Change documentation theme from classic RTD to furo.

  • [mpm] Move documentation from readthedocs.org to github.io.

  • [mpm] Rewrite documentation from rST to MyST.

  • [mpm] Add dependency on cloup.

  • [mpm] Removes click-help-colors dependency.

  • [mpm] Run tests on Python 3.10.

  • [mpm] Add a contribution guide stub in documentation. Closes #276.

4.6.0 (2021-10-04)

[!NOTE] 4.6.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Implements XKCD 1654. Closes #10.

  • [mpm] Add -x/--xkcd option to forces manager selection.

  • [mpm] Let -m/--manager multi-option keep order.

4.5.0 (2021-09-30)

[!NOTE] 4.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [choco] Add Chocolatey package manager.

  • [mpm] Skip by default the evaluation of package managers not supported on the user’s platform. Closes #278.

  • [mpm] Add a -a/--all-managers option to force the evaluation of all managers.

  • [mpm] Fix highlighting of substrings in search results.

4.4.0 (2021-09-27)

[!NOTE] 4.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add a global -d/--dry-run option.

  • [apt] Add dedicated apt-mint manager to handle the special case of apt on Linux Mint.

  • [bar-plugin] Let xbar plugin check minimal mpm version requirement.

  • [mpm] Use regexpes to extract package manager versions.

  • [mpm] Add beta windows-2022 CI/CD build target.

  • [mpm] Remove all the unused utilities to discard some table rendering on Windows.

4.3.0 (2021-09-25)

[!NOTE] 4.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add new install command. Closes #21.

  • [vscode] Add support for Visual Studio Code plugins.

  • [mpm] Finish complete restore command implementation. Closes #38.

  • [mpm] Remove un-enforced poetry-like caret-based version specification from TOML backup files.

  • [mpm] Forces logger state reset before each CLI call in unittests.

4.2.0 (2021-09-21)

[!NOTE] 4.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add support for TOML configuration file. Closes #66.

  • [mpm] Add -C/--config option to point to specific configuration file.

  • [mpm] Upgrade to Click 8.x.

  • [mpm] Add support for psql_unicode and minimal table format.

  • [mpm] Set default table format to psql_unicode instead of fancy_grid to reduce visual noise.

  • [mpm] Add support for environment variables for all parameters, prefixed with MPM_.

  • [mpm] Let Click produce default values in help screen.

  • [mpm] Replace tomlkit dependency by tomli and tomli_w.

  • [bar-plugin] Fix xbar plugin output format.

  • [bar-plugin] Rename VAR_SUBMENU_lAYOUT environment variable to VAR_SUBMENU_LAYOUT.

  • [mpm] Remove support for --cli-format bitbar option. Use xbar value instead.

4.1.0 (2021-05-01)

[!NOTE] 4.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [bar-plugin] Add new Submenu layout boolean option in xbar plugin UI.

  • [bar-plugin] Rename XBAR_MPM_SUBMENU environment variable to VAR_SUBMENU_lAYOUT.

  • [mpm] Allow search of multiple CLI names for a package manager.

  • [pip] Fix search of python3 binary on macOS. Closes #247.

4.0.0 (2021-04-27)

[!NOTE] 4.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [bar-plugin] Upgrade BitBar plugin to new xbar format.

  • [bar-plugin] Drop xbar plugin requirement on Python 2.x and bump it up to Python 3.7.3.

  • [bar-plugin] Update references of BitBar to xbar.

  • [bar-plugin] Rename BITBAR_MPM_SUBMENU environment variable to XBAR_MPM_SUBMENU.

  • [mpm] Rename --cli-format bitbar option to --cli-format xbar.

  • [mpm] Auto-generate API documentation via a GitHub action workflow.

  • [mpm] Only trigger dependency graph update on tagging to reduce noise.

  • [mpm] Re-introduce isort.

3.6.0 (2021-01-03)

[!NOTE] 3.6.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [brew] Add support for brew on Linux.

  • [brew,cask] Bump minimal requirement of brew to 2.7.0.

  • [cask] Address deprecation of cask CLI subcommands.

  • [pip] pip search has been disabled by maintainers because of server-side high-load.

  • [mpm] Add test runs against new OSes and distributions: ubuntu-18.04 and macos-11.0.

  • [mpm] Remove pycodestyle now that we rely on black.

  • [mpm] Add emoji to issue labels.

3.5.2 (2020-10-29)

[!NOTE] 3.5.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Run tests on Python 3.9.

  • [mpm] Upgrade to Poetry 1.1.0.

  • [mpm] Colorize version screen and add debug data.

  • [mpm] Test publishing to PyPI in dry-run mode by the way of Poetry.

  • [mpm] Make all keyword-based choice parameters (--manager, --exclude, --output-format, --sort-by and --cli-format) case-insensitive.

  • [mpm] Pin versions of OSes and distributions in CI workflows to ubuntu-20.04, macos-10.15 and windows-2019.

  • [mpm] Always print errors in unittest’s CLI calls.

  • [mpm] Slow-down tests to prevent PyPI rate-limiting on live API.

  • [mpm] Fix brew setup on macOS CI runners.

  • [mpm] Fix npm setup in Ubuntu 18.04 and 20.04 CI runners.

  • [mpm] Use latest Atom version in Ubuntu CI runners.

3.5.1 (2020-10-03)

[!NOTE] 3.5.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Defaults to --continue-on-error instead of stopping.

  • [mpm] Force checking of CLI being a file.

  • [mpm] Auto-optimize images.

  • [mpm] Auto-lock closed issues and PRs after a moment of inactivity.

3.5.0 (2020-09-20)

[!NOTE] 3.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Fix --stop-on-error parameter: it was never taken into account.

  • [brew,cask] Bump minimal requirement of brew to 2.5.0.

  • [brew,cask] Fix warning to deprecated options.

  • [npm] Always fix JSON parsing on error for any npm subcommand.

3.4.2 (2020-09-13)

[!NOTE] 3.4.2 is available on 🐍 PyPI and 🐙 GitHub.

  • [brew,cask] Do not mix-up brew and cask upgrades.

  • [npm] Skip parsing of JSON results on error.

3.4.1 (2020-09-02)

[!NOTE] 3.4.1 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Rename master branch to main.

3.4.0 (2020-08-18)

[!NOTE] 3.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [yarn] Set minimal requirement to 1.20.0.

  • [yarn] Fix deprecated global arguments.

  • [bar-plugin] Force refresh of local package databases before fetching outdated ones.

  • [mpm] Add utilities to read a config TOML file. Refs #66.

  • [mpm] Auto-format Python code with Black.

  • [mpm] Move pytest config from setup.py to pyproject.toml.

  • [mpm] Removes isort.

  • [mpm] Auto-update Python’s dependencies.

  • [mpm] Auto-update GitHub actions.

  • [mpm] Auto-update .gitignore file.

  • [mpm] Auto-update .mailmap file.

  • [mpm] Lint all YAML files. Add dependency on yamllint package.

  • [mpm] Removes requires.io and Scrutinizer badges.

  • [mpm] Revert to pipdeptree to produce package dependency graph.

3.3.0 (2020-06-23)

[!NOTE] 3.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [bar-plugin] Each entry in the drop-down menu can now be called into a terminal to track the execution by holding the Option key.

  • [bar-plugin] Fix rendering of upgrade CLI in Bitbar dialect.

  • [mpm] Hint for lack of sync and cleanup support by managers.

  • [mpm] Do not print table headers if there is no row to print.

  • [mpm] Always print non-fatal <stderr> output as warning mode.

  • [mpm] Skip table rendering tests if no table is printed to stdout. Fixes flacky tests.

  • [mpm] Replace internal helpers with upstreamed boltons 20.2.0 utils.

  • [mpm] Force test marked as xfail count as failure if they succeed.

  • [mpm] Always check wheel content.

  • [mpm] Automate creation of GitHub release.

  • [mpm] Automate publishing of package to PyPI on tagging.

  • [mpm] Save build artifacts on each CI runs.

  • [mpm] Auto-sort module imports.

  • [mpm] Auto-fix common typos.

  • [mpm] Lint JSON files.

  • [mpm] Automate GitHub label generation and synchronization.

  • [mpm] Automatically applies labels on PRs and issues depending on their changed files and content.

  • [mpm] Check label rules against manager definitions. Adds development dependency on PyYAML.

3.2.0 (2020-05-31)

[!NOTE] 3.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [snap] Add support for snap on Linux.

  • [cask] Rely on JSON output to fetch outdated packages.

  • [brew,cask] Bump minimal requirement to 2.2.15.

  • [pip] Remove pip2/pip3 distinctions, use system’s python and call pip module.

  • [windows] Allow discarding of some table rendering on Windows.

  • [mpm] Add --time/--no-time flag to show elapsed execution time. Closes #9.

  • [mpm] Print table rendering, stats and timing in console output instead of logger to allow them to be greppable.

  • [bar-plugin] Test plugin with Python 2.7.

  • [mpm] Allow for manager-specific search path to help hunting down CLIs.

  • [mpm] Highlight CLI and indent results in debug output.

  • [mpm] Bump dependency to pylint 2.5 and cli-helpers 2.0.

  • [mpm] Use local copy of boltons utils while we wait for upstream release.

  • [mpm] Move pylint config from setup.cfg to pyproject.toml.

  • [mpm] Fail CI and QA checks if pylint score lower than 9.

  • [mpm] Add more platform definition unittests.

  • [mpm] Unittests all rendering modes in all subcommands.

  • [mpm] Randomize unittests.

  • [mpm] Drop support of Python 3.6.

  • [mpm] Use group-tabs in Sphinx docs.

3.1.0 (2020-04-02)

[!NOTE] 3.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add new cleanup command. Closes #5.

  • [mpm] Improve table sorting with new version-aware tokenizer.

  • [mpm] Highlight manager IDs depending on their availability in managers command.

  • [gem] Ignore default: prefix on package version parsing.

  • [mpm] Remove packaging dependency. Rely on internal version parsing.

  • [mpm] Add new --exact and --extended parameters to search command.

  • [mpm] Highlight search matches in console output.

  • [mas] Retrieve version in search results.

  • [mas] Bump minimal version to 1.6.1.

  • [mpm] Allow stats to be printed for backup command.

  • [gem] Bump minimal requirement to 2.5.0.

3.0.0 (2020-03-25)

[!NOTE] 3.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • [mpm] Add new backup and dummy restore commands to respectively dump and load up list of installed packages to/from a TOML file. Refs #38.

  • [mpm] Add dependency on tomlkit.

  • [yarn] Add support for yarn package manager for Linux, macOS and Windows.

  • [yarn] Install yarn on all unittest platforms.

  • [mpm] Allow exclusion of a subset of package managers. Closes #45.

  • [pip] Collect installer metadata on listing.

  • [pip] Bump minimal requirement of pip to 10.0.*.

  • [mpm] Prepend /usr/local/bin to cli search path.

  • [npm] install package@version instead of update package.

  • [npm] Skip update notifier.

  • [brew,cask] Allow independent search for each manager.

  • [brew,cask] Bump minimal requirement of to 2.2.9.

  • [mpm] Allow sorting restuls by packages, managers or version. Closes #35 and #37.

  • [mpm] Add shell completion for Bash, Zsh and Fish.

  • [mpm] Do not force sync when calling outdated. Closes #36.

  • [apt] Fallback on apt version apt when looking for version. Closes #57 and #52.

  • [mpm] Removes all copyright dates.

  • [mpm] Replace unmaintained bumpversion by bump2version.

  • [mpm] Raise requirement to click 7.1.

  • [mpm] Raise requirement to boltons >= 20.0.

2.9.0 (2020-03-18)

[!NOTE] 2.9.0 is available on 🐍 PyPI.

  • [mpm] Drop support of Python 2.7, 3.4 and 3.5. Add support for Python 3.8.

  • [windows] Add support for apm, composer, gem, npm and pip2 on Windows.

  • [linux] Add support for Flatpak and opkg package managers on Linux.

  • [gem] Force Ruby gem to install packages to user-install by default. Refs #58.

  • [pip] Force Python pip upgrade to user-installed packages. Refs #58.

  • [brew] Fix call to brew upgrade --cleanup. Refs #50.

  • [brew] Fix parsing of brew version. Closes #49 and #51.

  • [mpm] Switch from Travis to GitHub actions.

  • [composer] Install composer in all platforms CI runners.

  • [linux] Install flatpak in Linux CI runner.

  • [windows] Install apm in Windows CI runner.

  • [mpm] Bump requirement to click-log >= 0.3.

  • [mpm] Add non-blocking Pylint code quality checks in CI.

  • [mpm] Check for conflicting dependencies in CI.

  • [mpm] Use Poetry for package and virtualenv management.

  • [mpm] Replace pipdeptree by Poetry CLI output.

  • [mpm] Remove backports.shutil_which dependency.

  • [mpm] Update .gitignore.

  • [mpm] Drop all Python 3.0 __future__ imports.

  • [mpm] Add detailed usage CLI page in documentation.

2.8.0 (2019-01-03)

[!NOTE] 2.8.0 is available on 🐍 PyPI.

  • [composer] Add support for PHP composer.

  • [cask] Remove cask-specific version, sync and search command. Closes #47.

  • [brew] Vanilla brew and cask CLIs now shares the same version requirements.

  • [brew] Bump minimal requirement of brew and cask to 1.7.4.

  • [mpm] Activate unittests in Python 3.7.

  • [mpm] Drop Travis unittests on deprecated Ubuntu Precise targets and vintage Mac OS X 10.10 and 10.11.

  • [mpm] Use latest macOS 10.12 and 10.13 Travis images.

2.7.0 (2018-04-02)

[!NOTE] 2.7.0 is available on 🐍 PyPI.

  • [mpm] Add new --ignore-auto-updates and --include-auto-updates boolean flags.

  • [mpm] Support even fancier table output rendering, including csv and html.

  • [mpm] Depends on cli-helpers package to render tables.

  • [mpm] Removes direct dependency on tabulate.

  • [cask] Fix minimal version check for cask. Closes #41 and #44.

  • [bar-plugin] Do not run BitBar plugin unittests but on macOS.

2.6.1 (2017-11-05)

[!NOTE] 2.6.1 is available on 🐍 PyPI.

  • [mpm] Fix Travis unittests.

2.6.0 (2017-09-10)

[!NOTE] 2.6.0 is available on 🐍 PyPI.

  • [apt] Add support for apt on Linux systems.

  • [pip] Use pip 9.0 JSON output. Closes #18.

  • [pip] Bump minimal requirement of pip to 9.0.*.

  • [cask] Use new brew cask outdated command.

  • [cask] Remove usage of deprecated brew cask update command.

  • [cask] Bump minimal requirement of cask to 1.1.12.

  • [mpm] Add dependency on simplejson.

  • [mpm] Bump requirement to click_log >= 0.2.0. Closes #39.

  • [mpm] Replace nose by pytest.

  • [mpm] Only notify by mail of test failures.

2.5.0 (2017-03-01)

[!NOTE] 2.5.0 is available on 🐍 PyPI.

  • [mpm] Auto-detect location of manager CLI on the system.

  • [mpm] Add new search operation. Closes #22.

  • [npm] Bump minimal requirement of npm to 4.0.*.

  • [mpm] Rename list operation to installed.

  • [apm,gem,linux,npm] Allow use of apm, gem and npm managers on Linux.

  • [mpm] Add new --stats/--no-stats boolean flags. Closes #8.

  • [mpm] Add new --stop-on-error/--continue-on-error parameters to make CLI errors either blocking or non-blocking.

  • [mpm] Allow reporting of several CLI errors by managers.

  • [mpm] Allow selection of a subset of managers.

  • [mpm] Do not force a sync before listing installed packages in CLI.

  • [mpm] Rework API documentation.

  • [cask] Add unittest to cover unicode names for Cask packages. Closes #16.

  • [cask] Add unittest to cover Cask packages with multiple names. Refs #26.

  • [mpm] Drop support of Python 3.3.

2.4.0 (2017-01-28)

[!NOTE] 2.4.0 is available on 🐍 PyPI.

  • [mpm] Add new list operation. Closes #20.

  • [mas] Fix upgrade of mas packages. Closes #32.

  • [bar-plugin] Document BitBar plugin release process.

  • [mpm] Colorize check-marks in CLI output.

  • [mpm] Decouple sync and outdated actions in all managers.

  • [mpm] Cache output of outdated command.

  • [mpm] Add global todo list in documentation.

  • [mpm] Bump requirement to boltons >= 17.0.0 for Python 3.3 compatibility.

2.3.0 (2017-01-15)

[!NOTE] 2.3.0 is available on 🐍 PyPI.

  • [mpm] Add Sphinx documentation. Closes #24.

  • [mpm] Add installation instructions. Closes #19.

  • [mpm] Add a list of Falsehoods Programmers Believe About Package Managers.

  • [mpm] Add a .mailmap config file to consolidate contributor’s identity.

  • [bar-plugin] Make it easier to change the font, size and color of text in BitBar plugin.

  • [bar-plugin] Move error icon in BitBar plugin to the front of manager name.

  • [cask] Fix parsing of cask packages with multiple names. Closes #26.

  • [bar-plugin] Move BitBar plugin documentation to dedicated page.

  • [mpm] Fix exceptions when commands gives no output. Closes #29 and #31.

  • [cask] Fix cask update deprecation warning. Closes #28.

  • [mpm] Activate unittests in Python 3.6.

  • [mpm] Replace double by single-width characters in mpm output to fix table misalignment. Closes #30.

2.2.0 (2016-12-25)

[!NOTE] 2.2.0 is available on 🐍 PyPI.

  • [mpm] Rename supported property of managers to fresh.

  • [mpm] Allow restriction of package managers to a platform. Closes #7.

  • [mpm] Include supported property in mpm managers sub-command.

  • [bar-plugin] Add optional submenu rendering for BitBar plugin. Closes #23.

  • [bar-plugin] Move Upgrade all menu entry to the bottom of each section in BitBar plugin.

  • [pip] Allow destructive unittests in Travis CI jobs.

  • [pip] Allow usage of pip2 and pip3 managers on Linux.

  • [mpm] Print current platform in debug messages.

  • [mpm] Unittest detection of managers on each platform.

2.1.1 (2016-12-17)

[!NOTE] 2.1.1 is available on 🐍 PyPI.

  • [brew,cask] Fix parsing of non-point releases of brew and cask versions. Closes #15.

  • [bar-plugin] Do not render emoji in BitBar plugin menu entries.

  • [bar-plugin] Do not trim error messages rendered in BitBar plugin.

  • [mpm] Do not strip CLI output. Keep original format.

  • [mpm] Fix full changelog link.

2.1.0 (2016-12-14)

[!NOTE] 2.1.0 is available on 🐍 PyPI.

  • [bar-plugin] Adjust rendering of BitBar plugin errors.

  • [mpm] Fix fetching of log level names in Python 3.4+.

  • [mpm] Print CLI output in unittests.

  • [mpm] Print more debug info in unittests when CLI produce tracebacks.

  • [macos] Drop support and unittests on Mac OS X 10.9.

  • [macos] Add new macOS 10.12 target for Travis CI builds.

  • [bar-plugin] Move BitBar plugin within the Python module.

  • [mpm] Show unmet version requirements in table output for mpm managers sub-command.

  • [mpm] Fix duplicates in outdated packages by indexing them by ID.

  • [bar-plugin] Unittest simple call of BitBar plugin.

  • [mpm] Always print the raw, un-normalized version of managers, as reported by themselves.

  • [mpm] Fetch version of all managers.

  • [mpm] Make manager version mandatory.

  • [mpm] Bump requirement to readme_renderer >= 16.0.

  • [mpm] Always remove ANSI codes from CLI output.

  • [mpm] Fix rendering of unicode logs.

  • [mpm] Bump requirement to click_log >= 0.1.5.

  • [bar-plugin] Force LANG environment variable to en_US.UTF-8.

  • [bar-plugin,mpm] Share same code path for CLI execution between mpm and BitBar plugin.

  • [mpm] Add a -d/--dry-run option to mpm upgrade sub-command.

  • [macos] Remove hard-requirement on macOS platform. Refs #7.

  • [macos,mpm] Fix upgrade of setuptools in macOS and Python 3.3 Travis jobs.

2.0.0 (2016-12-04)

[!NOTE] 2.0.0 is available on 🐍 PyPI.

  • [bar-plugin] Rewrite BitBar plugin based on mpm. Closes #13.

  • [bar-plugin] Render errors with a monospaced font in BitBar plugin.

  • [mpm] Add missing CHANGES.rst in MANIFEST.in.

  • [mpm] Make wheels generated under Python 2 environnment available for Python 3 too.

  • [mpm] Only show latest changes in the long description of the package instead of the full changelog.

  • [mpm] Add link to full changelog in package’s long description.

  • [mpm] Bump trove classifiers status out of beta.

  • [mpm] Fix package keywords.

  • [mpm] Bump minimal pycodestyle requirement to 2.1.0.

  • [mpm] Always check for package metadata in Travis CI jobs.

  • [mpm] Add upgrade_all_cli field for each package manager in JSON output of mpm outdated command.

1.12.0 (2016-12-03)

[!NOTE] 1.12.0 is available on 🐍 PyPI.

  • [mpm] Rename mpm update command to mpm upgrade.

  • [mpm] Allow restriction to only one package manager for each sub-command. Closes #12.

  • [mpm] Differentiate packages names and IDs. Closes #11.

  • [mpm] Sort list of outdated packages by lower-cased package names first.

  • [mpm] Add upgrade_cli field for each outdated packages in JSON output.

  • [bar-plugin,mpm] Allow user to choose rendering of upgrade_cli field to either one-liner, fragments or BitBar format. Closes #14.

  • [mpm] Include errors reported by each manager in JSON output of mpm outdated command.

  • [cask] Fix parsing of multiple versions of cask installed packages.

  • [brew,cask] Fix lexicographical sorting of brew and cask package versions.

  • [mpm] Fix fall-back to iterative full upgrade command.

  • [mpm] Fix computation of outdated packages statistics.

1.11.0 (2016-11-30)

[!NOTE] 1.11.0 is available on 🐍 PyPI.

  • [mpm] Allow rendering of output data into json.

  • [mpm] Sort list of outdated packages by lower-cased package IDs.

  • [brew,cask] Bump minimal requirement of brew to 1.0.0 and cask to 1.1.0.

  • [cask] Fix fetching of outdated cask packages.

  • [cask] Fix upgrade of cask packages.

1.10.0 (2016-10-04)

[!NOTE] 1.10.0 is available on 🐍 PyPI.

  • [mpm] Add optional version property on package manager definitions.

  • [mpm] Allow each package manager to set requirement on its own version.

  • [mas] Let mas report its own version.

  • [mas] Bump minimal requirement of mas to 1.3.1.

  • [mas] Fetch currently installed version from mas. Closes #4.

  • [mas] Fix parsing of mas package versions after the 1.3.1 release.

  • [mpm] Cache lazy properties to speed metadata computation.

  • [mpm] Shows detailed state of package managers in CLI.

1.9.0 (2016-09-23)

[!NOTE] 1.9.0 is available on 🐍 PyPI.

  • [mpm] Fix bumpversion configuration to target CHANGES.rst instead of README.rst.

  • [mpm] Render list of detected managers in a table.

  • [macos] Use conda in Travis tests to install specific versions of Python across the range of macOS workers.

  • [macos] Drop support for PyPy while we search a way to install it on macOS with Travis.

  • [mpm] Let mpm auto-detect package manager definitions.

  • [mpm] Show package manager IDs in mpm managers CLI output.

  • [mpm] Rename package_manager.7h.py BitBar plugin to meta_package_manager.7h.py.

  • [mpm] Give each package manager its own dedicated short string ID.

  • [mpm] Keep a cache of instantiated package manager.

  • [mpm] Add unittests around package manager definitions.

  • [mpm] Do not display location of inactive managers, even if hard-coded.

  • [mpm] Split-up CLI-producing methods and CLI running methods in PackageManager base class.

  • [mpm] Add a new update CLI sub-command.

  • [mpm] Add a new sync CLI sub-command.

  • [mpm] Rename managers’ active property to available.

  • [mpm] Move all package manager definitions in a dedicated folder.

  • [mpm] Add simple CLI unittests. Closes #2.

  • [mpm] Implement outdated CLI sub-command.

  • [mpm] Allow selection of table rendering.

  • [cask] Fix parsing of unversioned cask packages. Closes #6.

1.8.0 (2016-08-22)

[!NOTE] 1.8.0 is the first version available on 🐍 PyPI.

  • [mpm] Move the plugin to its own repository.

  • [mpm] Rename package-manager project to meta-package-manager.

  • [mpm] Add a README.rst file.

  • [mpm] License under GPLv2+.

  • [mpm] Add .gitignore config.

  • [mpm] Add Python package skeleton. Closes #1.

  • [mpm] Split CHANGES.rst out of README.rst.

  • [mpm] Add Travis CI configuration.

  • [mpm] Use semver-like 3-components version number.

  • [bar-plugin] Copy all BitBar plugin code to Python module.

  • [mpm] Give each supported package manager its own module file.

  • [mpm] Add minimal mpm meta CLI to list supported package managers.

  • [mpm] Add default bumpversion, isort, nosetests, coverage, pep8 and pylint default configuration.

1.7.0 (2016-08-16)

  • [brew] Fix issues with $PATH not having Homebrew/Macports.

  • [pip] New workaround for full pip upgrade command.

  • [cask] Workaround for Homebrew Cask full upgrade command.

  • [mpm] Grammar fix when 0 packages need to be upgraded.

1.6.0 (2016-08-10)

  • [pip] Work around the lacks of full pip upgrade command.

  • [mpm] Fix UnicodeDecodeError on parsing CLI output.

1.5.0 (2016-07-25)

  • [mas] Add support for mas.

  • [mpm] Don’t show all stderr as err (check return code for error state).

1.4.0 (2016-07-10)

  • [mpm] Don’t attempt to parse empty lines.

  • [npm] Check for linked npm packages.

  • [gem] Support system or Homebrew Ruby Gems (with proper sudo setup).

1.3.0 (2016-07-09)

  • [mpm] Add changelog.

  • [mpm] Add reference to package manager’s issues.

  • [cask] Force Cask update before evaluating available packages.

  • [mpm] Add sample of command output as version parsing can be tricky.

1.2.0 (2016-07-08)

  • [apm,gem,npm,pip] Add support for both pip2 and pip3, Node’s npm, Atom’s apm, Ruby’s gem.

  • [cask] Fixup brew cask checking.

  • [mpm] Don’t die on errors.

1.1.0 (2016-07-07)

  • [pip] Add support for Python’s pip.

1.0.0 (2016-07-05)

  • [mpm] Initial public release.

  • [brew,cask] Add support for Homebrew and Cask.