tkachikov/chronos
Chronos is a lightweight Laravel package that brings convenient time and date utilities to your application. It offers a clean, framework-friendly API for common temporal operations, making time handling simpler, more expressive, and consistent with Laravel conventions.
Architecture fit: Chronos is a Laravel-native operations panel for scheduling, running, and observing artisan/system commands. It fits applications already relying on Laravel’s scheduler, queue workers, and cache, and it aligns with the framework’s service-provider and config-publishing conventions. Version 1.9.1 supports illuminate/support ^10.0|^11.0|^12.0|^13.0, making it viable across Laravel 10 through 13 and suitable for both current and recently upgraded applications.
Integration feasibility: High. There are no migrations in this release, and the package is config-driven. The main integration work is configuration governance rather than code changes: defining chronos.system_commands, deciding whether CHRONOS_TEST_COMMANDS should be enabled outside local, and confirming which PHP binary should execute real-time runs via CHRONOS_PHP_BINARY. Existing published configs from older versions are supported by the new config keys, reducing upgrade friction.
Technical risk: Moderate, driven primarily by behavior changes rather than defects:
chronos.system_commands. Existing schedules referencing disallowed commands are skipped, not removed. This is the highest-risk change: after upgrade, scheduled jobs may silently stop executing until the allowlist is populated.CHRONOS_TEST_COMMANDS=true. Staging environments that depend on chronos:test, chronos:answer, or similar commands will lose access until configured.php from PATH, with CHRONOS_PHP_BINARY as an override. This improves correctness in containerized or multi-version environments but may change behavior where the panel’s PHP differs from the intended worker runtime.Key questions:
CHRONOS_PHP_BINARY required in our container or host setup, or does the running PHP binary match the intended execution runtime?Authorize middleware in use, and is the published provider present to avoid authorization errors?Stack fit: Fits standard Laravel deployments using artisan, the scheduler, queue workers, and cache. No new infrastructure is required. The package’s dependency constraint covers Laravel 10–13, so it can be adopted without forcing a framework upgrade. The Laravel 13 fix for cache.serializable_classes = false is relevant for teams on or moving to Laravel 13.
Migration path: Treat 1.9.1 as a configuration-sensitive upgrade rather than a drop-in patch:
chronos.system_commands with every required artisan or vendor command class/name before deployment.CHRONOS_TEST_COMMANDS deliberately per environment, defaulting to disabled outside local.CHRONOS_PHP_BINARY if the panel runtime PHP differs from the intended execution binary.Compatibility: No database migrations. New config keys work with older published configs, so teams do not need to republish configuration, though reviewing the published config for clarity is advisable. The Authorize middleware fix and subdirectory deployment fix reduce prior integration edge cases. Real-time signal handling now correctly propagates SIGTERM/SIGKILL and records a killed state.
Sequencing: Complete the command inventory and allowlist configuration before enabling the new version in production. Roll out to staging first to confirm test-command visibility, PHP binary selection, authorization behavior, and metric changes. Production rollout should be followed by immediate verification of schedules and real-time runs. Because skipped schedules fail quietly, monitoring should be in place before or immediately after deployment.
Maintenance: Low ongoing maintenance. The release is primarily fixes and safeguards. No migrations or schema changes reduce deployment overhead. The main recurring task is maintaining chronos.system_commands as new vendor commands are adopted, which should be folded into change management for scheduled jobs.
Support: Support burden will concentrate around the upgrade window. Operators may report “missing” scheduled runs that are actually skipped due to the new allowlist. Clear runbooks and release communication are needed. The test-command environment gate may also generate staging support requests. Signal-handling and killed state fixes improve diagnosability for long-running commands.
Scaling: Real-time runs now use the correct PHP binary, which is beneficial in multi-version, containerized, or subdirectory deployments. Incremental log loading reduces overhead when streaming logs from long-running commands. Metrics fixes improve accuracy for capacity and performance analysis, though corrected averages may temporarily complicate trend comparisons. Queue workers that manage their own SIGTERM handling retain that behavior, which preserves existing graceful-shutdown patterns.
Failure modes:
CHRONOS_PHP_BINARY is unset and the panel’s PHP differs from the intended runtime.CHRONOS_TEST_COMMANDS is not enabled.Authorize middleware is enabled without the required published provider.Ramp-up: Minimal for developers familiar with Laravel scheduling and artisan. Operators need a short briefing on the system-command allowlist, environment-gated test commands, and the PHP binary setting. The most important enablement material is a pre-upgrade checklist and a post-upgrade verification procedure focused on skipped schedules and real-time execution.
How can I help you explore Laravel packages today?