Skip to content

EzSort v0.4.0: a redesigned desktop experience

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Oct 15:37

EzSort v0.4.0

A redesigned desktop experience. The sorting engine, the CLI, and the
on-disk config/history formats keep working exactly as before; the entire
presentation layer, responsiveness, and large-folder performance were
rebuilt.

Organizer preview

Highlights

  • One design system, two real themes. A single token scale for spacing,
    type, radii, and color, with independently tuned warm-slate dark and warm-paper
    light palettes. Every text/background pair the UI uses is checked against
    WCAG AA in the test suite.
  • All six pages rebuilt. Dashboard, Organizer, Categories & Rules,
    History & Undo, Activity, and Settings now share the same sidebar, page
    header, cards, tables, badges, banners, dialogs, toasts, and empty states.
  • Truthful state everywhere. Statistics, folder badges, table counts,
    progress, history rows, and activity entries come from the live engine,
    config, history, and activity log. There are no placeholder numbers and no
    dead controls.
  • Responsive at the minimum size. Tables re-proportion columns instead of
    forcing the page wider, scrollbars hide themselves when content fits, and
    toolbars switch to compact labels at narrow widths. Every page was captured
    and inspected at the 1281x851 physical minimum.
  • Search and filtering. Organizer filters by move/rename/skip and searches
    file, category, and destination; History and Activity have live search;
    Categories filters by name; Activity has kind chips.
  • Persistent activity log. The last 500 events survive restarts in
    activity.json, v0.3.0 entries load unchanged, and an unreadable file is
    moved aside rather than deleted.
  • Faster large folders. Planning is now O(n), the scanner reuses
    DirEntry metadata, and table inserts avoid a quadratic empty-state check.
    A 10k-file preview dropped from roughly 100 seconds to under 10 seconds on
    the test machine.

Safety and compatibility

  • No files are deleted, overwritten, extracted, or uploaded. Existing files at
    a destination are renamed, never replaced.
  • Undo stays conflict-safe: occupied original paths are skipped and the
    remaining work stays in history for a later retry.
  • Cancellation is per task, so cancelling a scan never stops a sort or watch.
  • v0.3.0 config, custom rules, history, and activity files load unchanged.
    History additions (status, cancelled, total_planned, undo tombstones)
    are additive and old readers ignore them.
  • A golden test runs the CLI and the GUI against identical synthetic folders
    and asserts the resulting file trees match.

Keyboard shortcuts

Key Action
Ctrl+1 … Ctrl+6 Jump to a page
F5 Refresh the current page
Ctrl+F Focus the current page's search
Ctrl+O Choose a folder
F1 Show the shortcut sheet
Enter Run a preview from the folder box
Esc Close an overlay / leave search

Downloads

Asset Contents
EzSort-gui-windows.zip Standalone desktop app (EzSort.exe), no Python required
ezsort-cli-windows.zip Standalone CLI (ezsort.exe)
SHA256SUMS.txt SHA-256 checksums for both zips

Extract a zip and run the executable inside it. Verify a download with:

Get-FileHash .\EzSort-gui-windows.zip -Algorithm SHA256

The release build runs the full test suite, builds both executables, and
verifies them end to end (version, real sort, undo, GUI launch, screenshot,
persistence, clean close) before publishing these assets.

Upgrading

pip install --upgrade ezsort for the CLI and module entry points, or replace
your extracted Windows folder with the new zip. Existing configuration and
history are picked up automatically.

Full details: CHANGELOG.md
and docs/DECISIONS.md.