name: hd-recording-mac description: > macOS platform companion to hd-recording — the Apple-specific half of recording screen + window video from Hydrogen Desktop. The recorder ladder, codec choice, the max-duration cap, audio-only narration, and the "● Recording" indicator live in hd-recording (adom/hd-bootstrap); THIS skill carries only what's true on macOS: HD's native recorder is NOT available here (it's #![cfg(windows)]), so recording goes through the in-app getDisplayMedia recorder, pup per-tab, or the AD desktop relay — and the Screen Recording TCC grant gates the desktop paths. Mirror of hd-recording-windows (the native WGC/DXGI recorder). Trigger words — record macos, screen recording mac, record kicad mac, native recording windows-only, screencapturekit, avfoundation, getdisplaymedia mac, screen recording permission, tcc grant recording, desktop_record_start macos.

hd-recording (macOS) — no native recorder; use getDisplayMedia / pup / AD

This is the macOS half of hd-recording. The recorder priority ladder, codec tradeoffs (h264 vs h265), the maxSeconds cap + reason, audio-only narration (adom-cli hydrogen audio), and the "● Recording" badge are cross-platform and live in the generic hd-recording skill — read that first. This skill only documents what's Apple-specific.

⭐ There is no native macOS recorder (be honest about this)

HD's native recorder — crates/hd-control/src/recorder.rs — is #![cfg(windows)]. On macOS it is not compiled in:

  • POST /recording/native/start returns {ok:false, error:"native recording is Windows-only"}, and GET /recording/native/sources has nothing to enumerate.
  • adom-cli hydrogen recording start --share … routes to that endpoint, so it fails on macOS — it does not produce a file.
  • Per-window recording ("record kicad" scoped to one window) does not exist on macOS — that capability is HD-native-only, hence Windows-only.

A ScreenCaptureKit / AVFoundation native recorder is the obvious macOS analog of the Windows WGC/DXGI path, but it is not yet built. Do not claim HD has a ScreenCaptureKit recorder.

The macOS recording paths (what actually works here)

Per the source ladder, on macOS skip the native rungs and use:

  1. In-app getDisplayMedia recorder — the Recording dropdown in the editor toolbar (EditorNav.svelte + recordingStore.ts/audioCaptureStore.ts). Records the HD workspace (and/or mic) → a single .webm uploaded to the workspace recordings/. This is the in-HD path. It DOES assert a display wake-lock while running (see [hd-screen-lock-mac]) — release it by stopping the recording.
  2. pup per-tab — adom-desktop browser_record_start {sessionId} — a clean CDP screencast of one Chrome tab, no wake-lock, coexists with everything.
  3. AD host desktop — adom-desktop desktop_record_start {confirmDesktopNotTabRecording:true} — the whole-desktop fallback on macOS. Whole-desktop ONLY (no per-window), Chrome getDisplayMedia → holds the wake-lock, writes a .webm into AD's bridges-cache (NOT ~/project/recordings/). Verify the cap first: adom-desktop status must list the record capability.

macOS gotcha — the Screen Recording TCC grant

The desktop-scoped paths (AD desktop_record_start, and any getDisplayMedia capture of the screen) are gated by macOS TCC: System Settings → Privacy & Security → Screen Recording must allow the recording app. Without that grant the capture is black / empty even though the call "succeeds." If a desktop recording comes back blank, check the Screen Recording grant first.

NOT here (lives in the Windows companion)

The native WGC/DXGI recorder — Windows.Graphics.Capture per-window + DXGI Desktop Duplication full-screen → Media Foundation hardware H.264/H.265 → mp4 in ~/project/recordings/, the /recording/native/* endpoints, adom-cli hydrogen recording start --share, and per-window {source:"window:X"} scoping (no picker, no "you're sharing" banner, no wake-lock) — are all Windows-only; see hd-recording-windows. None of that machinery exists on macOS.