openJoinDialog now fetches user bots and official bots in parallel via
forkJoin. Each section shows its own empty state independently.
Official bot difficulty buttons are hidden when no official bots are
registered. User bots empty state links to /bots to create one.
Disables all join buttons while any join is in progress.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Map raw backend response (evaluation/continuationMoves) to frontend
model (eval/winChance/continuations). Add getFenHistory() call after
loading a game or PGN so runAnalysis() gets per-ply FEN history and
triggers analyzeGame() instead of falling back to single-position
analysis. Remove !hasAnnotations guard so positionAnalysis card shows
even when a game is loaded.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
User Profile info, no game before login/register, menu bar
---------
Co-authored-by: Lala, Shahd <Shahd.Lala@sybit.de>
Co-authored-by: shahdlala66 <shahd.lala66@gmail.com>
Reviewed-on: #2