From 25a36cf62ad3b97829c73e610957ec35e589b2b0 Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Thu, 22 Oct 2026 17:43:40 +0200 Subject: [PATCH] docs: version routines Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 7 +++++++ TODO.md | 14 +++++++++++--- docs/DATA-MODEL.md | 10 ++++++++++ docs/PRD.md | 6 +++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index ec341aa..0a923a5 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1257,6 +1257,13 @@ to an open page). Four things hold it up: are CSS/layout choices over one feature tree. Theme, palette and row density are independent. Do not mount the old v1 persistence hooks alongside ReaderApp's v2 store. See DATA-MODEL for account IDs, clock revisions, migration recovery, backups and export validation. +- **Version timers are hand-kept, cited, and only their recorded ends act.** `VERSIONS` + (`src/shared/versions.ts`) is held to the `ROUTINES` bar: an https page, the day it was read, and + `Confirmed in game, YYYY-MM-DD.` for a figure the owner read in game. A version ends at an instant + (the restock), not a daily reset, which on Asia would roll a shop hours early. A routine on + `{ unit: "version" }` resets only at a recorded `end`; the `VERSION_DAYS` estimate is printed and + never acted on — the *never invent a date* rule. So **add each version's end when it is announced + or read in game**, with the next version's number; until then the shop routines hold their count. - **A game's routines stay together.** The separate daily panel keeps direct ticks; grouped routines use per-game/server summaries. Collapse policy is configurable and focus can expand a group without changing that saved policy. Timeline reset strips sit next to their game's events. diff --git a/TODO.md b/TODO.md index cc29883..8bd0b50 100644 --- a/TODO.md +++ b/TODO.md @@ -156,9 +156,17 @@ note only says where to start. (`Sanctuary_of_Ink`) changes URL every patch. endfield.wiki.gg's robots disallow `/api.php` for `*`, so only `/wiki/` pages are open. Re-check `/wiki/Version`; once it dates the current version, build `endfield-wikigg-protocol-pass` as the spec describes. -- [ ] Wuthering Waves' Pioneer Podcast and Oscillated Coral, and NTE's Circle Bounty, as pass/shop - windows: no page dated them on 2026-10-16 (the [pass windows spec](docs/superpowers/specs/2026-10-16-pass-windows-design.md) - § Not shipped has what was found). +- [ ] Wuthering Waves' Pioneer Podcast and NTE's Circle Bounty, as pass windows: no page dated them + on 2026-10-16 (the [pass windows spec](docs/superpowers/specs/2026-10-16-pass-windows-design.md) + § Not shipped has what was found). The Oscillated Coral shop shipped 2026-10-22 as three routines + that reset with the version ([version routines spec](docs/superpowers/specs/2026-10-22-version-routines-design.md)). +- [ ] **Record Wuthering Waves 3.8's end** in `VERSIONS` (`src/shared/versions.ts`) once it is + announced or the shop timer shows it, with the version after it. Until then the shop routines hold + their count from 11 Nov 2026 and print an estimate (~23 Dec). +- [ ] Version routine follow-ups (spec 2026-10-22 § Not in this change): a scraped version source + (Nikki's `Version` table already parses), version periods on a reader's own tasks and *Make it + mine* for them, and moving Pioneer Podcast onto the version period once the owner confirms it + follows the version. - [ ] Give Genshin's *To Temper Thyself and Journey Far* a check-in goal by default, so a reader need not set it by hand. The owner asked on 2026-10-16 to "mark it as a 4/5 wk event"; earlier the same day they described it as five days out of seven, and the [check-in goals spec](docs/superpowers/specs/2026-10-03-check-in-goals-design.md) diff --git a/docs/DATA-MODEL.md b/docs/DATA-MODEL.md index dddfd55..5a9c772 100644 --- a/docs/DATA-MODEL.md +++ b/docs/DATA-MODEL.md @@ -415,6 +415,16 @@ so `from` may be any day a cycle began. A built-in may name a server `clock` (co stored): its day keys are then cut on that server's reset for every reader, for a cycle that ends at one instant everywhere (NTE's Beyond the Rails, on Asia's). +A built-in may also **reset with its game's version** (`{ unit: "version" }`, 2026-10-22). That +period is code only — it is in `RoutinePeriodSchema`, never `PeriodSchema`, so no stored task, export +or older bundle holds one — and it is cut on instants, not day keys: `versionWindow` +(`src/shared/versions.ts`) finds the version holding `now` in the hand-kept `VERSIONS` table, whose +`end` is the moment the next version's stock appears on every server. Only a recorded `end` rolls the +period; past the newest one the window is the version that began there, open until its end is +recorded, and `VERSION_DAYS` gives an estimate that is printed and never acted on. Its numbers sit in +`amounts` under the version's start date in UTC (`2026-09-30` for WuWa 3.7), a key that adding the +next entry never moves. It groups, tallies and switches with the cycles (`cadenceOf`). + **Not every game has a server per region.** `GameMeta.resetOffsets` records the regions where a game's server clock differs from `REGION_RESET_UTC_OFFSET`. Endfield is the case this exists for: it has two server groups rather than three, and Europe is served off the Americas machine on a fixed diff --git a/docs/PRD.md b/docs/PRD.md index b80f074..4544f82 100644 --- a/docs/PRD.md +++ b/docs/PRD.md @@ -551,7 +551,11 @@ with the standing chore of the game it came from, because the reader thinks in g Routines is the library and management page for daily, weekly, monthly and cycle tasks. Follow each per server; pin independently to Checklist and Timeline. Built-ins offer Make it mine, copying only that account's logs; custom routines remain editable. Catch up & recorded history exposes logs on -their original reset revisions. A separate Timeline reset strip sits directly after its game's events; +their original reset revisions. A built-in can also **reset with its game's version** (WuWa's +Oscillated Coral pulls, seven of each per version): it counts down to the end the version table +records, or says *resets with next version (3.8) · expected ~23 Dec* when no end is recorded yet, +and never resets on that estimate. It sits with the cycles and is not offered as Make it mine. The +game's About tab in *Your games* shows the version and when it ends. A separate Timeline reset strip sits directly after its game's events; with strips off, Ending soonest remains a single cross-game deadline queue. The cadence and goal semantics below remain the domain contract; the redesign moves their controls