@armstrongnate/april 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/dist/service/launchd.js +5 -0
- package/dist/service/systemd.js +4 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -149,6 +149,12 @@ After editing:
|
|
|
149
149
|
- **Linux** uses systemd user services at `~/.config/systemd/user/april.service`. Logs go to the journal (`journalctl --user -u april`).
|
|
150
150
|
- **macOS** uses launchd LaunchAgents at `~/Library/LaunchAgents/dev.april.daemon.plist`. Logs go to `~/Library/Logs/april/april.log`.
|
|
151
151
|
|
|
152
|
+
### Restarts and tmux sessions
|
|
153
|
+
|
|
154
|
+
The unit/plist sets `KillMode=process` (systemd) / `AbandonProcessGroup=true` (launchd), which means `april restart` only signals the daemon itself — tmux sessions and the Claude processes inside them keep running. The daemon's shutdown handler explicitly terminates the `gh webhook forward` children before exiting.
|
|
155
|
+
|
|
156
|
+
If the daemon ever has to be SIGKILLed (it hung past the systemd stop timeout), the forwarders will be orphaned to PID 1. Clean them up with `pkill -f 'gh webhook forward'`.
|
|
157
|
+
|
|
152
158
|
### Node version managers
|
|
153
159
|
|
|
154
160
|
`april install` captures the absolute path of the `node` binary it was invoked with (e.g. `~/.nvm/versions/node/v22.x.x/bin/node`) and bakes it into the unit/plist. If you later remove or change that node version, the service will fail to start — re-run `april install` after switching.
|
package/dist/service/launchd.js
CHANGED
|
@@ -58,6 +58,11 @@ ${envEntries}
|
|
|
58
58
|
<string>${escapeXml(log)}</string>
|
|
59
59
|
<key>ProcessType</key>
|
|
60
60
|
<string>Background</string>
|
|
61
|
+
<!-- launchd's equivalent of systemd's KillMode=process: when the daemon
|
|
62
|
+
exits, don't kill children that share its process group. Keeps tmux
|
|
63
|
+
sessions and any in-flight Claude work alive across restarts. -->
|
|
64
|
+
<key>AbandonProcessGroup</key>
|
|
65
|
+
<true/>
|
|
61
66
|
</dict>
|
|
62
67
|
</plist>
|
|
63
68
|
`;
|
package/dist/service/systemd.js
CHANGED
|
@@ -32,6 +32,10 @@ Environment=NODE_ENV=production
|
|
|
32
32
|
EnvironmentFile=-${envFilePath()}
|
|
33
33
|
StandardOutput=journal
|
|
34
34
|
StandardError=journal
|
|
35
|
+
# Only signal the main process on stop; leave tmux sessions and any other
|
|
36
|
+
# children running so an april restart doesn't trash in-flight Claude work.
|
|
37
|
+
# The daemon's own shutdown handler still SIGTERMs the gh webhook forwarders.
|
|
38
|
+
KillMode=process
|
|
35
39
|
|
|
36
40
|
[Install]
|
|
37
41
|
WantedBy=default.target
|
package/package.json
CHANGED