|
18 | 18 | cache, which can improve cache hit rates in some scenarios. |
19 | 19 | - When a remote cache hit, we'll now warm the local cache with the hydrated manifest and its |
20 | 20 | blobs, so the next run resolves locally instead of round-tripping to the remote. |
| 21 | +- **Daemon** |
| 22 | + - Server log files will now rotate up to 7 times. Older log files will be automatically deleted. |
| 23 | + - Webhook delivery and task output archiving are now acknowledged immediately and run in the |
| 24 | + background on the daemon, so a client exiting or hitting a deadline no longer cancels the work |
| 25 | + mid-flight. |
| 26 | + - The daemon now takes exclusive ownership of its workspace through an advisory file lock held for |
| 27 | + its entire lifetime, replacing PID-liveness checks that could be fooled by zombie processes, |
| 28 | + reused PIDs, or processes owned by another user. A crashed daemon releases the lock |
| 29 | + automatically, so a stale socket or state file can no longer block or misdirect the next start. |
| 30 | + - Whether the daemon is running is now determined by connecting to it rather than probing a PID, |
| 31 | + and its metadata is recorded in a `daemon.json` state file (replacing `moond.pid`). |
| 32 | + - Connecting to the daemon and starting it are now a single operation, so a command that needs the |
| 33 | + daemon will start one itself if the background pre-warm hasn't yet, instead of silently running |
| 34 | + without it. Concurrent starts still coordinate so only one daemon is spawned. |
| 35 | + - When connecting, the client now checks the running daemon's moon and protocol version against |
| 36 | + its own and, on a mismatch, restarts it — so a daemon left over from before a `moon upgrade` is |
| 37 | + replaced instead of serving the old binary indefinitely. |
| 38 | + - The daemon now retires itself after a long idle period (no requests), and exits immediately if |
| 39 | + its workspace is deleted, so an abandoned workspace no longer leaves a daemon running forever. |
21 | 40 | - **Processes** |
22 | 41 | - Improved our "stream and capture output" child process handling to operate on bytes instead of |
23 | 42 | lines, which should resolve some edge cases with output not being written to the console, or |
|
57 | 76 |
|
58 | 77 | #### 🐞 Fixes |
59 | 78 |
|
60 | | -- Fixed an issue where an explicit head revision was ignored when diffing between revisions, and the |
61 | | - current working tree was compared against instead. |
62 | | -- Fixed an issue where diffing against the previous revision would fail in repositories with a |
63 | | - single commit. |
64 | | -- Fixed an issue where file names with spaces or special characters were excluded from file tree |
65 | | - results. |
66 | | -- Fixed an issue where Git submodules added between 2 revisions were not included when diffing. |
67 | | -- Fixed an issue where Git hooks could not be set up from the primary working tree when other |
68 | | - worktrees exist. |
69 | | -- Fixed an issue where moon would take over a hooks directory managed by another tool (husky, |
70 | | - lefthook, etc) when `core.hooksPath` was already configured, overwriting its hook files, and |
71 | | - deleting the entire directory when hooks were disabled. |
72 | | -- Fixed an issue where Windows hook wrappers would not forward arguments containing spaces |
73 | | - correctly, and would arbitrarily cap forwarding at 5 arguments. |
74 | | -- Fixed an issue where PowerShell hooks would mangle user variables that start with `$ARG`, like |
75 | | - `$ARGS`. |
| 79 | +- **CLI** |
| 80 | + - Fixed an issue where moon would silently exit with code 141 (SIGPIPE) when a child process |
| 81 | + exited before consuming its stdin. Broken pipes are now handled explicitly instead of resetting |
| 82 | + the SIGPIPE disposition, while piping moon's output to a consumer that closes early still exits |
| 83 | + quietly with the conventional code. |
| 84 | +- **Daemon** |
| 85 | + - Fixed an issue where every daemon RPC was capped by a 1 second client-side timeout, causing slow |
| 86 | + procedures (webhook delivery, cache cleaning) to be cancelled even though the daemon was |
| 87 | + healthy. Connection establishment is now bounded separately, and each procedure has an |
| 88 | + appropriate deadline that is also enforced by the server. |
| 89 | + - Fixed an issue where connecting to the daemon while it was still starting up — or being started |
| 90 | + by another process — would fail immediately with "connection refused", and the run would |
| 91 | + continue without the daemon. Connection attempts are now retried with a bounded backoff. |
| 92 | + - Fixed an issue on Windows where the daemon briefly had no listening pipe instance between client |
| 93 | + connections, causing sporadic connection failures, and where busy pipe instances were not |
| 94 | + retried. |
| 95 | +- **VCS** |
| 96 | + - Fixed an issue where an explicit head revision was ignored when diffing between revisions, and |
| 97 | + the current working tree was compared against instead. |
| 98 | + - Fixed an issue where diffing against the previous revision would fail in repositories with a |
| 99 | + single commit. |
| 100 | + - Fixed an issue where file names with spaces or special characters were excluded from file tree |
| 101 | + results. |
| 102 | + - Fixed an issue where Git submodules added between 2 revisions were not included when diffing. |
| 103 | + - Fixed an issue where Git hooks could not be set up from the primary working tree when other |
| 104 | + worktrees exist. |
| 105 | + - Fixed an issue where moon would take over a hooks directory managed by another tool (husky, |
| 106 | + lefthook, etc) when `core.hooksPath` was already configured, overwriting its hook files, and |
| 107 | + deleting the entire directory when hooks were disabled. |
| 108 | + - Fixed an issue where Windows hook wrappers would not forward arguments containing spaces |
| 109 | + correctly, and would arbitrarily cap forwarding at 5 arguments. |
| 110 | + - Fixed an issue where PowerShell hooks would mangle user variables that start with `$ARG`, like |
| 111 | + `$ARGS`. |
76 | 112 |
|
77 | 113 | #### ⚙️ Internal |
78 | 114 |
|
|
0 commit comments