Skip to content

v1.0.1

Latest

Choose a tag to compare

@github-actions github-actions released this 25 Sep 05:46
· 3 commits to main since this release

rote v1.0.1

The first packaged stable release of a cron that remembers what it did: scheduled jobs, persistent run history, captured output, and a live terminal dashboard.

The earlier v1.0.0 source tag remains unchanged. Its release workflow stopped at a macOS config-path test before publishing binary assets. v1.0.1 includes the corrected tests and documentation; it does not change the product's runtime behavior, default paths, or database schema relative to that source tag.

Release fixes since the v1.0.0 source tag

  • Config-path tests now distinguish Linux's XDG rules from macOS's native ~/Library/Application Support directory. Tests isolate the user's home and configuration directories on both systems.
  • New process tests check default-path initialization, preservation of edited configuration, and subsequent list/run/logs commands, with and without XDG_CONFIG_HOME.
  • README instructions now show the correct macOS configuration path and explain how to quote paths containing spaces.
  • Main and pull-request CI run native race-enabled tests on Linux and macOS, each on amd64 and arm64, before a maintainer creates a release tag.

Highlights since v0.2.1

  • Optional per-job history_limit: atomically save a run and retain the newest N records. Omitted or 0 still means unlimited history.
  • One scheduler per database, enforced with an OS lock. A read-only dashboard, history queries, and manual runs remain available alongside the scheduler.
  • Two-stage shutdown: the first Ctrl+C/SIGTERM stops scheduling and waits for active work; a second signal cancels jobs/hooks and persists their results.
  • Correct failure exit codes for runner errors, output-capture failures, and signal termination. Negative timeouts are rejected before execution.
  • Faster latest/history queries that avoid loading historical output blobs; output is fetched only when requested.
  • Cancellable in-process write queues shared by handles for the same database.
  • Dashboard read failures are visible and retried; recovered errors clear, and switching jobs cannot display another job's stale history.
  • Refreshed demo and reproducible, isolated recording script.

Upgrading from v0.2.1

  1. Stop every scheduler and manual writer and allow graceful shutdown to finish. Close dashboards, then back up the configuration and database. Never delete a scheduler's .lock file while it is running.
  2. Install the prebuilt archive/package matching your operating system and architecture, or use the install script or Homebrew cask.
  3. Check rote version reports rote 1.0.1, then restart one scheduler.

The database schema is unchanged from v0.2.1. Existing valid configurations need no new fields, and upgrading alone never prunes history. Enabling or lowering a positive history_limit can permanently delete older records and output on subsequent writes. A rollback cannot restore deleted history without a backup.

Behavior changes to account for in scripts and services:

  • A second scheduler using the same database exits with an error. Use rote tui to observe the existing scheduler.
  • rote run reports runner errors or signal termination with exit code 126, and timeouts with 124; ordinary command exit codes are propagated.
  • The first shutdown signal waits for active jobs/hooks. Send a second signal if cancellation is required; forced scheduler exits use 130/143.
  • Negative timeouts are invalid rather than silently acting as no timeout.

Default configuration locations have not changed: Linux uses $XDG_CONFIG_HOME/rote/jobs.toml when set, otherwise ~/.config/rote/jobs.toml; macOS uses ~/Library/Application Support/rote/jobs.toml and ignores XDG_CONFIG_HOME. -c/--config overrides either default. Both systems use $XDG_STATE_HOME/rote/rote.db when set, otherwise ~/.local/state/rote/rote.db, with --db as an explicit override.

Before downgrading to v0.2.1, stop v1.0.1 completely and remove history_limit from the configuration (v0.2.1 rejects unknown fields). Do not run old and new schedulers concurrently: the old release does not honor the scheduler lock.

Compatibility and distribution

The documented CLI, configuration fields, exit-code meanings, and existing history readability are stable within 1.x. Human-readable table/TUI formatting and direct SQL access to the internal database schema are outside that contract.

Archives target Linux and macOS on amd64 and arm64, with Linux deb/rpm/apk packages and SHA-256 checksums. macOS binaries are not Developer ID signed or notarized. The Homebrew cask removes the download quarantine attribute; this is not Apple notarization.

The release workflow repeats the four-platform source tests before publishing. After publication it downloads and verifies the actual archives, reruns CLI process tests (including Linux pseudo-terminal tests), checks upgrades from v0.2.1, and tests pinned/latest installers, Homebrew, and Linux package installs. Check every job's result for this release: a published release alone does not mean all post-publication verification passed.