call.tsv1: working granola e2e, v1 UIMar 29, 2026, 4:19 PMindex.tsfeat(desktop): put meeting recording behind a build flag, off by default 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 global flag shortcuts — is now inert unless CEDAR_RECORDING=1 at build time. Nothing is deleted; the flag turns all of it back on. This is also what unblocks releasing. @recallai/desktop-sdk bundles a ~335MB GStreamer.framework whose nested Mach-O binaries afterPack has to hand-sign, and which forces mergeASARs off. With the flag clear the package is excluded from the bundle entirely, so the standard signing path handles the whole app and those two workarounds drop out. The SDK therefore must never be imported at module scope — a top-level import would crash a disabled build on launch. services/recallSdk.ts loads it lazily instead, and every caller already sits behind the flag. The preload change does the rest of the work: the renderer decides whether recording exists purely by probing electronAPI.meetingRecorder and .callUI, so withholding those two keys disables every recording surface in the web app with no changes to apps/mail. Verified: disabled build drops @recallai from the bundle and takes preload from 5.95kB to 0.91kB; the app runs with no recall/calendar/popup activity and no native binary spawned, while tray, menu, deep links and the updater are unaffected. CEDAR_RECORDING=1 reproduces the previous bundle byte-for-byte in size, with the require inside a function body. tsc and oxlint clean. Co-Authored-By: Claude Opus 5 (1M context) <<email>>Aug 27, 2026, 9:35 PMpopup.tsv1: working granola containerMar 25, 2026, 12:47 PM