CedarCopilot wants to merge 1 commit into staging from fix/skip-agent-runs-for-warmup-traffic
Live on prod, no production signal yet
OTEL fallback found no prod spans matching apps/desktop build (electron.vite.config.ts) since deploy.
OTEL fallback found no prod spans matching recallService.startRecording/stopRecording/pauseRecording/resumeRecording since deploy.
OTEL fallback found no prod spans matching electron-builder CEDAR_RECORDING=1 mac packaging since deploy.
OTEL fallback found no prod spans matching electron-builder files packaging since deploy.
OTEL fallback found no prod spans matching Electron app.whenReady calendarService.init since deploy.
Verification reached its budget before a verdict.
Libra has verdicts on 0 of 11 tracked behaviors on prod; 11 are still being checked. Libra checks hourly for 3 days after each deploy.
The Mac app is meant to be the web app in a native shell. Meeting recording , the detection popup, the in-call UI, calendar auto-join, and the ⌘⇧A/S/D flag shortcuts , is now inert unless CEDAR_RECORDING=1 at build time. Nothing is deleted; the flag turns all of it back on.
The desktop app itself was never broken , it builds and runs today. The release pipeline is what's been failing since April (last published build is v0.1.27, 2026-04-01, while package.json had drifted to 0.1.32).
Two causes, both traceable to @recallai/desktop-sdk:
HTTP 401 Invalid credentials , the APPLE_APP_SPECIFIC_PASSWORD secret is expired. Not fixed by this PR; it needs rotating at appleid.apple.com by whichever Apple ID sits in APPLE_ID (must be a member of team 2QR5XNJVRF).sign-gstreamer.cjs failed to sign all 102 GStreamer dylibs (no identity found) because its identity lookup misses CI's temp keychain. Even with valid credentials, notarization would likely reject those unsigned nested binaries.The SDK bundles a ~335MB GStreamer.framework , the thing afterPack has to hand-sign, and the reason mergeASARs had to be disabled. With the flag clear it's excluded from the bundle entirely, so the standard signing path handles the whole app and both workarounds drop out.
__RECORDING_ENABLED__ build-time define, in both main and preloadservices/recallSdk.ts (new) loads the SDK lazily , a top-level import would crash a disabled build on launch, since the package isn't in the bundleelectronAPI.meetingRecorder and .callUI, so withholding those two keys disables every recording surface in the web app , with zero changes to apps/mailelectron-builder excludes @recallai/** and drops the afterPack / mergeASARs / signIgnore workarounds when the flag is clear| Check | Result |
|---|---|
| Disabled build | @recallai absent from bundle; preload 5.95 kB → 0.91 kB |
| Disabled runtime | Runs, loads the web app; zero recall/calendar/popup log lines; no native binary spawned; tray, menu, deep links, updater unaffected |
CEDAR_RECORDING=1 | Bundle size matches the previous build; require sits inside a function body, confirmed lazy |
tsc --noEmit / oxlint --deny-warnings | Both clean |
apps/desktop , no other work rides along.staging fires Desktop Release, which builds and publishes a v0.1.33-staging prerelease. It will still fail at notarization until the Apple credential is rotated.desktop-version-check passes.The PR makes desktop meeting recording opt-in at build time and removes the Recall SDK and its native-signing workarounds from default packages.
The PR appears safe to merge, with recording-disabled and recording-enabled paths consistently gated across packaging, startup, IPC, and preload boundaries.
Current renderer callers safely treat recording capabilities as optional, disabled builds omit both bridge methods and handlers, and no changed-code-triggered blocking or independently actionable issue remains.
| Filename | Overview |
|---|---|
| apps/desktop/electron-builder.config.js | Conditi |
Libra has not measured any production surfaces for this change yet.