Packages
Tick-based activity session tracking — no start/stop calls, just report elapsed time and stints (bounded periods of activity) assemble themselves via gap-stitching. Second-resolution start/end per stint, session counts, day/timezone queries. Bring your own Ecto repo.
Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
## 0.1.2 (2026-07-16)
* **Fix: `:min` no longer blocks recording.** 0.1.1 dropped
below-minimum ticks outright — but tick streams are inherently tiny
(a reader flushing on every scroll pause sends a few seconds per
tick), so after a gap no stint could ever open and whole sessions
were silently lost. `:min` now means "minimum to *remember*":
ticks always record and accumulate; stints still under the minimum
are hidden from the query functions (`on_date`, `count`, `counts`,
`total_seconds`, `last` — per-call `:min` override available) and
garbage-collected when a newer stint opens on the same item.
The `{:ok, nil, :skipped}` return is gone; `count/3`, `counts/2`,
`total_seconds/3`, `last/3` gained an options list.
## 0.1.1 (2026-07-15)
* New `:min` option on `Stint.track/4` (app-wide default via
`config :stint, default_min: n`): the minimum seconds required to
*open a new* stint. A below-minimum tick with nothing to extend is
dropped and returns `{:ok, nil, :skipped}` — filters accidental
blink-and-close opens. Ticks that extend a running stint are never
dropped, so real sessions keep their closing seconds.
## 0.1.0 (2026-07-14)
Initial release:
* `Stint.track/4` — tick-based recording with gap-stitching: extends
the owner's latest stint on the item when within the gap window
(default 5 min), opens a new one otherwise. Back-dated first tick,
monotonic `ended_at` under out-of-order ticks, shallow-merged `meta`.
* Queries: `on_date/3` (timezone-aware via `:utc_offset`), `count/2`,
`counts/1`, `total_seconds/2`, `last/2`, and `clamp_to_date/3` for
rendering midnight-crossing stints on day views.
* `Stint.Migration` — versioned, Oban-style migrations.