docs: record built-in routines, per-item tracking and standard pulls

The design spec (entries with the sentence each rests on, what was looked for
and not shipped, and the facts gathered for N-week cycles and dated pass
windows), the plan, PRD F12 and F17, DATA-MODEL's prefs, and TODO.md's open
in-game checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas WintherandClaude Opus 5.5 committed 2026-10-16 03:00:55 +02:00
1 parent af2ad942cd
commit e1e5fc06c3
5 files changed
+423 -14

No files matched your search

+25
View File
@@ -1,5 +1,30 @@
# TODO
- [ ] Move NTE's Europe server to UTC+2. `games.ts` rolls it at 05:00 UTC+1 (04:00 UTC), per
Game-Time-Master and GameWith, but the game disagrees. On 2026-10-16 the owner read: a weekly
timer of 3d 2h at 00:40 UTC (→ Monday 2026-10-19 **03:00 UTC**); Realm of Greed's own text, "Gold
Heist resets every Monday at 5:00"; and the Tycoon Incentive Fund at 10d 2h at 00:43 UTC (→
Monday 2026-10-26 **03:00 UTC**, the day after the clocks change). Only 05:00 on a fixed UTC+2
fits all three — 03:00 UTC all year, not a server that follows daylight saving. Fix: set
`resetOffsets.europe: 2` for `nte` with a test, as a day-key change under AGENTS.md § Event IDs,
and update `docs/DATA-MODEL.md`'s reset table and Game-Time-Master's place as the source. One
NTE timer read after 2026-10-25 would confirm it (it should still land on 03:00 UTC). See the
[built-in routines spec](docs/superpowers/specs/2026-10-14-built-in-routines-design.md).
- [ ] Confirm Infinity Nikki's *Realm of Breakthrough* in game: still two Phantom Trials (Wish
Master Chigda, Guardian Beast Whirls), once a week each, renewed at the Monday reset? The owner
could not check on 2026-10-16 ("insufficient story progress" — it unlocks after *Showdown with
Chigda!*). Until then the entry stands on infinity-nikki.fandom.com/wiki/Realm_of_Breakthrough
(as of 2026-01-01), whose "currently there are two Trials" is the oldest claim in the Nikki
list. If it differs, correct `routine:nikki:realm-of-breakthrough` in `src/shared/routines.ts`
and its row in the [spec](docs/superpowers/specs/2026-10-14-built-in-routines-design.md)
§ Entries together, with the note `Confirmed in game, YYYY-MM-DD.`
- [ ] Confirm Endfield's *Etchspace Salvage: Focus Commissions* in game: still 3 commissions a
week, and does it reset on Monday with the *Weekly Routine* (EU: Monday 11:00 CEST, confirmed
2026-10-14)? The owner could not check on 2026-10-14 ("due to mission progress"). Until then the entry stands on endfield.wiki.gg/wiki/Etchspace_Salvage (as of
2026-09-01), whose "weekly" is read as Monday from the wiki's own weekly-reset box. If either
is wrong, correct `routine:endfield:focus-commissions` in `src/shared/routines.ts` and its row
in the [spec](docs/superpowers/specs/2026-10-14-built-in-routines-design.md) § Entries
together, with the note `Confirmed in game, YYYY-MM-DD.`
- [x] Support check-in goals for events that require only some of the available days
(for example, five check-ins per week). Keep unfinished events in Dailies, show progress
against the required count, and distinguish finishing a week from finishing the event.
+15 -5
View File
@@ -259,7 +259,7 @@ Namespaced, versioned, and small. Nothing here ever goes to the server.
// choresOn?, choresOff?,
// showWeeklyTasks, showMonthlyTasks, showCompleted, showIgnored, theme, regionConfirmed,
// onboarded, showRoutines?, routineGames?, routinesOff?,
// routinesAsked? }
// routinesAsked?, routinesHidden?, standardPulls? }
// Chores and built-in weekly tasks are each one global
// answer plus the games that differ (src/shared/perGame.ts):
// an on-list wins, then an off-list, then the global answer.
@@ -270,8 +270,13 @@ Namespaced, versioned, and small. Nothing here ever goes to the server.
// routineGames is the games whose built-ins are on (the
// on-list, unchanged from before showRoutines existed),
// routinesOff the off-list, routinesAsked the games already
// asked about. Every list absent means none — built-ins are
// opt-in for every install. PRD F17.
// asked about. routinesHidden is routine ids stopped one by
// one: it narrows the game's answer and never widens it.
// standardPulls says whether a shop's standard-banner
// pulls are offered beside its premium ones; absent is
// false, premium only.
// Every list absent means none — built-ins are opt-in for
// every install. PRD F17.
// showWeeklyTasks / showMonthlyTasks say whether tasks of
// that period sit in the strip's row under the dailies.
// Both default true, so an install from before them keeps
@@ -574,9 +579,14 @@ removes the task record only.
**Built-in tasks** (`src/shared/routines.ts`) are not stored: they ship in the bundle, each with a
`source` URL and the `asOf` date that page gives, and their ticks and numbers are stored under their
`routine:` id exactly as a reader's task's are. Four prefs govern them: `showRoutines` (the answer
`routine:` id exactly as a reader's task's are. Six prefs govern them: `showRoutines` (the answer
for every game; **absent means never answered**, read as off), `routineGames` and `routinesOff`
(games that differ from it, on and off), and `routinesAsked` (games the strip already asked about).
(games that differ from it, on and off), `routinesAsked` (games the strip already asked about), and
`routinesHidden` (single built-ins the reader stopped tracking, by id), and `standardPulls` (whether a
shop's standard-banner line, `pulls: "standard"`, is offered at all; absent is no). A built-in is shown
when its game is on, it is offered **and** it is not hidden, so hiding one never changes the game's answer and a built-in
shipped later still arrives. Tracking one of a game that is off turns the game on with that one
alone — its siblings join `routinesHidden` (`trackRoutinePatch`, `usePrefs.ts`).
The lists are **absent meaning none**, so built-ins are opt-in for every install. `routineGames`
predates `showRoutines` and kept its meaning when it became the on-list — nothing was migrated, and
a tab still running an older shell reads it the same way. *Make it mine* adds a `mytask:` with `from: <routine id>` and copies
+22 -9
View File
@@ -315,11 +315,14 @@ title — and a goal makes an event a daily even with detection off.
are left; an unknown end leaves the days left unknown.
- **Set up from the strip, not just the sheet.** Giving Temper Thyself its goal used to mean finding
it in the list, opening it, saying it repeats and then setting the goal. The strip's **Edit** —
beside *Catch up*, and like it a mode of the section rather than a control on a chip — lists the
strip's events by game with each goal in words; one opens to the sheet's goal control, *Open
details* and *Remove from dailies*. Under each game, *Add an event · N* lists its running events
that are not in the strip yet; adding one opens its goal at once. It writes exactly what the sheet
writes, so nothing about a goal or an override changes meaning.
beside *Catch up*, and like it a mode of the section rather than a control on a chip — lists
everything the strip carries, by game: the game's standing chore, its built-in tasks (F17), then
its events with each goal in words. An event opens to the sheet's goal control, *Open details* and
*Stop tracking*; the chore and built-ins, which have no goal, carry *Stop tracking* on the row.
Under each game, *Track · N* lists what it could carry and does not — a chore or built-in that is
off, and running events not in the strip yet; tracking an event opens its goal at once. It writes
exactly what the sheet and settings write, so nothing about a goal, an override or a switch
changes meaning.
**F13 — Your own games and your own events.**
No feasible adapter set covers everyone. Fourteen games were named in the first release thread and
@@ -591,14 +594,24 @@ examples to start from, held to the same bar as the event form's (F13, *Examples
- **Theirs, kept and exported.** Deleting a task removes the task only; its ticks and numbers stay.
Both travel in the export, and import never rolls a newer week back.
**Some games' weekly tasks are built in** — ZZZ's Ridu Weekly (1,300 points) and Endfield's Weekly
Routine (10 points) so far, each from a cited page and shown with the date that page gives, so a
figure from an old guide is visibly old. They are **off until the reader says yes**: the strip asks
**Some games' weekly and monthly tasks are built in** — weekly bosses, battle pass EXP caps, a
monthly shop buy-out, endgame resets; the list per game, with the sentence each figure rests on and
what was looked for and not found, is in `docs/superpowers/specs/2026-10-14-built-in-routines-design.md`.
Each comes from a cited page and is shown with the date that page gives, so a figure from an old
guide is visibly old, and an item no page states is not shipped. They are **off until the reader says yes**: the strip asks
once, in one line, about a game on screen that has them — until the reader answers for every game —
and *What you see* governs them after: one switch for all of them, and *Choose games* for the games
that differ. The standing daily chores take the same shape, so a reader who wants Genshin's chore
and not Star Rail's can say so without losing either game's events. Built-ins are not edited in place; **Make it mine** copies one into the reader's
own tasks with its ticks and numbers, and hides the original while the copy exists.
own tasks with its ticks and numbers, and hides the original while the copy exists. **Any single
built-in can be tracked or not** — Endfield's weekly items but not one of them — from the strip's
Edit panel or *Your own*, which lists every built-in of the games that are on, untracked ones
included, so none is ever off with no way back. Stopping one keeps its ticks and numbers and never
changes the game's switch.
**A shop's pulls come in two lines** — the premium (limited-banner) pulls, tracked with the other
built-ins, and the standard-banner pulls most shops sell beside them, added only when the reader
switches on *Include standard-banner pulls* under the built-ins switch. One answer for every game;
off by default, so the reader chooses between premium only and both.
**F18 — What changed.**
The app now says what changed, in two tiers, both tied to git. **Short entries** — one line each,
@@ -0,0 +1,55 @@
# Built-in routines and per-item tracking — plan
Spec: `docs/superpowers/specs/2026-10-14-built-in-routines-design.md`. Branch `feat/built-in-routines`.
**Hold:** nothing is committed or pushed until the owner has verified the entries by hand
(owner, 2026-10-14). The work below is done in the working tree; § Commits is the split to apply
after sign-off, each step green on its own (AGENTS.md § Conventions).
## Tasks
1. **Hide one built-in (model).** `activeRoutines(rule, copiedFrom, hidden?)` and
`hiddenAfter(hidden, id, track)` in `src/shared/routines.ts`; `routinesHidden?` on `Prefs` and in
`restorePrefsValue`'s list sanitiser. Tests first in `test/routines.test.ts`. ✅
2. **Track one built-in (prefs).** `trackRoutinePatch(prefs, routine, track)` in `usePrefs.ts`:
stop → hide; track with game on → unhide; track with game off → game on via `setFor`, recorded
as asked, siblings hidden. Tests first. ✅
3. **Edit panel.** `StripStanding` and `standing` / `onTrack` on `StripEditor`; `laneGroups`
generic; per game: chore, built-ins, events; *Stop tracking* on each; *Track · N* over all three
kinds; rename *Remove from dailies* / *Add an event*. Tests first in `test/edit-dailies.test.tsx`. ✅
4. **App wiring.** Strip tasks exclude hidden built-ins; `standing` built from the strip's games
(chore unless a reader's own game, then that game's built-ins less copied ones); `onTrack` writes
`choresOn`/`choresOff` or `trackRoutinePatch`. ✅
5. **Your own.** Every built-in of the games that are on, *Not tracked* marked, Track / Stop
tracking beside *Make it mine*. Test in `test/custom-ui.test.tsx`. ✅
6. **Copy.** "weekly tasks" → "weekly and monthly tasks" for built-ins in `Dailies.tsx`,
`Controls.tsx`, `YourOwn.tsx`; per-game tooltip quotes the oldest source date. Tests updated. ✅
7. **Entries.** Add the spec's § Entries to `ROUTINES`; correct Ridu Weekly to 2,100 with its new
source; per-game table test pinned to the spec. ✅
8. **Review.** schema-guardian on the new pref — no blocking findings. ✅
9. **Docs.** PRD F12 (Edit panel) and F17, DATA-MODEL prefs block and built-in paragraph. ✅
10. **Browser check** of the Edit panel and *Your own* on a fresh port (AGENTS.md § Commands).
11. **Owner verification** of § Entries and § Not shipped — then apply any corrections to both the
entries and the spec table together.
12. **Changelog** — entry in a follow-up `chore(changelog)` commit naming the feature commit, then
`bun run scripts/check-changelog.ts`.
13. **Standard-banner pulls** (spec decision 10, owner 2026-10-16). Tests first: twin per standard
line, `activeRoutines` leaves standard out unless asked, `standardPulls` restore, Settings
switch. Then `pulls` on `RoutineSchema` and `offered()`; premium lines tagged; four standard
lines; `standardPulls` pref; App and Controls wiring; schema-guardian; PRD F17, DATA-MODEL. ✅
Browser check with task 10.
## Commits (after sign-off)
1. `feat(routines): let a reader stop tracking one built-in` — tasks 1–2.
2. `feat(dailies): track or stop tracking anything in the strip from Edit` — tasks 3–5.
3. `feat(routines): say "weekly and monthly" for built-ins` — task 6.
4. One `feat(routines): …` commit per game for task 7 — Genshin, Star Rail, ZZZ (including the
Ridu correction, as its own `fix(routines)` commit), Endfield (with the reset-hour evidence in
`games.ts`), NTE, Wuthering Waves, Infinity Nikki — each with its rows of the test table.
5. `feat(routines): let a reader add standard-banner pulls beside the premium ones` — task 13,
after the per-game commits: it carries the `pulls` field, the `pulls: "premium"` tags on the
existing shop lines, and the four standard lines, so each per-game commit stays green without it.
6. `docs: …` — spec, plan, PRD, DATA-MODEL, and TODO.md's open checks.
7. `chore(changelog): …` — task 12.
8. Separately, if the owner agrees: `fix(games): …` moving NTE's Europe server to UTC+2 (TODO.md).
@@ -0,0 +1,306 @@
# More built-in routines, and tracking any one of them — design
Date: 2026-10-14. Status: design approved (repository owner, 2026-10-14). Entries pending the
owner's manual verification before commit. Sub-project 1 of 3 — see § Scope.
## Problem
The owner asked for "the usual repeatable events" — weekly events, battle pass, shop resets — for
Genshin, Star Rail, ZZZ, Endfield, Infinity Nikki and NTE, and then Wuthering Waves. The app has one place these fit without
a new shape: built-in routines (`src/shared/routines.ts`, PRD F17), which shipped with two entries.
While designing it the owner added a second requirement: a reader must be able to **track or stop
tracking any single item** — not just a whole game's built-ins — and the same for every other thing
the dailies strip carries: a game's standing chore and repeating events such as Genshin's “To
Temper Thyself and Journey Far”. Their example: Endfield's weekly items, but not its Stock
Redistribution.
## Scope
The request split into three sub-projects, built in this order, each with its own spec and plan:
1. **This one** — more built-in weekly and monthly routines, sourced; per-item Track / Stop
tracking; copy generalised from "weekly" to "weekly and monthly".
2. **N-week cycles** — a period unit anchored to a known start (Star Rail's endgame modes on a
six-week rotation two weeks apart; ZZZ's two-week Shiyu Defense / Deadly Assault). A new stored
shape, so it needs its own schema review.
Facts in hand for it: Star Rail's Divergent Universe and Currency Wars share one points cap of
18,000 per period (owner, in game, 2026-10-14), and at 03:49 CEST that day the period read
5d 1h left — ending Monday 2026-10-19 at 05:00 CEST, the EU reset the app already uses.
The period's length (two weeks per the wiki research) is what sub-project 2 must still source.
Star Rail's three endgame modes, read in game by the owner at 01:52 UTC on 2026-10-14, each
ending at a Monday reset (03:00 UTC) two weeks after the last:
- Pure Fiction — 5d 1h → 2026-10-19
- Forgotten Hall (Memory of Chaos) — 19d 1h → 2026-11-02, which agrees with the wiki's next
Memory of Chaos opening `2026/11/02 04:00:00` server time (Forgotten Hall/Stages/4.6)
- Apocalyptic Shadow — 33d 1h → 2026-11-16
That is the six-week rotation staggered two weeks apart, with one anchor per mode.
Wuthering Waves' Whimpering Wastes, read in game by the owner at 00:10 UTC on 2026-10-16:
"Respawning Waters" refreshes in 10d 2h — Monday 2026-10-26 at the 03:00 UTC reset. The info
box says only that the challenges and rewards of Respawning Waters: Chasm and Torrents "reset
periodically", so the period's length is still to be sourced.
Its Tower of Adversity Hazard Zone, read the same night: resets in 24d 2h — Monday 2026-11-09
at the 03:00 UTC reset, which agrees with the 28-day chain found in research (Oct 12, Nov 9).
ZZZ's endgame modes, read in game by the owner at 00:22 UTC on 2026-10-16:
- Shiyu Defense — 2h 37m → Friday 2026-10-16 at 03:00 UTC, the reset to the minute
- Deadly Assault — "7d" (no hours shown) → Friday 2026-10-23, presumably at 03:00 UTC
- "Periodic Conquest" — 3d 2h → Monday 2026-10-19 at 03:00 UTC, so a weekly reset within it
Both modes roll on Fridays, a week apart; that agrees with the "Friday every two weeks" source
over the "every 15 days" one. Cycle lengths are still to be sourced — a reading after each
reset would give them directly.
NTE's Beyond the Rails, read in game by the owner at 00:34 UTC on 2026-10-16: "time remaining
5d 20h 26m", and the game's own text says special routes "typically reset every 14 days". That
ends Wednesday 2026-10-21 at 21:00 UTC — not the EU reset (04:00 UTC) but 05:00 UTC+8, the Asia
server's reset on Thursday. So this cycle may end at one instant for every server, which
sub-project 2 must model rather than assume a per-server Monday. "Typically" means the 14 days
can bend; this settles the 14-days-vs-once-per-version conflict in favour of 14 days.
NTE's Tycoon Incentive Fund, read in game by the owner on 2026-10-16: one pool shared by Pink
Paws Heist, the Weekly Match in Volley Star, and idle earnings from Display Case exhibitions in
the Going, Going, Gone collectibles warehouse. The in-game "Incentive Fund Guide" says it
provides "up to 1000000 fons every 14 days", and the owner's pool reads 1,050,000. The owner
then found why: the cap is raised by progress in the "Puka Membership Program", to at least
1,100,000; the game does not show the maximum. So the target differs per player — 1,000,000 is
the base, not the cap — and sub-project 2 must either let the reader set it or ship the base
with a note saying so. allthings.how (2026-05-06) instead calls Pink Paws' 1,000,000 a weekly
cap. Its timer, read at 00:43 UTC on 2026-10-16: "10d 2h / 14d" — a 14-day cycle ending Monday
2026-10-26 at 03:00 UTC.
3. **Dated battle pass and shop windows** as feed events — source and parser work.
One fact in hand: on 2026-10-14 at 03:45 CEST the owner read Endfield's current Protocol Pass
as ending in 20h 15m — about 2026-10-15 00:00 CEST (2026-10-14 22:00 UTC), to the minute the
countdown shows. A source still has to state it before an event is built from it.
A second: at 01:55 UTC on 2026-10-14 the owner read Genshin's current Battle Pass as expiring in
19d 1h — 2026-11-02 between 02:55 and 03:55 UTC, so most likely the 03:00 UTC (04:00 server)
reset that Monday. The same holds: a source has to state it.
A third: at 00:09 UTC on 2026-10-16 the owner read Wuthering Waves' Oscillated Coral shop, which
stocks gacha pulls and resets with the version update, as resetting in 26d 10h — 2026-11-11
between 10:09 and 11:09 UTC, a Wednesday, which reads as the next version's maintenance.
A fourth: at 00:17 UTC on 2026-10-16 the owner read ZZZ's New Eridu City Fund season as ending
in 3d 2h — Monday 2026-10-19 between 02:17 and 03:17 UTC, so the 03:00 UTC reset that day.
A fifth: at 00:47 UTC on 2026-10-16 the owner read Infinity Nikki's current Mira Journey as ending
in 13d 19h — Thursday 2026-10-29 between 19:47 and 20:47 UTC; not the Europe server's reset
(02:00 UTC), so likely a version-wide end such as 20:00 UTC (04:00 UTC+8).
## Decisions
1. **Entries are added to `ROUTINES` in place.** No new module, no data file. The existing bar is
kept without exception: each entry cites an `https` page that **states** the figure and the
reset, with the date that page gives for itself (`asOf`, the wiki's last-edited date) and the
day we read it (`checked`). An item no page states is not shipped and is listed in § Not shipped
so nobody searches for it again.
**Confirmed in game** (owner, 2026-10-14): when no page states an item the owner has checked in
the game, it may still ship. It links the best page there is, and its `note` reads `Confirmed in
game, YYYY-MM-DD.` — the figure is then visibly ours rather than the page's.
2. **A reset-only item is ticked once a period.** Spiral Abyss and Imaginarium Theater pages state
the reset day and no completion target, so they are `measure: { kind: "days", required: 1 }` —
"done this cycle" — rather than a star count we would be inventing.
3. **Ridu Weekly's target is corrected, its id kept.** 1,300 → 2,100 points, source moved from
Game8 (2 Dec 2025, still says 1,300) to the Fandom page (31 Aug 2026), whose history shows the
change on 2026-01-05. Ticks and numbers are stored under the id and the period start, so nothing
stored moves; a reader at 1,500 this week now reads as short of the target, which is true.
4. **Per-item tracking — one new pref, `routinesHidden?: string[]`**, routine ids the reader stopped
tracking one by one. Absent means none. It **narrows** the per-game rule and never widens it:
a built-in is on the strip when its game is on (`routineRule`) and its id is not hidden. Hiding
moves nothing the game's switch says, and a built-in shipped later for that game still arrives.
Ticks and numbers stay stored.
5. **Tracking one built-in of a game whose built-ins are off turns the game on with only that
one** (`trackRoutinePatch`): the game joins `routineGames` (via `setFor`), is recorded in
`routinesAsked` so the strip does not ask again, and its siblings are added to `routinesHidden`.
The reader asked for one item, not the game's list.
6. **One control for everything the strip carries — the strip's Edit panel.** Per game it lists the
standing chore, then built-ins, then repeating events, each with **Stop tracking**; under each
game **Track · N** lists what the game could carry and does not. Nothing new is stored for a
chore (it writes `choresOn` / `choresOff` through `setFor`) or an event (the existing
`progress.daily` override, goal removed with it as before). *Remove from dailies* and *Add an
event* are renamed **Stop tracking** and **Track** so the three kinds read alike.
7. **Settings keeps every built-in reachable.** *Your own* lists every built-in of the games that
are on, hidden ones included (marked *Not tracked*), each with Track / Stop tracking beside *Make
it mine*. Without that list a hidden built-in of a game the reader has focused away from would
be off with no way back.
8. **Copy says "weekly and monthly"** wherever built-ins are named: the strip's question, the
settings switch and its per-game chips, *Your own*'s heading. "and", not "&", so markup and
aria-labels read the same. The per-game tooltip quotes the **oldest** source date, since a game
now has several.
9. **Readers who said yes to every game's built-ins get the new ones without being asked** — that
is what the global switch says. Games with their first built-ins (Genshin, Star Rail, Wuthering Waves, NTE) are
asked once, by the existing one-line question.
10. **Standard-banner pulls are one switch, off by default** (owner, 2026-10-16: "Users should be
able to choose between only premium, or both"; the single switch chosen over per-item opt-out
and a per-game switch). A shop that sells pulls gets two built-ins: its premium (limited) line,
`pulls: "premium"`, offered like any other, and its standard line, `pulls: "standard"`, offered
only when the new pref `standardPulls?: boolean` is true — absent is false, so an existing
install gains nothing until it asks. `offered()` applies it below the game rule and per-item
tracking: the Edit panel, *Your own* and the strip all see only what is offered, and Settings
shows the switch (*Include standard-banner pulls*, nested under the built-ins switch) only when
a listed game has a standard line, naming those lines in its hint. A test pins that every
standard line has a premium twin in its game on the same period. `trackRoutinePatch` still
hides every sibling, standard ones included, when a reader tracks one item of a game that is
off: they asked for one item, so a later *Include* does not bring that game's standard line
back on its own. Boopons count as premium — they pay for Bangboo pulls (owner, 2026-10-16).
## Entries
Weekly entries roll with the game's Monday reset (`startsOn: 1`) on the reader's server.
| Id | Title | Period | Measure | Source (as of) | Owner check |
|---|---|---|---|---|---|
| `routine:genshin:weekly-bosses` | Weekly Bosses | week | 3 runs | genshin-impact.fandom.com/wiki/Weekly_Boss (2026-08-21) | 3 cost-halving runs and "every Monday 4AM GMT+1" (EU) confirmed in game by the owner, 2026-10-16 |
| `routine:genshin:battle-pass-exp` | Battle Pass weekly EXP | week | 10,000 EXP | …/wiki/Battle_Pass (2026-01-08) | 10,000 confirmed in game by the owner, 2026-10-14 |
| `routine:genshin:bounties` | Reputation Bounties | week | 3 bounties | …/wiki/Bounties (2026-06-13) | 3 a week, counted apart from Requests, and a Monday reset ("next refresh in 3 days" on Thursday) confirmed in game by the owner, 2026-10-16 |
| `routine:genshin:requests` | Reputation Requests | week | 3 requests | …/wiki/Request (2026-06-13) | 3 a week, counted apart from Bounties, confirmed in game by the owner, 2026-10-16 |
| `routine:genshin:realm-depot` | Realm Depot: Realm Treasures | week | ticked once | …/wiki/Serenitea_Pot/Realm_Depot (2026-10-12) | page says weekly; the **Monday confirmed in game** by the owner, 2026-10-16 ("refreshes in 3 days 3 hours 3 minutes" at 23:57 UTC on 15 Oct → Monday 03:00 UTC) — decision 1; a shape, not a figure (decision 2) |
| `routine:genshin:paimons-bargains` | Paimon's Bargains: Intertwined Fates | month, 1st | 5 fates | …/wiki/Paimon%27s_Bargains (2026-08-23) | stock 5 and "refreshes in 16d" on 16 Oct (→ 1 Nov) confirmed in game by the owner, 2026-10-16 |
| `routine:genshin:paimons-bargains-acquaint` | Paimon's Bargains: Acquaint Fates | month, 1st | 5 fates (**standard**, decision 10) | …/wiki/Paimon%27s_Bargains (2026-08-23) | page: Acquaint Fate stock 5 for Masterless Stardust, beside the Intertwined line |
| `routine:genshin:spiral-abyss` | Spiral Abyss | month, 16th | ticked once | …/wiki/Spiral_Abyss (2026-08-29) | measure is a shape (decision 2); 3h to reset at 23:5x UTC on 15 Oct (→ the 16th) confirmed in game by the owner, 2026-10-16 |
| `routine:genshin:imaginarium-theater` | Imaginarium Theater | month, 1st | ticked once | …/wiki/Imaginarium_Theater (2026-09-01) | measure is a shape (decision 2); 16d 3h to reset (→ 1 Nov) confirmed in game by the owner, 2026-10-16 |
| `routine:hsr:echo-of-war` | Echo of War | week | 3 runs | honkai-star-rail.fandom.com/wiki/Echo_of_War (2025-10-17) | page is a year old; 3 runs and the Monday reset confirmed in game by the owner, 2026-10-14 |
| `routine:hsr:nameless-honor-exp` | Nameless Honor weekly EXP | week | 8,000 EXP | …/wiki/Nameless_Honor (2026-08-26) | **confirmed in game** by the owner, 2026-10-14 (decision 1): the page states no cap; Monday from Echo of War's page |
| `routine:hsr:embers-exchange` | Embers Exchange: Star Rail Special Pass | month, 1st | 5 passes | …/wiki/Embers_Exchange (2026-07-12) | page says monthly; the **1st confirmed in game** by the owner, 2026-10-14 (decision 1) |
| `routine:hsr:embers-exchange-standard` | Embers Exchange: Star Rail Pass | month, 1st | 5 passes (**standard**, decision 10) | …/wiki/Embers_Exchange (2026-07-12) | page: stock 5, `refresh=m`; the 1st as for the Special Pass line |
| `routine:zzz:ridu-weekly` | Ridu Weekly | week | **2,100** points (was 1,300) | zenless-zone-zero.fandom.com/wiki/Ridu_Weekly (2026-08-31) | decision 3; 2,100 and the Monday reset (3d 2h on Friday 00:17 UTC) confirmed in game by the owner, 2026-10-16 |
| `routine:zzz:bounty-commissions` | Bounty Commissions (was "Lost Void Bounty Commissions") | week | 8,000 points | …/wiki/Hollow_Zero/Bounty_Commission (2025-03-21) | page is old; Lost Void page (2026-04-05) still says weekly; 8,000 shared by Lost Void and Enigma of the Labyrinth, Monday reset (3d 2h at 00:2x UTC Friday), confirmed in game by the owner, 2026-10-16 — title and unit follow the game |
| `routine:zzz:notorious-hunt` | Notorious Hunt | week | 3 runs | …/wiki/Notorious_Hunt (2026-02-26) | page states 3 a week, no day — Monday from Ridu Weekly's page; "up to 3 times per week" confirmed in game by the owner, 2026-10-16 |
| `routine:zzz:city-fund-exp` | New Eridu City Fund weekly EXP | week | 10,000 EXP | …/wiki/New_Eridu_City_Fund (2026-09-04) | **confirmed in game** by the owner, 2026-10-16 (decision 1): the page states no cap; Monday from Ridu Weekly's page |
| `routine:zzz:signal-shop-tapes` | Signal Shop: Encrypted Master Tapes | month, 1st | 5 tapes | …/wiki/Signal_Shop (2026-09-09) | page says monthly; the **1st confirmed in game** by the owner, 2026-10-16 ("refresh in 16d" at 00:19 UTC → 1 Nov) — decision 1 |
| `routine:zzz:signal-shop-master-tapes` | Signal Shop: Master Tapes | month, 1st | 5 tapes (**standard**, decision 10) | …/wiki/Signal_Shop (2026-09-09) | page: Fading Signal stock 5, `refresh=m`; the 1st as for the Encrypted line |
| `routine:zzz:signal-shop-boopons` | Signal Shop: Boopons | month, 1st | 5 Boopons | …/wiki/Signal_Shop (2026-09-09) | Bangbuck section, `refresh=m`; the owner confirmed in game, 2026-10-16, that Boopons sit there and asked for them as a second monthly target (they pay for Bangboo pulls); the monthly limit is on the discounted 20-Bangbuck line, "restock in 16d" (→ 1 Nov), confirmed in game by the owner, 2026-10-16 |
| `routine:endfield:weekly-routine` | Weekly Routine | week | 10 points | endfield.wiki.gg/wiki/Weekly_Routine (2026-04-11) | unchanged; title, target and the EU Monday reset hour confirmed in game by the owner, 2026-10-14 |
| `routine:endfield:focus-commissions` | Etchspace Salvage: Focus Commissions | week | 3 commissions | endfield.wiki.gg/wiki/Etchspace_Salvage (2026-09-01) | Monday from the wiki's own weekly-reset box, not this page; not yet confirmable in game (owner, 2026-10-14) — see TODO.md |
| `routine:wuwa:weekly-challenge` | Weekly Challenge | week | 3 claims | game8.co/games/Wuthering-Waves/archives/453471 (2026-09-30) || 3 a week ("3/3") confirmed in game by the owner, 2026-10-16 |
| `routine:wuwa:pioneer-podcast-exp` | Pioneer Podcast weekly EXP | week | **12,000** EXP (the wiki says 10,000) | wutheringwaves.fandom.com/wiki/Pioneer_Podcast/2026-02-05 (2026-07-03) | the v3.1 season page, the wiki's newest, is stale: **12,000 confirmed in game** by the owner, 2026-10-16 (decision 1) |
| `routine:wuwa:weekly-activities` | Weekly Activities | week | 6,000 points | game8.co/games/Wuthering-Waves/archives/605757 (2026-06-18) | 6,000 is the top milestone, not a stated cap; 6,000 max and the two modes (Fantasies of the Thousand Gateways, Phantasma Dreamland Rhapsoda) confirmed in game by the owner, 2026-10-16 |
| `routine:nikki:mira-journey-exp` | Mira Journey weekly EXP | week | 8,000 Journey EXP | infinity-nikki.fandom.com/wiki/Mira_Journey (2026-09-24) | the wiki answers again (2026-10-16); 8,000 confirmed in game by the owner, 2026-10-16 |
| `routine:nikki:realm-of-breakthrough` | Realm of Breakthrough | week | 2 trials | …/wiki/Realm_of_Breakthrough (2026-01-01) | two trials, once a week each; not yet confirmable in game (owner, 2026-10-16: story progress) — see TODO.md |
| `routine:nikki:resonance-revelation` | Resonance Store: Revelation Crystals | month, 1st | 5 crystals | …/wiki/Tranquility_Droplet (2025-12-26) | page marks the stock monthly; "monthly limit of 5" and "resets in 16d" (→ 1 Nov) **confirmed in game** by the owner, 2026-10-16 (decision 1) |
| `routine:nikki:resonance-resonite` | Resonance Store: Resonite Crystals | month, 1st | 5 crystals (**standard**, decision 10) | …/wiki/Tranquility_Droplet (2025-12-26) | page: stock 5, `refresh=m`; the 1st as for the Revelation line |
| `routine:nte:season-pass-exp` | Season Pass weekly EXP | week | 12,000 EXP | gamewith.net/nte/74371 (2026-09-03) || 12,000 confirmed in game by the owner, 2026-10-16 |
| `routine:nte:anomaly-pilgrimage` | Anomaly Pilgrimage | week | 3 claims | allthings.how/nte-weekly-activities-guide-every-reset-task-in-neverness-to-everness/ (2026-05-06) | sources conflicted (Game8's boss list, 2026-10-10: "once per week" per boss); **3 in total confirmed in game** by the owner, 2026-10-16 |
| `routine:nte:city-stamina` | City Stamina | week | 700 stamina | allthings.how/…-neverness-to-everness/ (2026-05-06) | page says "full bar to spend", no figure; **700 a week confirmed in game** by the owner, 2026-10-16 (decision 1) |
| `routine:nte:realm-of-greed` | Realm of Greed | week | ticked once | allthings.how/…-neverness-to-everness/ (2026-05-06) | owner asked for it, 2026-10-16; payout scales, so a shape (decision 2); the weekly reset confirmed in game ("Gold Heist resets every Monday at 5:00"), 2026-10-16; one payout a week is the guide's |
| `routine:nte:special-city-commission` | Special City Commission | week | ticked once | same page | owner asked for it; one claim a week and the weekly timer confirmed in game, 2026-10-16 |
The sentence each figure rests on:
- Weekly Bosses — "spend 30 Resin to claim the rewards from the first three weekly bosses …
reset at 4 AM server time every Monday."
- Battle Pass — "There is a weekly cap of 10000 EXP that can be obtained from daily and weekly
missions which resets on 4 AM server time each Monday."
- Bounties — "A total of 3 bounties can be completed each week"; Requests — "A total of 3
requests across all nations can be completed each week." Monday: genshin-impact.fandom.com/wiki/Reset.
- Realm Depot — Realm Treasures: "This shop refreshes weekly"; the stock totals 13,100 Realm Currency.
The day is the owner's in-game timer.
- Paimon's Bargains — "It resets on the 1st day of each month"; Intertwined Fate stock 5.
- Spiral Abyss — "will reset once a month, occurring on the 16th of each month."
- Imaginarium Theater — "The first day of every month, the Imaginarium Theater will automatically reset".
- Echo of War — "three times a week … refresh every Monday at 04:00 AM (Server Time)."
- Nameless Honor — no page states the cap; the owner read 8,000 weekly EXP in game on 2026-10-14.
The page says only that 'players can complete various weekly and "This Period" missions'.
- Embers Exchange — the stock table marks Star Rail Special Pass (stock 5) `refresh=m`, monthly; no
day. The owner's in-game countdown on 2026-10-14 (03:51 CEST, 18d 1h) ends 1 Nov 02:51–03:51 UTC,
around Star Rail's EU reset at 03:00 UTC — the 1st.
- Echo of War, in game — the owner read 3 attempts and 5d 1h to reset at 03:49 CEST, 2026-10-14:
Monday 05:00 CEST.
- Ridu Weekly — "A total of 2,100 points can be accumulated each week … refreshing each Monday with server reset."
- Bounty Commissions — "refresh every Monday at 04:00"; table tops out at 8,000.
- Notorious Hunt — "a total of 3 challenges can be completed at no Battery Charge cost per week"; in
game, "You can earn Notorious Hunt rewards up to 3 times per week" (owner, 2026-10-16).
- New Eridu City Fund — no page states the cap; the owner read 10,000 weekly EXP in game on 2026-10-16.
The page's only 10,000 is the Premium Plan's bonus City Fund EXP, which is unrelated.
- Signal Shop — Fading Signal: "the monthly limits reset at the same time as other exchanges"; Encrypted
Master Tape stock 5, `refresh=m`. No day; the owner's in-game timer gives the 1st.
Bangbuck: Boopon (20 Bangbuck) stock 5, `refresh=m`; a second, unlimited Boopon line costs 40.
- Weekly Routine — "reset at 4:00 server time every Monday"; fixed tasks "always amount to 10 points total".
- Focus Commissions — "3 Focus Commissions will be available every week".
- Weekly Challenge — "You can only claim rewards from Weekly Challenges up to 3 times per week …
The weekly limit is reset every Monday at 4AM of your server time."
- Pioneer Podcast — "Weekly Highlights reset on Monday at 4:00 AM (Server Time)"; "Podcast EXP from
'Seasonal Specials' quests do not count towards the 10,000 weekly cap."
The owner read 12,000 in game on 2026-10-16; the page's 10,000 is from v3.1 and no newer page exists.
- Weekly Activities — "Every Monday at 4:00 AM (Server Reset)"; "you can earn 6000 points by
completing stage 13".
- Mira Journey — "Players can earn up to a limit of 8000 Journey EXP a week." Reset — "The Weekly
Reset occurs every Monday at 04:00 (4:00 AM) server time", renewing "Mira Journey weekly tasks"
and "Realm of Breakthrough challenge refresh".
- Realm of Breakthrough — "Currently there are two Trials … Players can challenge Wish Master Chigda
& Guardian Beast Whirls once per week".
- Resonance Store — Tranquility Droplet inventory: Revelation Crystal, price 100 (`discount=40`), stock 5,
`refresh=m`. No day; the owner's in-game timer gives the 1st.
- NTE Season Pass — "There is a strict cap of 12,000 Experience Points per week … this cap only
applies to Daily and Weekly quests"; "Weekly quests reset every Monday at 5:00 AM Server Time."
- Anomaly Pilgrimage — "The reward pool is shared, so you get three reward claims total per week, not
three per boss"; "The window closes at the Monday reset." The owner confirmed 3 in total in game.
- Realm of Greed — "pays out a large Fons lump sum once per week"; overview table: "1 reward claim".
- Special City Commission — "The Old Mailbox in your second apartment delivers a once-per-week Fons
bounty"; "The reward is gated to a single claim per week."
- City Stamina — overview table: "Full bar to spend"; "If it has refilled to its full cap, the weekly
reset has already triggered". The owner read 700 weekly in game, 2026-10-16.
- All of these: "a tight weekly loop that resets every Monday at 5:00 AM server time".
## Not shipped
Looked for on 2026-10-14 and not shipped. Each is a candidate the owner may know a source for.
| Game | Item | Why |
|---|---|---|
| Genshin | Stygian Onslaught | Tied to version releases, not a week or month |
| Star Rail | Forgotten Hall (Memory of Chaos), Pure Fiction, Apocalyptic Shadow | Six-week rotations, not weeks or months → sub-project 2; the owner's in-game end dates are in § Scope |
| Star Rail | Divergent Universe / Currency Wars points | A two-week period, not a week → sub-project 2. Owner, in game, 2026-10-14: the two modes share one cap of 18,000 points per period, and the current period ends Monday 2026-10-19 at Star Rail's EU reset (05:00 CEST) |
| Endfield | Stock Redistribution | "Some items may also refresh weekly" — no figure |
| Endfield | Protocol Pass weekly missions | Missions change every week; no fixed target or EXP cap stated, and the owner found none in game (2026-10-14) |
| Endfield | Algorithmic Memories, Credit Store, Arsenal Exchange | No figure; Beta-era; daily store; a shop rotation, not a chore |
| Nikki | Merit Arena, Pinnacle Contest | No wiki page (2026-10-16); Merit Arena's weekly caps change per version and only a fan account gives numbers; Pinnacle Contest runs in half-month periods → sub-project 2 |
| ZZZ | Shiyu Defense, Deadly Assault | Multi-week cycles → sub-project 2; the owner's in-game dates are in § Scope |
| Wuwa | Oscillated Coral exchange (gacha pulls) | Resets with each version update, not a week or month — the owner confirmed this in game, 2026-10-16. A dated window → sub-project 3 (§ Scope) |
| Wuwa | Afterglow Coral exchange, Souvenir Stores, Tactical Hologram shops | No limit, or no stated reset |
| Wuwa | Simulation Training, Forgery | Cost Waveplates; no weekly cap |
| Wuwa | Tower of Adversity Hazard Zone (28 days), Whimpering Wastes | Multi-week → sub-project 2; the owner's in-game dates for both are in § Scope |
| NTE | Tycoon Incentive Fund (Pink Paws Heist, Volley Star weekly match, Display Case idle earnings) | A 14-day cycle by the game's own guide, not a week → sub-project 2 (§ Scope). The guide this branch cites calls Pink Paws' cap weekly; the game disagrees. The cap also differs per player (Puka Membership Program) |
| NTE | Lost Exchange | Single launch-era source; nothing to count |
| NTE | Beyond the Rails | 14-day cycle → sub-project 2; the owner's in-game date is in § Scope |
**One finding outside this change:** Game8's NTE boss page (2026-10-10) says the weekly timer
resets "every Monday at 4AM", while `games.ts` has NTE on 05:00 (Game-Time-Master, neverness.gg,
GameWith). If 04:00 is right, NTE's day keys are off by an hour. That needs checking in the game,
and changing it is a day-key change under AGENTS.md § Event IDs. Not touched here.
Re-checked 2026-10-16: Game-Time-Master's `game-data.js` (last changed 2026-10-10) still has NTE
Europe at `dailyReset: "05:00"`, `Etc/GMT-1`, as `ccc4eb6` took it; it lists daily resets only.
GameWith's season-pass page, which the NTE entry already cites, puts the *weekly* quests on
"every Monday at 5:00 AM Server Time". So Game8 stands alone, and 05:00 stays.
**Overturned by the game, 2026-10-16.** At 00:40 UTC on Friday the owner read the Special City
Commission's weekly timer as 3d 2h. A reset at 04:00 UTC (what `games.ts` has for Europe) would
have read 3d 3h; the reading lands on **Monday 03:00 UTC** — 05:00 CEST. Two explanations fit and
agree until the clocks change on 2026-10-25: (1) Game8's 04:00 on a fixed UTC+1, or (2) 05:00 on a
Europe server that follows Central European summer time, which allthings.how hints at ("Europe
uses BST or CET equivalents") and Game-Time-Master's fixed `Etc/GMT-1` would miss. After 25 Oct a
weekly timer tells them apart: (1) puts the reset at 03:00 UTC still, (2) at 04:00 UTC. Not
changed with the built-ins — it re-labels logged ticks (AGENTS.md § Event IDs) — but in its own
`fix(games)` commit on this branch.
The game's own text leans to (2): Realm of Greed says "Gold Heist resets every Monday at 5:00"
(owner, 2026-10-16). With the reset seen at 03:00 UTC, that 5:00 is UTC+2 — Central European
summer time — where (1) would print 4:00. One reading after 2026-10-25 still confirms it.
**Then the fund's timer ruled (2) out, 2026-10-16.** At 00:43 UTC the Tycoon Incentive Fund read
10d 2h, ending Monday 2026-10-26 at **03:00 UTC** — the day *after* the clocks change, where (2)
would put 04:00 UTC (10d 3h). The one reading that fits every observation — both timers and the
game's "5:00" — is (3): **05:00 on a Europe server fixed at UTC+2**, i.e. 03:00 UTC all year, as
Infinity Nikki's Europe server already is in `games.ts`. That is a one-number change
(`resetOffsets.europe: 2` for `nte`), still a day-key change and still outside this branch.
## Testing
- `test/routines.test.ts`: every entry parses and cites a dated `https` page (existing); a per-game
table pins each title, period and measure to § Entries; hiding narrows the rule and moves
nothing else; `hiddenAfter` and `trackRoutinePatch`, including tracking one of an off game;
`routinesHidden` survives `restorePrefsValue` with junk dropped.
- Standard pulls (decision 10): every standard line has a premium twin on the same period; standard
lines are left out of `activeRoutines` unless asked for, and nothing else moves; `standardPulls`
survives `restorePrefsValue` with junk dropped. `test/controls.test.tsx`: the switch is offered
beside the built-ins switch, names the lines, reads its pref, and is absent when no listed game
has a standard line.
- `test/edit-dailies.test.tsx`: chore, built-ins and events listed per game in that order, each
with Stop tracking; Track · N counts all three kinds; a game with only standing items gets a group.
- `test/custom-ui.test.tsx`: a hidden built-in stays listed in *Your own*, marked and trackable.
## Docs
PRD F17 (built-ins list and tracking), PRD F12's Edit panel paragraph (renamed controls),
DATA-MODEL (`routinesHidden` and `standardPulls` in the prefs block and the built-in tasks paragraph), and a changelog
entry once the commit exists.