Skip to content

feat(metadocs): systemd user timer — the daily job works on Linux - #45

Merged
AbsoluteMode merged 1 commit into
mainfrom
feat/systemd-timer
Aug 3, 2026
Merged

feat(metadocs): systemd user timer — the daily job works on Linux#45
AbsoluteMode merged 1 commit into
mainfrom
feat/systemd-timer

Conversation

@AbsoluteMode

Copy link
Copy Markdown
Owner

Half the open-source audience runs Linux, and metadocs enable there wrote a launchd plist nothing would ever read.

  • Platform switch in one place: darwin → launchd agent (unchanged), linux → systemd user units (~/.config/systemd/user/session-recall-metadocs.{service,timer}), anything else → an honest RuntimeError handing over the manual path (metadocs run from your own scheduler), surfaced by the CLI as exit 1.
  • Persistent=true carries the exact laptop semantics launchd was chosen for: a run missed while the machine was asleep or off fires once on the next boot/wake.
  • The user's PATH is frozen into the unit (the distiller shells out to the agent CLI), stdout/stderr append to the same metadocs.log.
  • build_units is pure text generation — tests read the units without systemd; enable/disable/is_enabled take injectable platform/runner.

Suite 326 passed.

🤖 Generated with Claude Code

schedule.py was launchd-only: a Linux install got a plist nothing would ever
read. Now the platform picks the native backend — launchd agent on macOS,
systemd user units on Linux (Persistent=true carries the same laptop
semantics: a run missed while asleep fires once on wake) — and anything else
gets an honest error handing over the manual path instead of silence.
enable/disable/is_enabled grew injectable platform+runner for hermetic tests;
the CLI surfaces the unsupported-platform error as exit 1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@AbsoluteMode
AbsoluteMode merged commit 0a8dadd into main Aug 3, 2026
8 checks passed
@AbsoluteMode
AbsoluteMode deleted the feat/systemd-timer branch August 3, 2026 09:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants