Commit Graph
625 Commits
Author SHA1 Message Date
gitea-actions[bot] ac66348aff chore(data): refresh source snapshots
Automated fetch from Refresh sources run 419.
2026-10-20 17:28:41 +00:00
gitea-actions[bot] a2544b95ca chore(data): refresh source snapshots
Automated fetch from Refresh sources run 416.
2026-10-20 05:28:50 +00:00
Lucas WintherandClaude Opus 5.5 9fe14114ba chore(changelog): note the shine (54d13d7) and Settings pills (9c22a85)
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 8s
CI / Container image (push) Successful in 37s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 04:27:40 +02:00
Lucas WintherandClaude Opus 5.5 54d13d7472 feat: shine a code redeemed or an event completed on its way out
A code redeemed on its last server sweeps in the game's colour and greys
in place for 0.8 s, then lands in Redeemed or expired. A completed event
greys and shines while its Moved to Archive notice holds, now 0.9 s
rather than 1.5 s, which read as unresponsive; an ignored one only greys.

Settings → Appearance gains Motion & celebrations as three What to track
cards: Reduce motion (stops every animation and the fireworks, adding to
the device's own setting), Fireworks, and Shine. Reduce motion locks the
other two off without forgetting them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 04:26:50 +02:00
Lucas WintherandClaude Opus 5.5 9c22a85134 fix(settings): give Settings pills room and the outlined buttons' size
Theme and Timeline design pills sat 1px under their help text and, in
Relaxed, in a dark well at 12px/32px beside 13px/37px outlined buttons,
which read as off-centre. Under a help line they now sit 16px below it,
like the scheme choices, and in Settings take the buttons' type, height
and a hairline tray.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 04:24:53 +02:00
Lucas WintherandClaude Opus 5.5 3e3759b1eb chore(changelog): note the kept game tab (83a2557)
CI / Typecheck, test, feed (push) Successful in 17s
CI / Build site (push) Successful in 11s
CI / Container image (push) Successful in 37s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:40:15 +02:00
Lucas WintherandClaude Opus 5.5 83a255754c feat(settings): keep the game tab when switching games
Codes in one game now opens Codes in the next. The reader app holds the
tab and GameSettings reads it, instead of each game page minting its own.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:39:52 +02:00
Lucas WintherandClaude Opus 5.5 94a2faa6f6 chore(changelog): note confirmed-dead codes (b8e8d44)
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 8s
CI / Container image (push) Successful in 37s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:35:09 +02:00
Lucas WintherandClaude Opus 5.5 b8e8d44816 feat(codes): mark a code dead once the owner confirms it in game
Game8 still lists Y1INABQB6DEX, 2BJ64QRZ7RT8 and PLDXIB886Y1S as active
Genshin codes after the game refused them. CODE_CHECKS records the
owner's in-game check; build-codes stamps the matching code confirmedDead,
and the Codes tab shows it expired: "Confirmed expired in game, 2026-10-20."

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-20 03:34:52 +02:00
gitea-actions[bot] 7569aa6395 chore(data): refresh source snapshots
Automated fetch from Refresh sources run 409.
2026-10-19 17:28:47 +00:00
gitea-actions[bot] 81337351cc chore(data): refresh source snapshots
Automated fetch from Refresh sources run 406.
2026-10-19 05:28:46 +00:00
Lucas WintherandClaude Opus 5.5 9023944655 chore: keep the Impeccable detector's font exceptions
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 8s
CI / Container image (push) Successful in 38s
.impeccable/config.json tells the design checker not to flag the
off-system fonts in three mockups (round 6 B's Barlow, round 7's
Bricolage Grotesque, the B routines brainstorm), each with the owner's
reason. Tracked so every checkout gets the same exceptions; the local
config and the hook cache stay ignored.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 22:46:53 +02:00
Lucas WintherandClaude Opus 5.5 c4d0d1b925 chore(changelog): note celebrations for each thing finished (f17b798)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 22:46:53 +02:00
Lucas WintherandClaude Opus 5.5 f17b7985ef feat(celebrations): a burst for each thing finished, and a switch for all of it
The redesign only celebrated a finished section, so ticking one daily or
completing an event drew nothing. Now a daily ticked, a routine met, an
amount typed to its target and an event marked completed each fire the
small burst; the item that finishes every daily or a game's routines gets
only the grand celebration. Settings → Appearance → Celebrations
(prefs.celebrations, on unless false) turns every firework off.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 22:46:46 +02:00
gitea-actions[bot] 185ccb2507 chore(data): refresh source snapshots
Automated fetch from Refresh sources run 399.
2026-10-18 17:28:56 +00:00
gitea-actions[bot] a61098d229 chore(data): refresh source snapshots
Automated fetch from Refresh sources run 396.
2026-10-18 05:28:46 +00:00
Lucas WintherandClaude Opus 5.5 a4426aaebc chore(changelog): note the fuller tour (874d862)
CI / Typecheck, test, feed (push) Successful in 19s
CI / Build site (push) Successful in 9s
CI / Container image (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:27:25 +02:00
Lucas WintherandClaude Opus 5.5 874d8627a2 feat(tour): a welcome of its own, the owner's order, and the way to codes
The tour opens on a welcome over the dimmed Checklist, then shows the bar
along the top, then the Checklist and Timeline with their looks, Routines,
Archive and Settings. Codes get three steps that walk the way in (the game
in Settings, its Codes tab, the codes), and the last step points at Replay
the introduction. A replay now dims and locks the page like the first run,
keeping only Close tour. Subjects out of sight scroll into view, and the
ring stays inside the window.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:27:02 +02:00
Lucas WintherandClaude Opus 5.5 83ed9fa3fa chore(changelog): note used codes and the new-code marker (3b29010)
CI / Typecheck, test, feed (push) Successful in 19s
CI / Build site (push) Successful in 9s
CI / Container image (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:15:51 +02:00
Lucas WintherandClaude Opus 5.5 3b29010e7c feat(codes): redeemed and expired codes move below, and new codes are marked
A game's Codes tab lists the codes still to use first; a code redeemed on
every server played, or past its stated expiry, is greyed in a "Redeemed or
expired" section below. A date-only expiry passes once that date has ended
everywhere. Settings → Your games marks a followed game with its count of
unseen, still usable codes until its Codes tab is opened.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:15:36 +02:00
Lucas WintherandClaude Opus 5.5 3c81b9b0f1 chore(changelog): note the tour highlights and safer saves (94fba4d, 5be04a7)
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 9s
CI / Container image (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:11:28 +02:00
Lucas WintherandClaude Opus 5.5 5be04a7439 feat(tour): highlight each step, and make the comparing steps try both looks
Owner feedback on the forced tour. Each step rings what it is about and,
while forced, dims the rest of the page around it. "Pick a layout" and the
Timeline step hold Continue until both options have been on screen, scroll
their subject to the top of the window and, on wide screens, move the card
to the right edge so the page has room to show the difference.

Guards for the reported snap-back and endless tour, which did not
reproduce: the effect that moves an unseen reader to Relaxed fires at most
once per page load and never after the tab saw the tour done, and setup
saves only the prefs it changed.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:10:42 +02:00
Lucas WintherandClaude Opus 5.5 94fba4d7b5 fix(reader): open the save under the reader lock, and cap automatic backups
Follow-up to the 2026-10-18 review of the v1→v2 migration. Start-up
(finishing a pending restore, then migrating or reconciling) now runs under
the lock every save takes, so a second tab's save cannot be overwritten;
where no lock exists it opens unlocked, as before. The automatic backups get
a size cap like Back up now's: past it the oldest are dropped, never the
newest, leaving the main save room to grow.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 05:09:58 +02:00
Lucas WintherandClaude Opus 5.5 6720c72840 chore(changelog): note the tour for everyone (d8ce442)
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 9s
CI / Container image (push) Successful in 37s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 04:45:53 +02:00
Lucas WintherandClaude Opus 5.5 d8ce442cff feat(tour): everyone takes the tour once, and tries the layouts in it
The tour now floats over the page it describes and must be finished
before the app can be used: new readers straight after setup, returning
readers on their next visit, and anyone who saw the earlier tour. The
page behind stays visible and scrollable but inert.

"Pick a layout" (on the Checklist) and the Timeline step switch Relaxed /
Structured and New / Classic in place; the selected look is kept.
Returning readers start on Relaxed. A replay from Settings stays
optional and closable.

redesignTourSeen now records new / returning / replay / 2026-10-tour-2;
any other value means not yet taken.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 04:45:02 +02:00
Lucas WintherandClaude Opus 5.5 0abca649fa chore(changelog): note codes for eight more games (254e78f)
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 7s
CI / Container image (push) Successful in 36s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 04:21:06 +02:00
Lucas WintherandClaude Opus 5.5 254e78f4d1 feat(codes): redeem codes for eight more games, and where to redeem them
Game8 codes pages for Star Rail, ZZZ, Wuthering Waves, Endfield, NTE,
P5X, Chaos Zero Nightmare and Umamusume, read by one table parser told
each page's active-codes heading. Each page was fetched once and pinned
as a fixture. Infinity Nikki's page is stale (still titled July 2025)
and is left out.

The Codes tab links the publisher's own redeem page where one exists
(Genshin, Star Rail, ZZZ) and gives the in-game route for every game,
and names the server on a redeemed checkbox only when there are two.

Settings uses the width of a large screen: content up to 1320px and the
menu column running the full height.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 04:20:45 +02:00
Lucas WintherandClaude Opus 5.5 6fb084350a chore(changelog): note the redesign (ddd9673..50c6e91)
CI / Typecheck, test, feed (push) Successful in 18s
CI / Build site (push) Successful in 8s
CI / Container image (push) Successful in 40s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 01:56:24 +02:00
Lucas WintherandClaude Opus 5.5 50c6e91b00 feat: the redesigned Event Clock
The new reader app replaces the old UI: Checklist with a rail (focus
pills, Next to expire, today's dailies, pinned routines), Timeline in a
new and a classic look, Routines, Archive and a Settings area, in a
Structured (default) and a Relaxed interface. It follows the approved
Round 6 B and Round 7 mockups, corrected screen by screen with the owner.

Reader data moves to a v2 store (gacha-tracker:v2:*). Existing v1 data
is migrated on first load, a recovery copy is written first, and the v1
keys are never removed, so a rollback finds them unchanged. Redeem codes
for Genshin arrive as their own feed.

Also: live's urgency ramp, editable per theme; completion and
section-complete fireworks; a returning-user tour; the design mockups,
specs, plans, reviews and handoff record.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 01:55:16 +02:00
gitea-actions[bot] ddd9673f86 chore(data): refresh source snapshots
Automated fetch from Refresh sources run 383.
2026-10-17 17:28:26 +00:00
gitea-actions[bot] ef1944b51c chore(data): refresh source snapshots
Automated fetch from Refresh sources run 363.
2026-10-17 05:28:29 +00:00
gitea-actions[bot] cdfdf162c9 chore(data): refresh source snapshots
Automated fetch from Refresh sources run 360.
2026-10-16 17:28:24 +00:00
gitea-actions[bot] 69f0cf30e3 chore(data): refresh source snapshots
Automated fetch from Refresh sources run 357.
2026-10-16 05:28:30 +00:00
Lucas WintherandClaude Opus 5.5 ee413892ff docs: a handoff note for the next agent, and the worktree feed trap
CI / Typecheck, test, feed (push) Successful in 17s
CI / Build site (push) Successful in 7s
CI / Container image (push) Successful in 16s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:46:53 +02:00
Lucas WintherandClaude Opus 5.5 256ea71cc0 docs: mark sub-projects 2 and 3 shipped; record the reviews' deferred items
CI / Typecheck, test, feed (push) Successful in 15s
CI / Build site (push) Successful in 7s
CI / Container image (push) Successful in 16s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:45:30 +02:00
Lucas WintherandClaude Opus 5.5 c2cc685f65 docs: correct the source count and the pass readers' entries
CI / Typecheck, test, feed (push) Successful in 15s
CI / Build site (push) Successful in 9s
CI / Container image (push) Successful in 35s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:37:23 +02:00
Lucas WintherandClaude Opus 5.5 57406979c2 fix(sources): a pass page between runs says so, rather than reading as broken
When a pass's last listed run ends before the wiki adds the next one, the
history table parses to zero. ZZZ's City Fund would have done that on
19 Oct and been counted as a failed source. statesNoEvents now answers
for the page: its pass table is there and dates its runs, all of them
past. Found in the whole-branch review.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:35:33 +02:00
Lucas WintherandClaude Opus 5.5 1b116218e3 fix(sources): Mira Journey ends at Asia's reset after the version's last day
The Version table prints the version's last day as its End Date. Read as
an ordinary day-precision end, the event left the calendar 9 to 24 hours
before the pass did. The owner's timer on Europe put the end at about
20:00 UTC on 29 Oct: Asia's 04:00 reset opening the 30th, for every
server. The source's entry now says so, with that evidence, and the
event ends at exactly 2026-10-29T20:00Z. Found in the whole-branch
review.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:35:02 +02:00
Lucas WintherandClaude Opus 5.5 cbcd8c594c chore(changelog): note battle pass windows (0a4be4e..ec66967)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:30:04 +02:00
Lucas WintherandClaude Opus 5.5 63724eb783 docs: pass windows shipped for Star Rail, ZZZ and Nikki; Endfield waits
Records why Miliastra was reverted and why Endfield's Protocol Pass has
no source yet, updates AGENTS.md's parser list and marks sub-project 3
in TODO with the follow-ups.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:29:31 +02:00
Lucas WintherandClaude Opus 5.5 b6cc3b1f51 revert: drop Genshin's Miliastra Pass source
Fandom's Event page, an existing source, already lists the pass as
"Silvery Moonlight Chronicle" with the same dates, and the merge folded
the new copy into it. The feed was unchanged, so a second source for one
event is cost with nothing to show. This reverts 9f8150f.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:28:51 +02:00
Lucas WintherandClaude Opus 5.5 ec669675ed feat(sources): Infinity Nikki's Mira Journey window, from its version
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:24:40 +02:00
Lucas WintherandClaude Opus 5.5 a6a8efa661 feat(sources): ZZZ's City Fund pass windows from Fandom
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:22:05 +02:00
Lucas WintherandClaude Opus 5.5 9f8150fda7 feat(sources): Genshin's Miliastra Pass windows from Fandom
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:20:22 +02:00
Lucas WintherandClaude Opus 5.5 0a4be4e339 feat(sources): Star Rail's Nameless Honor pass windows from Fandom
New `fandomtable` parser (src/ingest/parsers/fandomTable.ts) reads Fandom's
dated pass-history table by its Name/Start/End headings and emits runs not
yet ended by ctx.now, at day precision. Titles come from a per-source
PASS_SOURCES table so the next pass pages are one entry each.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:17:00 +02:00
Lucas WintherandClaude Opus 5.5 40d0dbef5a fix(build): pick a source's own fixture, not a sibling page's on the same site
build-feed globbed fixtures by site (`fandom-*`), so a second Fandom page
for a game, such as Genshin's Miliastra Pass beside its event page, would
have handed its fixture to the events parser. pickFixture matches the
source's whole name followed by a date. Every fixture already follows
that name, and the built feed is unchanged (206 events, same ids).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:10:51 +02:00
Lucas WintherandClaude Opus 5.5 6e7c231160 docs(plan): battle pass windows as feed events
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:09:44 +02:00
Lucas WintherandClaude Opus 5.5 f6a82c4b1f docs(spec): battle pass windows as feed events (sub-project 3)
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 06:09:07 +02:00
Lucas WintherandClaude Opus 5.5 9488053432 docs(todo): the owner's in-game checks for the cycle built-ins
CI / Typecheck, test, feed (push) Successful in 16s
CI / Build site (push) Successful in 8s
CI / Container image (push) Successful in 36s
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 05:49:12 +02:00
Lucas WintherandClaude Opus 5.5 5080397999 fix(dailies): a built-in on another server's clock leaves the header countdown alone
Beyond the Rails rolls on Asia's reset, and the header took the soonest
reset of every chip, so a Europe NTE reader read "next reset in 1h" at
20:00 UTC when their day rolls in seven. The countdown now counts the
reader's own clocks. Found in the whole-branch review.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-16 05:46:50 +02:00