Skip to content

Unfocus v0.5.0-alpha.1

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 16 Aug 06:05
Immutable release. Only release title and notes can be modified.
452443b

These early builds are not code-signed or notarized. Verify downloads with SHA256SUMS and the GitHub build-provenance attestations.
The release also includes a CycloneDX SBOM and the bundled third-party notices.

  • Linux: X11 is qualified. APT archive metadata is signed; application binaries are unsigned. Wayland is unsupported.
  • macOS: Preview and unnotarized. Multi-monitor behavior is not yet qualified.
  • Windows: Idle and fullscreen probes are implemented, but interactive multi-monitor qualification is pending.

Changes

Added

  • Added © 2026 Abhik Sarkar to the foot of the consumer dashboard, with only
    Abhik Sarkar linked. Explicitly activating the name asks the system browser
    to open the fixed https://abhik.ai address rather than navigating the
    dashboard away, and says so plainly if no browser could be opened. Unfocus
    itself still makes no application-originated runtime network call.
  • Kept raw Your day presence history on this device for at least 90 days,
    beyond the 24-hour live window the strip already shows. The existing
    activity-history.json file stays hot for the latest day, and segments that
    age out of it are archived into local activity-archive-<key>.json 30-day
    epoch chunks in the same config directory. This stays local-only like
    everything else in Unfocus, with no account and no network call. History
    fills forward only: compatible existing local data is preserved, but activity
    from before History was installed cannot be backfilled. Whole archive chunks
    expire together, so an older partial chunk can remain until its complete
    30-day block expires.
  • Added main-window-only range history commands for the consumer dashboard.
    get_activity_range returns bucketed activeMs, afkMs, and
    longestActiveMs values for caller-provided boundaries, and
    get_break_range returns chronological privacy-safe {atMs, kind} break
    outcomes for [start, end) queries up to 31 elapsed days.
  • Added a transient consumer History view exposing the newest 90 browser-local
    days as three newest-first 30-day pages. It follows the saved Day starts
    preference, loads on demand, shows activity and break outcomes together, and
    does not change the reminder timer, probes, or overlays.

Changed

  • Raised the break-outcome ledger's retention from 7 to at least 90 days and
    removed its fixed event cap, matching the activity history above.
    break-events.json is now bounded by the 90-day time window and keeps enough
    local break outcomes to back the history view as well as the existing day
    and week summaries. The old 512-event cap was a live defect: a 20-minute
    work interval can produce up to 72 scheduled breaks a day, and with
    natural-idle and fullscreen-suppress outcomes added in, the cap could
    already be reached inside the old 7-day window, silently undercounting the
    dashboard's week totals.