Skip to content
CAI
Software that uses CAICheck a score

fthomas/fs2-cron

57.6

Adequate · 20 September 2026

185

lines of production code

Scala

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Scala library that provides a unified scheduling abstraction for functional stream processing. It allows users to define and execute recurring tasks using standard cron expressions, cron4s expressions, or calendar-based events through a consistent ZonedDateTimeScheduler interface. The library integrates with the fs2 ecosystem to handle timezone-aware scheduling logic and includes automated tooling for dependency updates and releases.

Features

Add Calev and CronUtils scheduler implementations

Users can now schedule cron jobs using the \calev\ and \cron-utils\ libraries in addition to existing options. This change introduces \CalevScheduler\ for calendar event expressions and \CronUtilsScheduler\ for standard cron expressions, both implementing the \ZonedDateTimeScheduler\ interface to provide consistent scheduling behavior across different expression types.

modules/calev · high confidence

Add Cron4s integration for scheduling

Users can now schedule tasks using cron4s expressions via the new Cron4sScheduler. This component integrates the cron4s library with fs2-cron, allowing users to define schedules using cron4s CronExpr types and execute them based on ZonedDateTime calculations.

modules/cron4s/src/main · high confidence

Automated release script added

A new release script (scripts/release.sh) has been added to automate the release process. When invoked with a version number, it creates an annotated and signed Git tag, runs the readme/mdoc generation via sbt, commits the version update, and pushes both the code and tags to the remote repository.

scripts · high confidence

Initial project setup and documentation

The repository is initialized with the Apache 2.0 license, a comprehensive README detailing usage with Cron4s and Calev libraries, and standard build configuration files including .gitignore, .scalafmt.conf, and .mergify.yml for automated dependency updates.

(repo-wide) · high confidence

Introduce Scheduler abstraction and ZonedDateTimeScheduler implementation

The core module now exposes a new \Scheduler\ trait that defines scheduling operations such as \sleepUntilNext\, \awakeEvery\, and \schedule\, along with a concrete \ZonedDateTimeScheduler\ implementation that handles time-zone-aware scheduling. This change provides a structured API for calculating durations until the next scheduled event and executing tasks based on those schedules, replacing the previous inline logic within \ScheduledStreams\.

modules/core/src/main · high confidence

Test coverage

Added ZonedDateTimeSchedulerSuite for core scheduling tests; Added tests for Cron4s scheduler integration.

Dependencies

Updated core dependencies to fs2 3.12.2 and calev 0.7.4

The build configuration has been updated to use fs2-core version 3.12.2 and calev-core version 0.7.4. This change affects the underlying libraries used for stream processing and cron expression parsing within the fs2-cron modules.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 58.

Lenses

  • Code Health 100
  • Architecture 69
  • Maturity 57
  • Readiness 50
  • Security 65

Changes since last survey

  • 300 commits — 294 feature/other, 6 fixes

By area

  • (repo) — 124 commits
  • (root) — 79 commits
  • project/plugins.sbt — 59 commits
  • project/build.properties — 22 commits
  • .github/workflows — 8 commits
  • modules/core — 6 commits
  • modules/calev — 1 commit
  • modules/cron4s — 1 commit

Notable commits

  • fix: Fix off-by-one error in fromNowUntilNext
  • fix: Fix publishing?
  • fix: Fix rounding
  • fix: Merge pull request #559 from hugo-vrijswijk/fix-tl-base-version
  • fix: Merge pull request #599 from fthomas/fix/598
  • fix: Update cron4s and fix tlBaseVersion
  • change: Add 'Reformat with scalafmt 3.9.7' to .git-blame-ignore-revs
  • change: Also merge updates from scala-steward[bot]
  • change: Do not run tests parallel
  • change: Merge Scala Steward's PRs
  • change: Merge pull request #454 from scala-steward/update/scala-library-2.13.12
  • change: Merge pull request #475 from fthomas/update/sbt-1.9.8
  • change: Merge pull request #476 from fthomas/update/sbt-typelevel-0.6.4
  • change: Merge pull request #477 from scala-steward/update/sbt-scalajs-1.15.0
  • change: Merge pull request #478 from scala-steward/update/mdoc-2.5.2
  • change: Merge pull request #479 from scala-steward/update/sbt-typelevel-0.6.5
  • change: Merge pull request #480 from scala-steward/update/cron4s-core-0.7.0
  • change: Merge pull request #482 from scala-steward/update/fs2-core-3.9.4
  • change: Merge pull request #483 from scala-steward/update/scalafmt-core-3.8.0
  • change: Merge pull request #484 from scala-steward/update/sbt-scoverage-2.0.10
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

fthomas/fs2-cron was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 8ee560c9e33fcf3772b53d4699c374890d63e627 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.