Skip to content

Conversation

@FirasLatrech
Copy link

@FirasLatrech FirasLatrech commented Dec 25, 2025

Summary

This PR adds camera overlay and audio recording capabilities to OpenScreen, similar to Loom's camera bubble feature.

Features Added

🎥 Camera Bubble Overlay

  • Floating circular camera preview that appears on the selected screen/window
  • Draggable to any position on screen
  • Close button appears on hover
  • Smooth entrance/exit animations
  • Camera only activates when explicitly selected (not on app launch)

🎤 Microphone Selection

  • Clean dropdown UI in the toolbar
  • Custom styled scrollbar
  • Fixed positioning to prevent UI clipping
  • Dynamic device enumeration

📁 Quick Access to Recordings

  • Folder icon in toolbar opens the recordings directory in Finder

🎨 UI Improvements

  • Toolbar-based source selection with Display/Window tabs
  • Enhanced dropdown styling with backdrop blur
  • Removed unnecessary shadows for a cleaner look
  • Fixed z-index issues with dropdowns

Technical Changes

  • Proper cleanup of media streams when switching sources
  • Camera stream closes automatically when recording stops
  • Optimized device enumeration (audio-only permission request to avoid activating camera on launch)

Screenshots

image image

…ecording

- Add floating camera bubble that appears on the selected screen/window
  - Draggable circular camera preview
  - Close button on hover
  - Smooth entrance/exit animations

- Add microphone selection in toolbar
  - Clean dropdown UI with custom scrollbar
  - Fixed positioning to prevent clipping
  - Dynamic device enumeration

- Add camera selection in toolbar
  - Camera only activates when selected (not on app launch)
  - Auto-closes when recording stops or screen changes

- Add recordings folder quick access
  - Folder icon in toolbar opens recordings directory

- UI improvements
  - Toolbar-based source selection (Display/Window tabs)
  - Enhanced dropdown styling with backdrop blur
  - Removed unnecessary shadows for cleaner look

- Code cleanup
  - Proper cleanup of media streams
  - Fixed z-index issues with dropdowns
- Replaced custom logging functions with standard console logging for clarity.
- Removed unused functions `oo_cm` and `oo_oo` to clean up the codebase.
- Ensured the recordings directory creation logs relevant paths without additional complexity.
@amansharma007
Copy link

Please someone merge this?? 😅
Have been waiting for this feature for sometime now.

@siddharthvaddem
Copy link
Owner

siddharthvaddem commented Jan 10, 2026

@FirasLatrech Haven't taken a detailed look yet, but was wondering if you are handling audio-related issues that come with Electron when dealing with cross platform OS?

https://www.electronjs.org/docs/latest/api/desktop-capturer#caveats

We want this working on Windows, MacOS (Intel & Silicon) & Linux.

Edit: Okay I realized you disabled system audio and only care about capturing microphone input

@siddharthvaddem
Copy link
Owner

siddharthvaddem commented Jan 10, 2026

I really like what you have worked on and really appreciate you working on this.

Some issues and nits during my testing:

  • Export pipeline does not encapsulate audio in the output. Only seems to show up in preview. You can take a look at lib/exporter
  • Only seems to work for screen and not window. So some sort of dynamic handling for selectable settings depending on screen/window source selected would be ideal.
  • Audio capture also does not work at times for some reason, unsure if this is a local issue on my end, but it seems non deterministic at times. Are we cleaning up the audio streams accurately and handling it? For instance, I made a recording the first time and it seemed to have worked and shows in preview (still doesn't reflect in exported video), but when I tried recording again, audio capture isn't reflected in the preview as well.
    Edit: I have checked the source recording files and have noticed they don't have the audio at all. So something needs to be better handled with audio stream capture, cleanup and handling. You can refer to the way the video streams are captured if needed or use AI to help diagnose the problem.
  • We want to be able to minimize the HUD (when recording full screen so that it does not show up in recording)
  • The folder icon in the HUD is meant to load the editor with a previously recorded video so that users can edit later. The behaviour is not the same anymore.
  • I would like people with Windows and Linux to vet the features do work as intended as well.

- Implement GIF export feature with adjustable frame rates and size presets.
- Introduce new components for GIF options, format selection, and tutorial help.
- Update video editor to support GIF format alongside MP4.
- Enhance export dialog to reflect selected format and provide relevant options.
- Add tests for GIF exporter and validation of frame rates.
- Refactor existing code to accommodate new export settings and improve maintainability.
@FirasLatrech
Copy link
Author

I’ll try to solve them. Please take a look, @siddharthvaddem.

@willy-scr
Copy link

willy-scr commented Jan 18, 2026

plz merge this PR🙏 @siddharthvaddem

@dhruvxbug
Copy link

@willy-scr Eager for this update as well. I see there are multiple issues logged by the repo owner, I'll try to assist with one if possible

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.

7 participants