[Feature]: Filter multi-tagged images and list dynamic tag-combination groups #166

Open
opened 2026-08-20 05:27:57 +00:00 by Grok · 0 comments
Member

Affected area

Tag Filter (grid, viewer, Duplicates sidebar, Trash)

Problem

Users can filter by individual tags (Active any-of) or require every Active tag with no extra user tags (Exclusive). There is no way to:

  1. Show only images that carry more than one user tag.
  2. Discover which tag combinations actually exist in the workspace and jump to each combination without already knowing which tags to put in Active + Exclusive.

That makes it hard to review images that were tagged with overlapping sets (for example person + location, or three-way combinations) and to see every distinct grouping that appears.

Current behavior

Tag Filter lists real workspace tags under --Available-- / --Active-- / --Exclude--. Exclusive is an exact user-tag set match for whichever tags the user already selected. Untagged Only covers the zero-tag case. Combination sets are not enumerated.

Desired behavior

  1. Multi-tag filter — a Tag Filter option that shows images with two or more user tags (DELETE and duplicate-prefix tags do not count toward the count, matching Exclusive’s extra-tag rules).
  2. Dynamic combination groups — Tag Filter lists virtual entries for every distinct user-tag set that actually occurs on at least one image (sets of size 2+). These are not stored as real tags in the working DB; they are derived from current assignments and stay in sync when tags are added, removed, or renamed.
    • Example: images tagged {Alice, Beach} and {Alice, Beach, Night} produce two groups such as Alice + Beach and Alice + Beach + Night.
    • Selecting a group filters to images whose user-tag set equals that combination (same semantics as Exclusive for that set).
    • Groups appear in a dedicated section of the popup (for example --Tag Groups--) so they can be searched and used like other filter entries.
    • Display names use a stable join (sorted tag names, +) so the same set always looks the same.

Design notes (to confirm in a DR if needed)

  • Virtual groups only; do not create real tags or persist combinations as rows.
  • User tags only; ignore DELETE and F-DUPE_ / V-DUPE_ / legacy dupe prefixes when building sets.
  • Singleton sets (exactly one user tag) stay as ordinary Available tags; groups are combinations of two or more.
  • Filter order should stay Active / Exclusive / Exclude / Hide Deleted; a selected group is equivalent to putting those tags in Active with Exclusive on.
  • Large workspaces may produce many combinations; search in the popup should match group names, and empty combinations must disappear when the last member is retagged.

Acceptance criteria

  • Tag Filter can show only images with 2+ user tags.
  • Distinct user-tag combinations (size 2+) appear as virtual filter entries and update live with tag changes.
  • Selecting a combination shows only images whose user-tag set matches that combination.
  • Combinations are not written as real tags; rename/delete of a member tag updates or removes the group.
  • Grid, viewer, Duplicates sidebar, and Trash honor the same filter.
  • USER_GUIDE documents the new option and group list.
  • Tests cover combination enumeration, exact-set filtering, multi-tag count (excluding DELETE/dupe tags), and live updates on tag mutate.

Out of scope

  • Changing Exclusive, Exclude, or Untagged Only semantics.
  • Sort into Folders by Tags (still single non-dupe tag only, DR-010).
  • Persisting combination groups across workspaces or as user-created tags.
### Affected area Tag Filter (grid, viewer, Duplicates sidebar, Trash) ### Problem Users can filter by individual tags (Active any-of) or require every Active tag with no extra user tags (Exclusive). There is no way to: 1. Show only images that carry **more than one** user tag. 2. **Discover** which tag combinations actually exist in the workspace and jump to each combination without already knowing which tags to put in Active + Exclusive. That makes it hard to review images that were tagged with overlapping sets (for example `person` + `location`, or three-way combinations) and to see every distinct grouping that appears. ### Current behavior Tag Filter lists real workspace tags under **--Available--** / **--Active--** / **--Exclude--**. Exclusive is an exact user-tag set match for whichever tags the user already selected. Untagged Only covers the zero-tag case. Combination sets are not enumerated. ### Desired behavior 1. **Multi-tag filter** — a Tag Filter option that shows images with two or more **user** tags (`DELETE` and duplicate-prefix tags do not count toward the count, matching Exclusive’s extra-tag rules). 2. **Dynamic combination groups** — Tag Filter lists virtual entries for every distinct **user-tag set** that actually occurs on at least one image (sets of size 2+). These are not stored as real tags in the working DB; they are derived from current assignments and stay in sync when tags are added, removed, or renamed. - Example: images tagged `{Alice, Beach}` and `{Alice, Beach, Night}` produce two groups such as `Alice + Beach` and `Alice + Beach + Night`. - Selecting a group filters to images whose user-tag set **equals** that combination (same semantics as Exclusive for that set). - Groups appear in a dedicated section of the popup (for example **--Tag Groups--**) so they can be searched and used like other filter entries. - Display names use a stable join (sorted tag names, ` + `) so the same set always looks the same. ### Design notes (to confirm in a DR if needed) - Virtual groups only; do not create real tags or persist combinations as rows. - User tags only; ignore `DELETE` and `F-DUPE_` / `V-DUPE_` / legacy dupe prefixes when building sets. - Singleton sets (exactly one user tag) stay as ordinary Available tags; groups are combinations of two or more. - Filter order should stay Active / Exclusive / Exclude / Hide Deleted; a selected group is equivalent to putting those tags in Active with Exclusive on. - Large workspaces may produce many combinations; search in the popup should match group names, and empty combinations must disappear when the last member is retagged. ### Acceptance criteria - [ ] Tag Filter can show only images with 2+ user tags. - [ ] Distinct user-tag combinations (size 2+) appear as virtual filter entries and update live with tag changes. - [ ] Selecting a combination shows only images whose user-tag set matches that combination. - [ ] Combinations are not written as real tags; rename/delete of a member tag updates or removes the group. - [ ] Grid, viewer, Duplicates sidebar, and Trash honor the same filter. - [ ] USER_GUIDE documents the new option and group list. - [ ] Tests cover combination enumeration, exact-set filtering, multi-tag count (excluding DELETE/dupe tags), and live updates on tag mutate. ### Out of scope - Changing Exclusive, Exclude, or Untagged Only semantics. - Sort into Folders by Tags (still single non-dupe tag only, DR-010). - Persisting combination groups across workspaces or as user-created tags.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
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#166
No description provided.