Skip to content

Conversation

@sayagodev
Copy link

✨ Pull Request

ℹ️ About the PR

This PR introduces a comprehensive design overlay feature that allows users to overlay design images on device previews for visual comparison. The implementation includes:

Core Features:

  • Design Overlay Redux Slice: Complete state management with persistence to Electron store
  • DesignOverlay Component: Renders overlay images with configurable opacity and two positioning modes:
    • Overlay mode: Semi-transparent overlay directly on the device preview
    • Side-by-side mode: Full opacity comparison view with guide grid support
  • DesignOverlayControls Component: Modal interface for managing overlays with:
    • Image upload functionality
    • Opacity slider (0-100%)
    • Position selector (overlay/side-by-side)
    • Enable/disable toggle
    • Save and remove actions
  • FileUploader Enhancement: Added file name display for better UX

🖼️ Testing Scenarios / Screenshots

Testing Performed:

  1. Redux Slice Tests: Verified state management, persistence, and selectors
  2. DesignOverlay Component Tests:
    • Rendering conditions (disabled state, empty image)
    • Opacity application in overlay and side modes
    • GuideGrid integration in side mode
  3. DesignOverlayControls Component Tests:
    • File upload functionality
    • Opacity slider interaction
    • Save/remove actions
    • State persistence

Manual Testing Scenarios:

  • Upload design image and verify overlay appears
  • Adjust opacity slider and verify real-time updates
  • Switch between overlay and side-by-side modes
  • Enable/disable overlay toggle
  • Remove overlay and verify cleanup
  • Verify persistence across app restarts
  • Test scroll synchronization in overlay mode

Screenshots:

  • Overlay mode with adjustable opacity
image
  • Side-by-side comparison mode
screenshot_13012026_073940
  • Design overlay controls modal
screenshot_13012026_074003

- Create design-overlay slice with setDesignOverlay and removeDesignOverlay actions
- Add designOverlays schema to electron store for persistence
- Integrate designOverlay reducer into main Redux store
- Load persisted overlays on app initialization
- Add scrollX and scrollY to pass-scroll-data IPC messages
- Update Coordinates interface to include scrollX and scrollY
- Update Device component to handle new scroll coordinates
- Introduce DesignOverlayControls component for managing design overlays
- Implement state management for overlay settings including image upload, opacity, and position
- Add DesignOverlay component to render the overlay based on user settings
- Integrate new controls into the Toolbar for user interaction
- Rearrange imports for better organization in Device component
- Update resolution handling to use a consistent format
- Enhance design overlay rendering logic based on state
- Fix scroll data handling to correctly reference scroll coordinates
- Add optional fileName property to DesignOverlayState for future use
…lity

- Add optional showFileName and initialFileName props to FileUploader
- Implement state management for displaying the selected file name
- Update file input handling to reset value based on showFileName prop
- Refactor component structure to conditionally render file name and upload button
- Implement tests for setDesignOverlay and removeDesignOverlay actions
- Validate state updates and persistence to electron store
- Add selectors to retrieve overlay state and enabled status
- Ensure coverage for various scenarios including existing and non-existent overlays
@CLAassistant
Copy link

CLAassistant commented Jan 13, 2026

CLA assistant check
All committers have signed the CLA.

- Bump ResponsivelyApp version to 1.17.1 in package-lock.json and yarn.lock
- Adjust scroll position calculations in DesignOverlay to account for zoom factor
@sayagodev
Copy link
Author

Core Features: +1

  • Interactive Divider Slider: Draggable vertical divider in overlay mode for real-time comparison. Click and drag to reveal/hide portions of the design overlay.
divider.mp4

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