v0.3.1 - Background Command Fix + Migration Guides
Released: April 8, 2026
Patch release fixing a regression where commands containing backgrounded subprocesses (command &) silently failed in legacy mode. Also adds migration guides and documents the release branch workflow.
Bug Fix
- Fix background commands silently failing in legacy mode (#17) --
daemonize()was closing file descriptors 0-2 instead of redirecting them to/dev/null. This violates POSIX: child processes launched viasystem()inherit the closed FDs, and shells enter a non-conforming state where backgrounded subprocesses silently fail to execute. The fix usesopen("/dev/null", O_RDWR)+dup2()to match the behavior ofdaemon(0, 0).
Documentation
- Migration guide: v0.1 to v0.2
- Migration guide: v0.2 to v0.3
- Git workflow conventions added to CLAUDE.md
Testing
- 6 new regression tests for daemonize FD behavior (
tests/test_daemonize.cc) .gitignoreuses wildcard pattern for test binaries- CI now triggers on release branches (
0.*) in addition to main
Upgrading
Drop-in replacement for v0.3.0. No configuration or CLI changes.