tailwind v2 migration: settings, leaderboard, stats#621
Closed
kokonut121 wants to merge 3 commits into
Closed
Conversation
- Add views/private/settingsV2.ejs using base.ejs layout: profile/personalization/account/delete-account forms with Tailwind grid layouts and native input styling - Replace jQuery unsaved-changes detector with Alpine.js (already loaded by V2 head); replace Bootstrap delete-confirmation modal with an Alpine-driven custom modal - Replace Bootstrap form-group/form-control classes with V2 input styling and grid; preserve all field names/IDs/POST endpoints - Wire /settings route to render settingsV2.ejs with expressLayouts Part of the broader Tailwind V2 migration tracked in #609. Legacy settings.ejs remains in tree until the final cleanup pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add views/private/leaderboardV2.ejs using base.ejs layout: rating leaderboard 4-col grid (Physics/Chemistry/Biology/USABO), Rush leaderboard, Experience leaderboard - Consolidate the four near-identical rating tables into a single forEach over [title, list, valueGetter] tuples; preserves row colors (1st/2nd/3rd/4th+) and medal SVGs - Wire /leaderboard route to render leaderboardV2.ejs with expressLayouts Part of the broader Tailwind V2 migration tracked in #609. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add views/private/statsV2.ejs using base.ejs layout: 5 subject sections (Physics/Chemistry/Biology/ESS/USABO) each with rating+global rank, collected tags, analytics tags (Areas of Mastery / Currently Studying / Recommended Training / Favorite Units), Chart.js rating tracker, and a Change Proficiency button; plus a Performance section with Chart.js correct/wrong pie, site experience bar, and Problem Rush stats - Consolidate 5 near-identical subject sections into a single forEach over a config table; preserves all rating/analytics keys and proficiency URL casing (note: USABO uses uppercase "USABO" in /train/USABO/proficiency) - Wire /stats/:username route (both teacher and self branches) to render statsV2.ejs with expressLayouts Part of the broader Tailwind V2 migration tracked in #609. Largest page in batch 2 per the migration plan. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This was referenced May 8, 2026
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Combines the next three batch-2 page migrations into a single PR for batch review. All three are independently reviewable as commits — see the commit list for the per-page split.
Settings (commit
187999e)views/private/settingsV2.ejsusingbase.ejslayout — Profile / Personalization / Account / Delete Account forms with Tailwind 12-col grids and native input styling/changeProfile,/changePreferences,/changeSettings,/deleteAccount) all preserved/settingsto V2 view viaexpressLayoutsLeaderboard (commit
a8fc5ff)views/private/leaderboardV2.ejsusingbase.ejslayout — rating leaderboard 4-col grid (Physics/Chemistry/Biology/USABO), Rush leaderboard, Experience leaderboardforEachover[title, list, valueGetter]tuples/leaderboardto V2 view viaexpressLayoutsStats (commit
dad3aea) — largest page in batch 2 per #609views/private/statsV2.ejsusingbase.ejslayout — 5 subject sections (Physics/Chemistry/Biology/ESS/USABO) each with rating + global rank, collected tags (subjects with tags only — USABO has none), analytics groups (Areas of Mastery / Currently Studying / Recommended Training / Favorite Units), Chart.js rating tracker, Change Proficiency button; performance section with Chart.js correct/wrong pie + custom plugin, Tailwind site-experience bar, Problem Rush statsforEachover a[displayName, ratingKey, analyticsKey, proficiencyPath, hasTags]config table; URL casing preserved (USABO stays uppercase in/train/USABO/proficiency)/stats/:username(both teacher and self branches) to V2 view viaexpressLayoutsPart of the broader Tailwind V2 migration tracked in #609. Legacy
settings.ejs,leaderboard.ejs,stats.ejsremain in tree until the final cleanup pass.Test plan
Settings
/settingsloads at 1280px and 375px with no console errorsview-source:/settingscontains exactly one<head>and one<body>Leaderboard
/leaderboardloads at 1280px (4 columns side-by-side) and 375px (stacked)/profile/:usernameopens in a new tabview-source:/leaderboardcontains exactly one<head>and one<body>Stats
/stats(your own) loads at 1280px and 375px with no console errors; 5 subject sections + performance section render/train/<lowercase>/proficiency(USABO uppercase)view-source:/stats/:usernamecontains exactly one<head>and one<body>🤖 Generated with Claude Code