singularity-forge/packages
Mikael Hugo 55a498603f fix(rpc): don't unref the sf-feedback drain timer
The drainer was scheduled via setTimeout(0) with timer.unref(). The unref
made the timer release-eligible — fine in a long-running rpc-mode child
where the process has plenty of other event-loop handles, but fatal in
the packaged-standalone path where the rpc subprocess has nothing else
to keep it alive. The process exited before the timer fired, so the
queue file was renamed to .<pid>.draining and then stranded forever.

Removed timer.unref(). The setTimeout(0) still lets the RPC response go
back to the caller first (no synchronous blocking on the drain), but the
timer now keeps the process alive until the drain handler runs, and the
drain's own async I/O keeps it alive until done.

Refs sf-mpa6wuhm-wwddd1.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:55:23 +02:00
..
agent-core chore(release): 2.75.3 → 2.75.4 + workspace dependency refresh 2026-05-16 23:59:14 +02:00
ai remove: SF voice IVR / ElevenLabs paging — migrated to centralcloud 2026-05-17 17:42:16 +02:00
coding-agent fix(rpc): don't unref the sf-feedback drain timer 2026-05-17 21:55:23 +02:00
daemon refactor(sf): separate daemon from server identity 2026-05-17 19:18:33 +02:00
google-gemini-cli-provider chore(release): 2.75.3 → 2.75.4 + workspace dependency refresh 2026-05-16 23:59:14 +02:00
native feat: replace launchd with systemd user-unit install path 2026-05-17 17:33:34 +02:00
openai-codex-provider chore(release): 2.75.3 → 2.75.4 + workspace dependency refresh 2026-05-16 23:59:14 +02:00
rpc-client fix: harden sf server control loop 2026-05-17 21:13:12 +02:00
tui chore(release): 2.75.3 → 2.75.4 + workspace dependency refresh 2026-05-16 23:59:14 +02:00