Changelog

One entry per stable release; release candidates roll up into the stable that follows them. The same notes appear on each GitHub Release.

v2026.05.17

2026-05-17

Fixed

  • installer backstop /dev/shm cleanup with fuser and lazy unmount
  • installer bypass login shell when generating the user's ssh key
  • ci prefetch local pkgs' runtime deps by sourcing their PKGBUILDs
  • ci skip prefetch for local pkgs without a built artifact

v2026.05.16

2026-05-16

New

  • hyprland keep jetbrains-toolbox below the waybar
  • waybar click the clock to open the datetime TUI
  • shedman add a datetime TUI for timezone, NTP, and manual time
  • shedman ship the AUR bundle from shedos-system, install on update
  • shedman bundle fingerprint drivers for pacman -U
  • shedman remove legacy hyprlock before upgrading
  • shedman refresh mirrorlist before update/migrate; daily cadence
  • shedman migrate installs the proprietary AUR list via yay
  • shedman auto-migrate pre-cutover installs from shedman update

Fixed

  • ci include calamares and cage in the prefetch list
  • make drop iso size cap
  • ci include -debug splits in the AUR phantom-prune
  • packages drop goodix-v2 and xps9300-bin from bundle and norepublish
  • ci stop rebuilding cached shedos packages every run
  • build invalidate shedos-system cache on AUR bundle drift
  • installer exclude full Calamares state from unpackfs copy
  • shedman wire shedos-system migrations into post_install

Internals

  • installer drop dead shedos_mirrors Calamares module

v2026.05.15

2026-05-15

New

  • shedman config --review opens as a centered floating window
  • shedman cut over to ReviewScreen and delete the old screens
  • shedman ReviewScreen routes file tree + merge panel events
  • shedman MergePanel widget combining 3-pane and single-pane
  • shedman FileTreePanel widget hosting the conflict tree
  • shedman add inter-widget Message classes for config --review
  • shedman v toggles between 3-pane and single-pane merge views
  • shedman SinglePaneScreen for the merged-result view
  • shedman single-pane merge renderer
  • shedman bind Enter on the merge screen to the decision modal
  • shedman add DecisionModal overlay for merge resolution
  • shedman status flash after every merge decision
  • shedman add RESULT preview pane to 2-way merges

Fixed

  • shedman post-cutover hotfixes for the IDE review layout
  • shedman single-pane save runs the same flow as 3-pane
  • shedman single-pane decisions land with visible feedback
  • shedman use callback-form push_screen for the decision modal
  • shedman prune MergeScreen footer to essentials
  • shedman HunkStrip shows resolved color on the current hunk
  • shedman default config --review to the TUI
  • waybar keep update + review terminals open until acknowledged
  • shedman surface pacman prompts in interactive update mode
  • shedos-kernel own /boot/vmlinuz-shedos-kernel so upgrades are atomic
  • initramfs migrate mkinitcpio HOOKS off legacy udev+keymap

Internals

  • shedman hoist MergeState + current_hunk to ReviewApp
  • shedman drop Side.SKIP from config --review

v2026.05.14

2026-05-14

New

  • cage downstream package with touchpad tap-to-click enabled
  • shedos-system export XDG defaults via /etc/profile.d
  • config-review swap Meld GUI backend for VS Code merge editor
  • hyprland theme Meld with Catppuccin Mocha to match the TUI
  • config-review add a Meld GUI backend for folder-mode merges
  • config-review replace the flat file list with a directory tree
  • config-review syntax-highlight the merge TUI hunk panes
  • config-review word-level diff highlighting within paired hunk lines
  • hyprland workspace overview via Hyprspace
  • hyprland add a workspace overview gesture via hyprexpo
  • hyprland bind touchpad swipe and pinch gestures
  • shedman restore stripped locale and man files on existing installs
  • hyprland ship the application dock and full-screen app drawer
  • shedman add dock subcommand for managing the app dock
  • shedman add uninstall subcommand with --search
  • power replace the Waybar power menu with an overlay client
  • prompt-ui add a power dropdown to greeter and lock
  • prompt-ui replace text branding with the SHEDOS wordmark
  • prompt-ui switch greeter and lock clock to 12-hour format
  • screensaver rebuild logo catalog with 38 solid-fill variants
  • system zsh tab-completion mirrors the bash positional protocol
  • system tab-complete fingerprint args, classify libfprint variant
  • hyprland autostart daemons via systemd
  • hyprland respawn Hyprland on crash, relock if needed
  • screensaver swap hyprlock for our own lock client
  • system shedman fingerprint subcommand
  • screensaver fingerprint icon and hint on the lock prompt
  • screensaver parallel fingerprint auth thread
  • screensaver bundle fprintd and TOD drivers, ship fingerprint pam.d
  • screensaver cycle screensaver, prompt, and dpms in lock mode
  • screensaver add wlr-output-power-management bindings
  • screensaver add lock-screen state machine
  • screensaver authenticate the lock screen via PAM
  • screensaver add --mode=lock using ext-session-lock-v1
  • screensaver scaffold ext-session-lock-v1 plumbing
  • make add push target that rebases before pushing
  • shedos-system clear VT text buffers before greetd takeover
  • boot mirror Limine config to ESP after rendering
  • prompt-ui inotify watcher for live theme reloads
  • prompt-ui load theme from greeter.toml with per-field fallback
  • prompt-ui port widget rendering from greeter
  • prompt-ui scaffold shared lock-surface crate
  • theme emit a blurred wallpaper companion
  • theme apply wallpaper changes live
  • theme refuse to swap broken theme outputs
  • release add release-stable and release-rc Makefile targets

Fixed

  • ci refresh pacman cache before mkarchiso
  • ci build cage with --syncdeps so meson is installed
  • cmdline drop fbcon=map:99 so VT switching works
  • greeter ESC clears the password input instead of exiting
  • prompt-ui cap password dots and move CAPS tag to the left
  • urls correct Theshedman/shedos casing across tracked files
  • shedos-hyprland-plugin-hyprspace bump _commit to a181f4a
  • ci roll up rc release notes into the stable release
  • nvim preserve XDG_CONFIG_HOME across sudo
  • ci let verify-cache.sh fall back to archiso/shedos-repo
  • hyprland skip dim while the screensaver lock runs
  • hyprland brand the dock launcher and silence the drawer's gtk borders
  • nvim make sudo nvim load the shedos config
  • installer stop the live-ISO launcher entry from leaking
  • config-review rename FileTreeScreen.tree to avoid Screen collision
  • packages list python-dbus in source list for shedos-system dep
  • config-review bail out cleanly on pathological file sizes
  • shedman config write manifest and BASE atomically, BASE-first
  • config-review auto-resolve identical-edit hunks in 3-way merge
  • hyprland render overview thumbnails inside their workspace boxes
  • hyprland make overview thumbnails render and reflow windows below the panel
  • installer verify locale-gen actually ran after Calamares
  • waybar wrap the launch so the clock survives a fragile locale
  • archiso ship the full locale.gen template
  • archiso keep locales, man pages, and docs on the live ISO
  • hyprland install the waybar logo and keybindings dialog assets
  • packaging pull shedos-power into shedos-hyprland and shedos-meta
  • ci hash symlink targets so dead absolute-path symlinks don't break pkg-hash
  • hyprland put drawer on overlay layer with explicit waybar/dock margins
  • waybar match logo and right-side pill hover to the workspace-button style
  • shedman correct pinned-file path and use pkill -x for dock toggle
  • zshrc stop aliasing grep to ripgrep
  • hyprland catch the airootfs config up with Hyprland 0.55 schema
  • installer kill chroot stragglers before umount so the install completes
  • waybar unify right-side icon pills with the workspace-button box style
  • packages drop libfprint-2-tod1-xps9300-bin
  • packages drop libfprint-2-tod1-goodix-v2
  • ci wire shedos-repo into download-packages so AUR-only deps resolve
  • ci unblock aur-cache-refresh on ananicy-cpp-git under gcc 15
  • shedman install the fingerprint subcommand binary
  • screensaver clear hyprshade dim before the lock surface renders
  • shedman load review excludes from config, skip git trees by default
  • system pass locale env through sudo
  • ci exempt shedos-power from makepkg --cleanbuild
  • theme point GTK at the installed Catppuccin directory name
  • system silence shutdown watchdog and wire Plymouth shutdown splash
  • hyprland dim every monitor on idle via hyprshade
  • waybar hide empty custom-module slots, drop the doctor module
  • hyprland catch the skel config up with Hyprland 0.55 schema
  • installer drop hyprlock from the calamares module
  • packages ship sof-firmware, drop hyprlock from the meta
  • screensaver pause fingerprint auth thread outside prompt phase
  • screensaver suppress spurious fingerprint failure flashes
  • screensaver add clang to makedepends for pam-sys bindgen
  • hyprland give the waybar shedos-logo a rounded chip
  • packages add openssl-1.1 dep for libfprint-2-tod1-elan
  • ci match aur build-local pacman section to its db filename
  • ci register cached AUR pkgs in [shedos-aur-build] before makepkg
  • installer accept 8 GB machines in calamares ram check
  • update handle conflicts= under --noconfirm
  • ci install built AUR packages so intra-batch deps resolve
  • hyprland bypass start-hyprland watchdog
  • screensaver real-time fingerprint feedback
  • screensaver swap stock libfprint for libfprint-tod
  • system set lenient faillock policy (deny=6, unlock_time=300)
  • hyprland set allow_session_lock_restore
  • install write encoding-qualified locale to /etc/locale.conf
  • hyprland pin wayland-wm stderr to journal
  • shedos-system pin [email protected] stderr to journal
  • systemd set ShowStatus=no in system.conf and user.conf
  • greetd claim tty1 exclusively
  • greetd redirect cage stdio to journald
  • install strip live-ISO welcome banner from installed systems
  • greeter show user-friendly auth error messages
  • greeter cancel greetd session on auth failure to allow retry
  • shedos-system self-correcting cmdline backfill v2
  • installer remove console=tty1 from install-time cmdline
  • shedos-hyprland hold plymouth shutdown 1s for Hyprland DRM release
  • shedos-system back-fill UX cmdline tokens for pre-6f8a21a installs
  • prompt-ui paint wallpaper per output rather than spanning canvas

Internals

  • config-review split TUI palette into hue and semantic layers
  • screensaver drive the wayland event loop via calloop
  • screensaver route OutputSurface through ShellBinding
  • greeter consume shedos-prompt-ui for shared rendering

Docs

  • config-review trim skip-auto-decided comment
  • shedman surface touchpad gestures in the keybindings dialog
  • screensaver document lock mode
  • system shedman fingerprint man page

Testing

  • config-sync cover last-notified-conflict-count in expected-state
  • config-review cover yours-only and theirs-only auto-classification
  • config-review cover BOTH_TY, SKIP, 2-way nonoverlap, whole-file identical

Chores

  • greeter collapse pointer press guard into pattern binding
  • prompt-ui silence too_many_arguments on pub fn render
  • shedman remove the first-boot welcome
  • misc tidy archiso, keyring scripts, i18n
  • packages tidy tree configs and scripts
  • packages finish install-scriptlet tidy
  • packages tidy install scriptlets
  • packages tidy PKGBUILD comments
  • ci tidy workflow comments
  • scripts tidy build and helper scripts
  • system tidy shedman config-review TUI
  • system tidy shedman large subcommands
  • system tidy shedman medium subcommands
  • system tidy shedman small subcommands
  • screensaver tidy effects R-W
  • screensaver tidy effects I-Q
  • screensaver tidy effects E-I
  • screensaver tidy effects A-D
  • screensaver tidy effects framework
  • screensaver tidy support crates
  • screensaver tidy cli sources
  • screensaver tidy wayland surface
  • screensaver tidy core modules
  • screensaver tidy wayland modules
  • greeter tidy module sources
  • screensaver tidy lock and auth sources
  • prompt-ui tidy module sources
  • system tidy shedman completions
  • scripts tidy lock-migration + fingerprint
  • systemd tidy user units
  • packages drop stale hyprlock and sddm references
  • screensaver post-upgrade notice for hyprlock removal
  • screensaver drop hyprlock
  • screensaver silence clippy warnings across the workspace

v2026.05.08

2026-05-08

New

  • devops add kubectl, minikube, and helm to default devops set
  • keybindings redesigned reference dialog
  • waybar add ShedOS S logo at far left
  • screensaver three patterned logo variants
  • screensaver five light/illumination effects
  • screensaver three multi-row logo variants
  • screensaver five new logo variants
  • screensaver five geometric-assembly effects
  • screensaver five particle-system effects
  • screensaver five atmospheric-reveal effects
  • screensaver per-logo Catppuccin palettes
  • screensaver add --survey for catalog review
  • screensaver render independently on each output
  • greeter smooth post-auth transition; suppress console flash
  • apply add [services.docker] enable toggle

Fixed

  • browser open the system default in a new window
  • installer bake UX-critical cmdline tokens into install-time baseline
  • keybindings add -w flag to nautilus command for opening in a new window
  • ci gate kernel-cache save on actual files; treat empty hit as miss
  • ci gate shedos-system pacman.conf hook on build-environment marker
  • ci trust workspace for git in build-iso and build-packages
  • release hash tracked files only via git ls-files
  • ci strip prod [shedos] / [shedos-testing] blocks during build
  • apply use re.sub for cmdline rewrites to avoid prefix collisions
  • apply reconcile kernel cmdline across all Limine entries
  • screensaver align --version with package CalVer
  • screensaver wayland renderer hung silently on Hyprland
  • i18n make embedded en-US the actual hard fallback
  • screensaver drop unfilled logo variants; rewrite big
  • greeter render UI on primary output only on multi-monitor setups
  • keyring order pam_gnome_keyring after system-local-login
  • ci verify AUR upstream signatures instead of blanket --skippgpcheck
  • packaging drop calamares from shedos-meta

Internals

  • mirrorlist single script for reflector flags shared across the three callers
  • installer move wifi persistence from shedos_configs to shedos_finalize

Docs

  • kernel correct PKGBUILD note about config provenance
  • align with offline-install reality; sweep stale references

Testing

  • installer cover six untested Calamares custom modules

Chores

  • branding point os-release at shedos.org and drop the orphan
  • installer drop 16 orphan branding assets
  • installer drop welcome geoip probe
  • drop unused shedos_plymouth.conf
  • drop dead scripts; correct stale comment in shedos_finalize

v2026.05.06

2026-05-06

New

  • bump auto-refresh local source hashes on every bump
  • hypr keybindings menu, auto-reload path unit, browser-default helper
  • hypridle 4min screensaver, 5min lock, 7min dpms-off
  • dev MAKEFLAGS=-j$(nproc) + bigger inotify/file-max for IDEs
  • power TLP battery profile + PCIe runtime PM udev rule
  • keyring ship pam_gnome_keyring so login unlocks the secret store
  • hypridle 5min screensaver, 10min lock, 12min dpms-off
  • autostart launch jetbrains-toolbox on login
  • hyprland horizontal workspace slide instead of vertical
  • reflector weekly mirrorlist refresh on installed system
  • lock screensaver renders above hyprlock; first key dismisses
  • boot bridge cage→hyprland gap via deferred plymouth quit

Fixed

  • rc2 drop broken DKMS; full BIOS install support; keyring default=login
  • packages list inotify-tools in source list for shedos-hyprland dep
  • packages broaden WiFi + BT device support (firmware + RTL8821AU DKMS)
  • kernel drop DEBUG_INFO_REDUCED — incompatible with BTF (breaks bpftool vmlinux.h)
  • ci kernel cache hardening (skip empty saves)
  • kernel apply auto-refreshed config.x86_64 hashes
  • iso drop cow_spacesize 4G→2G + zstd 22→19 (8GB-RAM installs)
  • ci explicit fetch tags so release notes find prev tag
  • apply exit cleanly when not running as root
  • strip explanatory comments per house style
  • greeter redirect uwsm/hyprland stdio so it stops bleeding to greeter VT
  • apply mirror limine.conf to ESP locations on cmdline write
  • apply allow [theme] top-level key (consumed by theme_renderer)
  • skel-heal skip self-heal in live ISO chroot (no live-zprofile strip)
  • cmdline add console=tty1 to keep console out of greeter VT
  • greetd vt = "next" so console output stays off greeter VT
  • zshrc drop unset BAT_THEME export
  • autostart drop dup welcome exec-once; jetbrains starts minimized
  • skel strip live-ISO autostart from .zprofile; self-heal existing users
  • site show same-date RC alongside stable
  • build drop chmod for deleted customize_airootfs.sh
  • services track greetd, not sddm (login manager swapped)
  • packaging install plymouth-bridge script + drop-in
  • welcome inline-validate email instead of re-execing the script
  • archiso replace customize_airootfs.sh with pacman hooks + static airootfs files
  • branding defer plymouth -R until kernel presets exist

Performance

  • kernel debug-info REDUCED + zstd-compressed (BTF preserved)

Docs

  • keybindings default web browser + Super+Alt+K menu

v2026.05.04

2026-05-04

New

  • hyprland Super+E code, Super+N nautilus, Super+A postman
  • install offline unpackfs from prebuilt install.sfs
  • install unpackfs bundle + bundled AUR proprietaries
  • install aria2c XferCommand + ParallelDownloads=10 + reflector pre-flight
  • release hash-aware bump + --check + CI auto-bump + atomic release
  • install default-install dev apps via yay; drop netinstall picker
  • iso boot live ISO from shedos-kernel only; drop stock linux
  • iso live ISO auto-launches into Hyprland with waybar + wifi + Calamares
  • build track BUILT_PKGS in build-shedos-packages.sh
  • install code ships by default; remove from optional picker
  • idle screensaver continues through hyprlock via transparent surface
  • build per-package cache + manifest-aware build flow
  • build hash-aware bump-version.sh; only bump changed packages
  • build compute-pkg-hash.sh helper
  • installer Calamares optional-apps screen via packagechooser + custom job
  • shedman rewrite install as a unified CLI wrapper
  • installer require network at Calamares start
  • installer trim shedos_finalize redundancies post-pacstrap
  • installer pacstrap-based install replaces unpackfs
  • installer trim live ISO package set
  • system pacman.conf marker block uses path-segmented URL
  • hyprland export WAYLAND_DISPLAY to systemd-user + dbus on session start
  • hyprland exit binding prefers uwsm stop for clean session teardown
  • greeter start_session via uwsm + clear-tty wrapper for clean handoff
  • hyprland skip hyprlock at boot — only lock on idle/manual/suspend
  • screensaver systemd user service replaces systemd-run + pkill lifecycle
  • greetd switch default_session to cage + shedos-greeter
  • shedman theme subcommand for set/get/list/apply
  • theme user configs source theme outputs (wallpaper + GTK + CSS)
  • theme theme reconciler + 4 Catppuccin Mocha palettes
  • greeter wrong-password feedback (red border + error text)
  • greeter greetd IPC client + auth flow on Enter
  • greeter keyboard input + password input box rendering
  • greeter clock + branding text via JetBrainsMono Nerd Font
  • greeter wlr-layer-shell fullscreen + wallpaper render
  • greeter scaffold shedos-greeter Rust crate skeleton
  • installer finalize uses greetd, drop calamares displaymanager
  • live-iso autologin via greetd initial_session
  • system ship greetd + regreet + hyprpaper configuration

Fixed

  • packages obsidian lives in extra; move out of aur.txt
  • screensaver drop wayland buffer leak; cache audio fft scratch
  • hyprlock add missing background configuration settings
  • pacman single-source [shedos]; drop aria2c xfer
  • install seat group + offline welcome + shedman HOME
  • release reorder VERSION write after working-tree check
  • release derive VERSION from TAG instead of failing on mismatch
  • meta bump pkgrel; conflicts include linux + vbox modules
  • meta drop virtualbox-guest-utils + conflicts=(linux,...)
  • iso single-rootfs offline install; airootfs is the install target
  • aur remove visual-studio-code-bin, slack-desktop, and obsidian-bin from norepublish list. We already have code in the official pacman repo.
  • bundle forward --ignore to pacstrap to avoid provider conflicts
  • meta drop installer.txt from shedos-meta closure
  • repo trust cached -git AUR pkgs on per-push builds
  • ci gate auto-bump by actor instead of [skip ci] commit marker
  • pacstrap drop unsatisfiable shedos-* version pins; widen ttf-font conflicts
  • ci auto-bump step needs cd, safe.directory, pull --rebase
  • build unbreak shedos-screensaver compile and shedos-repo sig check
  • make annotate release tag with -m so signing-required configs work
  • packaging shedos-system depends on ananicy-cpp-git
  • repo sweep phantom packages so shedos.db drops removed entries
  • pacstrap conflicts=() + --ignore= deflect virtual-provider rolls
  • build rebuild shedos.db from scratch; bump shedos-meta pkgrel
  • ci track AUR rebuilds in /tmp/built-pkgs.txt so repo-add fires
  • iso cp shedos.db.tar.gz.sig → shedos.db.sig (was 404'ing pacstrap)
  • iso netinstall checkboxes; sudoers SETENV; repo-db cp fallback
  • iso cache-bust stock calamares so packagechooser patch lands
  • iso build calamares with packagechooser; nerd font; floating nmtui
  • iso align Calamares packagechooser id; remove yad popup; waybar wifi icon
  • iso valid Hyprland config + Calamares module loading + drop legacy installer
  • iso close swaybg/nm-connection-editor/ttf-font cache misses
  • iso add shedos-kernel + headers to lean live-ISO roots
  • iso add greetd/cage/bluez/pipewire-pulse to lean live-ISO roots
  • iso skip shedos-* sig validation in pacstrap
  • iso disable LocalFileSigLevel in build-env pacman.conf
  • build wire closure regen into CI; pin wireplumber in lean roots
  • build teach verify-shedos-deps about .meta-closure.txt
  • build commit fully-resolved package closures
  • iso pin pipewire-jack in lean live-ISO list
  • build cache accumulation + lex-order repo-add bug (rc1 ISO build broken)
  • session call uwsm finalize from Hyprland (greetd login loop)
  • iso render live-ISO pacman.conf channel from tag type
  • iso use shedos-branding wallpaper for live session
  • hypridle inhibit_sleep = 3 (lock-notify) — wait for lock before suspend
  • hyprlock drop obsolete options + move fail_timeout to [general]
  • greeter cache scaled wallpaper + surface real greetd error in failure UI
  • greetd seatd dep + greeter group memberships + HOME env (production boot fixes)
  • greeter use xdg-shell instead of layer-shell (cage compatibility) + ship dusk-blurred.png
  • build skip --cleanbuild for shedos-greeter (src/ collides with makepkg $srcdir)
  • build add shedos-greeter to --syncdeps case
  • gitignore track shedos-greeter Rust sources
  • system bump pkgrel so users on broken 2026.05.01-1 can upgrade
  • system resolve greetd file conflicts via post_install scriptlet

Internals

  • installer drop dead TUI orchestrator; tighten shared lib
  • remove .flake8 configuration and update plugin dependencies

Docs

  • site refresh shedman install commands page for the new CLI
  • refresh for v2026.05.02 (path-segmented channels, lean ISO, build incrementality)
  • update sddm references for greetd switch

Chores

  • remove obsolete wallpaper images from configuration
  • trim verbose comments

v2026.04.30

2026-04-30

Fixed

  • wallpapers update wallpaper paths and add new wallpapers
  • update one y/N gate, then noninteractive pacman/yay/sync
  • waybar make updates pill match clock styling instead of faded default
  • live-iso suppress hyprland start-hyprland watchdog warning
  • screensaver use --hold not --shuffle in hypridle on-timeout