fix(export): current-file export dropped RGB-scan triplet / stitch config - #813
Merged
marcinz606 merged 6 commits intoAug 12, 2026
Conversation
request_linear_output_export and request_preset_export built a bare
{path, name, hash} dict for the current file instead of its uploaded_files
entry, so resolve_asset_rgbscan/resolve_asset_stitch found no green_path/
blue_path (or stitch fields) and silently reset the triplet/composite —
exporting only the primary narrowband exposure instead of the merged RGB.
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.
What
request_linear_output_export()andrequest_preset_export()each built abare
{path, name, hash}dict for the current file instead of reusing itsentry from
uploaded_files. That stripped-down dict then went throughresolve_asset_rgbscan()/resolve_asset_stitch(), which resetrgbscan(and
stitch) to disabled whenever the asset dict had nogreen_path/blue_path(or stitch fields) — even though the live session config alreadyhad them set correctly.
Net effect: exporting the current file only (not batch/selected/all) via
Linear Output or Export Presets on an RGB-scan triplet (or a stitched
composite with embedded triplets) silently exported just the primary
narrowband exposure instead of the merged RGB. Preview rendering was never
affected — it hydrates
state.configthrough the same resolver but alwaysfrom the real asset dict (
select_file()), so this only hit the two exportcall sites that rebuilt their own dict.
Both call sites now look up the file in
uploaded_filesby hash first,falling back to the minimal dict only if it's genuinely not there —
matching the pattern
request_export()already used.Why current-file only
request_batch_export,request_export_selected, and the presetbatch/selected variants all pull directly from
uploaded_files, so theywere unaffected. Only the two single-current-file paths constructed their
own dict.
Testing
TestLinearOutputExportCurrentFileandTestPresetExportCurrentFileTripletintests/test_controller.py— bothreproduce the bug against the old code (assert fails) and pass against the
fix.
AppController(realDesktopSessionManager/StorageRepository,rawpy.imreadfaked to avoidneeding real camera-raw bytes): selected a triplet asset, called
request_linear_output_export()with no args (the buggy path), andconfirmed the exported TIFF has all three channels correctly sourced from
their respective exposures instead of collapsing to the primary file.
make all: lint and type-check clean; full suite passes except onepre-existing, unrelated failure in
test_overflow_bar.py(reproducesidentically on
main, not touched by this change).