1.0.3-2 — July 2026

New Administrator desktop launcher created automatically on first root session; two bug fixes for duplicate VM package entries and Intel GPU firmware locked without a real Intel GPU.

Added

  • --root launch flag and Administrator .desktop launcher: New CLI flag relaunches the app via pkexec straight into Administrator mode. A second .desktop entry (org.soplos.sys-cleaner-root.desktop) is written to /usr/share/applications/ automatically the first time a root session is established — no additional authentication prompt. Idempotent: checks for the file's existence first.

Fixed

  • Duplicate spice-vdagent / spice-webdavd entries on non-KVM/QEMU guests: VM_GUEST_PACKAGES lists the same two packages under both the kvm and qemu keys. On any other guest type (e.g. VMware), both keys were iterated with no cross-key deduplication, listing each package twice and breaking the "Select all" checkbox. Added a seen_vm_pkgs set to deduplicate by package name across the whole loop.
  • Intel GPU firmware (i915) locked without a real Intel GPU: get_firmware_protection_set() protected i915 / intel / iwlwifi firmware whenever any PCI device with vendor 8086 was present — including chipset/bridge/USB-controller devices emulated by VMware and other hypervisors on AMD hosts. i915 is now only protected when a genuine GPU-class Intel device is present (gpu_pci_vendors), mirroring the same distinction already used for Intel driver packages.

1.0.3-1 — July 2026

Four bug fixes across firmware handling, KVM package detection, orphaned dracut config cleanup, and VirtualBox Guest Additions uninstall; plus firmware families without a dedicated package now marked as temporary.

Fixed

  • NVIDIA firmware deletion left the driver package installed: do_remove_firmware only checked the dedicated firmware-* package before deciding whether to delete files directly; if the full driver stack (nvidia-driver, nvidia-kernel-dkms, etc.) was installed under a different package, its firmware got wiped while the driver stayed installed. Now checks the full driver package stack from hardware.py before purging.
  • virt-viewer / virt-manager / libvirt-clients false positive in KVM_PACKAGES: These are remote-capable client tools that connect to any libvirt/QEMU/SPICE host over the network, independent of local KVM support — a user accessing a remote Proxmox host via virt-viewer from a non-KVM machine had it flagged as unused. Removed from the host-only package list.
  • Orphaned /etc/dracut.conf.d/*.conf from driver installers never cleaned: Files like nvidia.conf / blacklist-nouveau.conf are written directly by driver install scripts, not as package conffiles, so apt purge never removes them. Added as a fifth orphan-reference source in get_orphan_module_refs(), with a hard exclusion list for distro-policy files (soplos.conf, i18n.conf, local.conf) that must never be touched.
  • VirtualBox Guest Additions never fully uninstalled: Orphan cleanup only removed leftover systemd service/autostart files, never the actual kernel modules/DKMS//opt/VBoxGuestAdditions-* payload installed by the official .run installer (not tracked by dpkg). Now runs the official uninstall.sh (or rcvboxadd cleanup) first when present.

Added

  • Firmware families without a dedicated package marked as temporary: Families bundled inside firmware-linux-nonfree / firmware-misc-nonfree are resolved via real dpkg -S ownership lookup (fixed for merged-usr /lib/usr/lib symlink resolution) and shown with a warning icon — deleting them only reclaims space until the next package update, it is not permanent.

Improved

  • Unified package/module mapping across hardware.py, cache.py, root_helper.py: Each file previously kept its own hand-written copy of the package ↔ kernel module mapping, which had already drifted. Consolidated into a single PKG_MODULES dict in hardware.py, with get_module_to_package_map() deriving the inverse direction.

1.0.3 — July 2026

Build dependency update — python3-all replaced with python3 in debian/control.

Changed

  • Build dependency python3-all replaced with python3.

1.0.2-9 — June 2026

Security and logic fix: Protected active Soplos kernel DKMS modules from being incorrectly flagged as orphans.

Fixed

  • DKMS orphan scanner: Fixed an indentation logic bug that incorrectly handled Soplos kernel versions causing false positives (NVIDIA, v4l2loopback).

1.0.2-8 — June 2026

Twelve bug fixes: kernel active-detection false positives, race condition in APT cache cleanup, DKMS scanner extended to all installed kernels, CPU temperature prioritized hwmon reader (k10temp/coretemp over acpitz), substring-match fixes for modprobe.d and module names, and service file orphan check requiring all co-owning packages to be uninstalled.

Fixed

  • Kernel false-positive active detection (kernels.py): version in current used substring matching — 6.1.0-2-amd64 was a substring of 6.1.0-27-amd64, so an old kernel could be marked as active and protected from removal. Changed to exact equality (==) in both get_installed_kernels and _find_unmatched_modules_dirs.
  • _clean_file mishandled commented module entries (root_helper.py): l.strip().lstrip('#') left a leading space on # vboxguest' vboxguest' which didn't match the module name, so orphaned comment lines were never removed. Conversely, #vboxguest (no space) matched and was deleted. Fixed with .strip().lstrip('#').strip().
  • Race condition in APT Cache orphan cleanup (cache_tab.py): clean_module_refs (which runs dracut -f) and apt_autoremove were dispatched to the root_helper concurrently — two threads writing/reading the same stdin/stdout pipe could corrupt the JSON protocol. apt_autoremove is now chained in the callback of clean_module_refs.
  • "Detected hardware" label included non-GPU PCI vendors (hardware.py): _detect_gpu_names() received all PCI vendor IDs; on a KVM host, virtio devices (vendor 1af4) were present in lspci and the label incorrectly showed "QEMU/KVM". Fixed by passing gpu_pci_vendors (class 03xx devices only).
  • VM guest type missing from "Detected hardware" label (main_window.py): hardware_summary only listed GPU vendor names and KVM host status. Running inside VirtualBox, VMware, Hyper-V etc. was never shown. Added human-readable guest VM labels for all supported hypervisors.
  • Locale sizes reported as 0 KB when du has partial read errors (locales.py): check=True caused CalledProcessError when du returned exit code 1 (common in /usr/share/locale due to restricted subdirs), discarding the partial stdout result. Removed check=True; stdout is now used regardless of return code.
  • DKMS orphan scanner only checked the running kernel (hardware.py): /var/lib/dkms/<mod>/<ver>/<kver>/ was only scanned for the currently booted kernel. Compiled modules for other installed kernels (not currently active) were never detected. Scanner now iterates all kernel-version subdirs (matched by ^\d+\.\d+) under each DKMS version directory.
  • apt_purge triggered after failed DKMS cleanup (drivers_tab.py): on_dkms_done did not check the result of the DKMS removal step — even if dracut -f failed, apt_purge was dispatched next with rebuild_initrd: False, leaving the system with purged packages but an outdated initrd. Now aborts on DKMS step failure. Also corrected: when DKMS step succeeds and APT packages follow, rebuild_initrd is now True so dracut runs after the purge.
  • Substring match for module names in modprobe.d files (cache.py): if mod in content was a plain substring search — module 'wl' matched inside 'brcmwl', potentially flagging valid config files as orphaned and deleting them. Replaced with re.search(r'\b<mod>\b', content) for word-boundary matching.
  • Service/autostart files flagged as orphans when a co-owning package is still installed (cache.py): vboxadd.service is listed under both virtualbox-guest-utils and virtualbox-guest-dkms. When only virtualbox-guest-utils was autoremoved, the service was shown as orphaned even though virtualbox-guest-dkms (still installed) legitimately owns it. Added reverse-map check: a file is only flagged as orphaned when ALL packages that list it are uninstalled.
  • root_scan.py referenced non-existent fields (root_scan.py): This script was superseded by root_helper.py but still referenced k.packages (removed from KernelInfo) and lacked calls to get_orphan_module_refs, get_firmware_sizes and other newer scanners. Marked as deprecated — root_helper.py is the active entry point.
  • CPU temperature always showed 20°C on some boards (overview_tab.py): The overview panel read /sys/class/thermal/thermal_zone0/temp directly, which on many AMD/Ryzen boards maps to acpitz — a stub driver that always returns 20°C. Replaced with a prioritized hwmon reader: searches /sys/class/hwmon/*/name for k10temp (AMD Tctl) first, then coretemp (Intel Package/Core 0), then other common drivers, falling back to acpitz/thermal_zone as a last resort. Within each hwmon, labeled inputs (Tctl, Package, Core 0) are preferred over lowest-indexed.

1.0.2-7 — June 2026

VirtualBox guest file false positives fixed: guest service files are no longer shown as orphans when running inside a VM, and duplicate entries for 98vboxadd-xclient are eliminated.

Fixed

  • VirtualBox (and other hypervisor) guest service files shown as orphans when running inside a VM: get_orphan_module_refs() was unaware of the current hypervisor guest type. When Boro/Tyron runs inside VirtualBox with Guest Additions installed from the ISO (not via apt), files like vboxadd.service, 98vboxadd-xclient and vboxclient.desktop existed on disk without a matching dpkg package, so they were incorrectly reported as orphaned. The function now accepts vm_guest_type (from systemd-detect-virt) and protects all files belonging to the current guest platform: VirtualBox (oracle), VMware (vmware), Hyper-V (microsoft), KVM/QEMU (kvm/qemu).
  • Duplicate entries for 98vboxadd-xclient: The file /etc/X11/Xsession.d/98vboxadd-xclient was listed in both virtualbox-guest-x11 and virtualbox-guest-utils entries of PKG_AUTOSTART, causing it to appear twice in the orphans list. Added seen_paths deduplication so each file path is reported at most once.

1.0.2-6 — June 2026

KVM/QEMU guest tools fix: SPICE packages are now correctly protected when running in a KVM or QEMU virtual machine.

Fixed

  • SPICE guest tools shown as removable in KVM/QEMU VMs (virt-manager): VM_GUEST_PACKAGES has separate entries for kvm and qemu, both containing spice-vdagent and spice-webdavd. When systemd-detect-virt returns kvm, only the kvm entry was protected — the qemu entry caused the same packages to appear as removable. Added alias logic so that detecting kvm also protects qemu packages and vice versa.

1.0.2-5 — June 2026

Firmware removal made permanent: the action now purges the owning APT package when all its firmware directories are removed, preventing files from being restored on the next upgrade.

Fixed

  • Firmware removal not permanent — files restored on every apt upgrade: do_remove_firmware was deleting files from /lib/firmware/ directly without purging the owning APT packages. Any subsequent apt full-upgrade restored the deleted files. The action now runs apt purge for the owning package when all its firmware directories are removed, covering: firmware-amd-graphics, firmware-intel-graphics, firmware-intel-sound, firmware-iwlwifi, firmware-realtek, firmware-brcm80211, firmware-atheros, firmware-mediatek, firmware-libertas and firmware-nvidia-graphics. Generic bundles (firmware-linux-nonfree, firmware-misc-nonfree) are not purged as they contain firmware for many unrelated hardware families.

1.0.2-4 — June 2026

Bug fixes for the DKMS orphan detector — false positive on active NVIDIA driver and missed old compiled versions after upgrades.

Fixed

  • DKMS orphan detector — active driver shown as orphan (NVIDIA false positive): Added DKMS_MODULE_PACKAGES mapping covering NVIDIA (nvidianvidia-kernel-dkms), VirtualBox guest (vboxguestvirtualbox-guest-dkms), Broadcom (broadcom-sta, wlbroadcom-sta-dkms / bcmwl-kernel-source), ZFS, v4l2loopback, bbswitch and other known mismatches between DKMS directory name and package name.
  • DKMS orphan detector — old compiled versions not detected after upgrade: When a driver is upgraded, old compiled modules in /var/lib/dkms/<module>/<old-version>/ were not flagged as orphans because the new package was found installed. The detector now checks for the DKMS source directory /usr/src/<module>-<version>/ — its absence confirms no owning package for that specific version. A version-string comparison against the installed package version is used as fallback.

1.0.2-3 — June 2026

Orphaned DKMS module detection in the Drivers tab, orphaned module reference scanner in APT Cache, and automatic reference cleanup after driver removal.

Added

  • Drivers tab — orphaned DKMS modules: New scanner checks /var/lib/dkms/ for compiled .ko files whose source package (*-dkms) is no longer installed. Shown as [DKMS] entries alongside regular driver packages and removed via dkms remove or direct directory deletion + depmod -a + dracut -f.
  • APT Cache — orphaned module references: New scanner detects leftover references to modules from uninstalled packages across five locations: /etc/modules, /etc/modules-load.d/, /etc/modprobe.d/, systemd unit files and X11/XDG autostart files. Covers orphaned entries from VirtualBox, VMware, Hyper-V and guest tool packages.
  • Automatic reference cleanup on driver removal: After purging driver packages, leftover entries in /etc/modules and /etc/modules-load.d/ are automatically removed before dracut -f. Covers VirtualBox, VMware, NVIDIA, Broadcom and Hyper-V module references.
  • Full orphan reference cleanup action: Removes module load entries, orphaned modprobe.d files, disables and removes orphaned systemd services, removes orphaned X11/XDG autostart files, then rebuilds initramfs with dracut -f.

1.0.2-2 — May 2026

Extended hardware detection in the Drivers tab (VM guest tools, printer drivers, Wacom tablets, Broadcom WiFi) and critical fixes for Intel GPU false positives in VMs, dracut firmware protection and progress bar display.

Added

  • Drivers tab — VM guest tools: New VM_GUEST_PACKAGES dict maps systemd-detect-virt output to guest tool packages. Tools for the current hypervisor are protected; all others are shown as removable. Covers VirtualBox (virtualbox-guest-x11/utils/dkms), VMware (xserver-xorg-video-vmware, open-vm-tools, open-vm-tools-desktop), KVM/QEMU (spice-vdagent, spice-webdavd), Hyper-V (hyperv-daemons), Xen (xen-utils-guest, xe-guest-utilities).
  • Drivers tab — printer drivers: USB vendor detection for HP (hplip, hplip-data), Epson (epson-inkjet-printer-escpr/2), Canon (cnijfilter2, scangearmp2), Brother (printer-driver-brlaser), Samsung (printer-driver-splix), Kyocera (printer-driver-c2esp). Packages only shown as removable when the corresponding USB vendor is not detected.
  • Drivers tab — Wacom tablets: xserver-xorg-input-wacom, libwacom2 shown as removable when USB vendor 056a (Wacom) is absent.
  • Drivers tab — Broadcom proprietary WiFi: broadcom-sta-dkms, bcmwl-kernel-source shown as removable when PCI vendor 14e4 (Broadcom) is absent.

Fixed

  • Drivers tab — Intel GPU false positive in VMs: VMs expose Intel chipset devices (i440FX, ICH9) with vendor 8086 in lspci, causing Intel GPU driver packages to be incorrectly protected. A new _scan_gpu_pci_vendors() function uses lspci -n to check PCI class 03xx and only protects Intel GPU packages when a real Intel GPU is present.
  • Drivers tab — VMware tools shown as removable when running in VMware: When VirtualBox is configured with VMSVGA display, the VMware PCI vendor 15ad appears in lspci, incorrectly protecting open-vm-tools. VM tools are now managed exclusively via systemd-detect-virt, not PCI vendor detection.
  • Drivers tab — fixes not applying in production: All hardware detection improvements were applied to root_scan.py but the live app uses root_helper.py via pkexec. root_helper.py was not updated with gpu_pci_vendors and vm_guest_type parameters — this is now corrected.
  • Firmwares tab — dracut protection layer missing client-side: root_helper.py was not exporting dracut_fw_dirs in the scan JSON. The client-side firmware protection set rebuild now correctly includes firmware directories declared in /etc/dracut.conf.d/.
  • Progress bar — showing 100% during operations: set_ui_state(..., pulse=True) now resets fraction to 0.0 before calling pulse(). Previously the leftover 1.0 fraction from a completed scan persisted as "100%" text during all subsequent indeterminate operations.
  • "Select all" checkbox not resetting after cleanup: The checkbox remained checked after a successful cleanup and re-scan. Added reset via handler_block_by_func + set_active(False) in the on_done callback of drivers_tab, firmware_tab, temp_tab, logs_tab, user_cache_tab, and flatpak_tab.

1.0.2-1 — April 2026

Snap tab redesigned with full purge support, virtual machine guest detection with hypervisor identification, and critical fixes for kernel removal, package management commands and translation coverage.

Added

  • Snap tab redesigned: Now has two sections like Flatpak — installed snaps with full uninstall (snap remove --purge, removes snap and all its data) and old/disabled revisions.
  • VM guest detection: systemd-detect-virt now identifies the hypervisor type (KVM, QEMU, VMware, VirtualBox, Hyper-V, Xen, Parallels…) and displays it in the Drivers tab label. Fallbacks via /sys/hypervisor/type and DMI strings.
  • QEMU/KVM guest support: Added Red Hat/Virtio PCI vendor 1af4 to the hardware map so QEMU guest devices are properly recognised.

Fixed

  • Kernel removal: After purging kernel packages, dracut -f and update-grub are now always executed to regenerate the initramfs and update the bootloader. Previously neither was called.
  • apt-getapt: All package management commands in the root helper now use the modern apt frontend.
  • Translation coverage: 27 previously untranslated strings (Drivers tab, Firmware tab, Kernels orphan section, Locales tab) added to all 8 language dictionaries and .mo files recompiled.

1.0.2 — March 2026

New Installed Apps and Snap tabs, firmware size display, individual APT cache .deb selection, auto-scan on launch, and extensive fixes for Flatpak, firmware protection, overview layout and progress bar.

Added

  • Installed Apps tab: New user-mode tab listing all manually installed packages with search, size info and selective uninstall via pkexec.
  • Snap tab: New user-mode tab detecting and removing old/disabled Snap revisions (consistent with Flatpak tab).
  • Firmware sizes: Each firmware family in the Firmwares tab now shows its disk usage.
  • APT Cache — individual .deb selection: The APT Cache tab now lists every cached .deb file individually, allowing selective deletion instead of all-or-nothing.
  • Auto-scan on open: User-mode scan now starts automatically on launch without requiring a manual button press.
  • Overview Snap card: Old Snap revisions now appear as a card in the user-mode overview.
  • Overview Apps card: Manually installed packages appear as a card in the user-mode overview.
  • "Select all docs" button: New button in the Languages tab to select all documentation entries at once.

Fixed

  • AMD/GPU firmware protection: Firmware directories belonging to the detected GPU (amdgpu, radeon, i915…) are now locked in the Firmwares tab, preventing accidental removal.
  • KVM/QEMU/VirtualBox detection: Virtual machine packages and firmwares are now detected and protected when the corresponding technology is active.
  • Overview grid symmetry: Cards in the overview now use column-homogeneous layout so incomplete rows still render all cards at equal width.
  • Flatpak tab redesigned: Now shows two sections — installed Flatpak apps (human-readable name, app ID, version, disk size) and unused runtimes. Previously the tab only showed runtime refs with no useful app information.
  • Flatpak sizes: Fixed 0 B size display by reading actual disk usage via du on the flatpak installation directories. The previous flatpak list --columns=size returns download size, always 0 for already-installed items.
  • Flatpak unused runtime detection: Replaced the naive runtime comparison (which incorrectly flagged the SDK and Platform GL extensions as unused) with delegation to flatpak uninstall --unused, which correctly handles extensions, SDK dependencies and transitive references.
  • Apps tab — firmware and kernel filtering: Firmware and kernel packages no longer appear in the Installed Apps tab after a root-mode cleanup. Packages are now filtered by dpkg section (kernel, firmware) and by name prefix (firmware-, linux-image-, linux-headers-, etc.).
  • Progress bar stuck at 100%: Fixed. User-mode scan now uses real progress fractions per step (0 → 0.15 → 0.35 → … → 1.0). Root-mode scan uses a continuous 120 ms pulse timer that stops when the scan completes.

Improved

  • Tab order (user mode): Overview → Apps → Flatpak → Snap → User Cache → Trash.
  • Overview card order: Mirrors tab order in both user and root modes.

1.0.1 — March 2026

Dual-layer user/administrator scanning, new Flatpak, User Cache and Trash tabs, dynamic tab visibility, and major fixes for root session reuse and pkexec prompt reduction.

Added

  • Dual-Layer Scanning: Separates User and Administrator scans. Starts with a fast user-level scan, only requesting administrative privileges when explicitly requested via the top header button.
  • Flatpak Cleaning: New dedicated tab to detect and safely uninstall unused Flatpak runtimes (flatpak uninstall --unused).
  • User Cache Cleaning: New scanner specifically targeting ~/.cache, grouped by application folders.
  • Trash Management: New dedicated tab to easily empty the user's local trash (~/.local/share/Trash).
  • Dynamic Tabs: System-critical tabs (GPU Drivers, Firmwares, Kernels, APT, Logs, Languages) now logically remain hidden until an administrative scan is authorized.
  • Unified Overview: The overview tab now perfectly aggregates sizes and elements from both the user-level and root-level scans dynamically.

Fixed

  • Root Session Refreshing: Resolved a major architectural frustration where the administrative session was hard-killed (triggering repeated pkexec password prompts) just to refresh the UI after a cleanup. The persistent IPC helper is now gracefully reused for subsequent rescans.
  • Silent User Cleanup: Removed intrusive pkexec fallbacks from user-level tasks. Clearing user cache or trash now silently skips unprivileged files instead of throwing root password prompts.
  • Kernel Tab Display: Fixed a TypeError in IPC data deserialization that caused the Kernels tab to crash silently and display completely empty.
  • Root Launch Optimization: The administrative scan now correctly detects if the application is already running under sudo / root, bypassing redundant Polkit authentication prompts.

1.0.0-2 — March 2026

Minor packaging fixes for the About dialog on KDE.

Fixed

  • About dialog credits panel on KDE: The credits area now displays with an opaque dark background and square corners instead of transparent or rounded-corner artifacts.
  • About dialog app icon: Standardized to 48×48 pixels.

1.0.0-1 — March 2026

Initial release: intelligent system cleaner with dual APT/Flatpak/Snap/kernel/firmware scanning, Languages tab, Soplos v2.0 UI standard, hardware monitoring, 8-language i18n and full keyboard shortcuts.

Added

  • Ctrl+Tab / Ctrl+Shift+Tab: Keyboard shortcuts to cycle forward/backward between tabs.
  • F1 — About dialog: Press F1 to open the About dialog with version, author, license and website.

FixedGNOME

  • GNOME HeaderBar: Now displays with correct dark background matching other Soplos apps.
  • GNOME CSD controls: Minimize/maximize/close buttons no longer affected by the global button {} CSS rule.

AddedInitial Features

  • Languages & Docs: Intelligent cleanup tab that protects active system locales and clears translations and help files.
  • Standardized UI: Implemented Soplos v2.0 Standard with slim tabs and professional HeaderBar (matching WebApp Manager).
  • Core Security: Consolidated administrative tasks into a single pkexec prompt.
  • Advanced Cleaning: Recursive __pycache__ cleaning and system cache optimization.
  • Intelligent Protection: Locked network firmwares and active kernels to prevent system failures.
  • Precision Scanning: Universal scanner using du -sk for accurate and fast size calculation.
  • Hardware Monitoring: Extended overview including Temperature, GPU, and Disk usage.
  • Global Reach: Fully localized UI in 8 languages (ES, EN, FR, DE, PT, IT, RO, RU).
  • Responsive Design: Optimized layout for GTK environments (X11/Wayland/GNOME/KDE/XFCE).
  • Keyboard Shortcuts: Ctrl+W (close), Ctrl+R (rescan), Ctrl+1–7 (tab navigation).
  • Scan Icon: Enlarged to 128px in Overview tab for better visibility.

Fixed

  • Action buttons: Remove, Clean and Autoremove buttons now re-enable after failed or cancelled operations instead of remaining permanently disabled.
  • Progress bar in Kernels tab: Now closes correctly after cleanup completes.
  • Translatable strings: GPU Drivers and Firmware tab strings were hardcoded in Spanish; corrected to English as required by the i18n system.
  • Temp Files — active session files: Socket files, named pipes and symlinks (D-Bus, MCP, systemd) are now excluded from the scanner — they are active session files and must not be deleted.
  • Temp Files — root-owned files: Deletion of root-owned files now uses a single pkexec fallback call instead of silently failing with PermissionError.
  • APT Cache scanner: Was only counting .deb files, always showing 0 on clean systems. It now also measures the package lists (/var/lib/apt/lists/) populated by apt update.
  • APT Cache — orphan button: "Remove orphaned packages" button is now hidden instead of visually active when there are no orphans — the XFCE theme did not grey out destructive-action buttons correctly.
  • Overview metrics timer: System usage metrics moved to a background thread to prevent UI freezes after scan.
  • Languages tab: Widget creation deferred until the tab is first opened (lazy loading). Previously, 500–1000+ GTK widgets were created synchronously on scan completion, causing the entire application to freeze on any subsequent interaction.

Improved

  • fmt_size() consolidated in utils/constants.py, eliminating duplication across 6 tab files.
  • Duplicate constants removed: Single source of truth for SUPPORTED_LANGUAGES and PROTECTED_FIRMWARE in their respective modules.
  • Unused functions removed: get_autoremove_size_kb(), _get_size() and get_total_temp_size() eliminated.
  • Import cleanup: Misplaced and unused imports cleaned up across all UI and scanner modules.
  • Logging unified through the logger module in application.py (replaced print() calls).
  • Overview card strings (items, family(s), removable) are now translatable across all 8 languages.