Skip to content

feat(library): add customizable metadata filter bar - #2157

Open
Jonuco wants to merge 5 commits into
CyberTimon:mainfrom
Jonuco:feat/metadata-filter-bar
Open

Jonuco wants to merge 5 commits into
CyberTimon:mainfrom
Jonuco:feat/metadata-filter-bar

Conversation

@Jonuco

@Jonuco Jonuco commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Description

Adds a customizable Metadata Filter bar above the Library so photos can be narrowed down by camera settings and library metadata without entering search queries. For example, select two camera models, two apertures, and several ISO values to show only photos matching that combination.

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Performance improvement
  • Code refactoring
  • Documentation update
  • UI/UX improvement
  • Build/CI or Dependency update

Changes Made

  • Customizable filter columns: Add, remove, or change up to six columns. Available fields are Date, Camera, Lens, ISO, Aperture, Shutter Speed, Focal Length, Edit Status, Rating, Flag, Color Label, and File Type. The default layout shows Date, Camera, Lens, and Edit Status.
  • Multi-selection and combined filtering: Click a value to select it, or use Cmd/Ctrl + click to add or remove values. Values within a column are combined with OR; active columns are combined with AND. Metadata selections also work alongside the existing Library search and filters, and apply to the shared image list used by Grid, List, and Culling views.
  • Faceted counts: Each value shows how many photos match the other active metadata columns. Zero-count values remain visible, and an Unknown entry handles missing metadata.
  • Hierarchical dates: Expand years into months and days, or select a year or month to include its matching dates.
  • Collapsible bar and quick reset: Collapse the bar while keeping active filters visible as distinct summary pills with bold values. Use All to clear a column or the clear button to remove all metadata selections. The bar remains available when the current combination has no results.
  • Persistent layout, folder-specific selections: Store the column configuration and expanded state in AppSettings. Clear active selections when switching folders or albums, and clear a column's selection when its field is replaced or removed. The optional settings field preserves compatibility with existing settings files.
  • Keyboard shortcut: Toggle the bar with \ (toggle_filter_bar), configurable in Settings → Controls, while in Library view.
  • Loading and compact layouts: Show a loading state while folder contents or EXIF metadata are being read. Keep column headers on one line with ellipsis and tooltips; allow dropdown text and chevron sizing to be customized, and keep dropdown menus within the viewport.
  • Localization: Add the filter labels, values, loading message, and shortcut description across all 17 locale files.

Screenshots/Videos

1. Metadata Filter — Grid View with multiple camera, aperture, and ISO selections

Canon EOS R5 and FUJIFILM X-T5; f/2.8 and f/4; ISO 100, 200, and 400. The combination returns 12 demo photos.

Image

2. Metadata Filter — List View with filtered results and EXIF columns

Nikon Z 8 and Sony ILCE-7M4; f/4 and f/5.6; ISO 400 and 800. The eight matching files show their aperture and ISO values in the list.

Image

The screenshots use synthetic photo thumbnails and demo metadata. The thick coral outline and shadow are annotations added to highlight the feature.

Testing

  • These changes were tested locally by a human and confirmed to work.
  • No automated test files were added in this PR.

Validation was run against the published feature head 8eaf9358, using the installed project dependencies:

  • npm run build — passed. Vite reports its bundle-size warning.
  • npm run i18n:runtime-check — passed. Validated 1,890 plural resolutions and 32,006 placeholder sets across 17 locales.
  • git diff --check — passed. No whitespace errors in the PR diff.
  • npm run typecheck — fails on both this branch and upstream main (aa419508). Both report 63 diagnostics, with matching counts by filename and TypeScript error code.
  • npm run i18n:check — fails on both this branch and upstream main. The extractor reports locale formatting/ordering differences and the same two missing Ukrainian keys: settings.general.hideCollapsedPanels and settings.general.hideCollapsedPanelsDesc.
  • Prettier check of changed TypeScript files — reports formatting issues in 10 files. Formatting cleanup remains outstanding.

Screenshot preparation exercised multi-selection and filtered Grid/List results in a local React demo with a mocked Tauri bridge. Native EXIF loading, settings persistence across app restarts, and other platforms were not retested in this validation session.

Test Configuration:

  • OS: macOS 27.0.1
  • RapidRAW Version: v1.6.9
  • Feature head: 8eaf9358
  • Target: CyberTimon/RapidRAW:main

Checklist

  • My code follows the project's code style
  • I haven't added unnecessary AI-generated code comments
  • My changes generate no new warnings or errors

Additional Notes

This PR contains the metadata-filter feature from Jonuco:feat/metadata-filter-bar. Screenshot assets and the demo harness are not included in the application changes; the images will be attached to this description separately.

AI Disclaimer

  • This PR is created by an AI agent
  • This PR is mostly AI-generated but edited/merged together by a human
  • This PR was handwritten with AI assistance (spell check, logic suggestions, error resolving)
  • This PR contains only blood, sweat, and coffee (AI-free)

AI assisted with preparing this PR description, running validation, and generating the synthetic screenshot imagery. The feature commits are submitted from the contributor's existing branch.

Jonuco and others added 5 commits November 8, 2026 23:09
Collapsible filter bar above the library grid with configurable columns
(date, camera, lens, ISO, aperture, shutter, focal length, edit status,
rating, flag, color label, file type) and multi-select values with
faceted counts. Column layout and expanded state persist in settings;
selections reset when switching folder or album. Toggle with backslash.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Jonuco
Jonuco requested a review from CyberTimon as a code owner November 9, 2026 10:25
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