Skip to content

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 21 Jun 17:08
4014bb2

Added

  • Day calendar view. Routines and cron jobs gain a scrollable single-day
    timeline: 24 hour rows with each fire time rendered as an HH:MM chip in its
    hour, prev/next/TODAY navigation, and the current hour highlighted and
    scrolled into view. Available alongside the routines LIST/CALENDAR toggle
    and as a new LIST/DAY toggle on the previously table-only cron-jobs page.
  • Zoom into the day view. The single-day timeline gains a /+ zoom
    control with four per-hour heights. The compact level keeps the wrapped-chip
    layout; deeper levels switch each hour into a minute-positioned timeline where
    fire times float at their exact minute against quarter-hour guide lines and a
    :00/:15/:30/:45 ruler, so sub-hour timing is readable at a glance. Closes #591.
  • Set machines from the web UI. The routine and cron-job create/edit forms now
    expose a MACHINES input (comma-separated), so multi-machine targeting is settable
    without dropping to the CLI or REST. Blank preserves today's behavior (empty list =
    runs nowhere). Closes #580.
  • Machine picker. The MACHINES field in the routine and cron-job forms is now a
    picker: it fetches the daemon's known machine names from the new GET /api/v1/machines
    endpoint (every name referenced by a routine or cron job, plus this machine's own
    identity) and renders them as toggleable chips, while still allowing a brand-new name
    to be typed and added. Closes #586.

Changed

  • Releases are automated on version bump. Merging a Cargo.toml version bump to
    main now auto-pushes the matching vx.y.z tag and runs the crates.io publish and
    GitHub Release workflows (new auto-release.yml). No more manual tag push; publish.yml
    and release.yml are now reusable (workflow_call) and keep their v* tag-push
    trigger as a hand-cut fallback.

Fixed

  • Test isolation. The routine service and storage unit tests no longer write
    into the developer's real ~/.config/moadim home. They resolved paths through
    paths::home(), which falls back to the real home when MOADIM_HOME_OVERRIDE
    is unset, so tests leaked routine dirs (and the migration tests even scanned real
    state). Every test now runs against an isolated temp home.