Hydrogen Desktop (macOS / Lima)
Public Made by Adomby adom
The macOS platform layer for Hydrogen Desktop.
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/startreturns{ok:false, error:"native recording is Windows-only"}, andGET /recording/native/sourceshas 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:
- In-app
getDisplayMediarecorder — the Recording dropdown in the editor toolbar (EditorNav.svelte+recordingStore.ts/audioCaptureStore.ts). Records the HD workspace (and/or mic) → a single.webmuploaded to the workspacerecordings/. 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. - pup per-tab —
adom-desktop browser_record_start {sessionId}— a clean CDP screencast of one Chrome tab, no wake-lock, coexists with everything. - AD host desktop —
adom-desktop desktop_record_start {confirmDesktopNotTabRecording:true}— the whole-desktop fallback on macOS. Whole-desktop ONLY (no per-window), ChromegetDisplayMedia→ holds the wake-lock, writes a.webminto AD's bridges-cache (NOT~/project/recordings/). Verify the cap first:adom-desktop statusmust list therecordcapability.
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.
---
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.