From 387fc1d2e4cecfb4dedaa644bcb80f5112c086ab Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Fri, 16 Oct 2026 03:00:31 +0200 Subject: [PATCH] fix(routines): Ridu Weekly tops out at 2,100 points, not 1,300 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The wiki recorded 2,100 on 2026-01-05 and the owner confirmed it in game; Game8's page still says 1,300. Same id, so logged numbers are kept — a week logged at 1,300 now reads 1,300 of 2,100. Co-Authored-By: Claude Opus 5.5 --- src/shared/routines.ts | 12 +++++++----- test/custom-ui.test.tsx | 4 ++-- test/routines.test.ts | 6 +++--- test/views.test.tsx | 6 +++--- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/shared/routines.ts b/src/shared/routines.ts index 29f5b33..1b27e8c 100644 --- a/src/shared/routines.ts +++ b/src/shared/routines.ts @@ -181,11 +181,13 @@ export const ROUTINES: readonly Routine[] = [ game: "zzz", title: "Ridu Weekly", period: { unit: "week", startsOn: 1 }, - // The last milestone; every reward is claimed by then. - measure: { kind: "amount", target: 1300, unit: "points" }, - source: "https://game8.co/games/Zenless-Zone-Zero/archives/484723", - asOf: "2025-12-02", - checked: "2026-10-13", + // The last milestone; every reward is claimed by then. Was 1,300 until the + // wiki recorded 2,100 on 2026-01-05 — Game8's page still says 1,300. + measure: { kind: "amount", target: 2100, unit: "points" }, + source: "https://zenless-zone-zero.fandom.com/wiki/Ridu_Weekly", + asOf: "2026-08-31", + checked: "2026-10-14", + note: "Confirmed in game, 2026-10-16.", }, // Arknights: Endfield. diff --git a/test/custom-ui.test.tsx b/test/custom-ui.test.tsx index 96c0010..1e188a1 100644 --- a/test/custom-ui.test.tsx +++ b/test/custom-ui.test.tsx @@ -1333,8 +1333,8 @@ describe("built-in weekly and monthly tasks in Your own", () => { routines={routinesFor("zzz")} onMakeItMine={noop} />, ); expect(html).toContain("Ridu Weekly"); - expect(html).toContain("as of 2 Dec 2025"); - expect(html).toContain('href="https://game8.co/games/Zenless-Zone-Zero/archives/484723"'); + expect(html).toContain("as of 31 Aug 2026"); + expect(html).toContain('href="https://zenless-zone-zero.fandom.com/wiki/Ridu_Weekly"'); expect(html).toContain("Make it mine"); }); diff --git a/test/routines.test.ts b/test/routines.test.ts index 99355be..5d12436 100644 --- a/test/routines.test.ts +++ b/test/routines.test.ts @@ -69,7 +69,7 @@ describe("ROUTINES", () => { ["Embers Exchange: Star Rail Special Pass", { unit: "month", startsOn: 1 }, { kind: "amount", target: 5, unit: "passes" }], ]); expect(shape("zzz")).toEqual([ - ["Ridu Weekly", week, { kind: "amount", target: 1300, unit: "points" }], + ["Ridu Weekly", week, { kind: "amount", target: 2100, unit: "points" }], ]); expect(shape("endfield")).toEqual([ ["Weekly Routine", week, { kind: "amount", target: 10, unit: "points" }], @@ -85,7 +85,7 @@ describe("ROUTINES", () => { now: Date.parse("2026-10-15T12:00:00Z"), logged: [], amounts: { "2026-10-12": { value: 900, at: "2026-10-15T12:00:00.000Z" } }, }); - expect(s).toMatchObject({ scope: "week", count: 900, required: 1300 }); + expect(s).toMatchObject({ scope: "week", count: 900, required: 2100 }); }); }); @@ -239,7 +239,7 @@ describe("making a built-in your own", () => { const ridu = routinesFor("zzz")[0]!; expect(mineFrom(ridu)).toEqual({ game: "zzz", title: "Ridu Weekly", period: { unit: "week", startsOn: 1 }, - measure: { kind: "amount", target: 1300, unit: "points" }, from: "routine:zzz:ridu-weekly", + measure: { kind: "amount", target: 2100, unit: "points" }, from: "routine:zzz:ridu-weekly", }); }); }); diff --git a/test/views.test.tsx b/test/views.test.tsx index eed342f..93c857e 100644 --- a/test/views.test.tsx +++ b/test/views.test.tsx @@ -1499,15 +1499,15 @@ describe("built-in weekly and monthly tasks in the strip", () => { const NOW = Date.parse("2026-10-15T12:00:00.000Z"); const ridu = routinesFor("zzz")[0]!; const status: GoalStatus = { - scope: "week", measure: "amount", periodStart: "2026-10-12", required: 1300, count: 0, - met: false, needed: 1300, open: 4, shortfall: false, + scope: "week", measure: "amount", periodStart: "2026-10-12", required: 2100, count: 0, + met: false, needed: 2100, open: 4, shortfall: false, }; test("a routine draws like a task, and its tooltip says its source date", () => { const [group] = dailyGroups(["zzz"], [], NOW, "europe", (id) => metaFor(id, {}), (e) => Date.parse(e.startsAt), false, undefined, [ridu], () => status); expect(group!.items[0]!.key).toBe("routine:zzz:ridu-weekly"); - expect(group!.items[0]!.title).toContain("as of 2 Dec 2025"); + expect(group!.items[0]!.title).toContain("as of 31 Aug 2026"); }); test("the question shows on its own, and names the game", () => {