Skip to content

ui redesign - #6

Merged
aquistusfami merged 3 commits into
mainfrom
ui-redesign
Nov 5, 2026
Merged

aquistusfami merged 3 commits into
mainfrom
ui-redesign

Conversation

@aquistusfami

Copy link
Copy Markdown
Owner
  • Add undo, dry-run, CLI, more distros and smarter cleaner
  • Redesign TUI and make the optimizer honest and safe

aquistusfami and others added 3 commits November 5, 2026 15:04
- trash.py: freedesktop Trash + action history; dev junk and uninstall
  remnants are trashed and `marmot undo` restores the last batch.
- Dry-run for every cleaner item (TUI Preview button, --dry-run).
- pkgmgr: dnf (4/5), zypper, apk backends and Flatpak apps; verified
  against real Fedora, openSUSE and Alpine containers.
- cli.py: marmot status|scan|clean|undo|history, --json output; the
  TUI still opens when no command is given.
- Cleaner: per-folder ~/.cache selection, orphaned packages, unused
  Flatpak runtimes, Docker/Podman prune, old Snap revisions (argv-safe).
- Analyzer: cached sizes, progress, cancellation, percentage bars,
  stays on one filesystem.
- TUI: scan/clean/uninstall run in worker threads; log markup fixed.
- Tests isolate XDG dirs; 108 tests.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Fix: "Reclaim swap" ran swapoff -a && swapon -a, which leaves zram /
  systemd swap units disabled (swapon -a only reads fstab). Devices are
  now cycled one at a time and restored with their priority; offered
  only when there is swap in use and RAM to hold it.
- Optimizer tasks check first and show why they do not apply; new
  Trim SSDs; drop caches labelled benchmarking-only; `marmot optimize`.
- New layout: theme-aware cards, sparklines, coloured bars, top
  processes, system card, 1-5 tab keys, confirm dialogs, cleaner
  summary, one-line package rows, analyzer d=move to Trash (home only).
- Escape user-controlled text in markup ([ in file/package names).
- Uninstaller filters a cached package list instead of re-running the
  package manager on every keystroke.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The 1 s monitor timer and worker callbacks looked widgets up by id;
when they fired while the app was exiting the screen was already
emptied and query_one raised NoMatches (flaky CI on py3.11 and Arch,
and a possible traceback on quit). Widgets are now resolved once in
on_mount. Adds a regression test.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@aquistusfami
aquistusfami merged commit 5fd522e into main Nov 5, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant