Skip to content

aw-notify: achievements / streaks / trophies (split from #200) #205

Description

@TimeToBuildBob

Splitting this out from #200, per @ErikBjare's suggestion — the achievements/streaks/trophies direction is a distinct enough feature to track on its own rather than living inside the broader "smarter-than-thresholds" notifications thread.

Background

In #200 we compared anomaly-detection notifications (percentile/sigma above baseline) against a "coaching"/reward angle, and landed on achievements as a promising first step:

  • Works with minimal history (a first occurrence is still a valid achievement) — unlike anomaly detection, which needs ~30 days of baseline before it's useful.
  • Framing is additive/positive rather than corrective.
  • "Trophy for best focus day this month" is more shareable/engaging than "you're 2σ above baseline."
  • Fits the existing notification infrastructure (per-category historical time from aw-server) either way.

References:

Open design questions (from @ErikBjare, carried over from #200)

  • Storage: how do achievements get stored once conditions are met? Need references to which data sources were used, the time-range covered, and the source devices/buckets involved — not just a flat "achievement unlocked" flag.
  • Multi-device: should each device have its own achievement store that overlays locally, or should achievements sync across devices?
    • Sync as part of "settings"? Is settings-sync even supported yet?
    • Or should achievements live in their own dedicated bucket (e.g. an achievements bucket)? Is that a good fit for the existing bucket/event model, or a bad one?
  • Trophies should be collectable multiple times (e.g. per time-period — "best focus day this month" can recur), not one-shot unlocks.

Scope (not yet decided)

This issue is for continuing the design discussion — no implementation approach is locked in yet. Candidate shape: define achievement conditions declaratively, evaluate them against aw-server query results, surface via aw-notify, with the storage/sync model above still open.

cc @ErikBjare

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions