Skip to content

SEPTEMBER: Tossup replayer on Packets page - #603

Merged
geoffrey-wu merged 5 commits into
qbreader:mainfrom
dn285:geoword-packet-clues
Oct 18, 2026
Merged

geoffrey-wu merged 5 commits into
qbreader:mainfrom
dn285:geoword-packet-clues

Conversation

@dn285

@dn285 dn285 commented Oct 18, 2026

Copy link
Copy Markdown
Contributor
  1. Merge Geoword upload upsert #602, then this PR, then deploy. The deploy's usual npm run build compiles the new pager styles. There are no new dependencies, environment variables or migrations.
  2. To add clue timing to packets already in the database, run the steps below for each packet. Otherwise those packets use the fallback layout described above.
    node tools/geoword/parsers/soundtracks.js -m "<metadata>.json" -p "<packet>.docx" -c "<clip sheet>.csv" -o <folder>/answers.json
    node tools/geoword/upload-packet.js --mode prod -n <packet name> --folderPath <folder> --upsert
    • --upsert updates the tossups in place. It keeps their audio and IDs, so existing buzzes stay attached.
    • The folder must still contain the packet's mp3s, because --upsert reads the question numbers from them.

Testing

  • npm run lint passes.
  • Route: tested with the database lookup stubbed out (200, 206 for partial ranges, 416, 404 and 400 all as expected).
  • Parser: run on the Soundtracks demo files. All 10 questions' clip lengths add up to their mp3 durations, and all 60 clip descriptions match the clue text.
  • Packet page: checked in headless Chrome on a mock server, at 10 and 20 questions, on desktop and phone widths, in light and night themes, with no page errors.

🤖 Generated with Claude Code

@dn285
dn285 force-pushed the geoword-packet-clues branch 2 times, most recently from 9c4f002 to 0d201cb Compare October 18, 2026 17:05
dn285 and others added 3 commits October 18, 2026 15:51
So the results route can share it with the play route.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Serves a tossup's audio behind the results gate, so players can replay it
once they have finished the packet. Range requests let the browser seek.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The results Packet page shows one tossup at a time: a pager of equal-width
question links, a heading with its category, its prompt, a player, its
clues, and its answer, with previous and next links below. The URL carries
the question, so links and the back button work, and focus follows the
link that was used to the question shown.

Where a tossup has clues and clipBoundaries, each clue is a button that
jumps the player to it, and the clue playing is highlighted (aria-current,
plus a play icon so it isn't marked by color alone). Otherwise the page
falls back to a numbered clue list, or to the question text as before.
Division tabs only show when there is more than one division.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@geoffrey-wu
geoffrey-wu merged commit 56d828e into qbreader:main Oct 18, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants