Skip to content

fix(presets): support multi-preset toggle and add active border indicator - #1792

Open
fabian-co wants to merge 17 commits into
CyberTimon:mainfrom
fabian-co:main
Open

fabian-co wants to merge 17 commits into
CyberTimon:mainfrom
fabian-co:main

Conversation

@fabian-co

Copy link
Copy Markdown
Contributor

Description

Fixes a bug where applying multiple presets or clicking the same preset multiple times caused effects to accumulate/stack unintentionally instead of toggling. Also adds an active border indicator to visually communicate which presets are currently applied.

Type of Change

- [x] Bug fix                                                                                                                                                                    
- [ ] New feature                                                                                                                                                                
- [ ] Breaking change                                                                                                                                                            
- [ ] Performance improvement                                                                                                                                                    
- [ ] Code refactoring                                                                                                                                                           
- [ ] Documentation update                                                                                                                                                       
- [x] UI/UX improvement                                                                                                                                                          
- [ ] Build/CI or Dependency update                                                                                                                                              
                                                                                                                                                                                 
## Changes Made                                                                                                                                                                  
                                                                                                                                                                                 
- **Preset active border:** Added `border-2 border-accent` indicator to `PresetItemDisplay` when a preset is applied (with `border-transparent` when inactive to avoid layout    

jitter).
- Multi-preset stack & Toggle deactivation: Moved active presets and base adjustments tracking to useEditorStore (activePresets: ActivePresetState[] and
presetBaseAdjustments). Clicking an already active preset deactivates it and cleanly recalculates the remaining preset stack without accumulating adjustments. If all presets
are toggled off, adjustments revert cleanly to the base.
- Independent intensity: Each active preset retains its own amount/intensity slider without interfering with other active presets.
- Safe cleanup: Active presets are properly updated or cleared on item deletion, overwrite, re-configuration, or image path change.

## Screenshots/Videos                                                                                                                                                            
                                                                                                                                                                                 
<!-- Optional: Attach a screenshot or short screen recording of selecting and toggling presets in the panel -->                                                                  
                                                                                                                                                                                 
## Testing                                                                                                                                                                       
                                                                                                                                                                                 
- [x] These changes were tested locally by a human and confirmed to work.                                                                                                        
- [x] I haven't added any automated tests to the code because the codebase currently lacks a test suite.                                                                         
                                                                                                                                                                                 
**Test Configuration:**                                                                                                                                                          
                                                                                                                                                                                 
- **OS:** Windows 11 / Windows 10                                                                                                                                                
- **Hardware:** PC (x86_64)                                                                                                                                                      
                                                                                                                                                                                 
## Checklist                                                                                                                                                                     
                                                                                                                                                                                 
- [x] My code follows the project's code style                                                                                                                                   
- [x] I haven't added unnecessary AI-generated code comments                                                                                                                     
- [x] My changes generate no new warnings or errors                                                                                                                              
                                                                                                                                                                                 
## Additional Notes                                                                                                                                                              
                                                                                                                                                                                 
- All changes were formatted with Prettier according to the project's configuration (`npx prettier --check` passes).                                                             
- Verified production build with `npm run build`.                                                                                                                                
                                                                                                                                                                                 
## AI Disclaimer:                                                                                                                                                                
                                                                                                                                                                                 
Please state the involvement of AI in this PR:                                                                                                                                   
                                                                                                                                                                                 
- [ ] This PR is created by an AI agent                                                                                                                                          
- [x] This PR is mostly AI-generated but edited/merged together by a human                                                                                                       
- [ ] This PR was handwritten with AI assistance (spell check, logic suggestions, error resolving)                                                                               
- [ ] This PR contains only blood, sweat, and coffee (AI-free)    
2026-09-2617-03-36-ezgif com-video-to-gif-converter

fabian-co and others added 9 commits October 5, 2026 14:55
Forks do not inherit the Android keystore secrets, so the signed
Android build failed while packaging. Check for the secret up front
and skip the Android job when it is not configured.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYqfBvMAvFg1qk32nWoW1Y
Brings in 106 upstream commits (v1.6.5). Upstream now ships its own
relight effect, so the fork's relight implementation (RelightPanel,
RelightHandle, relightUtils and its backend) is dropped here in favour
of upstream's. Fork preset and CI changes are kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012Epj9seeW99389RDEFusTY
@mmadesignerunknown

Copy link
Copy Markdown
Contributor

Bump! :)

fabian-co and others added 5 commits October 7, 2026 14:36
Run the NIND denoise model on the GPU through DirectML on Windows x64,
falling back to the CPU when the GPU session cannot be created or fails
its self-check. The model's final negative-pad crop is replaced with an
equivalent Slice at load time because DirectML returns zeros for it.

Denoised RAW files are now saved as a linear DNG in camera space with
the original white balance, color matrices and EXIF, so the editor opens
the result as a RAW with its full dynamic range instead of a baked TIFF.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JDN3t3qVMHMPyx7kWpwfQU
Blend the generated denoise layer with the original image so the effect
can be dialed back without regenerating it: separate luminance and color
amounts plus an edge-weighted detail recovery. The blend is applied to
the loaded base image and to exports.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JDN3t3qVMHMPyx7kWpwfQU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants