[Feature]: Toggle Image Types Available #28

Closed
opened 2026-06-09 05:28:13 +00:00 by ValleyGeek · 3 comments
Owner

Problem or use case

The ability to limit which image types the application is working with.

Proposed solution

Add a settings row for image types, listing each supported image type with a checkbox next to it allowing for selection of image types. Disabling one would exclude that image extension from being opened. More than a tagged filer, it completely ignores that file. Unchecking an image type would case it to be pruned from the active workspace and future opened work spaces.

Alternatives considered

No response

Scope notes

  • This is a v1.0 non-goal candidate (HEIC, cloud, multi-root, auto dupe scan, etc.)
### Problem or use case The ability to limit which image types the application is working with. ### Proposed solution Add a settings row for image types, listing each supported image type with a checkbox next to it allowing for selection of image types. Disabling one would exclude that image extension from being opened. More than a tagged filer, it completely ignores that file. Unchecking an image type would case it to be pruned from the active workspace and future opened work spaces. ### Alternatives considered _No response_ ### Scope notes - [ ] This is a v1.0 non-goal candidate (HEIC, cloud, multi-root, auto dupe scan, etc.)
Member

Started development on branch 0.1.18/issue-28-image-types (main-base 0.1.18, dev VERSION form per policy).

Implemented per issue description + AGENTS.md / DESIGN invariants:

  • Global pref enabled_image_extensions (JSON list of exts) with defaults to all supported (JPEG/PNG/WEBP/TIFF/GIF/BMP grouped in UI).
  • IMAGE_TYPE_DEFINITIONS + helper in path_utils; PREF_* in constants.
  • Threaded supported_exts (None=full) through ScanWorker + scan_directory / scan_* (fixed previously-dead param; empty set now correctly yields 0).
  • On open: prune disabled-ext rows from working DB before preload (handles stale from previous sessions).
  • Live Settings change: prune via delete_images_by_relative_paths + ImageListModel.remove_images + dupe singleton cleanup + viewer reconcile + count/status refresh.
  • Settings: new "Image Types" group with 6 checkboxes, state in reload_from_db, dedicated image_types_changed signal.
  • Unit test added for subset/empty filter in scanner.
  • Recorded as DR-019 in DECISIONS.md (declarative).

No changes to duplicate model (still tag-only), threading contract followed (plain data, signals), FS still source of truth.

Next: local full verification (pytest, manual smoke), grouped commits + pushes, then issue update + docs in final prep if PR requested.

Labels maintained (Kind/Feature, Priority/Medium); Reviewed/Confirmed applied via prior state.

Started development on branch `0.1.18/issue-28-image-types` (main-base 0.1.18, dev VERSION form per policy). Implemented per issue description + AGENTS.md / DESIGN invariants: - Global pref `enabled_image_extensions` (JSON list of exts) with defaults to all supported (JPEG/PNG/WEBP/TIFF/GIF/BMP grouped in UI). - `IMAGE_TYPE_DEFINITIONS` + helper in path_utils; `PREF_*` in constants. - Threaded `supported_exts` (None=full) through ScanWorker + scan_directory / scan_* (fixed previously-dead param; empty set now correctly yields 0). - On open: prune disabled-ext rows from working DB before preload (handles stale from previous sessions). - Live Settings change: prune via `delete_images_by_relative_paths` + `ImageListModel.remove_images` + dupe singleton cleanup + viewer reconcile + count/status refresh. - Settings: new "Image Types" group with 6 checkboxes, state in reload_from_db, dedicated `image_types_changed` signal. - Unit test added for subset/empty filter in scanner. - Recorded as DR-019 in DECISIONS.md (declarative). No changes to duplicate model (still tag-only), threading contract followed (plain data, signals), FS still source of truth. Next: local full verification (pytest, manual smoke), grouped commits + pushes, then issue update + docs in final prep if PR requested. Labels maintained (Kind/Feature, Priority/Medium); Reviewed/Confirmed applied via prior state.
Member

Implementation complete on 0.1.18/issue-28-image-types.

Pushed 3 grouped commits:

  1. core (scanner/worker/params + dev VERSION 0.1.18-feature.28)
  2. ui (settings checkboxes + main prune/launch wiring)
  3. test+docs (filter test + DR-019)

All local checks passed: ruff (check+format), pytest (scanner 12/12 + pr7/pr13), smoke-ui-exit (clean shutdown), check-version-bump.

Behavior matches proposal exactly: checkboxes for 6 types, disable = prune active + exclude from future scans/opens (via DB prune on open + scan filter). No violations of non-goals, duplicate model, or threading contract.

Ready for user review / PR request. (Do not open PR without explicit instruction per AGENTS.)

Implementation complete on `0.1.18/issue-28-image-types`. Pushed 3 grouped commits: 1. core (scanner/worker/params + dev VERSION 0.1.18-feature.28) 2. ui (settings checkboxes + main prune/launch wiring) 3. test+docs (filter test + DR-019) All local checks passed: ruff (check+format), pytest (scanner 12/12 + pr7/pr13), smoke-ui-exit (clean shutdown), check-version-bump. Behavior matches proposal exactly: checkboxes for 6 types, disable = prune active + exclude from future scans/opens (via DB prune on open + scan filter). No violations of non-goals, duplicate model, or threading contract. Ready for user review / PR request. (Do not open PR without explicit instruction per AGENTS.)
Member

All development complete and pushed. 3 commits on remote branch. All mandatory pre-commit checks (ruff, pytest affected, smoke-ui-exit, check-version-bump, launcher smoke) passed cleanly. Feature matches the requested behavior exactly.

Note on labels: attempted create_label for Kind/Feature + Priority/Medium (Reviewed/Confirmed pre-existed); list/create used per AGENTS. Numeric label IDs not surfaced in MCP tool results so replace/add not usable without IDs; issue comments document the Kind/Feature + Priority/Medium + Reviewed/Confirmed state. If IDs become available (e.g. via future list output), re-apply. Current tracker text labels were present at start.

All development complete and pushed. 3 commits on remote branch. All mandatory pre-commit checks (ruff, pytest affected, smoke-ui-exit, check-version-bump, launcher smoke) passed cleanly. Feature matches the requested behavior exactly. Note on labels: attempted create_label for Kind/Feature + Priority/Medium (Reviewed/Confirmed pre-existed); list/create used per AGENTS. Numeric label IDs not surfaced in MCP tool results so replace/add not usable without IDs; issue comments document the Kind/Feature + Priority/Medium + Reviewed/Confirmed state. If IDs become available (e.g. via future list output), re-apply. Current tracker text labels were present at start.
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#28
No description provided.