Releases: moadim-io/daemon
Releases · moadim-io/daemon
v0.12.0
Added
- Per-routine max-runtime watchdog bounds hung agent runs. Routines carry an
optionalmax_runtime_secs(TOML + REST/MCP create/update). Likettl_secs,
the effective bound ismin(MAX_RUNTIME_SECS, cron interval)(default cap 1h),
lowered further by an explicitmax_runtime_secs. The hourly cleanup sweep now
force-kills any tmux session
whose run has exceeded its effective max runtime — recording
moadim: routine exceeded max runtime; killing sessionin the run's
agent.log— after which the workbench is reaped under the existing
ttl_secsrules. A session still within its max runtime is never touched.
Previously a hung run (waiting on stdin, looping, blocked on a stuck
network/git op) lived forever and stacked one zombie session + workbench per
cron tick, since the TTL reaper only governs finished runs. moadim install/moadim uninstallregister the daemon as an OS service so
it starts at login and is restarted on crash, keeping scheduled routines firing
across reboots. macOS writes a per-user launchd LaunchAgent
(~/Library/LaunchAgents/io.moadim.daemon.plist, loaded withlaunchctl);
Linux writes a systemd user service (~/.config/systemd/user/moadim.service,
enabled withsystemctl --user enable --now). Both run the daemon in the
foreground (moadim --interactive) so the service manager supervises it; other
platforms report that the command is not yet supported.- Hermes is now a built-in agent alongside
claudeandcodex. A default
hermes.toml(hermes exec {prompt_file}, mirroring Codex) is seeded into
~/.config/moadim/agents/on startup, andhermesappears in
available_agents()/GET /agents, so routines can launch Hermes.
Changed
- Routine runtime state (last-run timestamps and related mutable fields) is now
stored in a separate, git-ignored sidecar file instead of the git-tracked
routine.toml, so scheduled runs no longer produce noisy diffs or merge
conflicts in version-controlled routine definitions (#127).
Fixed
- iCal feeds now fold long content lines at 75 octets per RFC 5545 §3.1, using a
UTF-8-aware byte budget so multi-byte characters are never split across a fold
boundary. Previously over-longSUMMARY/DESCRIPTIONlines were emitted
unfolded, which some calendar clients reject. now_secs()no longer panics when the system clock reads before the Unix
epoch (1970). A VM or container booted with a dead real-time clock could make
SystemTime::duration_sincefail and crash the daemon; such readings are now
clamped to0until the clock is corrected.- Several
svc_*routine-service tests no longer overwrite the developer's real
user crontab.svc_create/svc_update/svc_deletesync the crontab, and four
tests exercised them without isolating thecrontabbinary, so running the
suite locally replaced the live routines block with a single test fixture line.
The tests now run under an emptyPATHso the sync cannot spawncrontab
(#175). - The crontab binary resolver now refuses to fall back to the real system
crontabin test builds when noMOADIM_CRONTAB_BINshim is configured,
returning a non-existent path so the spawn fails harmlessly. This is a
structural safety net: no test — current or future — can clobber the
developer's live crontab even if it forgets to isolate the binary (#175).
v0.6.1
Docs
- Weave loop-engineering hype into README taglines (banner, Features, MCP usage)
- Motivational quotes across Architecture.md and TODO.md
Published to crates.io via CI on tag push.
Full Changelog: v0.6.0...v0.6.1
v0.6.0
Features
- Use slugified title as routine folder name instead of UUID (#59)
- Add validation dialog before shutdown (todos)
- Rename prompt sidecar from prompt.txt to prompt.md (#57)
- Write .gitignore for generated runtime files in config dir (#55)
- Add TTL for triggered routines to prevent indefinite retention (todos)
Fixes
- Remove unused MOADIM_BUILD_UI variable in build script (#48)
Chores
- Add repository and homepage links to Cargo.toml (#54)
Docs
- Correct stale CONTRIBUTING guide (#53)
Full Changelog: v0.5.0...v0.6.0
v0.3.0
What's Changed
- docs: add moadim MCP at user scope by @tupe12334 in #41
- feat: run server in background or interactive modes, killable from client by @tupe12334 in #42
Full Changelog: v0.2.0...v0.3.0