diff --git a/docs/gestures.md b/docs/gestures.md
index d6f7d57..264fa7e 100644
--- a/docs/gestures.md
+++ b/docs/gestures.md
@@ -5,7 +5,7 @@
Every entry here is extracted from the comment beside the code that implements it, so this file cannot describe a gesture the application does not have. Add one by writing a `GESTURE:` block next to the implementation; there is nowhere else to write it.
-41 gestures, in 4 places.
+40 gestures, in 4 places.
## Develop
@@ -25,7 +25,7 @@ Sampling a neutral is the first move of the tonal pass — every colour judgemen
Anchored on the fingers' midpoint, and on the pointer, so the gesture reads as magnifying the picture rather than sliding it about. Double-tap is the way to an exact 1:1; this is the way to everything in between.
-`ui/dr-ui/ui/app.slint:1988`
+`ui/dr-ui/ui/app.slint:2028`
### Move a magnified photograph about
@@ -34,7 +34,7 @@ Anchored on the fingers' midpoint, and on the pointer, so the gesture reads as m
Only once there is something outside the viewport to reach, which is why the cursor becomes a hand exactly then. The view is clamped to the frame: panning past the edge would show undefined area beside the photograph, and that reads as a rendering fault rather than as the end of the picture.
-`ui/dr-ui/ui/app.slint:2079`
+`ui/dr-ui/ui/app.slint:2119`
### Paint a mask by hand
@@ -43,7 +43,7 @@ Only once there is something outside the viewport to reach, which is why the cur
A model's mask stops inside a shoulder and leaks into the hair, and no single edge control fixes two errors that go opposite ways. The whole stroke is one step in the history, so taking a mark back costs one press however long it took to make.
-`ui/dr-ui/ui/app.slint:2166`
+`ui/dr-ui/ui/app.slint:2206`
### Take back the last change
@@ -53,7 +53,7 @@ A model's mask stops inside a shoulder and leaks into the hair, and no single ed
A whole drag is one step, so undo takes back a decision rather than a frame of a gesture. The list is there because arriving six steps back costs what arriving from one does.
-`ui/dr-ui/ui/app.slint:2387`
+`ui/dr-ui/ui/app.slint:2427`
### Do it again after taking it back
@@ -61,7 +61,7 @@ A whole drag is one step, so undo takes back a decision rather than a frame of a
- **Pointer** — Click it, or press Redo in the History header
- **Keyboard** — Ctrl+Shift+Z
-`ui/dr-ui/ui/app.slint:2400`
+`ui/dr-ui/ui/app.slint:2440`
### Copy the settings from this photograph
@@ -71,7 +71,7 @@ A whole drag is one step, so undo takes back a decision rather than a frame of a
The panel is the copy that has to work: a tablet has no modifier key to hold and no menu bar to hang the action from. The shortcut is an accelerator for a control that is on screen either way.
-`ui/dr-ui/ui/app.slint:2433`
+`ui/dr-ui/ui/app.slint:2473`
### Paste the settings onto this photograph
@@ -81,7 +81,7 @@ The panel is the copy that has to work: a tablet has no modifier key to hold and
The button names what would be pasted — "3 adjustments", and whether the crop is coming with it — which the shortcut cannot say. Both paste the same scope.
-`ui/dr-ui/ui/app.slint:2445`
+`ui/dr-ui/ui/app.slint:2485`
### Change which group of adjustments is on screen
@@ -91,7 +91,7 @@ The button names what would be pasted — "3 adjustments", and whether the crop
The groups are whatever the operation set declares itself to be about, so there are as many as the pipeline has and no key can be assigned to one of them by name. Stepping is the binding that survives a node being added.
-`ui/dr-ui/ui/app.slint:2473`
+`ui/dr-ui/ui/app.slint:2513`
### Look at the photograph at 1:1
@@ -101,7 +101,7 @@ The groups are whatever the operation set declares itself to be about, so there
Noise reduction and capture sharpening are judgements about single pixels, and a fitted view averages several of the file's into each one on screen — so the frame looks softer than it is and the correction goes too far. The point and the magnification survive opening the next photograph, which is what makes checking the same eye across forty portraits forty keystrokes rather than forty pans.
-`ui/dr-ui/ui/app.slint:2508`
+`ui/dr-ui/ui/app.slint:2548`
### Move to the next or previous photograph
@@ -111,7 +111,7 @@ Noise reduction and capture sharpening are judgements about single pixels, and a
The edit on screen is saved on the way out, so stepping through a folder is as much a departure as going back to the grid and loses nothing.
-`ui/dr-ui/ui/app.slint:2560`
+`ui/dr-ui/ui/app.slint:2600`
### See the photograph before you edited it
@@ -121,7 +121,7 @@ The edit on screen is saved on the way out, so stepping through a folder is as m
Held rather than toggled, and no split screen: a split halves the working image on the tablet the column was sized for, and the comparison photographers describe making is a flick back and forth. It takes no history step, so checking whether a frame is overcooked costs nothing to undo afterwards.
-`ui/dr-ui/ui/app.slint:2684`
+`ui/dr-ui/ui/app.slint:2724`
### Put one control back to its default
@@ -226,7 +226,7 @@ Double-click is what a file manager and a Lightroom panel use for the same thing
Grouping over-merges on siblings, on parents and children, and on the same person a decade apart, so splitting is as prominent as merging. A tool that can only merge makes its own errors permanent.
-`ui/dr-ui/ui/identity.slint:188`
+`ui/dr-ui/ui/identity.slint:161`
### Rule on a suggested face
@@ -235,7 +235,7 @@ Grouping over-merges on siblings, on parents and children, and on the same perso
A face is either the system's guess or the user's judgement, and the two are never conflated. A rejection is remembered, so the face is not suggested for that person again. The gesture note above is the whole label: a tick and a cross are only "confirm" and "reject" to someone who can see the suggestion they sit beside, and `IconButton`'s fallback would announce them as "check" and "cross" — two icon names that say nothing about which person is being ruled on.
-`ui/dr-ui/ui/identity.slint:208`
+`ui/dr-ui/ui/identity.slint:181`
### See a person's photographs
@@ -244,7 +244,7 @@ A face is either the system's guess or the user's judgement, and the two are nev
This is the point of having identified anybody. Without it the screen is a filing cabinet with no drawer handles.
-`ui/dr-ui/ui/identity.slint:635`
+`ui/dr-ui/ui/identity.slint:602`
### Change how faces are grouped
@@ -253,7 +253,7 @@ This is the point of having identified anybody. Without it the screen is a filin
The right match confidence is a property of your library, not of the model. "What would this do?" answers for this library without writing anything; names, confirmations and the groups you have set aside are kept whatever the dials say.
-`ui/dr-ui/ui/identity.slint:672`
+`ui/dr-ui/ui/identity.slint:639`
## Library grid
@@ -301,15 +301,6 @@ This replaced a double tap, which had no visible state and could take forty phot
`ui/dr-ui/ui/library.slint:1414`
-### Take the blinks out of a burst
-
-- **Touch** — Narrow to a person, then tap "Eyes open" beside their name on the filter bar
-- **Pointer** — Narrow to a person, then click "Eyes open" beside their name on the filter bar
-
-Face indexing reads each face's eyes. The chip drops frames where the chosen people are caught blinking, and leaves sunglasses and eyes it could not read alone.
-
-`ui/dr-ui/ui/library.slint:2102`
-
### Find photographs with two people in them
- **Touch** — Open the People chip on the filter bar, tap each name, then switch the chip beside them to "all of them"
@@ -317,7 +308,7 @@ Face indexing reads each face's eyes. The chip drops frames where the chosen peo
"Any of them" is a union and "all of them" is an intersection. The tray is where both terms and the choice between them live, because a filter belongs on the filter bar.
-`ui/dr-ui/ui/library.slint:2131`
+`ui/dr-ui/ui/library.slint:2106`
### Resize the thumbnails
@@ -326,7 +317,7 @@ Face indexing reads each face's eyes. The chip drops frames where the chosen peo
There is no wheel on a tablet, so without the pinch the cell size could only be changed by a control a finger cannot reach.
-`ui/dr-ui/ui/library.slint:2785`
+`ui/dr-ui/ui/library.slint:2759`
### File photographs in a collection
@@ -335,7 +326,7 @@ There is no wheel on a tablet, so without the pinch the cell size could only be
The selection is what the drag carries, which is why selecting several is worth the mode: forty photographs file in one gesture.
-`ui/dr-ui/ui/library.slint:2982`
+`ui/dr-ui/ui/library.slint:2956`
### Open a photograph
@@ -344,7 +335,7 @@ The selection is what the drag carries, which is why selecting several is worth
A tap opens; a tap that *moved* does not. Travel is what separates a deliberate tap from a hand brushing past, and it is the only thing that does: the two are the same length. An earlier version required the finger to dwell 120 ms instead, and that rejected ordinary taps — a real tap is often quicker than a brush.
-`ui/dr-ui/ui/library.slint:3250`
+`ui/dr-ui/ui/library.slint:3224`
### Rate a photograph without opening it
@@ -354,7 +345,7 @@ A tap opens; a tap that *moved* does not. Travel is what separates a deliberate
A star has to take the press without it also reaching the cell, or every rating throws the user into develop.
-`ui/dr-ui/ui/library.slint:3370`
+`ui/dr-ui/ui/library.slint:3344`
### Choose the frame a folded burst shows
@@ -363,7 +354,7 @@ A star has to take the press without it also reaching the cell, or every rating
A folded burst draws its earliest frame, which is a fact about the clock and not a judgement about the photograph — nothing in this application ranks a frame (FR-CULL-5). But the point of a burst is that one of the twelve is better than the other eleven, and the photographer is the only one who knows which. So the choice is offered on the frames themselves, while they are open and side by side, which is the one moment the alternatives are on screen to be compared.
-`ui/dr-ui/ui/library.slint:3501`
+`ui/dr-ui/ui/library.slint:3475`
### Drop the selection but keep selecting
@@ -372,7 +363,7 @@ A folded burst draws its earliest frame, which is a fact about the clock and not
Distinct from Done, which leaves the mode entirely. Clearing keeps it, so the next selection can start straight away.
-`ui/dr-ui/ui/library.slint:4162`
+`ui/dr-ui/ui/library.slint:4136`
### Select everything the grid is showing
@@ -381,7 +372,7 @@ Distinct from Done, which leaves the mode entirely. Clearing keeps it, so the ne
A scoped grid of two hundred frames is two hundred taps otherwise, and "all of them, except those three" is a far more common shape than the taps it took to say it.
-`ui/dr-ui/ui/library.slint:4179`
+`ui/dr-ui/ui/library.slint:4153`
### Take photographs out of a collection
@@ -390,4 +381,4 @@ A scoped grid of two hundred frames is two hundred taps otherwise, and "all of t
The badge on a cell says a photograph is filed in three collections and never which. This is the sheet that names them, and the only way out of one the grid is not currently scoped to.
-`ui/dr-ui/ui/library.slint:4294`
+`ui/dr-ui/ui/library.slint:4277`
diff --git a/docs/traceability.md b/docs/traceability.md
index fc58b58..2d8934c 100644
--- a/docs/traceability.md
+++ b/docs/traceability.md
@@ -9,8 +9,8 @@ Denominators are parsed from [`requirements.md`](requirements.md) at run time, n
| Metric | Value |
|---|---|
-| Source files scanned | 373 |
-| TRACES tags found | 1524 |
+| Source files scanned | 375 |
+| TRACES tags found | 1531 |
| Requirements defined | 184 |
| Requirements deferred (post-v1) | 24 |
| Requirements covered | 151 |
@@ -35,133 +35,133 @@ _None._
| ID | Tagged in |
|---|---|
| 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.rs:1`](../ui/dr-ui/src/library.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:353`](../core/dr-types/src/settings.rs#L353), [`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:336`](../ui/dr-ui/src/import.rs#L336), [`ui/dr-ui/src/import_ui.rs:1`](../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1528`](../ui/dr-ui/src/lib.rs#L1528), [`ui/dr-ui/ui/import.slint:5`](../ui/dr-ui/ui/import.slint#L5), [`ui/dr-ui/ui/library.slint:1033`](../ui/dr-ui/ui/library.slint#L1033), [`ui/dr-ui/ui/library.slint:1254`](../ui/dr-ui/ui/library.slint#L1254), [`ui/dr-ui/ui/library.slint:979`](../ui/dr-ui/ui/library.slint#L979) |
-| 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:1528`](../ui/dr-ui/src/lib.rs#L1528), [`ui/dr-ui/src/library.rs:183`](../ui/dr-ui/src/library.rs#L183), [`ui/dr-ui/src/library.rs:3303`](../ui/dr-ui/src/library.rs#L3303), [`ui/dr-ui/ui/import.slint:5`](../ui/dr-ui/ui/import.slint#L5) |
+| 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:353`](../core/dr-types/src/settings.rs#L353), [`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:336`](../ui/dr-ui/src/import.rs#L336), [`ui/dr-ui/src/import_ui.rs:1`](../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1529`](../ui/dr-ui/src/lib.rs#L1529), [`ui/dr-ui/ui/import.slint:5`](../ui/dr-ui/ui/import.slint#L5), [`ui/dr-ui/ui/library.slint:1033`](../ui/dr-ui/ui/library.slint#L1033), [`ui/dr-ui/ui/library.slint:1254`](../ui/dr-ui/ui/library.slint#L1254), [`ui/dr-ui/ui/library.slint:979`](../ui/dr-ui/ui/library.slint#L979) |
+| 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:1529`](../ui/dr-ui/src/lib.rs#L1529), [`ui/dr-ui/src/library.rs:183`](../ui/dr-ui/src/library.rs#L183), [`ui/dr-ui/src/library.rs:3303`](../ui/dr-ui/src/library.rs#L3303), [`ui/dr-ui/ui/import.slint:5`](../ui/dr-ui/ui/import.slint#L5) |
| FR-CAT-12 | [`core/dr-pipeline/src/sidecar.rs:122`](../core/dr-pipeline/src/sidecar.rs#L122) |
-| FR-CAT-13 | [`core/dr-catalog/src/rating.rs:278`](../core/dr-catalog/src/rating.rs#L278), [`core/dr-catalog/src/schema.rs:680`](../core/dr-catalog/src/schema.rs#L680), [`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.rs:1500`](../ui/dr-ui/src/library.rs#L1500), [`ui/dr-ui/src/library.rs:1563`](../ui/dr-ui/src/library.rs#L1563), [`ui/dr-ui/src/library.rs:1579`](../ui/dr-ui/src/library.rs#L1579), [`ui/dr-ui/src/library.rs:1686`](../ui/dr-ui/src/library.rs#L1686), [`ui/dr-ui/src/library_ui.rs:1327`](../ui/dr-ui/src/library_ui.rs#L1327), [`ui/dr-ui/src/library_ui.rs:301`](../ui/dr-ui/src/library_ui.rs#L301), [`ui/dr-ui/src/library_ui.rs:3453`](../ui/dr-ui/src/library_ui.rs#L3453), [`ui/dr-ui/src/library_ui.rs:3509`](../ui/dr-ui/src/library_ui.rs#L3509), [`ui/dr-ui/src/library_ui.rs:3607`](../ui/dr-ui/src/library_ui.rs#L3607), [`ui/dr-ui/src/library_ui.rs:392`](../ui/dr-ui/src/library_ui.rs#L392), [`ui/dr-ui/src/library_ui.rs:535`](../ui/dr-ui/src/library_ui.rs#L535), [`ui/dr-ui/src/library_ui.rs:5791`](../ui/dr-ui/src/library_ui.rs#L5791), [`ui/dr-ui/src/settings_ui.rs:540`](../ui/dr-ui/src/settings_ui.rs#L540), [`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:852`](../ui/dr-ui/ui/app.slint#L852), [`ui/dr-ui/ui/settings.slint:1020`](../ui/dr-ui/ui/settings.slint#L1020), [`ui/dr-ui/ui/settings.slint:189`](../ui/dr-ui/ui/settings.slint#L189) |
+| FR-CAT-13 | [`core/dr-catalog/src/rating.rs:278`](../core/dr-catalog/src/rating.rs#L278), [`core/dr-catalog/src/schema.rs:680`](../core/dr-catalog/src/schema.rs#L680), [`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.rs:1500`](../ui/dr-ui/src/library.rs#L1500), [`ui/dr-ui/src/library.rs:1563`](../ui/dr-ui/src/library.rs#L1563), [`ui/dr-ui/src/library.rs:1579`](../ui/dr-ui/src/library.rs#L1579), [`ui/dr-ui/src/library.rs:1686`](../ui/dr-ui/src/library.rs#L1686), [`ui/dr-ui/src/library_ui.rs:1327`](../ui/dr-ui/src/library_ui.rs#L1327), [`ui/dr-ui/src/library_ui.rs:301`](../ui/dr-ui/src/library_ui.rs#L301), [`ui/dr-ui/src/library_ui.rs:3453`](../ui/dr-ui/src/library_ui.rs#L3453), [`ui/dr-ui/src/library_ui.rs:3509`](../ui/dr-ui/src/library_ui.rs#L3509), [`ui/dr-ui/src/library_ui.rs:3607`](../ui/dr-ui/src/library_ui.rs#L3607), [`ui/dr-ui/src/library_ui.rs:392`](../ui/dr-ui/src/library_ui.rs#L392), [`ui/dr-ui/src/library_ui.rs:535`](../ui/dr-ui/src/library_ui.rs#L535), [`ui/dr-ui/src/library_ui.rs:5791`](../ui/dr-ui/src/library_ui.rs#L5791), [`ui/dr-ui/src/settings_ui.rs:540`](../ui/dr-ui/src/settings_ui.rs#L540), [`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:877`](../ui/dr-ui/ui/app.slint#L877), [`ui/dr-ui/ui/settings.slint:1020`](../ui/dr-ui/ui/settings.slint#L1020), [`ui/dr-ui/ui/settings.slint:189`](../ui/dr-ui/ui/settings.slint#L189) |
| FR-CAT-15 | [`core/dr-catalog/src/schema.rs:950`](../core/dr-catalog/src/schema.rs#L950), [`core/dr-catalog/src/trash.rs:1`](../core/dr-catalog/src/trash.rs#L1), [`core/dr-sync-nextcloud/src/lib.rs:507`](../core/dr-sync-nextcloud/src/lib.rs#L507), [`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:376`](../core/dr-thumbs/src/lib.rs#L376), [`core/dr-types/src/place.rs:91`](../core/dr-types/src/place.rs#L91), [`ui/dr-ui/src/collections_ui.rs:1435`](../ui/dr-ui/src/collections_ui.rs#L1435), [`ui/dr-ui/src/collections_ui.rs:2341`](../ui/dr-ui/src/collections_ui.rs#L2341), [`ui/dr-ui/src/library.rs:183`](../ui/dr-ui/src/library.rs#L183), [`ui/dr-ui/src/library.rs:200`](../ui/dr-ui/src/library.rs#L200), [`ui/dr-ui/src/library.rs:249`](../ui/dr-ui/src/library.rs#L249), [`ui/dr-ui/src/library.rs:5275`](../ui/dr-ui/src/library.rs#L5275), [`ui/dr-ui/src/library.rs:5309`](../ui/dr-ui/src/library.rs#L5309), [`ui/dr-ui/src/library_ui.rs:238`](../ui/dr-ui/src/library_ui.rs#L238), [`ui/dr-ui/src/library_ui.rs:912`](../ui/dr-ui/src/library_ui.rs#L912), [`ui/dr-ui/src/trash.rs:1`](../ui/dr-ui/src/trash.rs#L1), [`ui/dr-ui/ui/collections.slint:745`](../ui/dr-ui/ui/collections.slint#L745) |
| 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:463`](../ui/dr-ui/src/import.rs#L463), [`ui/dr-ui/src/import.rs:488`](../ui/dr-ui/src/import.rs#L488), [`ui/dr-ui/src/library.rs:3796`](../ui/dr-ui/src/library.rs#L3796), [`ui/dr-ui/src/library.rs:4708`](../ui/dr-ui/src/library.rs#L4708), [`ui/dr-ui/src/library_ui.rs:177`](../ui/dr-ui/src/library_ui.rs#L177), [`ui/dr-ui/src/library_ui.rs:4541`](../ui/dr-ui/src/library_ui.rs#L4541), [`ui/dr-ui/src/library_ui.rs:6052`](../ui/dr-ui/src/library_ui.rs#L6052), [`ui/dr-ui/ui/app.slint:383`](../ui/dr-ui/ui/app.slint#L383), [`ui/dr-ui/ui/settings.slint:425`](../ui/dr-ui/ui/settings.slint#L425), [`ui/dr-ui/ui/settings.slint:73`](../ui/dr-ui/ui/settings.slint#L73) |
+| 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:463`](../ui/dr-ui/src/import.rs#L463), [`ui/dr-ui/src/import.rs:488`](../ui/dr-ui/src/import.rs#L488), [`ui/dr-ui/src/library.rs:3796`](../ui/dr-ui/src/library.rs#L3796), [`ui/dr-ui/src/library.rs:4708`](../ui/dr-ui/src/library.rs#L4708), [`ui/dr-ui/src/library_ui.rs:177`](../ui/dr-ui/src/library_ui.rs#L177), [`ui/dr-ui/src/library_ui.rs:4541`](../ui/dr-ui/src/library_ui.rs#L4541), [`ui/dr-ui/src/library_ui.rs:6052`](../ui/dr-ui/src/library_ui.rs#L6052), [`ui/dr-ui/ui/app.slint:384`](../ui/dr-ui/ui/app.slint#L384), [`ui/dr-ui/ui/settings.slint:425`](../ui/dr-ui/ui/settings.slint#L425), [`ui/dr-ui/ui/settings.slint:73`](../ui/dr-ui/ui/settings.slint#L73) |
| 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:408`](../core/dr-catalog/src/schema.rs#L408), [`ui/dr-ui/src/library.rs:1`](../ui/dr-ui/src/library.rs#L1), [`ui/dr-ui/src/library.rs:230`](../ui/dr-ui/src/library.rs#L230), [`ui/dr-ui/src/library_ui.rs:1`](../ui/dr-ui/src/library_ui.rs#L1) |
-| 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/schema.rs:1422`](../core/dr-catalog/src/schema.rs#L1422), [`core/dr-catalog/src/schema.rs:865`](../core/dr-catalog/src/schema.rs#L865), [`core/dr-decode/src/lib.rs:301`](../core/dr-decode/src/lib.rs#L301), [`core/dr-decode/src/lib.rs:424`](../core/dr-decode/src/lib.rs#L424), [`core/dr-pipeline/src/sidecar.rs:156`](../core/dr-pipeline/src/sidecar.rs#L156), [`ui/dr-ui/src/collections_ui.rs:1731`](../ui/dr-ui/src/collections_ui.rs#L1731), [`ui/dr-ui/src/collections_ui.rs:1837`](../ui/dr-ui/src/collections_ui.rs#L1837), [`ui/dr-ui/src/collections_ui.rs:1886`](../ui/dr-ui/src/collections_ui.rs#L1886), [`ui/dr-ui/src/collections_ui.rs:275`](../ui/dr-ui/src/collections_ui.rs#L275), [`ui/dr-ui/src/collections_ui.rs:484`](../ui/dr-ui/src/collections_ui.rs#L484), [`ui/dr-ui/src/collections_ui.rs:87`](../ui/dr-ui/src/collections_ui.rs#L87), [`ui/dr-ui/src/library.rs:5323`](../ui/dr-ui/src/library.rs#L5323), [`ui/dr-ui/src/library_ui.rs:787`](../ui/dr-ui/src/library_ui.rs#L787), [`ui/dr-ui/src/library_ui.rs:8044`](../ui/dr-ui/src/library_ui.rs#L8044), [`ui/dr-ui/src/library_ui.rs:8055`](../ui/dr-ui/src/library_ui.rs#L8055), [`ui/dr-ui/src/library_ui.rs:8068`](../ui/dr-ui/src/library_ui.rs#L8068), [`ui/dr-ui/src/library_ui.rs:8083`](../ui/dr-ui/src/library_ui.rs#L8083), [`ui/dr-ui/src/library_ui.rs:8092`](../ui/dr-ui/src/library_ui.rs#L8092), [`ui/dr-ui/ui/app.slint:304`](../ui/dr-ui/ui/app.slint#L304), [`ui/dr-ui/ui/app.slint:569`](../ui/dr-ui/ui/app.slint#L569), [`ui/dr-ui/ui/library.slint:1360`](../ui/dr-ui/ui/library.slint#L1360), [`ui/dr-ui/ui/library.slint:1384`](../ui/dr-ui/ui/library.slint#L1384), [`ui/dr-ui/ui/library.slint:1437`](../ui/dr-ui/ui/library.slint#L1437), [`ui/dr-ui/ui/library.slint:19`](../ui/dr-ui/ui/library.slint#L19), [`ui/dr-ui/ui/library.slint:4201`](../ui/dr-ui/ui/library.slint#L4201) |
-| 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/schema.rs:865`](../core/dr-catalog/src/schema.rs#L865), [`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.rs:254`](../ui/dr-ui/src/library.rs#L254), [`ui/dr-ui/src/library.rs:5799`](../ui/dr-ui/src/library.rs#L5799), [`ui/dr-ui/src/library_ui.rs:396`](../ui/dr-ui/src/library_ui.rs#L396), [`ui/dr-ui/src/library_ui.rs:503`](../ui/dr-ui/src/library_ui.rs#L503), [`ui/dr-ui/src/library_ui.rs:6774`](../ui/dr-ui/src/library_ui.rs#L6774), [`ui/dr-ui/src/library_ui.rs:6827`](../ui/dr-ui/src/library_ui.rs#L6827), [`ui/dr-ui/src/library_ui.rs:8184`](../ui/dr-ui/src/library_ui.rs#L8184), [`ui/dr-ui/ui/app.slint:316`](../ui/dr-ui/ui/app.slint#L316), [`ui/dr-ui/ui/app.slint:569`](../ui/dr-ui/ui/app.slint#L569), [`ui/dr-ui/ui/app.slint:848`](../ui/dr-ui/ui/app.slint#L848), [`ui/dr-ui/ui/library.slint:111`](../ui/dr-ui/ui/library.slint#L111), [`ui/dr-ui/ui/library.slint:1547`](../ui/dr-ui/ui/library.slint#L1547), [`ui/dr-ui/ui/library.slint:4201`](../ui/dr-ui/ui/library.slint#L4201), [`ui/dr-ui/ui/settings.slint:181`](../ui/dr-ui/ui/settings.slint#L181) |
-| FR-CAT-7 | [`core/dr-catalog/src/collections.rs:1`](../core/dr-catalog/src/collections.rs#L1), [`core/dr-catalog/src/merge.rs:1`](../core/dr-catalog/src/merge.rs#L1), [`core/dr-catalog/src/sync.rs:1`](../core/dr-catalog/src/sync.rs#L1), [`core/dr-types/src/selector.rs:1`](../core/dr-types/src/selector.rs#L1), [`ui/dr-ui/src/collections_ui.rs:1117`](../ui/dr-ui/src/collections_ui.rs#L1117), [`ui/dr-ui/src/collections_ui.rs:117`](../ui/dr-ui/src/collections_ui.rs#L117), [`ui/dr-ui/src/collections_ui.rs:1225`](../ui/dr-ui/src/collections_ui.rs#L1225), [`ui/dr-ui/src/collections_ui.rs:1704`](../ui/dr-ui/src/collections_ui.rs#L1704), [`ui/dr-ui/src/collections_ui.rs:1750`](../ui/dr-ui/src/collections_ui.rs#L1750), [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/collections_ui.rs:2000`](../ui/dr-ui/src/collections_ui.rs#L2000), [`ui/dr-ui/src/collections_ui.rs:2065`](../ui/dr-ui/src/collections_ui.rs#L2065), [`ui/dr-ui/src/collections_ui.rs:2125`](../ui/dr-ui/src/collections_ui.rs#L2125), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:2755`](../ui/dr-ui/src/collections_ui.rs#L2755), [`ui/dr-ui/src/collections_ui.rs:2801`](../ui/dr-ui/src/collections_ui.rs#L2801), [`ui/dr-ui/src/collections_ui.rs:2903`](../ui/dr-ui/src/collections_ui.rs#L2903), [`ui/dr-ui/src/collections_ui.rs:2959`](../ui/dr-ui/src/collections_ui.rs#L2959), [`ui/dr-ui/src/collections_ui.rs:3120`](../ui/dr-ui/src/collections_ui.rs#L3120), [`ui/dr-ui/src/collections_ui.rs:3142`](../ui/dr-ui/src/collections_ui.rs#L3142), [`ui/dr-ui/src/collections_ui.rs:3208`](../ui/dr-ui/src/collections_ui.rs#L3208), [`ui/dr-ui/src/collections_ui.rs:329`](../ui/dr-ui/src/collections_ui.rs#L329), [`ui/dr-ui/src/collections_ui.rs:3328`](../ui/dr-ui/src/collections_ui.rs#L3328), [`ui/dr-ui/src/collections_ui.rs:339`](../ui/dr-ui/src/collections_ui.rs#L339), [`ui/dr-ui/src/collections_ui.rs:362`](../ui/dr-ui/src/collections_ui.rs#L362), [`ui/dr-ui/src/collections_ui.rs:3633`](../ui/dr-ui/src/collections_ui.rs#L3633), [`ui/dr-ui/src/collections_ui.rs:383`](../ui/dr-ui/src/collections_ui.rs#L383), [`ui/dr-ui/src/collections_ui.rs:514`](../ui/dr-ui/src/collections_ui.rs#L514), [`ui/dr-ui/src/collections_ui.rs:718`](../ui/dr-ui/src/collections_ui.rs#L718), [`ui/dr-ui/src/derived_sync.rs:1`](../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/library.rs:5604`](../ui/dr-ui/src/library.rs#L5604), [`ui/dr-ui/src/library.rs:5630`](../ui/dr-ui/src/library.rs#L5630), [`ui/dr-ui/src/library.rs:5685`](../ui/dr-ui/src/library.rs#L5685), [`ui/dr-ui/src/library_ui.rs:2779`](../ui/dr-ui/src/library_ui.rs#L2779), [`ui/dr-ui/src/library_ui.rs:4395`](../ui/dr-ui/src/library_ui.rs#L4395), [`ui/dr-ui/src/library_ui.rs:5154`](../ui/dr-ui/src/library_ui.rs#L5154), [`ui/dr-ui/ui/app.slint:307`](../ui/dr-ui/ui/app.slint#L307), [`ui/dr-ui/ui/app.slint:3123`](../ui/dr-ui/ui/app.slint#L3123), [`ui/dr-ui/ui/app.slint:564`](../ui/dr-ui/ui/app.slint#L564), [`ui/dr-ui/ui/app.slint:593`](../ui/dr-ui/ui/app.slint#L593), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:587`](../ui/dr-ui/ui/collections.slint#L587), [`ui/dr-ui/ui/library.slint:1327`](../ui/dr-ui/ui/library.slint#L1327), [`ui/dr-ui/ui/library.slint:2902`](../ui/dr-ui/ui/library.slint#L2902), [`ui/dr-ui/ui/library.slint:4179`](../ui/dr-ui/ui/library.slint#L4179), [`ui/dr-ui/ui/library.slint:4257`](../ui/dr-ui/ui/library.slint#L4257), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998) |
-| FR-CAT-8 | [`core/dr-catalog/src/schema.rs:584`](../core/dr-catalog/src/schema.rs#L584), [`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:1373`](../core/dr-pipeline/src/sidecar.rs#L1373), [`core/dr-pipeline/src/sidecar.rs:2205`](../core/dr-pipeline/src/sidecar.rs#L2205), [`core/dr-pipeline/src/sidecar.rs:96`](../core/dr-pipeline/src/sidecar.rs#L96), [`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.rs:2155`](../ui/dr-ui/src/develop.rs#L2155), [`ui/dr-ui/src/develop.rs:5421`](../ui/dr-ui/src/develop.rs#L5421), [`ui/dr-ui/src/develop.rs:5450`](../ui/dr-ui/src/develop.rs#L5450), [`ui/dr-ui/src/develop.rs:6824`](../ui/dr-ui/src/develop.rs#L6824), [`ui/dr-ui/src/develop.rs:6878`](../ui/dr-ui/src/develop.rs#L6878), [`ui/dr-ui/src/develop.rs:6980`](../ui/dr-ui/src/develop.rs#L6980), [`ui/dr-ui/src/export.rs:805`](../ui/dr-ui/src/export.rs#L805), [`ui/dr-ui/src/lib.rs:1299`](../ui/dr-ui/src/lib.rs#L1299), [`ui/dr-ui/src/lib.rs:1828`](../ui/dr-ui/src/lib.rs#L1828), [`ui/dr-ui/src/lib.rs:2397`](../ui/dr-ui/src/lib.rs#L2397), [`ui/dr-ui/src/lib.rs:2544`](../ui/dr-ui/src/lib.rs#L2544), [`ui/dr-ui/src/lib.rs:752`](../ui/dr-ui/src/lib.rs#L752), [`ui/dr-ui/src/library.rs:1391`](../ui/dr-ui/src/library.rs#L1391), [`ui/dr-ui/src/library.rs:1426`](../ui/dr-ui/src/library.rs#L1426), [`ui/dr-ui/src/library.rs:2427`](../ui/dr-ui/src/library.rs#L2427), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500), [`ui/dr-ui/src/library.rs:552`](../ui/dr-ui/src/library.rs#L552), [`ui/dr-ui/src/library.rs:589`](../ui/dr-ui/src/library.rs#L589), [`ui/dr-ui/src/library.rs:73`](../ui/dr-ui/src/library.rs#L73), [`ui/dr-ui/src/library.rs:8100`](../ui/dr-ui/src/library.rs#L8100), [`ui/dr-ui/src/library.rs:862`](../ui/dr-ui/src/library.rs#L862), [`ui/dr-ui/src/library_ui.rs:1344`](../ui/dr-ui/src/library_ui.rs#L1344), [`ui/dr-ui/src/library_ui.rs:6375`](../ui/dr-ui/src/library_ui.rs#L6375), [`ui/dr-ui/src/sidecar_cache.rs:1`](../ui/dr-ui/src/sidecar_cache.rs#L1) |
+| 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/schema.rs:1422`](../core/dr-catalog/src/schema.rs#L1422), [`core/dr-catalog/src/schema.rs:865`](../core/dr-catalog/src/schema.rs#L865), [`core/dr-decode/src/lib.rs:301`](../core/dr-decode/src/lib.rs#L301), [`core/dr-decode/src/lib.rs:424`](../core/dr-decode/src/lib.rs#L424), [`core/dr-pipeline/src/sidecar.rs:156`](../core/dr-pipeline/src/sidecar.rs#L156), [`ui/dr-ui/src/collections_ui.rs:1731`](../ui/dr-ui/src/collections_ui.rs#L1731), [`ui/dr-ui/src/collections_ui.rs:1837`](../ui/dr-ui/src/collections_ui.rs#L1837), [`ui/dr-ui/src/collections_ui.rs:1886`](../ui/dr-ui/src/collections_ui.rs#L1886), [`ui/dr-ui/src/collections_ui.rs:275`](../ui/dr-ui/src/collections_ui.rs#L275), [`ui/dr-ui/src/collections_ui.rs:484`](../ui/dr-ui/src/collections_ui.rs#L484), [`ui/dr-ui/src/collections_ui.rs:87`](../ui/dr-ui/src/collections_ui.rs#L87), [`ui/dr-ui/src/library.rs:5323`](../ui/dr-ui/src/library.rs#L5323), [`ui/dr-ui/src/library_ui.rs:787`](../ui/dr-ui/src/library_ui.rs#L787), [`ui/dr-ui/src/library_ui.rs:8044`](../ui/dr-ui/src/library_ui.rs#L8044), [`ui/dr-ui/src/library_ui.rs:8055`](../ui/dr-ui/src/library_ui.rs#L8055), [`ui/dr-ui/src/library_ui.rs:8068`](../ui/dr-ui/src/library_ui.rs#L8068), [`ui/dr-ui/src/library_ui.rs:8083`](../ui/dr-ui/src/library_ui.rs#L8083), [`ui/dr-ui/src/library_ui.rs:8092`](../ui/dr-ui/src/library_ui.rs#L8092), [`ui/dr-ui/ui/app.slint:305`](../ui/dr-ui/ui/app.slint#L305), [`ui/dr-ui/ui/app.slint:570`](../ui/dr-ui/ui/app.slint#L570), [`ui/dr-ui/ui/library.slint:1360`](../ui/dr-ui/ui/library.slint#L1360), [`ui/dr-ui/ui/library.slint:1384`](../ui/dr-ui/ui/library.slint#L1384), [`ui/dr-ui/ui/library.slint:1437`](../ui/dr-ui/ui/library.slint#L1437), [`ui/dr-ui/ui/library.slint:19`](../ui/dr-ui/ui/library.slint#L19), [`ui/dr-ui/ui/library.slint:4205`](../ui/dr-ui/ui/library.slint#L4205) |
+| 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/schema.rs:865`](../core/dr-catalog/src/schema.rs#L865), [`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.rs:254`](../ui/dr-ui/src/library.rs#L254), [`ui/dr-ui/src/library.rs:5799`](../ui/dr-ui/src/library.rs#L5799), [`ui/dr-ui/src/library_ui.rs:396`](../ui/dr-ui/src/library_ui.rs#L396), [`ui/dr-ui/src/library_ui.rs:503`](../ui/dr-ui/src/library_ui.rs#L503), [`ui/dr-ui/src/library_ui.rs:6774`](../ui/dr-ui/src/library_ui.rs#L6774), [`ui/dr-ui/src/library_ui.rs:6827`](../ui/dr-ui/src/library_ui.rs#L6827), [`ui/dr-ui/src/library_ui.rs:8184`](../ui/dr-ui/src/library_ui.rs#L8184), [`ui/dr-ui/ui/app.slint:317`](../ui/dr-ui/ui/app.slint#L317), [`ui/dr-ui/ui/app.slint:570`](../ui/dr-ui/ui/app.slint#L570), [`ui/dr-ui/ui/app.slint:873`](../ui/dr-ui/ui/app.slint#L873), [`ui/dr-ui/ui/library.slint:111`](../ui/dr-ui/ui/library.slint#L111), [`ui/dr-ui/ui/library.slint:1547`](../ui/dr-ui/ui/library.slint#L1547), [`ui/dr-ui/ui/library.slint:4205`](../ui/dr-ui/ui/library.slint#L4205), [`ui/dr-ui/ui/settings.slint:181`](../ui/dr-ui/ui/settings.slint#L181) |
+| FR-CAT-7 | [`core/dr-catalog/src/collections.rs:1`](../core/dr-catalog/src/collections.rs#L1), [`core/dr-catalog/src/merge.rs:1`](../core/dr-catalog/src/merge.rs#L1), [`core/dr-catalog/src/sync.rs:1`](../core/dr-catalog/src/sync.rs#L1), [`core/dr-types/src/selector.rs:1`](../core/dr-types/src/selector.rs#L1), [`ui/dr-ui/src/collections_ui.rs:1117`](../ui/dr-ui/src/collections_ui.rs#L1117), [`ui/dr-ui/src/collections_ui.rs:117`](../ui/dr-ui/src/collections_ui.rs#L117), [`ui/dr-ui/src/collections_ui.rs:1225`](../ui/dr-ui/src/collections_ui.rs#L1225), [`ui/dr-ui/src/collections_ui.rs:1704`](../ui/dr-ui/src/collections_ui.rs#L1704), [`ui/dr-ui/src/collections_ui.rs:1750`](../ui/dr-ui/src/collections_ui.rs#L1750), [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/collections_ui.rs:2000`](../ui/dr-ui/src/collections_ui.rs#L2000), [`ui/dr-ui/src/collections_ui.rs:2065`](../ui/dr-ui/src/collections_ui.rs#L2065), [`ui/dr-ui/src/collections_ui.rs:2125`](../ui/dr-ui/src/collections_ui.rs#L2125), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:2755`](../ui/dr-ui/src/collections_ui.rs#L2755), [`ui/dr-ui/src/collections_ui.rs:2801`](../ui/dr-ui/src/collections_ui.rs#L2801), [`ui/dr-ui/src/collections_ui.rs:2903`](../ui/dr-ui/src/collections_ui.rs#L2903), [`ui/dr-ui/src/collections_ui.rs:2959`](../ui/dr-ui/src/collections_ui.rs#L2959), [`ui/dr-ui/src/collections_ui.rs:3120`](../ui/dr-ui/src/collections_ui.rs#L3120), [`ui/dr-ui/src/collections_ui.rs:3142`](../ui/dr-ui/src/collections_ui.rs#L3142), [`ui/dr-ui/src/collections_ui.rs:3208`](../ui/dr-ui/src/collections_ui.rs#L3208), [`ui/dr-ui/src/collections_ui.rs:329`](../ui/dr-ui/src/collections_ui.rs#L329), [`ui/dr-ui/src/collections_ui.rs:3328`](../ui/dr-ui/src/collections_ui.rs#L3328), [`ui/dr-ui/src/collections_ui.rs:339`](../ui/dr-ui/src/collections_ui.rs#L339), [`ui/dr-ui/src/collections_ui.rs:362`](../ui/dr-ui/src/collections_ui.rs#L362), [`ui/dr-ui/src/collections_ui.rs:3633`](../ui/dr-ui/src/collections_ui.rs#L3633), [`ui/dr-ui/src/collections_ui.rs:383`](../ui/dr-ui/src/collections_ui.rs#L383), [`ui/dr-ui/src/collections_ui.rs:514`](../ui/dr-ui/src/collections_ui.rs#L514), [`ui/dr-ui/src/collections_ui.rs:718`](../ui/dr-ui/src/collections_ui.rs#L718), [`ui/dr-ui/src/derived_sync.rs:1`](../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/library.rs:5604`](../ui/dr-ui/src/library.rs#L5604), [`ui/dr-ui/src/library.rs:5630`](../ui/dr-ui/src/library.rs#L5630), [`ui/dr-ui/src/library.rs:5685`](../ui/dr-ui/src/library.rs#L5685), [`ui/dr-ui/src/library_ui.rs:2779`](../ui/dr-ui/src/library_ui.rs#L2779), [`ui/dr-ui/src/library_ui.rs:4395`](../ui/dr-ui/src/library_ui.rs#L4395), [`ui/dr-ui/src/library_ui.rs:5154`](../ui/dr-ui/src/library_ui.rs#L5154), [`ui/dr-ui/ui/app.slint:308`](../ui/dr-ui/ui/app.slint#L308), [`ui/dr-ui/ui/app.slint:3171`](../ui/dr-ui/ui/app.slint#L3171), [`ui/dr-ui/ui/app.slint:565`](../ui/dr-ui/ui/app.slint#L565), [`ui/dr-ui/ui/app.slint:594`](../ui/dr-ui/ui/app.slint#L594), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:587`](../ui/dr-ui/ui/collections.slint#L587), [`ui/dr-ui/ui/library.slint:1327`](../ui/dr-ui/ui/library.slint#L1327), [`ui/dr-ui/ui/library.slint:2906`](../ui/dr-ui/ui/library.slint#L2906), [`ui/dr-ui/ui/library.slint:4183`](../ui/dr-ui/ui/library.slint#L4183), [`ui/dr-ui/ui/library.slint:4270`](../ui/dr-ui/ui/library.slint#L4270), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998) |
+| FR-CAT-8 | [`core/dr-catalog/src/schema.rs:584`](../core/dr-catalog/src/schema.rs#L584), [`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:1373`](../core/dr-pipeline/src/sidecar.rs#L1373), [`core/dr-pipeline/src/sidecar.rs:2205`](../core/dr-pipeline/src/sidecar.rs#L2205), [`core/dr-pipeline/src/sidecar.rs:96`](../core/dr-pipeline/src/sidecar.rs#L96), [`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.rs:2155`](../ui/dr-ui/src/develop.rs#L2155), [`ui/dr-ui/src/develop.rs:5421`](../ui/dr-ui/src/develop.rs#L5421), [`ui/dr-ui/src/develop.rs:5450`](../ui/dr-ui/src/develop.rs#L5450), [`ui/dr-ui/src/develop.rs:6824`](../ui/dr-ui/src/develop.rs#L6824), [`ui/dr-ui/src/develop.rs:6878`](../ui/dr-ui/src/develop.rs#L6878), [`ui/dr-ui/src/develop.rs:6980`](../ui/dr-ui/src/develop.rs#L6980), [`ui/dr-ui/src/export.rs:812`](../ui/dr-ui/src/export.rs#L812), [`ui/dr-ui/src/lib.rs:1300`](../ui/dr-ui/src/lib.rs#L1300), [`ui/dr-ui/src/lib.rs:1858`](../ui/dr-ui/src/lib.rs#L1858), [`ui/dr-ui/src/lib.rs:2427`](../ui/dr-ui/src/lib.rs#L2427), [`ui/dr-ui/src/lib.rs:2574`](../ui/dr-ui/src/lib.rs#L2574), [`ui/dr-ui/src/lib.rs:753`](../ui/dr-ui/src/lib.rs#L753), [`ui/dr-ui/src/library.rs:1391`](../ui/dr-ui/src/library.rs#L1391), [`ui/dr-ui/src/library.rs:1426`](../ui/dr-ui/src/library.rs#L1426), [`ui/dr-ui/src/library.rs:2427`](../ui/dr-ui/src/library.rs#L2427), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500), [`ui/dr-ui/src/library.rs:552`](../ui/dr-ui/src/library.rs#L552), [`ui/dr-ui/src/library.rs:589`](../ui/dr-ui/src/library.rs#L589), [`ui/dr-ui/src/library.rs:73`](../ui/dr-ui/src/library.rs#L73), [`ui/dr-ui/src/library.rs:8100`](../ui/dr-ui/src/library.rs#L8100), [`ui/dr-ui/src/library.rs:862`](../ui/dr-ui/src/library.rs#L862), [`ui/dr-ui/src/library_ui.rs:1344`](../ui/dr-ui/src/library_ui.rs#L1344), [`ui/dr-ui/src/library_ui.rs:6375`](../ui/dr-ui/src/library_ui.rs#L6375), [`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:922`](../core/dr-catalog/src/schema.rs#L922), [`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.rs:4710`](../ui/dr-ui/src/develop.rs#L4710), [`ui/dr-ui/src/develop.rs:4753`](../ui/dr-ui/src/develop.rs#L4753), [`ui/dr-ui/src/library.rs:1291`](../ui/dr-ui/src/library.rs#L1291), [`ui/dr-ui/src/library.rs:1344`](../ui/dr-ui/src/library.rs#L1344), [`ui/dr-ui/src/library.rs:1375`](../ui/dr-ui/src/library.rs#L1375), [`ui/dr-ui/src/library.rs:1426`](../ui/dr-ui/src/library.rs#L1426), [`ui/dr-ui/src/library.rs:169`](../ui/dr-ui/src/library.rs#L169), [`ui/dr-ui/src/library.rs:1955`](../ui/dr-ui/src/library.rs#L1955), [`ui/dr-ui/src/library.rs:2407`](../ui/dr-ui/src/library.rs#L2407), [`ui/dr-ui/src/library.rs:2463`](../ui/dr-ui/src/library.rs#L2463), [`ui/dr-ui/src/library.rs:274`](../ui/dr-ui/src/library.rs#L274), [`ui/dr-ui/src/library.rs:589`](../ui/dr-ui/src/library.rs#L589), [`ui/dr-ui/src/library.rs:5907`](../ui/dr-ui/src/library.rs#L5907), [`ui/dr-ui/src/library.rs:846`](../ui/dr-ui/src/library.rs#L846), [`ui/dr-ui/src/library.rs:862`](../ui/dr-ui/src/library.rs#L862), [`ui/dr-ui/src/library.rs:916`](../ui/dr-ui/src/library.rs#L916), [`ui/dr-ui/src/library_ui.rs:1411`](../ui/dr-ui/src/library_ui.rs#L1411), [`ui/dr-ui/src/library_ui.rs:2002`](../ui/dr-ui/src/library_ui.rs#L2002), [`ui/dr-ui/src/library_ui.rs:2046`](../ui/dr-ui/src/library_ui.rs#L2046), [`ui/dr-ui/src/library_ui.rs:2062`](../ui/dr-ui/src/library_ui.rs#L2062), [`ui/dr-ui/src/library_ui.rs:2156`](../ui/dr-ui/src/library_ui.rs#L2156), [`ui/dr-ui/src/library_ui.rs:284`](../ui/dr-ui/src/library_ui.rs#L284), [`ui/dr-ui/src/library_ui.rs:3019`](../ui/dr-ui/src/library_ui.rs#L3019), [`ui/dr-ui/src/library_ui.rs:320`](../ui/dr-ui/src/library_ui.rs#L320), [`ui/dr-ui/src/library_ui.rs:328`](../ui/dr-ui/src/library_ui.rs#L328), [`ui/dr-ui/src/library_ui.rs:3642`](../ui/dr-ui/src/library_ui.rs#L3642), [`ui/dr-ui/src/library_ui.rs:3864`](../ui/dr-ui/src/library_ui.rs#L3864), [`ui/dr-ui/src/library_ui.rs:4142`](../ui/dr-ui/src/library_ui.rs#L4142), [`ui/dr-ui/src/library_ui.rs:4258`](../ui/dr-ui/src/library_ui.rs#L4258), [`ui/dr-ui/src/library_ui.rs:4446`](../ui/dr-ui/src/library_ui.rs#L4446), [`ui/dr-ui/src/library_ui.rs:4568`](../ui/dr-ui/src/library_ui.rs#L4568), [`ui/dr-ui/src/library_ui.rs:571`](../ui/dr-ui/src/library_ui.rs#L571), [`ui/dr-ui/src/library_ui.rs:660`](../ui/dr-ui/src/library_ui.rs#L660), [`ui/dr-ui/src/library_ui.rs:6872`](../ui/dr-ui/src/library_ui.rs#L6872), [`ui/dr-ui/src/library_ui.rs:6954`](../ui/dr-ui/src/library_ui.rs#L6954), [`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:1`](../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:447`](../core/dr-catalog/src/schema.rs#L447), [`core/dr-catalog/src/schema.rs:625`](../core/dr-catalog/src/schema.rs#L625), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`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/develop.rs:121`](../ui/dr-ui/src/develop.rs#L121), [`ui/dr-ui/src/develop.rs:130`](../ui/dr-ui/src/develop.rs#L130), [`ui/dr-ui/src/develop.rs:196`](../ui/dr-ui/src/develop.rs#L196), [`ui/dr-ui/src/develop.rs:2416`](../ui/dr-ui/src/develop.rs#L2416), [`ui/dr-ui/src/develop.rs:715`](../ui/dr-ui/src/develop.rs#L715), [`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:1`](../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/lib.rs:2516`](../ui/dr-ui/src/lib.rs#L2516), [`ui/dr-ui/ui/identity.slint:1`](../ui/dr-ui/ui/identity.slint#L1) |
+| FR-CULL-10 | [`core/dr-catalog/src/faces.rs:1`](../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:447`](../core/dr-catalog/src/schema.rs#L447), [`core/dr-catalog/src/schema.rs:625`](../core/dr-catalog/src/schema.rs#L625), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`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/develop.rs:121`](../ui/dr-ui/src/develop.rs#L121), [`ui/dr-ui/src/develop.rs:130`](../ui/dr-ui/src/develop.rs#L130), [`ui/dr-ui/src/develop.rs:196`](../ui/dr-ui/src/develop.rs#L196), [`ui/dr-ui/src/develop.rs:2416`](../ui/dr-ui/src/develop.rs#L2416), [`ui/dr-ui/src/develop.rs:715`](../ui/dr-ui/src/develop.rs#L715), [`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:1`](../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/lib.rs:2546`](../ui/dr-ui/src/lib.rs#L2546), [`ui/dr-ui/ui/identity.slint:1`](../ui/dr-ui/ui/identity.slint#L1) |
| FR-CULL-11 | [`core/dr-catalog/src/faces.rs:1`](../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`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.rs:295`](../ui/dr-ui/src/library.rs#L295), [`ui/dr-ui/src/library.rs:325`](../ui/dr-ui/src/library.rs#L325), [`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:447`](../core/dr-catalog/src/schema.rs#L447), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`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-2 | [`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), [`ui/dr-ui/src/import.rs:463`](../ui/dr-ui/src/import.rs#L463) |
-| 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.rs:4137`](../ui/dr-ui/src/develop.rs#L4137), [`ui/dr-ui/src/develop.rs:4150`](../ui/dr-ui/src/develop.rs#L4150), [`ui/dr-ui/src/develop.rs:4195`](../ui/dr-ui/src/develop.rs#L4195), [`ui/dr-ui/src/develop.rs:4206`](../ui/dr-ui/src/develop.rs#L4206), [`ui/dr-ui/src/develop.rs:4212`](../ui/dr-ui/src/develop.rs#L4212), [`ui/dr-ui/src/develop.rs:4229`](../ui/dr-ui/src/develop.rs#L4229), [`ui/dr-ui/src/develop.rs:810`](../ui/dr-ui/src/develop.rs#L810), [`ui/dr-ui/src/develop.rs:830`](../ui/dr-ui/src/develop.rs#L830), [`ui/dr-ui/src/develop.rs:836`](../ui/dr-ui/src/develop.rs#L836), [`ui/dr-ui/src/develop.rs:8734`](../ui/dr-ui/src/develop.rs#L8734), [`ui/dr-ui/src/develop.rs:8798`](../ui/dr-ui/src/develop.rs#L8798), [`ui/dr-ui/src/develop.rs:8821`](../ui/dr-ui/src/develop.rs#L8821), [`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:1872`](../ui/dr-ui/src/lib.rs#L1872), [`ui/dr-ui/src/lib.rs:1980`](../ui/dr-ui/src/lib.rs#L1980), [`ui/dr-ui/src/lib.rs:2093`](../ui/dr-ui/src/lib.rs#L2093), [`ui/dr-ui/src/lib.rs:2134`](../ui/dr-ui/src/lib.rs#L2134), [`ui/dr-ui/src/lib.rs:3627`](../ui/dr-ui/src/lib.rs#L3627), [`ui/dr-ui/src/lib.rs:437`](../ui/dr-ui/src/lib.rs#L437), [`ui/dr-ui/src/peaking.rs:1`](../ui/dr-ui/src/peaking.rs#L1), [`ui/dr-ui/ui/app.slint:1938`](../ui/dr-ui/ui/app.slint#L1938), [`ui/dr-ui/ui/app.slint:2945`](../ui/dr-ui/ui/app.slint#L2945), [`ui/dr-ui/ui/app.slint:87`](../ui/dr-ui/ui/app.slint#L87), [`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-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.rs:4137`](../ui/dr-ui/src/develop.rs#L4137), [`ui/dr-ui/src/develop.rs:4150`](../ui/dr-ui/src/develop.rs#L4150), [`ui/dr-ui/src/develop.rs:4195`](../ui/dr-ui/src/develop.rs#L4195), [`ui/dr-ui/src/develop.rs:4206`](../ui/dr-ui/src/develop.rs#L4206), [`ui/dr-ui/src/develop.rs:4212`](../ui/dr-ui/src/develop.rs#L4212), [`ui/dr-ui/src/develop.rs:4229`](../ui/dr-ui/src/develop.rs#L4229), [`ui/dr-ui/src/develop.rs:810`](../ui/dr-ui/src/develop.rs#L810), [`ui/dr-ui/src/develop.rs:830`](../ui/dr-ui/src/develop.rs#L830), [`ui/dr-ui/src/develop.rs:836`](../ui/dr-ui/src/develop.rs#L836), [`ui/dr-ui/src/develop.rs:8734`](../ui/dr-ui/src/develop.rs#L8734), [`ui/dr-ui/src/develop.rs:8798`](../ui/dr-ui/src/develop.rs#L8798), [`ui/dr-ui/src/develop.rs:8821`](../ui/dr-ui/src/develop.rs#L8821), [`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:1902`](../ui/dr-ui/src/lib.rs#L1902), [`ui/dr-ui/src/lib.rs:2010`](../ui/dr-ui/src/lib.rs#L2010), [`ui/dr-ui/src/lib.rs:2123`](../ui/dr-ui/src/lib.rs#L2123), [`ui/dr-ui/src/lib.rs:2164`](../ui/dr-ui/src/lib.rs#L2164), [`ui/dr-ui/src/lib.rs:3657`](../ui/dr-ui/src/lib.rs#L3657), [`ui/dr-ui/src/lib.rs:438`](../ui/dr-ui/src/lib.rs#L438), [`ui/dr-ui/src/peaking.rs:1`](../ui/dr-ui/src/peaking.rs#L1), [`ui/dr-ui/ui/app.slint:1986`](../ui/dr-ui/ui/app.slint#L1986), [`ui/dr-ui/ui/app.slint:2993`](../ui/dr-ui/ui/app.slint#L2993), [`ui/dr-ui/ui/app.slint:88`](../ui/dr-ui/ui/app.slint#L88), [`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:156`](../core/dr-pipeline/src/sidecar.rs#L156), [`core/dr-xmp/src/lib.rs:442`](../core/dr-xmp/src/lib.rs#L442), [`ui/dr-ui/src/library.rs:254`](../ui/dr-ui/src/library.rs#L254), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500) |
| FR-CULL-5 | [`core/dr-catalog/src/bursts.rs:1`](../core/dr-catalog/src/bursts.rs#L1), [`core/dr-catalog/src/schema.rs:490`](../core/dr-catalog/src/schema.rs#L490), [`ui/dr-ui/src/bursts.rs:1`](../ui/dr-ui/src/bursts.rs#L1), [`ui/dr-ui/src/library.rs:210`](../ui/dr-ui/src/library.rs#L210), [`ui/dr-ui/src/library.rs:6688`](../ui/dr-ui/src/library.rs#L6688) |
-| 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:558`](../core/dr-catalog/src/schema.rs#L558), [`core/dr-catalog/src/schema.rs:710`](../core/dr-catalog/src/schema.rs#L710), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`core/dr-face/src/align.rs:291`](../core/dr-face/src/align.rs#L291), [`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:124`](../ui/dr-ui/src/derived_sync.rs#L124), [`ui/dr-ui/src/faces.rs:1`](../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/faces.rs:334`](../ui/dr-ui/src/faces.rs#L334), [`ui/dr-ui/src/faces.rs:350`](../ui/dr-ui/src/faces.rs#L350), [`ui/dr-ui/src/faces.rs:457`](../ui/dr-ui/src/faces.rs#L457), [`ui/dr-ui/src/identity_ui.rs:548`](../ui/dr-ui/src/identity_ui.rs#L548), [`ui/dr-ui/src/lib.rs:1480`](../ui/dr-ui/src/lib.rs#L1480), [`ui/dr-ui/src/lib.rs:3882`](../ui/dr-ui/src/lib.rs#L3882), [`ui/dr-ui/src/library.rs:3531`](../ui/dr-ui/src/library.rs#L3531), [`ui/dr-ui/src/library.rs:3797`](../ui/dr-ui/src/library.rs#L3797), [`ui/dr-ui/src/library.rs:4052`](../ui/dr-ui/src/library.rs#L4052), [`ui/dr-ui/src/library.rs:4333`](../ui/dr-ui/src/library.rs#L4333), [`ui/dr-ui/src/library.rs:4522`](../ui/dr-ui/src/library.rs#L4522), [`ui/dr-ui/src/library.rs:4558`](../ui/dr-ui/src/library.rs#L4558), [`ui/dr-ui/src/library.rs:4638`](../ui/dr-ui/src/library.rs#L4638), [`ui/dr-ui/src/library.rs:6855`](../ui/dr-ui/src/library.rs#L6855), [`ui/dr-ui/src/library_ui.rs:406`](../ui/dr-ui/src/library_ui.rs#L406), [`ui/dr-ui/src/library_ui.rs:491`](../ui/dr-ui/src/library_ui.rs#L491), [`ui/dr-ui/src/settings_ui.rs:210`](../ui/dr-ui/src/settings_ui.rs#L210), [`ui/dr-ui/src/settings_ui.rs:552`](../ui/dr-ui/src/settings_ui.rs#L552), [`ui/dr-ui/ui/app.slint:898`](../ui/dr-ui/ui/app.slint#L898), [`ui/dr-ui/ui/settings.slint:457`](../ui/dr-ui/ui/settings.slint#L457), [`ui/dr-ui/ui/settings.slint:82`](../ui/dr-ui/ui/settings.slint#L82), [`ui/dr-ui/ui/settings.slint:94`](../ui/dr-ui/ui/settings.slint#L94) |
+| 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:558`](../core/dr-catalog/src/schema.rs#L558), [`core/dr-catalog/src/schema.rs:710`](../core/dr-catalog/src/schema.rs#L710), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`core/dr-face/src/align.rs:291`](../core/dr-face/src/align.rs#L291), [`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:124`](../ui/dr-ui/src/derived_sync.rs#L124), [`ui/dr-ui/src/faces.rs:1`](../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/faces.rs:334`](../ui/dr-ui/src/faces.rs#L334), [`ui/dr-ui/src/faces.rs:350`](../ui/dr-ui/src/faces.rs#L350), [`ui/dr-ui/src/faces.rs:457`](../ui/dr-ui/src/faces.rs#L457), [`ui/dr-ui/src/identity_ui.rs:548`](../ui/dr-ui/src/identity_ui.rs#L548), [`ui/dr-ui/src/lib.rs:1481`](../ui/dr-ui/src/lib.rs#L1481), [`ui/dr-ui/src/lib.rs:3912`](../ui/dr-ui/src/lib.rs#L3912), [`ui/dr-ui/src/library.rs:3531`](../ui/dr-ui/src/library.rs#L3531), [`ui/dr-ui/src/library.rs:3797`](../ui/dr-ui/src/library.rs#L3797), [`ui/dr-ui/src/library.rs:4052`](../ui/dr-ui/src/library.rs#L4052), [`ui/dr-ui/src/library.rs:4333`](../ui/dr-ui/src/library.rs#L4333), [`ui/dr-ui/src/library.rs:4522`](../ui/dr-ui/src/library.rs#L4522), [`ui/dr-ui/src/library.rs:4558`](../ui/dr-ui/src/library.rs#L4558), [`ui/dr-ui/src/library.rs:4638`](../ui/dr-ui/src/library.rs#L4638), [`ui/dr-ui/src/library.rs:6855`](../ui/dr-ui/src/library.rs#L6855), [`ui/dr-ui/src/library_ui.rs:406`](../ui/dr-ui/src/library_ui.rs#L406), [`ui/dr-ui/src/library_ui.rs:491`](../ui/dr-ui/src/library_ui.rs#L491), [`ui/dr-ui/src/settings_ui.rs:210`](../ui/dr-ui/src/settings_ui.rs#L210), [`ui/dr-ui/src/settings_ui.rs:552`](../ui/dr-ui/src/settings_ui.rs#L552), [`ui/dr-ui/ui/app.slint:923`](../ui/dr-ui/ui/app.slint#L923), [`ui/dr-ui/ui/settings.slint:457`](../ui/dr-ui/ui/settings.slint#L457), [`ui/dr-ui/ui/settings.slint:82`](../ui/dr-ui/ui/settings.slint#L82), [`ui/dr-ui/ui/settings.slint:94`](../ui/dr-ui/ui/settings.slint#L94) |
| FR-CULL-9 | [`core/dr-catalog/src/faces.rs:1`](../core/dr-catalog/src/faces.rs#L1), [`core/dr-catalog/src/schema.rs:625`](../core/dr-catalog/src/schema.rs#L625), [`core/dr-catalog/src/schema.rs:751`](../core/dr-catalog/src/schema.rs#L751), [`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:457`](../ui/dr-ui/src/faces.rs#L457), [`ui/dr-ui/src/identity_ui.rs:1`](../ui/dr-ui/src/identity_ui.rs#L1), [`ui/dr-ui/src/library.rs:3904`](../ui/dr-ui/src/library.rs#L3904), [`ui/dr-ui/src/library.rs:4638`](../ui/dr-ui/src/library.rs#L4638), [`ui/dr-ui/ui/identity.slint:314`](../ui/dr-ui/ui/identity.slint#L314) |
| 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) |
| FR-DEV-10 | [`core/dr-gpu/src/mask.rs:1027`](../core/dr-gpu/src/mask.rs#L1027), [`core/dr-gpu/src/mask.rs:1251`](../core/dr-gpu/src/mask.rs#L1251), [`core/dr-gpu/src/mask.rs:1509`](../core/dr-gpu/src/mask.rs#L1509), [`core/dr-gpu/src/mask.rs:421`](../core/dr-gpu/src/mask.rs#L421), [`core/dr-gpu/src/mask.rs:463`](../core/dr-gpu/src/mask.rs#L463), [`core/dr-gpu/src/mask.rs:58`](../core/dr-gpu/src/mask.rs#L58), [`core/dr-gpu/src/mask.rs:60`](../core/dr-gpu/src/mask.rs#L60), [`core/dr-gpu/src/mask.rs:834`](../core/dr-gpu/src/mask.rs#L834), [`core/dr-gpu/src/mask.rs:85`](../core/dr-gpu/src/mask.rs#L85), [`core/dr-gpu/src/mask.rs:913`](../core/dr-gpu/src/mask.rs#L913), [`core/dr-gpu/src/shaders/mask.wgsl:117`](../core/dr-gpu/src/shaders/mask.wgsl#L117), [`core/dr-gpu/src/shaders/mask.wgsl:59`](../core/dr-gpu/src/shaders/mask.wgsl#L59), [`core/dr-gpu/tests/range_masks.rs:119`](../core/dr-gpu/tests/range_masks.rs#L119), [`core/dr-gpu/tests/range_masks.rs:147`](../core/dr-gpu/tests/range_masks.rs#L147), [`core/dr-gpu/tests/range_masks.rs:175`](../core/dr-gpu/tests/range_masks.rs#L175), [`core/dr-gpu/tests/range_masks.rs:1`](../core/dr-gpu/tests/range_masks.rs#L1), [`core/dr-gpu/tests/range_masks.rs:94`](../core/dr-gpu/tests/range_masks.rs#L94), [`core/dr-pipeline/src/mask.rs:125`](../core/dr-pipeline/src/mask.rs#L125), [`core/dr-pipeline/src/mask.rs:2845`](../core/dr-pipeline/src/mask.rs#L2845), [`core/dr-pipeline/src/mask.rs:2858`](../core/dr-pipeline/src/mask.rs#L2858), [`core/dr-pipeline/src/mask.rs:2877`](../core/dr-pipeline/src/mask.rs#L2877), [`core/dr-pipeline/src/mask.rs:2891`](../core/dr-pipeline/src/mask.rs#L2891), [`core/dr-pipeline/src/mask.rs:2901`](../core/dr-pipeline/src/mask.rs#L2901), [`core/dr-pipeline/src/mask.rs:710`](../core/dr-pipeline/src/mask.rs#L710), [`core/dr-pipeline/src/mask.rs:749`](../core/dr-pipeline/src/mask.rs#L749), [`core/dr-pipeline/src/mask.rs:809`](../core/dr-pipeline/src/mask.rs#L809), [`core/dr-pipeline/src/mask.rs:828`](../core/dr-pipeline/src/mask.rs#L828), [`core/dr-pipeline/src/mask.rs:852`](../core/dr-pipeline/src/mask.rs#L852), [`core/dr-pipeline/src/mask.rs:864`](../core/dr-pipeline/src/mask.rs#L864), [`core/dr-pipeline/src/mask.rs:876`](../core/dr-pipeline/src/mask.rs#L876), [`core/dr-pipeline/src/sidecar.rs:1309`](../core/dr-pipeline/src/sidecar.rs#L1309), [`core/dr-pipeline/src/sidecar.rs:1488`](../core/dr-pipeline/src/sidecar.rs#L1488), [`core/dr-pipeline/src/sidecar.rs:1577`](../core/dr-pipeline/src/sidecar.rs#L1577), [`core/dr-pipeline/src/sidecar.rs:1681`](../core/dr-pipeline/src/sidecar.rs#L1681), [`core/dr-pipeline/src/sidecar.rs:1889`](../core/dr-pipeline/src/sidecar.rs#L1889), [`core/dr-pipeline/tests/mask_sidecar.rs:1157`](../core/dr-pipeline/tests/mask_sidecar.rs#L1157), [`core/dr-pipeline/tests/mask_sidecar.rs:1186`](../core/dr-pipeline/tests/mask_sidecar.rs#L1186), [`core/dr-pipeline/tests/mask_sidecar.rs:1204`](../core/dr-pipeline/tests/mask_sidecar.rs#L1204), [`core/dr-pipeline/tests/mask_sidecar.rs:1234`](../core/dr-pipeline/tests/mask_sidecar.rs#L1234), [`ui/dr-ui/src/develop.rs:2318`](../ui/dr-ui/src/develop.rs#L2318), [`ui/dr-ui/src/develop.rs:3657`](../ui/dr-ui/src/develop.rs#L3657), [`ui/dr-ui/src/develop.rs:3684`](../ui/dr-ui/src/develop.rs#L3684), [`ui/dr-ui/src/develop.rs:3716`](../ui/dr-ui/src/develop.rs#L3716), [`ui/dr-ui/src/develop.rs:3740`](../ui/dr-ui/src/develop.rs#L3740), [`ui/dr-ui/src/develop.rs:3746`](../ui/dr-ui/src/develop.rs#L3746), [`ui/dr-ui/src/develop.rs:3753`](../ui/dr-ui/src/develop.rs#L3753), [`ui/dr-ui/src/develop.rs:3773`](../ui/dr-ui/src/develop.rs#L3773), [`ui/dr-ui/src/labels.rs:63`](../ui/dr-ui/src/labels.rs#L63), [`ui/dr-ui/src/masks_ui.rs:1150`](../ui/dr-ui/src/masks_ui.rs#L1150), [`ui/dr-ui/src/masks_ui.rs:748`](../ui/dr-ui/src/masks_ui.rs#L748) |
| FR-DEV-12 | [`core/dr-pipeline/ops/colour_grading.yaml:1`](../core/dr-pipeline/ops/colour_grading.yaml#L1) |
-| FR-DEV-16 | [`ui/dr-ui/src/lib.rs:419`](../ui/dr-ui/src/lib.rs#L419), [`ui/dr-ui/src/masks_ui.rs:670`](../ui/dr-ui/src/masks_ui.rs#L670), [`ui/dr-ui/ui/adjust.slint:998`](../ui/dr-ui/ui/adjust.slint#L998), [`ui/dr-ui/ui/app.slint:2530`](../ui/dr-ui/ui/app.slint#L2530), [`ui/dr-ui/ui/app.slint:2543`](../ui/dr-ui/ui/app.slint#L2543), [`ui/dr-ui/ui/masks.slint:824`](../ui/dr-ui/ui/masks.slint#L824) |
+| FR-DEV-16 | [`ui/dr-ui/src/lib.rs:420`](../ui/dr-ui/src/lib.rs#L420), [`ui/dr-ui/src/masks_ui.rs:670`](../ui/dr-ui/src/masks_ui.rs#L670), [`ui/dr-ui/ui/adjust.slint:998`](../ui/dr-ui/ui/adjust.slint#L998), [`ui/dr-ui/ui/app.slint:2578`](../ui/dr-ui/ui/app.slint#L2578), [`ui/dr-ui/ui/app.slint:2591`](../ui/dr-ui/ui/app.slint#L2591), [`ui/dr-ui/ui/masks.slint:824`](../ui/dr-ui/ui/masks.slint#L824) |
| FR-DEV-18 | [`core/dr-pipeline/src/ops/dehaze.rs:1`](../core/dr-pipeline/src/ops/dehaze.rs#L1), [`core/dr-pipeline/src/ops/dehaze.rs:221`](../core/dr-pipeline/src/ops/dehaze.rs#L221) |
| FR-DEV-19 | [`core/dr-pipeline/src/mask.rs:1307`](../core/dr-pipeline/src/mask.rs#L1307) |
| FR-DEV-19a | [`core/dr-gpu/src/mask.rs:761`](../core/dr-gpu/src/mask.rs#L761), [`core/dr-pipeline/src/mask.rs:1588`](../core/dr-pipeline/src/mask.rs#L1588), [`core/dr-pipeline/src/mask.rs:2919`](../core/dr-pipeline/src/mask.rs#L2919), [`core/dr-pipeline/src/mask.rs:988`](../core/dr-pipeline/src/mask.rs#L988), [`core/dr-pipeline/src/sidecar.rs:1199`](../core/dr-pipeline/src/sidecar.rs#L1199), [`core/dr-pipeline/tests/mask_sidecar.rs:1347`](../core/dr-pipeline/tests/mask_sidecar.rs#L1347), [`core/dr-pipeline/tests/mask_sidecar.rs:1373`](../core/dr-pipeline/tests/mask_sidecar.rs#L1373), [`ui/dr-ui/src/develop.rs:2921`](../ui/dr-ui/src/develop.rs#L2921), [`ui/dr-ui/src/develop.rs:2982`](../ui/dr-ui/src/develop.rs#L2982), [`ui/dr-ui/src/develop.rs:3001`](../ui/dr-ui/src/develop.rs#L3001), [`ui/dr-ui/src/develop.rs:880`](../ui/dr-ui/src/develop.rs#L880), [`ui/dr-ui/src/labels.rs:73`](../ui/dr-ui/src/labels.rs#L73), [`ui/dr-ui/src/masks_ui.rs:1017`](../ui/dr-ui/src/masks_ui.rs#L1017), [`ui/dr-ui/src/masks_ui.rs:1089`](../ui/dr-ui/src/masks_ui.rs#L1089), [`ui/dr-ui/src/masks_ui.rs:1448`](../ui/dr-ui/src/masks_ui.rs#L1448), [`ui/dr-ui/src/masks_ui.rs:270`](../ui/dr-ui/src/masks_ui.rs#L270), [`ui/dr-ui/ui/masks.slint:150`](../ui/dr-ui/ui/masks.slint#L150), [`ui/dr-ui/ui/masks.slint:175`](../ui/dr-ui/ui/masks.slint#L175), [`ui/dr-ui/ui/masks.slint:337`](../ui/dr-ui/ui/masks.slint#L337), [`ui/dr-ui/ui/masks.slint:406`](../ui/dr-ui/ui/masks.slint#L406), [`ui/dr-ui/ui/masks.slint:762`](../ui/dr-ui/ui/masks.slint#L762), [`ui/dr-ui/ui/masks.slint:847`](../ui/dr-ui/ui/masks.slint#L847) |
-| FR-DEV-19b | [`ui/dr-ui/src/develop.rs:3082`](../ui/dr-ui/src/develop.rs#L3082), [`ui/dr-ui/src/develop.rs:3625`](../ui/dr-ui/src/develop.rs#L3625), [`ui/dr-ui/src/develop.rs:889`](../ui/dr-ui/src/develop.rs#L889), [`ui/dr-ui/src/develop.rs:896`](../ui/dr-ui/src/develop.rs#L896), [`ui/dr-ui/src/labels.rs:67`](../ui/dr-ui/src/labels.rs#L67), [`ui/dr-ui/src/masks_ui.rs:1122`](../ui/dr-ui/src/masks_ui.rs#L1122), [`ui/dr-ui/src/masks_ui.rs:1341`](../ui/dr-ui/src/masks_ui.rs#L1341), [`ui/dr-ui/src/masks_ui.rs:1369`](../ui/dr-ui/src/masks_ui.rs#L1369), [`ui/dr-ui/src/masks_ui.rs:1712`](../ui/dr-ui/src/masks_ui.rs#L1712), [`ui/dr-ui/src/masks_ui.rs:858`](../ui/dr-ui/src/masks_ui.rs#L858), [`ui/dr-ui/ui/app.slint:1008`](../ui/dr-ui/ui/app.slint#L1008), [`ui/dr-ui/ui/app.slint:2170`](../ui/dr-ui/ui/app.slint#L2170), [`ui/dr-ui/ui/masks.slint:1118`](../ui/dr-ui/ui/masks.slint#L1118), [`ui/dr-ui/ui/masks.slint:453`](../ui/dr-ui/ui/masks.slint#L453), [`ui/dr-ui/ui/masks.slint:766`](../ui/dr-ui/ui/masks.slint#L766), [`ui/dr-ui/ui/masks.slint:840`](../ui/dr-ui/ui/masks.slint#L840), [`ui/dr-ui/ui/masks.slint:856`](../ui/dr-ui/ui/masks.slint#L856) |
+| FR-DEV-19b | [`ui/dr-ui/src/develop.rs:3082`](../ui/dr-ui/src/develop.rs#L3082), [`ui/dr-ui/src/develop.rs:3625`](../ui/dr-ui/src/develop.rs#L3625), [`ui/dr-ui/src/develop.rs:889`](../ui/dr-ui/src/develop.rs#L889), [`ui/dr-ui/src/develop.rs:896`](../ui/dr-ui/src/develop.rs#L896), [`ui/dr-ui/src/labels.rs:67`](../ui/dr-ui/src/labels.rs#L67), [`ui/dr-ui/src/masks_ui.rs:1122`](../ui/dr-ui/src/masks_ui.rs#L1122), [`ui/dr-ui/src/masks_ui.rs:1341`](../ui/dr-ui/src/masks_ui.rs#L1341), [`ui/dr-ui/src/masks_ui.rs:1369`](../ui/dr-ui/src/masks_ui.rs#L1369), [`ui/dr-ui/src/masks_ui.rs:1712`](../ui/dr-ui/src/masks_ui.rs#L1712), [`ui/dr-ui/src/masks_ui.rs:858`](../ui/dr-ui/src/masks_ui.rs#L858), [`ui/dr-ui/ui/app.slint:1033`](../ui/dr-ui/ui/app.slint#L1033), [`ui/dr-ui/ui/app.slint:2218`](../ui/dr-ui/ui/app.slint#L2218), [`ui/dr-ui/ui/masks.slint:1118`](../ui/dr-ui/ui/masks.slint#L1118), [`ui/dr-ui/ui/masks.slint:453`](../ui/dr-ui/ui/masks.slint#L453), [`ui/dr-ui/ui/masks.slint:766`](../ui/dr-ui/ui/masks.slint#L766), [`ui/dr-ui/ui/masks.slint:840`](../ui/dr-ui/ui/masks.slint#L840), [`ui/dr-ui/ui/masks.slint:856`](../ui/dr-ui/ui/masks.slint#L856) |
| FR-DEV-19c | [`core/dr-gpu/src/mask.rs:715`](../core/dr-gpu/src/mask.rs#L715), [`core/dr-gpu/tests/local_adjustments.rs:830`](../core/dr-gpu/tests/local_adjustments.rs#L830), [`core/dr-gpu/tests/local_adjustments.rs:887`](../core/dr-gpu/tests/local_adjustments.rs#L887), [`core/dr-gpu/tests/local_adjustments.rs:922`](../core/dr-gpu/tests/local_adjustments.rs#L922), [`core/dr-gpu/tests/local_adjustments.rs:967`](../core/dr-gpu/tests/local_adjustments.rs#L967), [`core/dr-pipeline/src/graph.rs:860`](../core/dr-pipeline/src/graph.rs#L860), [`core/dr-pipeline/src/mask.rs:1796`](../core/dr-pipeline/src/mask.rs#L1796), [`core/dr-pipeline/src/mask.rs:1822`](../core/dr-pipeline/src/mask.rs#L1822), [`core/dr-pipeline/src/mask.rs:1837`](../core/dr-pipeline/src/mask.rs#L1837), [`core/dr-pipeline/src/mask.rs:1957`](../core/dr-pipeline/src/mask.rs#L1957), [`core/dr-pipeline/src/mask.rs:2005`](../core/dr-pipeline/src/mask.rs#L2005), [`core/dr-pipeline/src/mask.rs:2149`](../core/dr-pipeline/src/mask.rs#L2149), [`core/dr-pipeline/src/mask.rs:2386`](../core/dr-pipeline/src/mask.rs#L2386), [`core/dr-pipeline/src/operation.rs:1679`](../core/dr-pipeline/src/operation.rs#L1679), [`core/dr-pipeline/src/operation.rs:573`](../core/dr-pipeline/src/operation.rs#L573), [`core/dr-pipeline/src/operation.rs:810`](../core/dr-pipeline/src/operation.rs#L810), [`ui/dr-ui/src/develop.rs:2035`](../ui/dr-ui/src/develop.rs#L2035), [`ui/dr-ui/src/develop.rs:2295`](../ui/dr-ui/src/develop.rs#L2295), [`ui/dr-ui/src/develop.rs:2542`](../ui/dr-ui/src/develop.rs#L2542), [`ui/dr-ui/src/develop.rs:2666`](../ui/dr-ui/src/develop.rs#L2666), [`ui/dr-ui/src/develop.rs:4059`](../ui/dr-ui/src/develop.rs#L4059), [`ui/dr-ui/src/develop.rs:686`](../ui/dr-ui/src/develop.rs#L686), [`ui/dr-ui/src/develop.rs:695`](../ui/dr-ui/src/develop.rs#L695), [`ui/dr-ui/src/develop.rs:6995`](../ui/dr-ui/src/develop.rs#L6995), [`ui/dr-ui/src/develop.rs:7031`](../ui/dr-ui/src/develop.rs#L7031), [`ui/dr-ui/src/develop.rs:915`](../ui/dr-ui/src/develop.rs#L915), [`ui/dr-ui/src/develop.rs:924`](../ui/dr-ui/src/develop.rs#L924), [`ui/dr-ui/src/masks_ui.rs:1341`](../ui/dr-ui/src/masks_ui.rs#L1341), [`ui/dr-ui/src/masks_ui.rs:152`](../ui/dr-ui/src/masks_ui.rs#L152), [`ui/dr-ui/src/masks_ui.rs:1712`](../ui/dr-ui/src/masks_ui.rs#L1712), [`ui/dr-ui/src/masks_ui.rs:291`](../ui/dr-ui/src/masks_ui.rs#L291), [`ui/dr-ui/src/masks_ui.rs:317`](../ui/dr-ui/src/masks_ui.rs#L317), [`ui/dr-ui/src/masks_ui.rs:634`](../ui/dr-ui/src/masks_ui.rs#L634), [`ui/dr-ui/src/masks_ui.rs:940`](../ui/dr-ui/src/masks_ui.rs#L940), [`ui/dr-ui/src/masks_ui.rs:968`](../ui/dr-ui/src/masks_ui.rs#L968), [`ui/dr-ui/ui/icons.slint:339`](../ui/dr-ui/ui/icons.slint#L339), [`ui/dr-ui/ui/masks.slint:1083`](../ui/dr-ui/ui/masks.slint#L1083), [`ui/dr-ui/ui/masks.slint:183`](../ui/dr-ui/ui/masks.slint#L183), [`ui/dr-ui/ui/masks.slint:292`](../ui/dr-ui/ui/masks.slint#L292), [`ui/dr-ui/ui/masks.slint:517`](../ui/dr-ui/ui/masks.slint#L517), [`ui/dr-ui/ui/masks.slint:70`](../ui/dr-ui/ui/masks.slint#L70), [`ui/dr-ui/ui/masks.slint:774`](../ui/dr-ui/ui/masks.slint#L774), [`ui/dr-ui/ui/masks.slint:842`](../ui/dr-ui/ui/masks.slint#L842), [`ui/dr-ui/ui/masks.slint:930`](../ui/dr-ui/ui/masks.slint#L930) |
| FR-DEV-2 | [`core/dr-pipeline/src/operation.rs:403`](../core/dr-pipeline/src/operation.rs#L403) |
-| FR-DEV-3 | [`core/dr-gpu/src/adjust.rs:2443`](../core/dr-gpu/src/adjust.rs#L2443), [`core/dr-gpu/src/adjust.rs:679`](../core/dr-gpu/src/adjust.rs#L679), [`core/dr-gpu/src/adjust.rs:798`](../core/dr-gpu/src/adjust.rs#L798), [`core/dr-gpu/src/adjust.rs:84`](../core/dr-gpu/src/adjust.rs#L84), [`core/dr-gpu/tests/tone_curve.rs:1`](../core/dr-gpu/tests/tone_curve.rs#L1), [`core/dr-pipeline/src/coverage.rs:122`](../core/dr-pipeline/src/coverage.rs#L122), [`core/dr-pipeline/src/coverage.rs:1`](../core/dr-pipeline/src/coverage.rs#L1), [`core/dr-pipeline/src/detail.rs:434`](../core/dr-pipeline/src/detail.rs#L434), [`core/dr-pipeline/src/detail.rs:524`](../core/dr-pipeline/src/detail.rs#L524), [`core/dr-pipeline/src/framing.rs:177`](../core/dr-pipeline/src/framing.rs#L177), [`core/dr-pipeline/src/framing.rs:234`](../core/dr-pipeline/src/framing.rs#L234), [`core/dr-pipeline/src/framing.rs:314`](../core/dr-pipeline/src/framing.rs#L314), [`core/dr-pipeline/src/framing.rs:498`](../core/dr-pipeline/src/framing.rs#L498), [`core/dr-pipeline/src/framing.rs:753`](../core/dr-pipeline/src/framing.rs#L753), [`core/dr-pipeline/src/graph.rs:1315`](../core/dr-pipeline/src/graph.rs#L1315), [`core/dr-pipeline/src/graph.rs:1346`](../core/dr-pipeline/src/graph.rs#L1346), [`core/dr-pipeline/src/graph.rs:1369`](../core/dr-pipeline/src/graph.rs#L1369), [`core/dr-pipeline/src/graph.rs:1407`](../core/dr-pipeline/src/graph.rs#L1407), [`core/dr-pipeline/src/graph.rs:1438`](../core/dr-pipeline/src/graph.rs#L1438), [`core/dr-pipeline/src/graph.rs:225`](../core/dr-pipeline/src/graph.rs#L225), [`core/dr-pipeline/src/graph.rs:306`](../core/dr-pipeline/src/graph.rs#L306), [`core/dr-pipeline/src/graph.rs:344`](../core/dr-pipeline/src/graph.rs#L344), [`core/dr-pipeline/src/graph.rs:350`](../core/dr-pipeline/src/graph.rs#L350), [`core/dr-pipeline/src/graph.rs:919`](../core/dr-pipeline/src/graph.rs#L919), [`core/dr-pipeline/src/lens.rs:93`](../core/dr-pipeline/src/lens.rs#L93), [`core/dr-pipeline/src/mask.rs:205`](../core/dr-pipeline/src/mask.rs#L205), [`core/dr-pipeline/src/mask.rs:558`](../core/dr-pipeline/src/mask.rs#L558), [`core/dr-pipeline/src/neutral.rs:1`](../core/dr-pipeline/src/neutral.rs#L1), [`core/dr-pipeline/src/neutral.rs:300`](../core/dr-pipeline/src/neutral.rs#L300), [`core/dr-pipeline/src/neutral.rs:316`](../core/dr-pipeline/src/neutral.rs#L316), [`core/dr-pipeline/src/neutral.rs:332`](../core/dr-pipeline/src/neutral.rs#L332), [`core/dr-pipeline/src/neutral.rs:354`](../core/dr-pipeline/src/neutral.rs#L354), [`core/dr-pipeline/src/neutral.rs:79`](../core/dr-pipeline/src/neutral.rs#L79), [`core/dr-pipeline/src/operation.rs:330`](../core/dr-pipeline/src/operation.rs#L330), [`core/dr-pipeline/src/operation.rs:550`](../core/dr-pipeline/src/operation.rs#L550), [`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:210`](../core/dr-pipeline/src/ops/capture_sharpen.rs#L210), [`core/dr-pipeline/src/ops/curve.rs:100`](../core/dr-pipeline/src/ops/curve.rs#L100), [`core/dr-pipeline/src/ops/curve.rs:1`](../core/dr-pipeline/src/ops/curve.rs#L1), [`core/dr-pipeline/src/ops/curve.rs:219`](../core/dr-pipeline/src/ops/curve.rs#L219), [`core/dr-pipeline/src/ops/curve.rs:635`](../core/dr-pipeline/src/ops/curve.rs#L635), [`core/dr-pipeline/src/ops/local_contrast.rs:1`](../core/dr-pipeline/src/ops/local_contrast.rs#L1), [`core/dr-pipeline/src/ops/noise_reduction.rs:1`](../core/dr-pipeline/src/ops/noise_reduction.rs#L1), [`core/dr-pipeline/src/ops/noise_reduction.rs:273`](../core/dr-pipeline/src/ops/noise_reduction.rs#L273), [`core/dr-pipeline/src/preset.rs:751`](../core/dr-pipeline/src/preset.rs#L751), [`core/dr-pipeline/src/sidecar.rs:1373`](../core/dr-pipeline/src/sidecar.rs#L1373), [`core/dr-pipeline/src/sidecar.rs:177`](../core/dr-pipeline/src/sidecar.rs#L177), [`core/dr-pipeline/src/sidecar.rs:2205`](../core/dr-pipeline/src/sidecar.rs#L2205), [`core/dr-pipeline/src/sidecar.rs:2265`](../core/dr-pipeline/src/sidecar.rs#L2265), [`core/dr-pipeline/tests/tone_curve.rs:1`](../core/dr-pipeline/tests/tone_curve.rs#L1), [`core/dr-segment/src/refine.rs:937`](../core/dr-segment/src/refine.rs#L937), [`ui/dr-ui/src/develop.rs:103`](../ui/dr-ui/src/develop.rs#L103), [`ui/dr-ui/src/develop.rs:1318`](../ui/dr-ui/src/develop.rs#L1318), [`ui/dr-ui/src/develop.rs:1407`](../ui/dr-ui/src/develop.rs#L1407), [`ui/dr-ui/src/develop.rs:1443`](../ui/dr-ui/src/develop.rs#L1443), [`ui/dr-ui/src/develop.rs:165`](../ui/dr-ui/src/develop.rs#L165), [`ui/dr-ui/src/develop.rs:1714`](../ui/dr-ui/src/develop.rs#L1714), [`ui/dr-ui/src/develop.rs:2155`](../ui/dr-ui/src/develop.rs#L2155), [`ui/dr-ui/src/develop.rs:2398`](../ui/dr-ui/src/develop.rs#L2398), [`ui/dr-ui/src/develop.rs:2416`](../ui/dr-ui/src/develop.rs#L2416), [`ui/dr-ui/src/develop.rs:2430`](../ui/dr-ui/src/develop.rs#L2430), [`ui/dr-ui/src/develop.rs:2452`](../ui/dr-ui/src/develop.rs#L2452), [`ui/dr-ui/src/develop.rs:2752`](../ui/dr-ui/src/develop.rs#L2752), [`ui/dr-ui/src/develop.rs:2850`](../ui/dr-ui/src/develop.rs#L2850), [`ui/dr-ui/src/develop.rs:328`](../ui/dr-ui/src/develop.rs#L328), [`ui/dr-ui/src/develop.rs:365`](../ui/dr-ui/src/develop.rs#L365), [`ui/dr-ui/src/develop.rs:4400`](../ui/dr-ui/src/develop.rs#L4400), [`ui/dr-ui/src/develop.rs:4556`](../ui/dr-ui/src/develop.rs#L4556), [`ui/dr-ui/src/develop.rs:4616`](../ui/dr-ui/src/develop.rs#L4616), [`ui/dr-ui/src/develop.rs:5021`](../ui/dr-ui/src/develop.rs#L5021), [`ui/dr-ui/src/develop.rs:5051`](../ui/dr-ui/src/develop.rs#L5051), [`ui/dr-ui/src/develop.rs:5117`](../ui/dr-ui/src/develop.rs#L5117), [`ui/dr-ui/src/develop.rs:5131`](../ui/dr-ui/src/develop.rs#L5131), [`ui/dr-ui/src/develop.rs:5333`](../ui/dr-ui/src/develop.rs#L5333), [`ui/dr-ui/src/develop.rs:5421`](../ui/dr-ui/src/develop.rs#L5421), [`ui/dr-ui/src/develop.rs:588`](../ui/dr-ui/src/develop.rs#L588), [`ui/dr-ui/src/develop.rs:6367`](../ui/dr-ui/src/develop.rs#L6367), [`ui/dr-ui/src/develop.rs:6440`](../ui/dr-ui/src/develop.rs#L6440), [`ui/dr-ui/src/develop.rs:649`](../ui/dr-ui/src/develop.rs#L649), [`ui/dr-ui/src/develop.rs:6633`](../ui/dr-ui/src/develop.rs#L6633), [`ui/dr-ui/src/develop.rs:6824`](../ui/dr-ui/src/develop.rs#L6824), [`ui/dr-ui/src/develop.rs:6980`](../ui/dr-ui/src/develop.rs#L6980), [`ui/dr-ui/src/develop.rs:7136`](../ui/dr-ui/src/develop.rs#L7136), [`ui/dr-ui/src/develop.rs:7180`](../ui/dr-ui/src/develop.rs#L7180), [`ui/dr-ui/src/develop.rs:7230`](../ui/dr-ui/src/develop.rs#L7230), [`ui/dr-ui/src/develop.rs:7655`](../ui/dr-ui/src/develop.rs#L7655), [`ui/dr-ui/src/develop.rs:8383`](../ui/dr-ui/src/develop.rs#L8383), [`ui/dr-ui/src/develop.rs:850`](../ui/dr-ui/src/develop.rs#L850), [`ui/dr-ui/src/develop.rs:943`](../ui/dr-ui/src/develop.rs#L943), [`ui/dr-ui/src/develop.rs:972`](../ui/dr-ui/src/develop.rs#L972), [`ui/dr-ui/src/labels.rs:35`](../ui/dr-ui/src/labels.rs#L35), [`ui/dr-ui/src/lib.rs:1961`](../ui/dr-ui/src/lib.rs#L1961), [`ui/dr-ui/src/lib.rs:2841`](../ui/dr-ui/src/lib.rs#L2841), [`ui/dr-ui/src/lib.rs:3048`](../ui/dr-ui/src/lib.rs#L3048), [`ui/dr-ui/src/lib.rs:3181`](../ui/dr-ui/src/lib.rs#L3181), [`ui/dr-ui/src/lib.rs:3386`](../ui/dr-ui/src/lib.rs#L3386), [`ui/dr-ui/src/lib.rs:3450`](../ui/dr-ui/src/lib.rs#L3450), [`ui/dr-ui/src/lib.rs:3504`](../ui/dr-ui/src/lib.rs#L3504), [`ui/dr-ui/src/lib.rs:414`](../ui/dr-ui/src/lib.rs#L414), [`ui/dr-ui/src/lib.rs:443`](../ui/dr-ui/src/lib.rs#L443), [`ui/dr-ui/src/lib.rs:549`](../ui/dr-ui/src/lib.rs#L549), [`ui/dr-ui/src/lib.rs:573`](../ui/dr-ui/src/lib.rs#L573), [`ui/dr-ui/src/library.rs:552`](../ui/dr-ui/src/library.rs#L552), [`ui/dr-ui/src/masks_ui.rs:1471`](../ui/dr-ui/src/masks_ui.rs#L1471), [`ui/dr-ui/src/masks_ui.rs:1585`](../ui/dr-ui/src/masks_ui.rs#L1585), [`ui/dr-ui/src/masks_ui.rs:339`](../ui/dr-ui/src/masks_ui.rs#L339), [`ui/dr-ui/src/masks_ui.rs:44`](../ui/dr-ui/src/masks_ui.rs#L44), [`ui/dr-ui/src/presets.rs:414`](../ui/dr-ui/src/presets.rs#L414), [`ui/dr-ui/src/segmentation.rs:117`](../ui/dr-ui/src/segmentation.rs#L117), [`ui/dr-ui/src/segmentation.rs:353`](../ui/dr-ui/src/segmentation.rs#L353), [`ui/dr-ui/src/segmentation.rs:369`](../ui/dr-ui/src/segmentation.rs#L369), [`ui/dr-ui/src/segmentation.rs:499`](../ui/dr-ui/src/segmentation.rs#L499), [`ui/dr-ui/src/segmentation.rs:527`](../ui/dr-ui/src/segmentation.rs#L527), [`ui/dr-ui/ui/adjust.slint:1019`](../ui/dr-ui/ui/adjust.slint#L1019), [`ui/dr-ui/ui/adjust.slint:126`](../ui/dr-ui/ui/adjust.slint#L126), [`ui/dr-ui/ui/adjust.slint:1496`](../ui/dr-ui/ui/adjust.slint#L1496), [`ui/dr-ui/ui/adjust.slint:171`](../ui/dr-ui/ui/adjust.slint#L171), [`ui/dr-ui/ui/adjust.slint:46`](../ui/dr-ui/ui/adjust.slint#L46), [`ui/dr-ui/ui/adjust.slint:624`](../ui/dr-ui/ui/adjust.slint#L624), [`ui/dr-ui/ui/adjust.slint:650`](../ui/dr-ui/ui/adjust.slint#L650), [`ui/dr-ui/ui/adjust.slint:669`](../ui/dr-ui/ui/adjust.slint#L669), [`ui/dr-ui/ui/adjust.slint:790`](../ui/dr-ui/ui/adjust.slint#L790), [`ui/dr-ui/ui/adjust.slint:947`](../ui/dr-ui/ui/adjust.slint#L947), [`ui/dr-ui/ui/app.slint:146`](../ui/dr-ui/ui/app.slint#L146), [`ui/dr-ui/ui/app.slint:2235`](../ui/dr-ui/ui/app.slint#L2235), [`ui/dr-ui/ui/app.slint:2295`](../ui/dr-ui/ui/app.slint#L2295), [`ui/dr-ui/ui/develop.slint:223`](../ui/dr-ui/ui/develop.slint#L223), [`ui/dr-ui/ui/masks.slint:1208`](../ui/dr-ui/ui/masks.slint#L1208), [`ui/dr-ui/ui/masks.slint:745`](../ui/dr-ui/ui/masks.slint#L745), [`ui/dr-ui/ui/masks.slint:804`](../ui/dr-ui/ui/masks.slint#L804) |
-| FR-DEV-3a | [`core/dr-pipeline/ops/exposure.yaml:1`](../core/dr-pipeline/ops/exposure.yaml#L1), [`core/dr-pipeline/src/descriptor.rs:212`](../core/dr-pipeline/src/descriptor.rs#L212), [`core/dr-pipeline/src/descriptor.rs:252`](../core/dr-pipeline/src/descriptor.rs#L252), [`core/dr-pipeline/src/descriptor.rs:276`](../core/dr-pipeline/src/descriptor.rs#L276), [`core/dr-pipeline/src/descriptor.rs:331`](../core/dr-pipeline/src/descriptor.rs#L331), [`core/dr-pipeline/src/framing.rs:395`](../core/dr-pipeline/src/framing.rs#L395), [`core/dr-pipeline/src/graph.rs:25`](../core/dr-pipeline/src/graph.rs#L25), [`core/dr-pipeline/src/graph.rs:393`](../core/dr-pipeline/src/graph.rs#L393), [`core/dr-pipeline/src/graph.rs:47`](../core/dr-pipeline/src/graph.rs#L47), [`core/dr-pipeline/src/graph.rs:534`](../core/dr-pipeline/src/graph.rs#L534), [`core/dr-pipeline/src/graph.rs:60`](../core/dr-pipeline/src/graph.rs#L60), [`core/dr-pipeline/src/mask.rs:1699`](../core/dr-pipeline/src/mask.rs#L1699), [`core/dr-pipeline/src/neutral.rs:1`](../core/dr-pipeline/src/neutral.rs#L1), [`core/dr-pipeline/src/neutral.rs:372`](../core/dr-pipeline/src/neutral.rs#L372), [`core/dr-pipeline/src/operation.rs:232`](../core/dr-pipeline/src/operation.rs#L232), [`core/dr-pipeline/src/operation.rs:365`](../core/dr-pipeline/src/operation.rs#L365), [`core/dr-pipeline/src/ops/curve.rs:319`](../core/dr-pipeline/src/ops/curve.rs#L319), [`ui/dr-ui/src/develop.rs:1330`](../ui/dr-ui/src/develop.rs#L1330), [`ui/dr-ui/src/develop.rs:1609`](../ui/dr-ui/src/develop.rs#L1609), [`ui/dr-ui/src/develop.rs:7655`](../ui/dr-ui/src/develop.rs#L7655), [`ui/dr-ui/src/develop.rs:7853`](../ui/dr-ui/src/develop.rs#L7853), [`ui/dr-ui/src/lib.rs:874`](../ui/dr-ui/src/lib.rs#L874), [`ui/dr-ui/tests/ui_names_no_operation.rs:1`](../ui/dr-ui/tests/ui_names_no_operation.rs#L1), [`ui/dr-ui/ui/app.slint:2479`](../ui/dr-ui/ui/app.slint#L2479) |
-| FR-DEV-3b | [`core/dr-pipeline/src/descriptor.rs:276`](../core/dr-pipeline/src/descriptor.rs#L276), [`core/dr-pipeline/src/framing.rs:395`](../core/dr-pipeline/src/framing.rs#L395), [`core/dr-pipeline/src/graph.rs:60`](../core/dr-pipeline/src/graph.rs#L60), [`core/dr-pipeline/src/operation.rs:365`](../core/dr-pipeline/src/operation.rs#L365), [`ui/dr-ui/ui/app.slint:2690`](../ui/dr-ui/ui/app.slint#L2690) |
+| FR-DEV-3 | [`core/dr-gpu/src/adjust.rs:2443`](../core/dr-gpu/src/adjust.rs#L2443), [`core/dr-gpu/src/adjust.rs:679`](../core/dr-gpu/src/adjust.rs#L679), [`core/dr-gpu/src/adjust.rs:798`](../core/dr-gpu/src/adjust.rs#L798), [`core/dr-gpu/src/adjust.rs:84`](../core/dr-gpu/src/adjust.rs#L84), [`core/dr-gpu/tests/tone_curve.rs:1`](../core/dr-gpu/tests/tone_curve.rs#L1), [`core/dr-pipeline/src/coverage.rs:122`](../core/dr-pipeline/src/coverage.rs#L122), [`core/dr-pipeline/src/coverage.rs:1`](../core/dr-pipeline/src/coverage.rs#L1), [`core/dr-pipeline/src/detail.rs:434`](../core/dr-pipeline/src/detail.rs#L434), [`core/dr-pipeline/src/detail.rs:524`](../core/dr-pipeline/src/detail.rs#L524), [`core/dr-pipeline/src/framing.rs:177`](../core/dr-pipeline/src/framing.rs#L177), [`core/dr-pipeline/src/framing.rs:234`](../core/dr-pipeline/src/framing.rs#L234), [`core/dr-pipeline/src/framing.rs:314`](../core/dr-pipeline/src/framing.rs#L314), [`core/dr-pipeline/src/framing.rs:498`](../core/dr-pipeline/src/framing.rs#L498), [`core/dr-pipeline/src/framing.rs:753`](../core/dr-pipeline/src/framing.rs#L753), [`core/dr-pipeline/src/graph.rs:1315`](../core/dr-pipeline/src/graph.rs#L1315), [`core/dr-pipeline/src/graph.rs:1346`](../core/dr-pipeline/src/graph.rs#L1346), [`core/dr-pipeline/src/graph.rs:1369`](../core/dr-pipeline/src/graph.rs#L1369), [`core/dr-pipeline/src/graph.rs:1407`](../core/dr-pipeline/src/graph.rs#L1407), [`core/dr-pipeline/src/graph.rs:1438`](../core/dr-pipeline/src/graph.rs#L1438), [`core/dr-pipeline/src/graph.rs:225`](../core/dr-pipeline/src/graph.rs#L225), [`core/dr-pipeline/src/graph.rs:306`](../core/dr-pipeline/src/graph.rs#L306), [`core/dr-pipeline/src/graph.rs:344`](../core/dr-pipeline/src/graph.rs#L344), [`core/dr-pipeline/src/graph.rs:350`](../core/dr-pipeline/src/graph.rs#L350), [`core/dr-pipeline/src/graph.rs:919`](../core/dr-pipeline/src/graph.rs#L919), [`core/dr-pipeline/src/lens.rs:93`](../core/dr-pipeline/src/lens.rs#L93), [`core/dr-pipeline/src/mask.rs:205`](../core/dr-pipeline/src/mask.rs#L205), [`core/dr-pipeline/src/mask.rs:558`](../core/dr-pipeline/src/mask.rs#L558), [`core/dr-pipeline/src/neutral.rs:1`](../core/dr-pipeline/src/neutral.rs#L1), [`core/dr-pipeline/src/neutral.rs:300`](../core/dr-pipeline/src/neutral.rs#L300), [`core/dr-pipeline/src/neutral.rs:316`](../core/dr-pipeline/src/neutral.rs#L316), [`core/dr-pipeline/src/neutral.rs:332`](../core/dr-pipeline/src/neutral.rs#L332), [`core/dr-pipeline/src/neutral.rs:354`](../core/dr-pipeline/src/neutral.rs#L354), [`core/dr-pipeline/src/neutral.rs:79`](../core/dr-pipeline/src/neutral.rs#L79), [`core/dr-pipeline/src/operation.rs:330`](../core/dr-pipeline/src/operation.rs#L330), [`core/dr-pipeline/src/operation.rs:550`](../core/dr-pipeline/src/operation.rs#L550), [`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:210`](../core/dr-pipeline/src/ops/capture_sharpen.rs#L210), [`core/dr-pipeline/src/ops/curve.rs:100`](../core/dr-pipeline/src/ops/curve.rs#L100), [`core/dr-pipeline/src/ops/curve.rs:1`](../core/dr-pipeline/src/ops/curve.rs#L1), [`core/dr-pipeline/src/ops/curve.rs:219`](../core/dr-pipeline/src/ops/curve.rs#L219), [`core/dr-pipeline/src/ops/curve.rs:635`](../core/dr-pipeline/src/ops/curve.rs#L635), [`core/dr-pipeline/src/ops/local_contrast.rs:1`](../core/dr-pipeline/src/ops/local_contrast.rs#L1), [`core/dr-pipeline/src/ops/noise_reduction.rs:1`](../core/dr-pipeline/src/ops/noise_reduction.rs#L1), [`core/dr-pipeline/src/ops/noise_reduction.rs:273`](../core/dr-pipeline/src/ops/noise_reduction.rs#L273), [`core/dr-pipeline/src/preset.rs:751`](../core/dr-pipeline/src/preset.rs#L751), [`core/dr-pipeline/src/sidecar.rs:1373`](../core/dr-pipeline/src/sidecar.rs#L1373), [`core/dr-pipeline/src/sidecar.rs:177`](../core/dr-pipeline/src/sidecar.rs#L177), [`core/dr-pipeline/src/sidecar.rs:2205`](../core/dr-pipeline/src/sidecar.rs#L2205), [`core/dr-pipeline/src/sidecar.rs:2265`](../core/dr-pipeline/src/sidecar.rs#L2265), [`core/dr-pipeline/tests/tone_curve.rs:1`](../core/dr-pipeline/tests/tone_curve.rs#L1), [`core/dr-segment/src/refine.rs:937`](../core/dr-segment/src/refine.rs#L937), [`ui/dr-ui/src/develop.rs:103`](../ui/dr-ui/src/develop.rs#L103), [`ui/dr-ui/src/develop.rs:1318`](../ui/dr-ui/src/develop.rs#L1318), [`ui/dr-ui/src/develop.rs:1407`](../ui/dr-ui/src/develop.rs#L1407), [`ui/dr-ui/src/develop.rs:1443`](../ui/dr-ui/src/develop.rs#L1443), [`ui/dr-ui/src/develop.rs:165`](../ui/dr-ui/src/develop.rs#L165), [`ui/dr-ui/src/develop.rs:1714`](../ui/dr-ui/src/develop.rs#L1714), [`ui/dr-ui/src/develop.rs:2155`](../ui/dr-ui/src/develop.rs#L2155), [`ui/dr-ui/src/develop.rs:2398`](../ui/dr-ui/src/develop.rs#L2398), [`ui/dr-ui/src/develop.rs:2416`](../ui/dr-ui/src/develop.rs#L2416), [`ui/dr-ui/src/develop.rs:2430`](../ui/dr-ui/src/develop.rs#L2430), [`ui/dr-ui/src/develop.rs:2452`](../ui/dr-ui/src/develop.rs#L2452), [`ui/dr-ui/src/develop.rs:2752`](../ui/dr-ui/src/develop.rs#L2752), [`ui/dr-ui/src/develop.rs:2850`](../ui/dr-ui/src/develop.rs#L2850), [`ui/dr-ui/src/develop.rs:328`](../ui/dr-ui/src/develop.rs#L328), [`ui/dr-ui/src/develop.rs:365`](../ui/dr-ui/src/develop.rs#L365), [`ui/dr-ui/src/develop.rs:4400`](../ui/dr-ui/src/develop.rs#L4400), [`ui/dr-ui/src/develop.rs:4556`](../ui/dr-ui/src/develop.rs#L4556), [`ui/dr-ui/src/develop.rs:4616`](../ui/dr-ui/src/develop.rs#L4616), [`ui/dr-ui/src/develop.rs:5021`](../ui/dr-ui/src/develop.rs#L5021), [`ui/dr-ui/src/develop.rs:5051`](../ui/dr-ui/src/develop.rs#L5051), [`ui/dr-ui/src/develop.rs:5117`](../ui/dr-ui/src/develop.rs#L5117), [`ui/dr-ui/src/develop.rs:5131`](../ui/dr-ui/src/develop.rs#L5131), [`ui/dr-ui/src/develop.rs:5333`](../ui/dr-ui/src/develop.rs#L5333), [`ui/dr-ui/src/develop.rs:5421`](../ui/dr-ui/src/develop.rs#L5421), [`ui/dr-ui/src/develop.rs:588`](../ui/dr-ui/src/develop.rs#L588), [`ui/dr-ui/src/develop.rs:6367`](../ui/dr-ui/src/develop.rs#L6367), [`ui/dr-ui/src/develop.rs:6440`](../ui/dr-ui/src/develop.rs#L6440), [`ui/dr-ui/src/develop.rs:649`](../ui/dr-ui/src/develop.rs#L649), [`ui/dr-ui/src/develop.rs:6633`](../ui/dr-ui/src/develop.rs#L6633), [`ui/dr-ui/src/develop.rs:6824`](../ui/dr-ui/src/develop.rs#L6824), [`ui/dr-ui/src/develop.rs:6980`](../ui/dr-ui/src/develop.rs#L6980), [`ui/dr-ui/src/develop.rs:7136`](../ui/dr-ui/src/develop.rs#L7136), [`ui/dr-ui/src/develop.rs:7180`](../ui/dr-ui/src/develop.rs#L7180), [`ui/dr-ui/src/develop.rs:7230`](../ui/dr-ui/src/develop.rs#L7230), [`ui/dr-ui/src/develop.rs:7655`](../ui/dr-ui/src/develop.rs#L7655), [`ui/dr-ui/src/develop.rs:8383`](../ui/dr-ui/src/develop.rs#L8383), [`ui/dr-ui/src/develop.rs:850`](../ui/dr-ui/src/develop.rs#L850), [`ui/dr-ui/src/develop.rs:943`](../ui/dr-ui/src/develop.rs#L943), [`ui/dr-ui/src/develop.rs:972`](../ui/dr-ui/src/develop.rs#L972), [`ui/dr-ui/src/labels.rs:35`](../ui/dr-ui/src/labels.rs#L35), [`ui/dr-ui/src/lib.rs:1991`](../ui/dr-ui/src/lib.rs#L1991), [`ui/dr-ui/src/lib.rs:2871`](../ui/dr-ui/src/lib.rs#L2871), [`ui/dr-ui/src/lib.rs:3078`](../ui/dr-ui/src/lib.rs#L3078), [`ui/dr-ui/src/lib.rs:3211`](../ui/dr-ui/src/lib.rs#L3211), [`ui/dr-ui/src/lib.rs:3416`](../ui/dr-ui/src/lib.rs#L3416), [`ui/dr-ui/src/lib.rs:3480`](../ui/dr-ui/src/lib.rs#L3480), [`ui/dr-ui/src/lib.rs:3534`](../ui/dr-ui/src/lib.rs#L3534), [`ui/dr-ui/src/lib.rs:415`](../ui/dr-ui/src/lib.rs#L415), [`ui/dr-ui/src/lib.rs:444`](../ui/dr-ui/src/lib.rs#L444), [`ui/dr-ui/src/lib.rs:550`](../ui/dr-ui/src/lib.rs#L550), [`ui/dr-ui/src/lib.rs:574`](../ui/dr-ui/src/lib.rs#L574), [`ui/dr-ui/src/library.rs:552`](../ui/dr-ui/src/library.rs#L552), [`ui/dr-ui/src/masks_ui.rs:1471`](../ui/dr-ui/src/masks_ui.rs#L1471), [`ui/dr-ui/src/masks_ui.rs:1585`](../ui/dr-ui/src/masks_ui.rs#L1585), [`ui/dr-ui/src/masks_ui.rs:339`](../ui/dr-ui/src/masks_ui.rs#L339), [`ui/dr-ui/src/masks_ui.rs:44`](../ui/dr-ui/src/masks_ui.rs#L44), [`ui/dr-ui/src/presets.rs:414`](../ui/dr-ui/src/presets.rs#L414), [`ui/dr-ui/src/segmentation.rs:117`](../ui/dr-ui/src/segmentation.rs#L117), [`ui/dr-ui/src/segmentation.rs:353`](../ui/dr-ui/src/segmentation.rs#L353), [`ui/dr-ui/src/segmentation.rs:369`](../ui/dr-ui/src/segmentation.rs#L369), [`ui/dr-ui/src/segmentation.rs:499`](../ui/dr-ui/src/segmentation.rs#L499), [`ui/dr-ui/src/segmentation.rs:527`](../ui/dr-ui/src/segmentation.rs#L527), [`ui/dr-ui/ui/adjust.slint:1019`](../ui/dr-ui/ui/adjust.slint#L1019), [`ui/dr-ui/ui/adjust.slint:126`](../ui/dr-ui/ui/adjust.slint#L126), [`ui/dr-ui/ui/adjust.slint:1496`](../ui/dr-ui/ui/adjust.slint#L1496), [`ui/dr-ui/ui/adjust.slint:171`](../ui/dr-ui/ui/adjust.slint#L171), [`ui/dr-ui/ui/adjust.slint:46`](../ui/dr-ui/ui/adjust.slint#L46), [`ui/dr-ui/ui/adjust.slint:624`](../ui/dr-ui/ui/adjust.slint#L624), [`ui/dr-ui/ui/adjust.slint:650`](../ui/dr-ui/ui/adjust.slint#L650), [`ui/dr-ui/ui/adjust.slint:669`](../ui/dr-ui/ui/adjust.slint#L669), [`ui/dr-ui/ui/adjust.slint:790`](../ui/dr-ui/ui/adjust.slint#L790), [`ui/dr-ui/ui/adjust.slint:947`](../ui/dr-ui/ui/adjust.slint#L947), [`ui/dr-ui/ui/app.slint:147`](../ui/dr-ui/ui/app.slint#L147), [`ui/dr-ui/ui/app.slint:2283`](../ui/dr-ui/ui/app.slint#L2283), [`ui/dr-ui/ui/app.slint:2343`](../ui/dr-ui/ui/app.slint#L2343), [`ui/dr-ui/ui/develop.slint:223`](../ui/dr-ui/ui/develop.slint#L223), [`ui/dr-ui/ui/masks.slint:1208`](../ui/dr-ui/ui/masks.slint#L1208), [`ui/dr-ui/ui/masks.slint:745`](../ui/dr-ui/ui/masks.slint#L745), [`ui/dr-ui/ui/masks.slint:804`](../ui/dr-ui/ui/masks.slint#L804) |
+| FR-DEV-3a | [`core/dr-pipeline/ops/exposure.yaml:1`](../core/dr-pipeline/ops/exposure.yaml#L1), [`core/dr-pipeline/src/descriptor.rs:212`](../core/dr-pipeline/src/descriptor.rs#L212), [`core/dr-pipeline/src/descriptor.rs:252`](../core/dr-pipeline/src/descriptor.rs#L252), [`core/dr-pipeline/src/descriptor.rs:276`](../core/dr-pipeline/src/descriptor.rs#L276), [`core/dr-pipeline/src/descriptor.rs:331`](../core/dr-pipeline/src/descriptor.rs#L331), [`core/dr-pipeline/src/framing.rs:395`](../core/dr-pipeline/src/framing.rs#L395), [`core/dr-pipeline/src/graph.rs:25`](../core/dr-pipeline/src/graph.rs#L25), [`core/dr-pipeline/src/graph.rs:393`](../core/dr-pipeline/src/graph.rs#L393), [`core/dr-pipeline/src/graph.rs:47`](../core/dr-pipeline/src/graph.rs#L47), [`core/dr-pipeline/src/graph.rs:534`](../core/dr-pipeline/src/graph.rs#L534), [`core/dr-pipeline/src/graph.rs:60`](../core/dr-pipeline/src/graph.rs#L60), [`core/dr-pipeline/src/mask.rs:1699`](../core/dr-pipeline/src/mask.rs#L1699), [`core/dr-pipeline/src/neutral.rs:1`](../core/dr-pipeline/src/neutral.rs#L1), [`core/dr-pipeline/src/neutral.rs:372`](../core/dr-pipeline/src/neutral.rs#L372), [`core/dr-pipeline/src/operation.rs:232`](../core/dr-pipeline/src/operation.rs#L232), [`core/dr-pipeline/src/operation.rs:365`](../core/dr-pipeline/src/operation.rs#L365), [`core/dr-pipeline/src/ops/curve.rs:319`](../core/dr-pipeline/src/ops/curve.rs#L319), [`ui/dr-ui/src/develop.rs:1330`](../ui/dr-ui/src/develop.rs#L1330), [`ui/dr-ui/src/develop.rs:1609`](../ui/dr-ui/src/develop.rs#L1609), [`ui/dr-ui/src/develop.rs:7655`](../ui/dr-ui/src/develop.rs#L7655), [`ui/dr-ui/src/develop.rs:7853`](../ui/dr-ui/src/develop.rs#L7853), [`ui/dr-ui/src/lib.rs:875`](../ui/dr-ui/src/lib.rs#L875), [`ui/dr-ui/tests/ui_names_no_operation.rs:1`](../ui/dr-ui/tests/ui_names_no_operation.rs#L1), [`ui/dr-ui/ui/app.slint:2527`](../ui/dr-ui/ui/app.slint#L2527) |
+| FR-DEV-3b | [`core/dr-pipeline/src/descriptor.rs:276`](../core/dr-pipeline/src/descriptor.rs#L276), [`core/dr-pipeline/src/framing.rs:395`](../core/dr-pipeline/src/framing.rs#L395), [`core/dr-pipeline/src/graph.rs:60`](../core/dr-pipeline/src/graph.rs#L60), [`core/dr-pipeline/src/operation.rs:365`](../core/dr-pipeline/src/operation.rs#L365), [`ui/dr-ui/ui/app.slint:2738`](../ui/dr-ui/ui/app.slint#L2738) |
| FR-DEV-3c | [`core/dr-pipeline/ops/exposure.yaml:1`](../core/dr-pipeline/ops/exposure.yaml#L1), [`core/dr-pipeline/src/graph.rs:393`](../core/dr-pipeline/src/graph.rs#L393), [`core/dr-pipeline/src/graph.rs:47`](../core/dr-pipeline/src/graph.rs#L47), [`core/dr-pipeline/src/mask.rs:1699`](../core/dr-pipeline/src/mask.rs#L1699), [`core/dr-pipeline/src/preset.rs:751`](../core/dr-pipeline/src/preset.rs#L751), [`ui/dr-ui/src/develop.rs:7904`](../ui/dr-ui/src/develop.rs#L7904) |
| FR-DEV-3d | [`core/dr-gpu/src/adjust.rs:1014`](../core/dr-gpu/src/adjust.rs#L1014), [`core/dr-gpu/src/adjust.rs:1107`](../core/dr-gpu/src/adjust.rs#L1107), [`core/dr-gpu/src/adjust.rs:114`](../core/dr-gpu/src/adjust.rs#L114), [`core/dr-gpu/src/adjust.rs:798`](../core/dr-gpu/src/adjust.rs#L798), [`core/dr-gpu/src/adjust.rs:84`](../core/dr-gpu/src/adjust.rs#L84), [`core/dr-gpu/tests/capture_sharpen.rs:434`](../core/dr-gpu/tests/capture_sharpen.rs#L434), [`core/dr-gpu/tests/detail_stage.rs:242`](../core/dr-gpu/tests/detail_stage.rs#L242), [`core/dr-gpu/tests/local_contrast.rs:558`](../core/dr-gpu/tests/local_contrast.rs#L558), [`core/dr-gpu/tests/noise_reduction.rs:556`](../core/dr-gpu/tests/noise_reduction.rs#L556), [`core/dr-pipeline/src/framing.rs:314`](../core/dr-pipeline/src/framing.rs#L314), [`core/dr-pipeline/src/graph.rs:958`](../core/dr-pipeline/src/graph.rs#L958), [`core/dr-pipeline/src/operation.rs:32`](../core/dr-pipeline/src/operation.rs#L32), [`core/dr-pipeline/src/operation.rs:403`](../core/dr-pipeline/src/operation.rs#L403), [`core/dr-pipeline/src/operation.rs:53`](../core/dr-pipeline/src/operation.rs#L53), [`core/dr-pipeline/src/operation.rs:71`](../core/dr-pipeline/src/operation.rs#L71) |
| FR-DEV-3e | [`core/dr-decode/src/base_curve.rs:145`](../core/dr-decode/src/base_curve.rs#L145), [`core/dr-decode/src/base_curve.rs:158`](../core/dr-decode/src/base_curve.rs#L158), [`core/dr-decode/src/base_curve.rs:1`](../core/dr-decode/src/base_curve.rs#L1), [`core/dr-decode/src/base_curve.rs:267`](../core/dr-decode/src/base_curve.rs#L267), [`core/dr-decode/src/base_curve.rs:347`](../core/dr-decode/src/base_curve.rs#L347), [`core/dr-decode/src/base_curve.rs:55`](../core/dr-decode/src/base_curve.rs#L55), [`core/dr-decode/src/lib.rs:121`](../core/dr-decode/src/lib.rs#L121), [`core/dr-decode/src/lib.rs:751`](../core/dr-decode/src/lib.rs#L751), [`core/dr-decode/src/lib.rs:791`](../core/dr-decode/src/lib.rs#L791), [`core/dr-decode/src/profile.rs:102`](../core/dr-decode/src/profile.rs#L102), [`core/dr-decode/src/profile.rs:151`](../core/dr-decode/src/profile.rs#L151), [`core/dr-decode/src/profile.rs:1`](../core/dr-decode/src/profile.rs#L1), [`core/dr-decode/src/profile.rs:235`](../core/dr-decode/src/profile.rs#L235), [`core/dr-decode/src/profile.rs:286`](../core/dr-decode/src/profile.rs#L286), [`core/dr-decode/src/profile.rs:343`](../core/dr-decode/src/profile.rs#L343), [`core/dr-decode/src/profile.rs:473`](../core/dr-decode/src/profile.rs#L473), [`core/dr-decode/src/profile.rs:507`](../core/dr-decode/src/profile.rs#L507), [`core/dr-decode/src/profile.rs:674`](../core/dr-decode/src/profile.rs#L674), [`core/dr-gpu/src/adjust.rs:37`](../core/dr-gpu/src/adjust.rs#L37), [`core/dr-gpu/src/adjust.rs:995`](../core/dr-gpu/src/adjust.rs#L995), [`core/dr-gpu/src/demosaic.rs:121`](../core/dr-gpu/src/demosaic.rs#L121), [`core/dr-gpu/src/demosaic.rs:86`](../core/dr-gpu/src/demosaic.rs#L86), [`core/dr-gpu/tests/base_curve.rs:1`](../core/dr-gpu/tests/base_curve.rs#L1), [`core/dr-pipeline/src/operation.rs:1916`](../core/dr-pipeline/src/operation.rs#L1916), [`core/dr-pipeline/src/operation.rs:1997`](../core/dr-pipeline/src/operation.rs#L1997), [`core/dr-pipeline/src/operation.rs:2022`](../core/dr-pipeline/src/operation.rs#L2022), [`core/dr-pipeline/src/operation.rs:2037`](../core/dr-pipeline/src/operation.rs#L2037), [`core/dr-pipeline/src/operation.rs:2061`](../core/dr-pipeline/src/operation.rs#L2061), [`core/dr-pipeline/src/operation.rs:310`](../core/dr-pipeline/src/operation.rs#L310), [`core/dr-pipeline/src/operation.rs:469`](../core/dr-pipeline/src/operation.rs#L469), [`core/dr-pipeline/src/operation.rs:479`](../core/dr-pipeline/src/operation.rs#L479), [`core/dr-pipeline/src/operation.rs:716`](../core/dr-pipeline/src/operation.rs#L716) |
-| FR-DEV-3f | [`core/dr-film/src/bake.rs:271`](../core/dr-film/src/bake.rs#L271), [`core/dr-film/src/bake.rs:62`](../core/dr-film/src/bake.rs#L62), [`core/dr-film/src/boolean_grain.rs:1`](../core/dr-film/src/boolean_grain.rs#L1), [`core/dr-film/src/boolean_grain.rs:78`](../core/dr-film/src/boolean_grain.rs#L78), [`core/dr-film/src/grain.rs:140`](../core/dr-film/src/grain.rs#L140), [`core/dr-film/src/grain.rs:1`](../core/dr-film/src/grain.rs#L1), [`core/dr-film/src/grain.rs:302`](../core/dr-film/src/grain.rs#L302), [`core/dr-film/src/grain.rs:79`](../core/dr-film/src/grain.rs#L79), [`core/dr-film/src/lib.rs:160`](../core/dr-film/src/lib.rs#L160), [`core/dr-film/src/lib.rs:1`](../core/dr-film/src/lib.rs#L1), [`core/dr-film/src/profile.rs:100`](../core/dr-film/src/profile.rs#L100), [`core/dr-film/src/profile.rs:142`](../core/dr-film/src/profile.rs#L142), [`core/dr-film/src/profile.rs:182`](../core/dr-film/src/profile.rs#L182), [`core/dr-film/src/profile.rs:259`](../core/dr-film/src/profile.rs#L259), [`core/dr-film/src/profile.rs:502`](../core/dr-film/src/profile.rs#L502), [`core/dr-film/src/profile.rs:73`](../core/dr-film/src/profile.rs#L73), [`core/dr-gpu/src/adjust.rs:149`](../core/dr-gpu/src/adjust.rs#L149), [`core/dr-gpu/src/adjust.rs:206`](../core/dr-gpu/src/adjust.rs#L206), [`core/dr-gpu/src/adjust.rs:381`](../core/dr-gpu/src/adjust.rs#L381), [`core/dr-gpu/src/adjust.rs:510`](../core/dr-gpu/src/adjust.rs#L510), [`core/dr-gpu/src/adjust.rs:77`](../core/dr-gpu/src/adjust.rs#L77), [`core/dr-gpu/tests/film_sim.rs:195`](../core/dr-gpu/tests/film_sim.rs#L195), [`core/dr-gpu/tests/film_sim.rs:1`](../core/dr-gpu/tests/film_sim.rs#L1), [`core/dr-pipeline/src/graph.rs:103`](../core/dr-pipeline/src/graph.rs#L103), [`core/dr-pipeline/src/graph.rs:168`](../core/dr-pipeline/src/graph.rs#L168), [`core/dr-pipeline/src/graph.rs:566`](../core/dr-pipeline/src/graph.rs#L566), [`core/dr-pipeline/src/operation.rs:1244`](../core/dr-pipeline/src/operation.rs#L1244), [`core/dr-pipeline/src/operation.rs:1272`](../core/dr-pipeline/src/operation.rs#L1272), [`core/dr-pipeline/src/operation.rs:1318`](../core/dr-pipeline/src/operation.rs#L1318), [`core/dr-pipeline/src/operation.rs:1916`](../core/dr-pipeline/src/operation.rs#L1916), [`core/dr-pipeline/src/operation.rs:296`](../core/dr-pipeline/src/operation.rs#L296), [`core/dr-pipeline/src/operation.rs:310`](../core/dr-pipeline/src/operation.rs#L310), [`core/dr-pipeline/src/ops/film_sim.rs:102`](../core/dr-pipeline/src/ops/film_sim.rs#L102), [`core/dr-pipeline/src/ops/film_sim.rs:139`](../core/dr-pipeline/src/ops/film_sim.rs#L139), [`core/dr-pipeline/src/ops/film_sim.rs:163`](../core/dr-pipeline/src/ops/film_sim.rs#L163), [`core/dr-pipeline/src/ops/film_sim.rs:1`](../core/dr-pipeline/src/ops/film_sim.rs#L1), [`core/dr-pipeline/src/ops/film_sim.rs:341`](../core/dr-pipeline/src/ops/film_sim.rs#L341), [`core/dr-pipeline/src/ops/film_sim.rs:43`](../core/dr-pipeline/src/ops/film_sim.rs#L43), [`core/dr-pipeline/src/ops/film_sim.rs:97`](../core/dr-pipeline/src/ops/film_sim.rs#L97), [`core/dr-pipeline/src/sidecar.rs:1028`](../core/dr-pipeline/src/sidecar.rs#L1028), [`core/dr-pipeline/src/sidecar.rs:115`](../core/dr-pipeline/src/sidecar.rs#L115), [`core/dr-pipeline/src/sidecar.rs:188`](../core/dr-pipeline/src/sidecar.rs#L188), [`core/dr-pipeline/src/sidecar.rs:2634`](../core/dr-pipeline/src/sidecar.rs#L2634), [`core/dr-pipeline/src/sidecar.rs:2710`](../core/dr-pipeline/src/sidecar.rs#L2710), [`core/dr-pipeline/src/sidecar.rs:561`](../core/dr-pipeline/src/sidecar.rs#L561), [`core/dr-pipeline/src/sidecar.rs:854`](../core/dr-pipeline/src/sidecar.rs#L854), [`core/dr-pipeline/src/state.rs:100`](../core/dr-pipeline/src/state.rs#L100), [`core/dr-pipeline/src/state.rs:115`](../core/dr-pipeline/src/state.rs#L115), [`core/dr-pipeline/src/state.rs:60`](../core/dr-pipeline/src/state.rs#L60), [`ui/dr-ui/src/develop.rs:1170`](../ui/dr-ui/src/develop.rs#L1170), [`ui/dr-ui/src/develop.rs:4768`](../ui/dr-ui/src/develop.rs#L4768), [`ui/dr-ui/src/develop.rs:4785`](../ui/dr-ui/src/develop.rs#L4785), [`ui/dr-ui/src/develop.rs:4797`](../ui/dr-ui/src/develop.rs#L4797), [`ui/dr-ui/src/develop.rs:4835`](../ui/dr-ui/src/develop.rs#L4835), [`ui/dr-ui/src/develop.rs:4844`](../ui/dr-ui/src/develop.rs#L4844), [`ui/dr-ui/src/develop.rs:4947`](../ui/dr-ui/src/develop.rs#L4947), [`ui/dr-ui/src/develop.rs:5458`](../ui/dr-ui/src/develop.rs#L5458), [`ui/dr-ui/src/develop.rs:5629`](../ui/dr-ui/src/develop.rs#L5629), [`ui/dr-ui/src/develop.rs:8395`](../ui/dr-ui/src/develop.rs#L8395), [`ui/dr-ui/src/lib.rs:2813`](../ui/dr-ui/src/lib.rs#L2813), [`ui/dr-ui/src/lib.rs:800`](../ui/dr-ui/src/lib.rs#L800), [`ui/dr-ui/src/lib.rs:865`](../ui/dr-ui/src/lib.rs#L865), [`ui/dr-ui/src/library.rs:538`](../ui/dr-ui/src/library.rs#L538), [`ui/dr-ui/src/library.rs:806`](../ui/dr-ui/src/library.rs#L806), [`ui/dr-ui/src/presets.rs:422`](../ui/dr-ui/src/presets.rs#L422), [`ui/dr-ui/ui/adjust.slint:1040`](../ui/dr-ui/ui/adjust.slint#L1040), [`ui/dr-ui/ui/adjust.slint:1050`](../ui/dr-ui/ui/adjust.slint#L1050), [`ui/dr-ui/ui/adjust.slint:1268`](../ui/dr-ui/ui/adjust.slint#L1268) |
+| FR-DEV-3f | [`core/dr-film/src/bake.rs:271`](../core/dr-film/src/bake.rs#L271), [`core/dr-film/src/bake.rs:62`](../core/dr-film/src/bake.rs#L62), [`core/dr-film/src/boolean_grain.rs:1`](../core/dr-film/src/boolean_grain.rs#L1), [`core/dr-film/src/boolean_grain.rs:78`](../core/dr-film/src/boolean_grain.rs#L78), [`core/dr-film/src/grain.rs:140`](../core/dr-film/src/grain.rs#L140), [`core/dr-film/src/grain.rs:1`](../core/dr-film/src/grain.rs#L1), [`core/dr-film/src/grain.rs:302`](../core/dr-film/src/grain.rs#L302), [`core/dr-film/src/grain.rs:79`](../core/dr-film/src/grain.rs#L79), [`core/dr-film/src/lib.rs:160`](../core/dr-film/src/lib.rs#L160), [`core/dr-film/src/lib.rs:1`](../core/dr-film/src/lib.rs#L1), [`core/dr-film/src/profile.rs:100`](../core/dr-film/src/profile.rs#L100), [`core/dr-film/src/profile.rs:142`](../core/dr-film/src/profile.rs#L142), [`core/dr-film/src/profile.rs:182`](../core/dr-film/src/profile.rs#L182), [`core/dr-film/src/profile.rs:259`](../core/dr-film/src/profile.rs#L259), [`core/dr-film/src/profile.rs:502`](../core/dr-film/src/profile.rs#L502), [`core/dr-film/src/profile.rs:73`](../core/dr-film/src/profile.rs#L73), [`core/dr-gpu/src/adjust.rs:149`](../core/dr-gpu/src/adjust.rs#L149), [`core/dr-gpu/src/adjust.rs:206`](../core/dr-gpu/src/adjust.rs#L206), [`core/dr-gpu/src/adjust.rs:381`](../core/dr-gpu/src/adjust.rs#L381), [`core/dr-gpu/src/adjust.rs:510`](../core/dr-gpu/src/adjust.rs#L510), [`core/dr-gpu/src/adjust.rs:77`](../core/dr-gpu/src/adjust.rs#L77), [`core/dr-gpu/tests/film_sim.rs:195`](../core/dr-gpu/tests/film_sim.rs#L195), [`core/dr-gpu/tests/film_sim.rs:1`](../core/dr-gpu/tests/film_sim.rs#L1), [`core/dr-pipeline/src/graph.rs:103`](../core/dr-pipeline/src/graph.rs#L103), [`core/dr-pipeline/src/graph.rs:168`](../core/dr-pipeline/src/graph.rs#L168), [`core/dr-pipeline/src/graph.rs:566`](../core/dr-pipeline/src/graph.rs#L566), [`core/dr-pipeline/src/operation.rs:1244`](../core/dr-pipeline/src/operation.rs#L1244), [`core/dr-pipeline/src/operation.rs:1272`](../core/dr-pipeline/src/operation.rs#L1272), [`core/dr-pipeline/src/operation.rs:1318`](../core/dr-pipeline/src/operation.rs#L1318), [`core/dr-pipeline/src/operation.rs:1916`](../core/dr-pipeline/src/operation.rs#L1916), [`core/dr-pipeline/src/operation.rs:296`](../core/dr-pipeline/src/operation.rs#L296), [`core/dr-pipeline/src/operation.rs:310`](../core/dr-pipeline/src/operation.rs#L310), [`core/dr-pipeline/src/ops/film_sim.rs:102`](../core/dr-pipeline/src/ops/film_sim.rs#L102), [`core/dr-pipeline/src/ops/film_sim.rs:139`](../core/dr-pipeline/src/ops/film_sim.rs#L139), [`core/dr-pipeline/src/ops/film_sim.rs:163`](../core/dr-pipeline/src/ops/film_sim.rs#L163), [`core/dr-pipeline/src/ops/film_sim.rs:1`](../core/dr-pipeline/src/ops/film_sim.rs#L1), [`core/dr-pipeline/src/ops/film_sim.rs:341`](../core/dr-pipeline/src/ops/film_sim.rs#L341), [`core/dr-pipeline/src/ops/film_sim.rs:43`](../core/dr-pipeline/src/ops/film_sim.rs#L43), [`core/dr-pipeline/src/ops/film_sim.rs:97`](../core/dr-pipeline/src/ops/film_sim.rs#L97), [`core/dr-pipeline/src/sidecar.rs:1028`](../core/dr-pipeline/src/sidecar.rs#L1028), [`core/dr-pipeline/src/sidecar.rs:115`](../core/dr-pipeline/src/sidecar.rs#L115), [`core/dr-pipeline/src/sidecar.rs:188`](../core/dr-pipeline/src/sidecar.rs#L188), [`core/dr-pipeline/src/sidecar.rs:2634`](../core/dr-pipeline/src/sidecar.rs#L2634), [`core/dr-pipeline/src/sidecar.rs:2710`](../core/dr-pipeline/src/sidecar.rs#L2710), [`core/dr-pipeline/src/sidecar.rs:561`](../core/dr-pipeline/src/sidecar.rs#L561), [`core/dr-pipeline/src/sidecar.rs:854`](../core/dr-pipeline/src/sidecar.rs#L854), [`core/dr-pipeline/src/state.rs:100`](../core/dr-pipeline/src/state.rs#L100), [`core/dr-pipeline/src/state.rs:115`](../core/dr-pipeline/src/state.rs#L115), [`core/dr-pipeline/src/state.rs:60`](../core/dr-pipeline/src/state.rs#L60), [`ui/dr-ui/src/develop.rs:1170`](../ui/dr-ui/src/develop.rs#L1170), [`ui/dr-ui/src/develop.rs:4768`](../ui/dr-ui/src/develop.rs#L4768), [`ui/dr-ui/src/develop.rs:4785`](../ui/dr-ui/src/develop.rs#L4785), [`ui/dr-ui/src/develop.rs:4797`](../ui/dr-ui/src/develop.rs#L4797), [`ui/dr-ui/src/develop.rs:4835`](../ui/dr-ui/src/develop.rs#L4835), [`ui/dr-ui/src/develop.rs:4844`](../ui/dr-ui/src/develop.rs#L4844), [`ui/dr-ui/src/develop.rs:4947`](../ui/dr-ui/src/develop.rs#L4947), [`ui/dr-ui/src/develop.rs:5458`](../ui/dr-ui/src/develop.rs#L5458), [`ui/dr-ui/src/develop.rs:5629`](../ui/dr-ui/src/develop.rs#L5629), [`ui/dr-ui/src/develop.rs:8395`](../ui/dr-ui/src/develop.rs#L8395), [`ui/dr-ui/src/lib.rs:2843`](../ui/dr-ui/src/lib.rs#L2843), [`ui/dr-ui/src/lib.rs:801`](../ui/dr-ui/src/lib.rs#L801), [`ui/dr-ui/src/lib.rs:866`](../ui/dr-ui/src/lib.rs#L866), [`ui/dr-ui/src/library.rs:538`](../ui/dr-ui/src/library.rs#L538), [`ui/dr-ui/src/library.rs:806`](../ui/dr-ui/src/library.rs#L806), [`ui/dr-ui/src/presets.rs:422`](../ui/dr-ui/src/presets.rs#L422), [`ui/dr-ui/ui/adjust.slint:1040`](../ui/dr-ui/ui/adjust.slint#L1040), [`ui/dr-ui/ui/adjust.slint:1050`](../ui/dr-ui/ui/adjust.slint#L1050), [`ui/dr-ui/ui/adjust.slint:1268`](../ui/dr-ui/ui/adjust.slint#L1268) |
| FR-DEV-3h | [`core/dr-decode/src/lib.rs:424`](../core/dr-decode/src/lib.rs#L424), [`core/dr-decode/src/preview.rs:29`](../core/dr-decode/src/preview.rs#L29), [`core/dr-pipeline/src/framing.rs:1067`](../core/dr-pipeline/src/framing.rs#L1067), [`core/dr-pipeline/src/framing.rs:328`](../core/dr-pipeline/src/framing.rs#L328), [`core/dr-pipeline/src/framing.rs:498`](../core/dr-pipeline/src/framing.rs#L498), [`core/dr-types/src/lib.rs:339`](../core/dr-types/src/lib.rs#L339), [`core/dr-types/src/lib.rs:447`](../core/dr-types/src/lib.rs#L447), [`core/dr-types/src/lib.rs:459`](../core/dr-types/src/lib.rs#L459), [`core/dr-types/src/lib.rs:475`](../core/dr-types/src/lib.rs#L475), [`ui/dr-ui/src/develop.rs:140`](../ui/dr-ui/src/develop.rs#L140), [`ui/dr-ui/src/develop.rs:2769`](../ui/dr-ui/src/develop.rs#L2769), [`ui/dr-ui/src/segmentation.rs:499`](../ui/dr-ui/src/segmentation.rs#L499) |
| 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:798`](../core/dr-gpu/src/adjust.rs#L798), [`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:1407`](../core/dr-pipeline/src/graph.rs#L1407), [`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:1018`](../core/dr-pipeline/src/sidecar.rs#L1018), [`core/dr-pipeline/src/sidecar.rs:129`](../core/dr-pipeline/src/sidecar.rs#L129), [`core/dr-pipeline/src/sidecar.rs:2425`](../core/dr-pipeline/src/sidecar.rs#L2425), [`core/dr-pipeline/src/sidecar.rs:2461`](../core/dr-pipeline/src/sidecar.rs#L2461), [`core/dr-pipeline/src/sidecar.rs:2473`](../core/dr-pipeline/src/sidecar.rs#L2473), [`core/dr-pipeline/src/sidecar.rs:288`](../core/dr-pipeline/src/sidecar.rs#L288), [`core/dr-pipeline/src/sidecar.rs:679`](../core/dr-pipeline/src/sidecar.rs#L679), [`core/dr-pipeline/src/sidecar.rs:695`](../core/dr-pipeline/src/sidecar.rs#L695), [`core/dr-pipeline/src/sidecar.rs:835`](../core/dr-pipeline/src/sidecar.rs#L835), [`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.rs:4400`](../ui/dr-ui/src/develop.rs#L4400), [`ui/dr-ui/src/develop.rs:4797`](../ui/dr-ui/src/develop.rs#L4797), [`ui/dr-ui/src/develop.rs:5475`](../ui/dr-ui/src/develop.rs#L5475), [`ui/dr-ui/src/develop.rs:5493`](../ui/dr-ui/src/develop.rs#L5493), [`ui/dr-ui/src/develop.rs:5532`](../ui/dr-ui/src/develop.rs#L5532), [`ui/dr-ui/src/develop.rs:5546`](../ui/dr-ui/src/develop.rs#L5546), [`ui/dr-ui/src/develop.rs:5557`](../ui/dr-ui/src/develop.rs#L5557), [`ui/dr-ui/src/develop.rs:5616`](../ui/dr-ui/src/develop.rs#L5616), [`ui/dr-ui/src/develop.rs:5629`](../ui/dr-ui/src/develop.rs#L5629), [`ui/dr-ui/src/develop.rs:5659`](../ui/dr-ui/src/develop.rs#L5659), [`ui/dr-ui/src/develop.rs:5672`](../ui/dr-ui/src/develop.rs#L5672), [`ui/dr-ui/src/develop.rs:5684`](../ui/dr-ui/src/develop.rs#L5684), [`ui/dr-ui/src/develop.rs:5700`](../ui/dr-ui/src/develop.rs#L5700), [`ui/dr-ui/src/develop.rs:5732`](../ui/dr-ui/src/develop.rs#L5732), [`ui/dr-ui/src/develop.rs:5736`](../ui/dr-ui/src/develop.rs#L5736), [`ui/dr-ui/src/develop.rs:5755`](../ui/dr-ui/src/develop.rs#L5755), [`ui/dr-ui/src/develop.rs:5771`](../ui/dr-ui/src/develop.rs#L5771), [`ui/dr-ui/src/develop.rs:6613`](../ui/dr-ui/src/develop.rs#L6613), [`ui/dr-ui/src/develop.rs:6633`](../ui/dr-ui/src/develop.rs#L6633), [`ui/dr-ui/src/develop.rs:6664`](../ui/dr-ui/src/develop.rs#L6664), [`ui/dr-ui/src/develop.rs:6721`](../ui/dr-ui/src/develop.rs#L6721), [`ui/dr-ui/src/develop.rs:6781`](../ui/dr-ui/src/develop.rs#L6781), [`ui/dr-ui/src/develop.rs:772`](../ui/dr-ui/src/develop.rs#L772), [`ui/dr-ui/src/develop.rs:781`](../ui/dr-ui/src/develop.rs#L781), [`ui/dr-ui/src/labels.rs:12`](../ui/dr-ui/src/labels.rs#L12), [`ui/dr-ui/src/labels.rs:278`](../ui/dr-ui/src/labels.rs#L278), [`ui/dr-ui/src/labels.rs:31`](../ui/dr-ui/src/labels.rs#L31), [`ui/dr-ui/src/lib.rs:1861`](../ui/dr-ui/src/lib.rs#L1861), [`ui/dr-ui/src/lib.rs:1866`](../ui/dr-ui/src/lib.rs#L1866), [`ui/dr-ui/src/lib.rs:1929`](../ui/dr-ui/src/lib.rs#L1929), [`ui/dr-ui/src/lib.rs:1938`](../ui/dr-ui/src/lib.rs#L1938), [`ui/dr-ui/src/lib.rs:1950`](../ui/dr-ui/src/lib.rs#L1950), [`ui/dr-ui/src/lib.rs:3081`](../ui/dr-ui/src/lib.rs#L3081), [`ui/dr-ui/src/lib.rs:3101`](../ui/dr-ui/src/lib.rs#L3101), [`ui/dr-ui/src/library.rs:547`](../ui/dr-ui/src/library.rs#L547), [`ui/dr-ui/src/library.rs:832`](../ui/dr-ui/src/library.rs#L832), [`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:191`](../ui/dr-ui/ui/history.slint#L191), [`ui/dr-ui/ui/history.slint:1`](../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:218`](../ui/dr-ui/ui/history.slint#L218), [`ui/dr-ui/ui/history.slint:303`](../ui/dr-ui/ui/history.slint#L303), [`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:419`](../core/dr-types/src/settings.rs#L419), [`ui/dr-ui/src/develop.rs:5415`](../ui/dr-ui/src/develop.rs#L5415), [`ui/dr-ui/src/develop.rs:5436`](../ui/dr-ui/src/develop.rs#L5436), [`ui/dr-ui/src/lib.rs:1828`](../ui/dr-ui/src/lib.rs#L1828), [`ui/dr-ui/src/lib.rs:2614`](../ui/dr-ui/src/lib.rs#L2614), [`ui/dr-ui/src/lib.rs:2643`](../ui/dr-ui/src/lib.rs#L2643), [`ui/dr-ui/src/library.rs:2427`](../ui/dr-ui/src/library.rs#L2427), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500), [`ui/dr-ui/src/library.rs:528`](../ui/dr-ui/src/library.rs#L528), [`ui/dr-ui/src/library_ui.rs:3281`](../ui/dr-ui/src/library_ui.rs#L3281), [`ui/dr-ui/src/library_ui.rs:3864`](../ui/dr-ui/src/library_ui.rs#L3864), [`ui/dr-ui/src/library_ui.rs:628`](../ui/dr-ui/src/library_ui.rs#L628), [`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:853`](../ui/dr-ui/ui/adjust.slint#L853), [`ui/dr-ui/ui/adjust.slint:878`](../ui/dr-ui/ui/adjust.slint#L878), [`ui/dr-ui/ui/adjust.slint:889`](../ui/dr-ui/ui/adjust.slint#L889), [`ui/dr-ui/ui/adjust.slint:932`](../ui/dr-ui/ui/adjust.slint#L932), [`ui/dr-ui/ui/app.slint:1620`](../ui/dr-ui/ui/app.slint#L1620), [`ui/dr-ui/ui/app.slint:2448`](../ui/dr-ui/ui/app.slint#L2448), [`ui/dr-ui/ui/app.slint:3083`](../ui/dr-ui/ui/app.slint#L3083), [`ui/dr-ui/ui/app.slint:755`](../ui/dr-ui/ui/app.slint#L755), [`ui/dr-ui/ui/app.slint:766`](../ui/dr-ui/ui/app.slint#L766), [`ui/dr-ui/ui/library.slint:1574`](../ui/dr-ui/ui/library.slint#L1574), [`ui/dr-ui/ui/library.slint:1580`](../ui/dr-ui/ui/library.slint#L1580), [`ui/dr-ui/ui/library.slint:4217`](../ui/dr-ui/ui/library.slint#L4217), [`ui/dr-ui/ui/library.slint:4232`](../ui/dr-ui/ui/library.slint#L4232), [`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: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:113`](../ui/dr-ui/ui/settings.slint#L113), [`ui/dr-ui/ui/settings.slint:658`](../ui/dr-ui/ui/settings.slint#L658) |
-| 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.rs:4334`](../ui/dr-ui/src/develop.rs#L4334), [`ui/dr-ui/src/develop.rs:4375`](../ui/dr-ui/src/develop.rs#L4375), [`ui/dr-ui/src/develop.rs:5571`](../ui/dr-ui/src/develop.rs#L5571), [`ui/dr-ui/src/develop.rs:5588`](../ui/dr-ui/src/develop.rs#L5588), [`ui/dr-ui/src/develop.rs:5700`](../ui/dr-ui/src/develop.rs#L5700), [`ui/dr-ui/src/develop.rs:5732`](../ui/dr-ui/src/develop.rs#L5732), [`ui/dr-ui/src/develop.rs:6664`](../ui/dr-ui/src/develop.rs#L6664), [`ui/dr-ui/src/develop.rs:6781`](../ui/dr-ui/src/develop.rs#L6781), [`ui/dr-ui/src/develop.rs:797`](../ui/dr-ui/src/develop.rs#L797), [`ui/dr-ui/src/lib.rs:1938`](../ui/dr-ui/src/lib.rs#L1938), [`ui/dr-ui/src/lib.rs:2010`](../ui/dr-ui/src/lib.rs#L2010), [`ui/dr-ui/src/lib.rs:2024`](../ui/dr-ui/src/lib.rs#L2024), [`ui/dr-ui/src/lib.rs:3020`](../ui/dr-ui/src/lib.rs#L3020), [`ui/dr-ui/src/lib.rs:3081`](../ui/dr-ui/src/lib.rs#L3081), [`ui/dr-ui/src/lib.rs:3153`](../ui/dr-ui/src/lib.rs#L3153), [`ui/dr-ui/src/lib.rs:406`](../ui/dr-ui/src/lib.rs#L406), [`ui/dr-ui/ui/app.slint:128`](../ui/dr-ui/ui/app.slint#L128), [`ui/dr-ui/ui/app.slint:2355`](../ui/dr-ui/ui/app.slint#L2355), [`ui/dr-ui/ui/app.slint:2370`](../ui/dr-ui/ui/app.slint#L2370), [`ui/dr-ui/ui/app.slint:2690`](../ui/dr-ui/ui/app.slint#L2690), [`ui/dr-ui/ui/history.slint:102`](../ui/dr-ui/ui/history.slint#L102), [`ui/dr-ui/ui/history.slint:1`](../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:226`](../ui/dr-ui/ui/history.slint#L226), [`ui/dr-ui/ui/history.slint:53`](../ui/dr-ui/ui/history.slint#L53), [`ui/dr-ui/ui/widgets.slint:71`](../ui/dr-ui/ui/widgets.slint#L71) |
-| 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:434`](../core/dr-pipeline/src/detail.rs#L434), [`core/dr-pipeline/src/detail.rs:469`](../core/dr-pipeline/src/detail.rs#L469), [`core/dr-pipeline/src/detail.rs:555`](../core/dr-pipeline/src/detail.rs#L555), [`core/dr-pipeline/src/graph.rs:1059`](../core/dr-pipeline/src/graph.rs#L1059), [`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:664`](../core/dr-pipeline/src/operation.rs#L664), [`core/dr-pipeline/src/sidecar.rs:1044`](../core/dr-pipeline/src/sidecar.rs#L1044), [`core/dr-pipeline/src/sidecar.rs:1098`](../core/dr-pipeline/src/sidecar.rs#L1098), [`core/dr-pipeline/src/sidecar.rs:1128`](../core/dr-pipeline/src/sidecar.rs#L1128), [`core/dr-pipeline/src/sidecar.rs:204`](../core/dr-pipeline/src/sidecar.rs#L204), [`core/dr-pipeline/src/sidecar.rs:380`](../core/dr-pipeline/src/sidecar.rs#L380), [`core/dr-pipeline/src/sidecar.rs:866`](../core/dr-pipeline/src/sidecar.rs#L866), [`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.rs:3200`](../ui/dr-ui/src/develop.rs#L3200), [`ui/dr-ui/src/develop.rs:3238`](../ui/dr-ui/src/develop.rs#L3238), [`ui/dr-ui/src/develop.rs:3303`](../ui/dr-ui/src/develop.rs#L3303), [`ui/dr-ui/src/develop.rs:3386`](../ui/dr-ui/src/develop.rs#L3386), [`ui/dr-ui/src/develop.rs:3400`](../ui/dr-ui/src/develop.rs#L3400), [`ui/dr-ui/src/develop.rs:904`](../ui/dr-ui/src/develop.rs#L904), [`ui/dr-ui/src/labels.rs:80`](../ui/dr-ui/src/labels.rs#L80), [`ui/dr-ui/src/lib.rs:1968`](../ui/dr-ui/src/lib.rs#L1968), [`ui/dr-ui/src/lib.rs:3306`](../ui/dr-ui/src/lib.rs#L3306), [`ui/dr-ui/src/lib.rs:448`](../ui/dr-ui/src/lib.rs#L448), [`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:2211`](../ui/dr-ui/ui/app.slint#L2211), [`ui/dr-ui/ui/app.slint:2413`](../ui/dr-ui/ui/app.slint#L2413), [`ui/dr-ui/ui/app.slint:2989`](../ui/dr-ui/ui/app.slint#L2989), [`ui/dr-ui/ui/icons.slint:366`](../ui/dr-ui/ui/icons.slint#L366), [`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:2366`](../core/dr-gpu/src/adjust.rs#L2366), [`core/dr-gpu/src/adjust.rs:2443`](../core/dr-gpu/src/adjust.rs#L2443), [`core/dr-gpu/src/adjust.rs:2528`](../core/dr-gpu/src/adjust.rs#L2528), [`core/dr-gpu/src/adjust.rs:54`](../core/dr-gpu/src/adjust.rs#L54), [`core/dr-gpu/src/adjust.rs:798`](../core/dr-gpu/src/adjust.rs#L798), [`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:524`](../core/dr-pipeline/src/detail.rs#L524), [`core/dr-pipeline/src/graph.rs:889`](../core/dr-pipeline/src/graph.rs#L889), [`core/dr-pipeline/src/graph.rs:919`](../core/dr-pipeline/src/graph.rs#L919), [`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.rs:4021`](../ui/dr-ui/src/develop.rs#L4021), [`ui/dr-ui/src/develop.rs:5283`](../ui/dr-ui/src/develop.rs#L5283), [`ui/dr-ui/src/develop.rs:6026`](../ui/dr-ui/src/develop.rs#L6026), [`ui/dr-ui/src/develop.rs:7354`](../ui/dr-ui/src/develop.rs#L7354), [`ui/dr-ui/src/develop.rs:7388`](../ui/dr-ui/src/develop.rs#L7388), [`ui/dr-ui/src/lib.rs:1021`](../ui/dr-ui/src/lib.rs#L1021), [`ui/dr-ui/src/lib.rs:1080`](../ui/dr-ui/src/lib.rs#L1080), [`ui/dr-ui/src/lib.rs:95`](../ui/dr-ui/src/lib.rs#L95) |
+| FR-DEV-5 | [`core/dr-pipeline/src/graph.rs:1407`](../core/dr-pipeline/src/graph.rs#L1407), [`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:1018`](../core/dr-pipeline/src/sidecar.rs#L1018), [`core/dr-pipeline/src/sidecar.rs:129`](../core/dr-pipeline/src/sidecar.rs#L129), [`core/dr-pipeline/src/sidecar.rs:2425`](../core/dr-pipeline/src/sidecar.rs#L2425), [`core/dr-pipeline/src/sidecar.rs:2461`](../core/dr-pipeline/src/sidecar.rs#L2461), [`core/dr-pipeline/src/sidecar.rs:2473`](../core/dr-pipeline/src/sidecar.rs#L2473), [`core/dr-pipeline/src/sidecar.rs:288`](../core/dr-pipeline/src/sidecar.rs#L288), [`core/dr-pipeline/src/sidecar.rs:679`](../core/dr-pipeline/src/sidecar.rs#L679), [`core/dr-pipeline/src/sidecar.rs:695`](../core/dr-pipeline/src/sidecar.rs#L695), [`core/dr-pipeline/src/sidecar.rs:835`](../core/dr-pipeline/src/sidecar.rs#L835), [`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.rs:4400`](../ui/dr-ui/src/develop.rs#L4400), [`ui/dr-ui/src/develop.rs:4797`](../ui/dr-ui/src/develop.rs#L4797), [`ui/dr-ui/src/develop.rs:5475`](../ui/dr-ui/src/develop.rs#L5475), [`ui/dr-ui/src/develop.rs:5493`](../ui/dr-ui/src/develop.rs#L5493), [`ui/dr-ui/src/develop.rs:5532`](../ui/dr-ui/src/develop.rs#L5532), [`ui/dr-ui/src/develop.rs:5546`](../ui/dr-ui/src/develop.rs#L5546), [`ui/dr-ui/src/develop.rs:5557`](../ui/dr-ui/src/develop.rs#L5557), [`ui/dr-ui/src/develop.rs:5616`](../ui/dr-ui/src/develop.rs#L5616), [`ui/dr-ui/src/develop.rs:5629`](../ui/dr-ui/src/develop.rs#L5629), [`ui/dr-ui/src/develop.rs:5659`](../ui/dr-ui/src/develop.rs#L5659), [`ui/dr-ui/src/develop.rs:5672`](../ui/dr-ui/src/develop.rs#L5672), [`ui/dr-ui/src/develop.rs:5684`](../ui/dr-ui/src/develop.rs#L5684), [`ui/dr-ui/src/develop.rs:5700`](../ui/dr-ui/src/develop.rs#L5700), [`ui/dr-ui/src/develop.rs:5732`](../ui/dr-ui/src/develop.rs#L5732), [`ui/dr-ui/src/develop.rs:5736`](../ui/dr-ui/src/develop.rs#L5736), [`ui/dr-ui/src/develop.rs:5755`](../ui/dr-ui/src/develop.rs#L5755), [`ui/dr-ui/src/develop.rs:5771`](../ui/dr-ui/src/develop.rs#L5771), [`ui/dr-ui/src/develop.rs:6613`](../ui/dr-ui/src/develop.rs#L6613), [`ui/dr-ui/src/develop.rs:6633`](../ui/dr-ui/src/develop.rs#L6633), [`ui/dr-ui/src/develop.rs:6664`](../ui/dr-ui/src/develop.rs#L6664), [`ui/dr-ui/src/develop.rs:6721`](../ui/dr-ui/src/develop.rs#L6721), [`ui/dr-ui/src/develop.rs:6781`](../ui/dr-ui/src/develop.rs#L6781), [`ui/dr-ui/src/develop.rs:772`](../ui/dr-ui/src/develop.rs#L772), [`ui/dr-ui/src/develop.rs:781`](../ui/dr-ui/src/develop.rs#L781), [`ui/dr-ui/src/labels.rs:12`](../ui/dr-ui/src/labels.rs#L12), [`ui/dr-ui/src/labels.rs:278`](../ui/dr-ui/src/labels.rs#L278), [`ui/dr-ui/src/labels.rs:31`](../ui/dr-ui/src/labels.rs#L31), [`ui/dr-ui/src/lib.rs:1891`](../ui/dr-ui/src/lib.rs#L1891), [`ui/dr-ui/src/lib.rs:1896`](../ui/dr-ui/src/lib.rs#L1896), [`ui/dr-ui/src/lib.rs:1959`](../ui/dr-ui/src/lib.rs#L1959), [`ui/dr-ui/src/lib.rs:1968`](../ui/dr-ui/src/lib.rs#L1968), [`ui/dr-ui/src/lib.rs:1980`](../ui/dr-ui/src/lib.rs#L1980), [`ui/dr-ui/src/lib.rs:3111`](../ui/dr-ui/src/lib.rs#L3111), [`ui/dr-ui/src/lib.rs:3131`](../ui/dr-ui/src/lib.rs#L3131), [`ui/dr-ui/src/library.rs:547`](../ui/dr-ui/src/library.rs#L547), [`ui/dr-ui/src/library.rs:832`](../ui/dr-ui/src/library.rs#L832), [`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:191`](../ui/dr-ui/ui/history.slint#L191), [`ui/dr-ui/ui/history.slint:1`](../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:218`](../ui/dr-ui/ui/history.slint#L218), [`ui/dr-ui/ui/history.slint:303`](../ui/dr-ui/ui/history.slint#L303), [`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:419`](../core/dr-types/src/settings.rs#L419), [`ui/dr-ui/src/develop.rs:5415`](../ui/dr-ui/src/develop.rs#L5415), [`ui/dr-ui/src/develop.rs:5436`](../ui/dr-ui/src/develop.rs#L5436), [`ui/dr-ui/src/lib.rs:1858`](../ui/dr-ui/src/lib.rs#L1858), [`ui/dr-ui/src/lib.rs:2644`](../ui/dr-ui/src/lib.rs#L2644), [`ui/dr-ui/src/lib.rs:2673`](../ui/dr-ui/src/lib.rs#L2673), [`ui/dr-ui/src/library.rs:2427`](../ui/dr-ui/src/library.rs#L2427), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500), [`ui/dr-ui/src/library.rs:528`](../ui/dr-ui/src/library.rs#L528), [`ui/dr-ui/src/library_ui.rs:3281`](../ui/dr-ui/src/library_ui.rs#L3281), [`ui/dr-ui/src/library_ui.rs:3864`](../ui/dr-ui/src/library_ui.rs#L3864), [`ui/dr-ui/src/library_ui.rs:628`](../ui/dr-ui/src/library_ui.rs#L628), [`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:853`](../ui/dr-ui/ui/adjust.slint#L853), [`ui/dr-ui/ui/adjust.slint:878`](../ui/dr-ui/ui/adjust.slint#L878), [`ui/dr-ui/ui/adjust.slint:889`](../ui/dr-ui/ui/adjust.slint#L889), [`ui/dr-ui/ui/adjust.slint:932`](../ui/dr-ui/ui/adjust.slint#L932), [`ui/dr-ui/ui/app.slint:1666`](../ui/dr-ui/ui/app.slint#L1666), [`ui/dr-ui/ui/app.slint:2496`](../ui/dr-ui/ui/app.slint#L2496), [`ui/dr-ui/ui/app.slint:3131`](../ui/dr-ui/ui/app.slint#L3131), [`ui/dr-ui/ui/app.slint:756`](../ui/dr-ui/ui/app.slint#L756), [`ui/dr-ui/ui/app.slint:767`](../ui/dr-ui/ui/app.slint#L767), [`ui/dr-ui/ui/library.slint:1574`](../ui/dr-ui/ui/library.slint#L1574), [`ui/dr-ui/ui/library.slint:1580`](../ui/dr-ui/ui/library.slint#L1580), [`ui/dr-ui/ui/library.slint:4221`](../ui/dr-ui/ui/library.slint#L4221), [`ui/dr-ui/ui/library.slint:4245`](../ui/dr-ui/ui/library.slint#L4245), [`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: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:113`](../ui/dr-ui/ui/settings.slint#L113), [`ui/dr-ui/ui/settings.slint:658`](../ui/dr-ui/ui/settings.slint#L658) |
+| 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.rs:4334`](../ui/dr-ui/src/develop.rs#L4334), [`ui/dr-ui/src/develop.rs:4375`](../ui/dr-ui/src/develop.rs#L4375), [`ui/dr-ui/src/develop.rs:5571`](../ui/dr-ui/src/develop.rs#L5571), [`ui/dr-ui/src/develop.rs:5588`](../ui/dr-ui/src/develop.rs#L5588), [`ui/dr-ui/src/develop.rs:5700`](../ui/dr-ui/src/develop.rs#L5700), [`ui/dr-ui/src/develop.rs:5732`](../ui/dr-ui/src/develop.rs#L5732), [`ui/dr-ui/src/develop.rs:6664`](../ui/dr-ui/src/develop.rs#L6664), [`ui/dr-ui/src/develop.rs:6781`](../ui/dr-ui/src/develop.rs#L6781), [`ui/dr-ui/src/develop.rs:797`](../ui/dr-ui/src/develop.rs#L797), [`ui/dr-ui/src/lib.rs:1968`](../ui/dr-ui/src/lib.rs#L1968), [`ui/dr-ui/src/lib.rs:2040`](../ui/dr-ui/src/lib.rs#L2040), [`ui/dr-ui/src/lib.rs:2054`](../ui/dr-ui/src/lib.rs#L2054), [`ui/dr-ui/src/lib.rs:3050`](../ui/dr-ui/src/lib.rs#L3050), [`ui/dr-ui/src/lib.rs:3111`](../ui/dr-ui/src/lib.rs#L3111), [`ui/dr-ui/src/lib.rs:3183`](../ui/dr-ui/src/lib.rs#L3183), [`ui/dr-ui/src/lib.rs:407`](../ui/dr-ui/src/lib.rs#L407), [`ui/dr-ui/ui/app.slint:129`](../ui/dr-ui/ui/app.slint#L129), [`ui/dr-ui/ui/app.slint:2403`](../ui/dr-ui/ui/app.slint#L2403), [`ui/dr-ui/ui/app.slint:2418`](../ui/dr-ui/ui/app.slint#L2418), [`ui/dr-ui/ui/app.slint:2738`](../ui/dr-ui/ui/app.slint#L2738), [`ui/dr-ui/ui/history.slint:102`](../ui/dr-ui/ui/history.slint#L102), [`ui/dr-ui/ui/history.slint:1`](../ui/dr-ui/ui/history.slint#L1), [`ui/dr-ui/ui/history.slint:226`](../ui/dr-ui/ui/history.slint#L226), [`ui/dr-ui/ui/history.slint:53`](../ui/dr-ui/ui/history.slint#L53), [`ui/dr-ui/ui/widgets.slint:71`](../ui/dr-ui/ui/widgets.slint#L71) |
+| 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:434`](../core/dr-pipeline/src/detail.rs#L434), [`core/dr-pipeline/src/detail.rs:469`](../core/dr-pipeline/src/detail.rs#L469), [`core/dr-pipeline/src/detail.rs:555`](../core/dr-pipeline/src/detail.rs#L555), [`core/dr-pipeline/src/graph.rs:1059`](../core/dr-pipeline/src/graph.rs#L1059), [`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:664`](../core/dr-pipeline/src/operation.rs#L664), [`core/dr-pipeline/src/sidecar.rs:1044`](../core/dr-pipeline/src/sidecar.rs#L1044), [`core/dr-pipeline/src/sidecar.rs:1098`](../core/dr-pipeline/src/sidecar.rs#L1098), [`core/dr-pipeline/src/sidecar.rs:1128`](../core/dr-pipeline/src/sidecar.rs#L1128), [`core/dr-pipeline/src/sidecar.rs:204`](../core/dr-pipeline/src/sidecar.rs#L204), [`core/dr-pipeline/src/sidecar.rs:380`](../core/dr-pipeline/src/sidecar.rs#L380), [`core/dr-pipeline/src/sidecar.rs:866`](../core/dr-pipeline/src/sidecar.rs#L866), [`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.rs:3200`](../ui/dr-ui/src/develop.rs#L3200), [`ui/dr-ui/src/develop.rs:3238`](../ui/dr-ui/src/develop.rs#L3238), [`ui/dr-ui/src/develop.rs:3303`](../ui/dr-ui/src/develop.rs#L3303), [`ui/dr-ui/src/develop.rs:3386`](../ui/dr-ui/src/develop.rs#L3386), [`ui/dr-ui/src/develop.rs:3400`](../ui/dr-ui/src/develop.rs#L3400), [`ui/dr-ui/src/develop.rs:904`](../ui/dr-ui/src/develop.rs#L904), [`ui/dr-ui/src/labels.rs:80`](../ui/dr-ui/src/labels.rs#L80), [`ui/dr-ui/src/lib.rs:1998`](../ui/dr-ui/src/lib.rs#L1998), [`ui/dr-ui/src/lib.rs:3336`](../ui/dr-ui/src/lib.rs#L3336), [`ui/dr-ui/src/lib.rs:449`](../ui/dr-ui/src/lib.rs#L449), [`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:2259`](../ui/dr-ui/ui/app.slint#L2259), [`ui/dr-ui/ui/app.slint:2461`](../ui/dr-ui/ui/app.slint#L2461), [`ui/dr-ui/ui/app.slint:3037`](../ui/dr-ui/ui/app.slint#L3037), [`ui/dr-ui/ui/icons.slint:366`](../ui/dr-ui/ui/icons.slint#L366), [`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:2366`](../core/dr-gpu/src/adjust.rs#L2366), [`core/dr-gpu/src/adjust.rs:2443`](../core/dr-gpu/src/adjust.rs#L2443), [`core/dr-gpu/src/adjust.rs:2528`](../core/dr-gpu/src/adjust.rs#L2528), [`core/dr-gpu/src/adjust.rs:54`](../core/dr-gpu/src/adjust.rs#L54), [`core/dr-gpu/src/adjust.rs:798`](../core/dr-gpu/src/adjust.rs#L798), [`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:524`](../core/dr-pipeline/src/detail.rs#L524), [`core/dr-pipeline/src/graph.rs:889`](../core/dr-pipeline/src/graph.rs#L889), [`core/dr-pipeline/src/graph.rs:919`](../core/dr-pipeline/src/graph.rs#L919), [`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.rs:4021`](../ui/dr-ui/src/develop.rs#L4021), [`ui/dr-ui/src/develop.rs:5283`](../ui/dr-ui/src/develop.rs#L5283), [`ui/dr-ui/src/develop.rs:6026`](../ui/dr-ui/src/develop.rs#L6026), [`ui/dr-ui/src/develop.rs:7354`](../ui/dr-ui/src/develop.rs#L7354), [`ui/dr-ui/src/develop.rs:7388`](../ui/dr-ui/src/develop.rs#L7388), [`ui/dr-ui/src/lib.rs:1022`](../ui/dr-ui/src/lib.rs#L1022), [`ui/dr-ui/src/lib.rs:1081`](../ui/dr-ui/src/lib.rs#L1081), [`ui/dr-ui/src/lib.rs:96`](../ui/dr-ui/src/lib.rs#L96) |
| FR-DSP-3 | [`core/dr-gpu/tests/frame_budget.rs:101`](../core/dr-gpu/tests/frame_budget.rs#L101), [`core/dr-gpu/tests/local_contrast.rs:329`](../core/dr-gpu/tests/local_contrast.rs#L329), [`core/dr-pipeline/src/ops/local_contrast.rs:447`](../core/dr-pipeline/src/ops/local_contrast.rs#L447) |
| 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:512`](../core/dr-pipeline/src/operation.rs#L512), [`core/dr-types/src/colour.rs:1`](../core/dr-types/src/colour.rs#L1), [`ui/dr-ui/src/develop.rs:4051`](../ui/dr-ui/src/develop.rs#L4051), [`ui/dr-ui/src/develop.rs:8967`](../ui/dr-ui/src/develop.rs#L8967), [`ui/dr-ui/src/lib.rs:1914`](../ui/dr-ui/src/lib.rs#L1914), [`ui/dr-ui/src/lib.rs:3697`](../ui/dr-ui/src/lib.rs#L3697) |
-| 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.rs:4105`](../ui/dr-ui/src/develop.rs#L4105), [`ui/dr-ui/src/develop.rs:804`](../ui/dr-ui/src/develop.rs#L804), [`ui/dr-ui/src/develop.rs:8641`](../ui/dr-ui/src/develop.rs#L8641), [`ui/dr-ui/src/develop.rs:8673`](../ui/dr-ui/src/develop.rs#L8673), [`ui/dr-ui/src/histogram.rs:1`](../ui/dr-ui/src/histogram.rs#L1), [`ui/dr-ui/src/lib.rs:2048`](../ui/dr-ui/src/lib.rs#L2048), [`ui/dr-ui/src/lib.rs:425`](../ui/dr-ui/src/lib.rs#L425), [`ui/dr-ui/ui/histogram.slint:184`](../ui/dr-ui/ui/histogram.slint#L184), [`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.rs:3997`](../ui/dr-ui/src/develop.rs#L3997), [`ui/dr-ui/src/develop.rs:4051`](../ui/dr-ui/src/develop.rs#L4051), [`ui/dr-ui/src/develop.rs:8967`](../ui/dr-ui/src/develop.rs#L8967), [`ui/dr-ui/src/develop.rs:9013`](../ui/dr-ui/src/develop.rs#L9013), [`ui/dr-ui/src/develop.rs:9032`](../ui/dr-ui/src/develop.rs#L9032), [`ui/dr-ui/src/develop.rs:957`](../ui/dr-ui/src/develop.rs#L957), [`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:1850`](../ui/dr-ui/src/lib.rs#L1850), [`ui/dr-ui/src/lib.rs:1914`](../ui/dr-ui/src/lib.rs#L1914), [`ui/dr-ui/src/lib.rs:3604`](../ui/dr-ui/src/lib.rs#L3604), [`ui/dr-ui/src/lib.rs:3697`](../ui/dr-ui/src/lib.rs#L3697), [`ui/dr-ui/ui/app.slint:1891`](../ui/dr-ui/ui/app.slint#L1891), [`ui/dr-ui/ui/app.slint:61`](../ui/dr-ui/ui/app.slint#L61), [`ui/dr-ui/ui/settings.slint:155`](../ui/dr-ui/ui/settings.slint#L155), [`ui/dr-ui/ui/settings.slint:895`](../ui/dr-ui/ui/settings.slint#L895) |
+| FR-DSP-6 | [`core/dr-pipeline/src/operation.rs:512`](../core/dr-pipeline/src/operation.rs#L512), [`core/dr-types/src/colour.rs:1`](../core/dr-types/src/colour.rs#L1), [`ui/dr-ui/src/develop.rs:4051`](../ui/dr-ui/src/develop.rs#L4051), [`ui/dr-ui/src/develop.rs:8967`](../ui/dr-ui/src/develop.rs#L8967), [`ui/dr-ui/src/lib.rs:1944`](../ui/dr-ui/src/lib.rs#L1944), [`ui/dr-ui/src/lib.rs:3727`](../ui/dr-ui/src/lib.rs#L3727) |
+| 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.rs:4105`](../ui/dr-ui/src/develop.rs#L4105), [`ui/dr-ui/src/develop.rs:804`](../ui/dr-ui/src/develop.rs#L804), [`ui/dr-ui/src/develop.rs:8641`](../ui/dr-ui/src/develop.rs#L8641), [`ui/dr-ui/src/develop.rs:8673`](../ui/dr-ui/src/develop.rs#L8673), [`ui/dr-ui/src/histogram.rs:1`](../ui/dr-ui/src/histogram.rs#L1), [`ui/dr-ui/src/lib.rs:2078`](../ui/dr-ui/src/lib.rs#L2078), [`ui/dr-ui/src/lib.rs:426`](../ui/dr-ui/src/lib.rs#L426), [`ui/dr-ui/ui/histogram.slint:184`](../ui/dr-ui/ui/histogram.slint#L184), [`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.rs:3997`](../ui/dr-ui/src/develop.rs#L3997), [`ui/dr-ui/src/develop.rs:4051`](../ui/dr-ui/src/develop.rs#L4051), [`ui/dr-ui/src/develop.rs:8967`](../ui/dr-ui/src/develop.rs#L8967), [`ui/dr-ui/src/develop.rs:9013`](../ui/dr-ui/src/develop.rs#L9013), [`ui/dr-ui/src/develop.rs:9032`](../ui/dr-ui/src/develop.rs#L9032), [`ui/dr-ui/src/develop.rs:957`](../ui/dr-ui/src/develop.rs#L957), [`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:1880`](../ui/dr-ui/src/lib.rs#L1880), [`ui/dr-ui/src/lib.rs:1944`](../ui/dr-ui/src/lib.rs#L1944), [`ui/dr-ui/src/lib.rs:3634`](../ui/dr-ui/src/lib.rs#L3634), [`ui/dr-ui/src/lib.rs:3727`](../ui/dr-ui/src/lib.rs#L3727), [`ui/dr-ui/ui/app.slint:1939`](../ui/dr-ui/ui/app.slint#L1939), [`ui/dr-ui/ui/app.slint:62`](../ui/dr-ui/ui/app.slint#L62), [`ui/dr-ui/ui/settings.slint:155`](../ui/dr-ui/ui/settings.slint#L155), [`ui/dr-ui/ui/settings.slint:895`](../ui/dr-ui/ui/settings.slint#L895) |
| 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:155`](../core/dr-export/src/lib.rs#L155), [`core/dr-export/src/lib.rs:1`](../core/dr-export/src/lib.rs#L1), [`core/dr-export/src/lib.rs:55`](../core/dr-export/src/lib.rs#L55), [`core/dr-gpu/src/adjust.rs:2676`](../core/dr-gpu/src/adjust.rs#L2676), [`core/dr-pipeline/src/graph.rs:835`](../core/dr-pipeline/src/graph.rs#L835), [`core/dr-pipeline/src/graph.rs:933`](../core/dr-pipeline/src/graph.rs#L933), [`core/dr-pipeline/src/operation.rs:512`](../core/dr-pipeline/src/operation.rs#L512), [`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:934`](../core/dr-types/src/settings.rs#L934), [`ui/dr-ui/src/develop.rs:9032`](../ui/dr-ui/src/develop.rs#L9032), [`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:184`](../core/dr-export/src/lib.rs#L184), [`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:1003`](../core/dr-types/src/settings.rs#L1003), [`core/dr-types/src/settings.rs:1072`](../core/dr-types/src/settings.rs#L1072), [`core/dr-types/src/settings.rs:1100`](../core/dr-types/src/settings.rs#L1100), [`core/dr-types/src/settings.rs:1111`](../core/dr-types/src/settings.rs#L1111), [`core/dr-types/src/settings.rs:1117`](../core/dr-types/src/settings.rs#L1117), [`core/dr-types/src/settings.rs:1`](../core/dr-types/src/settings.rs#L1), [`core/dr-types/src/settings.rs:979`](../core/dr-types/src/settings.rs#L979), [`core/dr-types/src/settings.rs:987`](../core/dr-types/src/settings.rs#L987), [`ui/dr-ui/src/settings_ui.rs:1`](../ui/dr-ui/src/settings_ui.rs#L1), [`ui/dr-ui/src/settings_ui.rs:274`](../ui/dr-ui/src/settings_ui.rs#L274), [`ui/dr-ui/src/settings_ui.rs:287`](../ui/dr-ui/src/settings_ui.rs#L287), [`ui/dr-ui/src/settings_ui.rs:302`](../ui/dr-ui/src/settings_ui.rs#L302), [`ui/dr-ui/src/settings_ui.rs:701`](../ui/dr-ui/src/settings_ui.rs#L701), [`ui/dr-ui/ui/settings.slint:798`](../ui/dr-ui/ui/settings.slint#L798), [`ui/dr-ui/ui/settings.slint:808`](../ui/dr-ui/ui/settings.slint#L808) |
| FR-EXP-4 | [`core/dr-export/src/lib.rs:1`](../core/dr-export/src/lib.rs#L1), [`core/dr-export/src/sharpen.rs:1`](../core/dr-export/src/sharpen.rs#L1), [`core/dr-export/src/size.rs:1`](../core/dr-export/src/size.rs#L1), [`ui/dr-ui/src/settings_ui.rs:1`](../ui/dr-ui/src/settings_ui.rs#L1) |
| FR-EXP-5 | [`ui/dr-ui/src/settings_store.rs:1`](../ui/dr-ui/src/settings_store.rs#L1) |
-| FR-EXP-6 | [`core/dr-export/src/lib.rs:1`](../core/dr-export/src/lib.rs#L1), [`core/dr-export/src/name.rs:1`](../core/dr-export/src/name.rs#L1), [`core/dr-types/src/settings.rs:1`](../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/export.rs:1`](../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/lib.rs:602`](../ui/dr-ui/src/lib.rs#L602), [`ui/dr-ui/src/settings_ui.rs:1`](../ui/dr-ui/src/settings_ui.rs#L1), [`ui/dr-ui/src/settings_ui.rs:49`](../ui/dr-ui/src/settings_ui.rs#L49), [`ui/dr-ui/src/settings_ui.rs:815`](../ui/dr-ui/src/settings_ui.rs#L815) |
-| FR-EXP-7 | [`ui/dr-ui/src/activity.rs:83`](../ui/dr-ui/src/activity.rs#L83), [`ui/dr-ui/src/export.rs:1`](../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/export.rs:998`](../ui/dr-ui/src/export.rs#L998), [`ui/dr-ui/src/lib.rs:263`](../ui/dr-ui/src/lib.rs#L263), [`ui/dr-ui/src/lib.rs:2753`](../ui/dr-ui/src/lib.rs#L2753), [`ui/dr-ui/src/lib.rs:602`](../ui/dr-ui/src/lib.rs#L602), [`ui/dr-ui/src/lib.rs:648`](../ui/dr-ui/src/lib.rs#L648), [`ui/dr-ui/src/lib.rs:675`](../ui/dr-ui/src/lib.rs#L675), [`ui/dr-ui/src/library_ui.rs:4275`](../ui/dr-ui/src/library_ui.rs#L4275), [`ui/dr-ui/src/library_ui.rs:719`](../ui/dr-ui/src/library_ui.rs#L719), [`ui/dr-ui/src/library_ui.rs:8026`](../ui/dr-ui/src/library_ui.rs#L8026), [`ui/dr-ui/src/library_ui.rs:8103`](../ui/dr-ui/src/library_ui.rs#L8103), [`ui/dr-ui/src/library_ui.rs:8115`](../ui/dr-ui/src/library_ui.rs#L8115), [`ui/dr-ui/src/library_ui.rs:819`](../ui/dr-ui/src/library_ui.rs#L819), [`ui/dr-ui/src/library_ui.rs:876`](../ui/dr-ui/src/library_ui.rs#L876), [`ui/dr-ui/ui/app.slint:1091`](../ui/dr-ui/ui/app.slint#L1091), [`ui/dr-ui/ui/app.slint:1630`](../ui/dr-ui/ui/app.slint#L1630), [`ui/dr-ui/ui/library.slint:1583`](../ui/dr-ui/ui/library.slint#L1583), [`ui/dr-ui/ui/library.slint:4278`](../ui/dr-ui/ui/library.slint#L4278) |
-| FR-EXP-8 | [`core/dr-decode/src/lib.rs:346`](../core/dr-decode/src/lib.rs#L346), [`core/dr-decode/src/lib.rs:370`](../core/dr-decode/src/lib.rs#L370), [`core/dr-decode/src/lib.rs:384`](../core/dr-decode/src/lib.rs#L384), [`core/dr-decode/src/lib.rs:71`](../core/dr-decode/src/lib.rs#L71), [`core/dr-decode/src/lib.rs:79`](../core/dr-decode/src/lib.rs#L79), [`core/dr-decode/src/lib.rs:82`](../core/dr-decode/src/lib.rs#L82), [`core/dr-decode/src/locate.rs:1164`](../core/dr-decode/src/locate.rs#L1164), [`core/dr-decode/src/locate.rs:1223`](../core/dr-decode/src/locate.rs#L1223), [`core/dr-decode/src/locate.rs:316`](../core/dr-decode/src/locate.rs#L316), [`core/dr-decode/src/locate.rs:487`](../core/dr-decode/src/locate.rs#L487), [`core/dr-decode/src/locate.rs:571`](../core/dr-decode/src/locate.rs#L571), [`core/dr-decode/src/locate.rs:584`](../core/dr-decode/src/locate.rs#L584), [`core/dr-decode/src/locate.rs:667`](../core/dr-decode/src/locate.rs#L667), [`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:138`](../core/dr-export/src/lib.rs#L138), [`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:647`](../core/dr-types/src/settings.rs#L647), [`ui/dr-ui/src/develop.rs:4539`](../ui/dr-ui/src/develop.rs#L4539), [`ui/dr-ui/src/develop.rs:4651`](../ui/dr-ui/src/develop.rs#L4651), [`ui/dr-ui/src/develop.rs:729`](../ui/dr-ui/src/develop.rs#L729), [`ui/dr-ui/src/export.rs:467`](../ui/dr-ui/src/export.rs#L467), [`ui/dr-ui/src/export.rs:634`](../ui/dr-ui/src/export.rs#L634), [`ui/dr-ui/src/export.rs:680`](../ui/dr-ui/src/export.rs#L680), [`ui/dr-ui/src/export.rs:708`](../ui/dr-ui/src/export.rs#L708), [`ui/dr-ui/src/export.rs:832`](../ui/dr-ui/src/export.rs#L832), [`ui/dr-ui/src/export.rs:850`](../ui/dr-ui/src/export.rs#L850), [`ui/dr-ui/src/lib.rs:263`](../ui/dr-ui/src/lib.rs#L263), [`ui/dr-ui/src/lib.rs:286`](../ui/dr-ui/src/lib.rs#L286), [`ui/dr-ui/src/lib.rs:634`](../ui/dr-ui/src/lib.rs#L634), [`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:526`](../core/dr-decode/src/lib.rs#L526), [`core/dr-export/src/lib.rs:130`](../core/dr-export/src/lib.rs#L130), [`core/dr-export/src/lib.rs:1`](../core/dr-export/src/lib.rs#L1), [`core/dr-gpu/src/adjust.rs:1134`](../core/dr-gpu/src/adjust.rs#L1134), [`ui/dr-ui/examples/face_native.rs:1`](../ui/dr-ui/examples/face_native.rs#L1), [`ui/dr-ui/src/develop.rs:4672`](../ui/dr-ui/src/develop.rs#L4672), [`ui/dr-ui/src/develop.rs:4710`](../ui/dr-ui/src/develop.rs#L4710), [`ui/dr-ui/src/develop.rs:6878`](../ui/dr-ui/src/develop.rs#L6878), [`ui/dr-ui/src/lib.rs:602`](../ui/dr-ui/src/lib.rs#L602), [`ui/dr-ui/src/library.rs:4052`](../ui/dr-ui/src/library.rs#L4052), [`ui/dr-ui/src/library.rs:4522`](../ui/dr-ui/src/library.rs#L4522), [`ui/dr-ui/src/library.rs:4558`](../ui/dr-ui/src/library.rs#L4558), [`ui/dr-ui/tests/export_ignores_the_viewport.rs:1`](../ui/dr-ui/tests/export_ignores_the_viewport.rs#L1) |
-| 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/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1) |
+| FR-EXP-6 | [`core/dr-export/src/lib.rs:1`](../core/dr-export/src/lib.rs#L1), [`core/dr-export/src/name.rs:1`](../core/dr-export/src/name.rs#L1), [`core/dr-types/src/settings.rs:1`](../core/dr-types/src/settings.rs#L1), [`ui/dr-ui/src/export.rs:1`](../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/lib.rs:603`](../ui/dr-ui/src/lib.rs#L603), [`ui/dr-ui/src/settings_ui.rs:1`](../ui/dr-ui/src/settings_ui.rs#L1), [`ui/dr-ui/src/settings_ui.rs:49`](../ui/dr-ui/src/settings_ui.rs#L49), [`ui/dr-ui/src/settings_ui.rs:815`](../ui/dr-ui/src/settings_ui.rs#L815) |
+| FR-EXP-7 | [`ui/dr-ui/src/activity.rs:83`](../ui/dr-ui/src/activity.rs#L83), [`ui/dr-ui/src/export.rs:1005`](../ui/dr-ui/src/export.rs#L1005), [`ui/dr-ui/src/export.rs:1`](../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/lib.rs:264`](../ui/dr-ui/src/lib.rs#L264), [`ui/dr-ui/src/lib.rs:2783`](../ui/dr-ui/src/lib.rs#L2783), [`ui/dr-ui/src/lib.rs:603`](../ui/dr-ui/src/lib.rs#L603), [`ui/dr-ui/src/lib.rs:649`](../ui/dr-ui/src/lib.rs#L649), [`ui/dr-ui/src/lib.rs:676`](../ui/dr-ui/src/lib.rs#L676), [`ui/dr-ui/src/library_ui.rs:4275`](../ui/dr-ui/src/library_ui.rs#L4275), [`ui/dr-ui/src/library_ui.rs:719`](../ui/dr-ui/src/library_ui.rs#L719), [`ui/dr-ui/src/library_ui.rs:8026`](../ui/dr-ui/src/library_ui.rs#L8026), [`ui/dr-ui/src/library_ui.rs:8103`](../ui/dr-ui/src/library_ui.rs#L8103), [`ui/dr-ui/src/library_ui.rs:8115`](../ui/dr-ui/src/library_ui.rs#L8115), [`ui/dr-ui/src/library_ui.rs:819`](../ui/dr-ui/src/library_ui.rs#L819), [`ui/dr-ui/src/library_ui.rs:876`](../ui/dr-ui/src/library_ui.rs#L876), [`ui/dr-ui/ui/app.slint:1116`](../ui/dr-ui/ui/app.slint#L1116), [`ui/dr-ui/ui/app.slint:1676`](../ui/dr-ui/ui/app.slint#L1676), [`ui/dr-ui/ui/library.slint:1583`](../ui/dr-ui/ui/library.slint#L1583), [`ui/dr-ui/ui/library.slint:4291`](../ui/dr-ui/ui/library.slint#L4291) |
+| FR-EXP-8 | [`core/dr-decode/src/lib.rs:346`](../core/dr-decode/src/lib.rs#L346), [`core/dr-decode/src/lib.rs:370`](../core/dr-decode/src/lib.rs#L370), [`core/dr-decode/src/lib.rs:384`](../core/dr-decode/src/lib.rs#L384), [`core/dr-decode/src/lib.rs:71`](../core/dr-decode/src/lib.rs#L71), [`core/dr-decode/src/lib.rs:79`](../core/dr-decode/src/lib.rs#L79), [`core/dr-decode/src/lib.rs:82`](../core/dr-decode/src/lib.rs#L82), [`core/dr-decode/src/locate.rs:1164`](../core/dr-decode/src/locate.rs#L1164), [`core/dr-decode/src/locate.rs:1223`](../core/dr-decode/src/locate.rs#L1223), [`core/dr-decode/src/locate.rs:316`](../core/dr-decode/src/locate.rs#L316), [`core/dr-decode/src/locate.rs:487`](../core/dr-decode/src/locate.rs#L487), [`core/dr-decode/src/locate.rs:571`](../core/dr-decode/src/locate.rs#L571), [`core/dr-decode/src/locate.rs:584`](../core/dr-decode/src/locate.rs#L584), [`core/dr-decode/src/locate.rs:667`](../core/dr-decode/src/locate.rs#L667), [`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:138`](../core/dr-export/src/lib.rs#L138), [`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:647`](../core/dr-types/src/settings.rs#L647), [`ui/dr-ui/src/develop.rs:4539`](../ui/dr-ui/src/develop.rs#L4539), [`ui/dr-ui/src/develop.rs:4651`](../ui/dr-ui/src/develop.rs#L4651), [`ui/dr-ui/src/develop.rs:729`](../ui/dr-ui/src/develop.rs#L729), [`ui/dr-ui/src/export.rs:474`](../ui/dr-ui/src/export.rs#L474), [`ui/dr-ui/src/export.rs:641`](../ui/dr-ui/src/export.rs#L641), [`ui/dr-ui/src/export.rs:687`](../ui/dr-ui/src/export.rs#L687), [`ui/dr-ui/src/export.rs:715`](../ui/dr-ui/src/export.rs#L715), [`ui/dr-ui/src/export.rs:839`](../ui/dr-ui/src/export.rs#L839), [`ui/dr-ui/src/export.rs:857`](../ui/dr-ui/src/export.rs#L857), [`ui/dr-ui/src/lib.rs:264`](../ui/dr-ui/src/lib.rs#L264), [`ui/dr-ui/src/lib.rs:287`](../ui/dr-ui/src/lib.rs#L287), [`ui/dr-ui/src/lib.rs:635`](../ui/dr-ui/src/lib.rs#L635), [`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:526`](../core/dr-decode/src/lib.rs#L526), [`core/dr-export/src/lib.rs:130`](../core/dr-export/src/lib.rs#L130), [`core/dr-export/src/lib.rs:1`](../core/dr-export/src/lib.rs#L1), [`core/dr-gpu/src/adjust.rs:1134`](../core/dr-gpu/src/adjust.rs#L1134), [`ui/dr-ui/examples/face_native.rs:1`](../ui/dr-ui/examples/face_native.rs#L1), [`ui/dr-ui/src/develop.rs:4672`](../ui/dr-ui/src/develop.rs#L4672), [`ui/dr-ui/src/develop.rs:4710`](../ui/dr-ui/src/develop.rs#L4710), [`ui/dr-ui/src/develop.rs:6878`](../ui/dr-ui/src/develop.rs#L6878), [`ui/dr-ui/src/lib.rs:603`](../ui/dr-ui/src/lib.rs#L603), [`ui/dr-ui/src/library.rs:4052`](../ui/dr-ui/src/library.rs#L4052), [`ui/dr-ui/src/library.rs:4522`](../ui/dr-ui/src/library.rs#L4522), [`ui/dr-ui/src/library.rs:4558`](../ui/dr-ui/src/library.rs#L4558), [`ui/dr-ui/tests/export_ignores_the_viewport.rs:1`](../ui/dr-ui/tests/export_ignores_the_viewport.rs#L1) |
+| 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:1546`](../ui/dr-ui/src/lib.rs#L1546), [`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:1681`](../ui/dr-ui/ui/app.slint#L1681), [`ui/dr-ui/ui/app.slint:820`](../ui/dr-ui/ui/app.slint#L820), [`ui/dr-ui/ui/library.slint:1591`](../ui/dr-ui/ui/library.slint#L1591), [`ui/dr-ui/ui/library.slint:4236`](../ui/dr-ui/ui/library.slint#L4236), [`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) |
| FR-MRG-2 | [`core/dr-gpu/src/adjust.rs:104`](../core/dr-gpu/src/adjust.rs#L104), [`core/dr-gpu/src/adjust.rs:1157`](../core/dr-gpu/src/adjust.rs#L1157), [`core/dr-gpu/src/adjust.rs:1276`](../core/dr-gpu/src/adjust.rs#L1276), [`core/dr-gpu/src/adjust.rs:316`](../core/dr-gpu/src/adjust.rs#L316), [`core/dr-pipeline/src/graph.rs:852`](../core/dr-pipeline/src/graph.rs#L852), [`core/dr-pipeline/src/operation.rs:427`](../core/dr-pipeline/src/operation.rs#L427), [`core/dr-pipeline/src/operation.rs:595`](../core/dr-pipeline/src/operation.rs#L595), [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1) |
| FR-MRG-3 | [`core/dr-decode/examples/linear_dng.rs:1`](../core/dr-decode/examples/linear_dng.rs#L1), [`core/dr-decode/src/lib.rs:137`](../core/dr-decode/src/lib.rs#L137), [`core/dr-decode/src/lib.rs:144`](../core/dr-decode/src/lib.rs#L144), [`core/dr-decode/src/lib.rs:578`](../core/dr-decode/src/lib.rs#L578), [`core/dr-decode/src/profile.rs:395`](../core/dr-decode/src/profile.rs#L395), [`core/dr-export/src/dng.rs:1`](../core/dr-export/src/dng.rs#L1), [`core/dr-gpu/src/demosaic.rs:254`](../core/dr-gpu/src/demosaic.rs#L254), [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1) |
-| FR-MRG-4 | [`core/dr-pano/src/projection.rs:1`](../core/dr-pano/src/projection.rs#L1) |
-| FR-MRG-5 | [`core/dr-pano/src/align.rs:1`](../core/dr-pano/src/align.rs#L1), [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1) |
-| FR-MRG-7 | [`ui/dr-ui/src/merge.rs:1`](../ui/dr-ui/src/merge.rs#L1) |
+| FR-MRG-4 | [`core/dr-pano/src/projection.rs:1`](../core/dr-pano/src/projection.rs#L1), [`ui/dr-ui/src/merge_ui.rs:1`](../ui/dr-ui/src/merge_ui.rs#L1), [`ui/dr-ui/ui/merge.slint:1`](../ui/dr-ui/ui/merge.slint#L1) |
+| FR-MRG-5 | [`core/dr-pano/src/align.rs:1`](../core/dr-pano/src/align.rs#L1), [`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/merge.slint:1`](../ui/dr-ui/ui/merge.slint#L1) |
+| FR-MRG-7 | [`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:820`](../ui/dr-ui/ui/app.slint#L820), [`ui/dr-ui/ui/merge.slint:1`](../ui/dr-ui/ui/merge.slint#L1) |
| FR-MRG-8 | [`core/dr-pano/src/xfeat.rs:1`](../core/dr-pano/src/xfeat.rs#L1), [`core/dr-segment/examples/onnx_probe.rs:1`](../core/dr-segment/examples/onnx_probe.rs#L1) |
| FR-NC-1 | [`core/dr-sync-nextcloud/src/auth.rs:132`](../core/dr-sync-nextcloud/src/auth.rs#L132), [`core/dr-sync-nextcloud/src/auth.rs:44`](../core/dr-sync-nextcloud/src/auth.rs#L44), [`core/dr-sync-nextcloud/src/provider.rs:1`](../core/dr-sync-nextcloud/src/provider.rs#L1), [`core/dr-sync/src/account.rs:361`](../core/dr-sync/src/account.rs#L361), [`ui/dr-ui/src/launch.rs:277`](../ui/dr-ui/src/launch.rs#L277), [`ui/dr-ui/src/launch.rs:61`](../ui/dr-ui/src/launch.rs#L61), [`ui/dr-ui/src/launch_ui.rs:417`](../ui/dr-ui/src/launch_ui.rs#L417) |
-| FR-NC-10 | [`core/dr-sync/src/account.rs:226`](../core/dr-sync/src/account.rs#L226), [`ui/dr-ui/src/export.rs:1`](../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/lib.rs:675`](../ui/dr-ui/src/lib.rs#L675), [`ui/dr-ui/src/library.rs:1170`](../ui/dr-ui/src/library.rs#L1170), [`ui/dr-ui/src/library.rs:2463`](../ui/dr-ui/src/library.rs#L2463), [`ui/dr-ui/src/library.rs:589`](../ui/dr-ui/src/library.rs#L589), [`ui/dr-ui/src/library.rs:916`](../ui/dr-ui/src/library.rs#L916), [`ui/dr-ui/src/library_ui.rs:2062`](../ui/dr-ui/src/library_ui.rs#L2062), [`ui/dr-ui/src/library_ui.rs:4275`](../ui/dr-ui/src/library_ui.rs#L4275), [`ui/dr-ui/src/library_ui.rs:660`](../ui/dr-ui/src/library_ui.rs#L660), [`ui/dr-ui/src/sidecar_cache.rs:1`](../ui/dr-ui/src/sidecar_cache.rs#L1) |
+| FR-NC-10 | [`core/dr-sync/src/account.rs:226`](../core/dr-sync/src/account.rs#L226), [`ui/dr-ui/src/export.rs:1`](../ui/dr-ui/src/export.rs#L1), [`ui/dr-ui/src/lib.rs:676`](../ui/dr-ui/src/lib.rs#L676), [`ui/dr-ui/src/library.rs:1170`](../ui/dr-ui/src/library.rs#L1170), [`ui/dr-ui/src/library.rs:2463`](../ui/dr-ui/src/library.rs#L2463), [`ui/dr-ui/src/library.rs:589`](../ui/dr-ui/src/library.rs#L589), [`ui/dr-ui/src/library.rs:916`](../ui/dr-ui/src/library.rs#L916), [`ui/dr-ui/src/library_ui.rs:2062`](../ui/dr-ui/src/library_ui.rs#L2062), [`ui/dr-ui/src/library_ui.rs:4275`](../ui/dr-ui/src/library_ui.rs#L4275), [`ui/dr-ui/src/library_ui.rs:660`](../ui/dr-ui/src/library_ui.rs#L660), [`ui/dr-ui/src/sidecar_cache.rs:1`](../ui/dr-ui/src/sidecar_cache.rs#L1) |
| 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:1022`](../core/dr-sync-nextcloud/src/lib.rs#L1022), [`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:106`](../core/dr-sync/src/provider.rs#L106), [`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:106`](../core/dr-sync/src/provider.rs#L106), [`ui/dr-ui/src/launch_ui.rs:316`](../ui/dr-ui/src/launch_ui.rs#L316), [`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:304`](../core/dr-sync/src/account.rs#L304), [`core/dr-sync/src/account.rs:361`](../core/dr-sync/src/account.rs#L361), [`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/library.rs:1`](../ui/dr-ui/src/library.rs#L1), [`ui/dr-ui/src/library.rs:3796`](../ui/dr-ui/src/library.rs#L3796), [`ui/dr-ui/src/library.rs:4708`](../ui/dr-ui/src/library.rs#L4708), [`ui/dr-ui/src/library_ui.rs:1`](../ui/dr-ui/src/library_ui.rs#L1), [`ui/dr-ui/src/library_ui.rs:4541`](../ui/dr-ui/src/library_ui.rs#L4541), [`ui/dr-ui/src/library_ui.rs:6052`](../ui/dr-ui/src/library_ui.rs#L6052), [`ui/dr-ui/ui/app.slint:383`](../ui/dr-ui/ui/app.slint#L383), [`ui/dr-ui/ui/settings.slint:425`](../ui/dr-ui/ui/settings.slint#L425), [`ui/dr-ui/ui/settings.slint:73`](../ui/dr-ui/ui/settings.slint#L73) |
+| 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/library.rs:1`](../ui/dr-ui/src/library.rs#L1), [`ui/dr-ui/src/library.rs:3796`](../ui/dr-ui/src/library.rs#L3796), [`ui/dr-ui/src/library.rs:4708`](../ui/dr-ui/src/library.rs#L4708), [`ui/dr-ui/src/library_ui.rs:1`](../ui/dr-ui/src/library_ui.rs#L1), [`ui/dr-ui/src/library_ui.rs:4541`](../ui/dr-ui/src/library_ui.rs#L4541), [`ui/dr-ui/src/library_ui.rs:6052`](../ui/dr-ui/src/library_ui.rs#L6052), [`ui/dr-ui/ui/app.slint:384`](../ui/dr-ui/ui/app.slint#L384), [`ui/dr-ui/ui/settings.slint:425`](../ui/dr-ui/ui/settings.slint#L425), [`ui/dr-ui/ui/settings.slint:73`](../ui/dr-ui/ui/settings.slint#L73) |
| 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:488`](../ui/dr-ui/src/import.rs#L488) |
| 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:1377`](../core/dr-catalog/src/schema.rs#L1377), [`core/dr-catalog/src/schema.rs:922`](../core/dr-catalog/src/schema.rs#L922), [`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.rs:2940`](../ui/dr-ui/src/collections_ui.rs#L2940), [`ui/dr-ui/src/collections_ui.rs:3182`](../ui/dr-ui/src/collections_ui.rs#L3182), [`ui/dr-ui/src/collections_ui.rs:4083`](../ui/dr-ui/src/collections_ui.rs#L4083), [`ui/dr-ui/src/collections_ui.rs:785`](../ui/dr-ui/src/collections_ui.rs#L785), [`ui/dr-ui/src/collections_ui.rs:856`](../ui/dr-ui/src/collections_ui.rs#L856), [`ui/dr-ui/src/lib.rs:1319`](../ui/dr-ui/src/lib.rs#L1319), [`ui/dr-ui/src/lib.rs:2427`](../ui/dr-ui/src/lib.rs#L2427), [`ui/dr-ui/src/lib.rs:2498`](../ui/dr-ui/src/lib.rs#L2498), [`ui/dr-ui/src/lib.rs:3794`](../ui/dr-ui/src/lib.rs#L3794), [`ui/dr-ui/src/lib.rs:3795`](../ui/dr-ui/src/lib.rs#L3795), [`ui/dr-ui/src/lib.rs:3834`](../ui/dr-ui/src/lib.rs#L3834), [`ui/dr-ui/src/library.rs:2109`](../ui/dr-ui/src/library.rs#L2109), [`ui/dr-ui/src/library.rs:2132`](../ui/dr-ui/src/library.rs#L2132), [`ui/dr-ui/src/library.rs:2407`](../ui/dr-ui/src/library.rs#L2407), [`ui/dr-ui/src/library.rs:2588`](../ui/dr-ui/src/library.rs#L2588), [`ui/dr-ui/src/library.rs:2725`](../ui/dr-ui/src/library.rs#L2725), [`ui/dr-ui/src/library.rs:2740`](../ui/dr-ui/src/library.rs#L2740), [`ui/dr-ui/src/library_ui.rs:1487`](../ui/dr-ui/src/library_ui.rs#L1487), [`ui/dr-ui/src/library_ui.rs:1560`](../ui/dr-ui/src/library_ui.rs#L1560), [`ui/dr-ui/src/library_ui.rs:1661`](../ui/dr-ui/src/library_ui.rs#L1661), [`ui/dr-ui/src/library_ui.rs:1716`](../ui/dr-ui/src/library_ui.rs#L1716), [`ui/dr-ui/src/library_ui.rs:1851`](../ui/dr-ui/src/library_ui.rs#L1851), [`ui/dr-ui/src/library_ui.rs:1969`](../ui/dr-ui/src/library_ui.rs#L1969), [`ui/dr-ui/src/library_ui.rs:2736`](../ui/dr-ui/src/library_ui.rs#L2736), [`ui/dr-ui/src/library_ui.rs:344`](../ui/dr-ui/src/library_ui.rs#L344), [`ui/dr-ui/src/library_ui.rs:355`](../ui/dr-ui/src/library_ui.rs#L355), [`ui/dr-ui/src/library_ui.rs:370`](../ui/dr-ui/src/library_ui.rs#L370), [`ui/dr-ui/src/library_ui.rs:379`](../ui/dr-ui/src/library_ui.rs#L379), [`ui/dr-ui/src/library_ui.rs:387`](../ui/dr-ui/src/library_ui.rs#L387), [`ui/dr-ui/src/library_ui.rs:515`](../ui/dr-ui/src/library_ui.rs#L515), [`ui/dr-ui/src/library_ui.rs:525`](../ui/dr-ui/src/library_ui.rs#L525), [`ui/dr-ui/src/library_ui.rs:540`](../ui/dr-ui/src/library_ui.rs#L540), [`ui/dr-ui/src/library_ui.rs:587`](../ui/dr-ui/src/library_ui.rs#L587), [`ui/dr-ui/src/library_ui.rs:602`](../ui/dr-ui/src/library_ui.rs#L602), [`ui/dr-ui/src/library_ui.rs:676`](../ui/dr-ui/src/library_ui.rs#L676), [`ui/dr-ui/src/library_ui.rs:6889`](../ui/dr-ui/src/library_ui.rs#L6889), [`ui/dr-ui/src/library_ui.rs:6907`](../ui/dr-ui/src/library_ui.rs#L6907), [`ui/dr-ui/src/library_ui.rs:707`](../ui/dr-ui/src/library_ui.rs#L707), [`ui/dr-ui/src/library_ui.rs:719`](../ui/dr-ui/src/library_ui.rs#L719), [`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:524`](../ui/dr-ui/src/settings_ui.rs#L524), [`ui/dr-ui/ui/app.slint:1524`](../ui/dr-ui/ui/app.slint#L1524), [`ui/dr-ui/ui/app.slint:3073`](../ui/dr-ui/ui/app.slint#L3073), [`ui/dr-ui/ui/app.slint:535`](../ui/dr-ui/ui/app.slint#L535), [`ui/dr-ui/ui/app.slint:543`](../ui/dr-ui/ui/app.slint#L543), [`ui/dr-ui/ui/app.slint:549`](../ui/dr-ui/ui/app.slint#L549), [`ui/dr-ui/ui/collections.slint:1037`](../ui/dr-ui/ui/collections.slint#L1037), [`ui/dr-ui/ui/collections.slint:1048`](../ui/dr-ui/ui/collections.slint#L1048), [`ui/dr-ui/ui/collections.slint:1127`](../ui/dr-ui/ui/collections.slint#L1127), [`ui/dr-ui/ui/collections.slint:272`](../ui/dr-ui/ui/collections.slint#L272), [`ui/dr-ui/ui/collections.slint:424`](../ui/dr-ui/ui/collections.slint#L424), [`ui/dr-ui/ui/collections.slint:433`](../ui/dr-ui/ui/collections.slint#L433), [`ui/dr-ui/ui/collections.slint:436`](../ui/dr-ui/ui/collections.slint#L436), [`ui/dr-ui/ui/collections.slint:482`](../ui/dr-ui/ui/collections.slint#L482), [`ui/dr-ui/ui/collections.slint:52`](../ui/dr-ui/ui/collections.slint#L52), [`ui/dr-ui/ui/collections.slint:720`](../ui/dr-ui/ui/collections.slint#L720), [`ui/dr-ui/ui/collections.slint:877`](../ui/dr-ui/ui/collections.slint#L877), [`ui/dr-ui/ui/collections.slint:91`](../ui/dr-ui/ui/collections.slint#L91), [`ui/dr-ui/ui/icons.slint:262`](../ui/dr-ui/ui/icons.slint#L262), [`ui/dr-ui/ui/settings.slint:108`](../ui/dr-ui/ui/settings.slint#L108), [`ui/dr-ui/ui/settings.slint:603`](../ui/dr-ui/ui/settings.slint#L603) |
+| 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:1377`](../core/dr-catalog/src/schema.rs#L1377), [`core/dr-catalog/src/schema.rs:922`](../core/dr-catalog/src/schema.rs#L922), [`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.rs:2940`](../ui/dr-ui/src/collections_ui.rs#L2940), [`ui/dr-ui/src/collections_ui.rs:3182`](../ui/dr-ui/src/collections_ui.rs#L3182), [`ui/dr-ui/src/collections_ui.rs:4083`](../ui/dr-ui/src/collections_ui.rs#L4083), [`ui/dr-ui/src/collections_ui.rs:785`](../ui/dr-ui/src/collections_ui.rs#L785), [`ui/dr-ui/src/collections_ui.rs:856`](../ui/dr-ui/src/collections_ui.rs#L856), [`ui/dr-ui/src/lib.rs:1320`](../ui/dr-ui/src/lib.rs#L1320), [`ui/dr-ui/src/lib.rs:2457`](../ui/dr-ui/src/lib.rs#L2457), [`ui/dr-ui/src/lib.rs:2528`](../ui/dr-ui/src/lib.rs#L2528), [`ui/dr-ui/src/lib.rs:3824`](../ui/dr-ui/src/lib.rs#L3824), [`ui/dr-ui/src/lib.rs:3825`](../ui/dr-ui/src/lib.rs#L3825), [`ui/dr-ui/src/lib.rs:3864`](../ui/dr-ui/src/lib.rs#L3864), [`ui/dr-ui/src/library.rs:2109`](../ui/dr-ui/src/library.rs#L2109), [`ui/dr-ui/src/library.rs:2132`](../ui/dr-ui/src/library.rs#L2132), [`ui/dr-ui/src/library.rs:2407`](../ui/dr-ui/src/library.rs#L2407), [`ui/dr-ui/src/library.rs:2588`](../ui/dr-ui/src/library.rs#L2588), [`ui/dr-ui/src/library.rs:2725`](../ui/dr-ui/src/library.rs#L2725), [`ui/dr-ui/src/library.rs:2740`](../ui/dr-ui/src/library.rs#L2740), [`ui/dr-ui/src/library_ui.rs:1487`](../ui/dr-ui/src/library_ui.rs#L1487), [`ui/dr-ui/src/library_ui.rs:1560`](../ui/dr-ui/src/library_ui.rs#L1560), [`ui/dr-ui/src/library_ui.rs:1661`](../ui/dr-ui/src/library_ui.rs#L1661), [`ui/dr-ui/src/library_ui.rs:1716`](../ui/dr-ui/src/library_ui.rs#L1716), [`ui/dr-ui/src/library_ui.rs:1851`](../ui/dr-ui/src/library_ui.rs#L1851), [`ui/dr-ui/src/library_ui.rs:1969`](../ui/dr-ui/src/library_ui.rs#L1969), [`ui/dr-ui/src/library_ui.rs:2736`](../ui/dr-ui/src/library_ui.rs#L2736), [`ui/dr-ui/src/library_ui.rs:344`](../ui/dr-ui/src/library_ui.rs#L344), [`ui/dr-ui/src/library_ui.rs:355`](../ui/dr-ui/src/library_ui.rs#L355), [`ui/dr-ui/src/library_ui.rs:370`](../ui/dr-ui/src/library_ui.rs#L370), [`ui/dr-ui/src/library_ui.rs:379`](../ui/dr-ui/src/library_ui.rs#L379), [`ui/dr-ui/src/library_ui.rs:387`](../ui/dr-ui/src/library_ui.rs#L387), [`ui/dr-ui/src/library_ui.rs:515`](../ui/dr-ui/src/library_ui.rs#L515), [`ui/dr-ui/src/library_ui.rs:525`](../ui/dr-ui/src/library_ui.rs#L525), [`ui/dr-ui/src/library_ui.rs:540`](../ui/dr-ui/src/library_ui.rs#L540), [`ui/dr-ui/src/library_ui.rs:587`](../ui/dr-ui/src/library_ui.rs#L587), [`ui/dr-ui/src/library_ui.rs:602`](../ui/dr-ui/src/library_ui.rs#L602), [`ui/dr-ui/src/library_ui.rs:676`](../ui/dr-ui/src/library_ui.rs#L676), [`ui/dr-ui/src/library_ui.rs:6889`](../ui/dr-ui/src/library_ui.rs#L6889), [`ui/dr-ui/src/library_ui.rs:6907`](../ui/dr-ui/src/library_ui.rs#L6907), [`ui/dr-ui/src/library_ui.rs:707`](../ui/dr-ui/src/library_ui.rs#L707), [`ui/dr-ui/src/library_ui.rs:719`](../ui/dr-ui/src/library_ui.rs#L719), [`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:524`](../ui/dr-ui/src/settings_ui.rs#L524), [`ui/dr-ui/ui/app.slint:1570`](../ui/dr-ui/ui/app.slint#L1570), [`ui/dr-ui/ui/app.slint:3121`](../ui/dr-ui/ui/app.slint#L3121), [`ui/dr-ui/ui/app.slint:536`](../ui/dr-ui/ui/app.slint#L536), [`ui/dr-ui/ui/app.slint:544`](../ui/dr-ui/ui/app.slint#L544), [`ui/dr-ui/ui/app.slint:550`](../ui/dr-ui/ui/app.slint#L550), [`ui/dr-ui/ui/collections.slint:1037`](../ui/dr-ui/ui/collections.slint#L1037), [`ui/dr-ui/ui/collections.slint:1048`](../ui/dr-ui/ui/collections.slint#L1048), [`ui/dr-ui/ui/collections.slint:1127`](../ui/dr-ui/ui/collections.slint#L1127), [`ui/dr-ui/ui/collections.slint:272`](../ui/dr-ui/ui/collections.slint#L272), [`ui/dr-ui/ui/collections.slint:424`](../ui/dr-ui/ui/collections.slint#L424), [`ui/dr-ui/ui/collections.slint:433`](../ui/dr-ui/ui/collections.slint#L433), [`ui/dr-ui/ui/collections.slint:436`](../ui/dr-ui/ui/collections.slint#L436), [`ui/dr-ui/ui/collections.slint:482`](../ui/dr-ui/ui/collections.slint#L482), [`ui/dr-ui/ui/collections.slint:52`](../ui/dr-ui/ui/collections.slint#L52), [`ui/dr-ui/ui/collections.slint:720`](../ui/dr-ui/ui/collections.slint#L720), [`ui/dr-ui/ui/collections.slint:877`](../ui/dr-ui/ui/collections.slint#L877), [`ui/dr-ui/ui/collections.slint:91`](../ui/dr-ui/ui/collections.slint#L91), [`ui/dr-ui/ui/icons.slint:262`](../ui/dr-ui/ui/icons.slint#L262), [`ui/dr-ui/ui/settings.slint:108`](../ui/dr-ui/ui/settings.slint#L108), [`ui/dr-ui/ui/settings.slint:603`](../ui/dr-ui/ui/settings.slint#L603) |
| FR-NC-6b | [`ui/dr-ui/src/library_ui.rs:1716`](../ui/dr-ui/src/library_ui.rs#L1716), [`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.rs:4083`](../ui/dr-ui/src/collections_ui.rs#L4083), [`ui/dr-ui/src/collections_ui.rs:785`](../ui/dr-ui/src/collections_ui.rs#L785), [`ui/dr-ui/src/collections_ui.rs:856`](../ui/dr-ui/src/collections_ui.rs#L856), [`ui/dr-ui/src/derived_sync.rs:1031`](../ui/dr-ui/src/derived_sync.rs#L1031), [`ui/dr-ui/src/derived_sync.rs:631`](../ui/dr-ui/src/derived_sync.rs#L631), [`ui/dr-ui/src/library.rs:1020`](../ui/dr-ui/src/library.rs#L1020), [`ui/dr-ui/src/library.rs:2229`](../ui/dr-ui/src/library.rs#L2229), [`ui/dr-ui/src/library.rs:2319`](../ui/dr-ui/src/library.rs#L2319), [`ui/dr-ui/src/library.rs:4296`](../ui/dr-ui/src/library.rs#L4296), [`ui/dr-ui/src/library.rs:4828`](../ui/dr-ui/src/library.rs#L4828), [`ui/dr-ui/src/library_ui.rs:1487`](../ui/dr-ui/src/library_ui.rs#L1487), [`ui/dr-ui/src/library_ui.rs:1560`](../ui/dr-ui/src/library_ui.rs#L1560), [`ui/dr-ui/src/library_ui.rs:1759`](../ui/dr-ui/src/library_ui.rs#L1759), [`ui/dr-ui/src/remote.rs:40`](../ui/dr-ui/src/remote.rs#L40), [`ui/dr-ui/ui/collections.slint:272`](../ui/dr-ui/ui/collections.slint#L272), [`ui/dr-ui/ui/collections.slint:877`](../ui/dr-ui/ui/collections.slint#L877), [`ui/dr-ui/ui/icons.slint:262`](../ui/dr-ui/ui/icons.slint#L262) |
| 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:105`](../core/dr-sync-nextcloud/src/lib.rs#L105), [`ui/dr-ui/src/derived_sync.rs:1`](../ui/dr-ui/src/derived_sync.rs#L1), [`ui/dr-ui/src/library.rs:4708`](../ui/dr-ui/src/library.rs#L4708), [`ui/dr-ui/src/library_ui.rs:4541`](../ui/dr-ui/src/library_ui.rs#L4541), [`ui/dr-ui/ui/settings.slint:425`](../ui/dr-ui/ui/settings.slint#L425) |
-| 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:353`](../core/dr-types/src/settings.rs#L353), [`ui/dr-ui/src/import.rs:1`](../ui/dr-ui/src/import.rs#L1), [`ui/dr-ui/src/import.rs:97`](../ui/dr-ui/src/import.rs#L97), [`ui/dr-ui/src/import_ui.rs:1`](../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1528`](../ui/dr-ui/src/lib.rs#L1528), [`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:122`](../ui/dr-ui/src/import.rs#L122), [`ui/dr-ui/src/import.rs:336`](../ui/dr-ui/src/import.rs#L336), [`ui/dr-ui/src/import.rs:584`](../ui/dr-ui/src/import.rs#L584), [`ui/dr-ui/src/import.rs:97`](../ui/dr-ui/src/import.rs#L97), [`ui/dr-ui/src/import_ui.rs:1`](../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1528`](../ui/dr-ui/src/lib.rs#L1528) |
-| FR-NC-8 | [`core/dr-catalog/src/rating.rs:204`](../core/dr-catalog/src/rating.rs#L204), [`core/dr-catalog/src/rating.rs:66`](../core/dr-catalog/src/rating.rs#L66), [`core/dr-catalog/src/rating.rs:929`](../core/dr-catalog/src/rating.rs#L929), [`core/dr-catalog/src/schema.rs:179`](../core/dr-catalog/src/schema.rs#L179), [`core/dr-pipeline/src/sidecar.rs:122`](../core/dr-pipeline/src/sidecar.rs#L122), [`core/dr-pipeline/src/sidecar.rs:2944`](../core/dr-pipeline/src/sidecar.rs#L2944), [`core/dr-pipeline/src/sidecar.rs:645`](../core/dr-pipeline/src/sidecar.rs#L645), [`core/dr-pipeline/src/sidecar.rs:720`](../core/dr-pipeline/src/sidecar.rs#L720), [`core/dr-pipeline/src/sidecar.rs:96`](../core/dr-pipeline/src/sidecar.rs#L96), [`ui/dr-ui/src/lib.rs:2397`](../ui/dr-ui/src/lib.rs#L2397), [`ui/dr-ui/src/library.rs:1062`](../ui/dr-ui/src/library.rs#L1062), [`ui/dr-ui/src/library.rs:2518`](../ui/dr-ui/src/library.rs#L2518), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500), [`ui/dr-ui/src/library.rs:760`](../ui/dr-ui/src/library.rs#L760), [`ui/dr-ui/src/library.rs:8268`](../ui/dr-ui/src/library.rs#L8268), [`ui/dr-ui/src/library_ui.rs:628`](../ui/dr-ui/src/library_ui.rs#L628), [`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) |
+| 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:353`](../core/dr-types/src/settings.rs#L353), [`ui/dr-ui/src/import.rs:1`](../ui/dr-ui/src/import.rs#L1), [`ui/dr-ui/src/import.rs:97`](../ui/dr-ui/src/import.rs#L97), [`ui/dr-ui/src/import_ui.rs:1`](../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1529`](../ui/dr-ui/src/lib.rs#L1529), [`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:122`](../ui/dr-ui/src/import.rs#L122), [`ui/dr-ui/src/import.rs:336`](../ui/dr-ui/src/import.rs#L336), [`ui/dr-ui/src/import.rs:584`](../ui/dr-ui/src/import.rs#L584), [`ui/dr-ui/src/import.rs:97`](../ui/dr-ui/src/import.rs#L97), [`ui/dr-ui/src/import_ui.rs:1`](../ui/dr-ui/src/import_ui.rs#L1), [`ui/dr-ui/src/lib.rs:1529`](../ui/dr-ui/src/lib.rs#L1529) |
+| FR-NC-8 | [`core/dr-catalog/src/rating.rs:204`](../core/dr-catalog/src/rating.rs#L204), [`core/dr-catalog/src/rating.rs:66`](../core/dr-catalog/src/rating.rs#L66), [`core/dr-catalog/src/rating.rs:929`](../core/dr-catalog/src/rating.rs#L929), [`core/dr-catalog/src/schema.rs:179`](../core/dr-catalog/src/schema.rs#L179), [`core/dr-pipeline/src/sidecar.rs:122`](../core/dr-pipeline/src/sidecar.rs#L122), [`core/dr-pipeline/src/sidecar.rs:2944`](../core/dr-pipeline/src/sidecar.rs#L2944), [`core/dr-pipeline/src/sidecar.rs:645`](../core/dr-pipeline/src/sidecar.rs#L645), [`core/dr-pipeline/src/sidecar.rs:720`](../core/dr-pipeline/src/sidecar.rs#L720), [`core/dr-pipeline/src/sidecar.rs:96`](../core/dr-pipeline/src/sidecar.rs#L96), [`ui/dr-ui/src/lib.rs:2427`](../ui/dr-ui/src/lib.rs#L2427), [`ui/dr-ui/src/library.rs:1062`](../ui/dr-ui/src/library.rs#L1062), [`ui/dr-ui/src/library.rs:2518`](../ui/dr-ui/src/library.rs#L2518), [`ui/dr-ui/src/library.rs:500`](../ui/dr-ui/src/library.rs#L500), [`ui/dr-ui/src/library.rs:760`](../ui/dr-ui/src/library.rs#L760), [`ui/dr-ui/src/library.rs:8268`](../ui/dr-ui/src/library.rs#L8268), [`ui/dr-ui/src/library_ui.rs:628`](../ui/dr-ui/src/library_ui.rs#L628), [`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) |
| FR-NC-9 | [`core/dr-catalog/src/merge.rs:1`](../core/dr-catalog/src/merge.rs#L1), [`core/dr-catalog/src/rating.rs:204`](../core/dr-catalog/src/rating.rs#L204), [`core/dr-catalog/src/rating.rs:66`](../core/dr-catalog/src/rating.rs#L66), [`core/dr-catalog/src/rating.rs:929`](../core/dr-catalog/src/rating.rs#L929), [`core/dr-catalog/src/schema.rs:179`](../core/dr-catalog/src/schema.rs#L179), [`core/dr-catalog/src/schema.rs:584`](../core/dr-catalog/src/schema.rs#L584), [`core/dr-catalog/src/schema.rs:865`](../core/dr-catalog/src/schema.rs#L865), [`core/dr-catalog/src/sync.rs:1`](../core/dr-catalog/src/sync.rs#L1), [`core/dr-pipeline/src/sidecar.rs:177`](../core/dr-pipeline/src/sidecar.rs#L177), [`core/dr-pipeline/src/sidecar.rs:204`](../core/dr-pipeline/src/sidecar.rs#L204), [`core/dr-pipeline/src/sidecar.rs:2473`](../core/dr-pipeline/src/sidecar.rs#L2473), [`core/dr-pipeline/src/sidecar.rs:2710`](../core/dr-pipeline/src/sidecar.rs#L2710), [`core/dr-pipeline/src/sidecar.rs:2944`](../core/dr-pipeline/src/sidecar.rs#L2944), [`core/dr-pipeline/src/sidecar.rs:380`](../core/dr-pipeline/src/sidecar.rs#L380), [`core/dr-pipeline/src/sidecar.rs:478`](../core/dr-pipeline/src/sidecar.rs#L478), [`core/dr-pipeline/src/sidecar.rs:645`](../core/dr-pipeline/src/sidecar.rs#L645), [`core/dr-pipeline/src/sidecar.rs:695`](../core/dr-pipeline/src/sidecar.rs#L695), [`core/dr-pipeline/src/sidecar.rs:720`](../core/dr-pipeline/src/sidecar.rs#L720), [`core/dr-pipeline/src/spot.rs:245`](../core/dr-pipeline/src/spot.rs#L245), [`core/dr-pipeline/tests/mask_sidecar.rs:1075`](../core/dr-pipeline/tests/mask_sidecar.rs#L1075), [`core/dr-pipeline/tests/spot_sidecar.rs:1`](../core/dr-pipeline/tests/spot_sidecar.rs#L1), [`core/dr-sync-nextcloud/src/lib.rs:124`](../core/dr-sync-nextcloud/src/lib.rs#L124), [`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), [`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), [`ui/dr-ui/src/derived_sync.rs:1059`](../ui/dr-ui/src/derived_sync.rs#L1059), [`ui/dr-ui/src/derived_sync.rs:602`](../ui/dr-ui/src/derived_sync.rs#L602), [`ui/dr-ui/src/derived_sync.rs:631`](../ui/dr-ui/src/derived_sync.rs#L631), [`ui/dr-ui/src/derived_sync.rs:664`](../ui/dr-ui/src/derived_sync.rs#L664), [`ui/dr-ui/src/derived_sync.rs:810`](../ui/dr-ui/src/derived_sync.rs#L810), [`ui/dr-ui/src/library.rs:1062`](../ui/dr-ui/src/library.rs#L1062), [`ui/dr-ui/src/library.rs:1082`](../ui/dr-ui/src/library.rs#L1082), [`ui/dr-ui/src/library.rs:1391`](../ui/dr-ui/src/library.rs#L1391), [`ui/dr-ui/src/library.rs:1426`](../ui/dr-ui/src/library.rs#L1426), [`ui/dr-ui/src/library.rs:2518`](../ui/dr-ui/src/library.rs#L2518), [`ui/dr-ui/src/library.rs:73`](../ui/dr-ui/src/library.rs#L73), [`ui/dr-ui/src/library.rs:760`](../ui/dr-ui/src/library.rs#L760), [`ui/dr-ui/src/library.rs:8100`](../ui/dr-ui/src/library.rs#L8100), [`ui/dr-ui/src/library.rs:8268`](../ui/dr-ui/src/library.rs#L8268), [`ui/dr-ui/src/library.rs:832`](../ui/dr-ui/src/library.rs#L832), [`ui/dr-ui/src/library.rs:916`](../ui/dr-ui/src/library.rs#L916), [`ui/dr-ui/src/library_ui.rs:1344`](../ui/dr-ui/src/library_ui.rs#L1344), [`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), [`ui/dr-ui/src/xmp_sync.rs:1`](../ui/dr-ui/src/xmp_sync.rs#L1), [`ui/dr-ui/src/xmp_sync.rs:287`](../ui/dr-ui/src/xmp_sync.rs#L287) |
| FR-PLAT-AND-2 | [`core/dr-catalog/src/walk.rs:1022`](../core/dr-catalog/src/walk.rs#L1022), [`core/dr-catalog/src/walk.rs:435`](../core/dr-catalog/src/walk.rs#L435), [`core/dr-sync-folder/src/lib.rs:242`](../core/dr-sync-folder/src/lib.rs#L242), [`core/dr-sync-folder/src/tests.rs:51`](../core/dr-sync-folder/src/tests.rs#L51), [`core/dr-sync/src/error.rs:113`](../core/dr-sync/src/error.rs#L113), [`core/dr-sync/src/error.rs:195`](../core/dr-sync/src/error.rs#L195), [`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-sync/src/scan.rs:545`](../core/dr-sync/src/scan.rs#L545), [`core/dr-sync/src/scan.rs:574`](../core/dr-sync/src/scan.rs#L574), [`ui/dr-ui/src/library.rs:1291`](../ui/dr-ui/src/library.rs#L1291), [`ui/dr-ui/src/library.rs:1344`](../ui/dr-ui/src/library.rs#L1344), [`ui/dr-ui/src/library.rs:1375`](../ui/dr-ui/src/library.rs#L1375), [`ui/dr-ui/src/library.rs:1955`](../ui/dr-ui/src/library.rs#L1955), [`ui/dr-ui/src/library_ui.rs:1315`](../ui/dr-ui/src/library_ui.rs#L1315), [`ui/dr-ui/src/library_ui.rs:1411`](../ui/dr-ui/src/library_ui.rs#L1411), [`ui/dr-ui/src/library_ui.rs:2010`](../ui/dr-ui/src/library_ui.rs#L2010), [`ui/dr-ui/src/library_ui.rs:328`](../ui/dr-ui/src/library_ui.rs#L328), [`ui/dr-ui/src/library_ui.rs:571`](../ui/dr-ui/src/library_ui.rs#L571) |
| FR-PLAT-AND-3 | [`core/dr-catalog/src/jobs.rs:1`](../core/dr-catalog/src/jobs.rs#L1), [`core/dr-catalog/src/runner.rs:1`](../core/dr-catalog/src/runner.rs#L1) |
| FR-PLAT-AND-4 | [`core/dr-catalog/src/runner.rs:1`](../core/dr-catalog/src/runner.rs#L1) |
-| FR-PLAT-AND-5 | [`apps/darkroom-android/src/lib.rs:166`](../apps/darkroom-android/src/lib.rs#L166), [`core/dr-gpu/src/adjust.rs:1057`](../core/dr-gpu/src/adjust.rs#L1057), [`core/dr-gpu/src/detail.rs:161`](../core/dr-gpu/src/detail.rs#L161), [`core/dr-gpu/src/detail.rs:547`](../core/dr-gpu/src/detail.rs#L547), [`core/dr-gpu/tests/detail_stage.rs:417`](../core/dr-gpu/tests/detail_stage.rs#L417), [`ui/dr-ui/src/develop.rs:4512`](../ui/dr-ui/src/develop.rs#L4512), [`ui/dr-ui/src/identity_ui.rs:125`](../ui/dr-ui/src/identity_ui.rs#L125), [`ui/dr-ui/src/lib.rs:1346`](../ui/dr-ui/src/lib.rs#L1346), [`ui/dr-ui/src/lib.rs:1802`](../ui/dr-ui/src/lib.rs#L1802), [`ui/dr-ui/src/memory.rs:163`](../ui/dr-ui/src/memory.rs#L163), [`ui/dr-ui/src/memory.rs:1`](../ui/dr-ui/src/memory.rs#L1) |
+| FR-PLAT-AND-5 | [`apps/darkroom-android/src/lib.rs:166`](../apps/darkroom-android/src/lib.rs#L166), [`core/dr-gpu/src/adjust.rs:1057`](../core/dr-gpu/src/adjust.rs#L1057), [`core/dr-gpu/src/detail.rs:161`](../core/dr-gpu/src/detail.rs#L161), [`core/dr-gpu/src/detail.rs:547`](../core/dr-gpu/src/detail.rs#L547), [`core/dr-gpu/tests/detail_stage.rs:417`](../core/dr-gpu/tests/detail_stage.rs#L417), [`ui/dr-ui/src/develop.rs:4512`](../ui/dr-ui/src/develop.rs#L4512), [`ui/dr-ui/src/identity_ui.rs:125`](../ui/dr-ui/src/identity_ui.rs#L125), [`ui/dr-ui/src/lib.rs:1347`](../ui/dr-ui/src/lib.rs#L1347), [`ui/dr-ui/src/lib.rs:1832`](../ui/dr-ui/src/lib.rs#L1832), [`ui/dr-ui/src/memory.rs:163`](../ui/dr-ui/src/memory.rs#L163), [`ui/dr-ui/src/memory.rs:1`](../ui/dr-ui/src/memory.rs#L1) |
| FR-PLAT-AND-6 | [`apps/darkroom-android/src/lib.rs:397`](../apps/darkroom-android/src/lib.rs#L397) |
-| FR-PLAT-LIN-1 | [`core/dr-types/src/settings.rs:1`](../core/dr-types/src/settings.rs#L1), [`platform/dr-plat/src/dirs.rs:1`](../platform/dr-plat/src/dirs.rs#L1), [`platform/dr-plat/src/storage.rs:344`](../platform/dr-plat/src/storage.rs#L344), [`ui/dr-ui/src/lib.rs:1161`](../ui/dr-ui/src/lib.rs#L1161), [`ui/dr-ui/src/preset_store.rs:1`](../ui/dr-ui/src/preset_store.rs#L1), [`ui/dr-ui/src/settings_store.rs:1`](../ui/dr-ui/src/settings_store.rs#L1) |
+| FR-PLAT-LIN-1 | [`core/dr-types/src/settings.rs:1`](../core/dr-types/src/settings.rs#L1), [`platform/dr-plat/src/dirs.rs:1`](../platform/dr-plat/src/dirs.rs#L1), [`platform/dr-plat/src/storage.rs:344`](../platform/dr-plat/src/storage.rs#L344), [`ui/dr-ui/src/lib.rs:1162`](../ui/dr-ui/src/lib.rs#L1162), [`ui/dr-ui/src/preset_store.rs:1`](../ui/dr-ui/src/preset_store.rs#L1), [`ui/dr-ui/src/settings_store.rs:1`](../ui/dr-ui/src/settings_store.rs#L1) |
| FR-PLAT-LIN-2 | [`platform/dr-plat/src/display.rs:1`](../platform/dr-plat/src/display.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) |
| FR-PLAT-WIN-1 | [`platform/dr-plat/src/dirs.rs:1`](../platform/dr-plat/src/dirs.rs#L1) |
| FR-PLAT-WIN-2 | [`apps/darkroom-desktop/build.rs:1`](../apps/darkroom-desktop/build.rs#L1), [`apps/darkroom-desktop/src/main.rs:6`](../apps/darkroom-desktop/src/main.rs#L6), [`ui/dr-ui/src/launch_ui.rs:819`](../ui/dr-ui/src/launch_ui.rs#L819) |
| FR-PLAT-WIN-3 | [`apps/darkroom-desktop/src/main.rs:19`](../apps/darkroom-desktop/src/main.rs#L19) |
| FR-RAW-1 | [`core/dr-decode/src/lib.rs:259`](../core/dr-decode/src/lib.rs#L259), [`core/dr-types/src/lib.rs:132`](../core/dr-types/src/lib.rs#L132), [`core/dr-types/src/lib.rs:203`](../core/dr-types/src/lib.rs#L203) |
| FR-RAW-3 | [`core/dr-decode/src/lib.rs:155`](../core/dr-decode/src/lib.rs#L155), [`core/dr-decode/src/lib.rs:526`](../core/dr-decode/src/lib.rs#L526), [`core/dr-decode/src/locate.rs:1366`](../core/dr-decode/src/locate.rs#L1366) |
-| 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:263`](../ui/dr-ui/src/lib.rs#L263) |
+| 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:264`](../ui/dr-ui/src/lib.rs#L264) |
| FR-RAW-5 | [`core/dr-decode/src/lib.rs:183`](../core/dr-decode/src/lib.rs#L183), [`core/dr-gpu/src/demosaic.rs:34`](../core/dr-gpu/src/demosaic.rs#L34), [`core/dr-gpu/src/demosaic.rs:734`](../core/dr-gpu/src/demosaic.rs#L734), [`core/dr-gpu/src/demosaic.rs:813`](../core/dr-gpu/src/demosaic.rs#L813), [`core/dr-gpu/src/demosaic.rs:937`](../core/dr-gpu/src/demosaic.rs#L937) |
-| FR-UI-1 | [`core/dr-types/src/settings.rs:1348`](../core/dr-types/src/settings.rs#L1348), [`core/dr-types/src/settings.rs:468`](../core/dr-types/src/settings.rs#L468), [`core/dr-types/src/settings.rs:488`](../core/dr-types/src/settings.rs#L488), [`ui/dr-ui/src/lib.rs:103`](../ui/dr-ui/src/lib.rs#L103), [`ui/dr-ui/src/lib.rs:118`](../ui/dr-ui/src/lib.rs#L118), [`ui/dr-ui/src/lib.rs:140`](../ui/dr-ui/src/lib.rs#L140), [`ui/dr-ui/src/lib.rs:2651`](../ui/dr-ui/src/lib.rs#L2651), [`ui/dr-ui/src/lib.rs:3986`](../ui/dr-ui/src/lib.rs#L3986), [`ui/dr-ui/src/lib.rs:4005`](../ui/dr-ui/src/lib.rs#L4005), [`ui/dr-ui/src/lib.rs:4032`](../ui/dr-ui/src/lib.rs#L4032), [`ui/dr-ui/src/lib.rs:4083`](../ui/dr-ui/src/lib.rs#L4083), [`ui/dr-ui/src/lib.rs:4116`](../ui/dr-ui/src/lib.rs#L4116), [`ui/dr-ui/src/masks_ui.rs:1471`](../ui/dr-ui/src/masks_ui.rs#L1471), [`ui/dr-ui/src/settings_ui.rs:179`](../ui/dr-ui/src/settings_ui.rs#L179), [`ui/dr-ui/ui/adjust.slint:974`](../ui/dr-ui/ui/adjust.slint#L974), [`ui/dr-ui/ui/app.slint:2752`](../ui/dr-ui/ui/app.slint#L2752), [`ui/dr-ui/ui/app.slint:858`](../ui/dr-ui/ui/app.slint#L858), [`ui/dr-ui/ui/app.slint:962`](../ui/dr-ui/ui/app.slint#L962), [`ui/dr-ui/ui/identity.slint:219`](../ui/dr-ui/ui/identity.slint#L219), [`ui/dr-ui/ui/library.slint:1076`](../ui/dr-ui/ui/library.slint#L1076), [`ui/dr-ui/ui/settings.slint:116`](../ui/dr-ui/ui/settings.slint#L116), [`ui/dr-ui/ui/settings.slint:628`](../ui/dr-ui/ui/settings.slint#L628), [`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) |
-| FR-UI-2 | [`ui/dr-ui/src/collections_ui.rs:116`](../ui/dr-ui/src/collections_ui.rs#L116), [`ui/dr-ui/src/collections_ui.rs:1197`](../ui/dr-ui/src/collections_ui.rs#L1197), [`ui/dr-ui/src/collections_ui.rs:1207`](../ui/dr-ui/src/collections_ui.rs#L1207), [`ui/dr-ui/src/collections_ui.rs:154`](../ui/dr-ui/src/collections_ui.rs#L154), [`ui/dr-ui/src/collections_ui.rs:1704`](../ui/dr-ui/src/collections_ui.rs#L1704), [`ui/dr-ui/src/collections_ui.rs:1721`](../ui/dr-ui/src/collections_ui.rs#L1721), [`ui/dr-ui/src/collections_ui.rs:1973`](../ui/dr-ui/src/collections_ui.rs#L1973), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:3596`](../ui/dr-ui/src/collections_ui.rs#L3596), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:103`](../ui/dr-ui/src/lib.rs#L103), [`ui/dr-ui/src/library_ui.rs:6774`](../ui/dr-ui/src/library_ui.rs#L6774), [`ui/dr-ui/src/library_ui.rs:8134`](../ui/dr-ui/src/library_ui.rs#L8134), [`ui/dr-ui/ui/app.slint:588`](../ui/dr-ui/ui/app.slint#L588), [`ui/dr-ui/ui/app.slint:602`](../ui/dr-ui/ui/app.slint#L602), [`ui/dr-ui/ui/app.slint:68`](../ui/dr-ui/ui/app.slint#L68), [`ui/dr-ui/ui/app.slint:946`](../ui/dr-ui/ui/app.slint#L946), [`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:1287`](../ui/dr-ui/ui/library.slint#L1287), [`ui/dr-ui/ui/library.slint:1294`](../ui/dr-ui/ui/library.slint#L1294), [`ui/dr-ui/ui/library.slint:1391`](../ui/dr-ui/ui/library.slint#L1391), [`ui/dr-ui/ui/library.slint:2581`](../ui/dr-ui/ui/library.slint#L2581), [`ui/dr-ui/ui/library.slint:4316`](../ui/dr-ui/ui/library.slint#L4316), [`ui/dr-ui/ui/library.slint:965`](../ui/dr-ui/ui/library.slint#L965), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998), [`ui/dr-ui/ui/presets.slint:19`](../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/settings.slint:130`](../ui/dr-ui/ui/settings.slint#L130) |
-| FR-UI-3 | [`ui/dr-ui/src/collections_ui.rs:209`](../ui/dr-ui/src/collections_ui.rs#L209), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:414`](../ui/dr-ui/src/collections_ui.rs#L414), [`ui/dr-ui/src/collections_ui.rs:427`](../ui/dr-ui/src/collections_ui.rs#L427), [`ui/dr-ui/src/develop.rs:2850`](../ui/dr-ui/src/develop.rs#L2850), [`ui/dr-ui/src/develop.rs:3238`](../ui/dr-ui/src/develop.rs#L3238), [`ui/dr-ui/src/library_ui.rs:5803`](../ui/dr-ui/src/library_ui.rs#L5803), [`ui/dr-ui/src/masks_ui.rs:1563`](../ui/dr-ui/src/masks_ui.rs#L1563), [`ui/dr-ui/src/masks_ui.rs:1585`](../ui/dr-ui/src/masks_ui.rs#L1585), [`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:2295`](../ui/dr-ui/ui/app.slint#L2295), [`ui/dr-ui/ui/collections.slint:1127`](../ui/dr-ui/ui/collections.slint#L1127), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:75`](../ui/dr-ui/ui/collections.slint#L75), [`ui/dr-ui/ui/collections.slint:877`](../ui/dr-ui/ui/collections.slint#L877), [`ui/dr-ui/ui/masks.slint:1208`](../ui/dr-ui/ui/masks.slint#L1208), [`ui/dr-ui/ui/widgets.slint:71`](../ui/dr-ui/ui/widgets.slint#L71) |
-| FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../tools/traceability/src/gestures.rs#L1), [`ui/dr-ui/src/collections_ui.rs:116`](../ui/dr-ui/src/collections_ui.rs#L116), [`ui/dr-ui/src/collections_ui.rs:117`](../ui/dr-ui/src/collections_ui.rs#L117), [`ui/dr-ui/src/collections_ui.rs:1197`](../ui/dr-ui/src/collections_ui.rs#L1197), [`ui/dr-ui/src/collections_ui.rs:1207`](../ui/dr-ui/src/collections_ui.rs#L1207), [`ui/dr-ui/src/collections_ui.rs:126`](../ui/dr-ui/src/collections_ui.rs#L126), [`ui/dr-ui/src/collections_ui.rs:154`](../ui/dr-ui/src/collections_ui.rs#L154), [`ui/dr-ui/src/collections_ui.rs:1704`](../ui/dr-ui/src/collections_ui.rs#L1704), [`ui/dr-ui/src/collections_ui.rs:1721`](../ui/dr-ui/src/collections_ui.rs#L1721), [`ui/dr-ui/src/collections_ui.rs:1837`](../ui/dr-ui/src/collections_ui.rs#L1837), [`ui/dr-ui/src/collections_ui.rs:1973`](../ui/dr-ui/src/collections_ui.rs#L1973), [`ui/dr-ui/src/collections_ui.rs:2000`](../ui/dr-ui/src/collections_ui.rs#L2000), [`ui/dr-ui/src/collections_ui.rs:209`](../ui/dr-ui/src/collections_ui.rs#L209), [`ui/dr-ui/src/collections_ui.rs:2116`](../ui/dr-ui/src/collections_ui.rs#L2116), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:2755`](../ui/dr-ui/src/collections_ui.rs#L2755), [`ui/dr-ui/src/collections_ui.rs:3208`](../ui/dr-ui/src/collections_ui.rs#L3208), [`ui/dr-ui/src/collections_ui.rs:3596`](../ui/dr-ui/src/collections_ui.rs#L3596), [`ui/dr-ui/src/collections_ui.rs:3633`](../ui/dr-ui/src/collections_ui.rs#L3633), [`ui/dr-ui/src/collections_ui.rs:414`](../ui/dr-ui/src/collections_ui.rs#L414), [`ui/dr-ui/src/collections_ui.rs:427`](../ui/dr-ui/src/collections_ui.rs#L427), [`ui/dr-ui/src/collections_ui.rs:514`](../ui/dr-ui/src/collections_ui.rs#L514), [`ui/dr-ui/src/collections_ui.rs:718`](../ui/dr-ui/src/collections_ui.rs#L718), [`ui/dr-ui/src/collections_ui.rs:738`](../ui/dr-ui/src/collections_ui.rs#L738), [`ui/dr-ui/src/develop.rs:5283`](../ui/dr-ui/src/develop.rs#L5283), [`ui/dr-ui/src/develop.rs:5308`](../ui/dr-ui/src/develop.rs#L5308), [`ui/dr-ui/src/develop.rs:5319`](../ui/dr-ui/src/develop.rs#L5319), [`ui/dr-ui/src/develop.rs:5333`](../ui/dr-ui/src/develop.rs#L5333), [`ui/dr-ui/src/develop.rs:6561`](../ui/dr-ui/src/develop.rs#L6561), [`ui/dr-ui/src/develop.rs:6592`](../ui/dr-ui/src/develop.rs#L6592), [`ui/dr-ui/src/develop.rs:6613`](../ui/dr-ui/src/develop.rs#L6613), [`ui/dr-ui/src/gesture_book.rs:3`](../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:1319`](../ui/dr-ui/src/lib.rs#L1319), [`ui/dr-ui/src/lib.rs:1884`](../ui/dr-ui/src/lib.rs#L1884), [`ui/dr-ui/src/lib.rs:2308`](../ui/dr-ui/src/lib.rs#L2308), [`ui/dr-ui/src/lib.rs:2498`](../ui/dr-ui/src/lib.rs#L2498), [`ui/dr-ui/src/lib.rs:2558`](../ui/dr-ui/src/lib.rs#L2558), [`ui/dr-ui/src/lib.rs:3226`](../ui/dr-ui/src/lib.rs#L3226), [`ui/dr-ui/src/lib.rs:3795`](../ui/dr-ui/src/lib.rs#L3795), [`ui/dr-ui/src/lib.rs:4220`](../ui/dr-ui/src/lib.rs#L4220), [`ui/dr-ui/src/lib.rs:455`](../ui/dr-ui/src/lib.rs#L455), [`ui/dr-ui/src/lib.rs:484`](../ui/dr-ui/src/lib.rs#L484), [`ui/dr-ui/src/library.rs:2725`](../ui/dr-ui/src/library.rs#L2725), [`ui/dr-ui/src/library.rs:2740`](../ui/dr-ui/src/library.rs#L2740), [`ui/dr-ui/src/library_ui.rs:387`](../ui/dr-ui/src/library_ui.rs#L387), [`ui/dr-ui/src/library_ui.rs:525`](../ui/dr-ui/src/library_ui.rs#L525), [`ui/dr-ui/src/library_ui.rs:5803`](../ui/dr-ui/src/library_ui.rs#L5803), [`ui/dr-ui/src/library_ui.rs:5815`](../ui/dr-ui/src/library_ui.rs#L5815), [`ui/dr-ui/src/library_ui.rs:5885`](../ui/dr-ui/src/library_ui.rs#L5885), [`ui/dr-ui/src/library_ui.rs:5995`](../ui/dr-ui/src/library_ui.rs#L5995), [`ui/dr-ui/src/library_ui.rs:6023`](../ui/dr-ui/src/library_ui.rs#L6023), [`ui/dr-ui/src/library_ui.rs:602`](../ui/dr-ui/src/library_ui.rs#L602), [`ui/dr-ui/src/library_ui.rs:6907`](../ui/dr-ui/src/library_ui.rs#L6907), [`ui/dr-ui/src/settings_ui.rs:157`](../ui/dr-ui/src/settings_ui.rs#L157), [`ui/dr-ui/src/settings_ui.rs:524`](../ui/dr-ui/src/settings_ui.rs#L524), [`ui/dr-ui/ui/app.slint:168`](../ui/dr-ui/ui/app.slint#L168), [`ui/dr-ui/ui/app.slint:1990`](../ui/dr-ui/ui/app.slint#L1990), [`ui/dr-ui/ui/app.slint:2112`](../ui/dr-ui/ui/app.slint#L2112), [`ui/dr-ui/ui/app.slint:2519`](../ui/dr-ui/ui/app.slint#L2519), [`ui/dr-ui/ui/app.slint:2652`](../ui/dr-ui/ui/app.slint#L2652), [`ui/dr-ui/ui/app.slint:3123`](../ui/dr-ui/ui/app.slint#L3123), [`ui/dr-ui/ui/app.slint:564`](../ui/dr-ui/ui/app.slint#L564), [`ui/dr-ui/ui/app.slint:593`](../ui/dr-ui/ui/app.slint#L593), [`ui/dr-ui/ui/app.slint:602`](../ui/dr-ui/ui/app.slint#L602), [`ui/dr-ui/ui/app.slint:702`](../ui/dr-ui/ui/app.slint#L702), [`ui/dr-ui/ui/collections.slint:75`](../ui/dr-ui/ui/collections.slint#L75), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1053`](../ui/dr-ui/ui/library.slint#L1053), [`ui/dr-ui/ui/library.slint:1262`](../ui/dr-ui/ui/library.slint#L1262), [`ui/dr-ui/ui/library.slint:1287`](../ui/dr-ui/ui/library.slint#L1287), [`ui/dr-ui/ui/library.slint:1294`](../ui/dr-ui/ui/library.slint#L1294), [`ui/dr-ui/ui/library.slint:1327`](../ui/dr-ui/ui/library.slint#L1327), [`ui/dr-ui/ui/library.slint:1384`](../ui/dr-ui/ui/library.slint#L1384), [`ui/dr-ui/ui/library.slint:1391`](../ui/dr-ui/ui/library.slint#L1391), [`ui/dr-ui/ui/library.slint:2581`](../ui/dr-ui/ui/library.slint#L2581), [`ui/dr-ui/ui/library.slint:4179`](../ui/dr-ui/ui/library.slint#L4179), [`ui/dr-ui/ui/library.slint:4257`](../ui/dr-ui/ui/library.slint#L4257), [`ui/dr-ui/ui/library.slint:4316`](../ui/dr-ui/ui/library.slint#L4316), [`ui/dr-ui/ui/library.slint:965`](../ui/dr-ui/ui/library.slint#L965), [`ui/dr-ui/ui/library.slint:992`](../ui/dr-ui/ui/library.slint#L992), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998), [`ui/dr-ui/ui/settings.slint:108`](../ui/dr-ui/ui/settings.slint#L108), [`ui/dr-ui/ui/settings.slint:603`](../ui/dr-ui/ui/settings.slint#L603) |
-| FR-UI-5 | [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/lib.rs:3271`](../ui/dr-ui/src/lib.rs#L3271), [`ui/dr-ui/src/lib.rs:4180`](../ui/dr-ui/src/lib.rs#L4180), [`ui/dr-ui/src/lib.rs:4371`](../ui/dr-ui/src/lib.rs#L4371), [`ui/dr-ui/src/masks_ui.rs:1518`](../ui/dr-ui/src/masks_ui.rs#L1518), [`ui/dr-ui/ui/app.slint:2479`](../ui/dr-ui/ui/app.slint#L2479), [`ui/dr-ui/ui/app.slint:2519`](../ui/dr-ui/ui/app.slint#L2519), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/session.slint:75`](../ui/dr-ui/ui/session.slint#L75) |
+| FR-UI-1 | [`core/dr-types/src/settings.rs:1348`](../core/dr-types/src/settings.rs#L1348), [`core/dr-types/src/settings.rs:468`](../core/dr-types/src/settings.rs#L468), [`core/dr-types/src/settings.rs:488`](../core/dr-types/src/settings.rs#L488), [`ui/dr-ui/src/lib.rs:104`](../ui/dr-ui/src/lib.rs#L104), [`ui/dr-ui/src/lib.rs:119`](../ui/dr-ui/src/lib.rs#L119), [`ui/dr-ui/src/lib.rs:141`](../ui/dr-ui/src/lib.rs#L141), [`ui/dr-ui/src/lib.rs:2681`](../ui/dr-ui/src/lib.rs#L2681), [`ui/dr-ui/src/lib.rs:4016`](../ui/dr-ui/src/lib.rs#L4016), [`ui/dr-ui/src/lib.rs:4035`](../ui/dr-ui/src/lib.rs#L4035), [`ui/dr-ui/src/lib.rs:4062`](../ui/dr-ui/src/lib.rs#L4062), [`ui/dr-ui/src/lib.rs:4113`](../ui/dr-ui/src/lib.rs#L4113), [`ui/dr-ui/src/lib.rs:4146`](../ui/dr-ui/src/lib.rs#L4146), [`ui/dr-ui/src/masks_ui.rs:1471`](../ui/dr-ui/src/masks_ui.rs#L1471), [`ui/dr-ui/src/settings_ui.rs:179`](../ui/dr-ui/src/settings_ui.rs#L179), [`ui/dr-ui/ui/adjust.slint:974`](../ui/dr-ui/ui/adjust.slint#L974), [`ui/dr-ui/ui/app.slint:2800`](../ui/dr-ui/ui/app.slint#L2800), [`ui/dr-ui/ui/app.slint:883`](../ui/dr-ui/ui/app.slint#L883), [`ui/dr-ui/ui/app.slint:987`](../ui/dr-ui/ui/app.slint#L987), [`ui/dr-ui/ui/identity.slint:219`](../ui/dr-ui/ui/identity.slint#L219), [`ui/dr-ui/ui/library.slint:1076`](../ui/dr-ui/ui/library.slint#L1076), [`ui/dr-ui/ui/settings.slint:116`](../ui/dr-ui/ui/settings.slint#L116), [`ui/dr-ui/ui/settings.slint:628`](../ui/dr-ui/ui/settings.slint#L628), [`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) |
+| FR-UI-2 | [`ui/dr-ui/src/collections_ui.rs:116`](../ui/dr-ui/src/collections_ui.rs#L116), [`ui/dr-ui/src/collections_ui.rs:1197`](../ui/dr-ui/src/collections_ui.rs#L1197), [`ui/dr-ui/src/collections_ui.rs:1207`](../ui/dr-ui/src/collections_ui.rs#L1207), [`ui/dr-ui/src/collections_ui.rs:154`](../ui/dr-ui/src/collections_ui.rs#L154), [`ui/dr-ui/src/collections_ui.rs:1704`](../ui/dr-ui/src/collections_ui.rs#L1704), [`ui/dr-ui/src/collections_ui.rs:1721`](../ui/dr-ui/src/collections_ui.rs#L1721), [`ui/dr-ui/src/collections_ui.rs:1973`](../ui/dr-ui/src/collections_ui.rs#L1973), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:3596`](../ui/dr-ui/src/collections_ui.rs#L3596), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:104`](../ui/dr-ui/src/lib.rs#L104), [`ui/dr-ui/src/library_ui.rs:6774`](../ui/dr-ui/src/library_ui.rs#L6774), [`ui/dr-ui/src/library_ui.rs:8134`](../ui/dr-ui/src/library_ui.rs#L8134), [`ui/dr-ui/ui/app.slint:589`](../ui/dr-ui/ui/app.slint#L589), [`ui/dr-ui/ui/app.slint:603`](../ui/dr-ui/ui/app.slint#L603), [`ui/dr-ui/ui/app.slint:69`](../ui/dr-ui/ui/app.slint#L69), [`ui/dr-ui/ui/app.slint:971`](../ui/dr-ui/ui/app.slint#L971), [`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:1287`](../ui/dr-ui/ui/library.slint#L1287), [`ui/dr-ui/ui/library.slint:1294`](../ui/dr-ui/ui/library.slint#L1294), [`ui/dr-ui/ui/library.slint:1391`](../ui/dr-ui/ui/library.slint#L1391), [`ui/dr-ui/ui/library.slint:2585`](../ui/dr-ui/ui/library.slint#L2585), [`ui/dr-ui/ui/library.slint:4329`](../ui/dr-ui/ui/library.slint#L4329), [`ui/dr-ui/ui/library.slint:965`](../ui/dr-ui/ui/library.slint#L965), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998), [`ui/dr-ui/ui/presets.slint:19`](../ui/dr-ui/ui/presets.slint#L19), [`ui/dr-ui/ui/settings.slint:130`](../ui/dr-ui/ui/settings.slint#L130) |
+| FR-UI-3 | [`ui/dr-ui/src/collections_ui.rs:209`](../ui/dr-ui/src/collections_ui.rs#L209), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:414`](../ui/dr-ui/src/collections_ui.rs#L414), [`ui/dr-ui/src/collections_ui.rs:427`](../ui/dr-ui/src/collections_ui.rs#L427), [`ui/dr-ui/src/develop.rs:2850`](../ui/dr-ui/src/develop.rs#L2850), [`ui/dr-ui/src/develop.rs:3238`](../ui/dr-ui/src/develop.rs#L3238), [`ui/dr-ui/src/library_ui.rs:5803`](../ui/dr-ui/src/library_ui.rs#L5803), [`ui/dr-ui/src/masks_ui.rs:1563`](../ui/dr-ui/src/masks_ui.rs#L1563), [`ui/dr-ui/src/masks_ui.rs:1585`](../ui/dr-ui/src/masks_ui.rs#L1585), [`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:2343`](../ui/dr-ui/ui/app.slint#L2343), [`ui/dr-ui/ui/collections.slint:1127`](../ui/dr-ui/ui/collections.slint#L1127), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`ui/dr-ui/ui/collections.slint:75`](../ui/dr-ui/ui/collections.slint#L75), [`ui/dr-ui/ui/collections.slint:877`](../ui/dr-ui/ui/collections.slint#L877), [`ui/dr-ui/ui/masks.slint:1208`](../ui/dr-ui/ui/masks.slint#L1208), [`ui/dr-ui/ui/widgets.slint:71`](../ui/dr-ui/ui/widgets.slint#L71) |
+| FR-UI-4 | [`tools/traceability/src/gestures.rs:1`](../tools/traceability/src/gestures.rs#L1), [`ui/dr-ui/src/collections_ui.rs:116`](../ui/dr-ui/src/collections_ui.rs#L116), [`ui/dr-ui/src/collections_ui.rs:117`](../ui/dr-ui/src/collections_ui.rs#L117), [`ui/dr-ui/src/collections_ui.rs:1197`](../ui/dr-ui/src/collections_ui.rs#L1197), [`ui/dr-ui/src/collections_ui.rs:1207`](../ui/dr-ui/src/collections_ui.rs#L1207), [`ui/dr-ui/src/collections_ui.rs:126`](../ui/dr-ui/src/collections_ui.rs#L126), [`ui/dr-ui/src/collections_ui.rs:154`](../ui/dr-ui/src/collections_ui.rs#L154), [`ui/dr-ui/src/collections_ui.rs:1704`](../ui/dr-ui/src/collections_ui.rs#L1704), [`ui/dr-ui/src/collections_ui.rs:1721`](../ui/dr-ui/src/collections_ui.rs#L1721), [`ui/dr-ui/src/collections_ui.rs:1837`](../ui/dr-ui/src/collections_ui.rs#L1837), [`ui/dr-ui/src/collections_ui.rs:1973`](../ui/dr-ui/src/collections_ui.rs#L1973), [`ui/dr-ui/src/collections_ui.rs:2000`](../ui/dr-ui/src/collections_ui.rs#L2000), [`ui/dr-ui/src/collections_ui.rs:209`](../ui/dr-ui/src/collections_ui.rs#L209), [`ui/dr-ui/src/collections_ui.rs:2116`](../ui/dr-ui/src/collections_ui.rs#L2116), [`ui/dr-ui/src/collections_ui.rs:2701`](../ui/dr-ui/src/collections_ui.rs#L2701), [`ui/dr-ui/src/collections_ui.rs:2755`](../ui/dr-ui/src/collections_ui.rs#L2755), [`ui/dr-ui/src/collections_ui.rs:3208`](../ui/dr-ui/src/collections_ui.rs#L3208), [`ui/dr-ui/src/collections_ui.rs:3596`](../ui/dr-ui/src/collections_ui.rs#L3596), [`ui/dr-ui/src/collections_ui.rs:3633`](../ui/dr-ui/src/collections_ui.rs#L3633), [`ui/dr-ui/src/collections_ui.rs:414`](../ui/dr-ui/src/collections_ui.rs#L414), [`ui/dr-ui/src/collections_ui.rs:427`](../ui/dr-ui/src/collections_ui.rs#L427), [`ui/dr-ui/src/collections_ui.rs:514`](../ui/dr-ui/src/collections_ui.rs#L514), [`ui/dr-ui/src/collections_ui.rs:718`](../ui/dr-ui/src/collections_ui.rs#L718), [`ui/dr-ui/src/collections_ui.rs:738`](../ui/dr-ui/src/collections_ui.rs#L738), [`ui/dr-ui/src/develop.rs:5283`](../ui/dr-ui/src/develop.rs#L5283), [`ui/dr-ui/src/develop.rs:5308`](../ui/dr-ui/src/develop.rs#L5308), [`ui/dr-ui/src/develop.rs:5319`](../ui/dr-ui/src/develop.rs#L5319), [`ui/dr-ui/src/develop.rs:5333`](../ui/dr-ui/src/develop.rs#L5333), [`ui/dr-ui/src/develop.rs:6561`](../ui/dr-ui/src/develop.rs#L6561), [`ui/dr-ui/src/develop.rs:6592`](../ui/dr-ui/src/develop.rs#L6592), [`ui/dr-ui/src/develop.rs:6613`](../ui/dr-ui/src/develop.rs#L6613), [`ui/dr-ui/src/gesture_book.rs:3`](../ui/dr-ui/src/gesture_book.rs#L3), [`ui/dr-ui/src/gestures.rs:1`](../ui/dr-ui/src/gestures.rs#L1), [`ui/dr-ui/src/lib.rs:1320`](../ui/dr-ui/src/lib.rs#L1320), [`ui/dr-ui/src/lib.rs:1914`](../ui/dr-ui/src/lib.rs#L1914), [`ui/dr-ui/src/lib.rs:2338`](../ui/dr-ui/src/lib.rs#L2338), [`ui/dr-ui/src/lib.rs:2528`](../ui/dr-ui/src/lib.rs#L2528), [`ui/dr-ui/src/lib.rs:2588`](../ui/dr-ui/src/lib.rs#L2588), [`ui/dr-ui/src/lib.rs:3256`](../ui/dr-ui/src/lib.rs#L3256), [`ui/dr-ui/src/lib.rs:3825`](../ui/dr-ui/src/lib.rs#L3825), [`ui/dr-ui/src/lib.rs:4250`](../ui/dr-ui/src/lib.rs#L4250), [`ui/dr-ui/src/lib.rs:456`](../ui/dr-ui/src/lib.rs#L456), [`ui/dr-ui/src/lib.rs:485`](../ui/dr-ui/src/lib.rs#L485), [`ui/dr-ui/src/library.rs:2725`](../ui/dr-ui/src/library.rs#L2725), [`ui/dr-ui/src/library.rs:2740`](../ui/dr-ui/src/library.rs#L2740), [`ui/dr-ui/src/library_ui.rs:387`](../ui/dr-ui/src/library_ui.rs#L387), [`ui/dr-ui/src/library_ui.rs:525`](../ui/dr-ui/src/library_ui.rs#L525), [`ui/dr-ui/src/library_ui.rs:5803`](../ui/dr-ui/src/library_ui.rs#L5803), [`ui/dr-ui/src/library_ui.rs:5815`](../ui/dr-ui/src/library_ui.rs#L5815), [`ui/dr-ui/src/library_ui.rs:5885`](../ui/dr-ui/src/library_ui.rs#L5885), [`ui/dr-ui/src/library_ui.rs:5995`](../ui/dr-ui/src/library_ui.rs#L5995), [`ui/dr-ui/src/library_ui.rs:6023`](../ui/dr-ui/src/library_ui.rs#L6023), [`ui/dr-ui/src/library_ui.rs:602`](../ui/dr-ui/src/library_ui.rs#L602), [`ui/dr-ui/src/library_ui.rs:6907`](../ui/dr-ui/src/library_ui.rs#L6907), [`ui/dr-ui/src/settings_ui.rs:157`](../ui/dr-ui/src/settings_ui.rs#L157), [`ui/dr-ui/src/settings_ui.rs:524`](../ui/dr-ui/src/settings_ui.rs#L524), [`ui/dr-ui/ui/app.slint:169`](../ui/dr-ui/ui/app.slint#L169), [`ui/dr-ui/ui/app.slint:2038`](../ui/dr-ui/ui/app.slint#L2038), [`ui/dr-ui/ui/app.slint:2160`](../ui/dr-ui/ui/app.slint#L2160), [`ui/dr-ui/ui/app.slint:2567`](../ui/dr-ui/ui/app.slint#L2567), [`ui/dr-ui/ui/app.slint:2700`](../ui/dr-ui/ui/app.slint#L2700), [`ui/dr-ui/ui/app.slint:3171`](../ui/dr-ui/ui/app.slint#L3171), [`ui/dr-ui/ui/app.slint:565`](../ui/dr-ui/ui/app.slint#L565), [`ui/dr-ui/ui/app.slint:594`](../ui/dr-ui/ui/app.slint#L594), [`ui/dr-ui/ui/app.slint:603`](../ui/dr-ui/ui/app.slint#L603), [`ui/dr-ui/ui/app.slint:703`](../ui/dr-ui/ui/app.slint#L703), [`ui/dr-ui/ui/collections.slint:75`](../ui/dr-ui/ui/collections.slint#L75), [`ui/dr-ui/ui/gestures.slint:1`](../ui/dr-ui/ui/gestures.slint#L1), [`ui/dr-ui/ui/library.slint:1053`](../ui/dr-ui/ui/library.slint#L1053), [`ui/dr-ui/ui/library.slint:1262`](../ui/dr-ui/ui/library.slint#L1262), [`ui/dr-ui/ui/library.slint:1287`](../ui/dr-ui/ui/library.slint#L1287), [`ui/dr-ui/ui/library.slint:1294`](../ui/dr-ui/ui/library.slint#L1294), [`ui/dr-ui/ui/library.slint:1327`](../ui/dr-ui/ui/library.slint#L1327), [`ui/dr-ui/ui/library.slint:1384`](../ui/dr-ui/ui/library.slint#L1384), [`ui/dr-ui/ui/library.slint:1391`](../ui/dr-ui/ui/library.slint#L1391), [`ui/dr-ui/ui/library.slint:2585`](../ui/dr-ui/ui/library.slint#L2585), [`ui/dr-ui/ui/library.slint:4183`](../ui/dr-ui/ui/library.slint#L4183), [`ui/dr-ui/ui/library.slint:4270`](../ui/dr-ui/ui/library.slint#L4270), [`ui/dr-ui/ui/library.slint:4329`](../ui/dr-ui/ui/library.slint#L4329), [`ui/dr-ui/ui/library.slint:965`](../ui/dr-ui/ui/library.slint#L965), [`ui/dr-ui/ui/library.slint:992`](../ui/dr-ui/ui/library.slint#L992), [`ui/dr-ui/ui/library.slint:998`](../ui/dr-ui/ui/library.slint#L998), [`ui/dr-ui/ui/settings.slint:108`](../ui/dr-ui/ui/settings.slint#L108), [`ui/dr-ui/ui/settings.slint:603`](../ui/dr-ui/ui/settings.slint#L603) |
+| FR-UI-5 | [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/lib.rs:3301`](../ui/dr-ui/src/lib.rs#L3301), [`ui/dr-ui/src/lib.rs:4210`](../ui/dr-ui/src/lib.rs#L4210), [`ui/dr-ui/src/lib.rs:4401`](../ui/dr-ui/src/lib.rs#L4401), [`ui/dr-ui/src/masks_ui.rs:1518`](../ui/dr-ui/src/masks_ui.rs#L1518), [`ui/dr-ui/ui/app.slint:2527`](../ui/dr-ui/ui/app.slint#L2527), [`ui/dr-ui/ui/app.slint:2567`](../ui/dr-ui/ui/app.slint#L2567), [`ui/dr-ui/ui/collections.slint:4`](../ui/dr-ui/ui/collections.slint#L4), [`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:395`](../core/dr-pipeline/src/framing.rs#L395), [`core/dr-types/src/settings.rs:468`](../core/dr-types/src/settings.rs#L468), [`ui/dr-ui/src/develop.rs:1330`](../ui/dr-ui/src/develop.rs#L1330), [`ui/dr-ui/src/lib.rs:4005`](../ui/dr-ui/src/lib.rs#L4005), [`ui/dr-ui/ui/adjust.slint:974`](../ui/dr-ui/ui/adjust.slint#L974), [`ui/dr-ui/ui/app.slint:2235`](../ui/dr-ui/ui/app.slint#L2235), [`ui/dr-ui/ui/settings.slint:628`](../ui/dr-ui/ui/settings.slint#L628), [`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:395`](../core/dr-pipeline/src/framing.rs#L395), [`core/dr-types/src/settings.rs:468`](../core/dr-types/src/settings.rs#L468), [`ui/dr-ui/src/develop.rs:1330`](../ui/dr-ui/src/develop.rs#L1330), [`ui/dr-ui/src/lib.rs:4035`](../ui/dr-ui/src/lib.rs#L4035), [`ui/dr-ui/ui/adjust.slint:974`](../ui/dr-ui/ui/adjust.slint#L974), [`ui/dr-ui/ui/app.slint:2283`](../ui/dr-ui/ui/app.slint#L2283), [`ui/dr-ui/ui/settings.slint:628`](../ui/dr-ui/ui/settings.slint#L628), [`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:216`](../ui/dr-ui/src/derived_sync.rs#L216), [`ui/dr-ui/src/derived_sync.rs:81`](../ui/dr-ui/src/derived_sync.rs#L81), [`ui/dr-ui/src/derived_sync.rs:883`](../ui/dr-ui/src/derived_sync.rs#L883), [`ui/dr-ui/src/derived_sync.rs:893`](../ui/dr-ui/src/derived_sync.rs#L893), [`ui/dr-ui/src/derived_sync.rs:975`](../ui/dr-ui/src/derived_sync.rs#L975), [`ui/dr-ui/src/library.rs:1123`](../ui/dr-ui/src/library.rs#L1123), [`ui/dr-ui/src/library.rs:5391`](../ui/dr-ui/src/library.rs#L5391), [`ui/dr-ui/src/library.rs:6109`](../ui/dr-ui/src/library.rs#L6109), [`ui/dr-ui/src/library.rs:6175`](../ui/dr-ui/src/library.rs#L6175), [`ui/dr-ui/src/library_ui.rs:1012`](../ui/dr-ui/src/library_ui.rs#L1012), [`ui/dr-ui/src/library_ui.rs:195`](../ui/dr-ui/src/library_ui.rs#L195), [`ui/dr-ui/src/library_ui.rs:2197`](../ui/dr-ui/src/library_ui.rs#L2197), [`ui/dr-ui/src/library_ui.rs:2386`](../ui/dr-ui/src/library_ui.rs#L2386), [`ui/dr-ui/src/library_ui.rs:2403`](../ui/dr-ui/src/library_ui.rs#L2403), [`ui/dr-ui/src/library_ui.rs:2501`](../ui/dr-ui/src/library_ui.rs#L2501), [`ui/dr-ui/src/library_ui.rs:5836`](../ui/dr-ui/src/library_ui.rs#L5836), [`ui/dr-ui/src/library_ui.rs:5876`](../ui/dr-ui/src/library_ui.rs#L5876), [`ui/dr-ui/src/library_ui.rs:5905`](../ui/dr-ui/src/library_ui.rs#L5905), [`ui/dr-ui/src/library_ui.rs:6168`](../ui/dr-ui/src/library_ui.rs#L6168), [`ui/dr-ui/src/library_ui.rs:6391`](../ui/dr-ui/src/library_ui.rs#L6391), [`ui/dr-ui/src/library_ui.rs:7115`](../ui/dr-ui/src/library_ui.rs#L7115), [`ui/dr-ui/src/library_ui.rs:933`](../ui/dr-ui/src/library_ui.rs#L933), [`ui/dr-ui/src/library_ui.rs:966`](../ui/dr-ui/src/library_ui.rs#L966), [`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:171`](../ui/dr-ui/ui/adjust.slint#L171), [`ui/dr-ui/ui/app.slint:2652`](../ui/dr-ui/ui/app.slint#L2652), [`ui/dr-ui/ui/app.slint:2690`](../ui/dr-ui/ui/app.slint#L2690) |
+| 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:171`](../ui/dr-ui/ui/adjust.slint#L171), [`ui/dr-ui/ui/app.slint:2700`](../ui/dr-ui/ui/app.slint#L2700), [`ui/dr-ui/ui/app.slint:2738`](../ui/dr-ui/ui/app.slint#L2738) |
| NFR-A11Y-3 | [`ui/dr-ui/src/histogram.rs:356`](../ui/dr-ui/src/histogram.rs#L356), [`ui/dr-ui/ui/histogram.slint:137`](../ui/dr-ui/ui/histogram.slint#L137), [`ui/dr-ui/ui/library.slint:761`](../ui/dr-ui/ui/library.slint#L761), [`ui/dr-ui/ui/library.slint:909`](../ui/dr-ui/ui/library.slint#L909), [`ui/dr-ui/ui/peaking.slint:1`](../ui/dr-ui/ui/peaking.slint#L1) |
| NFR-ARCH-2 | [`core/dr-catalog/src/jobs.rs:1`](../core/dr-catalog/src/jobs.rs#L1), [`ui/dr-ui/src/faces.rs:1`](../ui/dr-ui/src/faces.rs#L1), [`ui/dr-ui/src/library.rs:4052`](../ui/dr-ui/src/library.rs#L4052) |
-| NFR-ARCH-3 | [`ui/dr-ui/src/export.rs:1815`](../ui/dr-ui/src/export.rs#L1815), [`ui/dr-ui/src/export.rs:1842`](../ui/dr-ui/src/export.rs#L1842), [`ui/dr-ui/src/export.rs:412`](../ui/dr-ui/src/export.rs#L412), [`ui/dr-ui/src/export.rs:438`](../ui/dr-ui/src/export.rs#L438), [`ui/dr-ui/src/lib.rs:2787`](../ui/dr-ui/src/lib.rs#L2787), [`ui/dr-ui/ui/app.slint:1102`](../ui/dr-ui/ui/app.slint#L1102), [`ui/dr-ui/ui/library.slint:4278`](../ui/dr-ui/ui/library.slint#L4278) |
-| 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:514`](../ui/dr-ui/src/export.rs#L514) |
+| NFR-ARCH-3 | [`ui/dr-ui/src/export.rs:1822`](../ui/dr-ui/src/export.rs#L1822), [`ui/dr-ui/src/export.rs:1849`](../ui/dr-ui/src/export.rs#L1849), [`ui/dr-ui/src/export.rs:419`](../ui/dr-ui/src/export.rs#L419), [`ui/dr-ui/src/export.rs:445`](../ui/dr-ui/src/export.rs#L445), [`ui/dr-ui/src/lib.rs:2817`](../ui/dr-ui/src/lib.rs#L2817), [`ui/dr-ui/ui/app.slint:1127`](../ui/dr-ui/ui/app.slint#L1127), [`ui/dr-ui/ui/library.slint:4291`](../ui/dr-ui/ui/library.slint#L4291) |
+| 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:521`](../ui/dr-ui/src/export.rs#L521) |
| 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:1210`](../ui/dr-ui/src/lib.rs#L1210), [`ui/dr-ui/ui/app.slint:1389`](../ui/dr-ui/ui/app.slint#L1389), [`ui/dr-ui/ui/app.slint:72`](../ui/dr-ui/ui/app.slint#L72), [`ui/dr-ui/ui/settings.slint:144`](../ui/dr-ui/ui/settings.slint#L144), [`ui/dr-ui/ui/settings.slint:942`](../ui/dr-ui/ui/settings.slint#L942) |
+| 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:1211`](../ui/dr-ui/src/lib.rs#L1211), [`ui/dr-ui/ui/app.slint:1435`](../ui/dr-ui/ui/app.slint#L1435), [`ui/dr-ui/ui/app.slint:73`](../ui/dr-ui/ui/app.slint#L73), [`ui/dr-ui/ui/settings.slint:144`](../ui/dr-ui/ui/settings.slint#L144), [`ui/dr-ui/ui/settings.slint:942`](../ui/dr-ui/ui/settings.slint#L942) |
| 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) |
| NFR-P13 | [`core/dr-decode/src/preview.rs:121`](../core/dr-decode/src/preview.rs#L121) |
-| NFR-P14 | [`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/shaders/focus_peak.wgsl:1`](../core/dr-gpu/src/shaders/focus_peak.wgsl#L1), [`ui/dr-ui/src/develop.rs:4229`](../ui/dr-ui/src/develop.rs#L4229), [`ui/dr-ui/src/lib.rs:2093`](../ui/dr-ui/src/lib.rs#L2093) |
+| NFR-P14 | [`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/shaders/focus_peak.wgsl:1`](../core/dr-gpu/src/shaders/focus_peak.wgsl#L1), [`ui/dr-ui/src/develop.rs:4229`](../ui/dr-ui/src/develop.rs#L4229), [`ui/dr-ui/src/lib.rs:2123`](../ui/dr-ui/src/lib.rs#L2123) |
| NFR-P3 | [`tools/bench/src/thumbnails.rs:1`](../tools/bench/src/thumbnails.rs#L1) |
| NFR-P5 | [`core/dr-catalog/src/schema.rs:408`](../core/dr-catalog/src/schema.rs#L408), [`ui/dr-ui/src/library.rs:5498`](../ui/dr-ui/src/library.rs#L5498), [`ui/dr-ui/src/library.rs:6611`](../ui/dr-ui/src/library.rs#L6611), [`ui/dr-ui/src/library_ui.rs:5031`](../ui/dr-ui/src/library_ui.rs#L5031), [`ui/dr-ui/src/library_ui.rs:64`](../ui/dr-ui/src/library_ui.rs#L64) |
-| NFR-P9 | [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/export.rs:998`](../ui/dr-ui/src/export.rs#L998), [`ui/dr-ui/src/library.rs:1`](../ui/dr-ui/src/library.rs#L1), [`ui/dr-ui/src/library_ui.rs:1`](../ui/dr-ui/src/library_ui.rs#L1), [`ui/dr-ui/src/trash.rs:1`](../ui/dr-ui/src/trash.rs#L1) |
+| NFR-P9 | [`ui/dr-ui/src/collections_ui.rs:1`](../ui/dr-ui/src/collections_ui.rs#L1), [`ui/dr-ui/src/export.rs:1005`](../ui/dr-ui/src/export.rs#L1005), [`ui/dr-ui/src/library.rs:1`](../ui/dr-ui/src/library.rs#L1), [`ui/dr-ui/src/library_ui.rs:1`](../ui/dr-ui/src/library_ui.rs#L1), [`ui/dr-ui/src/trash.rs:1`](../ui/dr-ui/src/trash.rs#L1) |
| NFR-PORT-1 | [`core/dr-catalog/src/walk.rs:1`](../core/dr-catalog/src/walk.rs#L1), [`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/dirs.rs:1`](../platform/dr-plat/src/dirs.rs#L1), [`platform/dr-plat/src/display.rs:1`](../platform/dr-plat/src/display.rs#L1), [`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:287`](../platform/dr-plat/src/storage.rs#L287), [`platform/dr-plat/src/storage.rs:344`](../platform/dr-plat/src/storage.rs#L344), [`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) |
| NFR-PORT-2 | [`core/dr-gpu/src/lib.rs:1`](../core/dr-gpu/src/lib.rs#L1) |
| NFR-PORT-3 | [`platform/dr-plat/src/storage.rs:1`](../platform/dr-plat/src/storage.rs#L1) |
@@ -173,7 +173,7 @@ _None._
| NFR-R6 | [`core/dr-catalog/src/error.rs:1`](../core/dr-catalog/src/error.rs#L1), [`core/dr-catalog/src/lib.rs:255`](../core/dr-catalog/src/lib.rs#L255), [`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) |
| NFR-R8 | [`core/dr-gpu/src/error.rs:1`](../core/dr-gpu/src/error.rs#L1) |
-| NFR-RES-1 | [`core/dr-gpu/src/adjust.rs:1057`](../core/dr-gpu/src/adjust.rs#L1057), [`core/dr-pipeline/src/history.rs:86`](../core/dr-pipeline/src/history.rs#L86), [`ui/dr-ui/src/develop.rs:4512`](../ui/dr-ui/src/develop.rs#L4512), [`ui/dr-ui/src/identity_ui.rs:125`](../ui/dr-ui/src/identity_ui.rs#L125), [`ui/dr-ui/src/lib.rs:95`](../ui/dr-ui/src/lib.rs#L95), [`ui/dr-ui/src/memory.rs:1`](../ui/dr-ui/src/memory.rs#L1) |
+| NFR-RES-1 | [`core/dr-gpu/src/adjust.rs:1057`](../core/dr-gpu/src/adjust.rs#L1057), [`core/dr-pipeline/src/history.rs:86`](../core/dr-pipeline/src/history.rs#L86), [`ui/dr-ui/src/develop.rs:4512`](../ui/dr-ui/src/develop.rs#L4512), [`ui/dr-ui/src/identity_ui.rs:125`](../ui/dr-ui/src/identity_ui.rs#L125), [`ui/dr-ui/src/lib.rs:96`](../ui/dr-ui/src/lib.rs#L96), [`ui/dr-ui/src/memory.rs:1`](../ui/dr-ui/src/memory.rs#L1) |
| NFR-RES-2 | [`ui/dr-ui/src/faces.rs:350`](../ui/dr-ui/src/faces.rs#L350), [`ui/dr-ui/src/library.rs:3531`](../ui/dr-ui/src/library.rs#L3531), [`ui/dr-ui/src/library.rs:4052`](../ui/dr-ui/src/library.rs#L4052), [`ui/dr-ui/src/library.rs:4303`](../ui/dr-ui/src/library.rs#L4303), [`ui/dr-ui/src/library.rs:6855`](../ui/dr-ui/src/library.rs#L6855) |
| NFR-RES-4 | [`core/dr-catalog/src/cache.rs:1`](../core/dr-catalog/src/cache.rs#L1), [`core/dr-catalog/src/face_shard.rs:1`](../core/dr-catalog/src/face_shard.rs#L1), [`core/dr-catalog/src/schema.rs:922`](../core/dr-catalog/src/schema.rs#L922), [`core/dr-gpu/src/lib.rs:95`](../core/dr-gpu/src/lib.rs#L95), [`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), [`core/dr-thumbs/src/lib.rs:376`](../core/dr-thumbs/src/lib.rs#L376), [`ui/dr-ui/src/library.rs:3796`](../ui/dr-ui/src/library.rs#L3796) |
| NFR-SEC-1 | [`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) |
diff --git a/ui/dr-ui/Cargo.toml b/ui/dr-ui/Cargo.toml
index 6f4a4a0..6cf1407 100644
--- a/ui/dr-ui/Cargo.toml
+++ b/ui/dr-ui/Cargo.toml
@@ -33,6 +33,9 @@ dr-xmp.workspace = true
dr-sync-folder.workspace = true
dr-sync-nextcloud.workspace = true
dr-export.workspace = true
+# The panorama's geometry and its keypoint detector (§3.11). The detector's
+# runtime is the same tract the faces and masks already carry.
+dr-pano = { workspace = true, features = ["xfeat", "embedded-model"] }
dr-ingest.workspace = true
dr-film.workspace = true
# The lens profile database, here for the same reason dr-film is: dr-pipeline
diff --git a/ui/dr-ui/examples/merge.rs b/ui/dr-ui/examples/merge.rs
new file mode 100644
index 0000000..47ac284
--- /dev/null
+++ b/ui/dr-ui/examples/merge.rs
@@ -0,0 +1,89 @@
+//! Merge a set of frames into a panorama DNG, headless.
+//!
+//! ```sh
+//! cargo run -p dr-ui --example merge --release -- fixtures/pano/2025-08-05/*.CR2
+//! cargo run -p dr-ui --example merge --release -- --out /var/tmp frame1.CR2 …
+//! ```
+//!
+//! The job the interface runs (`dr_ui::merge`), driven from a loop instead
+//! of a timer: the same code, the same events, a file at the end. What it
+//! proves that the alignment example cannot is the second half — the tap,
+//! the chunked warp, the resolve to sixteen bits and the DNG — and that the
+//! result opens in the application as one RAW.
+
+use std::path::PathBuf;
+use std::time::Instant;
+
+fn main() {
+ env_logger::init();
+ let mut args: Vec = std::env::args().skip(1).collect();
+ let mut out_dir = None;
+ if args.first().map(String::as_str) == Some("--out") {
+ args.remove(0);
+ out_dir = Some(PathBuf::from(args.remove(0)));
+ }
+ if args.len() < 2 {
+ eprintln!("usage: merge [--out DIR] ...");
+ std::process::exit(2);
+ }
+ let Ok(gpu) = pollster::block_on(dr_gpu::GpuContext::new_headless()) else {
+ eprintln!("no GPU");
+ std::process::exit(1);
+ };
+
+ let frames: Vec = args
+ .iter()
+ .map(|a| dr_ui::merge::MergeInput::read(std::path::Path::new(a)).expect("read"))
+ .collect();
+ let dir = out_dir.unwrap_or_else(|| {
+ PathBuf::from(&args[0])
+ .parent()
+ .map(std::path::Path::to_path_buf)
+ .unwrap_or_else(|| PathBuf::from("."))
+ });
+ let request = dr_ui::merge::MergeRequest::new(frames, dr_ui::merge::MergeDestination::Local(dir));
+ let (tx, rx) = std::sync::mpsc::channel();
+ let (decide, decision) = std::sync::mpsc::channel();
+ let cancel = dr_ui::merge::Cancel::default();
+ let t = Instant::now();
+ let worker = std::thread::spawn(move || dr_ui::merge::run(gpu, request, tx, decision, cancel));
+
+ let mut last_stage = "";
+ for event in rx {
+ use dr_ui::merge::MergeEvent::*;
+ match event {
+ Progress { stage, done, total } => {
+ if stage != last_stage {
+ println!("{stage}…");
+ last_stage = stage;
+ }
+ if done == total || done % 4 == 0 {
+ println!(" {done}/{total}");
+ }
+ }
+ Aligned(r) => {
+ println!(
+ "aligned: {:.1} mm equivalent, rms {:.2} px, {} links, {:?} {}×{}",
+ r.focal_mm, r.rms_px, r.links, r.projection, r.width, r.height
+ );
+ for (k, f) in r.frames.iter().enumerate() {
+ match f {
+ Ok((yaw, pitch)) => println!(" frame {k}: yaw {yaw:7.2}° pitch {pitch:6.2}°"),
+ Err(why) => println!(" frame {k}: NOT ALIGNED — {why}"),
+ }
+ }
+ // Headless: the confirmation the dialog would ask for.
+ let _ = decide.send(dr_ui::merge::Decision::Merge { projection: None });
+ }
+ Done { path, width, height, .. } => {
+ println!("wrote {} ({width}×{height}) in {:?}", path.display(), t.elapsed());
+ }
+ Failed(e) => {
+ eprintln!("failed: {e}");
+ std::process::exit(1);
+ }
+ Cancelled => println!("cancelled"),
+ }
+ }
+ let _ = worker.join();
+}
diff --git a/ui/dr-ui/src/develop.rs b/ui/dr-ui/src/develop.rs
index b0ca80c..1487933 100644
--- a/ui/dr-ui/src/develop.rs
+++ b/ui/dr-ui/src/develop.rs
@@ -4578,7 +4578,7 @@ impl DevelopSession {
/// lens's distortion and not its vignetting, or covers only part of a
/// zoom's range, and a partial profile is worth applying — discarding it
/// because one field is missing would turn a good correction into none.
- fn profile_for(meta: &dr_decode::Metadata) -> Option {
+ pub(crate) fn profile_for(meta: &dr_decode::Metadata) -> Option {
// All three are needed to ask the question at all. A lens name alone
// does not identify a correction: distortion is interpolated across a
// zoom's focal range and vignetting depends strongly on aperture — a
diff --git a/ui/dr-ui/src/export.rs b/ui/dr-ui/src/export.rs
index 0a78ced..37c27ae 100644
--- a/ui/dr-ui/src/export.rs
+++ b/ui/dr-ui/src/export.rs
@@ -230,13 +230,7 @@ fn stage(encoded: &Encoded, remote_dir: &str, outbox: &Path) -> Result Result PathBuf {
+ payload.with_extension(format!(
+ "{}.dest",
+ payload
+ .extension()
+ .map(|s| s.to_string_lossy().into_owned())
+ .unwrap_or_default()
+ ))
+}
+
/// Everything currently waiting in the outbox.
///
/// A payload with no record is skipped rather than guessed at — see the write
@@ -691,6 +698,12 @@ fn export_one(
/// `{date}` is the capture date, not today's: a template naming exports by
/// when the shutter fired is the reason the token exists. A file that recorded
/// no capture time gets an empty string, never a substitute.
+/// The date and the carried record for one file's header — for the batch,
+/// and for a merge writing its composite's header from its first source.
+pub(crate) fn header_for_file(meta: &dr_decode::Metadata) -> (String, dr_export::SourceMetadata) {
+ from_header(meta)
+}
+
fn from_header(meta: &dr_decode::Metadata) -> (String, dr_export::SourceMetadata) {
let date = meta
.captured_at
diff --git a/ui/dr-ui/src/lib.rs b/ui/dr-ui/src/lib.rs
index e5bb5e0..6891f76 100644
--- a/ui/dr-ui/src/lib.rs
+++ b/ui/dr-ui/src/lib.rs
@@ -46,6 +46,8 @@ mod library_ui;
mod live_style;
mod masks_ui;
pub mod memory;
+pub mod merge;
+mod merge_ui;
mod net_runtime;
mod peaking;
mod place;
@@ -1542,6 +1544,35 @@ pub fn run(paths: Vec) -> Result<()> {
// through (`dr_plat::imports_supported`).
window.set_import_supported(dr_plat::imports_supported());
+ // TRACES: FR-MRG-1
+ {
+ let merge = merge_ui::MergeController::new(activity.clone());
+ let library_for_sources = library.clone();
+ let collections_for_sources = collections.clone();
+ let library_for_context = library.clone();
+ let library_for_done = library.clone();
+ merge_ui::wire(
+ &window,
+ merge,
+ gpu.clone(),
+ move || library_for_sources.export_sources(&collections_for_sources.selected()),
+ move || {
+ let conn = library_for_context.session()?;
+ Some(merge_ui::Context {
+ outbox: export::outbox_dir(&conn.account),
+ conn,
+ })
+ },
+ move |w| {
+ // Staged beside its sources: upload it now rather than
+ // on the next sync pass, then look for it, exactly as an
+ // import does.
+ drain_outbox(&library_for_done);
+ w.invoke_library_rescan();
+ },
+ );
+ }
+
let import = import_ui::ImportController::new(settings.clone(), activity.clone());
let library_for_context = library.clone();
let weak = window.as_weak();
diff --git a/ui/dr-ui/src/merge.rs b/ui/dr-ui/src/merge.rs
new file mode 100644
index 0000000..92664ad
--- /dev/null
+++ b/ui/dr-ui/src/merge.rs
@@ -0,0 +1,735 @@
+//! TRACES: FR-MRG-1 | FR-MRG-2 | FR-MRG-3 | FR-MRG-5 | FR-MRG-7
+//! The merge job: from a set of files to a linear DNG beside them.
+//!
+//! The orchestration of a panorama, with no interface types in it: it runs
+//! on a thread of its own and reports through a channel, on the pattern
+//! [`crate::export`]'s batch established (FR-MRG-7). The interface drains
+//! the channel from a timer; a headless example drains it from a loop.
+//!
+//! # Stages
+//!
+//! 1. **Load.** Each file is read and decoded to sensor data, and its edit
+//! graph built the way a session would — orientation, lens profile —
+//! because those are the two things the camera-space tap uses
+//! (FR-MRG-2).
+//! 2. **Proxies.** Each frame is demosaiced and rendered through the tap
+//! at proxy size, upright; the keypoint detector reads that.
+//! 3. **Alignment.** `dr_pano::align`. A frame it could not place stops
+//! the job with the frame named (FR-MRG-5).
+//! 4. **Gain.** One scalar per frame from the proxies' overlaps, so the
+//! stop of exposure drift a hand-held sweep collects does not band.
+//! 5. **Merge.** `dr_gpu::MergePass`, chunk by chunk, into a DNG written
+//! strip by strip beside the first source (FR-MRG-3).
+//!
+//! The demosaiced frames are the memory: 160 MB each at f16 for a 20 MP
+//! body, so at most two are resident and the rest are demosaiced again
+//! when a band needs them. That is the trade FR-MRG-11 asks for — the
+//! sensor data stays on the CPU at a fifth of the size — and it is what
+//! makes a twelve-frame set fit.
+
+use std::collections::VecDeque;
+use std::path::{Path, PathBuf};
+use std::sync::mpsc::{Receiver, Sender};
+use std::sync::Arc;
+use std::time::Instant;
+
+use dr_decode::RawImage;
+use dr_gpu::{AdjustPass, DemosaicedImage, Demosaicer, GpuContext, MergeFrame, MergeOutput, MergePass};
+use dr_pano::bundle::Cameras;
+use dr_pano::projection::{self, Projection};
+use dr_pano::{Alignment, Gray};
+use dr_pipeline::EditGraph;
+
+pub use crate::export::Cancel;
+
+/// One frame as the job receives it: the file's bytes, already fetched,
+/// and a name for messages and for the composite's own name.
+#[derive(Debug, Clone)]
+pub struct MergeInput {
+ /// The file's name, `_MG_8320.CR2`.
+ pub name: String,
+ pub bytes: Arc>,
+}
+
+impl MergeInput {
+ pub fn read(path: &Path) -> Result {
+ Ok(MergeInput {
+ name: path
+ .file_name()
+ .map(|n| n.to_string_lossy().into_owned())
+ .unwrap_or_else(|| "frame".into()),
+ bytes: Arc::new(std::fs::read(path).map_err(|e| format!("{}: {e}", path.display()))?),
+ })
+ }
+}
+
+/// Where the composite goes (FR-MRG-3).
+#[derive(Debug, Clone)]
+pub enum MergeDestination {
+ /// A folder on this device: written there directly.
+ Local(PathBuf),
+ /// Beside its sources in the library, through the export outbox: the
+ /// file is staged with a destination record and the drain uploads it —
+ /// the one path that works for a folder library and a server alike, and
+ /// the one FR-MRG-3 names for a folder the job cannot write itself.
+ Outbox {
+ outbox: PathBuf,
+ /// The sources' folder, relative to the library root.
+ remote_dir: String,
+ },
+}
+
+/// What the job is told.
+#[derive(Debug, Clone)]
+pub struct MergeRequest {
+ /// The frames, in capture order.
+ pub frames: Vec,
+ pub destination: MergeDestination,
+ /// `None` for the projection the field of view suggests.
+ pub projection: Option,
+ /// Pixels over which a frame's weight ramps up from its edge.
+ pub feather_px: f32,
+ /// GPU work unit; also the DNG strip height.
+ pub chunk: (u32, u32),
+}
+
+impl MergeRequest {
+ pub fn new(frames: Vec, destination: MergeDestination) -> Self {
+ MergeRequest {
+ frames,
+ destination,
+ projection: None,
+ feather_px: 200.0,
+ chunk: (2048, 512),
+ }
+ }
+}
+
+/// What the photographer decides once the alignment is shown (FR-MRG-1:
+/// never automatic).
+#[derive(Debug, Clone, Copy, PartialEq)]
+pub enum Decision {
+ Merge { projection: Option },
+ Abandon,
+}
+
+/// What the job says while it runs.
+#[derive(Debug, Clone)]
+pub enum MergeEvent {
+ /// A stage, with progress within it.
+ Progress {
+ stage: &'static str,
+ done: usize,
+ total: usize,
+ },
+ /// The alignment, before any pixel is written: what the interface shows
+ /// for the photographer to confirm, and what names a failure.
+ Aligned(AlignmentReport),
+ /// The composite is written: on the device at `path`, or staged in the
+ /// outbox for the drain to upload, in which case `staged` is true and
+ /// the library learns of it when the folder is next scanned.
+ Done {
+ path: PathBuf,
+ staged: bool,
+ width: u32,
+ height: u32,
+ },
+ Failed(String),
+ Cancelled,
+}
+
+/// The alignment, described for a panel.
+#[derive(Debug, Clone)]
+pub struct AlignmentReport {
+ /// Equivalent focal length in millimetres on full frame, from the fit.
+ pub focal_mm: f64,
+ pub rms_px: f64,
+ pub projection: Projection,
+ pub width: u32,
+ pub height: u32,
+ /// Per frame, in input order: yaw and pitch in degrees if aligned, or
+ /// why not.
+ pub frames: Vec>,
+ pub links: usize,
+ /// The aligned set drawn on the suggested surface at proxy resolution,
+ /// `(width, height, rgba)` — what the photographer confirms.
+ pub preview: Option<(u32, u32, Vec)>,
+}
+
+/// Run the whole job on the calling thread, reporting on `events`.
+///
+/// After `Aligned` the job waits on `decision` — the photographer's
+/// confirmation, or the headless caller's immediate `Merge` — and returns
+/// when the file is written, the job failed, or `cancel` was seen.
+pub fn run(
+ ctx: GpuContext,
+ request: MergeRequest,
+ events: Sender,
+ decision: Receiver,
+ cancel: Cancel,
+) {
+ let send = |e: MergeEvent| {
+ let _ = events.send(e);
+ };
+ match run_inner(&ctx, &request, &events, &decision, &cancel) {
+ Ok(Some(done)) => send(done),
+ Ok(None) => send(MergeEvent::Cancelled),
+ Err(e) => send(MergeEvent::Failed(e)),
+ }
+}
+
+/// The frames as loaded: sensor data on the CPU and the graph the tap uses.
+struct Loaded {
+ raw: RawImage,
+ meta: dr_decode::Metadata,
+ graph: Arc,
+ /// The upright size, which is what the cameras are in.
+ size: (u32, u32),
+}
+
+fn run_inner(
+ ctx: &GpuContext,
+ request: &MergeRequest,
+ events: &Sender,
+ decision: &Receiver,
+ cancel: &Cancel,
+) -> Result