Fixes for war room and other with a UI redesign - #19
Merged
Conversation
…linkOAuth endpoint
…components and loading.tsx - Dashboard: wait for all 4 queries before rendering, add error/no-data checks - Module page: separate loading/error/data checks per proper pattern - Profile page: add error handling and loading state for all 3 queries - War-room page: add error handling and loading state for both queries - Create reusable skeleton primitives (Skeleton, SkeletonText, SkeletonCard, SkeletonStatCard, SkeletonList) - Add loading.tsx for dashboard, profile, war-room, track detail, and module pages - Skip tracks/[trackId]/page.tsx: file does not exist in codebase
…uble-loading fixes - Add aria-hidden=true to Skeleton component - Fix SkeletonStatCard size (h-8 -> h-9) - Wrap loading.tsx in role='status' with sr-only text - Replace raw error messages with user-friendly error components - Replace 'No data found.' with contextual messages - Remove LoadingPanel usage, use inline loading indicators - Add blindspot-map loading.tsx with skeleton layout - Remove dead tracks/[trackId]/loading.tsx (no page exists)
…session-sync cleanup logic, unified error messages
…p check, type safety for submissions
… parsing robustness
… session race condition
- Added lastActiveDate variable derived from sorted submission dates - Replaced undefined lastSubmission reference with lastActiveDate - This was causing a build error (TS2552)
- Replaced require() with ESM import in issue-link-token route - Removed unused error destructuring from tRPC queries in 4 page components - Web build now succeeds cleanly
…ookies (WR-07) - Added Next.js rewrites in next.config.mjs to proxy /trpc and /socket.io to the API server, making requests same-origin - Added httpOnly, SameSite=Strict cookie support in context.ts with setSessionCookie/clearSessionCookie helpers - Updated auth router (signIn/signUp/linkOAuth/signOut) to set/clear cookies - Updated auth-store to rely on cookies, removed sessionToken from localStorage - Updated tRPC provider to use relative /trpc URL with credentials: 'include' - Updated SessionSync to not store sessionToken in localStorage - Updated Socket.io client to include credentials This eliminates the XSS vector where session tokens were accessible to any JavaScript running on the page.
- Fix Dockerfile: add packages/types to build context for workspace dependency resolution; copy root node_modules for pnpm symlinks - Expand .gitignore: add .pytest_cache/, .DS_Store, Thumbs.db, .egg-info/ - Expand .dockerignore: add .git, .turbo, Python caches, env files, and other build artifacts to reduce context size
- Add jest + ts-jest dev dependencies to api package - Create jest.config.ts with ts-jest preset for Node - Add test script to api, web, and types packages - All 11 existing tests in ai-client.test.ts pass
- Rule 7: Add footer to app shell (desktop) and landing page - Rule 5: Break up 3 identical stat cards; differentiate layout with accent card for 'Next' - Rule 20: Handle empty data state for IRSRadarChart (no radar data yet message) - Rule 3: Remove gratuitous backdrop-blur from landing page card - Rule 1: Replace dark blue/pink radial gradients with palette-derived teal tints - Rule 2: Replace fake 'live module' label with honest 'sample module'
…ace-grid - Add --success/--warning CSS variables to :root and .dark in globals.css - Remove @layer utilities .surface-grid pattern - Add success/warning color tokens to tailwind.config.ts extend
…yebrow - Replace hardcoded emerald/amber/red in Badge with theme token classes - PageHeader already refactored (eyebrow removed previously)
- Remove eyebrow prop from all PageHeader call sites (7 files) - Replace uppercase tracking-[0.22em] and tracking-[0.18em] with font-medium - Remove hero metric numbering from landing page - Fix 'sample module' -> 'Sample module' capitalization
- Remove surface-grid class from signin and signup pages - Copy fixes (Open dashboard, descriptions) already applied
…aphy - Replace emerald-500 with success tokens in quiz-ui.tsx and diff-viewer.tsx - Replace amber-400 with accent in streak-tracker.tsx - Replace red-500 with destructive tokens in diff-viewer.tsx - Remove /60 opacity from muted-foreground in irs-radar-chart.tsx - Fix min-h-[400px] to min-h-64 in error-fallback.tsx - PageHeader: remove Badge import, remove eyebrow, add className prop - Backdrop opacities updated to /90 in app-shell
…eaderboard - Install @radix-ui/react-alert-dialog dependency - Create shadcn-style AlertDialog component - Wrap sign-out button with confirmation dialog in app-shell - Add LeaderboardEntry type import to dashboard and war-room pages
- Remove unused trackData destructuring, index param, LeaderboardEntry import - Fix alert-dialog buttonVariants import by inlining button classes
…email/password users
…state on dashboard
…room exists Previously getRoom threw TRPCError NOT_FOUND when no active war room was in the database, causing the page to hit the generic error handler and show 'Failed to load content'. Now it returns null, letting the existing if (!room) empty-state handler on the page display naturally.
…room exists Previously getRoom threw TRPCError NOT_FOUND when no active war room was in the database, causing the page to hit the generic error handler and show 'Failed to load content'. Now it returns null, letting the existing if (!room) empty-state handler on the page display naturally.
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.
Applied Database
UI redesign
Every page works