diff --git a/docs/dev/traceability.md b/docs/dev/traceability.md
index 3be49da..3651ea6 100644
--- a/docs/dev/traceability.md
+++ b/docs/dev/traceability.md
@@ -37,13 +37,13 @@ _None._
| FR-CAT-1 | [`core/dr-catalog/src/scan.rs:1`](../../core/dr-catalog/src/scan.rs#L1), [`core/dr-catalog/src/walk.rs:109`](../../core/dr-catalog/src/walk.rs#L109), [`core/dr-catalog/src/walk.rs:162`](../../core/dr-catalog/src/walk.rs#L162), [`core/dr-catalog/src/walk.rs:1`](../../core/dr-catalog/src/walk.rs#L1), [`core/dr-sync/src/scan.rs:129`](../../core/dr-sync/src/scan.rs#L129), [`core/dr-types/src/lib.rs:203`](../../core/dr-types/src/lib.rs#L203), [`core/dr-types/src/lib.rs:272`](../../core/dr-types/src/lib.rs#L272), [`core/dr-types/src/lib.rs:305`](../../core/dr-types/src/lib.rs#L305), [`platform/dr-plat/src/storage.rs:1`](../../platform/dr-plat/src/storage.rs#L1), [`platform/dr-plat/src/storage.rs:216`](../../platform/dr-plat/src/storage.rs#L216), [`ui/dr-ui/src/activity.rs:1`](../../ui/dr-ui/src/activity.rs#L1), [`ui/dr-ui/src/library/mod.rs:1`](../../ui/dr-ui/src/library/mod.rs#L1) |
| FR-CAT-10 | [`core/dr-ingest/src/layout.rs:1`](../../core/dr-ingest/src/layout.rs#L1), [`core/dr-ingest/src/lib.rs:1`](../../core/dr-ingest/src/lib.rs#L1), [`core/dr-ingest/src/lib.rs:733`](../../core/dr-ingest/src/lib.rs#L733), [`core/dr-types/src/settings.rs:377`](../../core/dr-types/src/settings.rs#L377), [`platform/dr-plat/src/storage.rs:287`](../../platform/dr-plat/src/storage.rs#L287), [`platform/dr-plat/src/storage.rs:586`](../../platform/dr-plat/src/storage.rs#L586), [`platform/dr-plat/src/volumes.rs:1`](../../platform/dr-plat/src/volumes.rs#L1), [`platform/dr-plat/src/volumes.rs:62`](../../platform/dr-plat/src/volumes.rs#L62), [`ui/dr-ui/src/import.rs:1`](../../ui/dr-ui/src/import.rs#L1), [`ui/dr-ui/src/import.rs:346`](../../ui/dr-ui/src/import.rs#L346), [`ui/dr-ui/src/import_ui.rs:1`](../../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1790`](../../ui/dr-ui/src/lib.rs#L1790), [`ui/dr-ui/ui/import.slint:5`](../../ui/dr-ui/ui/import.slint#L5), [`ui/dr-ui/ui/library.slint:1343`](../../ui/dr-ui/ui/library.slint#L1343), [`ui/dr-ui/ui/library.slint:1397`](../../ui/dr-ui/ui/library.slint#L1397), [`ui/dr-ui/ui/library.slint:1655`](../../ui/dr-ui/ui/library.slint#L1655) |
| FR-CAT-11 | [`core/dr-catalog/src/dedup.rs:1`](../../core/dr-catalog/src/dedup.rs#L1), [`core/dr-ingest/src/lib.rs:1`](../../core/dr-ingest/src/lib.rs#L1), [`core/dr-ingest/src/lib.rs:392`](../../core/dr-ingest/src/lib.rs#L392), [`core/dr-sync/src/upload.rs:40`](../../core/dr-sync/src/upload.rs#L40), [`ui/dr-ui/src/import.rs:1`](../../ui/dr-ui/src/import.rs#L1), [`ui/dr-ui/src/import_ui.rs:1`](../../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1790`](../../ui/dr-ui/src/lib.rs#L1790), [`ui/dr-ui/src/library/filters.rs:12`](../../ui/dr-ui/src/library/filters.rs#L12), [`ui/dr-ui/src/library/thumbnails_gen.rs:524`](../../ui/dr-ui/src/library/thumbnails_gen.rs#L524), [`ui/dr-ui/ui/import.slint:5`](../../ui/dr-ui/ui/import.slint#L5) |
-| FR-CAT-11a | [`core/dr-catalog/src/duplicates.rs:1`](../../core/dr-catalog/src/duplicates.rs#L1), [`core/dr-catalog/src/error.rs:100`](../../core/dr-catalog/src/error.rs#L100), [`core/dr-catalog/src/faces.rs:1602`](../../core/dr-catalog/src/faces.rs#L1602), [`core/dr-catalog/src/faces.rs:1620`](../../core/dr-catalog/src/faces.rs#L1620), [`ui/dr-ui/src/duplicates.rs:1`](../../ui/dr-ui/src/duplicates.rs#L1), [`ui/dr-ui/src/duplicates_ui.rs:1`](../../ui/dr-ui/src/duplicates_ui.rs#L1), [`ui/dr-ui/src/duplicates_ui.rs:79`](../../ui/dr-ui/src/duplicates_ui.rs#L79), [`ui/dr-ui/src/lib.rs:1820`](../../ui/dr-ui/src/lib.rs#L1820), [`ui/dr-ui/src/lib.rs:3446`](../../ui/dr-ui/src/lib.rs#L3446), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:664`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L664), [`ui/dr-ui/ui/app.slint:80`](../../ui/dr-ui/ui/app.slint#L80), [`ui/dr-ui/ui/collections.slint:883`](../../ui/dr-ui/ui/collections.slint#L883), [`ui/dr-ui/ui/duplicates.slint:1`](../../ui/dr-ui/ui/duplicates.slint#L1), [`ui/dr-ui/ui/settings.slint:108`](../../ui/dr-ui/ui/settings.slint#L108), [`ui/dr-ui/ui/settings.slint:509`](../../ui/dr-ui/ui/settings.slint#L509) |
+| FR-CAT-11a | [`core/dr-catalog/src/duplicates.rs:1`](../../core/dr-catalog/src/duplicates.rs#L1), [`core/dr-catalog/src/error.rs:100`](../../core/dr-catalog/src/error.rs#L100), [`core/dr-catalog/src/faces.rs:1602`](../../core/dr-catalog/src/faces.rs#L1602), [`core/dr-catalog/src/faces.rs:1620`](../../core/dr-catalog/src/faces.rs#L1620), [`ui/dr-ui/src/duplicates.rs:1`](../../ui/dr-ui/src/duplicates.rs#L1), [`ui/dr-ui/src/duplicates_ui.rs:1`](../../ui/dr-ui/src/duplicates_ui.rs#L1), [`ui/dr-ui/src/duplicates_ui.rs:79`](../../ui/dr-ui/src/duplicates_ui.rs#L79), [`ui/dr-ui/src/lib.rs:1820`](../../ui/dr-ui/src/lib.rs#L1820), [`ui/dr-ui/src/lib.rs:3446`](../../ui/dr-ui/src/lib.rs#L3446), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:664`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L664), [`ui/dr-ui/ui/app.slint:80`](../../ui/dr-ui/ui/app.slint#L80), [`ui/dr-ui/ui/collections.slint:883`](../../ui/dr-ui/ui/collections.slint#L883), [`ui/dr-ui/ui/duplicates.slint:1`](../../ui/dr-ui/ui/duplicates.slint#L1), [`ui/dr-ui/ui/settings.slint:108`](../../ui/dr-ui/ui/settings.slint#L108), [`ui/dr-ui/ui/settings.slint:512`](../../ui/dr-ui/ui/settings.slint#L512) |
| FR-CAT-12 | [`core/dr-pipeline/src/sidecar.rs:140`](../../core/dr-pipeline/src/sidecar.rs#L140) |
-| FR-CAT-13 | [`core/dr-catalog/src/rating.rs:276`](../../core/dr-catalog/src/rating.rs#L276), [`core/dr-catalog/src/schema.rs:863`](../../core/dr-catalog/src/schema.rs#L863), [`core/dr-sync/src/scan.rs:40`](../../core/dr-sync/src/scan.rs#L40), [`core/dr-sync/src/scan.rs:944`](../../core/dr-sync/src/scan.rs#L944), [`core/dr-types/src/settings.rs:92`](../../core/dr-types/src/settings.rs#L92), [`core/dr-xmp/src/lib.rs:1`](../../core/dr-xmp/src/lib.rs#L1), [`core/dr-xmp/src/lib.rs:331`](../../core/dr-xmp/src/lib.rs#L331), [`core/dr-xmp/src/lib.rs:442`](../../core/dr-xmp/src/lib.rs#L442), [`core/dr-xmp/src/lib.rs:535`](../../core/dr-xmp/src/lib.rs#L535), [`core/dr-xmp/src/lib.rs:733`](../../core/dr-xmp/src/lib.rs#L733), [`core/dr-xmp/src/lib.rs:746`](../../core/dr-xmp/src/lib.rs#L746), [`core/dr-xmp/src/read.rs:1`](../../core/dr-xmp/src/read.rs#L1), [`core/dr-xmp/src/write.rs:1`](../../core/dr-xmp/src/write.rs#L1), [`core/dr-xmp/tests/round_trip.rs:1`](../../core/dr-xmp/tests/round_trip.rs#L1), [`ui/dr-ui/src/library/scan.rs:335`](../../ui/dr-ui/src/library/scan.rs#L335), [`ui/dr-ui/src/library/xmp.rs:132`](../../ui/dr-ui/src/library/xmp.rs#L132), [`ui/dr-ui/src/library/xmp.rs:25`](../../ui/dr-ui/src/library/xmp.rs#L25), [`ui/dr-ui/src/library/xmp.rs:9`](../../ui/dr-ui/src/library/xmp.rs#L9), [`ui/dr-ui/src/library_ui/controller.rs:312`](../../ui/dr-ui/src/library_ui/controller.rs#L312), [`ui/dr-ui/src/library_ui/controller.rs:403`](../../ui/dr-ui/src/library_ui/controller.rs#L403), [`ui/dr-ui/src/library_ui/controller.rs:550`](../../ui/dr-ui/src/library_ui/controller.rs#L550), [`ui/dr-ui/src/library_ui/grid.rs:206`](../../ui/dr-ui/src/library_ui/grid.rs#L206), [`ui/dr-ui/src/library_ui/open.rs:438`](../../ui/dr-ui/src/library_ui/open.rs#L438), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:118`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L118), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:664`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L664), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:693`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L693), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:749`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L749), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:848`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L848), [`ui/dr-ui/src/settings_ui.rs:632`](../../ui/dr-ui/src/settings_ui.rs#L632), [`ui/dr-ui/src/xmp_sync.rs:1`](../../ui/dr-ui/src/xmp_sync.rs#L1), [`ui/dr-ui/src/xmp_sync.rs:250`](../../ui/dr-ui/src/xmp_sync.rs#L250), [`ui/dr-ui/src/xmp_sync.rs:287`](../../ui/dr-ui/src/xmp_sync.rs#L287), [`ui/dr-ui/src/xmp_sync.rs:324`](../../ui/dr-ui/src/xmp_sync.rs#L324), [`ui/dr-ui/ui/app.slint:625`](../../ui/dr-ui/ui/app.slint#L625), [`ui/dr-ui/ui/settings.slint:210`](../../ui/dr-ui/ui/settings.slint#L210), [`ui/dr-ui/ui/settings.slint:986`](../../ui/dr-ui/ui/settings.slint#L986) |
+| FR-CAT-13 | [`core/dr-catalog/src/rating.rs:276`](../../core/dr-catalog/src/rating.rs#L276), [`core/dr-catalog/src/schema.rs:863`](../../core/dr-catalog/src/schema.rs#L863), [`core/dr-sync/src/scan.rs:40`](../../core/dr-sync/src/scan.rs#L40), [`core/dr-sync/src/scan.rs:944`](../../core/dr-sync/src/scan.rs#L944), [`core/dr-types/src/settings.rs:92`](../../core/dr-types/src/settings.rs#L92), [`core/dr-xmp/src/lib.rs:1`](../../core/dr-xmp/src/lib.rs#L1), [`core/dr-xmp/src/lib.rs:331`](../../core/dr-xmp/src/lib.rs#L331), [`core/dr-xmp/src/lib.rs:442`](../../core/dr-xmp/src/lib.rs#L442), [`core/dr-xmp/src/lib.rs:535`](../../core/dr-xmp/src/lib.rs#L535), [`core/dr-xmp/src/lib.rs:733`](../../core/dr-xmp/src/lib.rs#L733), [`core/dr-xmp/src/lib.rs:746`](../../core/dr-xmp/src/lib.rs#L746), [`core/dr-xmp/src/read.rs:1`](../../core/dr-xmp/src/read.rs#L1), [`core/dr-xmp/src/write.rs:1`](../../core/dr-xmp/src/write.rs#L1), [`core/dr-xmp/tests/round_trip.rs:1`](../../core/dr-xmp/tests/round_trip.rs#L1), [`ui/dr-ui/src/library/scan.rs:335`](../../ui/dr-ui/src/library/scan.rs#L335), [`ui/dr-ui/src/library/xmp.rs:132`](../../ui/dr-ui/src/library/xmp.rs#L132), [`ui/dr-ui/src/library/xmp.rs:25`](../../ui/dr-ui/src/library/xmp.rs#L25), [`ui/dr-ui/src/library/xmp.rs:9`](../../ui/dr-ui/src/library/xmp.rs#L9), [`ui/dr-ui/src/library_ui/controller.rs:312`](../../ui/dr-ui/src/library_ui/controller.rs#L312), [`ui/dr-ui/src/library_ui/controller.rs:403`](../../ui/dr-ui/src/library_ui/controller.rs#L403), [`ui/dr-ui/src/library_ui/controller.rs:550`](../../ui/dr-ui/src/library_ui/controller.rs#L550), [`ui/dr-ui/src/library_ui/grid.rs:206`](../../ui/dr-ui/src/library_ui/grid.rs#L206), [`ui/dr-ui/src/library_ui/open.rs:438`](../../ui/dr-ui/src/library_ui/open.rs#L438), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:118`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L118), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:664`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L664), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:693`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L693), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:749`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L749), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:848`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L848), [`ui/dr-ui/src/settings_ui.rs:632`](../../ui/dr-ui/src/settings_ui.rs#L632), [`ui/dr-ui/src/xmp_sync.rs:1`](../../ui/dr-ui/src/xmp_sync.rs#L1), [`ui/dr-ui/src/xmp_sync.rs:250`](../../ui/dr-ui/src/xmp_sync.rs#L250), [`ui/dr-ui/src/xmp_sync.rs:287`](../../ui/dr-ui/src/xmp_sync.rs#L287), [`ui/dr-ui/src/xmp_sync.rs:324`](../../ui/dr-ui/src/xmp_sync.rs#L324), [`ui/dr-ui/ui/app.slint:625`](../../ui/dr-ui/ui/app.slint#L625), [`ui/dr-ui/ui/settings.slint:210`](../../ui/dr-ui/ui/settings.slint#L210), [`ui/dr-ui/ui/settings.slint:989`](../../ui/dr-ui/ui/settings.slint#L989) |
| FR-CAT-15 | [`core/dr-catalog/src/schema.rs:1237`](../../core/dr-catalog/src/schema.rs#L1237), [`core/dr-catalog/src/trash.rs:1`](../../core/dr-catalog/src/trash.rs#L1), [`core/dr-sync-nextcloud/src/lib.rs:522`](../../core/dr-sync-nextcloud/src/lib.rs#L522), [`core/dr-sync/src/lib.rs:135`](../../core/dr-sync/src/lib.rs#L135), [`core/dr-sync/src/scan.rs:618`](../../core/dr-sync/src/scan.rs#L618), [`core/dr-sync/src/scan.rs:93`](../../core/dr-sync/src/scan.rs#L93), [`core/dr-thumbs/src/lib.rs:393`](../../core/dr-thumbs/src/lib.rs#L393), [`core/dr-types/src/place.rs:91`](../../core/dr-types/src/place.rs#L91), [`ui/dr-ui/src/collections_ui/trash.rs:84`](../../ui/dr-ui/src/collections_ui/trash.rs#L84), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:819`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L819), [`ui/dr-ui/src/duplicates.rs:1`](../../ui/dr-ui/src/duplicates.rs#L1), [`ui/dr-ui/src/duplicates_ui.rs:1`](../../ui/dr-ui/src/duplicates_ui.rs#L1), [`ui/dr-ui/src/library/cells.rs:158`](../../ui/dr-ui/src/library/cells.rs#L158), [`ui/dr-ui/src/library/cells.rs:192`](../../ui/dr-ui/src/library/cells.rs#L192), [`ui/dr-ui/src/library/filters.rs:12`](../../ui/dr-ui/src/library/filters.rs#L12), [`ui/dr-ui/src/library/filters.rs:29`](../../ui/dr-ui/src/library/filters.rs#L29), [`ui/dr-ui/src/library/filters.rs:59`](../../ui/dr-ui/src/library/filters.rs#L59), [`ui/dr-ui/src/library_ui/controller.rs:248`](../../ui/dr-ui/src/library_ui/controller.rs#L248), [`ui/dr-ui/src/library_ui/controller.rs:927`](../../ui/dr-ui/src/library_ui/controller.rs#L927), [`ui/dr-ui/src/trash.rs:1`](../../ui/dr-ui/src/trash.rs#L1), [`ui/dr-ui/ui/collections.slint:1269`](../../ui/dr-ui/ui/collections.slint#L1269), [`ui/dr-ui/ui/collections.slint:788`](../../ui/dr-ui/ui/collections.slint#L788), [`ui/dr-ui/ui/duplicates.slint:1`](../../ui/dr-ui/ui/duplicates.slint#L1) |
| FR-CAT-1a | [`core/dr-catalog/src/walk.rs:1`](../../core/dr-catalog/src/walk.rs#L1), [`core/dr-types/src/lib.rs:56`](../../core/dr-types/src/lib.rs#L56), [`platform/dr-plat/src/storage.rs:1`](../../platform/dr-plat/src/storage.rs#L1), [`platform/dr-plat/src/storage.rs:216`](../../platform/dr-plat/src/storage.rs#L216), [`platform/dr-plat/src/storage.rs:46`](../../platform/dr-plat/src/storage.rs#L46) |
| FR-CAT-2 | [`core/dr-catalog/src/lib.rs:1`](../../core/dr-catalog/src/lib.rs#L1), [`core/dr-catalog/src/schema.rs:1`](../../core/dr-catalog/src/schema.rs#L1) |
-| FR-CAT-3 | [`core/dr-catalog/src/jobs.rs:1`](../../core/dr-catalog/src/jobs.rs#L1), [`core/dr-catalog/src/walk.rs:66`](../../core/dr-catalog/src/walk.rs#L66), [`core/dr-sync/src/scan.rs:105`](../../core/dr-sync/src/scan.rs#L105), [`core/dr-thumbs/src/codec.rs:1`](../../core/dr-thumbs/src/codec.rs#L1), [`core/dr-thumbs/src/lib.rs:1`](../../core/dr-thumbs/src/lib.rs#L1), [`ui/dr-ui/src/derived_sync.rs:1`](../../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/import.rs:474`](../../ui/dr-ui/src/import.rs#L474), [`ui/dr-ui/src/import.rs:504`](../../ui/dr-ui/src/import.rs#L504), [`ui/dr-ui/src/library/sweep.rs:562`](../../ui/dr-ui/src/library/sweep.rs#L562), [`ui/dr-ui/src/library_ui/controller.rs:187`](../../ui/dr-ui/src/library_ui/controller.rs#L187), [`ui/dr-ui/src/library_ui/grid.rs:544`](../../ui/dr-ui/src/library_ui/grid.rs#L544), [`ui/dr-ui/src/library_ui/sync.rs:392`](../../ui/dr-ui/src/library_ui/sync.rs#L392), [`ui/dr-ui/src/repairs.rs:1`](../../ui/dr-ui/src/repairs.rs#L1), [`ui/dr-ui/src/repairs.rs:695`](../../ui/dr-ui/src/repairs.rs#L695), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488), [`ui/dr-ui/ui/library.slint:776`](../../ui/dr-ui/ui/library.slint#L776), [`ui/dr-ui/ui/settings.slint:372`](../../ui/dr-ui/ui/settings.slint#L372), [`ui/dr-ui/ui/settings.slint:74`](../../ui/dr-ui/ui/settings.slint#L74) |
+| FR-CAT-3 | [`core/dr-catalog/src/jobs.rs:1`](../../core/dr-catalog/src/jobs.rs#L1), [`core/dr-catalog/src/walk.rs:66`](../../core/dr-catalog/src/walk.rs#L66), [`core/dr-sync/src/scan.rs:105`](../../core/dr-sync/src/scan.rs#L105), [`core/dr-thumbs/src/codec.rs:1`](../../core/dr-thumbs/src/codec.rs#L1), [`core/dr-thumbs/src/lib.rs:1`](../../core/dr-thumbs/src/lib.rs#L1), [`ui/dr-ui/src/derived_sync.rs:1`](../../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/import.rs:474`](../../ui/dr-ui/src/import.rs#L474), [`ui/dr-ui/src/import.rs:504`](../../ui/dr-ui/src/import.rs#L504), [`ui/dr-ui/src/library/sweep.rs:562`](../../ui/dr-ui/src/library/sweep.rs#L562), [`ui/dr-ui/src/library_ui/controller.rs:187`](../../ui/dr-ui/src/library_ui/controller.rs#L187), [`ui/dr-ui/src/library_ui/grid.rs:544`](../../ui/dr-ui/src/library_ui/grid.rs#L544), [`ui/dr-ui/src/library_ui/sync.rs:392`](../../ui/dr-ui/src/library_ui/sync.rs#L392), [`ui/dr-ui/src/repairs.rs:1`](../../ui/dr-ui/src/repairs.rs#L1), [`ui/dr-ui/src/repairs.rs:695`](../../ui/dr-ui/src/repairs.rs#L695), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488), [`ui/dr-ui/ui/library.slint:776`](../../ui/dr-ui/ui/library.slint#L776), [`ui/dr-ui/ui/settings.slint:375`](../../ui/dr-ui/ui/settings.slint#L375), [`ui/dr-ui/ui/settings.slint:74`](../../ui/dr-ui/ui/settings.slint#L74) |
| FR-CAT-4 | [`core/dr-catalog/src/lib.rs:1`](../../core/dr-catalog/src/lib.rs#L1), [`core/dr-catalog/src/query.rs:1`](../../core/dr-catalog/src/query.rs#L1), [`core/dr-catalog/src/schema.rs:591`](../../core/dr-catalog/src/schema.rs#L591), [`ui/dr-ui/src/library/filters.rs:39`](../../ui/dr-ui/src/library/filters.rs#L39), [`ui/dr-ui/src/library/mod.rs:1`](../../ui/dr-ui/src/library/mod.rs#L1), [`ui/dr-ui/src/library_ui/mod.rs:1`](../../ui/dr-ui/src/library_ui/mod.rs#L1), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488) |
| FR-CAT-5 | [`core/dr-catalog/src/keywords.rs:1`](../../core/dr-catalog/src/keywords.rs#L1), [`core/dr-catalog/src/merge.rs:1`](../../core/dr-catalog/src/merge.rs#L1), [`core/dr-catalog/src/rating.rs:1`](../../core/dr-catalog/src/rating.rs#L1), [`core/dr-catalog/src/rating.rs:396`](../../core/dr-catalog/src/rating.rs#L396), [`core/dr-catalog/src/rating.rs:411`](../../core/dr-catalog/src/rating.rs#L411), [`core/dr-catalog/src/rating.rs:422`](../../core/dr-catalog/src/rating.rs#L422), [`core/dr-catalog/src/rating.rs:449`](../../core/dr-catalog/src/rating.rs#L449), [`core/dr-catalog/src/rating.rs:52`](../../core/dr-catalog/src/rating.rs#L52), [`core/dr-catalog/src/rating.rs:782`](../../core/dr-catalog/src/rating.rs#L782), [`core/dr-catalog/src/rating.rs:806`](../../core/dr-catalog/src/rating.rs#L806), [`core/dr-catalog/src/rating.rs:825`](../../core/dr-catalog/src/rating.rs#L825), [`core/dr-catalog/src/schema.rs:1152`](../../core/dr-catalog/src/schema.rs#L1152), [`core/dr-catalog/src/schema.rs:1739`](../../core/dr-catalog/src/schema.rs#L1739), [`core/dr-decode/src/lib.rs:307`](../../core/dr-decode/src/lib.rs#L307), [`core/dr-decode/src/lib.rs:313`](../../core/dr-decode/src/lib.rs#L313), [`core/dr-decode/src/lib.rs:323`](../../core/dr-decode/src/lib.rs#L323), [`core/dr-decode/src/lib.rs:450`](../../core/dr-decode/src/lib.rs#L450), [`core/dr-export/src/dng.rs:308`](../../core/dr-export/src/dng.rs#L308), [`core/dr-pipeline/src/sidecar.rs:1093`](../../core/dr-pipeline/src/sidecar.rs#L1093), [`core/dr-pipeline/src/sidecar.rs:174`](../../core/dr-pipeline/src/sidecar.rs#L174), [`core/dr-pipeline/src/sidecar.rs:193`](../../core/dr-pipeline/src/sidecar.rs#L193), [`core/dr-pipeline/src/sidecar.rs:2874`](../../core/dr-pipeline/src/sidecar.rs#L2874), [`core/dr-pipeline/src/sidecar.rs:2892`](../../core/dr-pipeline/src/sidecar.rs#L2892), [`core/dr-pipeline/src/sidecar.rs:590`](../../core/dr-pipeline/src/sidecar.rs#L590), [`ui/dr-ui/src/collections_ui/controller.rs:16`](../../ui/dr-ui/src/collections_ui/controller.rs#L16), [`ui/dr-ui/src/collections_ui/controller.rs:204`](../../ui/dr-ui/src/collections_ui/controller.rs#L204), [`ui/dr-ui/src/collections_ui/controller.rs:413`](../../ui/dr-ui/src/collections_ui/controller.rs#L413), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:150`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L150), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:264`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L264), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:323`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L323), [`ui/dr-ui/src/decoder_seam.rs:184`](../../ui/dr-ui/src/decoder_seam.rs#L184), [`ui/dr-ui/src/library/cells.rs:206`](../../ui/dr-ui/src/library/cells.rs#L206), [`ui/dr-ui/src/library/scan.rs:526`](../../ui/dr-ui/src/library/scan.rs#L526), [`ui/dr-ui/src/library/scan.rs:933`](../../ui/dr-ui/src/library/scan.rs#L933), [`ui/dr-ui/src/library_ui/controller.rs:802`](../../ui/dr-ui/src/library_ui/controller.rs#L802), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1144`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1144), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1168`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1168), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1185`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1185), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:118`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L118), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1391`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1391), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1402`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1402), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1415`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1415), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1430`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1430), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1439`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1439), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:97`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L97), [`ui/dr-ui/tests/status_is_not_colour_alone.rs:177`](../../ui/dr-ui/tests/status_is_not_colour_alone.rs#L177), [`ui/dr-ui/tests/status_is_not_colour_alone.rs:215`](../../ui/dr-ui/tests/status_is_not_colour_alone.rs#L215), [`ui/dr-ui/ui/app.slint:1627`](../../ui/dr-ui/ui/app.slint#L1627), [`ui/dr-ui/ui/app.slint:2756`](../../ui/dr-ui/ui/app.slint#L2756), [`ui/dr-ui/ui/develop.slint:142`](../../ui/dr-ui/ui/develop.slint#L142), [`ui/dr-ui/ui/develop.slint:48`](../../ui/dr-ui/ui/develop.slint#L48), [`ui/dr-ui/ui/labels.slint:19`](../../ui/dr-ui/ui/labels.slint#L19), [`ui/dr-ui/ui/labels.slint:1`](../../ui/dr-ui/ui/labels.slint#L1), [`ui/dr-ui/ui/labels.slint:40`](../../ui/dr-ui/ui/labels.slint#L40), [`ui/dr-ui/ui/labels.slint:74`](../../ui/dr-ui/ui/labels.slint#L74), [`ui/dr-ui/ui/library.slint:1609`](../../ui/dr-ui/ui/library.slint#L1609), [`ui/dr-ui/ui/library.slint:1612`](../../ui/dr-ui/ui/library.slint#L1612), [`ui/dr-ui/ui/library.slint:1763`](../../ui/dr-ui/ui/library.slint#L1763), [`ui/dr-ui/ui/library.slint:1787`](../../ui/dr-ui/ui/library.slint#L1787), [`ui/dr-ui/ui/library.slint:1844`](../../ui/dr-ui/ui/library.slint#L1844), [`ui/dr-ui/ui/library.slint:21`](../../ui/dr-ui/ui/library.slint#L21), [`ui/dr-ui/ui/library.slint:3196`](../../ui/dr-ui/ui/library.slint#L3196), [`ui/dr-ui/ui/library.slint:3203`](../../ui/dr-ui/ui/library.slint#L3203), [`ui/dr-ui/ui/library.slint:3223`](../../ui/dr-ui/ui/library.slint#L3223), [`ui/dr-ui/ui/library.slint:3312`](../../ui/dr-ui/ui/library.slint#L3312), [`ui/dr-ui/ui/library.slint:3924`](../../ui/dr-ui/ui/library.slint#L3924), [`ui/dr-ui/ui/library.slint:467`](../../ui/dr-ui/ui/library.slint#L467), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488), [`ui/dr-ui/ui/library.slint:5036`](../../ui/dr-ui/ui/library.slint#L5036), [`ui/dr-ui/ui/library.slint:5052`](../../ui/dr-ui/ui/library.slint#L5052), [`ui/dr-ui/ui/library.slint:510`](../../ui/dr-ui/ui/library.slint#L510), [`ui/dr-ui/ui/library.slint:616`](../../ui/dr-ui/ui/library.slint#L616), [`ui/dr-ui/ui/library.slint:660`](../../ui/dr-ui/ui/library.slint#L660), [`ui/dr-ui/ui/library.slint:666`](../../ui/dr-ui/ui/library.slint#L666), [`ui/dr-ui/ui/library.slint:670`](../../ui/dr-ui/ui/library.slint#L670) |
| FR-CAT-6 | [`core/dr-catalog/src/collections.rs:1`](../../core/dr-catalog/src/collections.rs#L1), [`core/dr-catalog/src/keywords.rs:1`](../../core/dr-catalog/src/keywords.rs#L1), [`core/dr-catalog/src/lib.rs:1`](../../core/dr-catalog/src/lib.rs#L1), [`core/dr-catalog/src/query.rs:1`](../../core/dr-catalog/src/query.rs#L1), [`core/dr-catalog/src/rating.rs:1`](../../core/dr-catalog/src/rating.rs#L1), [`core/dr-catalog/src/rating.rs:449`](../../core/dr-catalog/src/rating.rs#L449), [`core/dr-catalog/src/rating.rs:835`](../../core/dr-catalog/src/rating.rs#L835), [`core/dr-catalog/src/schema.rs:1152`](../../core/dr-catalog/src/schema.rs#L1152), [`core/dr-types/src/place.rs:138`](../../core/dr-types/src/place.rs#L138), [`core/dr-types/src/place.rs:1`](../../core/dr-types/src/place.rs#L1), [`core/dr-types/src/selector.rs:1`](../../core/dr-types/src/selector.rs#L1), [`core/dr-types/src/settings.rs:64`](../../core/dr-types/src/settings.rs#L64), [`core/dr-types/src/time.rs:67`](../../core/dr-types/src/time.rs#L67), [`core/dr-types/src/time.rs:90`](../../core/dr-types/src/time.rs#L90), [`ui/dr-ui/src/library/filters.rs:156`](../../ui/dr-ui/src/library/filters.rs#L156), [`ui/dr-ui/src/library/filters.rs:357`](../../ui/dr-ui/src/library/filters.rs#L357), [`ui/dr-ui/src/library/filters.rs:442`](../../ui/dr-ui/src/library/filters.rs#L442), [`ui/dr-ui/src/library/filters.rs:64`](../../ui/dr-ui/src/library/filters.rs#L64), [`ui/dr-ui/src/library/spans.rs:253`](../../ui/dr-ui/src/library/spans.rs#L253), [`ui/dr-ui/src/library_ui/controller.rs:407`](../../ui/dr-ui/src/library_ui/controller.rs#L407), [`ui/dr-ui/src/library_ui/controller.rs:518`](../../ui/dr-ui/src/library_ui/controller.rs#L518), [`ui/dr-ui/src/library_ui/filter_bar.rs:256`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L256), [`ui/dr-ui/src/library_ui/filter_bar.rs:351`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L351), [`ui/dr-ui/src/library_ui/filter_bar.rs:406`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L406), [`ui/dr-ui/src/library_ui/filter_bar.rs:840`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L840), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:85`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L85), [`ui/dr-ui/ui/app.slint:621`](../../ui/dr-ui/ui/app.slint#L621), [`ui/dr-ui/ui/library.slint:113`](../../ui/dr-ui/ui/library.slint#L113), [`ui/dr-ui/ui/library.slint:1931`](../../ui/dr-ui/ui/library.slint#L1931), [`ui/dr-ui/ui/library.slint:1968`](../../ui/dr-ui/ui/library.slint#L1968), [`ui/dr-ui/ui/library.slint:2697`](../../ui/dr-ui/ui/library.slint#L2697), [`ui/dr-ui/ui/library.slint:3223`](../../ui/dr-ui/ui/library.slint#L3223), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488), [`ui/dr-ui/ui/library.slint:5036`](../../ui/dr-ui/ui/library.slint#L5036), [`ui/dr-ui/ui/library.slint:616`](../../ui/dr-ui/ui/library.slint#L616), [`ui/dr-ui/ui/library.slint:674`](../../ui/dr-ui/ui/library.slint#L674), [`ui/dr-ui/ui/library.slint:696`](../../ui/dr-ui/ui/library.slint#L696), [`ui/dr-ui/ui/settings.slint:202`](../../ui/dr-ui/ui/settings.slint#L202), [`ui/dr-ui/ui/widgets.slint:271`](../../ui/dr-ui/ui/widgets.slint#L271) |
@@ -51,7 +51,7 @@ _None._
| FR-CAT-8 | [`core/dr-catalog/src/schema.rs:767`](../../core/dr-catalog/src/schema.rs#L767), [`core/dr-pipeline/src/coverage.rs:1`](../../core/dr-pipeline/src/coverage.rs#L1), [`core/dr-pipeline/src/graph.rs:587`](../../core/dr-pipeline/src/graph.rs#L587), [`core/dr-pipeline/src/graph.rs:640`](../../core/dr-pipeline/src/graph.rs#L640), [`core/dr-pipeline/src/ops/curve.rs:137`](../../core/dr-pipeline/src/ops/curve.rs#L137), [`core/dr-pipeline/src/ops/curve.rs:656`](../../core/dr-pipeline/src/ops/curve.rs#L656), [`core/dr-pipeline/src/sidecar.rs:1433`](../../core/dr-pipeline/src/sidecar.rs#L1433), [`core/dr-pipeline/src/sidecar.rs:2273`](../../core/dr-pipeline/src/sidecar.rs#L2273), [`core/dr-pipeline/src/sidecar.rs:99`](../../core/dr-pipeline/src/sidecar.rs#L99), [`core/dr-pipeline/src/state.rs:1`](../../core/dr-pipeline/src/state.rs#L1), [`core/dr-pipeline/src/state.rs:75`](../../core/dr-pipeline/src/state.rs#L75), [`core/dr-pipeline/tests/tone_curve.rs:34`](../../core/dr-pipeline/tests/tone_curve.rs#L34), [`core/dr-sync/src/scan.rs:31`](../../core/dr-sync/src/scan.rs#L31), [`core/dr-sync/src/scan.rs:56`](../../core/dr-sync/src/scan.rs#L56), [`core/dr-sync/src/scan.rs:926`](../../core/dr-sync/src/scan.rs#L926), [`ui/dr-ui/src/develop/mask_ops.rs:1076`](../../ui/dr-ui/src/develop/mask_ops.rs#L1076), [`ui/dr-ui/src/develop/mask_ops.rs:1130`](../../ui/dr-ui/src/develop/mask_ops.rs#L1130), [`ui/dr-ui/src/develop/mask_ops.rs:178`](../../ui/dr-ui/src/develop/mask_ops.rs#L178), [`ui/dr-ui/src/develop/masks.rs:743`](../../ui/dr-ui/src/develop/masks.rs#L743), [`ui/dr-ui/src/develop/session.rs:566`](../../ui/dr-ui/src/develop/session.rs#L566), [`ui/dr-ui/src/develop/session.rs:595`](../../ui/dr-ui/src/develop/session.rs#L595), [`ui/dr-ui/src/export.rs:831`](../../ui/dr-ui/src/export.rs#L831), [`ui/dr-ui/src/lib.rs:1180`](../../ui/dr-ui/src/lib.rs#L1180), [`ui/dr-ui/src/lib.rs:1240`](../../ui/dr-ui/src/lib.rs#L1240), [`ui/dr-ui/src/lib.rs:2710`](../../ui/dr-ui/src/lib.rs#L2710), [`ui/dr-ui/src/lib.rs:2857`](../../ui/dr-ui/src/lib.rs#L2857), [`ui/dr-ui/src/lib.rs:791`](../../ui/dr-ui/src/lib.rs#L791), [`ui/dr-ui/src/library/scan.rs:226`](../../ui/dr-ui/src/library/scan.rs#L226), [`ui/dr-ui/src/library/scan.rs:261`](../../ui/dr-ui/src/library/scan.rs#L261), [`ui/dr-ui/src/library/scan.rs:34`](../../ui/dr-ui/src/library/scan.rs#L34), [`ui/dr-ui/src/library/sidecar.rs:100`](../../ui/dr-ui/src/library/sidecar.rs#L100), [`ui/dr-ui/src/library/sidecar.rs:11`](../../ui/dr-ui/src/library/sidecar.rs#L11), [`ui/dr-ui/src/library/sidecar.rs:378`](../../ui/dr-ui/src/library/sidecar.rs#L378), [`ui/dr-ui/src/library/sidecar.rs:63`](../../ui/dr-ui/src/library/sidecar.rs#L63), [`ui/dr-ui/src/library/thumbnails_fetch.rs:413`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L413), [`ui/dr-ui/src/library_ui/grid.rs:778`](../../ui/dr-ui/src/library_ui/grid.rs#L778), [`ui/dr-ui/src/library_ui/open.rs:455`](../../ui/dr-ui/src/library_ui/open.rs#L455), [`ui/dr-ui/src/sidecar_cache.rs:1`](../../ui/dr-ui/src/sidecar_cache.rs#L1) |
| FR-CAT-9 | [`core/dr-catalog/src/cache.rs:1`](../../core/dr-catalog/src/cache.rs#L1), [`core/dr-catalog/src/scan.rs:1`](../../core/dr-catalog/src/scan.rs#L1), [`core/dr-catalog/src/schema.rs:1209`](../../core/dr-catalog/src/schema.rs#L1209), [`core/dr-catalog/src/walk.rs:1022`](../../core/dr-catalog/src/walk.rs#L1022), [`core/dr-catalog/src/walk.rs:162`](../../core/dr-catalog/src/walk.rs#L162), [`core/dr-catalog/src/walk.rs:1`](../../core/dr-catalog/src/walk.rs#L1), [`core/dr-catalog/src/walk.rs:435`](../../core/dr-catalog/src/walk.rs#L435), [`core/dr-catalog/src/walk.rs:728`](../../core/dr-catalog/src/walk.rs#L728), [`core/dr-sync-nextcloud/src/desktop_client.rs:35`](../../core/dr-sync-nextcloud/src/desktop_client.rs#L35), [`core/dr-sync/src/error.rs:113`](../../core/dr-sync/src/error.rs#L113), [`core/dr-sync/src/reachability.rs:1`](../../core/dr-sync/src/reachability.rs#L1), [`core/dr-sync/src/scan.rs:211`](../../core/dr-sync/src/scan.rs#L211), [`core/dr-sync/src/scan.rs:519`](../../core/dr-sync/src/scan.rs#L519), [`core/dr-types/src/lib.rs:122`](../../core/dr-types/src/lib.rs#L122), [`ui/dr-ui/src/develop/render.rs:624`](../../ui/dr-ui/src/develop/render.rs#L624), [`ui/dr-ui/src/develop/render.rs:667`](../../ui/dr-ui/src/develop/render.rs#L667), [`ui/dr-ui/src/library/filters.rs:89`](../../ui/dr-ui/src/library/filters.rs#L89), [`ui/dr-ui/src/library/scan.rs:126`](../../ui/dr-ui/src/library/scan.rs#L126), [`ui/dr-ui/src/library/scan.rs:179`](../../ui/dr-ui/src/library/scan.rs#L179), [`ui/dr-ui/src/library/scan.rs:210`](../../ui/dr-ui/src/library/scan.rs#L210), [`ui/dr-ui/src/library/scan.rs:261`](../../ui/dr-ui/src/library/scan.rs#L261), [`ui/dr-ui/src/library/scan.rs:629`](../../ui/dr-ui/src/library/scan.rs#L629), [`ui/dr-ui/src/library/sidecar.rs:100`](../../ui/dr-ui/src/library/sidecar.rs#L100), [`ui/dr-ui/src/library/sidecar.rs:362`](../../ui/dr-ui/src/library/sidecar.rs#L362), [`ui/dr-ui/src/library/sidecar.rs:378`](../../ui/dr-ui/src/library/sidecar.rs#L378), [`ui/dr-ui/src/library/sidecar.rs:432`](../../ui/dr-ui/src/library/sidecar.rs#L432), [`ui/dr-ui/src/library/spans.rs:361`](../../ui/dr-ui/src/library/spans.rs#L361), [`ui/dr-ui/src/library/thumbnails_fetch.rs:393`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L393), [`ui/dr-ui/src/library/thumbnails_fetch.rs:449`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L449), [`ui/dr-ui/src/library/thumbnails_gen.rs:74`](../../ui/dr-ui/src/library/thumbnails_gen.rs#L74), [`ui/dr-ui/src/library_ui/controller.rs:295`](../../ui/dr-ui/src/library_ui/controller.rs#L295), [`ui/dr-ui/src/library_ui/controller.rs:331`](../../ui/dr-ui/src/library_ui/controller.rs#L331), [`ui/dr-ui/src/library_ui/controller.rs:339`](../../ui/dr-ui/src/library_ui/controller.rs#L339), [`ui/dr-ui/src/library_ui/controller.rs:586`](../../ui/dr-ui/src/library_ui/controller.rs#L586), [`ui/dr-ui/src/library_ui/controller.rs:675`](../../ui/dr-ui/src/library_ui/controller.rs#L675), [`ui/dr-ui/src/library_ui/filter_bar.rs:461`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L461), [`ui/dr-ui/src/library_ui/filter_bar.rs:547`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L547), [`ui/dr-ui/src/library_ui/offline.rs:561`](../../ui/dr-ui/src/library_ui/offline.rs#L561), [`ui/dr-ui/src/library_ui/offline.rs:607`](../../ui/dr-ui/src/library_ui/offline.rs#L607), [`ui/dr-ui/src/library_ui/offline.rs:623`](../../ui/dr-ui/src/library_ui/offline.rs#L623), [`ui/dr-ui/src/library_ui/open.rs:535`](../../ui/dr-ui/src/library_ui/open.rs#L535), [`ui/dr-ui/src/library_ui/open.rs:615`](../../ui/dr-ui/src/library_ui/open.rs#L615), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:75`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L75), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:883`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L883), [`ui/dr-ui/src/library_ui/sync.rs:287`](../../ui/dr-ui/src/library_ui/sync.rs#L287), [`ui/dr-ui/src/library_ui/sync.rs:421`](../../ui/dr-ui/src/library_ui/sync.rs#L421), [`ui/dr-ui/src/library_ui/sync.rs:83`](../../ui/dr-ui/src/library_ui/sync.rs#L83), [`ui/dr-ui/src/library_ui/window.rs:659`](../../ui/dr-ui/src/library_ui/window.rs#L659), [`ui/dr-ui/src/library_ui/window.rs:939`](../../ui/dr-ui/src/library_ui/window.rs#L939), [`ui/dr-ui/src/presets.rs:486`](../../ui/dr-ui/src/presets.rs#L486), [`ui/dr-ui/src/presets.rs:498`](../../ui/dr-ui/src/presets.rs#L498), [`ui/dr-ui/src/sidecar_cache.rs:1`](../../ui/dr-ui/src/sidecar_cache.rs#L1), [`ui/dr-ui/tests/export_ignores_the_viewport.rs:1`](../../ui/dr-ui/tests/export_ignores_the_viewport.rs#L1) |
| FR-CULL-1 | [`core/dr-decode/src/preview.rs:121`](../../core/dr-decode/src/preview.rs#L121) |
-| FR-CULL-10 | [`core/dr-catalog/src/faces.rs:1602`](../../core/dr-catalog/src/faces.rs#L1602), [`core/dr-catalog/src/faces.rs:1620`](../../core/dr-catalog/src/faces.rs#L1620), [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`core/dr-catalog/src/schema.rs:630`](../../core/dr-catalog/src/schema.rs#L630), [`core/dr-catalog/src/schema.rs:808`](../../core/dr-catalog/src/schema.rs#L808), [`core/dr-face/src/assign.rs:1`](../../core/dr-face/src/assign.rs#L1), [`core/dr-face/src/neighbours.rs:1`](../../core/dr-face/src/neighbours.rs#L1), [`core/dr-face/src/references.rs:1`](../../core/dr-face/src/references.rs#L1), [`core/dr-types/src/settings.rs:129`](../../core/dr-types/src/settings.rs#L129), [`ui/dr-ui/src/develop/segmentation.rs:104`](../../ui/dr-ui/src/develop/segmentation.rs#L104), [`ui/dr-ui/src/develop/segmentation.rs:170`](../../ui/dr-ui/src/develop/segmentation.rs#L170), [`ui/dr-ui/src/develop/segmentation.rs:590`](../../ui/dr-ui/src/develop/segmentation.rs#L590), [`ui/dr-ui/src/develop/segmentation.rs:95`](../../ui/dr-ui/src/develop/segmentation.rs#L95), [`ui/dr-ui/src/develop/session.rs:23`](../../ui/dr-ui/src/develop/session.rs#L23), [`ui/dr-ui/src/faces.rs:1`](../../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/identity.rs:1`](../../ui/dr-ui/src/identity.rs#L1), [`ui/dr-ui/src/identity_ui.rs:1472`](../../ui/dr-ui/src/identity_ui.rs#L1472), [`ui/dr-ui/src/identity_ui.rs:1`](../../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/lib.rs:2829`](../../ui/dr-ui/src/lib.rs#L2829), [`ui/dr-ui/src/repairs.rs:1`](../../ui/dr-ui/src/repairs.rs#L1), [`ui/dr-ui/ui/identity.slint:1`](../../ui/dr-ui/ui/identity.slint#L1), [`ui/dr-ui/ui/settings.slint:466`](../../ui/dr-ui/ui/settings.slint#L466), [`ui/dr-ui/ui/settings.slint:95`](../../ui/dr-ui/ui/settings.slint#L95) |
+| FR-CULL-10 | [`core/dr-catalog/src/faces.rs:1602`](../../core/dr-catalog/src/faces.rs#L1602), [`core/dr-catalog/src/faces.rs:1620`](../../core/dr-catalog/src/faces.rs#L1620), [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`core/dr-catalog/src/schema.rs:630`](../../core/dr-catalog/src/schema.rs#L630), [`core/dr-catalog/src/schema.rs:808`](../../core/dr-catalog/src/schema.rs#L808), [`core/dr-face/src/assign.rs:1`](../../core/dr-face/src/assign.rs#L1), [`core/dr-face/src/neighbours.rs:1`](../../core/dr-face/src/neighbours.rs#L1), [`core/dr-face/src/references.rs:1`](../../core/dr-face/src/references.rs#L1), [`core/dr-types/src/settings.rs:129`](../../core/dr-types/src/settings.rs#L129), [`ui/dr-ui/src/develop/segmentation.rs:104`](../../ui/dr-ui/src/develop/segmentation.rs#L104), [`ui/dr-ui/src/develop/segmentation.rs:170`](../../ui/dr-ui/src/develop/segmentation.rs#L170), [`ui/dr-ui/src/develop/segmentation.rs:590`](../../ui/dr-ui/src/develop/segmentation.rs#L590), [`ui/dr-ui/src/develop/segmentation.rs:95`](../../ui/dr-ui/src/develop/segmentation.rs#L95), [`ui/dr-ui/src/develop/session.rs:23`](../../ui/dr-ui/src/develop/session.rs#L23), [`ui/dr-ui/src/faces.rs:1`](../../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/identity.rs:1`](../../ui/dr-ui/src/identity.rs#L1), [`ui/dr-ui/src/identity_ui.rs:1472`](../../ui/dr-ui/src/identity_ui.rs#L1472), [`ui/dr-ui/src/identity_ui.rs:1`](../../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/lib.rs:2829`](../../ui/dr-ui/src/lib.rs#L2829), [`ui/dr-ui/src/repairs.rs:1`](../../ui/dr-ui/src/repairs.rs#L1), [`ui/dr-ui/ui/identity.slint:1`](../../ui/dr-ui/ui/identity.slint#L1), [`ui/dr-ui/ui/settings.slint:469`](../../ui/dr-ui/ui/settings.slint#L469), [`ui/dr-ui/ui/settings.slint:95`](../../ui/dr-ui/ui/settings.slint#L95) |
| FR-CULL-11 | [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`ui/dr-ui/src/identity.rs:1`](../../ui/dr-ui/src/identity.rs#L1), [`ui/dr-ui/src/identity_ui.rs:1`](../../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/library/filters.rs:110`](../../ui/dr-ui/src/library/filters.rs#L110), [`ui/dr-ui/src/library/filters.rs:164`](../../ui/dr-ui/src/library/filters.rs#L164), [`ui/dr-ui/ui/identity.slint:1`](../../ui/dr-ui/ui/identity.slint#L1) |
| FR-CULL-12 | [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`core/dr-catalog/src/schema.rs:630`](../../core/dr-catalog/src/schema.rs#L630), [`ui/dr-ui/src/identity.rs:1`](../../ui/dr-ui/src/identity.rs#L1), [`ui/dr-ui/ui/identity.slint:1`](../../ui/dr-ui/ui/identity.slint#L1) |
| FR-CULL-13 | [`core/dr-catalog/src/schema.rs:944`](../../core/dr-catalog/src/schema.rs#L944), [`core/dr-types/src/place.rs:133`](../../core/dr-types/src/place.rs#L133), [`ui/dr-ui/src/identity.rs:104`](../../ui/dr-ui/src/identity.rs#L104), [`ui/dr-ui/src/library/filters.rs:136`](../../ui/dr-ui/src/library/filters.rs#L136), [`ui/dr-ui/src/library/filters.rs:763`](../../ui/dr-ui/src/library/filters.rs#L763), [`ui/dr-ui/src/library/filters.rs:806`](../../ui/dr-ui/src/library/filters.rs#L806), [`ui/dr-ui/src/library/filters.rs:844`](../../ui/dr-ui/src/library/filters.rs#L844), [`ui/dr-ui/ui/identity.slint:64`](../../ui/dr-ui/ui/identity.slint#L64), [`ui/dr-ui/ui/library.slint:1923`](../../ui/dr-ui/ui/library.slint#L1923), [`ui/dr-ui/ui/library.slint:730`](../../ui/dr-ui/ui/library.slint#L730) |
@@ -59,7 +59,7 @@ _None._
| FR-CULL-3 | [`core/dr-gpu/src/focus.rs:154`](../../core/dr-gpu/src/focus.rs#L154), [`core/dr-gpu/src/focus.rs:186`](../../core/dr-gpu/src/focus.rs#L186), [`core/dr-gpu/src/focus.rs:1`](../../core/dr-gpu/src/focus.rs#L1), [`core/dr-gpu/src/focus.rs:317`](../../core/dr-gpu/src/focus.rs#L317), [`core/dr-gpu/src/raw_histogram.rs:129`](../../core/dr-gpu/src/raw_histogram.rs#L129), [`core/dr-gpu/src/raw_histogram.rs:1`](../../core/dr-gpu/src/raw_histogram.rs#L1), [`core/dr-gpu/src/raw_histogram.rs:272`](../../core/dr-gpu/src/raw_histogram.rs#L272), [`core/dr-gpu/src/raw_histogram.rs:407`](../../core/dr-gpu/src/raw_histogram.rs#L407), [`core/dr-gpu/src/shaders/focus_peak.wgsl:1`](../../core/dr-gpu/src/shaders/focus_peak.wgsl#L1), [`core/dr-gpu/src/shaders/raw_histogram.wgsl:1`](../../core/dr-gpu/src/shaders/raw_histogram.wgsl#L1), [`ui/dr-ui/src/develop/render.rs:1362`](../../ui/dr-ui/src/develop/render.rs#L1362), [`ui/dr-ui/src/develop/render.rs:1426`](../../ui/dr-ui/src/develop/render.rs#L1426), [`ui/dr-ui/src/develop/render.rs:1449`](../../ui/dr-ui/src/develop/render.rs#L1449), [`ui/dr-ui/src/develop/render.rs:317`](../../ui/dr-ui/src/develop/render.rs#L317), [`ui/dr-ui/src/develop/render.rs:330`](../../ui/dr-ui/src/develop/render.rs#L330), [`ui/dr-ui/src/develop/render.rs:375`](../../ui/dr-ui/src/develop/render.rs#L375), [`ui/dr-ui/src/develop/render.rs:386`](../../ui/dr-ui/src/develop/render.rs#L386), [`ui/dr-ui/src/develop/render.rs:392`](../../ui/dr-ui/src/develop/render.rs#L392), [`ui/dr-ui/src/develop/render.rs:409`](../../ui/dr-ui/src/develop/render.rs#L409), [`ui/dr-ui/src/develop/session.rs:122`](../../ui/dr-ui/src/develop/session.rs#L122), [`ui/dr-ui/src/develop/session.rs:142`](../../ui/dr-ui/src/develop/session.rs#L142), [`ui/dr-ui/src/develop/session.rs:148`](../../ui/dr-ui/src/develop/session.rs#L148), [`ui/dr-ui/src/develop_ui.rs:1359`](../../ui/dr-ui/src/develop_ui.rs#L1359), [`ui/dr-ui/src/histogram.rs:1`](../../ui/dr-ui/src/histogram.rs#L1), [`ui/dr-ui/src/histogram.rs:208`](../../ui/dr-ui/src/histogram.rs#L208), [`ui/dr-ui/src/histogram.rs:228`](../../ui/dr-ui/src/histogram.rs#L228), [`ui/dr-ui/src/histogram.rs:272`](../../ui/dr-ui/src/histogram.rs#L272), [`ui/dr-ui/src/histogram.rs:544`](../../ui/dr-ui/src/histogram.rs#L544), [`ui/dr-ui/src/histogram.rs:565`](../../ui/dr-ui/src/histogram.rs#L565), [`ui/dr-ui/src/histogram.rs:593`](../../ui/dr-ui/src/histogram.rs#L593), [`ui/dr-ui/src/histogram.rs:621`](../../ui/dr-ui/src/histogram.rs#L621), [`ui/dr-ui/src/histogram.rs:658`](../../ui/dr-ui/src/histogram.rs#L658), [`ui/dr-ui/src/lib.rs:1269`](../../ui/dr-ui/src/lib.rs#L1269), [`ui/dr-ui/src/lib.rs:2244`](../../ui/dr-ui/src/lib.rs#L2244), [`ui/dr-ui/src/lib.rs:2374`](../../ui/dr-ui/src/lib.rs#L2374), [`ui/dr-ui/src/lib.rs:2417`](../../ui/dr-ui/src/lib.rs#L2417), [`ui/dr-ui/src/lib.rs:468`](../../ui/dr-ui/src/lib.rs#L468), [`ui/dr-ui/src/peaking.rs:1`](../../ui/dr-ui/src/peaking.rs#L1), [`ui/dr-ui/ui/app.slint:153`](../../ui/dr-ui/ui/app.slint#L153), [`ui/dr-ui/ui/app.slint:1866`](../../ui/dr-ui/ui/app.slint#L1866), [`ui/dr-ui/ui/app.slint:3228`](../../ui/dr-ui/ui/app.slint#L3228), [`ui/dr-ui/ui/peaking.slint:1`](../../ui/dr-ui/ui/peaking.slint#L1), [`ui/dr-ui/ui/peaking.slint:25`](../../ui/dr-ui/ui/peaking.slint#L25), [`ui/dr-ui/ui/peaking.slint:56`](../../ui/dr-ui/ui/peaking.slint#L56), [`ui/dr-ui/ui/peaking.slint:91`](../../ui/dr-ui/ui/peaking.slint#L91) |
| FR-CULL-4 | [`core/dr-catalog/src/rating.rs:1`](../../core/dr-catalog/src/rating.rs#L1), [`core/dr-pipeline/src/sidecar.rs:174`](../../core/dr-pipeline/src/sidecar.rs#L174), [`core/dr-xmp/src/lib.rs:442`](../../core/dr-xmp/src/lib.rs#L442), [`ui/dr-ui/src/library/filters.rs:64`](../../ui/dr-ui/src/library/filters.rs#L64), [`ui/dr-ui/src/library/sidecar.rs:11`](../../ui/dr-ui/src/library/sidecar.rs#L11), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1028`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1028), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1301`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1301), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:457`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L457), [`ui/dr-ui/ui/app.slint:1635`](../../ui/dr-ui/ui/app.slint#L1635), [`ui/dr-ui/ui/app.slint:2725`](../../ui/dr-ui/ui/app.slint#L2725), [`ui/dr-ui/ui/develop.slint:168`](../../ui/dr-ui/ui/develop.slint#L168), [`ui/dr-ui/ui/develop.slint:55`](../../ui/dr-ui/ui/develop.slint#L55), [`ui/dr-ui/ui/library.slint:1039`](../../ui/dr-ui/ui/library.slint#L1039), [`ui/dr-ui/ui/library.slint:1618`](../../ui/dr-ui/ui/library.slint#L1618), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488), [`ui/dr-ui/ui/library.slint:5069`](../../ui/dr-ui/ui/library.slint#L5069), [`ui/dr-ui/ui/library.slint:642`](../../ui/dr-ui/ui/library.slint#L642) |
| FR-CULL-5 | [`core/dr-catalog/src/bursts.rs:1`](../../core/dr-catalog/src/bursts.rs#L1), [`core/dr-catalog/src/schema.rs:673`](../../core/dr-catalog/src/schema.rs#L673), [`ui/dr-ui/src/bursts.rs:1`](../../ui/dr-ui/src/bursts.rs#L1), [`ui/dr-ui/src/library/cells.rs:19`](../../ui/dr-ui/src/library/cells.rs#L19), [`ui/dr-ui/src/library/cells.rs:769`](../../ui/dr-ui/src/library/cells.rs#L769), [`ui/dr-ui/ui/library.slint:488`](../../ui/dr-ui/ui/library.slint#L488) |
-| FR-CULL-8 | [`core/dr-catalog/src/face_shard.rs:1`](../../core/dr-catalog/src/face_shard.rs#L1), [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`core/dr-catalog/src/schema.rs:741`](../../core/dr-catalog/src/schema.rs#L741), [`core/dr-catalog/src/schema.rs:997`](../../core/dr-catalog/src/schema.rs#L997), [`core/dr-face/src/align.rs:296`](../../core/dr-face/src/align.rs#L296), [`core/dr-types/src/settings.rs:176`](../../core/dr-types/src/settings.rs#L176), [`ui/dr-ui/examples/face_detectors.rs:1`](../../ui/dr-ui/examples/face_detectors.rs#L1), [`ui/dr-ui/examples/face_native.rs:1`](../../ui/dr-ui/examples/face_native.rs#L1), [`ui/dr-ui/src/derived_sync.rs:127`](../../ui/dr-ui/src/derived_sync.rs#L127), [`ui/dr-ui/src/faces.rs:1`](../../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/faces.rs:446`](../../ui/dr-ui/src/faces.rs#L446), [`ui/dr-ui/src/faces.rs:462`](../../ui/dr-ui/src/faces.rs#L462), [`ui/dr-ui/src/faces.rs:584`](../../ui/dr-ui/src/faces.rs#L584), [`ui/dr-ui/src/identity_ui.rs:1472`](../../ui/dr-ui/src/identity_ui.rs#L1472), [`ui/dr-ui/src/identity_ui.rs:617`](../../ui/dr-ui/src/identity_ui.rs#L617), [`ui/dr-ui/src/lib.rs:1739`](../../ui/dr-ui/src/lib.rs#L1739), [`ui/dr-ui/src/lib.rs:3117`](../../ui/dr-ui/src/lib.rs#L3117), [`ui/dr-ui/src/library/sweep.rs:242`](../../ui/dr-ui/src/library/sweep.rs#L242), [`ui/dr-ui/src/library/sweep.rs:510`](../../ui/dr-ui/src/library/sweep.rs#L510), [`ui/dr-ui/src/library_ui/controller.rs:417`](../../ui/dr-ui/src/library_ui/controller.rs#L417), [`ui/dr-ui/src/library_ui/controller.rs:506`](../../ui/dr-ui/src/library_ui/controller.rs#L506), [`ui/dr-ui/src/repairs.rs:1`](../../ui/dr-ui/src/repairs.rs#L1), [`ui/dr-ui/src/settings_ui.rs:210`](../../ui/dr-ui/src/settings_ui.rs#L210), [`ui/dr-ui/src/settings_ui.rs:645`](../../ui/dr-ui/src/settings_ui.rs#L645), [`ui/dr-ui/ui/app.slint:638`](../../ui/dr-ui/ui/app.slint#L638), [`ui/dr-ui/ui/settings.slint:101`](../../ui/dr-ui/ui/settings.slint#L101), [`ui/dr-ui/ui/settings.slint:404`](../../ui/dr-ui/ui/settings.slint#L404), [`ui/dr-ui/ui/settings.slint:466`](../../ui/dr-ui/ui/settings.slint#L466), [`ui/dr-ui/ui/settings.slint:83`](../../ui/dr-ui/ui/settings.slint#L83), [`ui/dr-ui/ui/settings.slint:95`](../../ui/dr-ui/ui/settings.slint#L95) |
+| FR-CULL-8 | [`core/dr-catalog/src/face_shard.rs:1`](../../core/dr-catalog/src/face_shard.rs#L1), [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`core/dr-catalog/src/schema.rs:741`](../../core/dr-catalog/src/schema.rs#L741), [`core/dr-catalog/src/schema.rs:997`](../../core/dr-catalog/src/schema.rs#L997), [`core/dr-face/src/align.rs:296`](../../core/dr-face/src/align.rs#L296), [`core/dr-types/src/settings.rs:176`](../../core/dr-types/src/settings.rs#L176), [`ui/dr-ui/examples/face_detectors.rs:1`](../../ui/dr-ui/examples/face_detectors.rs#L1), [`ui/dr-ui/examples/face_native.rs:1`](../../ui/dr-ui/examples/face_native.rs#L1), [`ui/dr-ui/src/derived_sync.rs:127`](../../ui/dr-ui/src/derived_sync.rs#L127), [`ui/dr-ui/src/faces.rs:1`](../../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/faces.rs:446`](../../ui/dr-ui/src/faces.rs#L446), [`ui/dr-ui/src/faces.rs:462`](../../ui/dr-ui/src/faces.rs#L462), [`ui/dr-ui/src/faces.rs:584`](../../ui/dr-ui/src/faces.rs#L584), [`ui/dr-ui/src/identity_ui.rs:1472`](../../ui/dr-ui/src/identity_ui.rs#L1472), [`ui/dr-ui/src/identity_ui.rs:617`](../../ui/dr-ui/src/identity_ui.rs#L617), [`ui/dr-ui/src/lib.rs:1739`](../../ui/dr-ui/src/lib.rs#L1739), [`ui/dr-ui/src/lib.rs:3117`](../../ui/dr-ui/src/lib.rs#L3117), [`ui/dr-ui/src/library/sweep.rs:242`](../../ui/dr-ui/src/library/sweep.rs#L242), [`ui/dr-ui/src/library/sweep.rs:510`](../../ui/dr-ui/src/library/sweep.rs#L510), [`ui/dr-ui/src/library_ui/controller.rs:417`](../../ui/dr-ui/src/library_ui/controller.rs#L417), [`ui/dr-ui/src/library_ui/controller.rs:506`](../../ui/dr-ui/src/library_ui/controller.rs#L506), [`ui/dr-ui/src/repairs.rs:1`](../../ui/dr-ui/src/repairs.rs#L1), [`ui/dr-ui/src/settings_ui.rs:210`](../../ui/dr-ui/src/settings_ui.rs#L210), [`ui/dr-ui/src/settings_ui.rs:645`](../../ui/dr-ui/src/settings_ui.rs#L645), [`ui/dr-ui/ui/app.slint:638`](../../ui/dr-ui/ui/app.slint#L638), [`ui/dr-ui/ui/settings.slint:101`](../../ui/dr-ui/ui/settings.slint#L101), [`ui/dr-ui/ui/settings.slint:407`](../../ui/dr-ui/ui/settings.slint#L407), [`ui/dr-ui/ui/settings.slint:469`](../../ui/dr-ui/ui/settings.slint#L469), [`ui/dr-ui/ui/settings.slint:83`](../../ui/dr-ui/ui/settings.slint#L83), [`ui/dr-ui/ui/settings.slint:95`](../../ui/dr-ui/ui/settings.slint#L95) |
| FR-CULL-8a | [`core/dr-catalog/src/faces.rs:124`](../../core/dr-catalog/src/faces.rs#L124), [`core/dr-catalog/src/schema.rs:944`](../../core/dr-catalog/src/schema.rs#L944), [`core/dr-face/src/classify.rs:1`](../../core/dr-face/src/classify.rs#L1), [`core/dr-face/src/eyes.rs:1`](../../core/dr-face/src/eyes.rs#L1), [`core/dr-face/src/landmarks.rs:1`](../../core/dr-face/src/landmarks.rs#L1), [`core/dr-types/src/place.rs:133`](../../core/dr-types/src/place.rs#L133), [`ui/dr-ui/src/faces.rs:166`](../../ui/dr-ui/src/faces.rs#L166), [`ui/dr-ui/src/faces.rs:1821`](../../ui/dr-ui/src/faces.rs#L1821), [`ui/dr-ui/src/faces.rs:308`](../../ui/dr-ui/src/faces.rs#L308), [`ui/dr-ui/src/identity.rs:104`](../../ui/dr-ui/src/identity.rs#L104), [`ui/dr-ui/src/library/filters.rs:136`](../../ui/dr-ui/src/library/filters.rs#L136), [`ui/dr-ui/src/library/filters.rs:763`](../../ui/dr-ui/src/library/filters.rs#L763), [`ui/dr-ui/src/library/filters.rs:806`](../../ui/dr-ui/src/library/filters.rs#L806), [`ui/dr-ui/src/library/filters.rs:844`](../../ui/dr-ui/src/library/filters.rs#L844), [`ui/dr-ui/src/repairs.rs:579`](../../ui/dr-ui/src/repairs.rs#L579), [`ui/dr-ui/ui/identity.slint:276`](../../ui/dr-ui/ui/identity.slint#L276), [`ui/dr-ui/ui/identity.slint:64`](../../ui/dr-ui/ui/identity.slint#L64), [`ui/dr-ui/ui/library.slint:1923`](../../ui/dr-ui/ui/library.slint#L1923), [`ui/dr-ui/ui/library.slint:730`](../../ui/dr-ui/ui/library.slint#L730) |
| FR-CULL-9 | [`core/dr-catalog/src/faces.rs:1`](../../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:1038`](../../core/dr-catalog/src/schema.rs#L1038), [`core/dr-catalog/src/schema.rs:808`](../../core/dr-catalog/src/schema.rs#L808), [`core/dr-face/src/assign.rs:1`](../../core/dr-face/src/assign.rs#L1), [`core/dr-face/src/neighbours.rs:1`](../../core/dr-face/src/neighbours.rs#L1), [`core/dr-types/src/settings.rs:129`](../../core/dr-types/src/settings.rs#L129), [`ui/dr-ui/src/faces.rs:1`](../../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/faces.rs:584`](../../ui/dr-ui/src/faces.rs#L584), [`ui/dr-ui/src/identity_ui.rs:1`](../../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/repairs.rs:525`](../../ui/dr-ui/src/repairs.rs#L525), [`ui/dr-ui/ui/identity.slint:355`](../../ui/dr-ui/ui/identity.slint#L355) |
| FR-DEV-1 | [`core/dr-pipeline/src/graph.rs:1`](../../core/dr-pipeline/src/graph.rs#L1), [`core/dr-pipeline/src/sidecar.rs:1`](../../core/dr-pipeline/src/sidecar.rs#L1) |
@@ -85,7 +85,7 @@ _None._
| FR-DEV-3i | [`core/dr-pipeline/src/mask.rs:558`](../../core/dr-pipeline/src/mask.rs#L558), [`core/dr-segment/src/lib.rs:1`](../../core/dr-segment/src/lib.rs#L1), [`ui/dr-ui/src/segmentation.rs:1`](../../ui/dr-ui/src/segmentation.rs#L1) |
| FR-DEV-4 | [`core/dr-gpu/src/adjust.rs:1039`](../../core/dr-gpu/src/adjust.rs#L1039), [`core/dr-gpu/src/lib.rs:368`](../../core/dr-gpu/src/lib.rs#L368), [`ui/dr-ui/ui/crop.slint:1`](../../ui/dr-ui/ui/crop.slint#L1) |
| FR-DEV-5 | [`core/dr-pipeline/src/graph.rs:1440`](../../core/dr-pipeline/src/graph.rs#L1440), [`core/dr-pipeline/src/graph.rs:587`](../../core/dr-pipeline/src/graph.rs#L587), [`core/dr-pipeline/src/graph.rs:640`](../../core/dr-pipeline/src/graph.rs#L640), [`core/dr-pipeline/src/history.rs:102`](../../core/dr-pipeline/src/history.rs#L102), [`core/dr-pipeline/src/history.rs:110`](../../core/dr-pipeline/src/history.rs#L110), [`core/dr-pipeline/src/history.rs:127`](../../core/dr-pipeline/src/history.rs#L127), [`core/dr-pipeline/src/history.rs:184`](../../core/dr-pipeline/src/history.rs#L184), [`core/dr-pipeline/src/history.rs:1`](../../core/dr-pipeline/src/history.rs#L1), [`core/dr-pipeline/src/history.rs:214`](../../core/dr-pipeline/src/history.rs#L214), [`core/dr-pipeline/src/history.rs:234`](../../core/dr-pipeline/src/history.rs#L234), [`core/dr-pipeline/src/history.rs:293`](../../core/dr-pipeline/src/history.rs#L293), [`core/dr-pipeline/src/history.rs:479`](../../core/dr-pipeline/src/history.rs#L479), [`core/dr-pipeline/src/history.rs:489`](../../core/dr-pipeline/src/history.rs#L489), [`core/dr-pipeline/src/history.rs:499`](../../core/dr-pipeline/src/history.rs#L499), [`core/dr-pipeline/src/history.rs:526`](../../core/dr-pipeline/src/history.rs#L526), [`core/dr-pipeline/src/history.rs:86`](../../core/dr-pipeline/src/history.rs#L86), [`core/dr-pipeline/src/sidecar.rs:1067`](../../core/dr-pipeline/src/sidecar.rs#L1067), [`core/dr-pipeline/src/sidecar.rs:147`](../../core/dr-pipeline/src/sidecar.rs#L147), [`core/dr-pipeline/src/sidecar.rs:2513`](../../core/dr-pipeline/src/sidecar.rs#L2513), [`core/dr-pipeline/src/sidecar.rs:2549`](../../core/dr-pipeline/src/sidecar.rs#L2549), [`core/dr-pipeline/src/sidecar.rs:2561`](../../core/dr-pipeline/src/sidecar.rs#L2561), [`core/dr-pipeline/src/sidecar.rs:318`](../../core/dr-pipeline/src/sidecar.rs#L318), [`core/dr-pipeline/src/sidecar.rs:713`](../../core/dr-pipeline/src/sidecar.rs#L713), [`core/dr-pipeline/src/sidecar.rs:729`](../../core/dr-pipeline/src/sidecar.rs#L729), [`core/dr-pipeline/src/sidecar.rs:876`](../../core/dr-pipeline/src/sidecar.rs#L876), [`core/dr-pipeline/src/state.rs:1`](../../core/dr-pipeline/src/state.rs#L1), [`core/dr-pipeline/src/state.rs:75`](../../core/dr-pipeline/src/state.rs#L75), [`ui/dr-ui/src/develop/framing.rs:870`](../../ui/dr-ui/src/develop/framing.rs#L870), [`ui/dr-ui/src/develop/history.rs:11`](../../ui/dr-ui/src/develop/history.rs#L11), [`ui/dr-ui/src/develop/history.rs:152`](../../ui/dr-ui/src/develop/history.rs#L152), [`ui/dr-ui/src/develop/history.rs:165`](../../ui/dr-ui/src/develop/history.rs#L165), [`ui/dr-ui/src/develop/history.rs:178`](../../ui/dr-ui/src/develop/history.rs#L178), [`ui/dr-ui/src/develop/history.rs:190`](../../ui/dr-ui/src/develop/history.rs#L190), [`ui/dr-ui/src/develop/history.rs:206`](../../ui/dr-ui/src/develop/history.rs#L206), [`ui/dr-ui/src/develop/history.rs:238`](../../ui/dr-ui/src/develop/history.rs#L238), [`ui/dr-ui/src/develop/history.rs:242`](../../ui/dr-ui/src/develop/history.rs#L242), [`ui/dr-ui/src/develop/history.rs:261`](../../ui/dr-ui/src/develop/history.rs#L261), [`ui/dr-ui/src/develop/history.rs:277`](../../ui/dr-ui/src/develop/history.rs#L277), [`ui/dr-ui/src/develop/history.rs:299`](../../ui/dr-ui/src/develop/history.rs#L299), [`ui/dr-ui/src/develop/history.rs:29`](../../ui/dr-ui/src/develop/history.rs#L29), [`ui/dr-ui/src/develop/history.rs:359`](../../ui/dr-ui/src/develop/history.rs#L359), [`ui/dr-ui/src/develop/history.rs:68`](../../ui/dr-ui/src/develop/history.rs#L68), [`ui/dr-ui/src/develop/history.rs:82`](../../ui/dr-ui/src/develop/history.rs#L82), [`ui/dr-ui/src/develop/history.rs:93`](../../ui/dr-ui/src/develop/history.rs#L93), [`ui/dr-ui/src/develop/render.rs:711`](../../ui/dr-ui/src/develop/render.rs#L711), [`ui/dr-ui/src/develop/render.rs:887`](../../ui/dr-ui/src/develop/render.rs#L887), [`ui/dr-ui/src/develop/render.rs:923`](../../ui/dr-ui/src/develop/render.rs#L923), [`ui/dr-ui/src/develop/session.rs:80`](../../ui/dr-ui/src/develop/session.rs#L80), [`ui/dr-ui/src/develop/session.rs:89`](../../ui/dr-ui/src/develop/session.rs#L89), [`ui/dr-ui/src/develop/white_balance.rs:11`](../../ui/dr-ui/src/develop/white_balance.rs#L11), [`ui/dr-ui/src/develop/white_balance.rs:162`](../../ui/dr-ui/src/develop/white_balance.rs#L162), [`ui/dr-ui/src/develop_ui.rs:705`](../../ui/dr-ui/src/develop_ui.rs#L705), [`ui/dr-ui/src/develop_ui.rs:725`](../../ui/dr-ui/src/develop_ui.rs#L725), [`ui/dr-ui/src/labels.rs:12`](../../ui/dr-ui/src/labels.rs#L12), [`ui/dr-ui/src/labels.rs:284`](../../ui/dr-ui/src/labels.rs#L284), [`ui/dr-ui/src/labels.rs:31`](../../ui/dr-ui/src/labels.rs#L31), [`ui/dr-ui/src/lib.rs:2151`](../../ui/dr-ui/src/lib.rs#L2151), [`ui/dr-ui/src/lib.rs:2156`](../../ui/dr-ui/src/lib.rs#L2156), [`ui/dr-ui/src/lib.rs:2188`](../../ui/dr-ui/src/lib.rs#L2188), [`ui/dr-ui/src/lib.rs:2197`](../../ui/dr-ui/src/lib.rs#L2197), [`ui/dr-ui/src/lib.rs:2214`](../../ui/dr-ui/src/lib.rs#L2214), [`ui/dr-ui/src/library/sidecar.rs:348`](../../ui/dr-ui/src/library/sidecar.rs#L348), [`ui/dr-ui/src/library/sidecar.rs:58`](../../ui/dr-ui/src/library/sidecar.rs#L58), [`ui/dr-ui/src/presets.rs:1678`](../../ui/dr-ui/src/presets.rs#L1678), [`ui/dr-ui/src/presets.rs:373`](../../ui/dr-ui/src/presets.rs#L373), [`ui/dr-ui/src/presets.rs:437`](../../ui/dr-ui/src/presets.rs#L437), [`ui/dr-ui/src/presets.rs:557`](../../ui/dr-ui/src/presets.rs#L557), [`ui/dr-ui/ui/history.slint:192`](../../ui/dr-ui/ui/history.slint#L192), [`ui/dr-ui/ui/history.slint:1`](../../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:219`](../../ui/dr-ui/ui/history.slint#L219), [`ui/dr-ui/ui/history.slint:304`](../../ui/dr-ui/ui/history.slint#L304), [`ui/dr-ui/ui/history.slint:43`](../../ui/dr-ui/ui/history.slint#L43), [`ui/dr-ui/ui/history.slint:53`](../../ui/dr-ui/ui/history.slint#L53) |
-| FR-DEV-6 | [`core/dr-pipeline/src/preset.rs:1`](../../core/dr-pipeline/src/preset.rs#L1), [`core/dr-pipeline/src/preset.rs:390`](../../core/dr-pipeline/src/preset.rs#L390), [`core/dr-pipeline/src/preset.rs:423`](../../core/dr-pipeline/src/preset.rs#L423), [`core/dr-pipeline/src/starter.rs:1`](../../core/dr-pipeline/src/starter.rs#L1), [`core/dr-preset-xmp/src/lib.rs:1`](../../core/dr-preset-xmp/src/lib.rs#L1), [`core/dr-types/src/settings.rs:443`](../../core/dr-types/src/settings.rs#L443), [`ui/dr-ui/src/develop/session.rs:560`](../../ui/dr-ui/src/develop/session.rs#L560), [`ui/dr-ui/src/develop/session.rs:581`](../../ui/dr-ui/src/develop/session.rs#L581), [`ui/dr-ui/src/develop_ui.rs:167`](../../ui/dr-ui/src/develop_ui.rs#L167), [`ui/dr-ui/src/develop_ui.rs:196`](../../ui/dr-ui/src/develop_ui.rs#L196), [`ui/dr-ui/src/lib.rs:1240`](../../ui/dr-ui/src/lib.rs#L1240), [`ui/dr-ui/src/library/sidecar.rs:11`](../../ui/dr-ui/src/library/sidecar.rs#L11), [`ui/dr-ui/src/library/sidecar.rs:39`](../../ui/dr-ui/src/library/sidecar.rs#L39), [`ui/dr-ui/src/library/thumbnails_fetch.rs:413`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L413), [`ui/dr-ui/src/library_ui/controller.rs:643`](../../ui/dr-ui/src/library_ui/controller.rs#L643), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:488`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L488), [`ui/dr-ui/src/library_ui/window.rs:659`](../../ui/dr-ui/src/library_ui/window.rs#L659), [`ui/dr-ui/src/preset_store.rs:1`](../../ui/dr-ui/src/preset_store.rs#L1), [`ui/dr-ui/src/presets.rs:1`](../../ui/dr-ui/src/presets.rs#L1), [`ui/dr-ui/src/presets.rs:707`](../../ui/dr-ui/src/presets.rs#L707), [`ui/dr-ui/src/presets.rs:741`](../../ui/dr-ui/src/presets.rs#L741), [`ui/dr-ui/ui/adjust.slint:937`](../../ui/dr-ui/ui/adjust.slint#L937), [`ui/dr-ui/ui/adjust.slint:962`](../../ui/dr-ui/ui/adjust.slint#L962), [`ui/dr-ui/ui/app.slint:1055`](../../ui/dr-ui/ui/app.slint#L1055), [`ui/dr-ui/ui/app.slint:1471`](../../ui/dr-ui/ui/app.slint#L1471), [`ui/dr-ui/ui/app.slint:2429`](../../ui/dr-ui/ui/app.slint#L2429), [`ui/dr-ui/ui/app.slint:3367`](../../ui/dr-ui/ui/app.slint#L3367), [`ui/dr-ui/ui/app.slint:3411`](../../ui/dr-ui/ui/app.slint#L3411), [`ui/dr-ui/ui/app.slint:494`](../../ui/dr-ui/ui/app.slint#L494), [`ui/dr-ui/ui/app.slint:505`](../../ui/dr-ui/ui/app.slint#L505), [`ui/dr-ui/ui/app.slint:659`](../../ui/dr-ui/ui/app.slint#L659), [`ui/dr-ui/ui/develop.slint:257`](../../ui/dr-ui/ui/develop.slint#L257), [`ui/dr-ui/ui/library.slint:1995`](../../ui/dr-ui/ui/library.slint#L1995), [`ui/dr-ui/ui/library.slint:2001`](../../ui/dr-ui/ui/library.slint#L2001), [`ui/dr-ui/ui/library.slint:3190`](../../ui/dr-ui/ui/library.slint#L3190), [`ui/dr-ui/ui/library.slint:5108`](../../ui/dr-ui/ui/library.slint#L5108), [`ui/dr-ui/ui/library.slint:5126`](../../ui/dr-ui/ui/library.slint#L5126), [`ui/dr-ui/ui/presets.slint:105`](../../ui/dr-ui/ui/presets.slint#L105), [`ui/dr-ui/ui/presets.slint:113`](../../ui/dr-ui/ui/presets.slint#L113), [`ui/dr-ui/ui/presets.slint:19`](../../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/presets.slint:276`](../../ui/dr-ui/ui/presets.slint#L276), [`ui/dr-ui/ui/presets.slint:297`](../../ui/dr-ui/ui/presets.slint#L297), [`ui/dr-ui/ui/presets.slint:332`](../../ui/dr-ui/ui/presets.slint#L332), [`ui/dr-ui/ui/presets.slint:5`](../../ui/dr-ui/ui/presets.slint#L5), [`ui/dr-ui/ui/presets.slint:60`](../../ui/dr-ui/ui/presets.slint#L60), [`ui/dr-ui/ui/settings.slint:126`](../../ui/dr-ui/ui/settings.slint#L126), [`ui/dr-ui/ui/settings.slint:687`](../../ui/dr-ui/ui/settings.slint#L687) |
+| FR-DEV-6 | [`core/dr-pipeline/src/preset.rs:1`](../../core/dr-pipeline/src/preset.rs#L1), [`core/dr-pipeline/src/preset.rs:390`](../../core/dr-pipeline/src/preset.rs#L390), [`core/dr-pipeline/src/preset.rs:423`](../../core/dr-pipeline/src/preset.rs#L423), [`core/dr-pipeline/src/starter.rs:1`](../../core/dr-pipeline/src/starter.rs#L1), [`core/dr-preset-xmp/src/lib.rs:1`](../../core/dr-preset-xmp/src/lib.rs#L1), [`core/dr-types/src/settings.rs:443`](../../core/dr-types/src/settings.rs#L443), [`ui/dr-ui/src/develop/session.rs:560`](../../ui/dr-ui/src/develop/session.rs#L560), [`ui/dr-ui/src/develop/session.rs:581`](../../ui/dr-ui/src/develop/session.rs#L581), [`ui/dr-ui/src/develop_ui.rs:167`](../../ui/dr-ui/src/develop_ui.rs#L167), [`ui/dr-ui/src/develop_ui.rs:196`](../../ui/dr-ui/src/develop_ui.rs#L196), [`ui/dr-ui/src/lib.rs:1240`](../../ui/dr-ui/src/lib.rs#L1240), [`ui/dr-ui/src/library/sidecar.rs:11`](../../ui/dr-ui/src/library/sidecar.rs#L11), [`ui/dr-ui/src/library/sidecar.rs:39`](../../ui/dr-ui/src/library/sidecar.rs#L39), [`ui/dr-ui/src/library/thumbnails_fetch.rs:413`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L413), [`ui/dr-ui/src/library_ui/controller.rs:643`](../../ui/dr-ui/src/library_ui/controller.rs#L643), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:488`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L488), [`ui/dr-ui/src/library_ui/window.rs:659`](../../ui/dr-ui/src/library_ui/window.rs#L659), [`ui/dr-ui/src/preset_store.rs:1`](../../ui/dr-ui/src/preset_store.rs#L1), [`ui/dr-ui/src/presets.rs:1`](../../ui/dr-ui/src/presets.rs#L1), [`ui/dr-ui/src/presets.rs:707`](../../ui/dr-ui/src/presets.rs#L707), [`ui/dr-ui/src/presets.rs:741`](../../ui/dr-ui/src/presets.rs#L741), [`ui/dr-ui/ui/adjust.slint:937`](../../ui/dr-ui/ui/adjust.slint#L937), [`ui/dr-ui/ui/adjust.slint:962`](../../ui/dr-ui/ui/adjust.slint#L962), [`ui/dr-ui/ui/app.slint:1055`](../../ui/dr-ui/ui/app.slint#L1055), [`ui/dr-ui/ui/app.slint:1471`](../../ui/dr-ui/ui/app.slint#L1471), [`ui/dr-ui/ui/app.slint:2429`](../../ui/dr-ui/ui/app.slint#L2429), [`ui/dr-ui/ui/app.slint:3367`](../../ui/dr-ui/ui/app.slint#L3367), [`ui/dr-ui/ui/app.slint:3411`](../../ui/dr-ui/ui/app.slint#L3411), [`ui/dr-ui/ui/app.slint:494`](../../ui/dr-ui/ui/app.slint#L494), [`ui/dr-ui/ui/app.slint:505`](../../ui/dr-ui/ui/app.slint#L505), [`ui/dr-ui/ui/app.slint:659`](../../ui/dr-ui/ui/app.slint#L659), [`ui/dr-ui/ui/develop.slint:257`](../../ui/dr-ui/ui/develop.slint#L257), [`ui/dr-ui/ui/library.slint:1995`](../../ui/dr-ui/ui/library.slint#L1995), [`ui/dr-ui/ui/library.slint:2001`](../../ui/dr-ui/ui/library.slint#L2001), [`ui/dr-ui/ui/library.slint:3190`](../../ui/dr-ui/ui/library.slint#L3190), [`ui/dr-ui/ui/library.slint:5108`](../../ui/dr-ui/ui/library.slint#L5108), [`ui/dr-ui/ui/library.slint:5126`](../../ui/dr-ui/ui/library.slint#L5126), [`ui/dr-ui/ui/presets.slint:105`](../../ui/dr-ui/ui/presets.slint#L105), [`ui/dr-ui/ui/presets.slint:113`](../../ui/dr-ui/ui/presets.slint#L113), [`ui/dr-ui/ui/presets.slint:19`](../../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/presets.slint:276`](../../ui/dr-ui/ui/presets.slint#L276), [`ui/dr-ui/ui/presets.slint:297`](../../ui/dr-ui/ui/presets.slint#L297), [`ui/dr-ui/ui/presets.slint:332`](../../ui/dr-ui/ui/presets.slint#L332), [`ui/dr-ui/ui/presets.slint:5`](../../ui/dr-ui/ui/presets.slint#L5), [`ui/dr-ui/ui/presets.slint:60`](../../ui/dr-ui/ui/presets.slint#L60), [`ui/dr-ui/ui/settings.slint:126`](../../ui/dr-ui/ui/settings.slint#L126), [`ui/dr-ui/ui/settings.slint:690`](../../ui/dr-ui/ui/settings.slint#L690) |
| FR-DEV-7 | [`core/dr-pipeline/src/history.rs:214`](../../core/dr-pipeline/src/history.rs#L214), [`core/dr-pipeline/src/history.rs:499`](../../core/dr-pipeline/src/history.rs#L499), [`core/dr-pipeline/src/history.rs:526`](../../core/dr-pipeline/src/history.rs#L526), [`ui/dr-ui/src/develop/history.rs:107`](../../ui/dr-ui/src/develop/history.rs#L107), [`ui/dr-ui/src/develop/history.rs:124`](../../ui/dr-ui/src/develop/history.rs#L124), [`ui/dr-ui/src/develop/history.rs:206`](../../ui/dr-ui/src/develop/history.rs#L206), [`ui/dr-ui/src/develop/history.rs:238`](../../ui/dr-ui/src/develop/history.rs#L238), [`ui/dr-ui/src/develop/history.rs:359`](../../ui/dr-ui/src/develop/history.rs#L359), [`ui/dr-ui/src/develop/render.rs:493`](../../ui/dr-ui/src/develop/render.rs#L493), [`ui/dr-ui/src/develop/render.rs:534`](../../ui/dr-ui/src/develop/render.rs#L534), [`ui/dr-ui/src/develop/render.rs:923`](../../ui/dr-ui/src/develop/render.rs#L923), [`ui/dr-ui/src/develop/session.rs:105`](../../ui/dr-ui/src/develop/session.rs#L105), [`ui/dr-ui/src/develop_ui.rs:646`](../../ui/dr-ui/src/develop_ui.rs#L646), [`ui/dr-ui/src/develop_ui.rs:705`](../../ui/dr-ui/src/develop_ui.rs#L705), [`ui/dr-ui/src/develop_ui.rs:777`](../../ui/dr-ui/src/develop_ui.rs#L777), [`ui/dr-ui/src/lib.rs:2197`](../../ui/dr-ui/src/lib.rs#L2197), [`ui/dr-ui/src/lib.rs:2274`](../../ui/dr-ui/src/lib.rs#L2274), [`ui/dr-ui/src/lib.rs:2288`](../../ui/dr-ui/src/lib.rs#L2288), [`ui/dr-ui/src/lib.rs:436`](../../ui/dr-ui/src/lib.rs#L436), [`ui/dr-ui/ui/app.slint:195`](../../ui/dr-ui/ui/app.slint#L195), [`ui/dr-ui/ui/app.slint:2296`](../../ui/dr-ui/ui/app.slint#L2296), [`ui/dr-ui/ui/app.slint:2342`](../../ui/dr-ui/ui/app.slint#L2342), [`ui/dr-ui/ui/app.slint:2911`](../../ui/dr-ui/ui/app.slint#L2911), [`ui/dr-ui/ui/history.slint:103`](../../ui/dr-ui/ui/history.slint#L103), [`ui/dr-ui/ui/history.slint:1`](../../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:227`](../../ui/dr-ui/ui/history.slint#L227), [`ui/dr-ui/ui/history.slint:53`](../../ui/dr-ui/ui/history.slint#L53), [`ui/dr-ui/ui/widgets.slint:72`](../../ui/dr-ui/ui/widgets.slint#L72) |
| FR-DEV-8 | [`core/dr-gpu/src/detail.rs:405`](../../core/dr-gpu/src/detail.rs#L405), [`core/dr-gpu/src/detail.rs:623`](../../core/dr-gpu/src/detail.rs#L623), [`core/dr-gpu/tests/detail_instances.rs:1`](../../core/dr-gpu/tests/detail_instances.rs#L1), [`core/dr-gpu/tests/spot_removal.rs:1`](../../core/dr-gpu/tests/spot_removal.rs#L1), [`core/dr-pipeline/src/detail.rs:410`](../../core/dr-pipeline/src/detail.rs#L410), [`core/dr-pipeline/src/detail.rs:452`](../../core/dr-pipeline/src/detail.rs#L452), [`core/dr-pipeline/src/detail.rs:487`](../../core/dr-pipeline/src/detail.rs#L487), [`core/dr-pipeline/src/detail.rs:573`](../../core/dr-pipeline/src/detail.rs#L573), [`core/dr-pipeline/src/graph.rs:1092`](../../core/dr-pipeline/src/graph.rs#L1092), [`core/dr-pipeline/src/graph.rs:115`](../../core/dr-pipeline/src/graph.rs#L115), [`core/dr-pipeline/src/graph.rs:247`](../../core/dr-pipeline/src/graph.rs#L247), [`core/dr-pipeline/src/operation.rs:330`](../../core/dr-pipeline/src/operation.rs#L330), [`core/dr-pipeline/src/operation.rs:749`](../../core/dr-pipeline/src/operation.rs#L749), [`core/dr-pipeline/src/sidecar.rs:1104`](../../core/dr-pipeline/src/sidecar.rs#L1104), [`core/dr-pipeline/src/sidecar.rs:1158`](../../core/dr-pipeline/src/sidecar.rs#L1158), [`core/dr-pipeline/src/sidecar.rs:1188`](../../core/dr-pipeline/src/sidecar.rs#L1188), [`core/dr-pipeline/src/sidecar.rs:233`](../../core/dr-pipeline/src/sidecar.rs#L233), [`core/dr-pipeline/src/sidecar.rs:410`](../../core/dr-pipeline/src/sidecar.rs#L410), [`core/dr-pipeline/src/sidecar.rs:910`](../../core/dr-pipeline/src/sidecar.rs#L910), [`core/dr-pipeline/src/spot.rs:115`](../../core/dr-pipeline/src/spot.rs#L115), [`core/dr-pipeline/src/spot.rs:151`](../../core/dr-pipeline/src/spot.rs#L151), [`core/dr-pipeline/src/spot.rs:1`](../../core/dr-pipeline/src/spot.rs#L1), [`core/dr-pipeline/src/spot.rs:207`](../../core/dr-pipeline/src/spot.rs#L207), [`core/dr-pipeline/src/spot.rs:387`](../../core/dr-pipeline/src/spot.rs#L387), [`core/dr-pipeline/src/spot.rs:472`](../../core/dr-pipeline/src/spot.rs#L472), [`core/dr-pipeline/src/spot.rs:582`](../../core/dr-pipeline/src/spot.rs#L582), [`core/dr-pipeline/src/spot.rs:673`](../../core/dr-pipeline/src/spot.rs#L673), [`core/dr-pipeline/src/state.rs:103`](../../core/dr-pipeline/src/state.rs#L103), [`core/dr-pipeline/tests/spot_sidecar.rs:1`](../../core/dr-pipeline/tests/spot_sidecar.rs#L1), [`core/dr-pipeline/tests/spots.rs:1`](../../core/dr-pipeline/tests/spots.rs#L1), [`ui/dr-ui/src/develop/repairs.rs:114`](../../ui/dr-ui/src/develop/repairs.rs#L114), [`ui/dr-ui/src/develop/repairs.rs:11`](../../ui/dr-ui/src/develop/repairs.rs#L11), [`ui/dr-ui/src/develop/repairs.rs:197`](../../ui/dr-ui/src/develop/repairs.rs#L197), [`ui/dr-ui/src/develop/repairs.rs:211`](../../ui/dr-ui/src/develop/repairs.rs#L211), [`ui/dr-ui/src/develop/repairs.rs:49`](../../ui/dr-ui/src/develop/repairs.rs#L49), [`ui/dr-ui/src/develop/session.rs:216`](../../ui/dr-ui/src/develop/session.rs#L216), [`ui/dr-ui/src/develop_ui.rs:932`](../../ui/dr-ui/src/develop_ui.rs#L932), [`ui/dr-ui/src/labels.rs:80`](../../ui/dr-ui/src/labels.rs#L80), [`ui/dr-ui/src/lib.rs:2232`](../../ui/dr-ui/src/lib.rs#L2232), [`ui/dr-ui/src/lib.rs:479`](../../ui/dr-ui/src/lib.rs#L479), [`ui/dr-ui/src/spots_ui.rs:19`](../../ui/dr-ui/src/spots_ui.rs#L19), [`ui/dr-ui/src/spots_ui.rs:1`](../../ui/dr-ui/src/spots_ui.rs#L1), [`ui/dr-ui/src/spots_ui.rs:265`](../../ui/dr-ui/src/spots_ui.rs#L265), [`ui/dr-ui/ui/app.slint:2149`](../../ui/dr-ui/ui/app.slint#L2149), [`ui/dr-ui/ui/app.slint:2392`](../../ui/dr-ui/ui/app.slint#L2392), [`ui/dr-ui/ui/app.slint:3260`](../../ui/dr-ui/ui/app.slint#L3260), [`ui/dr-ui/ui/icons.slint:378`](../../ui/dr-ui/ui/icons.slint#L378), [`ui/dr-ui/ui/session.slint:102`](../../ui/dr-ui/ui/session.slint#L102), [`ui/dr-ui/ui/session.slint:52`](../../ui/dr-ui/ui/session.slint#L52), [`ui/dr-ui/ui/spots.slint:191`](../../ui/dr-ui/ui/spots.slint#L191), [`ui/dr-ui/ui/spots.slint:49`](../../ui/dr-ui/ui/spots.slint#L49), [`ui/dr-ui/ui/spots.slint:6`](../../ui/dr-ui/ui/spots.slint#L6), [`ui/dr-ui/ui/spots.slint:91`](../../ui/dr-ui/ui/spots.slint#L91) |
| FR-DSP-1 | [`core/dr-gpu/src/adjust.rs:1039`](../../core/dr-gpu/src/adjust.rs#L1039), [`core/dr-gpu/src/adjust.rs:2698`](../../core/dr-gpu/src/adjust.rs#L2698), [`core/dr-gpu/src/adjust.rs:2775`](../../core/dr-gpu/src/adjust.rs#L2775), [`core/dr-gpu/src/adjust.rs:2860`](../../core/dr-gpu/src/adjust.rs#L2860), [`core/dr-gpu/src/adjust.rs:54`](../../core/dr-gpu/src/adjust.rs#L54), [`core/dr-gpu/src/lib.rs:174`](../../core/dr-gpu/src/lib.rs#L174), [`core/dr-gpu/src/lib.rs:194`](../../core/dr-gpu/src/lib.rs#L194), [`core/dr-gpu/src/lib.rs:72`](../../core/dr-gpu/src/lib.rs#L72), [`core/dr-gpu/src/lib.rs:95`](../../core/dr-gpu/src/lib.rs#L95), [`core/dr-gpu/tests/capture_sharpen.rs:200`](../../core/dr-gpu/tests/capture_sharpen.rs#L200), [`core/dr-gpu/tests/detail_stage.rs:328`](../../core/dr-gpu/tests/detail_stage.rs#L328), [`core/dr-gpu/tests/local_contrast.rs:264`](../../core/dr-gpu/tests/local_contrast.rs#L264), [`core/dr-gpu/tests/noise_reduction.rs:378`](../../core/dr-gpu/tests/noise_reduction.rs#L378), [`core/dr-pipeline/src/detail.rs:136`](../../core/dr-pipeline/src/detail.rs#L136), [`core/dr-pipeline/src/detail.rs:542`](../../core/dr-pipeline/src/detail.rs#L542), [`core/dr-pipeline/src/graph.rs:922`](../../core/dr-pipeline/src/graph.rs#L922), [`core/dr-pipeline/src/graph.rs:952`](../../core/dr-pipeline/src/graph.rs#L952), [`core/dr-pipeline/src/ops/capture_sharpen.rs:1`](../../core/dr-pipeline/src/ops/capture_sharpen.rs#L1), [`core/dr-pipeline/src/ops/capture_sharpen.rs:659`](../../core/dr-pipeline/src/ops/capture_sharpen.rs#L659), [`core/dr-pipeline/src/ops/dehaze.rs:1`](../../core/dr-pipeline/src/ops/dehaze.rs#L1), [`core/dr-pipeline/src/ops/dehaze.rs:592`](../../core/dr-pipeline/src/ops/dehaze.rs#L592), [`core/dr-pipeline/src/ops/local_contrast.rs:1`](../../core/dr-pipeline/src/ops/local_contrast.rs#L1), [`core/dr-pipeline/src/ops/local_contrast.rs:971`](../../core/dr-pipeline/src/ops/local_contrast.rs#L971), [`core/dr-pipeline/src/ops/noise_reduction.rs:700`](../../core/dr-pipeline/src/ops/noise_reduction.rs#L700), [`core/dr-pipeline/src/spot.rs:673`](../../core/dr-pipeline/src/spot.rs#L673), [`ui/dr-ui/src/develop/framing.rs:594`](../../ui/dr-ui/src/develop/framing.rs#L594), [`ui/dr-ui/src/develop/mod.rs:55`](../../ui/dr-ui/src/develop/mod.rs#L55), [`ui/dr-ui/src/develop/render.rs:1014`](../../ui/dr-ui/src/develop/render.rs#L1014), [`ui/dr-ui/src/develop/render.rs:1152`](../../ui/dr-ui/src/develop/render.rs#L1152), [`ui/dr-ui/src/develop/render.rs:217`](../../ui/dr-ui/src/develop/render.rs#L217), [`ui/dr-ui/src/develop/render.rs:79`](../../ui/dr-ui/src/develop/render.rs#L79), [`ui/dr-ui/src/develop/render.rs:980`](../../ui/dr-ui/src/develop/render.rs#L980), [`ui/dr-ui/src/lib.rs:1060`](../../ui/dr-ui/src/lib.rs#L1060), [`ui/dr-ui/src/lib.rs:110`](../../ui/dr-ui/src/lib.rs#L110) |
@@ -94,7 +94,7 @@ _None._
| FR-DSP-5 | [`core/dr-gpu/tests/frame_budget.rs:101`](../../core/dr-gpu/tests/frame_budget.rs#L101), [`core/dr-gpu/tests/zoom_resolution.rs:135`](../../core/dr-gpu/tests/zoom_resolution.rs#L135), [`core/dr-gpu/tests/zoom_resolution.rs:166`](../../core/dr-gpu/tests/zoom_resolution.rs#L166), [`core/dr-gpu/tests/zoom_resolution.rs:1`](../../core/dr-gpu/tests/zoom_resolution.rs#L1), [`core/dr-gpu/tests/zoom_resolution.rs:216`](../../core/dr-gpu/tests/zoom_resolution.rs#L216) |
| FR-DSP-6 | [`core/dr-pipeline/src/operation.rs:559`](../../core/dr-pipeline/src/operation.rs#L559), [`core/dr-types/src/colour.rs:1`](../../core/dr-types/src/colour.rs#L1), [`ui/dr-ui/src/develop/render.rs:1475`](../../ui/dr-ui/src/develop/render.rs#L1475), [`ui/dr-ui/src/develop/render.rs:252`](../../ui/dr-ui/src/develop/render.rs#L252), [`ui/dr-ui/src/lib.rs:2173`](../../ui/dr-ui/src/lib.rs#L2173), [`ui/dr-ui/src/lib.rs:2948`](../../ui/dr-ui/src/lib.rs#L2948) |
| FR-DSP-7 | [`core/dr-gpu/src/histogram.rs:147`](../../core/dr-gpu/src/histogram.rs#L147), [`core/dr-gpu/src/histogram.rs:1`](../../core/dr-gpu/src/histogram.rs#L1), [`core/dr-gpu/src/histogram.rs:281`](../../core/dr-gpu/src/histogram.rs#L281), [`core/dr-gpu/src/histogram.rs:50`](../../core/dr-gpu/src/histogram.rs#L50), [`core/dr-gpu/src/shaders/histogram.wgsl:1`](../../core/dr-gpu/src/shaders/histogram.wgsl#L1), [`ui/dr-ui/src/develop/render.rs:1265`](../../ui/dr-ui/src/develop/render.rs#L1265), [`ui/dr-ui/src/develop/render.rs:1297`](../../ui/dr-ui/src/develop/render.rs#L1297), [`ui/dr-ui/src/develop/render.rs:285`](../../ui/dr-ui/src/develop/render.rs#L285), [`ui/dr-ui/src/develop/session.rs:116`](../../ui/dr-ui/src/develop/session.rs#L116), [`ui/dr-ui/src/histogram.rs:1`](../../ui/dr-ui/src/histogram.rs#L1), [`ui/dr-ui/src/lib.rs:2329`](../../ui/dr-ui/src/lib.rs#L2329), [`ui/dr-ui/src/lib.rs:456`](../../ui/dr-ui/src/lib.rs#L456), [`ui/dr-ui/ui/histogram.slint:191`](../../ui/dr-ui/ui/histogram.slint#L191), [`ui/dr-ui/ui/histogram.slint:1`](../../ui/dr-ui/ui/histogram.slint#L1) |
-| FR-DSP-8 | [`platform/dr-plat/src/display.rs:1`](../../platform/dr-plat/src/display.rs#L1), [`platform/dr-plat/src/display/icc.rs:1`](../../platform/dr-plat/src/display/icc.rs#L1), [`platform/dr-plat/src/display/wayland.rs:1`](../../platform/dr-plat/src/display/wayland.rs#L1), [`platform/dr-plat/src/display/x11.rs:1`](../../platform/dr-plat/src/display/x11.rs#L1), [`ui/dr-ui/src/develop/render.rs:1113`](../../ui/dr-ui/src/develop/render.rs#L1113), [`ui/dr-ui/src/develop/render.rs:1475`](../../ui/dr-ui/src/develop/render.rs#L1475), [`ui/dr-ui/src/develop/render.rs:1521`](../../ui/dr-ui/src/develop/render.rs#L1521), [`ui/dr-ui/src/develop/render.rs:1540`](../../ui/dr-ui/src/develop/render.rs#L1540), [`ui/dr-ui/src/develop/render.rs:193`](../../ui/dr-ui/src/develop/render.rs#L193), [`ui/dr-ui/src/develop/render.rs:252`](../../ui/dr-ui/src/develop/render.rs#L252), [`ui/dr-ui/src/develop/render.rs:47`](../../ui/dr-ui/src/develop/render.rs#L47), [`ui/dr-ui/src/develop/session.rs:269`](../../ui/dr-ui/src/develop/session.rs#L269), [`ui/dr-ui/src/display_ui.rs:192`](../../ui/dr-ui/src/display_ui.rs#L192), [`ui/dr-ui/src/display_ui.rs:1`](../../ui/dr-ui/src/display_ui.rs#L1), [`ui/dr-ui/src/display_ui.rs:325`](../../ui/dr-ui/src/display_ui.rs#L325), [`ui/dr-ui/src/display_ui.rs:346`](../../ui/dr-ui/src/display_ui.rs#L346), [`ui/dr-ui/src/display_ui.rs:379`](../../ui/dr-ui/src/display_ui.rs#L379), [`ui/dr-ui/src/lib.rs:1262`](../../ui/dr-ui/src/lib.rs#L1262), [`ui/dr-ui/src/lib.rs:2173`](../../ui/dr-ui/src/lib.rs#L2173), [`ui/dr-ui/src/lib.rs:2925`](../../ui/dr-ui/src/lib.rs#L2925), [`ui/dr-ui/src/lib.rs:2948`](../../ui/dr-ui/src/lib.rs#L2948), [`ui/dr-ui/ui/app.slint:127`](../../ui/dr-ui/ui/app.slint#L127), [`ui/dr-ui/ui/app.slint:1784`](../../ui/dr-ui/ui/app.slint#L1784), [`ui/dr-ui/ui/settings.slint:176`](../../ui/dr-ui/ui/settings.slint#L176), [`ui/dr-ui/ui/settings.slint:861`](../../ui/dr-ui/ui/settings.slint#L861) |
+| FR-DSP-8 | [`platform/dr-plat/src/display.rs:1`](../../platform/dr-plat/src/display.rs#L1), [`platform/dr-plat/src/display/icc.rs:1`](../../platform/dr-plat/src/display/icc.rs#L1), [`platform/dr-plat/src/display/wayland.rs:1`](../../platform/dr-plat/src/display/wayland.rs#L1), [`platform/dr-plat/src/display/x11.rs:1`](../../platform/dr-plat/src/display/x11.rs#L1), [`ui/dr-ui/src/develop/render.rs:1113`](../../ui/dr-ui/src/develop/render.rs#L1113), [`ui/dr-ui/src/develop/render.rs:1475`](../../ui/dr-ui/src/develop/render.rs#L1475), [`ui/dr-ui/src/develop/render.rs:1521`](../../ui/dr-ui/src/develop/render.rs#L1521), [`ui/dr-ui/src/develop/render.rs:1540`](../../ui/dr-ui/src/develop/render.rs#L1540), [`ui/dr-ui/src/develop/render.rs:193`](../../ui/dr-ui/src/develop/render.rs#L193), [`ui/dr-ui/src/develop/render.rs:252`](../../ui/dr-ui/src/develop/render.rs#L252), [`ui/dr-ui/src/develop/render.rs:47`](../../ui/dr-ui/src/develop/render.rs#L47), [`ui/dr-ui/src/develop/session.rs:269`](../../ui/dr-ui/src/develop/session.rs#L269), [`ui/dr-ui/src/display_ui.rs:192`](../../ui/dr-ui/src/display_ui.rs#L192), [`ui/dr-ui/src/display_ui.rs:1`](../../ui/dr-ui/src/display_ui.rs#L1), [`ui/dr-ui/src/display_ui.rs:325`](../../ui/dr-ui/src/display_ui.rs#L325), [`ui/dr-ui/src/display_ui.rs:346`](../../ui/dr-ui/src/display_ui.rs#L346), [`ui/dr-ui/src/display_ui.rs:379`](../../ui/dr-ui/src/display_ui.rs#L379), [`ui/dr-ui/src/lib.rs:1262`](../../ui/dr-ui/src/lib.rs#L1262), [`ui/dr-ui/src/lib.rs:2173`](../../ui/dr-ui/src/lib.rs#L2173), [`ui/dr-ui/src/lib.rs:2925`](../../ui/dr-ui/src/lib.rs#L2925), [`ui/dr-ui/src/lib.rs:2948`](../../ui/dr-ui/src/lib.rs#L2948), [`ui/dr-ui/ui/app.slint:127`](../../ui/dr-ui/ui/app.slint#L127), [`ui/dr-ui/ui/app.slint:1784`](../../ui/dr-ui/ui/app.slint#L1784), [`ui/dr-ui/ui/settings.slint:176`](../../ui/dr-ui/ui/settings.slint#L176), [`ui/dr-ui/ui/settings.slint:864`](../../ui/dr-ui/ui/settings.slint#L864) |
| FR-EXP-1 | [`core/dr-export/src/encode.rs:1`](../../core/dr-export/src/encode.rs#L1), [`core/dr-export/src/lib.rs:1`](../../core/dr-export/src/lib.rs#L1), [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/settings_ui.rs:1`](../../ui/dr-ui/src/settings_ui.rs#L1) |
| FR-EXP-2 | [`core/dr-export/src/encode.rs:1`](../../core/dr-export/src/encode.rs#L1), [`core/dr-export/src/error.rs:26`](../../core/dr-export/src/error.rs#L26), [`core/dr-export/src/icc.rs:1`](../../core/dr-export/src/icc.rs#L1), [`core/dr-export/src/lib.rs:157`](../../core/dr-export/src/lib.rs#L157), [`core/dr-export/src/lib.rs:1`](../../core/dr-export/src/lib.rs#L1), [`core/dr-export/src/lib.rs:57`](../../core/dr-export/src/lib.rs#L57), [`core/dr-gpu/src/adjust.rs:3133`](../../core/dr-gpu/src/adjust.rs#L3133), [`core/dr-pipeline/src/graph.rs:835`](../../core/dr-pipeline/src/graph.rs#L835), [`core/dr-pipeline/src/graph.rs:966`](../../core/dr-pipeline/src/graph.rs#L966), [`core/dr-pipeline/src/operation.rs:559`](../../core/dr-pipeline/src/operation.rs#L559), [`core/dr-types/src/colour.rs:1`](../../core/dr-types/src/colour.rs#L1), [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`core/dr-types/src/settings.rs:963`](../../core/dr-types/src/settings.rs#L963), [`ui/dr-ui/src/develop/render.rs:1540`](../../ui/dr-ui/src/develop/render.rs#L1540), [`ui/dr-ui/src/settings_ui.rs:1`](../../ui/dr-ui/src/settings_ui.rs#L1) |
| FR-EXP-3 | [`core/dr-export/src/lib.rs:186`](../../core/dr-export/src/lib.rs#L186), [`core/dr-export/src/lib.rs:1`](../../core/dr-export/src/lib.rs#L1), [`core/dr-export/src/size.rs:136`](../../core/dr-export/src/size.rs#L136), [`core/dr-export/src/size.rs:1`](../../core/dr-export/src/size.rs#L1), [`core/dr-export/src/size.rs:25`](../../core/dr-export/src/size.rs#L25), [`core/dr-export/src/size.rs:84`](../../core/dr-export/src/size.rs#L84), [`core/dr-types/src/settings.rs:1008`](../../core/dr-types/src/settings.rs#L1008), [`core/dr-types/src/settings.rs:1016`](../../core/dr-types/src/settings.rs#L1016), [`core/dr-types/src/settings.rs:1032`](../../core/dr-types/src/settings.rs#L1032), [`core/dr-types/src/settings.rs:1101`](../../core/dr-types/src/settings.rs#L1101), [`core/dr-types/src/settings.rs:1129`](../../core/dr-types/src/settings.rs#L1129), [`core/dr-types/src/settings.rs:1140`](../../core/dr-types/src/settings.rs#L1140), [`core/dr-types/src/settings.rs:1146`](../../core/dr-types/src/settings.rs#L1146), [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/settings_ui.rs:1`](../../ui/dr-ui/src/settings_ui.rs#L1), [`ui/dr-ui/src/settings_ui.rs:292`](../../ui/dr-ui/src/settings_ui.rs#L292), [`ui/dr-ui/src/settings_ui.rs:305`](../../ui/dr-ui/src/settings_ui.rs#L305), [`ui/dr-ui/src/settings_ui.rs:324`](../../ui/dr-ui/src/settings_ui.rs#L324), [`ui/dr-ui/src/settings_ui.rs:809`](../../ui/dr-ui/src/settings_ui.rs#L809), [`ui/dr-ui/ui/export.slint:159`](../../ui/dr-ui/ui/export.slint#L159), [`ui/dr-ui/ui/export.slint:169`](../../ui/dr-ui/ui/export.slint#L169) |
@@ -104,7 +104,7 @@ _None._
| FR-EXP-7 | [`ui/dr-ui/src/activity.rs:83`](../../ui/dr-ui/src/activity.rs#L83), [`ui/dr-ui/src/develop_ui.rs:309`](../../ui/dr-ui/src/develop_ui.rs#L309), [`ui/dr-ui/src/export.rs:1024`](../../ui/dr-ui/src/export.rs#L1024), [`ui/dr-ui/src/export.rs:1`](../../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/lib.rs:287`](../../ui/dr-ui/src/lib.rs#L287), [`ui/dr-ui/src/lib.rs:640`](../../ui/dr-ui/src/lib.rs#L640), [`ui/dr-ui/src/lib.rs:686`](../../ui/dr-ui/src/lib.rs#L686), [`ui/dr-ui/src/lib.rs:714`](../../ui/dr-ui/src/lib.rs#L714), [`ui/dr-ui/src/library_ui/controller.rs:1022`](../../ui/dr-ui/src/library_ui/controller.rs#L1022), [`ui/dr-ui/src/library_ui/controller.rs:1034`](../../ui/dr-ui/src/library_ui/controller.rs#L1034), [`ui/dr-ui/src/library_ui/controller.rs:1046`](../../ui/dr-ui/src/library_ui/controller.rs#L1046), [`ui/dr-ui/src/library_ui/controller.rs:734`](../../ui/dr-ui/src/library_ui/controller.rs#L734), [`ui/dr-ui/src/library_ui/controller.rs:834`](../../ui/dr-ui/src/library_ui/controller.rs#L834), [`ui/dr-ui/src/library_ui/controller.rs:891`](../../ui/dr-ui/src/library_ui/controller.rs#L891), [`ui/dr-ui/src/library_ui/sync.rs:100`](../../ui/dr-ui/src/library_ui/sync.rs#L100), [`ui/dr-ui/src/settings_ui.rs:502`](../../ui/dr-ui/src/settings_ui.rs#L502), [`ui/dr-ui/ui/app.slint:1055`](../../ui/dr-ui/ui/app.slint#L1055), [`ui/dr-ui/ui/app.slint:1481`](../../ui/dr-ui/ui/app.slint#L1481), [`ui/dr-ui/ui/app.slint:2485`](../../ui/dr-ui/ui/app.slint#L2485), [`ui/dr-ui/ui/app.slint:3392`](../../ui/dr-ui/ui/app.slint#L3392), [`ui/dr-ui/ui/app.slint:652`](../../ui/dr-ui/ui/app.slint#L652), [`ui/dr-ui/ui/app.slint:669`](../../ui/dr-ui/ui/app.slint#L669), [`ui/dr-ui/ui/app.slint:905`](../../ui/dr-ui/ui/app.slint#L905), [`ui/dr-ui/ui/export.slint:1`](../../ui/dr-ui/ui/export.slint#L1), [`ui/dr-ui/ui/export.slint:384`](../../ui/dr-ui/ui/export.slint#L384), [`ui/dr-ui/ui/library.slint:2004`](../../ui/dr-ui/ui/library.slint#L2004), [`ui/dr-ui/ui/library.slint:2012`](../../ui/dr-ui/ui/library.slint#L2012), [`ui/dr-ui/ui/library.slint:3171`](../../ui/dr-ui/ui/library.slint#L3171), [`ui/dr-ui/ui/library.slint:5181`](../../ui/dr-ui/ui/library.slint#L5181) |
| FR-EXP-8 | [`core/dr-decode/src/lib.rs:372`](../../core/dr-decode/src/lib.rs#L372), [`core/dr-decode/src/lib.rs:396`](../../core/dr-decode/src/lib.rs#L396), [`core/dr-decode/src/lib.rs:410`](../../core/dr-decode/src/lib.rs#L410), [`core/dr-decode/src/lib.rs:77`](../../core/dr-decode/src/lib.rs#L77), [`core/dr-decode/src/lib.rs:85`](../../core/dr-decode/src/lib.rs#L85), [`core/dr-decode/src/lib.rs:88`](../../core/dr-decode/src/lib.rs#L88), [`core/dr-decode/src/locate.rs:1233`](../../core/dr-decode/src/locate.rs#L1233), [`core/dr-decode/src/locate.rs:1292`](../../core/dr-decode/src/locate.rs#L1292), [`core/dr-decode/src/locate.rs:359`](../../core/dr-decode/src/locate.rs#L359), [`core/dr-decode/src/locate.rs:556`](../../core/dr-decode/src/locate.rs#L556), [`core/dr-decode/src/locate.rs:640`](../../core/dr-decode/src/locate.rs#L640), [`core/dr-decode/src/locate.rs:653`](../../core/dr-decode/src/locate.rs#L653), [`core/dr-decode/src/locate.rs:736`](../../core/dr-decode/src/locate.rs#L736), [`core/dr-export/examples/export.rs:99`](../../core/dr-export/examples/export.rs#L99), [`core/dr-export/src/encode.rs:117`](../../core/dr-export/src/encode.rs#L117), [`core/dr-export/src/encode.rs:161`](../../core/dr-export/src/encode.rs#L161), [`core/dr-export/src/encode.rs:1`](../../core/dr-export/src/encode.rs#L1), [`core/dr-export/src/encode.rs:206`](../../core/dr-export/src/encode.rs#L206), [`core/dr-export/src/encode.rs:235`](../../core/dr-export/src/encode.rs#L235), [`core/dr-export/src/encode.rs:311`](../../core/dr-export/src/encode.rs#L311), [`core/dr-export/src/encode.rs:325`](../../core/dr-export/src/encode.rs#L325), [`core/dr-export/src/encode.rs:408`](../../core/dr-export/src/encode.rs#L408), [`core/dr-export/src/encode.rs:456`](../../core/dr-export/src/encode.rs#L456), [`core/dr-export/src/encode.rs:70`](../../core/dr-export/src/encode.rs#L70), [`core/dr-export/src/encode.rs:795`](../../core/dr-export/src/encode.rs#L795), [`core/dr-export/src/encode.rs:809`](../../core/dr-export/src/encode.rs#L809), [`core/dr-export/src/encode.rs:850`](../../core/dr-export/src/encode.rs#L850), [`core/dr-export/src/encode.rs:898`](../../core/dr-export/src/encode.rs#L898), [`core/dr-export/src/exif.rs:1`](../../core/dr-export/src/exif.rs#L1), [`core/dr-export/src/lib.rs:140`](../../core/dr-export/src/lib.rs#L140), [`core/dr-export/src/metadata.rs:1`](../../core/dr-export/src/metadata.rs#L1), [`core/dr-export/src/metadata.rs:41`](../../core/dr-export/src/metadata.rs#L41), [`core/dr-export/src/metadata.rs:74`](../../core/dr-export/src/metadata.rs#L74), [`core/dr-types/src/lib.rs:655`](../../core/dr-types/src/lib.rs#L655), [`core/dr-types/src/settings.rs:671`](../../core/dr-types/src/settings.rs#L671), [`ui/dr-ui/src/decoder_seam.rs:256`](../../ui/dr-ui/src/decoder_seam.rs#L256), [`ui/dr-ui/src/develop/session.rs:37`](../../ui/dr-ui/src/develop/session.rs#L37), [`ui/dr-ui/src/develop/session.rs:417`](../../ui/dr-ui/src/develop/session.rs#L417), [`ui/dr-ui/src/develop/session.rs:529`](../../ui/dr-ui/src/develop/session.rs#L529), [`ui/dr-ui/src/export.rs:475`](../../ui/dr-ui/src/export.rs#L475), [`ui/dr-ui/src/export.rs:646`](../../ui/dr-ui/src/export.rs#L646), [`ui/dr-ui/src/export.rs:692`](../../ui/dr-ui/src/export.rs#L692), [`ui/dr-ui/src/export.rs:720`](../../ui/dr-ui/src/export.rs#L720), [`ui/dr-ui/src/export.rs:757`](../../ui/dr-ui/src/export.rs#L757), [`ui/dr-ui/src/export.rs:858`](../../ui/dr-ui/src/export.rs#L858), [`ui/dr-ui/src/export.rs:876`](../../ui/dr-ui/src/export.rs#L876), [`ui/dr-ui/src/lib.rs:287`](../../ui/dr-ui/src/lib.rs#L287), [`ui/dr-ui/src/lib.rs:311`](../../ui/dr-ui/src/lib.rs#L311), [`ui/dr-ui/src/lib.rs:672`](../../ui/dr-ui/src/lib.rs#L672), [`ui/dr-ui/src/settings_ui.rs:1`](../../ui/dr-ui/src/settings_ui.rs#L1) |
| FR-EXP-9 | [`core/dr-decode/src/lib.rs:552`](../../core/dr-decode/src/lib.rs#L552), [`core/dr-export/src/lib.rs:132`](../../core/dr-export/src/lib.rs#L132), [`core/dr-export/src/lib.rs:1`](../../core/dr-export/src/lib.rs#L1), [`core/dr-gpu/src/adjust.rs:1400`](../../core/dr-gpu/src/adjust.rs#L1400), [`ui/dr-ui/examples/face_native.rs:1`](../../ui/dr-ui/examples/face_native.rs#L1), [`ui/dr-ui/src/decoder_seam.rs:256`](../../ui/dr-ui/src/decoder_seam.rs#L256), [`ui/dr-ui/src/develop/mask_ops.rs:1130`](../../ui/dr-ui/src/develop/mask_ops.rs#L1130), [`ui/dr-ui/src/develop/render.rs:586`](../../ui/dr-ui/src/develop/render.rs#L586), [`ui/dr-ui/src/develop/render.rs:624`](../../ui/dr-ui/src/develop/render.rs#L624), [`ui/dr-ui/src/lib.rs:640`](../../ui/dr-ui/src/lib.rs#L640), [`ui/dr-ui/src/library/sweep.rs:510`](../../ui/dr-ui/src/library/sweep.rs#L510), [`ui/dr-ui/tests/export_ignores_the_viewport.rs:1`](../../ui/dr-ui/tests/export_ignores_the_viewport.rs#L1) |
-| FR-INF-1 | [`ui/dr-ui/src/lib.rs:1436`](../../ui/dr-ui/src/lib.rs#L1436), [`ui/dr-ui/ui/settings.slint:821`](../../ui/dr-ui/ui/settings.slint#L821) |
+| FR-INF-1 | [`ui/dr-ui/src/lib.rs:1436`](../../ui/dr-ui/src/lib.rs#L1436), [`ui/dr-ui/ui/settings.slint:824`](../../ui/dr-ui/ui/settings.slint#L824) |
| FR-MRG-1 | [`core/dr-pano/src/align.rs:1`](../../core/dr-pano/src/align.rs#L1), [`core/dr-pano/src/lib.rs:1`](../../core/dr-pano/src/lib.rs#L1), [`ui/dr-ui/src/lib.rs:1844`](../../ui/dr-ui/src/lib.rs#L1844), [`ui/dr-ui/src/merge.rs:1`](../../ui/dr-ui/src/merge.rs#L1), [`ui/dr-ui/src/merge_ui.rs:1`](../../ui/dr-ui/src/merge_ui.rs#L1), [`ui/dr-ui/ui/app.slint:1486`](../../ui/dr-ui/ui/app.slint#L1486), [`ui/dr-ui/ui/app.slint:557`](../../ui/dr-ui/ui/app.slint#L557), [`ui/dr-ui/ui/library.slint:2017`](../../ui/dr-ui/ui/library.slint#L2017), [`ui/dr-ui/ui/library.slint:5138`](../../ui/dr-ui/ui/library.slint#L5138), [`ui/dr-ui/ui/merge.slint:1`](../../ui/dr-ui/ui/merge.slint#L1) |
| FR-MRG-10 | [`core/dr-gpu/src/merge.rs:1`](../../core/dr-gpu/src/merge.rs#L1), [`core/dr-gpu/src/shaders/merge.wgsl:1`](../../core/dr-gpu/src/shaders/merge.wgsl#L1), [`core/dr-pano/src/lib.rs:1`](../../core/dr-pano/src/lib.rs#L1) |
| FR-MRG-11 | [`core/dr-gpu/src/merge.rs:1`](../../core/dr-gpu/src/merge.rs#L1), [`core/dr-gpu/src/shaders/merge.wgsl:1`](../../core/dr-gpu/src/shaders/merge.wgsl#L1) |
@@ -120,15 +120,15 @@ _None._
| FR-NC-12 | [`core/dr-sync-folder/src/lib.rs:1`](../../core/dr-sync-folder/src/lib.rs#L1), [`core/dr-sync-nextcloud/src/lib.rs:1097`](../../core/dr-sync-nextcloud/src/lib.rs#L1097), [`core/dr-sync-nextcloud/src/lib.rs:40`](../../core/dr-sync-nextcloud/src/lib.rs#L40), [`core/dr-sync-nextcloud/src/provider.rs:1`](../../core/dr-sync-nextcloud/src/provider.rs#L1), [`core/dr-sync/src/account.rs:1`](../../core/dr-sync/src/account.rs#L1), [`core/dr-sync/src/account.rs:87`](../../core/dr-sync/src/account.rs#L87), [`core/dr-sync/src/lib.rs:218`](../../core/dr-sync/src/lib.rs#L218), [`core/dr-sync/src/lib.rs:51`](../../core/dr-sync/src/lib.rs#L51), [`core/dr-sync/src/provider.rs:120`](../../core/dr-sync/src/provider.rs#L120), [`core/dr-sync/src/provider.rs:1`](../../core/dr-sync/src/provider.rs#L1), [`core/dr-sync/src/provider.rs:53`](../../core/dr-sync/src/provider.rs#L53), [`core/dr-sync/src/reachability.rs:1`](../../core/dr-sync/src/reachability.rs#L1), [`ui/dr-ui/src/remote.rs:1`](../../ui/dr-ui/src/remote.rs#L1) |
| FR-NC-13 | [`core/dr-sync-folder/src/lib.rs:197`](../../core/dr-sync-folder/src/lib.rs#L197), [`core/dr-sync-folder/src/lib.rs:1`](../../core/dr-sync-folder/src/lib.rs#L1), [`core/dr-sync-folder/src/lib.rs:73`](../../core/dr-sync-folder/src/lib.rs#L73), [`core/dr-sync/src/provider.rs:120`](../../core/dr-sync/src/provider.rs#L120), [`ui/dr-ui/src/launch_ui.rs:349`](../../ui/dr-ui/src/launch_ui.rs#L349), [`ui/dr-ui/src/remote.rs:1`](../../ui/dr-ui/src/remote.rs#L1) |
| FR-NC-2 | [`core/dr-sync/src/account.rs:1`](../../core/dr-sync/src/account.rs#L1), [`core/dr-sync/src/account.rs:318`](../../core/dr-sync/src/account.rs#L318), [`core/dr-sync/src/account.rs:375`](../../core/dr-sync/src/account.rs#L375), [`core/dr-sync/src/account.rs:59`](../../core/dr-sync/src/account.rs#L59), [`platform/dr-plat/src/secrets.rs:82`](../../platform/dr-plat/src/secrets.rs#L82) |
-| FR-NC-3 | [`core/dr-decode/src/locate.rs:1`](../../core/dr-decode/src/locate.rs#L1), [`core/dr-decode/src/preview.rs:148`](../../core/dr-decode/src/preview.rs#L148), [`core/dr-sync/src/capability.rs:85`](../../core/dr-sync/src/capability.rs#L85), [`core/dr-thumbs/src/lib.rs:1`](../../core/dr-thumbs/src/lib.rs#L1), [`core/dr-types/src/place.rs:1`](../../core/dr-types/src/place.rs#L1), [`ui/dr-ui/src/decoder_seam.rs:215`](../../ui/dr-ui/src/decoder_seam.rs#L215), [`ui/dr-ui/src/library/mod.rs:1`](../../ui/dr-ui/src/library/mod.rs#L1), [`ui/dr-ui/src/library/sweep.rs:562`](../../ui/dr-ui/src/library/sweep.rs#L562), [`ui/dr-ui/src/library_ui/grid.rs:544`](../../ui/dr-ui/src/library_ui/grid.rs#L544), [`ui/dr-ui/src/library_ui/mod.rs:1`](../../ui/dr-ui/src/library_ui/mod.rs#L1), [`ui/dr-ui/src/library_ui/sync.rs:392`](../../ui/dr-ui/src/library_ui/sync.rs#L392), [`ui/dr-ui/ui/library.slint:776`](../../ui/dr-ui/ui/library.slint#L776), [`ui/dr-ui/ui/settings.slint:372`](../../ui/dr-ui/ui/settings.slint#L372), [`ui/dr-ui/ui/settings.slint:74`](../../ui/dr-ui/ui/settings.slint#L74) |
+| FR-NC-3 | [`core/dr-decode/src/locate.rs:1`](../../core/dr-decode/src/locate.rs#L1), [`core/dr-decode/src/preview.rs:148`](../../core/dr-decode/src/preview.rs#L148), [`core/dr-sync/src/capability.rs:85`](../../core/dr-sync/src/capability.rs#L85), [`core/dr-thumbs/src/lib.rs:1`](../../core/dr-thumbs/src/lib.rs#L1), [`core/dr-types/src/place.rs:1`](../../core/dr-types/src/place.rs#L1), [`ui/dr-ui/src/decoder_seam.rs:215`](../../ui/dr-ui/src/decoder_seam.rs#L215), [`ui/dr-ui/src/library/mod.rs:1`](../../ui/dr-ui/src/library/mod.rs#L1), [`ui/dr-ui/src/library/sweep.rs:562`](../../ui/dr-ui/src/library/sweep.rs#L562), [`ui/dr-ui/src/library_ui/grid.rs:544`](../../ui/dr-ui/src/library_ui/grid.rs#L544), [`ui/dr-ui/src/library_ui/mod.rs:1`](../../ui/dr-ui/src/library_ui/mod.rs#L1), [`ui/dr-ui/src/library_ui/sync.rs:392`](../../ui/dr-ui/src/library_ui/sync.rs#L392), [`ui/dr-ui/ui/library.slint:776`](../../ui/dr-ui/ui/library.slint#L776), [`ui/dr-ui/ui/settings.slint:375`](../../ui/dr-ui/ui/settings.slint#L375), [`ui/dr-ui/ui/settings.slint:74`](../../ui/dr-ui/ui/settings.slint#L74) |
| FR-NC-4 | [`core/dr-sync-folder/src/lib.rs:197`](../../core/dr-sync-folder/src/lib.rs#L197), [`core/dr-sync-nextcloud/src/propfind.rs:103`](../../core/dr-sync-nextcloud/src/propfind.rs#L103), [`core/dr-sync-nextcloud/src/propfind.rs:51`](../../core/dr-sync-nextcloud/src/propfind.rs#L51), [`core/dr-sync/src/capability.rs:6`](../../core/dr-sync/src/capability.rs#L6), [`core/dr-sync/src/lib.rs:218`](../../core/dr-sync/src/lib.rs#L218), [`core/dr-sync/src/scan.rs:129`](../../core/dr-sync/src/scan.rs#L129), [`ui/dr-ui/src/launch.rs:61`](../../ui/dr-ui/src/launch.rs#L61) |
| FR-NC-5 | [`core/dr-sync-nextcloud/src/propfind.rs:51`](../../core/dr-sync-nextcloud/src/propfind.rs#L51), [`ui/dr-ui/src/import.rs:504`](../../ui/dr-ui/src/import.rs#L504) |
| FR-NC-6 | [`ui/dr-ui/src/activity.rs:1`](../../ui/dr-ui/src/activity.rs#L1) |
-| FR-NC-6a | [`core/dr-catalog/src/cache.rs:1`](../../core/dr-catalog/src/cache.rs#L1), [`core/dr-catalog/src/cache.rs:225`](../../core/dr-catalog/src/cache.rs#L225), [`core/dr-catalog/src/schema.rs:1209`](../../core/dr-catalog/src/schema.rs#L1209), [`core/dr-catalog/src/schema.rs:1694`](../../core/dr-catalog/src/schema.rs#L1694), [`core/dr-sync-folder/src/borrow.rs:1`](../../core/dr-sync-folder/src/borrow.rs#L1), [`core/dr-types/src/selector.rs:1`](../../core/dr-types/src/selector.rs#L1), [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/collections_ui/rename_menu.rs:75`](../../ui/dr-ui/src/collections_ui/rename_menu.rs#L75), [`ui/dr-ui/src/collections_ui/tree_sync.rs:111`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L111), [`ui/dr-ui/src/collections_ui/tree_sync.rs:387`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L387), [`ui/dr-ui/src/collections_ui/tree_sync.rs:38`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L38), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:560`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L560), [`ui/dr-ui/src/lib.rs:1572`](../../ui/dr-ui/src/lib.rs#L1572), [`ui/dr-ui/src/lib.rs:2740`](../../ui/dr-ui/src/lib.rs#L2740), [`ui/dr-ui/src/lib.rs:2811`](../../ui/dr-ui/src/lib.rs#L2811), [`ui/dr-ui/src/lib.rs:3029`](../../ui/dr-ui/src/lib.rs#L3029), [`ui/dr-ui/src/lib.rs:3030`](../../ui/dr-ui/src/lib.rs#L3030), [`ui/dr-ui/src/lib.rs:3069`](../../ui/dr-ui/src/lib.rs#L3069), [`ui/dr-ui/src/library/thumbnails_fetch.rs:118`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L118), [`ui/dr-ui/src/library/thumbnails_fetch.rs:393`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L393), [`ui/dr-ui/src/library/thumbnails_fetch.rs:574`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L574), [`ui/dr-ui/src/library/thumbnails_fetch.rs:718`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L718), [`ui/dr-ui/src/library/thumbnails_fetch.rs:733`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L733), [`ui/dr-ui/src/library/thumbnails_fetch.rs:95`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L95), [`ui/dr-ui/src/library_ui/controller.rs:355`](../../ui/dr-ui/src/library_ui/controller.rs#L355), [`ui/dr-ui/src/library_ui/controller.rs:366`](../../ui/dr-ui/src/library_ui/controller.rs#L366), [`ui/dr-ui/src/library_ui/controller.rs:381`](../../ui/dr-ui/src/library_ui/controller.rs#L381), [`ui/dr-ui/src/library_ui/controller.rs:390`](../../ui/dr-ui/src/library_ui/controller.rs#L390), [`ui/dr-ui/src/library_ui/controller.rs:398`](../../ui/dr-ui/src/library_ui/controller.rs#L398), [`ui/dr-ui/src/library_ui/controller.rs:530`](../../ui/dr-ui/src/library_ui/controller.rs#L530), [`ui/dr-ui/src/library_ui/controller.rs:540`](../../ui/dr-ui/src/library_ui/controller.rs#L540), [`ui/dr-ui/src/library_ui/controller.rs:555`](../../ui/dr-ui/src/library_ui/controller.rs#L555), [`ui/dr-ui/src/library_ui/controller.rs:602`](../../ui/dr-ui/src/library_ui/controller.rs#L602), [`ui/dr-ui/src/library_ui/controller.rs:617`](../../ui/dr-ui/src/library_ui/controller.rs#L617), [`ui/dr-ui/src/library_ui/controller.rs:691`](../../ui/dr-ui/src/library_ui/controller.rs#L691), [`ui/dr-ui/src/library_ui/controller.rs:722`](../../ui/dr-ui/src/library_ui/controller.rs#L722), [`ui/dr-ui/src/library_ui/controller.rs:734`](../../ui/dr-ui/src/library_ui/controller.rs#L734), [`ui/dr-ui/src/library_ui/filter_bar.rs:480`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L480), [`ui/dr-ui/src/library_ui/filter_bar.rs:500`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L500), [`ui/dr-ui/src/library_ui/offline.rs:196`](../../ui/dr-ui/src/library_ui/offline.rs#L196), [`ui/dr-ui/src/library_ui/offline.rs:20`](../../ui/dr-ui/src/library_ui/offline.rs#L20), [`ui/dr-ui/src/library_ui/offline.rs:261`](../../ui/dr-ui/src/library_ui/offline.rs#L261), [`ui/dr-ui/src/library_ui/offline.rs:407`](../../ui/dr-ui/src/library_ui/offline.rs#L407), [`ui/dr-ui/src/library_ui/offline.rs:528`](../../ui/dr-ui/src/library_ui/offline.rs#L528), [`ui/dr-ui/src/library_ui/offline.rs:93`](../../ui/dr-ui/src/library_ui/offline.rs#L93), [`ui/dr-ui/src/library_ui/window.rs:331`](../../ui/dr-ui/src/library_ui/window.rs#L331), [`ui/dr-ui/src/settings_store.rs:1`](../../ui/dr-ui/src/settings_store.rs#L1), [`ui/dr-ui/src/settings_ui.rs:157`](../../ui/dr-ui/src/settings_ui.rs#L157), [`ui/dr-ui/src/settings_ui.rs:1`](../../ui/dr-ui/src/settings_ui.rs#L1), [`ui/dr-ui/src/settings_ui.rs:616`](../../ui/dr-ui/src/settings_ui.rs#L616), [`ui/dr-ui/ui/app.slint:1372`](../../ui/dr-ui/ui/app.slint#L1372), [`ui/dr-ui/ui/app.slint:3357`](../../ui/dr-ui/ui/app.slint#L3357), [`ui/dr-ui/ui/app.slint:452`](../../ui/dr-ui/ui/app.slint#L452), [`ui/dr-ui/ui/collections.slint:1124`](../../ui/dr-ui/ui/collections.slint#L1124), [`ui/dr-ui/ui/collections.slint:1135`](../../ui/dr-ui/ui/collections.slint#L1135), [`ui/dr-ui/ui/collections.slint:1214`](../../ui/dr-ui/ui/collections.slint#L1214), [`ui/dr-ui/ui/collections.slint:1315`](../../ui/dr-ui/ui/collections.slint#L1315), [`ui/dr-ui/ui/collections.slint:1323`](../../ui/dr-ui/ui/collections.slint#L1323), [`ui/dr-ui/ui/collections.slint:289`](../../ui/dr-ui/ui/collections.slint#L289), [`ui/dr-ui/ui/collections.slint:446`](../../ui/dr-ui/ui/collections.slint#L446), [`ui/dr-ui/ui/collections.slint:455`](../../ui/dr-ui/ui/collections.slint#L455), [`ui/dr-ui/ui/collections.slint:458`](../../ui/dr-ui/ui/collections.slint#L458), [`ui/dr-ui/ui/collections.slint:504`](../../ui/dr-ui/ui/collections.slint#L504), [`ui/dr-ui/ui/collections.slint:54`](../../ui/dr-ui/ui/collections.slint#L54), [`ui/dr-ui/ui/collections.slint:763`](../../ui/dr-ui/ui/collections.slint#L763), [`ui/dr-ui/ui/collections.slint:93`](../../ui/dr-ui/ui/collections.slint#L93), [`ui/dr-ui/ui/collections.slint:964`](../../ui/dr-ui/ui/collections.slint#L964), [`ui/dr-ui/ui/icons.slint:263`](../../ui/dr-ui/ui/icons.slint#L263), [`ui/dr-ui/ui/settings.slint:121`](../../ui/dr-ui/ui/settings.slint#L121), [`ui/dr-ui/ui/settings.slint:632`](../../ui/dr-ui/ui/settings.slint#L632) |
+| FR-NC-6a | [`core/dr-catalog/src/cache.rs:1`](../../core/dr-catalog/src/cache.rs#L1), [`core/dr-catalog/src/cache.rs:225`](../../core/dr-catalog/src/cache.rs#L225), [`core/dr-catalog/src/schema.rs:1209`](../../core/dr-catalog/src/schema.rs#L1209), [`core/dr-catalog/src/schema.rs:1694`](../../core/dr-catalog/src/schema.rs#L1694), [`core/dr-sync-folder/src/borrow.rs:1`](../../core/dr-sync-folder/src/borrow.rs#L1), [`core/dr-types/src/selector.rs:1`](../../core/dr-types/src/selector.rs#L1), [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/collections_ui/rename_menu.rs:75`](../../ui/dr-ui/src/collections_ui/rename_menu.rs#L75), [`ui/dr-ui/src/collections_ui/tree_sync.rs:111`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L111), [`ui/dr-ui/src/collections_ui/tree_sync.rs:387`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L387), [`ui/dr-ui/src/collections_ui/tree_sync.rs:38`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L38), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:560`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L560), [`ui/dr-ui/src/lib.rs:1572`](../../ui/dr-ui/src/lib.rs#L1572), [`ui/dr-ui/src/lib.rs:2740`](../../ui/dr-ui/src/lib.rs#L2740), [`ui/dr-ui/src/lib.rs:2811`](../../ui/dr-ui/src/lib.rs#L2811), [`ui/dr-ui/src/lib.rs:3029`](../../ui/dr-ui/src/lib.rs#L3029), [`ui/dr-ui/src/lib.rs:3030`](../../ui/dr-ui/src/lib.rs#L3030), [`ui/dr-ui/src/lib.rs:3069`](../../ui/dr-ui/src/lib.rs#L3069), [`ui/dr-ui/src/library/thumbnails_fetch.rs:118`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L118), [`ui/dr-ui/src/library/thumbnails_fetch.rs:393`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L393), [`ui/dr-ui/src/library/thumbnails_fetch.rs:574`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L574), [`ui/dr-ui/src/library/thumbnails_fetch.rs:718`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L718), [`ui/dr-ui/src/library/thumbnails_fetch.rs:733`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L733), [`ui/dr-ui/src/library/thumbnails_fetch.rs:95`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L95), [`ui/dr-ui/src/library_ui/controller.rs:355`](../../ui/dr-ui/src/library_ui/controller.rs#L355), [`ui/dr-ui/src/library_ui/controller.rs:366`](../../ui/dr-ui/src/library_ui/controller.rs#L366), [`ui/dr-ui/src/library_ui/controller.rs:381`](../../ui/dr-ui/src/library_ui/controller.rs#L381), [`ui/dr-ui/src/library_ui/controller.rs:390`](../../ui/dr-ui/src/library_ui/controller.rs#L390), [`ui/dr-ui/src/library_ui/controller.rs:398`](../../ui/dr-ui/src/library_ui/controller.rs#L398), [`ui/dr-ui/src/library_ui/controller.rs:530`](../../ui/dr-ui/src/library_ui/controller.rs#L530), [`ui/dr-ui/src/library_ui/controller.rs:540`](../../ui/dr-ui/src/library_ui/controller.rs#L540), [`ui/dr-ui/src/library_ui/controller.rs:555`](../../ui/dr-ui/src/library_ui/controller.rs#L555), [`ui/dr-ui/src/library_ui/controller.rs:602`](../../ui/dr-ui/src/library_ui/controller.rs#L602), [`ui/dr-ui/src/library_ui/controller.rs:617`](../../ui/dr-ui/src/library_ui/controller.rs#L617), [`ui/dr-ui/src/library_ui/controller.rs:691`](../../ui/dr-ui/src/library_ui/controller.rs#L691), [`ui/dr-ui/src/library_ui/controller.rs:722`](../../ui/dr-ui/src/library_ui/controller.rs#L722), [`ui/dr-ui/src/library_ui/controller.rs:734`](../../ui/dr-ui/src/library_ui/controller.rs#L734), [`ui/dr-ui/src/library_ui/filter_bar.rs:480`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L480), [`ui/dr-ui/src/library_ui/filter_bar.rs:500`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L500), [`ui/dr-ui/src/library_ui/offline.rs:196`](../../ui/dr-ui/src/library_ui/offline.rs#L196), [`ui/dr-ui/src/library_ui/offline.rs:20`](../../ui/dr-ui/src/library_ui/offline.rs#L20), [`ui/dr-ui/src/library_ui/offline.rs:261`](../../ui/dr-ui/src/library_ui/offline.rs#L261), [`ui/dr-ui/src/library_ui/offline.rs:407`](../../ui/dr-ui/src/library_ui/offline.rs#L407), [`ui/dr-ui/src/library_ui/offline.rs:528`](../../ui/dr-ui/src/library_ui/offline.rs#L528), [`ui/dr-ui/src/library_ui/offline.rs:93`](../../ui/dr-ui/src/library_ui/offline.rs#L93), [`ui/dr-ui/src/library_ui/window.rs:331`](../../ui/dr-ui/src/library_ui/window.rs#L331), [`ui/dr-ui/src/settings_store.rs:1`](../../ui/dr-ui/src/settings_store.rs#L1), [`ui/dr-ui/src/settings_ui.rs:157`](../../ui/dr-ui/src/settings_ui.rs#L157), [`ui/dr-ui/src/settings_ui.rs:1`](../../ui/dr-ui/src/settings_ui.rs#L1), [`ui/dr-ui/src/settings_ui.rs:616`](../../ui/dr-ui/src/settings_ui.rs#L616), [`ui/dr-ui/ui/app.slint:1372`](../../ui/dr-ui/ui/app.slint#L1372), [`ui/dr-ui/ui/app.slint:3357`](../../ui/dr-ui/ui/app.slint#L3357), [`ui/dr-ui/ui/app.slint:452`](../../ui/dr-ui/ui/app.slint#L452), [`ui/dr-ui/ui/collections.slint:1124`](../../ui/dr-ui/ui/collections.slint#L1124), [`ui/dr-ui/ui/collections.slint:1135`](../../ui/dr-ui/ui/collections.slint#L1135), [`ui/dr-ui/ui/collections.slint:1214`](../../ui/dr-ui/ui/collections.slint#L1214), [`ui/dr-ui/ui/collections.slint:1315`](../../ui/dr-ui/ui/collections.slint#L1315), [`ui/dr-ui/ui/collections.slint:1323`](../../ui/dr-ui/ui/collections.slint#L1323), [`ui/dr-ui/ui/collections.slint:289`](../../ui/dr-ui/ui/collections.slint#L289), [`ui/dr-ui/ui/collections.slint:446`](../../ui/dr-ui/ui/collections.slint#L446), [`ui/dr-ui/ui/collections.slint:455`](../../ui/dr-ui/ui/collections.slint#L455), [`ui/dr-ui/ui/collections.slint:458`](../../ui/dr-ui/ui/collections.slint#L458), [`ui/dr-ui/ui/collections.slint:504`](../../ui/dr-ui/ui/collections.slint#L504), [`ui/dr-ui/ui/collections.slint:54`](../../ui/dr-ui/ui/collections.slint#L54), [`ui/dr-ui/ui/collections.slint:763`](../../ui/dr-ui/ui/collections.slint#L763), [`ui/dr-ui/ui/collections.slint:93`](../../ui/dr-ui/ui/collections.slint#L93), [`ui/dr-ui/ui/collections.slint:964`](../../ui/dr-ui/ui/collections.slint#L964), [`ui/dr-ui/ui/icons.slint:263`](../../ui/dr-ui/ui/icons.slint#L263), [`ui/dr-ui/ui/settings.slint:121`](../../ui/dr-ui/ui/settings.slint#L121), [`ui/dr-ui/ui/settings.slint:635`](../../ui/dr-ui/ui/settings.slint#L635) |
| FR-NC-6b | [`ui/dr-ui/src/library_ui/offline.rs:261`](../../ui/dr-ui/src/library_ui/offline.rs#L261), [`ui/dr-ui/src/memory.rs:1`](../../ui/dr-ui/src/memory.rs#L1) |
| FR-NC-6c | [`core/dr-catalog/src/cache.rs:225`](../../core/dr-catalog/src/cache.rs#L225), [`core/dr-sync-folder/src/borrow.rs:1`](../../core/dr-sync-folder/src/borrow.rs#L1), [`core/dr-sync-folder/src/lib.rs:197`](../../core/dr-sync-folder/src/lib.rs#L197), [`core/dr-sync-folder/src/lib.rs:73`](../../core/dr-sync-folder/src/lib.rs#L73), [`core/dr-sync-folder/src/lib.rs:818`](../../core/dr-sync-folder/src/lib.rs#L818), [`core/dr-sync-folder/src/lib.rs:857`](../../core/dr-sync-folder/src/lib.rs#L857), [`core/dr-sync-folder/src/vfs.rs:1`](../../core/dr-sync-folder/src/vfs.rs#L1), [`core/dr-sync-nextcloud/src/desktop_client.rs:172`](../../core/dr-sync-nextcloud/src/desktop_client.rs#L172), [`core/dr-sync-nextcloud/src/desktop_client.rs:35`](../../core/dr-sync-nextcloud/src/desktop_client.rs#L35), [`core/dr-sync/src/capability.rs:41`](../../core/dr-sync/src/capability.rs#L41), [`core/dr-sync/src/error.rs:39`](../../core/dr-sync/src/error.rs#L39), [`core/dr-sync/src/lib.rs:158`](../../core/dr-sync/src/lib.rs#L158), [`core/dr-sync/src/types.rs:101`](../../core/dr-sync/src/types.rs#L101), [`core/dr-types/src/lib.rs:122`](../../core/dr-types/src/lib.rs#L122), [`core/dr-types/src/lib.rs:204`](../../core/dr-types/src/lib.rs#L204), [`ui/dr-ui/src/activity.rs:1`](../../ui/dr-ui/src/activity.rs#L1), [`ui/dr-ui/src/collections_ui/tree_sync.rs:111`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L111), [`ui/dr-ui/src/collections_ui/tree_sync.rs:387`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L387), [`ui/dr-ui/src/collections_ui/tree_sync.rs:38`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L38), [`ui/dr-ui/src/derived_sync.rs:1053`](../../ui/dr-ui/src/derived_sync.rs#L1053), [`ui/dr-ui/src/derived_sync.rs:652`](../../ui/dr-ui/src/derived_sync.rs#L652), [`ui/dr-ui/src/library/sidecar.rs:536`](../../ui/dr-ui/src/library/sidecar.rs#L536), [`ui/dr-ui/src/library/sweep.rs:685`](../../ui/dr-ui/src/library/sweep.rs#L685), [`ui/dr-ui/src/library/thumbnails_fetch.rs:215`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L215), [`ui/dr-ui/src/library/thumbnails_fetch.rs:305`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L305), [`ui/dr-ui/src/library_ui/offline.rs:20`](../../ui/dr-ui/src/library_ui/offline.rs#L20), [`ui/dr-ui/src/library_ui/offline.rs:310`](../../ui/dr-ui/src/library_ui/offline.rs#L310), [`ui/dr-ui/src/library_ui/offline.rs:93`](../../ui/dr-ui/src/library_ui/offline.rs#L93), [`ui/dr-ui/src/remote.rs:40`](../../ui/dr-ui/src/remote.rs#L40), [`ui/dr-ui/src/repairs.rs:1149`](../../ui/dr-ui/src/repairs.rs#L1149), [`ui/dr-ui/ui/collections.slint:289`](../../ui/dr-ui/ui/collections.slint#L289), [`ui/dr-ui/ui/collections.slint:964`](../../ui/dr-ui/ui/collections.slint#L964), [`ui/dr-ui/ui/icons.slint:263`](../../ui/dr-ui/ui/icons.slint#L263) |
| FR-NC-6d | [`core/dr-sync-folder/src/borrow.rs:1`](../../core/dr-sync-folder/src/borrow.rs#L1), [`core/dr-sync-folder/src/lib.rs:1`](../../core/dr-sync-folder/src/lib.rs#L1), [`core/dr-sync-folder/src/vfs.rs:1`](../../core/dr-sync-folder/src/vfs.rs#L1) |
-| FR-NC-7 | [`core/dr-catalog/src/face_shard.rs:1`](../../core/dr-catalog/src/face_shard.rs#L1), [`core/dr-sync-nextcloud/src/lib.rs:120`](../../core/dr-sync-nextcloud/src/lib.rs#L120), [`ui/dr-ui/src/derived_sync.rs:1`](../../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/library/sweep.rs:562`](../../ui/dr-ui/src/library/sweep.rs#L562), [`ui/dr-ui/src/library_ui/sync.rs:392`](../../ui/dr-ui/src/library_ui/sync.rs#L392), [`ui/dr-ui/ui/settings.slint:372`](../../ui/dr-ui/ui/settings.slint#L372) |
+| FR-NC-7 | [`core/dr-catalog/src/face_shard.rs:1`](../../core/dr-catalog/src/face_shard.rs#L1), [`core/dr-sync-nextcloud/src/lib.rs:120`](../../core/dr-sync-nextcloud/src/lib.rs#L120), [`ui/dr-ui/src/derived_sync.rs:1`](../../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/library/sweep.rs:562`](../../ui/dr-ui/src/library/sweep.rs#L562), [`ui/dr-ui/src/library_ui/sync.rs:392`](../../ui/dr-ui/src/library_ui/sync.rs#L392), [`ui/dr-ui/ui/settings.slint:375`](../../ui/dr-ui/ui/settings.slint#L375) |
| FR-NC-7a | [`core/dr-ingest/src/layout.rs:1`](../../core/dr-ingest/src/layout.rs#L1), [`core/dr-sync/src/upload.rs:1`](../../core/dr-sync/src/upload.rs#L1), [`core/dr-sync/src/upload.rs:40`](../../core/dr-sync/src/upload.rs#L40), [`core/dr-types/src/settings.rs:377`](../../core/dr-types/src/settings.rs#L377), [`ui/dr-ui/src/import.rs:100`](../../ui/dr-ui/src/import.rs#L100), [`ui/dr-ui/src/import.rs:1`](../../ui/dr-ui/src/import.rs#L1), [`ui/dr-ui/src/import_ui.rs:1`](../../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1790`](../../ui/dr-ui/src/lib.rs#L1790), [`ui/dr-ui/ui/import.slint:5`](../../ui/dr-ui/ui/import.slint#L5) |
| FR-NC-7b | [`core/dr-ingest/src/lib.rs:733`](../../core/dr-ingest/src/lib.rs#L733), [`core/dr-sync/src/upload.rs:1`](../../core/dr-sync/src/upload.rs#L1), [`ui/dr-ui/src/import.rs:100`](../../ui/dr-ui/src/import.rs#L100), [`ui/dr-ui/src/import.rs:125`](../../ui/dr-ui/src/import.rs#L125), [`ui/dr-ui/src/import.rs:346`](../../ui/dr-ui/src/import.rs#L346), [`ui/dr-ui/src/import.rs:600`](../../ui/dr-ui/src/import.rs#L600), [`ui/dr-ui/src/import_ui.rs:1`](../../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1790`](../../ui/dr-ui/src/lib.rs#L1790) |
| FR-NC-8 | [`core/dr-catalog/src/rating.rs:1086`](../../core/dr-catalog/src/rating.rs#L1086), [`core/dr-catalog/src/rating.rs:210`](../../core/dr-catalog/src/rating.rs#L210), [`core/dr-catalog/src/rating.rs:72`](../../core/dr-catalog/src/rating.rs#L72), [`core/dr-catalog/src/schema.rs:327`](../../core/dr-catalog/src/schema.rs#L327), [`core/dr-pipeline/src/sidecar.rs:140`](../../core/dr-pipeline/src/sidecar.rs#L140), [`core/dr-pipeline/src/sidecar.rs:3064`](../../core/dr-pipeline/src/sidecar.rs#L3064), [`core/dr-pipeline/src/sidecar.rs:679`](../../core/dr-pipeline/src/sidecar.rs#L679), [`core/dr-pipeline/src/sidecar.rs:754`](../../core/dr-pipeline/src/sidecar.rs#L754), [`core/dr-pipeline/src/sidecar.rs:99`](../../core/dr-pipeline/src/sidecar.rs#L99), [`ui/dr-ui/src/lib.rs:2710`](../../ui/dr-ui/src/lib.rs#L2710), [`ui/dr-ui/src/library/sidecar.rs:11`](../../ui/dr-ui/src/library/sidecar.rs#L11), [`ui/dr-ui/src/library/sidecar.rs:271`](../../ui/dr-ui/src/library/sidecar.rs#L271), [`ui/dr-ui/src/library/sidecar.rs:578`](../../ui/dr-ui/src/library/sidecar.rs#L578), [`ui/dr-ui/src/library/thumbnails_fetch.rs:504`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L504), [`ui/dr-ui/src/library_ui/controller.rs:643`](../../ui/dr-ui/src/library_ui/controller.rs#L643), [`ui/dr-ui/src/presets.rs:288`](../../ui/dr-ui/src/presets.rs#L288), [`ui/dr-ui/src/presets.rs:336`](../../ui/dr-ui/src/presets.rs#L336) |
@@ -148,13 +148,13 @@ _None._
| FR-RAW-3 | [`core/dr-decode/src/lib.rs:161`](../../core/dr-decode/src/lib.rs#L161), [`core/dr-decode/src/lib.rs:552`](../../core/dr-decode/src/lib.rs#L552), [`core/dr-decode/src/locate.rs:1435`](../../core/dr-decode/src/locate.rs#L1435) |
| FR-RAW-4 | [`core/dr-decode/src/error.rs:1`](../../core/dr-decode/src/error.rs#L1), [`core/dr-decode/src/error.rs:30`](../../core/dr-decode/src/error.rs#L30), [`ui/dr-ui/src/lib.rs:287`](../../ui/dr-ui/src/lib.rs#L287) |
| FR-RAW-5 | [`core/dr-decode/src/lib.rs:189`](../../core/dr-decode/src/lib.rs#L189), [`core/dr-gpu/src/demosaic.rs:34`](../../core/dr-gpu/src/demosaic.rs#L34), [`core/dr-gpu/src/demosaic.rs:758`](../../core/dr-gpu/src/demosaic.rs#L758), [`core/dr-gpu/src/demosaic.rs:837`](../../core/dr-gpu/src/demosaic.rs#L837), [`core/dr-gpu/src/demosaic.rs:961`](../../core/dr-gpu/src/demosaic.rs#L961) |
-| FR-UI-1 | [`core/dr-types/src/settings.rs:1377`](../../core/dr-types/src/settings.rs#L1377), [`core/dr-types/src/settings.rs:492`](../../core/dr-types/src/settings.rs#L492), [`core/dr-types/src/settings.rs:512`](../../core/dr-types/src/settings.rs#L512), [`ui/dr-ui/src/develop_ui.rs:204`](../../ui/dr-ui/src/develop_ui.rs#L204), [`ui/dr-ui/src/lib.rs:118`](../../ui/dr-ui/src/lib.rs#L118), [`ui/dr-ui/src/lib.rs:133`](../../ui/dr-ui/src/lib.rs#L133), [`ui/dr-ui/src/lib.rs:155`](../../ui/dr-ui/src/lib.rs#L155), [`ui/dr-ui/src/lib.rs:3220`](../../ui/dr-ui/src/lib.rs#L3220), [`ui/dr-ui/src/lib.rs:3239`](../../ui/dr-ui/src/lib.rs#L3239), [`ui/dr-ui/src/lib.rs:3266`](../../ui/dr-ui/src/lib.rs#L3266), [`ui/dr-ui/src/lib.rs:3317`](../../ui/dr-ui/src/lib.rs#L3317), [`ui/dr-ui/src/lib.rs:3350`](../../ui/dr-ui/src/lib.rs#L3350), [`ui/dr-ui/src/library_ui/grid.rs:232`](../../ui/dr-ui/src/library_ui/grid.rs#L232), [`ui/dr-ui/src/masks_ui.rs:1608`](../../ui/dr-ui/src/masks_ui.rs#L1608), [`ui/dr-ui/src/settings_ui.rs:179`](../../ui/dr-ui/src/settings_ui.rs#L179), [`ui/dr-ui/ui/adjust.slint:1000`](../../ui/dr-ui/ui/adjust.slint#L1000), [`ui/dr-ui/ui/app.slint:3031`](../../ui/dr-ui/ui/app.slint#L3031), [`ui/dr-ui/ui/app.slint:631`](../../ui/dr-ui/ui/app.slint#L631), [`ui/dr-ui/ui/app.slint:776`](../../ui/dr-ui/ui/app.slint#L776), [`ui/dr-ui/ui/identity.slint:249`](../../ui/dr-ui/ui/identity.slint#L249), [`ui/dr-ui/ui/library.slint:1442`](../../ui/dr-ui/ui/library.slint#L1442), [`ui/dr-ui/ui/settings.slint:129`](../../ui/dr-ui/ui/settings.slint#L129), [`ui/dr-ui/ui/settings.slint:657`](../../ui/dr-ui/ui/settings.slint#L657), [`ui/dr-ui/ui/toolrail.slint:156`](../../ui/dr-ui/ui/toolrail.slint#L156), [`ui/dr-ui/ui/toolrail.slint:89`](../../ui/dr-ui/ui/toolrail.slint#L89), [`ui/dr-ui/ui/widgets.slint:1060`](../../ui/dr-ui/ui/widgets.slint#L1060) |
+| FR-UI-1 | [`core/dr-types/src/settings.rs:1377`](../../core/dr-types/src/settings.rs#L1377), [`core/dr-types/src/settings.rs:492`](../../core/dr-types/src/settings.rs#L492), [`core/dr-types/src/settings.rs:512`](../../core/dr-types/src/settings.rs#L512), [`ui/dr-ui/src/develop_ui.rs:204`](../../ui/dr-ui/src/develop_ui.rs#L204), [`ui/dr-ui/src/lib.rs:118`](../../ui/dr-ui/src/lib.rs#L118), [`ui/dr-ui/src/lib.rs:133`](../../ui/dr-ui/src/lib.rs#L133), [`ui/dr-ui/src/lib.rs:155`](../../ui/dr-ui/src/lib.rs#L155), [`ui/dr-ui/src/lib.rs:3220`](../../ui/dr-ui/src/lib.rs#L3220), [`ui/dr-ui/src/lib.rs:3239`](../../ui/dr-ui/src/lib.rs#L3239), [`ui/dr-ui/src/lib.rs:3266`](../../ui/dr-ui/src/lib.rs#L3266), [`ui/dr-ui/src/lib.rs:3317`](../../ui/dr-ui/src/lib.rs#L3317), [`ui/dr-ui/src/lib.rs:3350`](../../ui/dr-ui/src/lib.rs#L3350), [`ui/dr-ui/src/library_ui/grid.rs:232`](../../ui/dr-ui/src/library_ui/grid.rs#L232), [`ui/dr-ui/src/masks_ui.rs:1608`](../../ui/dr-ui/src/masks_ui.rs#L1608), [`ui/dr-ui/src/settings_ui.rs:179`](../../ui/dr-ui/src/settings_ui.rs#L179), [`ui/dr-ui/ui/adjust.slint:1000`](../../ui/dr-ui/ui/adjust.slint#L1000), [`ui/dr-ui/ui/app.slint:3031`](../../ui/dr-ui/ui/app.slint#L3031), [`ui/dr-ui/ui/app.slint:631`](../../ui/dr-ui/ui/app.slint#L631), [`ui/dr-ui/ui/app.slint:776`](../../ui/dr-ui/ui/app.slint#L776), [`ui/dr-ui/ui/identity.slint:249`](../../ui/dr-ui/ui/identity.slint#L249), [`ui/dr-ui/ui/library.slint:1442`](../../ui/dr-ui/ui/library.slint#L1442), [`ui/dr-ui/ui/settings.slint:129`](../../ui/dr-ui/ui/settings.slint#L129), [`ui/dr-ui/ui/settings.slint:660`](../../ui/dr-ui/ui/settings.slint#L660), [`ui/dr-ui/ui/toolrail.slint:156`](../../ui/dr-ui/ui/toolrail.slint#L156), [`ui/dr-ui/ui/toolrail.slint:89`](../../ui/dr-ui/ui/toolrail.slint#L89), [`ui/dr-ui/ui/widgets.slint:1060`](../../ui/dr-ui/ui/widgets.slint#L1060) |
| FR-UI-2 | [`ui/dr-ui/src/collections_ui/controller.rs:45`](../../ui/dr-ui/src/collections_ui/controller.rs#L45), [`ui/dr-ui/src/collections_ui/controller.rs:83`](../../ui/dr-ui/src/collections_ui/controller.rs#L83), [`ui/dr-ui/src/collections_ui/drag.rs:246`](../../ui/dr-ui/src/collections_ui/drag.rs#L246), [`ui/dr-ui/src/collections_ui/drag.rs:256`](../../ui/dr-ui/src/collections_ui/drag.rs#L256), [`ui/dr-ui/src/collections_ui/press.rs:453`](../../ui/dr-ui/src/collections_ui/press.rs#L453), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:121`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L121), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:138`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L138), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:415`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L415), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:287`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L287), [`ui/dr-ui/src/gestures.rs:1`](../../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:118`](../../ui/dr-ui/src/lib.rs#L118), [`ui/dr-ui/src/library_ui/filter_bar.rs:351`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L351), [`ui/dr-ui/src/library_ui/window.rs:981`](../../ui/dr-ui/src/library_ui/window.rs#L981), [`ui/dr-ui/ui/app.slint:134`](../../ui/dr-ui/ui/app.slint#L134), [`ui/dr-ui/ui/app.slint:3427`](../../ui/dr-ui/ui/app.slint#L3427), [`ui/dr-ui/ui/app.slint:760`](../../ui/dr-ui/ui/app.slint#L760), [`ui/dr-ui/ui/collections.slint:1340`](../../ui/dr-ui/ui/collections.slint#L1340), [`ui/dr-ui/ui/controls.slint:626`](../../ui/dr-ui/ui/controls.slint#L626), [`ui/dr-ui/ui/gestures.slint:1`](../../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1329`](../../ui/dr-ui/ui/library.slint#L1329), [`ui/dr-ui/ui/library.slint:1362`](../../ui/dr-ui/ui/library.slint#L1362), [`ui/dr-ui/ui/library.slint:1686`](../../ui/dr-ui/ui/library.slint#L1686), [`ui/dr-ui/ui/library.slint:1693`](../../ui/dr-ui/ui/library.slint#L1693), [`ui/dr-ui/ui/library.slint:1794`](../../ui/dr-ui/ui/library.slint#L1794), [`ui/dr-ui/ui/library.slint:3129`](../../ui/dr-ui/ui/library.slint#L3129), [`ui/dr-ui/ui/library.slint:567`](../../ui/dr-ui/ui/library.slint#L567), [`ui/dr-ui/ui/presets.slint:19`](../../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/settings.slint:143`](../../ui/dr-ui/ui/settings.slint#L143) |
| FR-UI-3 | [`ui/dr-ui/src/collections_ui/controller.rs:138`](../../ui/dr-ui/src/collections_ui/controller.rs#L138), [`ui/dr-ui/src/collections_ui/controller.rs:343`](../../ui/dr-ui/src/collections_ui/controller.rs#L343), [`ui/dr-ui/src/collections_ui/controller.rs:356`](../../ui/dr-ui/src/collections_ui/controller.rs#L356), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:287`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L287), [`ui/dr-ui/src/develop/masks.rs:361`](../../ui/dr-ui/src/develop/masks.rs#L361), [`ui/dr-ui/src/develop/repairs.rs:49`](../../ui/dr-ui/src/develop/repairs.rs#L49), [`ui/dr-ui/src/library_ui/grid.rs:218`](../../ui/dr-ui/src/library_ui/grid.rs#L218), [`ui/dr-ui/src/masks_ui.rs:1700`](../../ui/dr-ui/src/masks_ui.rs#L1700), [`ui/dr-ui/src/masks_ui.rs:1722`](../../ui/dr-ui/src/masks_ui.rs#L1722), [`ui/dr-ui/src/masks_ui.rs:339`](../../ui/dr-ui/src/masks_ui.rs#L339), [`ui/dr-ui/src/spots_ui.rs:19`](../../ui/dr-ui/src/spots_ui.rs#L19), [`ui/dr-ui/ui/app.slint:2235`](../../ui/dr-ui/ui/app.slint#L2235), [`ui/dr-ui/ui/collections.slint:1214`](../../ui/dr-ui/ui/collections.slint#L1214), [`ui/dr-ui/ui/collections.slint:4`](../../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:77`](../../ui/dr-ui/ui/collections.slint#L77), [`ui/dr-ui/ui/collections.slint:964`](../../ui/dr-ui/ui/collections.slint#L964), [`ui/dr-ui/ui/masks.slint:1246`](../../ui/dr-ui/ui/masks.slint#L1246), [`ui/dr-ui/ui/widgets.slint:72`](../../ui/dr-ui/ui/widgets.slint#L72) |
-| FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../../tools/traceability/src/gestures.rs#L1), [`tools/traceability/src/keymap.rs:1`](../../tools/traceability/src/keymap.rs#L1), [`ui/dr-ui/src/collections_ui/controller.rs:138`](../../ui/dr-ui/src/collections_ui/controller.rs#L138), [`ui/dr-ui/src/collections_ui/controller.rs:343`](../../ui/dr-ui/src/collections_ui/controller.rs#L343), [`ui/dr-ui/src/collections_ui/controller.rs:356`](../../ui/dr-ui/src/collections_ui/controller.rs#L356), [`ui/dr-ui/src/collections_ui/controller.rs:45`](../../ui/dr-ui/src/collections_ui/controller.rs#L45), [`ui/dr-ui/src/collections_ui/controller.rs:46`](../../ui/dr-ui/src/collections_ui/controller.rs#L46), [`ui/dr-ui/src/collections_ui/controller.rs:55`](../../ui/dr-ui/src/collections_ui/controller.rs#L55), [`ui/dr-ui/src/collections_ui/controller.rs:83`](../../ui/dr-ui/src/collections_ui/controller.rs#L83), [`ui/dr-ui/src/collections_ui/drag.rs:246`](../../ui/dr-ui/src/collections_ui/drag.rs#L246), [`ui/dr-ui/src/collections_ui/drag.rs:256`](../../ui/dr-ui/src/collections_ui/drag.rs#L256), [`ui/dr-ui/src/collections_ui/press.rs:258`](../../ui/dr-ui/src/collections_ui/press.rs#L258), [`ui/dr-ui/src/collections_ui/press.rs:278`](../../ui/dr-ui/src/collections_ui/press.rs#L278), [`ui/dr-ui/src/collections_ui/press.rs:453`](../../ui/dr-ui/src/collections_ui/press.rs#L453), [`ui/dr-ui/src/collections_ui/press.rs:490`](../../ui/dr-ui/src/collections_ui/press.rs#L490), [`ui/dr-ui/src/collections_ui/press.rs:54`](../../ui/dr-ui/src/collections_ui/press.rs#L54), [`ui/dr-ui/src/collections_ui/tree_sync.rs:339`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L339), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:121`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L121), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:138`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L138), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:264`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L264), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:415`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L415), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:444`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L444), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:577`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L577), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:287`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L287), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:344`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L344), [`ui/dr-ui/src/develop/framing.rs:257`](../../ui/dr-ui/src/develop/framing.rs#L257), [`ui/dr-ui/src/develop/framing.rs:594`](../../ui/dr-ui/src/develop/framing.rs#L594), [`ui/dr-ui/src/develop/framing.rs:619`](../../ui/dr-ui/src/develop/framing.rs#L619), [`ui/dr-ui/src/develop/framing.rs:630`](../../ui/dr-ui/src/develop/framing.rs#L630), [`ui/dr-ui/src/develop/framing.rs:644`](../../ui/dr-ui/src/develop/framing.rs#L644), [`ui/dr-ui/src/develop/framing.rs:818`](../../ui/dr-ui/src/develop/framing.rs#L818), [`ui/dr-ui/src/develop/framing.rs:849`](../../ui/dr-ui/src/develop/framing.rs#L849), [`ui/dr-ui/src/develop/framing.rs:870`](../../ui/dr-ui/src/develop/framing.rs#L870), [`ui/dr-ui/src/develop/framing.rs:995`](../../ui/dr-ui/src/develop/framing.rs#L995), [`ui/dr-ui/src/develop/render.rs:1065`](../../ui/dr-ui/src/develop/render.rs#L1065), [`ui/dr-ui/src/develop/render.rs:1090`](../../ui/dr-ui/src/develop/render.rs#L1090), [`ui/dr-ui/src/develop/render.rs:1113`](../../ui/dr-ui/src/develop/render.rs#L1113), [`ui/dr-ui/src/develop/render.rs:1152`](../../ui/dr-ui/src/develop/render.rs#L1152), [`ui/dr-ui/src/develop/render.rs:47`](../../ui/dr-ui/src/develop/render.rs#L47), [`ui/dr-ui/src/develop/render.rs:66`](../../ui/dr-ui/src/develop/render.rs#L66), [`ui/dr-ui/src/develop/render.rs:79`](../../ui/dr-ui/src/develop/render.rs#L79), [`ui/dr-ui/src/develop_ui.rs:852`](../../ui/dr-ui/src/develop_ui.rs#L852), [`ui/dr-ui/src/duplicates_ui.rs:1`](../../ui/dr-ui/src/duplicates_ui.rs#L1), [`ui/dr-ui/src/gesture_book.rs:3`](../../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:127`](../../ui/dr-ui/src/gestures.rs#L127), [`ui/dr-ui/src/gestures.rs:139`](../../ui/dr-ui/src/gestures.rs#L139), [`ui/dr-ui/src/gestures.rs:1`](../../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:1281`](../../ui/dr-ui/src/lib.rs#L1281), [`ui/dr-ui/src/lib.rs:1572`](../../ui/dr-ui/src/lib.rs#L1572), [`ui/dr-ui/src/lib.rs:2592`](../../ui/dr-ui/src/lib.rs#L2592), [`ui/dr-ui/src/lib.rs:2811`](../../ui/dr-ui/src/lib.rs#L2811), [`ui/dr-ui/src/lib.rs:2871`](../../ui/dr-ui/src/lib.rs#L2871), [`ui/dr-ui/src/lib.rs:3030`](../../ui/dr-ui/src/lib.rs#L3030), [`ui/dr-ui/src/lib.rs:3432`](../../ui/dr-ui/src/lib.rs#L3432), [`ui/dr-ui/src/lib.rs:3476`](../../ui/dr-ui/src/lib.rs#L3476), [`ui/dr-ui/src/lib.rs:486`](../../ui/dr-ui/src/lib.rs#L486), [`ui/dr-ui/src/lib.rs:515`](../../ui/dr-ui/src/lib.rs#L515), [`ui/dr-ui/src/library/thumbnails_fetch.rs:718`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L718), [`ui/dr-ui/src/library/thumbnails_fetch.rs:733`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L733), [`ui/dr-ui/src/library_ui/controller.rs:398`](../../ui/dr-ui/src/library_ui/controller.rs#L398), [`ui/dr-ui/src/library_ui/controller.rs:540`](../../ui/dr-ui/src/library_ui/controller.rs#L540), [`ui/dr-ui/src/library_ui/controller.rs:617`](../../ui/dr-ui/src/library_ui/controller.rs#L617), [`ui/dr-ui/src/library_ui/filter_bar.rs:500`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L500), [`ui/dr-ui/src/library_ui/grid.rs:218`](../../ui/dr-ui/src/library_ui/grid.rs#L218), [`ui/dr-ui/src/library_ui/grid.rs:241`](../../ui/dr-ui/src/library_ui/grid.rs#L241), [`ui/dr-ui/src/library_ui/grid.rs:262`](../../ui/dr-ui/src/library_ui/grid.rs#L262), [`ui/dr-ui/src/library_ui/grid.rs:336`](../../ui/dr-ui/src/library_ui/grid.rs#L336), [`ui/dr-ui/src/library_ui/grid.rs:479`](../../ui/dr-ui/src/library_ui/grid.rs#L479), [`ui/dr-ui/src/library_ui/grid.rs:509`](../../ui/dr-ui/src/library_ui/grid.rs#L509), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1168`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1168), [`ui/dr-ui/src/manual.rs:1`](../../ui/dr-ui/src/manual.rs#L1), [`ui/dr-ui/src/settings_ui.rs:157`](../../ui/dr-ui/src/settings_ui.rs#L157), [`ui/dr-ui/src/settings_ui.rs:616`](../../ui/dr-ui/src/settings_ui.rs#L616), [`ui/dr-ui/ui/app.slint:1771`](../../ui/dr-ui/ui/app.slint#L1771), [`ui/dr-ui/ui/app.slint:1923`](../../ui/dr-ui/ui/app.slint#L1923), [`ui/dr-ui/ui/app.slint:2049`](../../ui/dr-ui/ui/app.slint#L2049), [`ui/dr-ui/ui/app.slint:2335`](../../ui/dr-ui/ui/app.slint#L2335), [`ui/dr-ui/ui/app.slint:235`](../../ui/dr-ui/ui/app.slint#L235), [`ui/dr-ui/ui/app.slint:2497`](../../ui/dr-ui/ui/app.slint#L2497), [`ui/dr-ui/ui/app.slint:2527`](../../ui/dr-ui/ui/app.slint#L2527), [`ui/dr-ui/ui/app.slint:2672`](../../ui/dr-ui/ui/app.slint#L2672), [`ui/dr-ui/ui/app.slint:2872`](../../ui/dr-ui/ui/app.slint#L2872), [`ui/dr-ui/ui/app.slint:3427`](../../ui/dr-ui/ui/app.slint#L3427), [`ui/dr-ui/ui/app.slint:3454`](../../ui/dr-ui/ui/app.slint#L3454), [`ui/dr-ui/ui/app.slint:663`](../../ui/dr-ui/ui/app.slint#L663), [`ui/dr-ui/ui/collections.slint:1340`](../../ui/dr-ui/ui/collections.slint#L1340), [`ui/dr-ui/ui/collections.slint:77`](../../ui/dr-ui/ui/collections.slint#L77), [`ui/dr-ui/ui/develop.slint:142`](../../ui/dr-ui/ui/develop.slint#L142), [`ui/dr-ui/ui/develop.slint:332`](../../ui/dr-ui/ui/develop.slint#L332), [`ui/dr-ui/ui/develop.slint:66`](../../ui/dr-ui/ui/develop.slint#L66), [`ui/dr-ui/ui/duplicates.slint:1`](../../ui/dr-ui/ui/duplicates.slint#L1), [`ui/dr-ui/ui/gestures.slint:1`](../../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/icons.slint:367`](../../ui/dr-ui/ui/icons.slint#L367), [`ui/dr-ui/ui/labels.slint:74`](../../ui/dr-ui/ui/labels.slint#L74), [`ui/dr-ui/ui/library.slint:1329`](../../ui/dr-ui/ui/library.slint#L1329), [`ui/dr-ui/ui/library.slint:1356`](../../ui/dr-ui/ui/library.slint#L1356), [`ui/dr-ui/ui/library.slint:1362`](../../ui/dr-ui/ui/library.slint#L1362), [`ui/dr-ui/ui/library.slint:1417`](../../ui/dr-ui/ui/library.slint#L1417), [`ui/dr-ui/ui/library.slint:1612`](../../ui/dr-ui/ui/library.slint#L1612), [`ui/dr-ui/ui/library.slint:1663`](../../ui/dr-ui/ui/library.slint#L1663), [`ui/dr-ui/ui/library.slint:1686`](../../ui/dr-ui/ui/library.slint#L1686), [`ui/dr-ui/ui/library.slint:1693`](../../ui/dr-ui/ui/library.slint#L1693), [`ui/dr-ui/ui/library.slint:1729`](../../ui/dr-ui/ui/library.slint#L1729), [`ui/dr-ui/ui/library.slint:1787`](../../ui/dr-ui/ui/library.slint#L1787), [`ui/dr-ui/ui/library.slint:1794`](../../ui/dr-ui/ui/library.slint#L1794), [`ui/dr-ui/ui/library.slint:3129`](../../ui/dr-ui/ui/library.slint#L3129), [`ui/dr-ui/ui/library.slint:3234`](../../ui/dr-ui/ui/library.slint#L3234), [`ui/dr-ui/ui/library.slint:3385`](../../ui/dr-ui/ui/library.slint#L3385), [`ui/dr-ui/ui/library.slint:5014`](../../ui/dr-ui/ui/library.slint#L5014), [`ui/dr-ui/ui/library.slint:5052`](../../ui/dr-ui/ui/library.slint#L5052), [`ui/dr-ui/ui/library.slint:5156`](../../ui/dr-ui/ui/library.slint#L5156), [`ui/dr-ui/ui/library.slint:562`](../../ui/dr-ui/ui/library.slint#L562), [`ui/dr-ui/ui/library.slint:572`](../../ui/dr-ui/ui/library.slint#L572), [`ui/dr-ui/ui/library.slint:666`](../../ui/dr-ui/ui/library.slint#L666), [`ui/dr-ui/ui/library.slint:735`](../../ui/dr-ui/ui/library.slint#L735), [`ui/dr-ui/ui/settings.slint:121`](../../ui/dr-ui/ui/settings.slint#L121), [`ui/dr-ui/ui/settings.slint:172`](../../ui/dr-ui/ui/settings.slint#L172), [`ui/dr-ui/ui/settings.slint:632`](../../ui/dr-ui/ui/settings.slint#L632) |
+| FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../../tools/traceability/src/gestures.rs#L1), [`tools/traceability/src/keymap.rs:1`](../../tools/traceability/src/keymap.rs#L1), [`ui/dr-ui/src/collections_ui/controller.rs:138`](../../ui/dr-ui/src/collections_ui/controller.rs#L138), [`ui/dr-ui/src/collections_ui/controller.rs:343`](../../ui/dr-ui/src/collections_ui/controller.rs#L343), [`ui/dr-ui/src/collections_ui/controller.rs:356`](../../ui/dr-ui/src/collections_ui/controller.rs#L356), [`ui/dr-ui/src/collections_ui/controller.rs:45`](../../ui/dr-ui/src/collections_ui/controller.rs#L45), [`ui/dr-ui/src/collections_ui/controller.rs:46`](../../ui/dr-ui/src/collections_ui/controller.rs#L46), [`ui/dr-ui/src/collections_ui/controller.rs:55`](../../ui/dr-ui/src/collections_ui/controller.rs#L55), [`ui/dr-ui/src/collections_ui/controller.rs:83`](../../ui/dr-ui/src/collections_ui/controller.rs#L83), [`ui/dr-ui/src/collections_ui/drag.rs:246`](../../ui/dr-ui/src/collections_ui/drag.rs#L246), [`ui/dr-ui/src/collections_ui/drag.rs:256`](../../ui/dr-ui/src/collections_ui/drag.rs#L256), [`ui/dr-ui/src/collections_ui/press.rs:258`](../../ui/dr-ui/src/collections_ui/press.rs#L258), [`ui/dr-ui/src/collections_ui/press.rs:278`](../../ui/dr-ui/src/collections_ui/press.rs#L278), [`ui/dr-ui/src/collections_ui/press.rs:453`](../../ui/dr-ui/src/collections_ui/press.rs#L453), [`ui/dr-ui/src/collections_ui/press.rs:490`](../../ui/dr-ui/src/collections_ui/press.rs#L490), [`ui/dr-ui/src/collections_ui/press.rs:54`](../../ui/dr-ui/src/collections_ui/press.rs#L54), [`ui/dr-ui/src/collections_ui/tree_sync.rs:339`](../../ui/dr-ui/src/collections_ui/tree_sync.rs#L339), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:121`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L121), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:138`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L138), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:264`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L264), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:415`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L415), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:444`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L444), [`ui/dr-ui/src/collections_ui/wiring_grid.rs:577`](../../ui/dr-ui/src/collections_ui/wiring_grid.rs#L577), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:287`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L287), [`ui/dr-ui/src/collections_ui/wiring_tree.rs:344`](../../ui/dr-ui/src/collections_ui/wiring_tree.rs#L344), [`ui/dr-ui/src/develop/framing.rs:257`](../../ui/dr-ui/src/develop/framing.rs#L257), [`ui/dr-ui/src/develop/framing.rs:594`](../../ui/dr-ui/src/develop/framing.rs#L594), [`ui/dr-ui/src/develop/framing.rs:619`](../../ui/dr-ui/src/develop/framing.rs#L619), [`ui/dr-ui/src/develop/framing.rs:630`](../../ui/dr-ui/src/develop/framing.rs#L630), [`ui/dr-ui/src/develop/framing.rs:644`](../../ui/dr-ui/src/develop/framing.rs#L644), [`ui/dr-ui/src/develop/framing.rs:818`](../../ui/dr-ui/src/develop/framing.rs#L818), [`ui/dr-ui/src/develop/framing.rs:849`](../../ui/dr-ui/src/develop/framing.rs#L849), [`ui/dr-ui/src/develop/framing.rs:870`](../../ui/dr-ui/src/develop/framing.rs#L870), [`ui/dr-ui/src/develop/framing.rs:995`](../../ui/dr-ui/src/develop/framing.rs#L995), [`ui/dr-ui/src/develop/render.rs:1065`](../../ui/dr-ui/src/develop/render.rs#L1065), [`ui/dr-ui/src/develop/render.rs:1090`](../../ui/dr-ui/src/develop/render.rs#L1090), [`ui/dr-ui/src/develop/render.rs:1113`](../../ui/dr-ui/src/develop/render.rs#L1113), [`ui/dr-ui/src/develop/render.rs:1152`](../../ui/dr-ui/src/develop/render.rs#L1152), [`ui/dr-ui/src/develop/render.rs:47`](../../ui/dr-ui/src/develop/render.rs#L47), [`ui/dr-ui/src/develop/render.rs:66`](../../ui/dr-ui/src/develop/render.rs#L66), [`ui/dr-ui/src/develop/render.rs:79`](../../ui/dr-ui/src/develop/render.rs#L79), [`ui/dr-ui/src/develop_ui.rs:852`](../../ui/dr-ui/src/develop_ui.rs#L852), [`ui/dr-ui/src/duplicates_ui.rs:1`](../../ui/dr-ui/src/duplicates_ui.rs#L1), [`ui/dr-ui/src/gesture_book.rs:3`](../../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:127`](../../ui/dr-ui/src/gestures.rs#L127), [`ui/dr-ui/src/gestures.rs:139`](../../ui/dr-ui/src/gestures.rs#L139), [`ui/dr-ui/src/gestures.rs:1`](../../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:1281`](../../ui/dr-ui/src/lib.rs#L1281), [`ui/dr-ui/src/lib.rs:1572`](../../ui/dr-ui/src/lib.rs#L1572), [`ui/dr-ui/src/lib.rs:2592`](../../ui/dr-ui/src/lib.rs#L2592), [`ui/dr-ui/src/lib.rs:2811`](../../ui/dr-ui/src/lib.rs#L2811), [`ui/dr-ui/src/lib.rs:2871`](../../ui/dr-ui/src/lib.rs#L2871), [`ui/dr-ui/src/lib.rs:3030`](../../ui/dr-ui/src/lib.rs#L3030), [`ui/dr-ui/src/lib.rs:3432`](../../ui/dr-ui/src/lib.rs#L3432), [`ui/dr-ui/src/lib.rs:3476`](../../ui/dr-ui/src/lib.rs#L3476), [`ui/dr-ui/src/lib.rs:486`](../../ui/dr-ui/src/lib.rs#L486), [`ui/dr-ui/src/lib.rs:515`](../../ui/dr-ui/src/lib.rs#L515), [`ui/dr-ui/src/library/thumbnails_fetch.rs:718`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L718), [`ui/dr-ui/src/library/thumbnails_fetch.rs:733`](../../ui/dr-ui/src/library/thumbnails_fetch.rs#L733), [`ui/dr-ui/src/library_ui/controller.rs:398`](../../ui/dr-ui/src/library_ui/controller.rs#L398), [`ui/dr-ui/src/library_ui/controller.rs:540`](../../ui/dr-ui/src/library_ui/controller.rs#L540), [`ui/dr-ui/src/library_ui/controller.rs:617`](../../ui/dr-ui/src/library_ui/controller.rs#L617), [`ui/dr-ui/src/library_ui/filter_bar.rs:500`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L500), [`ui/dr-ui/src/library_ui/grid.rs:218`](../../ui/dr-ui/src/library_ui/grid.rs#L218), [`ui/dr-ui/src/library_ui/grid.rs:241`](../../ui/dr-ui/src/library_ui/grid.rs#L241), [`ui/dr-ui/src/library_ui/grid.rs:262`](../../ui/dr-ui/src/library_ui/grid.rs#L262), [`ui/dr-ui/src/library_ui/grid.rs:336`](../../ui/dr-ui/src/library_ui/grid.rs#L336), [`ui/dr-ui/src/library_ui/grid.rs:479`](../../ui/dr-ui/src/library_ui/grid.rs#L479), [`ui/dr-ui/src/library_ui/grid.rs:509`](../../ui/dr-ui/src/library_ui/grid.rs#L509), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1168`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1168), [`ui/dr-ui/src/manual.rs:1`](../../ui/dr-ui/src/manual.rs#L1), [`ui/dr-ui/src/settings_ui.rs:157`](../../ui/dr-ui/src/settings_ui.rs#L157), [`ui/dr-ui/src/settings_ui.rs:616`](../../ui/dr-ui/src/settings_ui.rs#L616), [`ui/dr-ui/ui/app.slint:1771`](../../ui/dr-ui/ui/app.slint#L1771), [`ui/dr-ui/ui/app.slint:1923`](../../ui/dr-ui/ui/app.slint#L1923), [`ui/dr-ui/ui/app.slint:2049`](../../ui/dr-ui/ui/app.slint#L2049), [`ui/dr-ui/ui/app.slint:2335`](../../ui/dr-ui/ui/app.slint#L2335), [`ui/dr-ui/ui/app.slint:235`](../../ui/dr-ui/ui/app.slint#L235), [`ui/dr-ui/ui/app.slint:2497`](../../ui/dr-ui/ui/app.slint#L2497), [`ui/dr-ui/ui/app.slint:2527`](../../ui/dr-ui/ui/app.slint#L2527), [`ui/dr-ui/ui/app.slint:2672`](../../ui/dr-ui/ui/app.slint#L2672), [`ui/dr-ui/ui/app.slint:2872`](../../ui/dr-ui/ui/app.slint#L2872), [`ui/dr-ui/ui/app.slint:3427`](../../ui/dr-ui/ui/app.slint#L3427), [`ui/dr-ui/ui/app.slint:3454`](../../ui/dr-ui/ui/app.slint#L3454), [`ui/dr-ui/ui/app.slint:663`](../../ui/dr-ui/ui/app.slint#L663), [`ui/dr-ui/ui/collections.slint:1340`](../../ui/dr-ui/ui/collections.slint#L1340), [`ui/dr-ui/ui/collections.slint:77`](../../ui/dr-ui/ui/collections.slint#L77), [`ui/dr-ui/ui/develop.slint:142`](../../ui/dr-ui/ui/develop.slint#L142), [`ui/dr-ui/ui/develop.slint:332`](../../ui/dr-ui/ui/develop.slint#L332), [`ui/dr-ui/ui/develop.slint:66`](../../ui/dr-ui/ui/develop.slint#L66), [`ui/dr-ui/ui/duplicates.slint:1`](../../ui/dr-ui/ui/duplicates.slint#L1), [`ui/dr-ui/ui/gestures.slint:1`](../../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/icons.slint:367`](../../ui/dr-ui/ui/icons.slint#L367), [`ui/dr-ui/ui/labels.slint:74`](../../ui/dr-ui/ui/labels.slint#L74), [`ui/dr-ui/ui/library.slint:1329`](../../ui/dr-ui/ui/library.slint#L1329), [`ui/dr-ui/ui/library.slint:1356`](../../ui/dr-ui/ui/library.slint#L1356), [`ui/dr-ui/ui/library.slint:1362`](../../ui/dr-ui/ui/library.slint#L1362), [`ui/dr-ui/ui/library.slint:1417`](../../ui/dr-ui/ui/library.slint#L1417), [`ui/dr-ui/ui/library.slint:1612`](../../ui/dr-ui/ui/library.slint#L1612), [`ui/dr-ui/ui/library.slint:1663`](../../ui/dr-ui/ui/library.slint#L1663), [`ui/dr-ui/ui/library.slint:1686`](../../ui/dr-ui/ui/library.slint#L1686), [`ui/dr-ui/ui/library.slint:1693`](../../ui/dr-ui/ui/library.slint#L1693), [`ui/dr-ui/ui/library.slint:1729`](../../ui/dr-ui/ui/library.slint#L1729), [`ui/dr-ui/ui/library.slint:1787`](../../ui/dr-ui/ui/library.slint#L1787), [`ui/dr-ui/ui/library.slint:1794`](../../ui/dr-ui/ui/library.slint#L1794), [`ui/dr-ui/ui/library.slint:3129`](../../ui/dr-ui/ui/library.slint#L3129), [`ui/dr-ui/ui/library.slint:3234`](../../ui/dr-ui/ui/library.slint#L3234), [`ui/dr-ui/ui/library.slint:3385`](../../ui/dr-ui/ui/library.slint#L3385), [`ui/dr-ui/ui/library.slint:5014`](../../ui/dr-ui/ui/library.slint#L5014), [`ui/dr-ui/ui/library.slint:5052`](../../ui/dr-ui/ui/library.slint#L5052), [`ui/dr-ui/ui/library.slint:5156`](../../ui/dr-ui/ui/library.slint#L5156), [`ui/dr-ui/ui/library.slint:562`](../../ui/dr-ui/ui/library.slint#L562), [`ui/dr-ui/ui/library.slint:572`](../../ui/dr-ui/ui/library.slint#L572), [`ui/dr-ui/ui/library.slint:666`](../../ui/dr-ui/ui/library.slint#L666), [`ui/dr-ui/ui/library.slint:735`](../../ui/dr-ui/ui/library.slint#L735), [`ui/dr-ui/ui/settings.slint:121`](../../ui/dr-ui/ui/settings.slint#L121), [`ui/dr-ui/ui/settings.slint:172`](../../ui/dr-ui/ui/settings.slint#L172), [`ui/dr-ui/ui/settings.slint:635`](../../ui/dr-ui/ui/settings.slint#L635) |
| FR-UI-5 | [`core/dr-types/src/place.rs:118`](../../core/dr-types/src/place.rs#L118), [`tools/traceability/src/chord.rs:1`](../../tools/traceability/src/chord.rs#L1), [`tools/traceability/src/keymap.rs:1`](../../tools/traceability/src/keymap.rs#L1), [`ui/dr-ui/src/collections_ui/mod.rs:1`](../../ui/dr-ui/src/collections_ui/mod.rs#L1), [`ui/dr-ui/src/develop_ui.rs:897`](../../ui/dr-ui/src/develop_ui.rs#L897), [`ui/dr-ui/src/gestures.rs:139`](../../ui/dr-ui/src/gestures.rs#L139), [`ui/dr-ui/src/identity_ui.rs:1643`](../../ui/dr-ui/src/identity_ui.rs#L1643), [`ui/dr-ui/src/identity_ui.rs:802`](../../ui/dr-ui/src/identity_ui.rs#L802), [`ui/dr-ui/src/lib.rs:3414`](../../ui/dr-ui/src/lib.rs#L3414), [`ui/dr-ui/src/lib.rs:3432`](../../ui/dr-ui/src/lib.rs#L3432), [`ui/dr-ui/src/lib.rs:3446`](../../ui/dr-ui/src/lib.rs#L3446), [`ui/dr-ui/src/lib.rs:3627`](../../ui/dr-ui/src/lib.rs#L3627), [`ui/dr-ui/src/library/filters.rs:79`](../../ui/dr-ui/src/library/filters.rs#L79), [`ui/dr-ui/src/library_ui/filter_bar.rs:57`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L57), [`ui/dr-ui/src/library_ui/grid.rs:356`](../../ui/dr-ui/src/library_ui/grid.rs#L356), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1028`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1028), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1144`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1144), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1205`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1205), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1275`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1275), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:1301`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L1301), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:457`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L457), [`ui/dr-ui/src/masks_ui.rs:1655`](../../ui/dr-ui/src/masks_ui.rs#L1655), [`ui/dr-ui/src/place.rs:331`](../../ui/dr-ui/src/place.rs#L331), [`ui/dr-ui/src/settings_ui.rs:502`](../../ui/dr-ui/src/settings_ui.rs#L502), [`ui/dr-ui/ui/app.slint:1055`](../../ui/dr-ui/ui/app.slint#L1055), [`ui/dr-ui/ui/app.slint:1635`](../../ui/dr-ui/ui/app.slint#L1635), [`ui/dr-ui/ui/app.slint:2335`](../../ui/dr-ui/ui/app.slint#L2335), [`ui/dr-ui/ui/app.slint:2485`](../../ui/dr-ui/ui/app.slint#L2485), [`ui/dr-ui/ui/app.slint:2627`](../../ui/dr-ui/ui/app.slint#L2627), [`ui/dr-ui/ui/app.slint:2672`](../../ui/dr-ui/ui/app.slint#L2672), [`ui/dr-ui/ui/app.slint:2725`](../../ui/dr-ui/ui/app.slint#L2725), [`ui/dr-ui/ui/app.slint:2756`](../../ui/dr-ui/ui/app.slint#L2756), [`ui/dr-ui/ui/app.slint:3392`](../../ui/dr-ui/ui/app.slint#L3392), [`ui/dr-ui/ui/app.slint:3411`](../../ui/dr-ui/ui/app.slint#L3411), [`ui/dr-ui/ui/app.slint:393`](../../ui/dr-ui/ui/app.slint#L393), [`ui/dr-ui/ui/app.slint:652`](../../ui/dr-ui/ui/app.slint#L652), [`ui/dr-ui/ui/app.slint:659`](../../ui/dr-ui/ui/app.slint#L659), [`ui/dr-ui/ui/app.slint:663`](../../ui/dr-ui/ui/app.slint#L663), [`ui/dr-ui/ui/app.slint:669`](../../ui/dr-ui/ui/app.slint#L669), [`ui/dr-ui/ui/app.slint:725`](../../ui/dr-ui/ui/app.slint#L725), [`ui/dr-ui/ui/collections.slint:110`](../../ui/dr-ui/ui/collections.slint#L110), [`ui/dr-ui/ui/collections.slint:4`](../../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/develop.slint:168`](../../ui/dr-ui/ui/develop.slint#L168), [`ui/dr-ui/ui/develop.slint:55`](../../ui/dr-ui/ui/develop.slint#L55), [`ui/dr-ui/ui/export.slint:1`](../../ui/dr-ui/ui/export.slint#L1), [`ui/dr-ui/ui/export.slint:384`](../../ui/dr-ui/ui/export.slint#L384), [`ui/dr-ui/ui/identity.slint:294`](../../ui/dr-ui/ui/identity.slint#L294), [`ui/dr-ui/ui/identity.slint:400`](../../ui/dr-ui/ui/identity.slint#L400), [`ui/dr-ui/ui/keys.slint:1`](../../ui/dr-ui/ui/keys.slint#L1), [`ui/dr-ui/ui/library.slint:1039`](../../ui/dr-ui/ui/library.slint#L1039), [`ui/dr-ui/ui/library.slint:1609`](../../ui/dr-ui/ui/library.slint#L1609), [`ui/dr-ui/ui/library.slint:1618`](../../ui/dr-ui/ui/library.slint#L1618), [`ui/dr-ui/ui/library.slint:1623`](../../ui/dr-ui/ui/library.slint#L1623), [`ui/dr-ui/ui/library.slint:1635`](../../ui/dr-ui/ui/library.slint#L1635), [`ui/dr-ui/ui/library.slint:1883`](../../ui/dr-ui/ui/library.slint#L1883), [`ui/dr-ui/ui/library.slint:2012`](../../ui/dr-ui/ui/library.slint#L2012), [`ui/dr-ui/ui/library.slint:2652`](../../ui/dr-ui/ui/library.slint#L2652), [`ui/dr-ui/ui/library.slint:3095`](../../ui/dr-ui/ui/library.slint#L3095), [`ui/dr-ui/ui/library.slint:3171`](../../ui/dr-ui/ui/library.slint#L3171), [`ui/dr-ui/ui/library.slint:3190`](../../ui/dr-ui/ui/library.slint#L3190), [`ui/dr-ui/ui/library.slint:3196`](../../ui/dr-ui/ui/library.slint#L3196), [`ui/dr-ui/ui/library.slint:3203`](../../ui/dr-ui/ui/library.slint#L3203), [`ui/dr-ui/ui/library.slint:3223`](../../ui/dr-ui/ui/library.slint#L3223), [`ui/dr-ui/ui/library.slint:3234`](../../ui/dr-ui/ui/library.slint#L3234), [`ui/dr-ui/ui/library.slint:3312`](../../ui/dr-ui/ui/library.slint#L3312), [`ui/dr-ui/ui/library.slint:3385`](../../ui/dr-ui/ui/library.slint#L3385), [`ui/dr-ui/ui/library.slint:3988`](../../ui/dr-ui/ui/library.slint#L3988), [`ui/dr-ui/ui/library.slint:5069`](../../ui/dr-ui/ui/library.slint#L5069), [`ui/dr-ui/ui/library.slint:642`](../../ui/dr-ui/ui/library.slint#L642), [`ui/dr-ui/ui/library.slint:660`](../../ui/dr-ui/ui/library.slint#L660), [`ui/dr-ui/ui/library.slint:681`](../../ui/dr-ui/ui/library.slint#L681), [`ui/dr-ui/ui/presets.slint:332`](../../ui/dr-ui/ui/presets.slint#L332), [`ui/dr-ui/ui/session.slint:75`](../../ui/dr-ui/ui/session.slint#L75) |
| FR-UI-6 | [`ui/dr-ui/ui/widgets.slint:1`](../../ui/dr-ui/ui/widgets.slint#L1) |
-| FR-UI-7 | [`core/dr-pipeline/src/descriptor.rs:195`](../../core/dr-pipeline/src/descriptor.rs#L195), [`core/dr-pipeline/src/framing.rs:555`](../../core/dr-pipeline/src/framing.rs#L555), [`core/dr-types/src/settings.rs:492`](../../core/dr-types/src/settings.rs#L492), [`ui/dr-ui/src/develop/rows.rs:118`](../../ui/dr-ui/src/develop/rows.rs#L118), [`ui/dr-ui/src/lib.rs:3239`](../../ui/dr-ui/src/lib.rs#L3239), [`ui/dr-ui/ui/adjust.slint:1000`](../../ui/dr-ui/ui/adjust.slint#L1000), [`ui/dr-ui/ui/app.slint:2173`](../../ui/dr-ui/ui/app.slint#L2173), [`ui/dr-ui/ui/settings.slint:657`](../../ui/dr-ui/ui/settings.slint#L657), [`ui/dr-ui/ui/toolrail.slint:89`](../../ui/dr-ui/ui/toolrail.slint#L89) |
+| FR-UI-7 | [`core/dr-pipeline/src/descriptor.rs:195`](../../core/dr-pipeline/src/descriptor.rs#L195), [`core/dr-pipeline/src/framing.rs:555`](../../core/dr-pipeline/src/framing.rs#L555), [`core/dr-types/src/settings.rs:492`](../../core/dr-types/src/settings.rs#L492), [`ui/dr-ui/src/develop/rows.rs:118`](../../ui/dr-ui/src/develop/rows.rs#L118), [`ui/dr-ui/src/lib.rs:3239`](../../ui/dr-ui/src/lib.rs#L3239), [`ui/dr-ui/ui/adjust.slint:1000`](../../ui/dr-ui/ui/adjust.slint#L1000), [`ui/dr-ui/ui/app.slint:2173`](../../ui/dr-ui/ui/app.slint#L2173), [`ui/dr-ui/ui/settings.slint:660`](../../ui/dr-ui/ui/settings.slint#L660), [`ui/dr-ui/ui/toolrail.slint:89`](../../ui/dr-ui/ui/toolrail.slint#L89) |
| FR-UI-8 | [`core/dr-catalog/src/collections.rs:654`](../../core/dr-catalog/src/collections.rs#L654), [`core/dr-catalog/src/collections.rs:675`](../../core/dr-catalog/src/collections.rs#L675), [`core/dr-types/src/place.rs:1`](../../core/dr-types/src/place.rs#L1), [`ui/dr-ui/src/derived_sync.rs:226`](../../ui/dr-ui/src/derived_sync.rs#L226), [`ui/dr-ui/src/derived_sync.rs:84`](../../ui/dr-ui/src/derived_sync.rs#L84), [`ui/dr-ui/src/derived_sync.rs:905`](../../ui/dr-ui/src/derived_sync.rs#L905), [`ui/dr-ui/src/derived_sync.rs:915`](../../ui/dr-ui/src/derived_sync.rs#L915), [`ui/dr-ui/src/derived_sync.rs:997`](../../ui/dr-ui/src/derived_sync.rs#L997), [`ui/dr-ui/src/library/cells.rs:274`](../../ui/dr-ui/src/library/cells.rs#L274), [`ui/dr-ui/src/library/cells.rs:553`](../../ui/dr-ui/src/library/cells.rs#L553), [`ui/dr-ui/src/library/cells.rs:619`](../../ui/dr-ui/src/library/cells.rs#L619), [`ui/dr-ui/src/library/paths.rs:22`](../../ui/dr-ui/src/library/paths.rs#L22), [`ui/dr-ui/src/library_ui/controller.rs:205`](../../ui/dr-ui/src/library_ui/controller.rs#L205), [`ui/dr-ui/src/library_ui/controller.rs:942`](../../ui/dr-ui/src/library_ui/controller.rs#L942), [`ui/dr-ui/src/library_ui/filter_bar.rs:793`](../../ui/dr-ui/src/library_ui/filter_bar.rs#L793), [`ui/dr-ui/src/library_ui/grid.rs:172`](../../ui/dr-ui/src/library_ui/grid.rs#L172), [`ui/dr-ui/src/library_ui/grid.rs:285`](../../ui/dr-ui/src/library_ui/grid.rs#L285), [`ui/dr-ui/src/library_ui/grid.rs:327`](../../ui/dr-ui/src/library_ui/grid.rs#L327), [`ui/dr-ui/src/library_ui/grid.rs:668`](../../ui/dr-ui/src/library_ui/grid.rs#L668), [`ui/dr-ui/src/library_ui/grid.rs:794`](../../ui/dr-ui/src/library_ui/grid.rs#L794), [`ui/dr-ui/src/library_ui/open.rs:118`](../../ui/dr-ui/src/library_ui/open.rs#L118), [`ui/dr-ui/src/library_ui/open.rs:36`](../../ui/dr-ui/src/library_ui/open.rs#L36), [`ui/dr-ui/src/library_ui/open.rs:71`](../../ui/dr-ui/src/library_ui/open.rs#L71), [`ui/dr-ui/src/library_ui/open.rs:839`](../../ui/dr-ui/src/library_ui/open.rs#L839), [`ui/dr-ui/src/library_ui/open.rs:856`](../../ui/dr-ui/src/library_ui/open.rs#L856), [`ui/dr-ui/src/library_ui/open.rs:954`](../../ui/dr-ui/src/library_ui/open.rs#L954), [`ui/dr-ui/src/place.rs:1`](../../ui/dr-ui/src/place.rs#L1) |
| NFR-A11Y-2 | [`ui/dr-ui/tests/ui_controls_are_accessible.rs:1`](../../ui/dr-ui/tests/ui_controls_are_accessible.rs#L1), [`ui/dr-ui/ui/adjust.slint:173`](../../ui/dr-ui/ui/adjust.slint#L173), [`ui/dr-ui/ui/app.slint:2872`](../../ui/dr-ui/ui/app.slint#L2872), [`ui/dr-ui/ui/app.slint:2911`](../../ui/dr-ui/ui/app.slint#L2911) |
| NFR-A11Y-3 | [`ui/dr-ui/src/histogram.rs:356`](../../ui/dr-ui/src/histogram.rs#L356), [`ui/dr-ui/tests/status_is_not_colour_alone.rs:1`](../../ui/dr-ui/tests/status_is_not_colour_alone.rs#L1), [`ui/dr-ui/ui/app.slint:2756`](../../ui/dr-ui/ui/app.slint#L2756), [`ui/dr-ui/ui/develop.slint:142`](../../ui/dr-ui/ui/develop.slint#L142), [`ui/dr-ui/ui/develop.slint:168`](../../ui/dr-ui/ui/develop.slint#L168), [`ui/dr-ui/ui/histogram.slint:137`](../../ui/dr-ui/ui/histogram.slint#L137), [`ui/dr-ui/ui/labels.slint:19`](../../ui/dr-ui/ui/labels.slint#L19), [`ui/dr-ui/ui/labels.slint:1`](../../ui/dr-ui/ui/labels.slint#L1), [`ui/dr-ui/ui/labels.slint:40`](../../ui/dr-ui/ui/labels.slint#L40), [`ui/dr-ui/ui/labels.slint:74`](../../ui/dr-ui/ui/labels.slint#L74), [`ui/dr-ui/ui/library.slint:1039`](../../ui/dr-ui/ui/library.slint#L1039), [`ui/dr-ui/ui/library.slint:1110`](../../ui/dr-ui/ui/library.slint#L1110), [`ui/dr-ui/ui/library.slint:1273`](../../ui/dr-ui/ui/library.slint#L1273), [`ui/dr-ui/ui/library.slint:2697`](../../ui/dr-ui/ui/library.slint#L2697), [`ui/dr-ui/ui/library.slint:3312`](../../ui/dr-ui/ui/library.slint#L3312), [`ui/dr-ui/ui/library.slint:3924`](../../ui/dr-ui/ui/library.slint#L3924), [`ui/dr-ui/ui/peaking.slint:1`](../../ui/dr-ui/ui/peaking.slint#L1), [`ui/dr-ui/ui/widgets.slint:271`](../../ui/dr-ui/ui/widgets.slint#L271) |
@@ -162,7 +162,7 @@ _None._
| NFR-ARCH-3 | [`ui/dr-ui/src/develop_ui.rs:348`](../../ui/dr-ui/src/develop_ui.rs#L348), [`ui/dr-ui/src/export.rs:1842`](../../ui/dr-ui/src/export.rs#L1842), [`ui/dr-ui/src/export.rs:1869`](../../ui/dr-ui/src/export.rs#L1869), [`ui/dr-ui/src/export.rs:420`](../../ui/dr-ui/src/export.rs#L420), [`ui/dr-ui/src/export.rs:446`](../../ui/dr-ui/src/export.rs#L446), [`ui/dr-ui/ui/library.slint:5181`](../../ui/dr-ui/ui/library.slint#L5181), [`ui/dr-ui/ui/library.slint:794`](../../ui/dr-ui/ui/library.slint#L794) |
| NFR-ARCH-4 | [`core/dr-catalog/src/error.rs:1`](../../core/dr-catalog/src/error.rs#L1), [`core/dr-export/src/error.rs:1`](../../core/dr-export/src/error.rs#L1), [`core/dr-thumbs/src/error.rs:1`](../../core/dr-thumbs/src/error.rs#L1), [`core/dr-xmp/src/lib.rs:798`](../../core/dr-xmp/src/lib.rs#L798), [`platform/dr-plat/src/storage.rs:148`](../../platform/dr-plat/src/storage.rs#L148), [`ui/dr-ui/src/export.rs:526`](../../ui/dr-ui/src/export.rs#L526) |
| NFR-COMPAT-1 | [`core/dr-gpu/src/lib.rs:286`](../../core/dr-gpu/src/lib.rs#L286) |
-| NFR-OPS-1 | [`core/dr-gpu/src/lib.rs:339`](../../core/dr-gpu/src/lib.rs#L339), [`platform/dr-plat/src/diagnostics.rs:1`](../../platform/dr-plat/src/diagnostics.rs#L1), [`platform/dr-plat/src/diagnostics/bundle.rs:1`](../../platform/dr-plat/src/diagnostics/bundle.rs#L1), [`platform/dr-plat/src/state.rs:1`](../../platform/dr-plat/src/state.rs#L1), [`ui/dr-ui/src/lib.rs:1462`](../../ui/dr-ui/src/lib.rs#L1462), [`ui/dr-ui/ui/app.slint:1233`](../../ui/dr-ui/ui/app.slint#L1233), [`ui/dr-ui/ui/app.slint:138`](../../ui/dr-ui/ui/app.slint#L138), [`ui/dr-ui/ui/settings.slint:161`](../../ui/dr-ui/ui/settings.slint#L161), [`ui/dr-ui/ui/settings.slint:908`](../../ui/dr-ui/ui/settings.slint#L908) |
+| NFR-OPS-1 | [`core/dr-gpu/src/lib.rs:339`](../../core/dr-gpu/src/lib.rs#L339), [`platform/dr-plat/src/diagnostics.rs:1`](../../platform/dr-plat/src/diagnostics.rs#L1), [`platform/dr-plat/src/diagnostics/bundle.rs:1`](../../platform/dr-plat/src/diagnostics/bundle.rs#L1), [`platform/dr-plat/src/state.rs:1`](../../platform/dr-plat/src/state.rs#L1), [`ui/dr-ui/src/lib.rs:1462`](../../ui/dr-ui/src/lib.rs#L1462), [`ui/dr-ui/ui/app.slint:1233`](../../ui/dr-ui/ui/app.slint#L1233), [`ui/dr-ui/ui/app.slint:138`](../../ui/dr-ui/ui/app.slint#L138), [`ui/dr-ui/ui/settings.slint:161`](../../ui/dr-ui/ui/settings.slint#L161), [`ui/dr-ui/ui/settings.slint:911`](../../ui/dr-ui/ui/settings.slint#L911) |
| NFR-OPS-2 | [`platform/dr-plat/src/crash.rs:1`](../../platform/dr-plat/src/crash.rs#L1) |
| NFR-OPS-3 | [`core/dr-types/src/settings.rs:1`](../../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/settings_store.rs:1`](../../ui/dr-ui/src/settings_store.rs#L1) |
| NFR-P1 | [`core/dr-catalog/src/lib.rs:1`](../../core/dr-catalog/src/lib.rs#L1), [`core/dr-catalog/src/scan.rs:1`](../../core/dr-catalog/src/scan.rs#L1), [`core/dr-catalog/src/walk.rs:162`](../../core/dr-catalog/src/walk.rs#L162), [`core/dr-catalog/src/walk.rs:1`](../../core/dr-catalog/src/walk.rs#L1), [`tools/bench/src/catalog_open.rs:1`](../../tools/bench/src/catalog_open.rs#L1) |
@@ -177,7 +177,7 @@ _None._
| NFR-R1 | [`core/dr-catalog/src/schema.rs:361`](../../core/dr-catalog/src/schema.rs#L361), [`core/dr-catalog/src/sync.rs:1`](../../core/dr-catalog/src/sync.rs#L1), [`core/dr-gpu/src/lib.rs:194`](../../core/dr-gpu/src/lib.rs#L194), [`core/dr-sync/src/account.rs:240`](../../core/dr-sync/src/account.rs#L240), [`ui/dr-ui/src/library/paths.rs:69`](../../ui/dr-ui/src/library/paths.rs#L69) |
| NFR-R2 | [`core/dr-catalog/src/recovery.rs:1`](../../core/dr-catalog/src/recovery.rs#L1), [`core/dr-catalog/src/recovery.rs:222`](../../core/dr-catalog/src/recovery.rs#L222), [`core/dr-catalog/src/sync.rs:61`](../../core/dr-catalog/src/sync.rs#L61), [`core/dr-catalog/src/trash.rs:1`](../../core/dr-catalog/src/trash.rs#L1), [`ui/dr-ui/src/derived_sync.rs:623`](../../ui/dr-ui/src/derived_sync.rs#L623), [`ui/dr-ui/src/derived_sync.rs:746`](../../ui/dr-ui/src/derived_sync.rs#L746), [`ui/dr-ui/src/library_ui/sync.rs:22`](../../ui/dr-ui/src/library_ui/sync.rs#L22), [`ui/dr-ui/src/library_ui/sync.rs:369`](../../ui/dr-ui/src/library_ui/sync.rs#L369) |
| NFR-R3 | [`core/dr-decode/src/error.rs:30`](../../core/dr-decode/src/error.rs#L30) |
-| NFR-R4 | [`core/dr-types/src/settings.rs:92`](../../core/dr-types/src/settings.rs#L92), [`ui/dr-ui/src/library/xmp.rs:25`](../../ui/dr-ui/src/library/xmp.rs#L25), [`ui/dr-ui/src/library/xmp.rs:9`](../../ui/dr-ui/src/library/xmp.rs#L9), [`ui/dr-ui/src/library_ui/controller.rs:403`](../../ui/dr-ui/src/library_ui/controller.rs#L403), [`ui/dr-ui/src/library_ui/controller.rs:550`](../../ui/dr-ui/src/library_ui/controller.rs#L550), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:693`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L693), [`ui/dr-ui/src/settings_ui.rs:632`](../../ui/dr-ui/src/settings_ui.rs#L632), [`ui/dr-ui/src/xmp_sync.rs:1`](../../ui/dr-ui/src/xmp_sync.rs#L1), [`ui/dr-ui/ui/settings.slint:210`](../../ui/dr-ui/ui/settings.slint#L210), [`ui/dr-ui/ui/settings.slint:986`](../../ui/dr-ui/ui/settings.slint#L986) |
+| NFR-R4 | [`core/dr-types/src/settings.rs:92`](../../core/dr-types/src/settings.rs#L92), [`ui/dr-ui/src/library/xmp.rs:25`](../../ui/dr-ui/src/library/xmp.rs#L25), [`ui/dr-ui/src/library/xmp.rs:9`](../../ui/dr-ui/src/library/xmp.rs#L9), [`ui/dr-ui/src/library_ui/controller.rs:403`](../../ui/dr-ui/src/library_ui/controller.rs#L403), [`ui/dr-ui/src/library_ui/controller.rs:550`](../../ui/dr-ui/src/library_ui/controller.rs#L550), [`ui/dr-ui/src/library_ui/ratings_keywords.rs:693`](../../ui/dr-ui/src/library_ui/ratings_keywords.rs#L693), [`ui/dr-ui/src/settings_ui.rs:632`](../../ui/dr-ui/src/settings_ui.rs#L632), [`ui/dr-ui/src/xmp_sync.rs:1`](../../ui/dr-ui/src/xmp_sync.rs#L1), [`ui/dr-ui/ui/settings.slint:210`](../../ui/dr-ui/ui/settings.slint#L210), [`ui/dr-ui/ui/settings.slint:989`](../../ui/dr-ui/ui/settings.slint#L989) |
| NFR-R5 | [`core/dr-catalog/src/collections.rs:1`](../../core/dr-catalog/src/collections.rs#L1), [`core/dr-catalog/src/error.rs:1`](../../core/dr-catalog/src/error.rs#L1), [`core/dr-catalog/src/keywords.rs:1`](../../core/dr-catalog/src/keywords.rs#L1), [`core/dr-catalog/src/schema.rs:1`](../../core/dr-catalog/src/schema.rs#L1) |
| NFR-R6 | [`core/dr-catalog/src/error.rs:1`](../../core/dr-catalog/src/error.rs#L1), [`core/dr-catalog/src/lib.rs:256`](../../core/dr-catalog/src/lib.rs#L256), [`core/dr-catalog/src/recovery.rs:1`](../../core/dr-catalog/src/recovery.rs#L1) |
| NFR-R7 | [`core/dr-gpu/src/error.rs:1`](../../core/dr-gpu/src/error.rs#L1) |
diff --git a/docs/gestures.md b/docs/gestures.md
index 8e0debe..8cafaee 100644
--- a/docs/gestures.md
+++ b/docs/gestures.md
@@ -786,4 +786,4 @@ The badge on a cell says a photograph is filed in three collections and never wh
Beside the other whole-library passes, because it is one; the sidebar offers the same page under the trash.
-`ui/dr-ui/ui/settings.slint:530`
+`ui/dr-ui/ui/settings.slint:533`
diff --git a/ui/dr-ui/ui/settings.slint b/ui/dr-ui/ui/settings.slint
index acee2ae..cd11629 100644
--- a/ui/dr-ui/ui/settings.slint
+++ b/ui/dr-ui/ui/settings.slint
@@ -1,5 +1,5 @@
import { Theme } from "theme.slint";
-import { Button, PanelHeading, Label, Value, Caption, Panel, ProgressBar, ActivityRow } from "widgets.slint";
+import { Button, PanelHeading, Label, Value, Caption, Panel, ProgressBar, ActivityRow, ScrollBar } from "widgets.slint";
import { Segmented, TextRow, Check, SliderRow } from "controls.slint";
import { ExportImageOptions, ExportFileOptions } from "export.slint";
import { ScopeChips, ScopeKind } from "presets.slint";
@@ -302,731 +302,745 @@ export component SettingsPage inherits Rectangle {
}
}
- Flickable {
- vertical-stretch: 1;
- viewport-height: content.preferred-height;
+ Rectangle {
+ vertical-stretch: 1;
+ page-flick := Flickable {
+ width: parent.width;
+ height: parent.height;
+ viewport-height: content.preferred-height;
- content := VerticalLayout {
- width: 100%;
- padding: Theme.gap-lg;
- spacing: Theme.gap-lg;
- alignment: start;
+ content := VerticalLayout {
+ width: 100%;
+ padding: Theme.gap-lg;
+ spacing: Theme.gap-lg;
+ alignment: start;
- // The column is capped rather than filling the window. A
- // settings form stretched across a 2560px display puts its
- // label at one edge and its control at the other; 680px is
- // about 90 characters of `text`, which is a readable measure.
- // `min` so a narrow window still uses what it has (FR-UI-1).
- property column: min(root.width - 2 * Theme.gap-lg, 680px);
+ // The column is capped rather than filling the window. A
+ // settings form stretched across a 2560px display puts its
+ // label at one edge and its control at the other; 680px is
+ // about 90 characters of `text`, which is a readable measure.
+ // `min` so a narrow window still uses what it has (FR-UI-1).
+ property column: min(root.width - 2 * Theme.gap-lg, 680px);
- // --- background activity ---------------------------------
- //
- // First on the page, and the only panel here that is not a
- // preference. It earns the position by being the one thing
- // that changes while the page is open: a transfer the user
- // came here to check on is answered before they have scrolled.
- Rectangle {
- width: content.column;
- height: activity.preferred-height;
+ // --- background activity ---------------------------------
+ //
+ // First on the page, and the only panel here that is not a
+ // preference. It earns the position by being the one thing
+ // that changes while the page is open: a transfer the user
+ // came here to check on is answered before they have scrolled.
+ Rectangle {
+ width: content.column;
+ height: activity.preferred-height;
- activity := Panel {
- width: 100%;
+ activity := Panel {
+ width: 100%;
- HorizontalLayout {
- spacing: Theme.gap;
+ HorizontalLayout {
+ spacing: Theme.gap;
- PanelHeading { text: "BACKGROUND ACTIVITY"; }
+ PanelHeading { text: "BACKGROUND ACTIVITY"; }
- // The count beside the heading, because the list
- // below carries stopped jobs too and "how many are
- // running" should not have to be counted by eye.
- Caption {
- text: root.activity-running > 0
- ? root.activity-running + " running" : "";
- horizontal-alignment: right;
- horizontal-stretch: 1;
- }
- }
-
- Caption {
- text: "Scans, transfers and syncs running behind the "
- + "interface. Everything here survives leaving "
- + "this page; nothing here needs it open.";
- wrap: word-wrap;
- }
-
- Rectangle { height: Theme.gap-sm; }
-
- // Says nothing is running, rather than showing an empty
- // box: a list that is empty because the work finished
- // and one that is empty because the register is broken
- // look identical otherwise.
- if root.activity-rows.length == 0: Caption {
- text: "Nothing running.";
- }
-
- for row in root.activity-rows: ActivityItem {
- job: row;
- }
-
- // TRACES: FR-CAT-3 | FR-NC-3 | FR-NC-7
- // The one job here that is started rather than
- // observed, and it belongs on this page rather than
- // in the header: it runs for an hour, it is asked for
- // once, and its progress appears in the list directly
- // above.
- if root.library-open: Rectangle {
- height: Theme.gap-sm;
- }
-
- if root.library-open: Caption {
- text: "Thumbnails are built for photographs as you "
- + "browse them. This builds the rest in one "
- + "pass and sends them to the server, so "
- + "your other devices show a full library "
- + "without downloading anything themselves.";
- wrap: word-wrap;
- }
-
- if root.library-open: Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: root.thumbnailing
- ? "Thumbnailing…"
- : "Thumbnail the whole library";
- enabled: !root.thumbnailing;
- clicked => { root.thumbnail-library(); }
- }
- }
-
- // TRACES: FR-CULL-8
- // Face indexing, directly under the sweep that feeds
- // it. Detection runs on the proxies the pass above
- // builds, so a library that has not been thumbnailed
- // has nothing here to index — which is why the
- // coverage line says how many images are waiting on a
- // proxy rather than only how many are left.
- if root.library-open: Rectangle {
- height: Theme.gap-sm;
- }
-
- if root.library-open: Caption {
- text: "Face indexing looks for people across the "
- + "whole library, fetching each photograph it "
- + "has not seen. It runs once per library and "
- + "syncs, so your other devices never repeat "
- + "the work.";
- wrap: word-wrap;
- }
-
- if root.library-open: Segmented {
- label: "Face detector";
- options: root.face-detector-labels;
- selected: root.face-detector-selected;
- enabled: !root.face-indexing;
- picked(i) => { root.face-detector-picked(i); }
- }
-
- if root.library-open: Caption {
- text: "Fast misses the small faces in a group and "
- + "mistakes the odd dog for one. Balanced "
- + "finds a seventh more for almost the same "
- + "time. Thorough finds the most and takes "
- + "three times as long. Changing it indexes "
- + "the library again; names you have "
- + "confirmed are kept.";
- wrap: word-wrap;
- }
-
- if root.library-open && root.face-coverage != "": Caption {
- text: root.face-coverage;
- wrap: word-wrap;
- }
-
- if root.library-open && root.face-model-missing: Caption {
- text: "The chosen detector is not installed, so this cannot run.";
- wrap: word-wrap;
- }
-
- if root.library-open: Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: root.face-indexing
- ? "Indexing faces…"
- : "Index faces in the whole library";
- enabled: !root.face-indexing && !root.face-model-missing;
- clicked => { root.index-faces(); }
- }
- }
-
- // TRACES: FR-CULL-8 | FR-CULL-10
- // The re-index, under the pass it is the heavier
- // form of. Both run the completeness job
- // (dr_ui::repairs) and differ in one predicate:
- // indexing converges on coverage and leaves a face a
- // weaker detector found on a small proxy as found;
- // this one detects every such image again so every
- // box, landmark, crop and vector is the current
- // detector's from the native render, with names,
- // suggestions and rejections carried onto the new
- // faces. It fetches every original it visits, which
- // is why it says so and never starts on its own.
- if root.library-open: Rectangle {
- height: Theme.gap-sm;
- }
-
- if root.library-open: Caption {
- text: "Re-indexing detects every face again with "
- + "the chosen detector at full resolution, "
- + "on every photograph it has not yet been "
- + "over — including those an earlier, "
- + "faster pass looked at — and fills in "
- + "whatever else a record is missing on the "
- + "way. Names, suggestions and rejections "
- + "are carried onto the new faces. It "
- + "fetches every original it visits, and "
- + "it can be stopped and resumed.";
- wrap: word-wrap;
- }
-
- if root.library-open: Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: root.face-indexing
- ? "Indexing faces…"
- : "Re-index every face";
- enabled: !root.face-indexing && !root.face-model-missing;
- clicked => { root.reindex-faces(); }
- }
- }
-
- // TRACES: FR-CAT-11a
- // Duplicate originals: the same file catalogued in
- // several folders. Opens the review; nothing moves
- // from here.
- if root.library-open: Rectangle {
- height: Theme.gap-sm;
- }
-
- if root.library-open: Caption {
- text: root.duplicate-groups > 0
- ? "Duplicate originals: " + root.duplicate-groups
- + (root.duplicate-groups == 1 ? " file is" : " files are")
- + " in the library more than once. The review "
- + "checks each group is the same file, keeps one "
- + "copy with every rating, keyword and collection "
- + "merged onto it, and moves the rest to the trash."
- : "Duplicate originals: none. The same file in two "
- + "folders would be listed here.";
- wrap: word-wrap;
- }
-
- // GESTURE: Review duplicate originals
- // where: Settings
- // touch: Tap "Review duplicate originals"
- // pointer: Click "Review duplicate originals"
- // why: Beside the other whole-library passes, because
- // it is one; the sidebar offers the same page
- // under the trash.
- // manual: duplicate-originals
- if root.library-open && root.duplicate-groups > 0: Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: "Review duplicate originals";
- clicked => { root.find-duplicates(); }
- }
- }
-
- if root.activity-kept > 0: Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: "Clear finished";
- clicked => { root.clear-finished(); }
- }
- }
- }
- }
-
- // --- storage ---------------------------------------------
- Rectangle {
- width: content.column;
- height: storage.preferred-height;
-
- storage := Panel {
- width: 100%;
-
- PanelHeading { text: "STORAGE"; }
-
- Caption {
- text: "How much of this device's disk DarkRoom may use. "
- + "These are per-device and never travel with the library.";
- wrap: word-wrap;
- }
-
- // What is actually held, before what is allowed:
- // a ceiling means nothing without the current figure
- // to judge it against.
- if root.cache-usage != "": Value {
- text: root.cache-usage;
- compact: true;
- }
-
- Rectangle { height: Theme.gap-sm; }
-
- TextRow {
- label: "Cached originals";
- hint: "evicted oldest-first when full";
- text <=> root.original-budget;
- enabled: !root.original-unlimited;
- placeholder: "8.0 GB";
- accepted(t) => { root.original-budget-changed(t); }
- }
-
- Check {
- label: "No limit on cached originals";
- hint: "Nothing is ever evicted for space. "
- + "Pinned photographs are kept regardless.";
- checked: root.original-unlimited;
- toggled(on) => { root.original-unlimited-toggled(on); }
- }
-
- Rectangle { height: Theme.gap-sm; }
-
- TextRow {
- label: "Thumbnails and previews";
- hint: "what the grid draws from";
- text <=> root.thumbnail-budget;
- enabled: !root.thumbnail-unlimited;
- placeholder: "2.0 GB";
- accepted(t) => { root.thumbnail-budget-changed(t); }
- }
-
- Check {
- label: "No limit on thumbnails";
- checked: root.thumbnail-unlimited;
- toggled(on) => { root.thumbnail-unlimited-toggled(on); }
- }
-
- Rectangle { height: Theme.gap-sm; }
-
- Check {
- label: "Keep originals after opening them";
- hint: "The file was downloaded anyway, so keeping it "
- + "costs no bandwidth and saves the transfer next time.";
- checked: root.keep-opened;
- toggled(on) => { root.keep-opened-toggled(on); }
- }
-
- Rectangle { height: Theme.gap-sm; }
-
- // TRACES: FR-NC-6a | FR-UI-4
- Segmented {
- label: "Fetch ahead";
- hint: "photographs each side of the open one, "
- + "downloaded while you look at it so the "
- + "next step is instant — closest first";
- enabled: root.keep-opened;
- options: root.fetch-ahead-labels;
- selected: root.fetch-ahead-selected;
- picked(i) => { root.fetch-ahead-picked(i); }
- }
- }
- }
-
- // --- develop (FR-DEV-6) ----------------------------------
- Rectangle {
- width: content.column;
- height: develop-panel.preferred-height;
-
- develop-panel := Panel {
- width: 100%;
- spacing: Theme.gap;
-
- PanelHeading { text: "DEVELOP"; }
-
- // TRACES: FR-UI-1 | FR-UI-7
- // Where the adjustment groups are chosen from.
- //
- // A preference rather than a fixed rule because the
- // automatic answer is a guess and cannot be otherwise.
- // Neither platform can be asked what the user is
- // actually holding: an Android tablet in a keyboard
- // case is being driven like a desktop, and a
- // touchscreen laptop is whichever its owner says. The
- // guess is right often enough to be the default and
- // wrong often enough to need a way out.
- VerticalLayout {
- spacing: 4px;
-
- Segmented {
- label: "Adjustment groups";
- options: root.group-nav-labels;
- selected: root.group-nav-selected;
- picked(i) => { root.group-nav-picked(i); }
+ // The count beside the heading, because the list
+ // below carries stopped jobs too and "how many are
+ // running" should not have to be counted by eye.
+ Caption {
+ text: root.activity-running > 0
+ ? root.activity-running + " running" : "";
+ horizontal-alignment: right;
+ horizontal-stretch: 1;
+ }
}
Caption {
- text: "Down the tool rail, or in a strip above "
- + "the panel. Automatic follows how this "
- + "device is driven — here, "
- + root.group-nav-auto-says + ".";
+ text: "Scans, transfers and syncs running behind the "
+ + "interface. Everything here survives leaving "
+ + "this page; nothing here needs it open.";
wrap: word-wrap;
}
- }
- // TRACES: FR-DEV-6
- // Which kinds of edit a copy, a paste or a preset
- // carries.
- //
- // This replaced a single "copy crop and rotation"
- // checkbox. That question was the right one to ask
- // first — geometry is the kind whose accidental
- // travel destroys work — but it was the only question
- // a boolean could ask, and "match the colour but not
- // the sharpening" had no way to be said.
- //
- // Chips rather than six checkboxes: these are one
- // question with six answers, and a column of ticks
- // reads as six unrelated preferences.
- VerticalLayout {
- spacing: 4px;
+ Rectangle { height: Theme.gap-sm; }
- Label { text: "Copying carries"; }
-
- ScopeChips {
- kinds: root.copy-scope-kinds;
- columns: 6;
- toggled(name) => { root.copy-scope-toggled(name); }
+ // Says nothing is running, rather than showing an empty
+ // box: a list that is empty because the work finished
+ // and one that is empty because the register is broken
+ // look identical otherwise.
+ if root.activity-rows.length == 0: Caption {
+ text: "Nothing running.";
}
- Caption {
- text: root.copy-scope-empty
- ? "Nothing selected — a paste would change nothing."
- : "Geometry is off by default: a crop is a decision "
- + "about one photograph's composition, and carrying "
- + "it re-frames every image pasted onto.";
- warn: root.copy-scope-empty;
+ for row in root.activity-rows: ActivityItem {
+ job: row;
}
- }
- }
- }
- // --- library ---------------------------------------------
- Rectangle {
- width: content.column;
- height: library-panel.preferred-height;
+ // TRACES: FR-CAT-3 | FR-NC-3 | FR-NC-7
+ // The one job here that is started rather than
+ // observed, and it belongs on this page rather than
+ // in the header: it runs for an hour, it is asked for
+ // once, and its progress appears in the list directly
+ // above.
+ if root.library-open: Rectangle {
+ height: Theme.gap-sm;
+ }
- library-panel := Panel {
- width: 100%;
- spacing: Theme.gap;
+ if root.library-open: Caption {
+ text: "Thumbnails are built for photographs as you "
+ + "browse them. This builds the rest in one "
+ + "pass and sends them to the server, so "
+ + "your other devices show a full library "
+ + "without downloading anything themselves.";
+ wrap: word-wrap;
+ }
- PanelHeading { text: "LIBRARY"; }
-
- Segmented {
- label: "Timeline detail";
- // Says what the choice is *about*, since neither
- // number means anything on its own: it is how
- // finely the capture-time axis beside the grid is
- // divided, and the honest trade is precision
- // against being able to hit a bar with a thumb.
- hint: "bars on the capture-time axis — fewer are "
- + "easier to hit with a finger, more show "
- + "finer structure";
- options: root.timeline-bar-labels;
- selected: root.timeline-bars-selected;
- picked(i) => { root.timeline-bars-picked(i); }
- }
- }
- }
-
- // --- export ----------------------------------------------
- Rectangle {
- width: content.column;
- height: export-panel.preferred-height;
-
- export-panel := Panel {
- width: 100%;
- spacing: Theme.gap;
-
- PanelHeading { text: "EXPORT DEFAULTS"; }
-
- Caption {
- text: "What every export uses. Ctrl+E shows these on their own, "
- + "beside an Export button.";
- wrap: word-wrap;
- }
-
- ExportImageOptions {}
- }
- }
-
- // --- about and diagnostics -------------------------------
- Rectangle {
- width: content.column;
- height: about-panel.preferred-height;
-
- about-panel := Panel {
- width: 100%;
- spacing: Theme.gap;
-
- PanelHeading { text: "ABOUT"; }
-
- // The version first, because it is the one line anyone
- // is ever asked to quote. A bug report that names a
- // version names a commit.
- HorizontalLayout {
- spacing: Theme.gap;
- Label { text: "Version"; }
- Value { text: root.app-version; horizontal-stretch: 1; overflow: elide; }
- }
-
- // The manual, beside the version because both answer
- // "what is this application": one says which, the
- // other what it does. Installed with it, so it opens
- // with no network.
- HorizontalLayout {
- spacing: Theme.gap;
- Label { text: "Manual"; vertical-alignment: center; }
- Rectangle {
- horizontal-stretch: 1;
+ if root.library-open: Rectangle {
height: Theme.control-height;
+
Button {
x: 0;
- text: "Open the manual";
- clicked => { root.open-manual(); }
+ text: root.thumbnailing
+ ? "Thumbnailing…"
+ : "Thumbnail the whole library";
+ enabled: !root.thumbnailing;
+ clicked => { root.thumbnail-library(); }
+ }
+ }
+
+ // TRACES: FR-CULL-8
+ // Face indexing, directly under the sweep that feeds
+ // it. Detection runs on the proxies the pass above
+ // builds, so a library that has not been thumbnailed
+ // has nothing here to index — which is why the
+ // coverage line says how many images are waiting on a
+ // proxy rather than only how many are left.
+ if root.library-open: Rectangle {
+ height: Theme.gap-sm;
+ }
+
+ if root.library-open: Caption {
+ text: "Face indexing looks for people across the "
+ + "whole library, fetching each photograph it "
+ + "has not seen. It runs once per library and "
+ + "syncs, so your other devices never repeat "
+ + "the work.";
+ wrap: word-wrap;
+ }
+
+ if root.library-open: Segmented {
+ label: "Face detector";
+ options: root.face-detector-labels;
+ selected: root.face-detector-selected;
+ enabled: !root.face-indexing;
+ picked(i) => { root.face-detector-picked(i); }
+ }
+
+ if root.library-open: Caption {
+ text: "Fast misses the small faces in a group and "
+ + "mistakes the odd dog for one. Balanced "
+ + "finds a seventh more for almost the same "
+ + "time. Thorough finds the most and takes "
+ + "three times as long. Changing it indexes "
+ + "the library again; names you have "
+ + "confirmed are kept.";
+ wrap: word-wrap;
+ }
+
+ if root.library-open && root.face-coverage != "": Caption {
+ text: root.face-coverage;
+ wrap: word-wrap;
+ }
+
+ if root.library-open && root.face-model-missing: Caption {
+ text: "The chosen detector is not installed, so this cannot run.";
+ wrap: word-wrap;
+ }
+
+ if root.library-open: Rectangle {
+ height: Theme.control-height;
+
+ Button {
+ x: 0;
+ text: root.face-indexing
+ ? "Indexing faces…"
+ : "Index faces in the whole library";
+ enabled: !root.face-indexing && !root.face-model-missing;
+ clicked => { root.index-faces(); }
+ }
+ }
+
+ // TRACES: FR-CULL-8 | FR-CULL-10
+ // The re-index, under the pass it is the heavier
+ // form of. Both run the completeness job
+ // (dr_ui::repairs) and differ in one predicate:
+ // indexing converges on coverage and leaves a face a
+ // weaker detector found on a small proxy as found;
+ // this one detects every such image again so every
+ // box, landmark, crop and vector is the current
+ // detector's from the native render, with names,
+ // suggestions and rejections carried onto the new
+ // faces. It fetches every original it visits, which
+ // is why it says so and never starts on its own.
+ if root.library-open: Rectangle {
+ height: Theme.gap-sm;
+ }
+
+ if root.library-open: Caption {
+ text: "Re-indexing detects every face again with "
+ + "the chosen detector at full resolution, "
+ + "on every photograph it has not yet been "
+ + "over — including those an earlier, "
+ + "faster pass looked at — and fills in "
+ + "whatever else a record is missing on the "
+ + "way. Names, suggestions and rejections "
+ + "are carried onto the new faces. It "
+ + "fetches every original it visits, and "
+ + "it can be stopped and resumed.";
+ wrap: word-wrap;
+ }
+
+ if root.library-open: Rectangle {
+ height: Theme.control-height;
+
+ Button {
+ x: 0;
+ text: root.face-indexing
+ ? "Indexing faces…"
+ : "Re-index every face";
+ enabled: !root.face-indexing && !root.face-model-missing;
+ clicked => { root.reindex-faces(); }
+ }
+ }
+
+ // TRACES: FR-CAT-11a
+ // Duplicate originals: the same file catalogued in
+ // several folders. Opens the review; nothing moves
+ // from here.
+ if root.library-open: Rectangle {
+ height: Theme.gap-sm;
+ }
+
+ if root.library-open: Caption {
+ text: root.duplicate-groups > 0
+ ? "Duplicate originals: " + root.duplicate-groups
+ + (root.duplicate-groups == 1 ? " file is" : " files are")
+ + " in the library more than once. The review "
+ + "checks each group is the same file, keeps one "
+ + "copy with every rating, keyword and collection "
+ + "merged onto it, and moves the rest to the trash."
+ : "Duplicate originals: none. The same file in two "
+ + "folders would be listed here.";
+ wrap: word-wrap;
+ }
+
+ // GESTURE: Review duplicate originals
+ // where: Settings
+ // touch: Tap "Review duplicate originals"
+ // pointer: Click "Review duplicate originals"
+ // why: Beside the other whole-library passes, because
+ // it is one; the sidebar offers the same page
+ // under the trash.
+ // manual: duplicate-originals
+ if root.library-open && root.duplicate-groups > 0: Rectangle {
+ height: Theme.control-height;
+
+ Button {
+ x: 0;
+ text: "Review duplicate originals";
+ clicked => { root.find-duplicates(); }
+ }
+ }
+
+ if root.activity-kept > 0: Rectangle {
+ height: Theme.control-height;
+
+ Button {
+ x: 0;
+ text: "Clear finished";
+ clicked => { root.clear-finished(); }
}
}
}
+ }
- HorizontalLayout {
- spacing: Theme.gap;
- Label { text: "Graphics"; }
- Value {
- text: root.adapter + " (" + root.backend + ")";
- horizontal-stretch: 1;
- overflow: elide;
+ // --- storage ---------------------------------------------
+ Rectangle {
+ width: content.column;
+ height: storage.preferred-height;
+
+ storage := Panel {
+ width: 100%;
+
+ PanelHeading { text: "STORAGE"; }
+
+ Caption {
+ text: "How much of this device's disk DarkRoom may use. "
+ + "These are per-device and never travel with the library.";
+ wrap: word-wrap;
+ }
+
+ // What is actually held, before what is allowed:
+ // a ceiling means nothing without the current figure
+ // to judge it against.
+ if root.cache-usage != "": Value {
+ text: root.cache-usage;
+ compact: true;
+ }
+
+ Rectangle { height: Theme.gap-sm; }
+
+ TextRow {
+ label: "Cached originals";
+ hint: "evicted oldest-first when full";
+ text <=> root.original-budget;
+ enabled: !root.original-unlimited;
+ placeholder: "8.0 GB";
+ accepted(t) => { root.original-budget-changed(t); }
+ }
+
+ Check {
+ label: "No limit on cached originals";
+ hint: "Nothing is ever evicted for space. "
+ + "Pinned photographs are kept regardless.";
+ checked: root.original-unlimited;
+ toggled(on) => { root.original-unlimited-toggled(on); }
+ }
+
+ Rectangle { height: Theme.gap-sm; }
+
+ TextRow {
+ label: "Thumbnails and previews";
+ hint: "what the grid draws from";
+ text <=> root.thumbnail-budget;
+ enabled: !root.thumbnail-unlimited;
+ placeholder: "2.0 GB";
+ accepted(t) => { root.thumbnail-budget-changed(t); }
+ }
+
+ Check {
+ label: "No limit on thumbnails";
+ checked: root.thumbnail-unlimited;
+ toggled(on) => { root.thumbnail-unlimited-toggled(on); }
+ }
+
+ Rectangle { height: Theme.gap-sm; }
+
+ Check {
+ label: "Keep originals after opening them";
+ hint: "The file was downloaded anyway, so keeping it "
+ + "costs no bandwidth and saves the transfer next time.";
+ checked: root.keep-opened;
+ toggled(on) => { root.keep-opened-toggled(on); }
+ }
+
+ Rectangle { height: Theme.gap-sm; }
+
+ // TRACES: FR-NC-6a | FR-UI-4
+ Segmented {
+ label: "Fetch ahead";
+ hint: "photographs each side of the open one, "
+ + "downloaded while you look at it so the "
+ + "next step is instant — closest first";
+ enabled: root.keep-opened;
+ options: root.fetch-ahead-labels;
+ selected: root.fetch-ahead-selected;
+ picked(i) => { root.fetch-ahead-picked(i); }
}
}
+ }
- // TRACES: FR-INF-1
- // The backend the models run on, and why. Beside
- // Graphics because it is the same kind of fact: a
- // property of this device, chosen by measurement,
- // that a bug report about a slow index should quote.
- HorizontalLayout {
+ // --- develop (FR-DEV-6) ----------------------------------
+ Rectangle {
+ width: content.column;
+ height: develop-panel.preferred-height;
+
+ develop-panel := Panel {
+ width: 100%;
spacing: Theme.gap;
- Label { text: "Inference"; }
- Value {
- text: root.inference-backend;
- horizontal-stretch: 1;
- overflow: elide;
+
+ PanelHeading { text: "DEVELOP"; }
+
+ // TRACES: FR-UI-1 | FR-UI-7
+ // Where the adjustment groups are chosen from.
+ //
+ // A preference rather than a fixed rule because the
+ // automatic answer is a guess and cannot be otherwise.
+ // Neither platform can be asked what the user is
+ // actually holding: an Android tablet in a keyboard
+ // case is being driven like a desktop, and a
+ // touchscreen laptop is whichever its owner says. The
+ // guess is right often enough to be the default and
+ // wrong often enough to need a way out.
+ VerticalLayout {
+ spacing: 4px;
+
+ Segmented {
+ label: "Adjustment groups";
+ options: root.group-nav-labels;
+ selected: root.group-nav-selected;
+ picked(i) => { root.group-nav-picked(i); }
+ }
+
+ Caption {
+ text: "Down the tool rail, or in a strip above "
+ + "the panel. Automatic follows how this "
+ + "device is driven — here, "
+ + root.group-nav-auto-says + ".";
+ wrap: word-wrap;
+ }
+ }
+
+ // TRACES: FR-DEV-6
+ // Which kinds of edit a copy, a paste or a preset
+ // carries.
+ //
+ // This replaced a single "copy crop and rotation"
+ // checkbox. That question was the right one to ask
+ // first — geometry is the kind whose accidental
+ // travel destroys work — but it was the only question
+ // a boolean could ask, and "match the colour but not
+ // the sharpening" had no way to be said.
+ //
+ // Chips rather than six checkboxes: these are one
+ // question with six answers, and a column of ticks
+ // reads as six unrelated preferences.
+ VerticalLayout {
+ spacing: 4px;
+
+ Label { text: "Copying carries"; }
+
+ ScopeChips {
+ kinds: root.copy-scope-kinds;
+ columns: 6;
+ toggled(name) => { root.copy-scope-toggled(name); }
+ }
+
+ Caption {
+ text: root.copy-scope-empty
+ ? "Nothing selected — a paste would change nothing."
+ : "Geometry is off by default: a crop is a decision "
+ + "about one photograph's composition, and carrying "
+ + "it re-frames every image pasted onto.";
+ warn: root.copy-scope-empty;
+ }
}
}
+ }
- if root.inference-detail != "": Caption {
- text: root.inference-detail;
- wrap: word-wrap;
- }
+ // --- library ---------------------------------------------
+ Rectangle {
+ width: content.column;
+ height: library-panel.preferred-height;
- HorizontalLayout {
+ library-panel := Panel {
+ width: 100%;
spacing: Theme.gap;
- Label { text: "Frame rate"; }
- // Still earns the warning hue here. It is the
- // number that says whether the zero-copy path is
- // holding up, which is the assumption the whole
- // display design rests on.
- // `Caption` rather than `Value` here alone: it is
- // the one that carries `warn`, and the frame rate
- // is the one reading on this page that can be bad
- // news rather than merely a fact.
- Caption { text: root.fps + " fps"; warn: root.fps < 55; horizontal-stretch: 1; }
- }
- HorizontalLayout {
- spacing: Theme.gap;
- Label { text: "Layout"; }
- Value { text: root.layout-class; horizontal-stretch: 1; }
- }
+ PanelHeading { text: "LIBRARY"; }
- // TRACES: FR-DSP-8
- // Which display, and what colour it is being sent.
- HorizontalLayout {
- spacing: Theme.gap;
- Label { text: "Display"; }
- Value {
- text: root.display-name;
- horizontal-stretch: 1;
- overflow: elide;
+ Segmented {
+ label: "Timeline detail";
+ // Says what the choice is *about*, since neither
+ // number means anything on its own: it is how
+ // finely the capture-time axis beside the grid is
+ // divided, and the honest trade is precision
+ // against being able to hit a bar with a thumb.
+ hint: "bars on the capture-time axis — fewer are "
+ + "easier to hit with a finger, more show "
+ + "finer structure";
+ options: root.timeline-bar-labels;
+ selected: root.timeline-bars-selected;
+ picked(i) => { root.timeline-bars-picked(i); }
}
}
+ }
- HorizontalLayout {
+ // --- export ----------------------------------------------
+ Rectangle {
+ width: content.column;
+ height: export-panel.preferred-height;
+
+ export-panel := Panel {
+ width: 100%;
spacing: Theme.gap;
- Label { text: "Display colour"; }
- Value {
- text: root.display-colour;
- horizontal-stretch: 1;
- // Wraps rather than elides: this is the one
- // value on the page that is a sentence, and
- // eliding it would cut off the half that says
- // *why* — which is the half FR-DSP-8 asks for.
+
+ PanelHeading { text: "EXPORT DEFAULTS"; }
+
+ Caption {
+ text: "What every export uses. Ctrl+E shows these on their own, "
+ + "beside an Export button.";
+ wrap: word-wrap;
+ }
+
+ ExportImageOptions {}
+ }
+ }
+
+ // --- about and diagnostics -------------------------------
+ Rectangle {
+ width: content.column;
+ height: about-panel.preferred-height;
+
+ about-panel := Panel {
+ width: 100%;
+ spacing: Theme.gap;
+
+ PanelHeading { text: "ABOUT"; }
+
+ // The version first, because it is the one line anyone
+ // is ever asked to quote. A bug report that names a
+ // version names a commit.
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Version"; }
+ Value { text: root.app-version; horizontal-stretch: 1; overflow: elide; }
+ }
+
+ // The manual, beside the version because both answer
+ // "what is this application": one says which, the
+ // other what it does. Installed with it, so it opens
+ // with no network.
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Manual"; vertical-alignment: center; }
+ Rectangle {
+ horizontal-stretch: 1;
+ height: Theme.control-height;
+ Button {
+ x: 0;
+ text: "Open the manual";
+ clicked => { root.open-manual(); }
+ }
+ }
+ }
+
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Graphics"; }
+ Value {
+ text: root.adapter + " (" + root.backend + ")";
+ horizontal-stretch: 1;
+ overflow: elide;
+ }
+ }
+
+ // TRACES: FR-INF-1
+ // The backend the models run on, and why. Beside
+ // Graphics because it is the same kind of fact: a
+ // property of this device, chosen by measurement,
+ // that a bug report about a slow index should quote.
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Inference"; }
+ Value {
+ text: root.inference-backend;
+ horizontal-stretch: 1;
+ overflow: elide;
+ }
+ }
+
+ if root.inference-detail != "": Caption {
+ text: root.inference-detail;
+ wrap: word-wrap;
+ }
+
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Frame rate"; }
+ // Still earns the warning hue here. It is the
+ // number that says whether the zero-copy path is
+ // holding up, which is the assumption the whole
+ // display design rests on.
+ // `Caption` rather than `Value` here alone: it is
+ // the one that carries `warn`, and the frame rate
+ // is the one reading on this page that can be bad
+ // news rather than merely a fact.
+ Caption { text: root.fps + " fps"; warn: root.fps < 55; horizontal-stretch: 1; }
+ }
+
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Layout"; }
+ Value { text: root.layout-class; horizontal-stretch: 1; }
+ }
+
+ // TRACES: FR-DSP-8
+ // Which display, and what colour it is being sent.
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Display"; }
+ Value {
+ text: root.display-name;
+ horizontal-stretch: 1;
+ overflow: elide;
+ }
+ }
+
+ HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Display colour"; }
+ Value {
+ text: root.display-colour;
+ horizontal-stretch: 1;
+ // Wraps rather than elides: this is the one
+ // value on the page that is a sentence, and
+ // eliding it would cut off the half that says
+ // *why* — which is the half FR-DSP-8 asks for.
+ wrap: word-wrap;
+ }
+ }
+
+ if root.display-others != "": HorizontalLayout {
+ spacing: Theme.gap;
+ Label { text: "Other displays"; }
+ Value {
+ text: root.display-others;
+ horizontal-stretch: 1;
+ wrap: word-wrap;
+ }
+ }
+
+ Caption {
+ text: "Graphics, frame rate and display colour "
+ + "describe this session, not a setting — they "
+ + "are here so a bug report can quote them.";
wrap: word-wrap;
}
}
+ }
- if root.display-others != "": HorizontalLayout {
+ // --- diagnostics -----------------------------------------
+ //
+ // TRACES: NFR-OPS-1
+ // Two presses, never one. The first gathers and shows; the
+ // second writes. The requirement asks for a preview-and-
+ // consent step before anything leaves the device, and a
+ // single button that gathered and saved would be the step
+ // skipped under the name of convenience. Nothing is sent by
+ // either press — the file is for the user to attach.
+ Rectangle {
+ width: content.column;
+ height: diagnostics.preferred-height;
+
+ diagnostics := Panel {
+ width: 100%;
spacing: Theme.gap;
- Label { text: "Other displays"; }
- Value {
- text: root.display-others;
- horizontal-stretch: 1;
+
+ PanelHeading { text: "DIAGNOSTICS"; }
+
+ Caption {
+ text: "The log, any crash records, and the facts "
+ + "above, as one text file to attach to a bug "
+ + "report. Credentials and file paths are "
+ + "removed first, and you see what is in it "
+ + "before anything is written.";
+ wrap: word-wrap;
+ }
+
+ if root.diagnostics-preview == "": Rectangle {
+ height: Theme.control-height;
+
+ Button {
+ x: 0;
+ text: "Show what a bundle would contain";
+ clicked => { root.diagnostics-prepare(); }
+ }
+ }
+
+ if root.diagnostics-preview != "": Value {
+ text: root.diagnostics-preview;
+ wrap: word-wrap;
+ }
+
+ if root.diagnostics-preview != "": HorizontalLayout {
+ spacing: Theme.gap;
+ alignment: start;
+
+ Button {
+ text: "Save the bundle";
+ clicked => { root.diagnostics-save(); }
+ }
+
+ Button {
+ text: "Don't";
+ clicked => { root.diagnostics-discard(); }
+ }
+ }
+
+ if root.diagnostics-result != "": Caption {
+ text: root.diagnostics-result;
wrap: word-wrap;
}
}
-
- Caption {
- text: "Graphics, frame rate and display colour "
- + "describe this session, not a setting — they "
- + "are here so a bug report can quote them.";
- wrap: word-wrap;
- }
}
- }
- // --- diagnostics -----------------------------------------
- //
- // TRACES: NFR-OPS-1
- // Two presses, never one. The first gathers and shows; the
- // second writes. The requirement asks for a preview-and-
- // consent step before anything leaves the device, and a
- // single button that gathered and saved would be the step
- // skipped under the name of convenience. Nothing is sent by
- // either press — the file is for the user to attach.
- Rectangle {
- width: content.column;
- height: diagnostics.preferred-height;
+ // --- naming and destination ------------------------------
+ //
+ // Its own panel rather than more of the export one: format and
+ // size describe the image, these describe the file. The export
+ // panel was long enough that the boundary was worth drawing.
+ Rectangle {
+ width: content.column;
+ height: naming.preferred-height;
- diagnostics := Panel {
- width: 100%;
- spacing: Theme.gap;
-
- PanelHeading { text: "DIAGNOSTICS"; }
-
- Caption {
- text: "The log, any crash records, and the facts "
- + "above, as one text file to attach to a bug "
- + "report. Credentials and file paths are "
- + "removed first, and you see what is in it "
- + "before anything is written.";
- wrap: word-wrap;
- }
-
- if root.diagnostics-preview == "": Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: "Show what a bundle would contain";
- clicked => { root.diagnostics-prepare(); }
- }
- }
-
- if root.diagnostics-preview != "": Value {
- text: root.diagnostics-preview;
- wrap: word-wrap;
- }
-
- if root.diagnostics-preview != "": HorizontalLayout {
+ naming := Panel {
+ width: 100%;
spacing: Theme.gap;
- alignment: start;
- Button {
- text: "Save the bundle";
- clicked => { root.diagnostics-save(); }
+ PanelHeading { text: "FILES AND METADATA"; }
+
+ // TRACES: FR-CAT-13 | NFR-R4
+ // Reading is not a choice — a sidecar another editor
+ // wrote is taken in regardless, since reading changes
+ // nothing in the folder. Writing beside somebody's
+ // originals is, and it starts off.
+ Check {
+ label: "Write ratings, labels and keywords to XMP sidecars";
+ hint: "Beside the originals, as Lightroom and darktable "
+ + "do, so other applications see them. Only those "
+ + "fields are written; everything else in an "
+ + "existing sidecar is left exactly as it was.";
+ checked: root.write-xmp;
+ toggled(on) => { root.write-xmp-toggled(on); }
}
- Button {
- text: "Don't";
- clicked => { root.diagnostics-discard(); }
+ // The offered reload. Shown only while there is
+ // something to offer: a disagreement between an
+ // `.xmp` changed elsewhere and what this catalog
+ // holds, which the automatic pull records rather
+ // than resolves.
+ if root.xmp-conflicts > 0: Caption {
+ text: root.xmp-conflicts
+ + (root.xmp-conflicts == 1
+ ? " XMP sidecar disagrees"
+ : " XMP sidecars disagree")
+ + " with this catalog about a rating, label or "
+ + "caption. The catalog's values stand until you "
+ + "say otherwise.";
+ wrap: word-wrap;
}
- }
- if root.diagnostics-result != "": Caption {
- text: root.diagnostics-result;
- wrap: word-wrap;
+ if root.xmp-conflicts > 0: Rectangle {
+ height: Theme.control-height;
+
+ Button {
+ x: 0;
+ text: "Take the sidecars' values";
+ clicked => { root.xmp-reload(); }
+ }
+ }
+
+ ExportFileOptions {}
}
}
}
+ }
- // --- naming and destination ------------------------------
- //
- // Its own panel rather than more of the export one: format and
- // size describe the image, these describe the file. The export
- // panel was long enough that the boundary was worth drawing.
- Rectangle {
- width: content.column;
- height: naming.preferred-height;
-
- naming := Panel {
- width: 100%;
- spacing: Theme.gap;
-
- PanelHeading { text: "FILES AND METADATA"; }
-
- // TRACES: FR-CAT-13 | NFR-R4
- // Reading is not a choice — a sidecar another editor
- // wrote is taken in regardless, since reading changes
- // nothing in the folder. Writing beside somebody's
- // originals is, and it starts off.
- Check {
- label: "Write ratings, labels and keywords to XMP sidecars";
- hint: "Beside the originals, as Lightroom and darktable "
- + "do, so other applications see them. Only those "
- + "fields are written; everything else in an "
- + "existing sidecar is left exactly as it was.";
- checked: root.write-xmp;
- toggled(on) => { root.write-xmp-toggled(on); }
- }
-
- // The offered reload. Shown only while there is
- // something to offer: a disagreement between an
- // `.xmp` changed elsewhere and what this catalog
- // holds, which the automatic pull records rather
- // than resolves.
- if root.xmp-conflicts > 0: Caption {
- text: root.xmp-conflicts
- + (root.xmp-conflicts == 1
- ? " XMP sidecar disagrees"
- : " XMP sidecars disagree")
- + " with this catalog about a rating, label or "
- + "caption. The catalog's values stand until you "
- + "say otherwise.";
- wrap: word-wrap;
- }
-
- if root.xmp-conflicts > 0: Rectangle {
- height: Theme.control-height;
-
- Button {
- x: 0;
- text: "Take the sidecars' values";
- clicked => { root.xmp-reload(); }
- }
- }
-
- ExportFileOptions {}
- }
- }
+ // A bar for a pointer: the page is several screens long, and the bar is
+ // what says so before anything has been scrolled.
+ ScrollBar {
+ x: parent.width - self.width;
+ y: 0px;
+ viewport-y <=> page-flick.viewport-y;
+ viewport-height: page-flick.viewport-height;
+ visible-height: page-flick.height;
}
}
}