diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 059389934..a2919a006 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -29,6 +29,7 @@ ### Fixed +- Fixed the Linux socket-mode DAP launch (e.g. `dlv`) hanging forever when the unix socket connect failed: `connectSocket` now rejects on a `Bun.connect` error (ECONNREFUSED/ENOENT/EACCES) or when the connect stalls past the launch deadline, instead of leaving the awaiter pending and leaking the detached adapter ([#4087](https://github.com/can1357/oh-my-pi/issues/4087)). - Fixed discarded `Settings` instances keeping debounced save timers and chained background saves armed; discarding an instance now cancels its pending writes so they cannot race a successor's file locks. - Fixed `error.notify` raising a "Stopped with error" toast for provider failures while an auto-retry or async-delivery continuation was pending; the toast now waits for the true terminal settle. - Fixed terminal `yield` results racing post-turn maintenance, which could trigger an unnecessary automatic handoff or compaction. diff --git a/packages/coding-agent/test/debug/dap-launch-failures.test.ts b/packages/coding-agent/test/debug/dap-launch-failures.test.ts index e48af3c5f..d7d77bd26 100644 --- a/packages/coding-agent/test/debug/dap-launch-failures.test.ts +++ b/packages/coding-agent/test/debug/dap-launch-failures.test.ts @@ -493,7 +493,10 @@ describe("connectSocket unix transport", () => { // yields ECONNREFUSED/ENOENT from Bun.connect. Before the fix the error // handler only errored the stream and the returned promise never settled, // so `await connectSocket(...)` hung the launch forever. - const deadSocket = path.join(os.tmpdir(), `omp-dap-dead-${Date.now()}-${Math.random().toString(36).slice(2)}.sock`); + const deadSocket = path.join( + os.tmpdir(), + `omp-dap-dead-${Date.now()}-${Math.random().toString(36).slice(2)}.sock`, + ); const start = Date.now(); await expect(connectSocket({ unix: deadSocket }, 5_000)).rejects.toThrow(); // Must settle on the connect error, not linger until the timeout bound.