- Frontend no longer makes cross-origin AJAX calls to wizard
- checkBackend validates response is actual JSON (not serve SPA fallback)
- When backend is down, show simple redirect page to wizard URL
- After wizard config + service restart, frontend detects backend and shows login
- Remove SetupWizardPage (embedded wizard), add SetupRedirectPage
- Fix Object.entries null crash in DashboardPage
- SetupWizardPage: step-by-step config (DB, admin, project)
- Connects directly to AbstractWizard via SSH tunnel (127.0.0.1)
- App.tsx: detect backend health, show wizard if not ready
- Auto-switch wizard to readonly after setup
- Add VITE_WIZARD_PORT build arg
- Add vite-env.d.ts for type safety
- Login page with JWT auth
- Dashboard with stats and charts
- Issues list with pagination, filtering
- Issue detail with comments, status transitions
- Create issue form
- Dark theme UI
- Docker (nginx) with API proxy to backend
- Sidebar navigation