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", () => {