Skip to content

Fixes for war room and other with a UI redesign - #19

Merged
Yuvraj-Sarathe merged 40 commits into
mainfrom
Fixes
Jul 3, 2026
Merged

Fixes for war room and other with a UI redesign#19
Yuvraj-Sarathe merged 40 commits into
mainfrom
Fixes

Conversation

@Yuvraj-Sarathe

Copy link
Copy Markdown
Member

Applied Database
UI redesign
Every page works

…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
- 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
…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.
@Yuvraj-Sarathe
Yuvraj-Sarathe merged commit c2d4176 into main Jul 3, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant