⚠️ Breaking: Database history is purged on update
This release introduces a major change to how GoCron manages its database schema. Instead of building a complex migration system, GoCron now takes a simpler and more sustainable path: the database is purged and rebuilt from scratch whenever the schema version changes. A dedicated integer schema version is stored in a schema_version table on first start. On every startup, GoCron checks if the stored version matches the expected one — if not, the database file is deleted and recreated with the latest schema. This version is independent of the app version and only increments when the database schema actually changes.
What this means for you: When updating from any previous version to v0.10.0, your existing run history and logs will be deleted. The database is recreated from scratch on first start. This is intentional and unavoidable — the old schema (job_name_normalized) was replaced with job_slug for consistent lookups. No manual action is needed; gocron handles it automatically and logs a warning.
To be clear: only the run history and logs stored in the SQLite database are affected. Your jobs themselves are defined in config.yaml and are never touched — they will continue to run exactly as configured.
What you lose is the record of past executions and their output logs.
Note: This purge-on-update behavior is a pre-1.0.0 trade-off. Before the v1.0.0 stable release, GoCron prioritizes a clean and maintainable schema over preserving historical data. Once the schema stabilizes with v1.0.0, this approach will be replaced with proper migrations that preserve your run history and logs across updates.
Features
- Per-job timeout and retries — configure
timeoutandretriesper job, with process-group kill on timeout and default inheritance from global config - Graceful shutdown and job cancellation — running jobs are marked as canceled on shutdown, with real job names and canceled status shown in the UI
- Unified formatting via Docker Compose —
docker compose run --rm formatnow handles SQL, JSON, YAML, and frontend files using prettier withprettier-plugin-sql - Canceled status in UI — shows real job name and canceled state
Improvements
- Schema-version purge system — database is automatically purged and rebuilt when the schema version (a dedicated integer, independent of the app version) doesn't match, replacing fragile ad-hoc migrations
- Job slug for consistent lookups —
job_name_normalizedreplaced withjob_slugthroughout - Manual-only jobs — jobs without a cron expression are now treated as manual-only instead of crashing
- Zero-config quick start — GoCron creates a default config with example jobs on first start, so new users can just run the container and open the browser without any setup
- Clearer README — restructured documentation with a quick start guide, full configuration reference, failure semantics, and safety section for new users
- Iconify Tailwind utility classes — replaced
unplugin-iconswith direct Iconify usage - Echo v5 migration — migrated to Echo v5 with explicit CORS config and pointer-based context API
- Comprehensive test coverage — added backend tests for
ExecuteJob,IsIdle,StopRunning, and DB queries; added e2e tests for file ops, pipes, permissions, exit codes, timeouts, retries, stderr, and env edge cases - CI improvements — e2e tests split by feature and added to CI, backend logs captured on failure
Fixes
- Jobs with no cron no longer crash on startup
- Command substitution e2e test output trimming
- VCS stamping disabled in e2e Go build
- Correct icon usage
Dependencies
- Bumped Go to 1.26.4
- Bumped actions/setup-go to 7, actions/checkout to 7
- Switched frontend workflow from Yarn to npm
Changes in This Release
- Bump Go version to 1.26.4 (4162a81) by @flohoss
- Bump actions/checkout from 6 to 7 in the github-actions group (7143eb2) by @dependabot[bot]
- Merge pull request #56 from flohoss/dependabot/github_actions/github-actions-640176b5ab (294c422) by @flohoss
- [refactor] Migrate to Echo v5 with explicit CORS config and pointer-based context API (7754ef9) by @flohoss
- [meta] Switch frontend workflow from Yarn to npm (c6a9ae0) by @flohoss
- [refactor] Replace unplugin-icons with Iconify Tailwind utility classes (74a5d9b) by @flohoss
- [improve] Update e2e test formatting and bump Cypress version (4bb989a) by @flohoss
- [docs] Add agent guidance file (f1e7d71) by @flohoss
- [fix] Use the correct icon (a74ed5c) by @flohoss
- [refactor] Format healthcheck test struct alignment (b5930d1) by @flohoss
- [feature] Add command timeout with process group kill (4812130) by @flohoss
- [feature] Add per-job timeout, retries, and default inheritance (ca7776c) by @flohoss
- [feature] Wire timeout, retries, and error logging into job execution (4180a6b) by @flohoss
- [feature] Add e2e tests for timeout, retries, envs, and fail-fast (dfff85c) by @flohoss
- [docs] Add safety section, config excerpt, and e2e instructions (a63867c) by @flohoss
- [feature] Add graceful shutdown and job cancellation semantics (58c7b6b) by @flohoss
- [feature] Show canceled status and real job name in UI (7cb1fd9) by @flohoss
- [improve] Enable air send_interrupt for dev graceful shutdown (93eb61b) by @flohoss
- [improve] Split e2e tests by feature and add to CI (0102ce2) by @flohoss
- [refactor] Bump manual job sleep duration for shutdown testing (35a99f7) by @flohoss
- [docs] Restructure README for new users (6bb9f64) by @flohoss
- Revert "[docs] Restructure README for new users" (346b657) by @flohoss
- [docs] Restructure README for new users (e0eed9b) by @flohoss
- [fix] Build and run binary directly in e2e instead of air (479db68) by @flohoss
- [fix] Build and run binary directly in e2e instead of air (463f427) by @flohoss
- Merge branch 'main' of https://github.com/flohoss/gocron (6b5a78f) by @flohoss
- [improve] Expand slugify tests to full coverage (f4d5ee5) by @flohoss
- [improve] Add tests for formatTime, timestamps, context cancel, and expand edge cases (c46ea80) by @flohoss
- Bump actions/setup-go from 6 to 7 in the github-actions group (f525004) by @dependabot[bot]
- [improve] Add tests for formatTime, timestamps, context cancel, and expand edge cases (0045c6c) by @flohoss
- Merge branch 'main' of https://github.com/flohoss/gocron (b26d4ac) by @flohoss
- Merge pull request #57 from flohoss/dependabot/github_actions/github-actions-e986305a06 (41d7160) by @flohoss
- [fix] Capture backend logs on e2e failure in CI (b34bd38) by @flohoss
- [fix] Disable VCS stamping in e2e go build (8e69ff4) by @flohoss
- [improve] Comment buildvcs flag and simplify CI e2e workflow (f196c5e) by @flohoss
- [improve] Add e2e tests for timeout+retry, stderr, empty output, and env edge cases (1e138d5) by @flohoss
- [docs] Clarify that commands run through sh -c, no need to wrap manually (34daff3) by @flohoss
- [improve] Add backend tests for ExecuteJob, IsIdle, StopRunning, and DB queries (1fcb5f5) by @flohoss
- [improve] Add e2e tests for file ops, pipes, permissions, and exit codes (b4da7b1) by @flohoss
- [refactor] Replace job_name_normalized with job_slug for consistent lookups (9df9d56) by @flohoss
- [fix] Add DB migration for old schema and fix frontend job reference (ad792cb) by @flohoss
- [fix] Trim wc output in command substitution e2e test (677fe0c) by @flohoss
- [fix] Treat jobs with no cron as manual-only instead of crashing (5cbc35e) by @flohoss
- [refactor] Replace ad-hoc migration with schema-version purge (c2fbb00) by @flohoss
- [feature] Add unified prettier formatting via Docker Compose (4675fa6) by @flohoss
- [docs] Update AGENTS.md and README (a890c91) by @flohoss
- [improve] Add tests for GetJobByName, GetDBName, GetAllCrons and healthcheck (ffc2fd5) by @flohoss
- [refactor] Use integer schema version independent of app version (18e844f) by @flohoss
Full Changelog: v0.9.14...v0.10.0
Docker Image
docker pull ghcr.io/flohoss/gocron:v0.10.0
docker pull ghcr.io/flohoss/gocron:latestBinary Downloads
Download one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64
Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.10.0@sha256:ee5e887396e4ff21aa836336c6b1a6f033a045119bc1d1be9e43b295d816327a
Build Information
- Version:
v0.10.0 - Build Time:
2026-08-03T06:16:53Z - Repository: https://github.com/flohoss/gocron
- Platform:
linux/amd64,linux/arm64 - Attestations: SLSA Provenance, SBOM