NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #2611 by repository stars
Last release 2 days ago
05 Oct 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 15 of 16 stable releases
Nothing withdrawn
no release was ever pulled
8 months old
20 releases · first in 2026
One column per month.
Nothing published for this version
Fix for invalid time_zone messages on some platforms (e.g. Nix sandboxed builds on macOS). Unknown zones now always report unknown time zone "<name>"
Fix for invalid time_zone messages on some platforms (e.g. Nix sandboxed builds on macOS). Unknown zones now always report unknown time zone "<name>" instead of leaking raw OS errors like operation not permitted.
Full Changelog: v0.13.1...v0.13.2
docker pull ghcr.io/flohoss/gocron:v0.13.2
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.13.2@sha256:18f5a8cb5ce557c0e76d4651d0bf9826a87018ac82dc83f782716146599f51ab
v0.13.22026-10-05T19:55:12Zlinux/amd64,linux/arm64A quick follow-up to v0.13.0 polishing the single sign-on experience — no new features and no config changes.
A quick follow-up to v0.13.0 polishing the single sign-on experience — no new
features and no config changes.
/api/auth/callback now includes a message field ("Authentication required") next to the existing machine-readable error, with detaillogin session expired or missing, state mismatch,Authentication failed). Status codes are unchanged: 401, and 503 stillend_session_endpoint, but withoutpost_logout_redirect_uri. Providers that require an id_token_hint rejectRestructured the SSO section into a settings table plus labelled Discovery /
Login flow / Logout paragraphs, corrected the outdated logout
description, and added SSO to the feature list.
Full Changelog: v0.13.0...v0.13.1
docker pull ghcr.io/flohoss/gocron:v0.13.1
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.13.1@sha256:3dfde5d35de22934738787e6d9eceff3cc030403c3a6b248f4b857e5ee9683d9
v0.13.12026-09-29T08:25:38Zlinux/amd64,linux/arm64[meta] Remove deprecated config ( 4bf7835 ) by @flohoss
Single sign-on with OpenID Connect — GoCron can now protect both the UI and the API behind any OIDC provider (tested against Pocket-ID).
auth.oidc config section: enabled, issuer_url, client_id, client_secret, session_ttl, cookie_secure. Endpoints and signing keys are auto-discovered from the issuer's .well-known/openid-configurationsession_ttl (default 24h)openid scope is requested and the session is keyed on the ID token's sub, so no email claim is neededcookie_secure toggle for HTTPS deployments; any auth.oidc.* value can be overridden via GC_AUTH_OIDC_* env varsauth.oidc section apply on config reload, no restart needed (the provider is re-discovered when issuer_url/client_id change; discovery failures retry on the next request)config/config.example.yaml is embedded via go:embed and written to config/config.yaml on first boot if no config exists. config.yaml is git-ignored so local credentials never get committedtime_zone or log_level in config.yaml applies immediately on config reload — the cron scheduler and the default slog handler are rebuilt without a restartconfig/config.example.yamlvalidate packagecookieAuth security scheme in the OpenAPI spectime_zone, applied on reload — the scheduler is built with cron.WithLocation(...). Previously time_zone only took effect via TZ at startup, so a config edit didn't move existing cron entries until a restart. If you run with a non-UTC time_zone, double-check that schedules land where you expect after upgrading/api/auth/, and the OIDC callback URL registered at your provider must be the public address (e.g. https://gocron.example.com/api/auth/callback)end_session_endpoint the frontend also redirects there to clear the provider-side sessionsession_ttl and are cleaned up hourlyauth.oidc.enabled: true is set. Your existing config.yaml keeps working as-isFull Changelog: v0.12.0...v0.13.0
docker pull ghcr.io/flohoss/gocron:v0.13.0
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.13.0@sha256:efd2f87ac3df91e95866ae7c2ecd4aff1440d213cdb255c6a39f6c7026991ce8
v0.13.02026-09-29T07:17:20Zlinux/amd64,linux/arm64Reverse proxy support — new server.trusted_proxies (CIDR list) makes request logs and rate limiting use the real client IP from X-Forwarded-For when t
server.trusted_proxies (CIDR list) makes request logs and rate limiting use the real client IP from X-Forwarded-For when the request arrives through a trusted proxy. Without it, the direct connection IP is always used, so headers cannot be spoofed.server.rate_limit (disabled by default). Rejected requests get 429 Too Many Requests with Retry-After and X-RateLimit-* headers.server.cors.allow_origins (defaults to *).remote_ip) is logged at log_level: debug.r3labs/sse dependency. Each subscriber gets its own buffer; a stalled reader is disconnected after a write timeout instead of blocking all live updates.rclone version pinning works — a pinned version produced apt-get install -y <version> (installing a package literally named after the version string); it now installs rclone=<version>./api/* routes return a JSON 404 instead of the SPA's index.html.apprise release.r3labs/sse; updated Go and web dependencies; Cypress 16, Node 26, Go 1.27.1.server.trusted_proxies so logs and rate limiting see real client IPs. Default behavior is unchanged (XFF ignored).software: entries are now validated like jobs: — an entry missing name fails config validation at startup instead of being silently skipped.Full Changelog: v0.11.0...v0.12.0
docker pull ghcr.io/flohoss/gocron:v0.12.0
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.12.0@sha256:660d850886468915b71248456c5ca90eba423907a530d0161606bccb058912a5
v0.12.02026-09-26T02:54:16Zlinux/amd64,linux/arm64Added unified Prettier formatting through Docker Compose.
Full Changelog: v0.10.0...v0.11.0
docker pull ghcr.io/flohoss/gocron:v0.11.0
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.11.0@sha256:d5deba8be477996c99aa4122e27d1feeff178736e56c822003875675037fd6b3
v0.11.02026-08-28T13:11:13Zlinux/amd64,linux/arm64⚠️ 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.
timeout and retries per job, with process-group kill on timeout and default inheritance from global configdocker compose run --rm format now handles SQL, JSON, YAML, and frontend files using prettier with prettier-plugin-sqljob_name_normalized replaced with job_slug throughoutunplugin-icons with direct Iconify usageExecuteJob, IsIdle, StopRunning, and DB queries; added e2e tests for file ops, pipes, permissions, exit codes, timeouts, retries, stderr, and env edge casesFull Changelog: v0.9.14...v0.10.0
docker pull ghcr.io/flohoss/gocron:v0.10.0
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.10.0@sha256:ee5e887396e4ff21aa836336c6b1a6f033a045119bc1d1be9e43b295d816327a
v0.10.02026-08-03T06:16:53Zlinux/amd64,linux/arm64Nothing published for this version
This release is primarily focused on maintenance and dependency updates to keep the project current, secure, and compatible with the latest tooling.
This release is primarily focused on maintenance and dependency updates to keep the project current, secure, and compatible with the latest tooling.
actions/upload-artifactNo functional changes or new features are included in this release. This update focuses on project maintenance, dependency hygiene, and CI/CD improvements.
Full Changelog: v0.9.13...v0.9.14
docker pull ghcr.io/flohoss/gocron:v0.9.14
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.9.14@sha256:a6384f7ad9cee2c5f781789ce683641a1333abd4c0062d0c134c273883821904
v0.9.142026-06-08T15:57:53Zlinux/amd64,linux/arm64Introduce a package-level httpClient (defaulting to http.DefaultClient) and use it for requests so tests can substitute a custom client/transport. Upd
Introduce a package-level httpClient (defaulting to http.DefaultClient) and use it for requests so tests can substitute a custom client/transport. Update healthcheck tests to avoid httptest.NewServer (which binds ports) by adding roundTripFunc and withTestClient helpers that install a custom http.Client Transport returning mocked http.Responses. Tests now use fixed example URLs and the mocked transport; the original client is restored via t.Cleanup.
Full Changelog: v0.9.12...v0.9.13
docker pull ghcr.io/flohoss/gocron:v0.9.13
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.9.13@sha256:89db513849e4fa65e7376c18d28f11c9f84ec2a3c51b6cdec16b447e5e39c8ec
v0.9.132026-05-13T05:03:28Zlinux/amd64,linux/arm64Remove deprecated reuse-go input from go-coverage-report ( 473e5ae ) by @flohoss
The --config flag now expects a path to the actual YAML config file, not a config folder. For example, use /path/to/config.yaml instead of /path/to/config or ./config.
Existing setups that relied on the old config-folder flag behavior must update their startup arguments before upgrading.
The SQLite configuration is now defined under a dedicated db section. Database directory is configured with db.location, and database file name is configured with db.name.
Job detail routes now use generated URL-safe slugs instead of raw job names. Slugs are derived automatically from the configured job name and must be unique.
Update your startup command to point --config directly to the config file.
Move any SQLite path customization into the db section.
To keep the previous default behavior, set db.location to . (the same folder as the config file) and leave db.name as db.sqlite.
Ensure job names produce unique slugs if you use the web UI, since duplicate slugs are now rejected during config loading.
Full Changelog: v0.9.11...v0.9.12
docker pull ghcr.io/flohoss/gocron:v0.9.12
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.9.12@sha256:914f81c74d05623f94d70c021f6c8a8aac94d6f91f3cb3005289c3ff920d61f3
v0.9.122026-05-11T04:39:31Zlinux/amd64,linux/arm64Nothing published for this version
This release improves standalone binary usage and deployment flexibility.
This release improves standalone binary usage and deployment flexibility.
Added startup flag --config to use a custom config folder (config.yaml and sqlite DB are created/used there)
Added --version output with embedded build metadata
Embedded the web UI into the binary for a more self-contained runtime
Improved first-run config file creation behavior
Release artifacts now include Linux binaries for amd64 and arm64, plus checksums
Notes
Linux release binaries are attached as:
gocron_<version>_linux_amd64
gocron_<version>_linux_arm64
Use:
./gocron_<version>linux<arch> --version
Thanks @JuliusFreudenberger for porting this package to nix ❤️
Full Changelog: v0.9.10...v0.9.11
docker pull ghcr.io/flohoss/gocron:v0.9.11
docker pull ghcr.io/flohoss/gocron:latestDownload one of the attached binaries extracted from the release image:
gocron_<version>_linux_amd64gocron_<version>_linux_arm64Verify with ./gocron_<version>_linux_<arch> --version.
Image digest:
ghcr.io/flohoss/gocron:v0.9.11@sha256:47a7af0e744a26d1c096a86212c2990723eff2a0ca82b43349aabf26ee271af2
v0.9.112026-05-08T18:35:14Zlinux/amd64,linux/arm64This is mostly a cleanup release to make sure all versions are working together. Vite is pushing for v8 but non of the major packages are ready and wo
This is mostly a cleanup release to make sure all versions are working together.
Vite is pushing for v8 but non of the major packages are ready and working 100% yet.
I will keep everything at v7 for now and see when i can upgrade tailwind, daisyui etc.
Full Changelog: v0.9.9...v0.9.10
docker pull ghcr.io/flohoss/gocron:v0.9.10
docker pull ghcr.io/flohoss/gocron:latestImage digest:
ghcr.io/flohoss/gocron:v0.9.10@sha256:d105f241dbf65adf18a240c99144be2567dd992128e529a1740449eeab0416b1
v0.9.102026-05-03T10:37:24Zlinux/amd64,linux/arm64Previous releases were missing the latest tag and versioned aliases (v0.x, v0.x.x) on the GitHub Container Registry. Only the exact version tag (e.g.
Previous releases were missing the latest tag and versioned aliases (v0.x, v0.x.x) on the GitHub Container Registry. Only the exact version tag (e.g. v0.9.9) was being pushed — latest and the shorter aliases were never published.
Root cause: The CI pipeline was using docker/build-push-action with Docker metadata to generate tags, but the image field in compose.yml was also being picked up by Bake and overriding all metadata-generated tags with a single bare image name, discarding everything else except the version tag.
What i changed:
The pipeline now drives builds directly from the compose file using Docker Bake — the same file used locally for development. This means the release build and the local build share a single source of truth.
As part of this, all tool versions (golang, node, debian, air, sqlc) are now centralized in the compose.yml under a single x-build-args block. CI reads them from there automatically, so there is no more version drift between local and production builds.
Tags are now fully managed by docker/metadata-action and correctly publish on every release:
latestv0.9.9v0.9v0A big thanks to @t4nki for reporting the missing latest tag and prompting this cleanup!
Full Changelog: v0.9.8...v0.9.9
docker pull ghcr.io/flohoss/gocron:v0.9.9
docker pull ghcr.io/flohoss/gocron:latestImage digest:
ghcr.io/flohoss/gocron:v0.9.9@sha256:70aa2e54a6383f23a45daeedc4de0f1eb3555ab96ebdbba88755db1b99149465
v0.9.92026-05-03T09:53:40Zlinux/amd64,linux/arm64Add sqlc/yarn services and wait-for-url script ( ee362ed ) by @flohoss
Full Changelog: v0.9.7...v0.9.8
docker pull ghcr.io/flohoss/gocron:v0.9.8Image digest:
ghcr.io/flohoss/gocron:v0.9.8@sha256:d1a9cfaf2f85b1acf50ea69e625bf8b3a0babe88b38ddef40fce771e6c5134ac
v0.9.82026-03-18T12:51:30Zlinux/amd64,linux/arm64Nothing published for this version
docker pull ghcr.io/flohoss/gocron:v0.9.7
docker pull ghcr.io/flohoss/gocron:v0.9.7Image digest:
ghcr.io/flohoss/gocron:v0.9.7@sha256:ca3b58035b72f868aecb20fff0ecc1cbe40e6e511539d77244fadae89da9ee3f
v0.9.72026-02-09T20:07:05Zlinux/amd64,linux/arm64Full Changelog: v0.9.6...v0.9.7
docker pull ghcr.io/flohoss/gocron:v0.9.6
docker pull ghcr.io/flohoss/gocron:v0.9.6Image digest:
ghcr.io/flohoss/gocron:v0.9.6@sha256:02ea25b974cebd355b3d84d08ed55bcbb903dfb32f0511a80f9d2e79716d38b6
v0.9.62026-01-29T21:10:55Zlinux/amd64,linux/arm64Full Changelog: v0.9.5...v0.9.6
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →