DamilolaDami / DamilolaDami/EditOS
Built-in screen + camera recording
Nobody has claimed this yet.
- Dominant language
- Swift
- Stars
- 2
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## Why this matters
The QuickActions row on Home already has a stub **Record Screen** button. Plugging in macOS's `ScreenCaptureKit` + `AVCaptureSession` for the camera turns EditOS into a *complete* tutorial / vlog rig — record screen + webcam → land directly on the timeline as two synced clips, no third-party app dance.
## Scope
### V1 deliverables
- New `Core/Services/Recorder.swift` actor wrapping `ScreenCaptureKit` (`SCStream`) for screen and `AVCaptureSession` for the camera + mic.
- A recording overlay window: small floating panel with a record button, screen-picker (full / window / app / region), camera enabled toggle, mic enabled toggle, plus a timer.
- On stop, both files (`screen.mov` + `cam.mov`) get auto-imported as media assets and dropped on the timeline at the playhead — screen on the main video track, camera as a PIP on an overlay track if PIP (#15) is wired up, otherwise as a sibling clip.
- Hotkey: ⌘⇧R toggles the recorder.
### Edge cases
- macOS prompts for Screen Recording permission on first use. Surface the permission denial cleanly with a "Open System Settings → Privacy → Screen Recording" deep link.
- Selected window disappears mid-recording → stream errors gracefully and saves what's been captured so far.
### Acceptance criteria
- Click Record Screen → pick "Full screen + camera" → record 20s → stop → both clips appear on the timeline, time-aligned.
- Camera-only or screen-only modes work without the other source.
- Recording at 1080p60 sustains for >60s without dropped frames on M-series.
## Pointers
- Apple sample: [Capturing screen content with ScreenCaptureKit](https://developer.apple.com/documentation/screencapturekit/capturing-screen-content-in-macos).
- `EditOS/Core/Services/MediaImporter.swift` — auto-import path the recorder hands files to.
- `EditOS/Features/Home/HomeView.swift` `QuickActionsRow` — wire the existing button.
## Difficulty
🟠 Medium-Advanced — `ScreenCaptureKit` is reasonably high-level; the floating-panel UI is the bigger piece. Massive workflow improvement.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read the ScreenCaptureKit sample first, then inspect EditOS/Core/Services/MediaImporter.swift and EditOS/Features/Home/HomeView.swift, especially QuickActionsRow. Establish how the new Recorder.swift service can hand off screen.mov and cam.mov and how the existing timeline and PIP paths represent imported clips. Done means the listed recording modes, permissions and failure cases work, with both outputs time-aligned on the timeline and sustained 1080p60 recording.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- swift
- Domain
- audio-video-rtc, desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100