Guide βΊ Project
Roadmap
What has shipped, the milestones that are the build order, the game layers behind them, and the proposals for packs and identity. A direction, not a schedule.
The roadmap is the issues and milestones in the repository. This page is the readable version of them. It is a direction, not a sprint: horizons flex with energy and interest, and anything below can be reordered by a good argument on an issue.
Shipped
| Version | Date | What |
|---|---|---|
| 0.1.0 | 2026-09-13 | The engine, the Handler, the wheel, training with photo verification, stamped export with five layouts, recap cards, voice memos, undo, the export bundle |
| 0.2.0 | 2026-09-14 | One /settings page with the play pages kept clean, the dashboard actions row, the retroactive log (when on every write), one-tap photo check-in, the share sheet |
| 0.3.0 | 2026-09-14 | This guide, served by the app; issue templates for testers |
| 0.5.0 | 2026-09-19 | The health module: Apple Health and SparkyFitness steer the game |
| 0.6.0 | 2026-09-19 | The kit module β gear, toys and consumables β and the badge engine |
| 0.7.0 | 2026-09-20 | Share cards: three kinds, seven themes, badges on the card |
| 0.8.0 | 2026-09-20 | /progress with four tabs, inline-SVG charts and the Insight block |
| 0.9.0 | 2026-09-22 | Hosted mode: one instance, many profiles behind an invite-only login, each in its own database |
| 0.9.1 | 2026-09-22 | Beta surveys and the tester handbook |
| 0.10.0 | 2026-09-23 | The habits module: one tap, a timer, a Shortcut, or a calendar another app writes; the first module to declare egress |
| 0.11.0 | 2026-09-23 | The coach: the Handler judges every habit, rewards consistency, has a word when you slack, and Insight reads the same facts |
| 0.12.0 | 2026-09-25 | Playsets β content from a file, data never code β and events: a window, a sign, badges from a menu of rules. Locktober 2026 is the first |
The milestones
M1 Β· Player surface β
A play screen that is a game, settings that live elsewhere, retroactive logging so a game can start mid-stream, photo check-ins one tap away. Shipped in 0.2.0. One issue remains: the decisions only the maintainer can make (display name, licence, secrets to the password manager).
M2 Β· Share and install
- Stats-only share cards β a card for the current state with no photo in it.
- Versioned releases and image publishing β tags, a changelog you can trust, an image you can pull instead of build. Public registry when the maintainer says.
- An installer wizard β Windows-98-style setup, pup aesthetic, for download and for disc.
- A DVD / ISO β
make iso: an autorun disc with the image, the installer and this guide offline. Yes, really. - CI β tests on every push, image build on every tag.
- A README for strangers, CONTRIBUTING, a licence.
M3 Β· Data and immersion
- β
Health import β the
healthmodule, shipped in 0.5.0: sleep, steps, mood and workouts steer the game through rules you tune. Local data only. - β
Gear and toy tracker β the
kitmodule, shipped in 0.6.0: what you own, what it is made of, what it cost, when it was used and what happened. Brought a badge engine with it (see below). - β
Charts and insight β shipped in 0.8.0:
/progressgrew four tabs, a chart primitive that draws gaps as breaks and refuses to invent a scale, and an Insight block whose observations are omitted unless they clear a sample floor and an effect floor. No charting library β every coordinate is computed on your own box. - β
Habits β the
habitsmodule, shipped in 0.10.0: the work you said you wanted, logged with one tap, a timer or a Shortcut, or read out of the calendar a practice tracker or habit app already keeps. A late entry counts and earns no XP; a recurring calendar entry is a schedule and is skipped. 0.11.0 made the Handler read it: verdicts per habit, rewards for consistency, a talking-to for slacking, and Insight observations.
M4 Β· Bots
- A Matrix bot β reminders, reflections, media and commands without opening the web UI. Talks directly to your homeserver; never through a third party.
- The Handler as a local AI persona β a model on your own hardware, in the same module,
writing the prompts and reading the reflections; in-app chat and on Matrix. Acts only
through the API, as
actor=ai, rate-limited, every action an event. Your words never leave the LAN.
M6 Β· Playsets
β Shipped in 0.12.0: Playsets and events. What remains on the milestone: audio tracks in a playset (spec 2, with the player and the duty-of-care questions), signing (waits on M7), a public catalogue with a page on the site, and art from the badge forge for the shipped playsets.
M5 Β· Packs (proposal)
Federated Latch: a Handler instance training several pups, pack-mates who can see each other's clocks and streaks, pack training and pack wheels β with every capability a grant the pup chooses and can revoke. Not committed yet; the design is written up in Packs β federated Latch.
M7 Β· Identity (proposal)
A pup that is a keypair rather than a server: badges that travel as signed papers, the collar as a first-class record with a start and an end, stray and collared as real states, and handles bound to the key instead of the key derived from an account. Not committed yet; the design is written up in Identity β the pup, not the box.
Identity was numbered around a gap: the milestone depends on a badge engine to issue papers
about, and there was none. That engine now exists β it arrived in 0.6.0 with the kit
module, in core/badges.py rather than inside kit, precisely so it could be built on.
A badge is already a durable record with a subject, a period and frozen evidence; what M7
adds is signing it and letting it travel. The gap in the numbering stays where it is.
The game layers behind the milestones
The milestones are the build order. These are the layers of the game they add up to:
- P2 Β· Game and training layer β dice as a module, scheduled random events, β achievements (the badge engine, 0.6.0), a hardcore mode (no self-unlock before time; an emergency key with a cost), streak rules, β kit inventory (0.6.0), training goals with targets, headspace trend charts.
- P3 Β· Gallery β albums, tags, page themes you curate, local AI tagging of photos (a local vision model, never a cloud one), a timeline scrubber, recaps with media.
- P4 Β· The Handler goes live β the AI persona described under M4.
- P5 Β· Devices and quantified self β phone and watch notifications, Shortcuts for the share sheet, β correlation with a personal health database (0.5.0) and β a habit tracker β or several, through their calendars (0.10.0).
- P6 Β· The share layer β posting stamped images, milestones and recaps to your own external accounts (a fediverse server you run, Bluesky, a mesh network page), authored by the Handler behind explicit per-rule opt-in. Optional, supplemental, never hosted here. Reflections and check-ins are never shareable; this layer only ever carries what export already carries.
What gates everything
Three rules no feature gets to bend:
- Class-P. Your data never leaves your box. No cloud AI on any of it, ever.
- The core makes zero outbound calls; a module says when it does not. The core contacts nothing. A module that reaches the network β fetching a calendar feed, posting a card, fetching a playset β declares it, and the app tells you before you enable it: optional, informed, per module. Habits is the first module to do so. A declaration is a statement, not a cage β the app can say a module reaches the network, never that one cannot. Anything that leaves is still re-encoded with metadata stripped, and Class-P data (rule 1) never rides along.
- The log stays honest. Append-only, derived clock, undo voids and never deletes, late is marked late. A feature that needs to edit history does not get built.
Have an idea?
Feedback and issues β suggestions are issues with the type/feature label.
The best ones say what you were trying to do, not just what you want added.
This page is docs/roadmap.md in the repo. Spotted a mistake? Tell us how to report it β