Repository navigation
fix(optics): keep camera settings off film scanner frames - #1610
Merged
Merged
Conversation
A new frame took the last chosen flat field profile and the carried distortion from any source, so a camera rig's corrections applied to a film scanner roll. The Optics card showed only while a correction was on, so clicking the bulb changed the picture and hid the card. A new frame now drops the carried Optics when Scanning Setup says Film Scanner or the file is not a camera RAW. Values that the frame's roll holds still apply. A film scanner frame leaves the carried values alone when it saves, so the next camera frame keeps them. The card stays in view after a correction turns off, until another frame opens. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Recovery has no effect on a file that is not a camera RAW, but a carried value kept the Raw Decode card in view on a film scanner frame, where a Slide TIFF could not change it. A new film scanner frame now drops the carried Recovery, and saving that frame leaves the carried value for the next camera slide. The card stays in view after Recovery turns off, until another frame opens. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review of the first two commits found gaps: - A saved film scanner frame took the last chosen profile on reopen, and a legacy profile's distortion with it. - A profile picked or cleared on a film scanner frame replaced the profile that new camera frames take. - A frame locked against its roll on Optics lost the card, so it could not rejoin the roll. - Every persisted edit parsed the stored sticky config. _apply_sticky_settings now takes the frame's path and skips the camera settings there, which replaces the strip after the carry. The fields sit in one constant, _CAMERA_ONLY_FIELDS. The file check runs only when a camera setting would carry. Deleting the last chosen profile and Shoot Flat Field still set it from any frame. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A user reported: "flatfield correction for camera scanning is getting applied if you select film scanner; clicking the bulb changes the picture and hides the menu".
Every new frame took the last chosen flat field profile and the carried distortion, from any source. A film scanner roll therefore picked up the camera rig's corrections. The Optics card showed only while a correction was on, so some frames showed the card and others did not, and the bulb hid the card it sits on.
_CAMERA_ONLY_FIELDS)._apply_sticky_settingstakes the frame's path and skips them, the last chosen profile included. A frame counts as a film scanner frame when Scanning Setup says Film Scanner, or the file is not a camera RAW.rolls.pycomment and the four guide panels updated. No UI strings changed.Open questions
Test plan
uv run pytest tests --ignore=tests/test_key_hold.py(10554 passed),make lint,make type,make translations-checkpasstests/test_key_hold.pypasses alone.make testsegfaults there under--cov, on cleanmainas well, in a HUD timer lambdatest_desktop_session.py,test_scan_setup.pyandtest_controller.pyThis PR does not touch Rust.
🤖 Generated with Claude Code