You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Show How this was built above the leaderboard - #26
Moves the "How this was built" section on the public leaderboard page above the list of leaders. It now sits directly under the title, and under the attendee's own "your drink" banner when they arrive from their personal QR on a phone.
leaderboard-service/public/index.html: section moved ahead of the status line and table, markup unchanged (the QR <img> is byte-for-byte the same, so the existing QR/artwork tests still apply).
leaderboard-service/public/board.css: the section's divider moves from its top edge to its bottom edge, and the section is compacted (ee3150c) so more leaders stay above the fold: tighter heading/paragraph/divider spacing, and the QR shrinks to 160–184px with 16px padding, which still leaves at least four modules of quiet zone.
tests/about-the-build.test.mjs: new test pins the section before the board table.
Verified
npm test: 329/329 pass. npm run check passes.
Rendered against a throwaway local service with 14 seeded drinks at 1920x1080, 600x900 and 390x844 (with and without a personal ?handle&ref link): no QR overlap, divider below the QR, no horizontal overflow, "your drink" still directly under the title on a phone.
Heads-up
On a 1080p monitor, the first leader row was at y=434 with the section below the board. With the section on top it is at y=790 after compaction, versus y=870 before. Fully visible leaders above the fold: 5 originally, 1 uncompacted, 4 compact (measured with a stubbed board of 10 single-line names).
The README's leaderboard-browser-canvas.png still shows the old layout (it also predates the current "on the board" wording), so it is not regenerated here.
Deploy
Code-only redeploy of the leaderboard service (runbook "Leaderboard service operations", step 3), done 2026-10-28 at 15:13 UTC. No keys or infrastructure changed. The live package is byte-identical to the build of c1ee742 (SHA-256 dfd1e2ea…). It carries the #23/#24 rubric, which clears the score_mismatch failures from booths on current main, and the moved section is live. The compact styling in ee3150c is not deployed yet; it needs another code-only redeploy.
Side effect: the restart replaced the live board. The new container crashed on its first start (ENOENT renaming the board file) while the old one was still running. After Azure's retry the service created a new, empty board that is closed to drinks (/api/board reports rebuilding: true). The previous board's 2 drinks are no longer in the data directory. Booths get a retryable board_rebuilding until a staff machine runs the runbook's "Public board lost" recovery: --takedowns on every booth, then --open, then --drinks.
Move the section from the bottom of the public page to just under the title (and under the attendee's own drink on a phone), before the list of leaders. Its content, QR and responsive behaviour are unchanged; the divider and spacing move to its bottom edge. A test pins the order so it cannot drift back below the table.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
The reason will be displayed to describe this comment to others. Learn more.
🟡 Changes recommended
The expanded section pushes most leaderboard standings below the fold on the booth display, requiring scrolling and potentially hiding all leaders on shorter viewports.
The reason will be displayed to describe this comment to others. Learn more.
🔵 Needs a closer look
On short viewports, the personal rank can remain visible while its stale-data warning is off-screen.
No open issues 🎉
1 previously missed issue
In code that hasn't changed since last review
Surface stale state alongside personal rank banner
leaderboard-service/public/index.html:22
Moving this section between #you and #status lets a short viewport show the personal rank while its offline warning is off-screen. After 30 seconds without a successful refresh, board.js keeps the last rank in the banner and marks only the status below this section as stale. Surface the stale state alongside the personal banner or in the header, while keeping the build section above the table.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Moves the "How this was built" section on the public leaderboard page above the list of leaders. It now sits directly under the title, and under the attendee's own "your drink" banner when they arrive from their personal QR on a phone.
leaderboard-service/public/index.html: section moved ahead of the status line and table, markup unchanged (the QR<img>is byte-for-byte the same, so the existing QR/artwork tests still apply).leaderboard-service/public/board.css: the section's divider moves from its top edge to its bottom edge, and the section is compacted (ee3150c) so more leaders stay above the fold: tighter heading/paragraph/divider spacing, and the QR shrinks to 160–184px with 16px padding, which still leaves at least four modules of quiet zone.tests/about-the-build.test.mjs: new test pins the section before the board table.Verified
npm test: 329/329 pass.npm run checkpasses.?handle&reflink): no QR overlap, divider below the QR, no horizontal overflow, "your drink" still directly under the title on a phone.Heads-up
On a 1080p monitor, the first leader row was at y=434 with the section below the board. With the section on top it is at y=790 after compaction, versus y=870 before. Fully visible leaders above the fold: 5 originally, 1 uncompacted, 4 compact (measured with a stubbed board of 10 single-line names).
The README's
leaderboard-browser-canvas.pngstill shows the old layout (it also predates the current "on the board" wording), so it is not regenerated here.Deploy
Code-only redeploy of the leaderboard service (runbook "Leaderboard service operations", step 3), done 2026-10-28 at 15:13 UTC. No keys or infrastructure changed. The live package is byte-identical to the build of
c1ee742(SHA-256dfd1e2ea…). It carries the #23/#24 rubric, which clears thescore_mismatchfailures from booths on current main, and the moved section is live. The compact styling inee3150cis not deployed yet; it needs another code-only redeploy.Side effect: the restart replaced the live board. The new container crashed on its first start (
ENOENTrenaming the board file) while the old one was still running. After Azure's retry the service created a new, empty board that is closed to drinks (/api/boardreportsrebuilding: true). The previous board's 2 drinks are no longer in the data directory. Booths get a retryableboard_rebuildinguntil a staff machine runs the runbook's "Public board lost" recovery:--takedownson every booth, then--open, then--drinks.