f2856bc363
Signal 1:1 (and group) calls didn't auto-record. Root cause confirmed on-device: Signal is Electron and holds the mic in a HELPER process (org.whispersystems.signal-desktop.helper.Renderer, a child of the main app). detectViaMicAttribution only matched PIDs listed in NSWorkspace.runningApplications against the main bundle ID, so the helper's mic use was never attributed to Signal. (Zoom worked = single native process; Meet worked = browser resolved.) Fix: iterate the mic-using PIDs and resolve each to its owning app by walking the parent-process chain (sysctl KERN_PROC_PID → ppid) until an NSRunningApplication is found. Helper PIDs that return nil directly now resolve to the main app. Validated against the live Signal helpers: pids 2383/2372 → org.whispersystems.signal-desktop. Superset of the old behavior, so Zoom/Meet detection is preserved (browser case now also more robust); our own recording is still skipped (selfPID).