fix macOS PTY: cmsghdr layout, signing, sandbox removal

macOS cmsghdr uses socklen_t (4 bytes) for cmsg_len, not size_t
(8 bytes like Linux). The Dart FFI struct was reading at wrong offsets
causing SCM_RIGHTS fd transfer to fail. Added CmsghdrDarwin with
Uint32 cmsg_len alongside the existing Linux layout.

SOL_SOCKET is 0xffff on macOS (was hardcoded to 1 for Linux).
Now platform-detected.

Switched from ad-hoc to Apple Development signing with team ID.
Removed app sandbox from entitlements — proper signing makes it
unnecessary. All SBPL hacks eliminated.

PtySession.spawn() runs recvFd in a child isolate to avoid blocking
the backend isolate's event loop.

Terminal testmode test now passes: pane.spawn via backend isolate
successfully forks and execs the shell.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jeroen Schweitzer
2026-04-26 17:04:22 +02:00
co-authored by Claude Opus 4.6
parent 45e8132a41
commit 243a92798c
6 changed files with 46 additions and 40 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
{
"exported_at": "2026-04-26T13:55:29Z",
"exported_at": "2026-04-26T15:04:22Z",
"decisions": [
{
"id": "D-1",