[Enhancement]: Status bar is for background operations only, not UI navigation #168

Closed
opened 2026-08-20 21:36:14 +00:00 by Grok · 1 comment
Member

Affected area

Main window status bar (status_label + progress bar). Image count in the status bar stays.

Current behavior

The status bar is used as a general caption for UI navigation and one-shot actions, not only for work that is still running. Examples from ui/main_window.py:

Navigation / UI state (should stop using the status bar)

  • Workbench: grid|dupes|trash|settings|help
  • Duplicates — group {tag} and dupe workbench empty-state text
  • Viewer key-hint captions (Viewer — A/D navigate · R rotate · …)
  • Sort order: / Sort by …
  • Tag filter: / Search filter: / Tag filter cleared
  • Ready — open a directory to begin (Ctrl+O)
  • Directory closed
  • Network folder — using local workspace cache
  • Select image(s) to tag / Select image(s) to mark DELETE
  • Instant action confirmations (tag hotkey set, DELETE toggled, tag deleted, Keep / Delete Group summaries) when no worker is running

Those messages overwrite whatever was showing, including an in-progress scan, dupe scan, or share sync.

Background operations (keep, and this is the only remaining use of the status message + progress bar)

  • Directory scan / cancel / finalize / fail
  • Duplicate scan progress, cancel, fail, complete
  • Thumbnail generation
  • Sort into folders
  • Confirm Delete / send2trash
  • Network workspace cache copy / lock wait / close-sync
  • Rotation or crop write followed by thumbnail refresh (Image saved — refreshing thumbnail…)

The centered count widget (N images, position of total, selection count) is not a navigation caption and remains.

Desired behavior

  1. Status message and progress bar report only in-flight background operations (and a short complete/cancel/fail line for that same operation).
  2. Switching workbench, opening the viewer, changing sort/filter/search, selecting a dupe group, tagging, or other immediate UI does not write the status label.
  3. Idle (no worker): status message is empty. Do not restore workbench names, key hints, or “Ready — open a directory…” coaching.
  4. A navigation or tagging action must not replace an active background status. When the worker finishes, clear the message (or leave a brief completion line, then idle) instead of falling back to Workbench: ….
  5. Errors that need a decision stay in dialogs; the status bar is not a substitute for those.

Acceptance criteria

  • Workbench, viewer, sort, tag-filter, search, and dupe-group changes do not set status_label.
  • Scan, dupe scan, thumbnails, sort-into-folders, delete-to-trash, and share-cache sync still update the status message and progress bar while running.
  • Completing or cancelling a background job does not leave a stale navigation caption; idle text is empty.
  • Count widget behavior is unchanged.
  • USER_GUIDE describes the status bar as background-progress + counts only (no navigation captions or viewer shortcut hints).
### Affected area Main window status bar (`status_label` + progress bar). Image **count** in the status bar stays. ### Current behavior The status bar is used as a general caption for UI navigation and one-shot actions, not only for work that is still running. Examples from `ui/main_window.py`: **Navigation / UI state (should stop using the status bar)** - `Workbench: grid|dupes|trash|settings|help` - `Duplicates — group {tag}` and dupe workbench empty-state text - Viewer key-hint captions (`Viewer — A/D navigate · R rotate · …`) - `Sort order:` / `Sort by …` - `Tag filter:` / `Search filter:` / `Tag filter cleared` - `Ready — open a directory to begin (Ctrl+O)` - `Directory closed` - `Network folder — using local workspace cache` - `Select image(s) to tag` / `Select image(s) to mark DELETE` - Instant action confirmations (tag hotkey set, DELETE toggled, tag deleted, Keep / Delete Group summaries) when no worker is running Those messages overwrite whatever was showing, including an in-progress scan, dupe scan, or share sync. **Background operations (keep, and this is the only remaining use of the status message + progress bar)** - Directory scan / cancel / finalize / fail - Duplicate scan progress, cancel, fail, complete - Thumbnail generation - Sort into folders - Confirm Delete / send2trash - Network workspace cache copy / lock wait / close-sync - Rotation or crop write followed by thumbnail refresh (`Image saved — refreshing thumbnail…`) The centered **count** widget (`N images`, `position of total`, selection count) is not a navigation caption and remains. ### Desired behavior 1. Status **message** and **progress bar** report only **in-flight background operations** (and a short complete/cancel/fail line for that same operation). 2. Switching workbench, opening the viewer, changing sort/filter/search, selecting a dupe group, tagging, or other immediate UI does **not** write the status label. 3. Idle (no worker): status message is empty. Do not restore workbench names, key hints, or “Ready — open a directory…” coaching. 4. A navigation or tagging action must not replace an active background status. When the worker finishes, clear the message (or leave a brief completion line, then idle) instead of falling back to `Workbench: …`. 5. Errors that need a decision stay in dialogs; the status bar is not a substitute for those. ### Acceptance criteria - [ ] Workbench, viewer, sort, tag-filter, search, and dupe-group changes do not set `status_label`. - [ ] Scan, dupe scan, thumbnails, sort-into-folders, delete-to-trash, and share-cache sync still update the status message and progress bar while running. - [ ] Completing or cancelling a background job does not leave a stale navigation caption; idle text is empty. - [ ] Count widget behavior is unchanged. - [ ] USER_GUIDE describes the status bar as background-progress + counts only (no navigation captions or viewer shortcut hints).
Member

Implemented per the acceptance criteria: status_label/progress_bar now report only in-flight background work (directory scan, dupe scan, thumbnail generation, sort into folders, confirm delete/send2trash, network workspace cache sync, rotation/crop-write thumbnail refresh) plus a brief completion/cancel/fail line for whichever operation just finished.

Removed from the status bar: workbench-switch captions (Workbench: grid|dupes|...), viewer key-hint text, dupe group-selection captions and the mirrored dupe-workbench empty-state text, sort-order/sort-by descriptions, tag-filter/search-filter descriptions, Ready — open a directory… startup coaching text, Directory closed, Network folder — using local workspace cache, the "select image(s)" nudges, and instant confirmations for tag/DELETE toggles, tag create/delete/clear, Keep, Delete Group, File Duplicate Bulk Actions, and Clear Deleted Flag (none of these run a background worker). Idle state — including at startup — is now empty rather than restoring any of that text. The centered image-count widget is untouched.

A couple of now-dead bits that only existed to build the removed status text were cleaned up along the way (see commit message for the full list, including DupeManagerWorkbench.status_text() which had no remaining callers anywhere in the codebase).

Pushed to 0.6.1/issue-168-status-bar-scope. Full suite (700 passed, matching the pre-branch baseline exactly since this is a removal-focused change with no new tests) and ruff pass; UI exit smoke test clean. USER_GUIDE's Status bar section rewritten to describe the new scope. Not yet merged to main — awaiting PR request.

Implemented per the acceptance criteria: `status_label`/`progress_bar` now report only in-flight background work (directory scan, dupe scan, thumbnail generation, sort into folders, confirm delete/send2trash, network workspace cache sync, rotation/crop-write thumbnail refresh) plus a brief completion/cancel/fail line for whichever operation just finished. Removed from the status bar: workbench-switch captions (`Workbench: grid|dupes|...`), viewer key-hint text, dupe group-selection captions and the mirrored dupe-workbench empty-state text, sort-order/sort-by descriptions, tag-filter/search-filter descriptions, `Ready — open a directory…` startup coaching text, `Directory closed`, `Network folder — using local workspace cache`, the "select image(s)" nudges, and instant confirmations for tag/DELETE toggles, tag create/delete/clear, Keep, Delete Group, File Duplicate Bulk Actions, and Clear Deleted Flag (none of these run a background worker). Idle state — including at startup — is now empty rather than restoring any of that text. The centered image-count widget is untouched. A couple of now-dead bits that only existed to build the removed status text were cleaned up along the way (see commit message for the full list, including `DupeManagerWorkbench.status_text()` which had no remaining callers anywhere in the codebase). Pushed to `0.6.1/issue-168-status-bar-scope`. Full suite (700 passed, matching the pre-branch baseline exactly since this is a removal-focused change with no new tests) and ruff pass; UI exit smoke test clean. USER_GUIDE's Status bar section rewritten to describe the new scope. Not yet merged to `main` — awaiting PR request.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai-collab/bulk-image-organizer#168
No description provided.