From 84ea00c059abc6e06d33d59029c01ce1cbed685e Mon Sep 17 00:00:00 2001 From: Lucas Winther Date: Tue, 13 Oct 2026 12:44:16 +0200 Subject: [PATCH] feat(colophon): thank Game-Time-Master for the reset clocks Every server's reset hour and offset was checked against it, so it is credited beside the schedules' sources. Co-Authored-By: Claude Opus 5.5 --- src/client/components/Colophon.tsx | 26 ++++++++++++++++++++++++++ test/custom-ui.test.tsx | 13 ++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/src/client/components/Colophon.tsx b/src/client/components/Colophon.tsx index 4a4416e..275dc11 100644 --- a/src/client/components/Colophon.tsx +++ b/src/client/components/Colophon.tsx @@ -83,6 +83,20 @@ export const IDEA_CREDITS = [ }, ] as const; +/** + * Where the daily reset clocks come from. + * + * Every game's reset hour and server offset in `games.ts` was checked against + * Game-Time-Master, which keeps a zone and a reset time for each server of each + * game. The values are transcribed facts, not its code — it is GPL-3.0 and + * nothing of it ships here — so this is thanks, beside the schedules' sources, + * rather than a NOTICE entry. + */ +export const RESET_CLOCK_CREDIT = { + name: "Game-Time-Master", + url: "https://github.com/cicerakes/Game-Time-Master", +} as const; + /** * How many lagging games to name before summarising the rest. * @@ -375,6 +389,18 @@ export function Colophon({ ))} {", whose editors compile and maintain the event calendars this reads from. The schedules are their work; this page only rearranges them."}

+

+ To{" "} + + {RESET_CLOCK_CREDIT.name} + + , whose per-server reset times set every daily clock here. +

And to{" "} {studios.map((studio, i) => ( diff --git a/test/custom-ui.test.tsx b/test/custom-ui.test.tsx index 4a4ad99..187e32f 100644 --- a/test/custom-ui.test.tsx +++ b/test/custom-ui.test.tsx @@ -12,7 +12,7 @@ import { import { eventCaption, YourOwn } from "../src/client/components/YourOwn.tsx"; import { EventRow } from "../src/client/components/EventRow.tsx"; import { EventDetail } from "../src/client/components/EventDetail.tsx"; -import { AUTHOR, Colophon, REPO_URL } from "../src/client/components/Colophon.tsx"; +import { AUTHOR, Colophon, REPO_URL, RESET_CLOCK_CREDIT } from "../src/client/components/Colophon.tsx"; import { GameMetaProvider } from "../src/client/state/gameMeta.tsx"; import { asDisplayEvent, @@ -502,6 +502,17 @@ describe("Colophon freshness notice (PRD F7)", () => { // muted class as its neighbours, and no ask anywhere in the footer. expect(html).not.toMatch(/support me|buy me|donate|tip jar/i); }); + + test("thanks Game-Time-Master for the reset clocks, beside the sources", () => { + // Every daily reset the app counts down to was checked against it, so it is + // credited where the schedules' sources are rather than among the ideas. + const html = renderToStaticMarkup(); + expect(html).toContain(RESET_CLOCK_CREDIT.url); + expect(html).toContain(RESET_CLOCK_CREDIT.name); + const credit = html.indexOf(RESET_CLOCK_CREDIT.url); + expect(credit).toBeGreaterThan(html.indexOf("With thanks to")); + expect(credit).toBeLessThan(html.indexOf("Not affiliated")); + }); }); describe("stating a repeat", () => {