tailwind v2 staging: all batch-2 page migrations (step-zero + homepage/profile/settings/leaderboard/stats)#622
Merged
Merged
Conversation
- Fix flashesV2.ejs missing comma that silently dropped error flashes - Port form-state preservation from stale root signupV2.ejs into views/public/signupV2.ejs - Define empty.ejs as a real bare-shell layout (DOCTYPE + Tailwind, no nav/footer) - Remove stale root signupV2.ejs and teamV2.ejs drafts (views/public versions are canonical) Prereq for the broader Tailwind V2 migration tracked in #609. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add views/private/homepageV2.ejs using base.ejs layout: welcome, Tailwind experience bar, contributor controls, 5-subject ratings, Chart.js rating tracker, training-mode + classic-subject + USABO grids, site stats, dailySnippetV2, announcements panel, social-link bar - Wire /homepage route to render homepageV2.ejs with expressLayouts middleware and layout: 'layouts/base.ejs' - Drop the bottom search widget on the homepage (jQuery-MultiSelect + Bootstrap; nav already exposes /search and the search.ejs page migrates separately) - Drop AOS scroll animations and jQuery thumbnail hover; replaced hover with Tailwind opacity-80 hover:opacity-100 Part of the broader Tailwind V2 migration tracked in #609. Legacy homepage.ejs remains in tree until the final cleanup pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Add views/private/profileV2.ejs using base.ejs layout: name banner, Tailwind experience bar, info card (name/age/location/bio/achievements), Chart.js rating tracker + correct/wrong pie with custom plugin, Problem Rush highscore, Collected Tags grid (Physics/Chemistry/Biology) - Wire /profile/:username route to render profileV2.ejs with expressLayouts - Consolidate three duplicated EJS blocks for collected-tags rendering into a single forEach over subjects (no behavior change) Part of the broader Tailwind V2 migration tracked in #609. Legacy profile.ejs remains in tree until the final cleanup pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- 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 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 every Tailwind V2 page migration shipped so far into a single staging PR against `pfeng_dev` for full pre-production testing. After the master merges of #610 and #619 broke the live frontend, both have been reverted from `master` (commits `8ccb686` and `ee4c5de`); this PR is the consolidated replacement that lets us validate the whole batch before going to production.
Each commit is independently reviewable — see the commit list for the per-page split.
Commits in this PR
All legacy `.ejs` files left in tree (deletion is in the final cleanup pass per the migration plan in #609). All routes opted into V2 individually via the `expressLayouts` middleware (the global flip is also final-pass only).
Things to test on each page
Run the standard six-item checklist on each route below at both 1280px and 375px:
Routes to walk:
Known scope decisions to verify don't break expectations
🤖 Generated with Claude Code