feat(settings): add system theme and Kattis solve import - #108
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
👀 Human Input Needed → Pair Review Briefing |
|
Verifier🛰️ 🛰️ Verifier ReportTL;DR: Drove the new three-way appearance preference, the Kattis solve import, and the OAuth callback/error recovery end-to-end in a real browser against a production build of the PR head served on a local mock Supabase.
🔍 Walkthrough
📋 ScopeUnder test: three-way System/Light/Dark appearance with synchronous pre-paint resolution + live OS-theme follow and cross-device persistence; safe Kattis solve import from pasted IDs/URLs or local Also covered: full hermetic suite Not tested:
📦 Artifacts · System/light · System/OS-dark · Dark full page · Kattis preview · Auth error Don't like what you see? Add a verification skill so the next run tests this kind of change. Want another run? Comment 👍 / 👎 · View session |
cameroncuster
left a comment
There was a problem hiding this comment.
Review completed with 1 suggestions.
| ALTER TABLE user_preferences DROP CONSTRAINT IF EXISTS user_preferences_theme_check; | ||
| ALTER TABLE user_preferences | ||
| ADD CONSTRAINT user_preferences_theme_check | ||
| CHECK (theme IN ('system', 'light', 'dark')) NOT VALID; |
There was a problem hiding this comment.
This adds the theme check as NOT VALID, so any existing user_preferences row with an out-of-set theme remains in place but will start failing subsequent unrelated UPDATEs (for example changing hide_from_leaderboard) because PostgreSQL enforces not-valid checks on new row versions. Those legacy rows need an explicit rollout path; otherwise affected users cannot save unrelated preferences.
Severity: medium
🤖 Was this useful? React with 👍 or 👎
Recent work (#108) replaced the Settings loading state's shared animate-spin spinner with a bare 'Loading settings…' line, leaving a janky page-like interim state. Restore the exact canonical spinner markup still used by the contests, leaderboard, and problem loading surfaces, with the matching 'Loading settings...' copy. Add unit + Playwright regression coverage that the spinner renders and the regressed plain page copy does not.





Summary
Behavior and safety
Validation
pnpm run checkpnpm run lint:espnpm run lintpnpm run test:coverage— 395 passed; 98/95/98 thresholds satisfiedpnpm run test:performance— 21,367 B raw / 1,610 B gzippnpm run test:e2e— 205 passed, 7 intentional viewport/live skipsRisk analysis
Pull Request opened by Augment Code | View session