Review: New page: Tryouts (history + Kings/Queens toggle)

review-407-2026-03-25-r2 Review

review ready

Verdict: READY

Re-review Context

Second review after refinement comment on issue #92. Previous review (review-407-2026-03-25) found three issues: (1) repo mismatch, (2) nav targets not listed, (3) toggle dependency undocumented. All three have been addressed in the refinement.

Template Completeness

  • [x] Lineage -- present (parent note: westside-playground-overhaul)
  • [x] Repo -- present (forgejo_admin/westside-playground). Convention documented in refinement: westside-app tracks issues, westside-playground is the code target.
  • [x] User Story -- present (prospective parent viewing tryout history)
  • [x] Context -- present (Kings/Queens toggle, FOMO when no upcoming tryouts)
  • [x] File Targets -- present (tryouts.html to create, shared/app.js and shared/style.css to modify). Refinement adds explicit nav file list.
  • [x] Acceptance Criteria -- present (6 criteria)
  • [x] Test Expectations -- present (toggle behavior, link resolution, 390px visual)
  • [x] Constraints -- present (light JS in shared/app.js, shared/style.css, component doc, mobile-first)
  • [x] Checklist -- present (4 items)
  • [x] Related -- present (westside-playground-overhaul)

File Targets

  • [x] tryouts.html -- confirmed DOES NOT EXIST yet (to be created). Correct.
  • [x] shared/app.js -- confirmed EXISTS (463 lines). No existing Kings/Queens toggle or initKQToggle function. Clean slate for the new function. Has DOMContentLoaded auto-init block at line 404 where new init call would go.
  • [x] shared/style.css -- confirmed EXISTS. No existing .queens-active class or --color-accent variable. Uses --color-red: #d42026 throughout. Refinement spec says .queens-active swaps accent from Kings red to Queens pink -- CSS variable override approach is sound.
  • [x] Nav target: index.html -- EXISTS, has nav with 5 items (Home, About, Staff, Sponsors, Schedule)
  • [x] Nav target: staff.html -- EXISTS
  • [x] Nav target: sponsors.html -- EXISTS
  • [x] Nav target: schedule.html -- EXISTS
  • [x] Nav target: register.html -- EXISTS
  • [x] Nav target: success.html -- EXISTS
  • [x] Nav target: about.html -- correctly noted as conditional "(if exists from #91)". Does NOT exist yet. #91 is in todo column, not yet landed.
  • [x] teams.html link target -- correctly noted as placeholder (#) if #93 hasn't landed. teams.html DOES NOT EXIST yet (created by #408).

Repo Placement

RESOLVED. Issue filed on forgejo_admin/westside-app, code targets forgejo_admin/westside-playground. Refinement documents the convention: westside-app repo is the Forgejo issue tracker for all westside frontend work, westside-playground is the code target. This is consistent with the playground model (feedback_playground_first, feedback_linked_repo_model).

Dependencies

  • Downstream dependents (documented via depends:ws-92 labels):
  • Upstream blockers: None identified. The playground overhaul CSS/JS unification (#381, board #381) is already done. This ticket can proceed independently.
  • Sibling items in same story (WS-S26): #405 (landing page restore, next_up) and #406 (About page, todo) are siblings but not dependencies.
  • Toggle foundation role: Refinement explicitly designates this as the TOGGLE FOUNDATION ticket. The initKQToggle() function, localStorage persistence, and .queens-active CSS class are created here and reused by #408, #410, and #409. This is well-documented.

Acceptance Criteria

All 6 criteria are agent-verifiable:
  • [x] "tryouts.html exists with Kings/Queens toggle" -- file existence + DOM check
  • [x] "Past tryouts show real data" -- content verification against the data in the ticket (Kings: March 13, Queens: March 24)
  • [x] "No upcoming tryouts shown when none active" -- DOM state check
  • [x] "Links to Teams page from tryout results" -- href check (teams.html or # placeholder)
  • [x] "Nav updated on ALL pages to include Tryouts" -- Grep across all 6 (or 7) nav files
  • [x] "Toggle is a prominent two-button switch at top of content" -- DOM structure check
The localStorage persistence spec in the refinement provides exact JS implementation code, making it fully testable. The agent can verify toggle state survives page reload.

Blast Radius

  • Nav changes across 6+ pages: Moderate blast radius but well-scoped. The refinement enumerates exact files. Risk: nav order inconsistency if different pages have different nav items. Mitigated by the explicit file list.
  • shared/app.js modification: Adding initKQToggle() and a DOMContentLoaded hook. Low risk -- existing auto-init pattern at line 404 is well-structured for extension. No naming collisions with existing functions.
  • shared/style.css modification: Adding .queens-active class and color overrides. Low risk -- no existing queens/accent classes to conflict with. The body.queens-active selector is highly specific.
  • localStorage key: Refinement uses key 'program'. No existing localStorage keys use this name (existing keys: westside-teams-draft, westside-teams-view). No collision.

Recommendation

No action needed. All three issues from the first review have been resolved:
  • Repo mismatch: Convention documented -- westside-app tracks, westside-playground is target.
  • Nav targets: Explicit file list provided (6 files + conditional about.html).
  • Toggle dependency: This ticket is explicitly designated as the TOGGLE FOUNDATION with full localStorage persistence spec, CSS class spec, and JS function spec. Three downstream tickets (#408, #410, #409) all carry depends:ws-92 labels.
Ticket is ready for execution.