Upgrading
General upgrade steps
Every Crontinel upgrade follows the same sequence:
composer update crontinel/laravelphp artisan migratephp artisan config:clearphp artisan cache:clearphp artisan crontinel:check- Update the package via Composer.
- Run migrations. New releases may add or modify database tables. The package uses its own migration files, so this is safe to run alongside your app migrations.
- Clear config and cache. This ensures Laravel picks up any new config defaults or service provider changes.
- Run the health check. Confirms your database tables are current, the API key is valid (if configured), and monitors are responding.
Config changes between versions
When a new version introduces config options, your existing config/crontinel.php won’t include them automatically. You have two options:
- Re-publish and compare:
php artisan vendor:publish --tag=crontinel-configThis will prompt before overwriting your file. Decline the overwrite, then diff the new defaults against your current config.
- Check the version-specific notes below and add the new keys manually. This is faster when only a few options changed.
v0.8.x to v0.9.0
Released: 2026-11-02
New features
Outcome::output(): Set the text sent as a run’s output, cut to 10,000 characters. A failure keeps the exception message and adds this text.CRONTINEL_CAPTURE_OUTPUT=true: Opt-in. Sends the last 10,000 characters of the task’ssendOutputTo()/appendOutputTo()/storeOutput()file. Off by default because output may hold sensitive data. Add'capture_output' => env('CRONTINEL_CAPTURE_OUTPUT', false),undercronin a published config.- Agent metric names:
tokens_used,cost_usdandtool_callsthroughOutcome::metric().
Pin with composer require crontinel/laravel:^0.9. See Run output.
v0.7.x to v0.8.0
Released: 2026-10-09
New features
Outcome::metric()/Outcome::timestamp(): Record a business count or artifact time on the terminal receipt. Exit 0 still means the process finished. Zero is sent when you record it. A run that records nothing omitsoutcomes.- Stable
job_name:Schedule::name()(plus expression and a single environment) travels with the receipt so a renamed command orSchedule::callclosure can keep a rule. php artisan crontinel:schedule: Names the Laravel schedule in Crontinel and can set theprocessed_recordsminimum. From v0.9.2 it also turns on missed-run alerts; run it again after upgrading.
Pin with composer require crontinel/laravel:^0.8. Dogfood evidence for the Packagist artifact lives in the workspace planning notes.
v0.1.0 to v0.2.0
Released: April 8, 2026
New features
- SaaS reporting: When
CRONTINEL_API_KEYis set, the package automatically sends a status ping toapp.crontinel.comevery minute via thecrontinel:reportscheduled command. Individual cron run events are also pushed after each task completes or fails. - Webhook alert channel: A new
webhookalert channel sends structured JSON POST payloads (both fire and resolve events) to any URL you specify. crontinel:reportcommand: Manually trigger a SaaS status ping at any time.crontinel:prunecommand: Delete oldcron_runsrecords beyond the retention window. Accepts--days=Nto override the configured value.
Bug fixes
- Cron late detection: Fixed incorrect
isLatecalculation that usedCarbon::now()->next(closure). The check now usesCronExpression::getPreviousRunDate()to correctly determine whether a cron missed its scheduled window. If you previously saw false late alerts, this release resolves the issue.
Breaking changes
None. This is a backward-compatible minor release.
New config keys
Add the following to your config/crontinel.php if they are missing:
// Inside the 'alerts' array, add the webhook channel:'webhook' => [ 'url' => env('CRONTINEL_WEBHOOK_URL'),],New environment variables
| Variable | Purpose |
|---|---|
CRONTINEL_API_KEY | SaaS API key for status reporting to app.crontinel.com |
CRONTINEL_API_URL | SaaS endpoint (defaults to https://app.crontinel.com) |
CRONTINEL_WEBHOOK_URL | Webhook endpoint for the webhook alert channel |
To use the webhook channel, update your .env:
CRONTINEL_ALERT_CHANNEL=webhookCRONTINEL_WEBHOOK_URL=https://your-endpoint.example.com/webhookMigration
This release includes a migration. Run php artisan migrate after updating.
v0.1.0 (initial release)
Released: April 5, 2026
This is the first stable release. No upgrade path needed; install from scratch using the Quick Start guide.
Requirements
- PHP 8.2, 8.3, 8.4, or 8.5
- Laravel 11, 12, or 13
Included
- Horizon monitor (supervisor status, paused state, failed jobs per minute)
- Queue monitor (depth, failed count, oldest job age for Redis and database drivers)
- Cron monitor (automatic run recording via scheduler events)
- Dashboard at
/crontinelwith dark theme and 30-second auto-refresh crontinel:checkCLI command with--jsonand--no-alertsflagscrontinel:installCLI command- Alert channels: Slack webhook and email, with 5-minute deduplication
- JSON API at
/crontinel/api/status