Skip to content

feat: add cursor overlay pipeline (depends on #207)#217

Draft
EtienneLescot wants to merge 3 commits intosiddharthvaddem:mainfrom
EtienneLescot:feat/cursor-pipeline
Draft

feat: add cursor overlay pipeline (depends on #207)#217
EtienneLescot wants to merge 3 commits intosiddharthvaddem:mainfrom
EtienneLescot:feat/cursor-pipeline

Conversation

@EtienneLescot
Copy link
Contributor

@EtienneLescot EtienneLescot commented Mar 15, 2026

Description

This follow-up depends on #207.

GitHub cannot target feat/recordly-cursor-pipeline as the PR base here because that branch exists only on my fork, so this PR still points at main. In practice, the intended review order is:

  1. feat: rework zoom transitions and motion blur #207
  2. this PR

Included in this PR

Cursor overlay rendering

  • adds a Pixi-based cursor overlay rendered above the video preview
  • supports cursor smoothing, directional cursor motion blur, and click bounce
  • uses bundled fallback cursor SVG assets so the renderer still works without platform-native cursor assets

Cursor editor controls

  • adds cursor settings in the editor for:
    • show / hide cursor
    • cursor size
    • smoothing
    • cursor motion blur
    • click bounce
  • only shows the cursor controls when cursor telemetry data exists for the loaded recording

Cursor project data

  • persists cursor display settings with the project so the cursor presentation can be restored when reopening an edit

Main files

  • src/components/video-editor/SettingsPanel.tsx
  • src/components/video-editor/VideoEditor.tsx
  • src/components/video-editor/VideoPlayback.tsx
  • src/components/video-editor/videoPlayback/cursorRenderer.ts
  • src/components/video-editor/videoPlayback/motionSmoothing.ts
  • src/components/video-editor/videoPlayback/uploadedCursorAssets.ts

Notes

  • this PR no longer includes the Windows fixes from the original preserved branch
  • this PR no longer reintroduces the extra zoom/background blur sliders
  • validation run: ./node_modules/.bin/tsc --noEmit and npm exec vite build

@EtienneLescot EtienneLescot changed the title feat: add cursor overlay pipeline feat: add cursor overlay pipeline (depends on #207) Mar 15, 2026
@siddharthvaddem
Copy link
Owner

siddharthvaddem commented Mar 17, 2026

Just wanted to thank you for working on this and helping contribute to the project 🙏

I know this is a draft, but wanted to reiterate that I was never against Native Capture. We can have the cursor related settings hidden for Linux and Windows. If that helps. Let me know if there's any further clarification needed. Sorry if this feels like going back and forth

Had a couple of folks on X reach out and say they really wanted this for macOS.

No rush on this at all. Don't feel obliged.

This is a pretty large change which would require a lot of testing to avoid bugs. This is what usually helps me (might have missed something):

Capture + Launch

  • pre commit check
  • Source selector opens and lists screens/windows with thumbnails
  • Selecting a source works for full screen and app window
  • Record start/stop works from launch window
  • Tray “Stop Recording” works while recording
  • Opening existing video file works from launch window
  • Opening existing project works from launch window

Audio

  • Mic toggle on/off works before recording
  • Mic device selection works
  • System audio (toggle these across 2 recordings to see if both paths work
  • Mic-only recording works
  • System-audio-only recording works
  • Mic + system audio mix works and levels are balanced

Editor Load + Playback

  • Playback, pause, seek works.
  • Cursor telemetry overlays correctly

Timeline

  • Add/edit/remove different elements (zoom/ annotation/ trim/ speed), see how they are in playback and if they are 1:1 with exported video
  • Region drag/resize snaps and persists correctly
  • No overlap/ordering bugs on timeline items (apart from annotations)

Project Persistence

  • save/ load works

Other

  • Tweaking sliders/ wallpapers/ other effects.

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