AI Implementation feature(907): Challenges Page and Challenge Solve Modal 1.03 (#49)

This commit was merged in pull request #49.
This commit is contained in:
2026-07-23 03:11:18 +00:00
parent f194641e8c
commit 54f72f88dc
15 changed files with 245 additions and 73 deletions
+5 -3
View File
@@ -3,7 +3,7 @@ type: guide
title: Challenges Board
description: How a signed-in player navigates the `/challenges` page, opens a challenge modal, submits a flag, and watches live solve updates.
tags: [guide, challenges, board, flag, score, sse, tester]
timestamp: 2026-07-23T00:10:00Z
timestamp: 2026-07-23T03:09:00Z
---
# When this view is available
@@ -66,7 +66,7 @@ renders `[data-testid="challenges-gate"]`:
| Event state | Headline | Countdown text (`[data-testid="challenges-countdown"]`) | Helper label |
|---------------|---------------------------|--------------------------------------------------------|-----------------------------------------------------|
| `countdown` | `Event starts in` | `DD:HH:mm` until `eventStartUtc` | `The board will be available once the event is running.` |
| `countdown` | `Event starts in` | `DD:HH:mm:ss` until `eventStartUtc` (ticks each second during the final minute so the player sees time elapse) | `The board will be available once the event is running.` |
| `running` | _(grid shown instead)_ | — | — |
| `stopped` | `Event ended` | `Event ended` | `The board is closed.` |
| `unconfigured`| `Awaiting configuration` | empty | _(none)_ |
@@ -159,7 +159,9 @@ destruction of the page the SSE source is closed via
## Countdown / stopped gate
1. Set `eventStartUtc` in the future; confirm the gate panel shows
`Event starts in` and the `DD:HH:mm` countdown.
`Event starts in` and the `DD:HH:mm:ss` countdown. Within the final
minute the seconds digit visibly ticks down (e.g. `00:00:00:24`
`00:00:00:23` → …) so the player can see time elapse.
2. Wait for the countdown to hit zero; the SPA reloads and now shows
the board.
3. Set `eventEndUtc` in the past; confirm the gate shows
+5 -2
View File
@@ -3,7 +3,7 @@ type: guide
title: Event Window
description: How the event window state machine is computed and surfaced via REST + SSE.
tags: [guide, event, countdown, sse, state-machine]
timestamp: 2026-07-23T01:19:00Z
timestamp: 2026-07-23T03:09:00Z
---
# Configuration
@@ -73,7 +73,10 @@ The store:
3. Exposes `countdownText` (computed): `""` for `unconfigured`,
`"Event ended"` for `stopped`, and `formatDdHhMm(seconds)` for
`countdown` / `running`. The format helper lives in the pure module
`event-status.pure.ts` (`DD:HH:mm`, zero-padded).
`event-status.pure.ts` (`DD:HH:mm:ss`, zero-padded). The seconds
digit is driven by the local 1-second tick (and the SSE re-push
every 60 seconds) so the final minute of the countdown visibly
elapses second-by-second on the shell header.
The header (`ShellHeaderComponent`) renders an LED with the
`led-{state}` class so the colour reflects the current state (the