github Seafoam-Labs/Shelly-ALPM v3.0.0+9
Shelly V3.0.0

3 hours ago

Shelly-ALPM v3.0.0 — A New Era for Shelly

imdawdage

Shelly v3 is here, and this is easily our biggest release yet! Rather than adding another layer to the existing application, we went back to the foundation and rebuilt almost every major part of Shelly. The package-management core, command-line interface, keyring tool, and GTK4 desktop app have all moved from the v2 C#/.NET codebase to Zig.

The rewrite gives Shelly a much cleaner base to build on, removes the managed .NET runtime from the main application, and makes the connection between Shelly and native Arch Linux libraries far simpler. The familiar shelly and shelly-ui commands are still
there, but nearly everything powering them is new.

⚡ Why Zig matters

This is where the v3 rewrite really shines. Zig is a great fit for a package manager because Shelly already works closely with native Linux libraries such as libalpm, GTK4, libarchive, and GPG. Shelly v3 can call those libraries directly through native bindings instead of moving data through a managed runtime and a large interop layer.

In practical terms, the move to Zig gives Shelly:

  • Fast, ahead-of-time compiled native executables with no managed .NET runtime or garbage collector to start and manage.
  • More predictable memory and resource lifetimes through explicit allocators and ownership.
  • Better compile-time checking at the C library boundary, including generated libalpm bindings.
  • Less runtime machinery between the UI, CLI, and package-management code. That gives Shelly a strong foundation for quicker startup and lower resource use, with proper benchmark work still to come.
  • One native build and test workflow for the CLI, UI, keyring helper, package manager, and optional Flatpak backend.
  • Release-safe builds for the desktop application and size-optimized builds for command-line tools.

The rewrite also let us remove hundreds of old C# source files and retire the previous .NET projects instead of dragging two implementations forward. Making the projects much simpler while providing similar feature sets. It is a huge cleanup and an even bigger step toward making Shelly easier to improve release after release.

🖥️ A completely rebuilt GTK4 experience

The desktop app has been rebuilt in Zig on GTK4, and it feels like a new generation of Shelly. Pages, dialogs, background operations, and communication with the CLI now sit on a cleaner structure, giving the interface plenty of room to grow.

  • Updated the new first-run welcome screen that helps users choose AUR, Flatpak, and AppImage support. Shelly can even install the optional requirements when a feature is enabled.
  • Reworked package browsing with list and grid layouts, sortable columns, better selection behavior, source labels, installed-state filtering, and more complete package details.
  • Improved AUR details, optional dependency selection, PKGBUILD previews, review prompts, and visible makepkg output.
  • Rebuilt update planning and transaction progress so the UI can show the full operation output without locking up during longer tasks.
  • Refined Flatpak management experience with new navigation and new page for installing from bundles and refs.
  • AppImage installation made safer installs are less likely to leave ghost entries behind.
  • Moved maintenance actions into a dedicated Utilities page, including database synchronization, stale lock repair, permission repair, package cache cleanup, and orphan cleanup.
  • Added autosaving settings, configurable sidebar or top-bar navigation, default-page selection, and useful keyboard shortcuts.
  • Improved tray startup and shutdown behavior, single-instance window raising, icons, spacing, theme colors, and a long list of smaller GTK details that make Shelly feel more polished.

🐚 A fully native CLI

The shelly CLI has also been rebuilt from the ground up in Zig. It keeps the readable long-form commands and pacman-like shortcodes, while one native command catalog now powers help, documentation, and shell completions.

  • Running shelly <search terms> can now search standard repositories and the AUR, then send the selected result straight into the normal install flow.
  • Combined update checks and upgrades coordinate standard packages, AUR packages, AppImages, and Flatpaks. An unavailable optional backend no longer has to prevent the independent sources from continuing.
  • Added a package backup export and import using a readable TOML format.
  • Added and expanded commands for package marking, downgrade selection, Arch news, keyring management, configuration, package cache cleanup, pacnew/pacsave handling, stale database lock repair, and permissionrepair.
  • Added Bash completion generation alongside Fish and Zsh, making the new CLI nicer to use right away in more shells.
  • Improved confirmations and transaction previews, including explicit review before system upgrades and before AUR builds.
  • Kept structured JSON output for supported commands and added a framed output mode used by the GTK UI.

🛡️ Smarter package management and stronger reliability

  • Brought ALPM repository configuration, database synchronization, package queries, dependency resolution, installs, removals, upgrades, and downgrades into the new native package-management library.
  • Added parallel repository database synchronization, mirror retry handling, package database signature verification, and clearer signature failures.
  • Preserved the Happy Eyeballs-style network behavior from late v2 and tightened it with response-body validation, redirect handling, mirror fallback, and more reliable timeout behavior.
  • Improved handling for ignored packages and groups, repository usage flags, custom and single-server repositories, installed package reasons, optional dependencies, split packages, and packages already available in system repositories.
  • Ported PKGBUILD parsing and the post-install and homograph checks used during AUR review.
  • AUR upgrades can now review all changed PKGBUILDs before the transaction begins, rather than interrupting the upgrade one package at a time.
  • Fixed cases where optional dependencies could be removed even though another installed package still needed them.
  • Fixed AUR build hangs, incorrect AUR versions, missing built packages, AppImage ghost entries, stale update plans, and several UI state and selection issues.

📦 Flatpak is now truly optional

One of the most exciting structural improvements in v3 is the new optional Flatpak backend. Flatpak support is now shipped as the separate shelly-flatpak-backend package. The base Shelly CLI package does not link to libflatpak, GLib/GIO, or OSTree for Flatpak operations, and it does not load the backend while running non-Flatpak commands.

The backend communicates through a versioned native ABI with a strict message schema and explicit ownership rules. Shelly checks the ABI before use, rejects an incompatible backend cleanly, and keeps ALPM, AUR, AppImage, help, version, and completion commands available when Flatpak support is not installed.

This split keeps the base install lean for people who do not use Flatpak, while letting anyone add full Flatpak support later without rebuilding or reinstalling Shelly. It is a cleaner design for both kinds of users.

🔄 Upgrade notes

  • Existing configuration files are overlaid on the new native defaults, so normal settings should carry forward. Unknown old fields are ignored.
  • Flatpak users should install both flatpak and shelly-flatpak-backend. Shelly will explain what is missing if a Flatpak command is used without them.
  • The standalone keyring executable is now shelly-key instead of shelly-keys. The supported shelly keyring ... commands should be preferred in scripts.
  • The CLI was substantially rebuilt. Existing automation should be checked against shelly --help, especially if it depended on exact human-readable output. Use --json where a command supports it.
  • Clean-chroot AUR builds are still available from the CLI, but the chroot toggle has temporarily been removed from the graphical AUR page while that workflow is being hardened.

🌍 Translations

The rebuilt UI is arriving with refreshed translation catalogs for Bulgarian,
Catalan, Chinese (Simplified), French, German, Greek, Hungarian, Italian,
Japanese, Persian, Polish, Portuguese (Brazil and Portugal), Russian, Spanish,
and Turkish. Notification translations received updates too, helping more
people enjoy v3 in their preferred language from day one.

❤️ Thank you, contributors!

Shelly v3 would not have happened without the extreme dedication, hard work, and occasional wrestling of this enormous rewrite into shape.

Core Contributors:

Full Changelog:
v2.4.1.4...v3.0.0

Don't miss a new Shelly-ALPM release

NewReleases is sending notifications on new releases.