Releases: ryansinn/pacselect
Releases · ryansinn/pacselect
v0.6.0
v0.5.0
ci: grant contents:write for release uploads
v0.4.0
[0.4.0] — 2026-03-18
Added
- Graphics filter category — the full graphics stack is now its own named
filter tier, separate from system/core. Covers all Mesa sub-packages
(opencl-mesa,vulkan-mesa-*,libva-mesa-driver,mesa-vdpau, …),
NVIDIA/AMD/Intel GPU drivers, the Vulkan/GL dispatch layer (vulkan-icd-loader,
libglvnd), Xorg, Wayland, and the kernel GPU userspace bridge (libpciaccess).
Users now seegraphics: Nin the summary bar and deferred graphics packages
grouped undergraphics:in the skipped list — making it obvious when a full
upgrade is needed to pick up GPU driver updates. - Group-based safety net — after name-pattern classification, a single
pacman -Sibatch query checks the Groups field of every safe package.
Any package whose group isxorg,plasma,base, or similar is demoted
to skipped automatically, catching packages the name patterns miss. - Package descriptions — the safe-to-install list now shows a short
description frompacman -Sibelow each package name. Zero extra process
calls: descriptions are extracted from the same batch query used for dep-check
and group detection. Hide with--no-descriptionsordisplay.descriptions = false
in config. - Grouped skipped display — deferred packages are now shown grouped by
category (system,graphics,kde,user,partial) instead of a flat
word-wrapped list, so users get an at-a-glance picture of what part of the
system is being held back. --upgrade-config— merges any new default keys from the current schema
into an existing config file, preserving all values the user has already set
and their comments. Prints a list of added key paths. Safe to re-run; reports
"Config is already up to date." when nothing is missing.[display]config section —descriptions(bool, defaulttrue) and
verbose(bool, defaultfalse) can now be set persistently in config.[behavior]config section —auto_confirm(bool, defaultfalse) and
dry_run(bool, defaultfalse) can now be set persistently in config.
All CLI flags still override their config equivalents.src/config_upgrade.rs— self-contained, copy-portable TOML config
upgrade module. No pacselect-specific logic; depends only ontoml_edit
andanyhow. Includes 4 unit tests.
Changed
SkipReasongains aGraphicsvariant (replaces ad-hoc graphics entries
insideSystemCore).GroupFilter(String)variant added for packages
demoted via their pacman group.depcheck::check()replaced bydepcheck::check_all()which returns a
singleSiResultcontaining dep warnings, group demotions, and descriptions
— onepacman -Sisubprocess for all three.- Summary bar breakdown now shows
system,graphics,kde,user,
partialcounts individually. --list-filtersoutput now includes the Graphics patterns section.
v0.2.0 - No more partial upgrades
Full Changelog: v0.1.0...v0.2.0
[0.2.0] — 2026-03-16
Changed
- Dependency safety check is now a hard block — packages that depend on a
skipped package are moved into the skipped list and never installed, instead of
showing an advisory warning and proceeding. This eliminates the entire class of
partial-upgrade problems that the previous warn-only behaviour could allow.- New
SkipReason::PartialUpgrade { needs }variant, displayed as
partial upgrade risk — needs skipped: <pkg>, … - Summary bar now includes a
partial: Ncounter when any packages are
blocked by this rule.
- New
Removed
- Inline
⚠ needs skipped: …warning annotations on safe packages (no longer
applicable — those packages are now blocked outright). - "Partial upgrade warnings" summary block shown before the confirmation prompt.
dep_warningfield from JSON safe-package objects.dep_warningstop-level array from JSON output.
v0.1.0 - Initial Release
v0.1.0 — Initial Release
Smart app updates. Stable system.
pacSelect is a selective pacman updater for Arch-based systems (CachyOS, EndeavourOS, Manjaro, plain Arch). It updates your apps while automatically deferring packages that require a reboot, log-out, or risk breaking your running session.
Features
- System/core filter — ~100 built-in patterns blocking kernel, initramfs, systemd, glibc, Mesa, GPU drivers, audio pipeline (pipewire, wireplumber), and other reboot-required packages
- KDE core filter — unconditionally blocks session-critical packages (
kwin,plasma-*,sddm,kscreenlocker, etc.) - KDE Frameworks version-bump detection — detects your installed KDE Frameworks minor version at runtime and defers any KDE ecosystem package moving to a new minor line (e.g.
6.23 → 6.24); patch releases within the same line pass through - Dependency safety check — syncs the pacman database and warns when a safe package depends on a skipped one (partial upgrade risk)
- AUR labelling — flags foreign/AUR packages via
pacman -Qmin output and JSON --jsonoutput — machine-readable JSON for scripting or a future system-tray app- History log — every run appended to
~/.local/share/pacselect/history.log - User filter patterns —
~/.config/pacselect/config.tomlor--skipflag with glob support - Zero side effects — uses
checkupdates(read-only); never modifies pacman, its hooks, or its config
Notes
- Requires
pacman-contrib(checkupdates) - KDE version probing uses CachyOS package naming (
kcoreaddons) with fallbacks for standard Arch naming (kf6-kcoreaddons) - The dep-check sync (
sudo pacman -Sy) runs silently and is advisory only — failures are non-fatal