- Use module-level signal for clientReady to persist across re-renders
- Use Show component for reactive rendering instead of manual null returns
- createEffect handles redirect when client is ready but no token
- onMount sets clientReady after hydration completes
- Dashboard now shows correct TUTOR role sidebar with Leads/My Responses
- Playwright test verifies TUTOR dashboard renders with correct sidebar items
- RequireAuth: use setTimeout to defer clientReady=true until after hydration completes, preventing SSR/client mismatch
- dashboard.tsx: add SSR guard to return empty div on server
- playwright tests for dashboard role verification
- Changed overflow-x: clip to overflow-x: hidden for better Chrome support
- Changed auth-layout align-items from center to start to prevent clipping
- Added overflow-y: auto and overflow-x: hidden to body for consistent scrolling
Fixes issues where header and signup form were not visible in Chrome
and users were unable to scroll.
- Add vitest, Playwright, ESLint, Prettier configs
- Add unit tests and e2e accessibility/visual tests
- Add MSW mocks and test setup
- Update scripts and .gitignore
- Install required dev dependencies
Note: GitHub Actions workflow will be added after token scope is granted.