1. 03 Jun, 2026 3 commits
    • Mahmoud Aglan's avatar
      feat: chess fully playable — all modes, analysis, puzzles, matchmaking · 2dd53307
      Mahmoud Aglan authored
      /game — Full chess vs bot:
      - Complete DOM (17 elements game engines need)
      - Loads chess.min.js → openings.js → board.js → game.js in order
      - Clocks, move list, opening display, thinking indicator
      - Resign, draw, flip buttons
      - Immersive mode (header/nav hide)
      
      /game-live — Multiplayer chess:
      - Realtime subscription for opponent moves
      - Draw offer banner (accept/decline)
      - Same full DOM as bot game
      
      /analysis — Post-game analysis:
      - Eval bar with animated fill
      - Eval graph canvas
      - Move navigation (first/prev/next/last)
      - Player accuracy percentages
      - Critical moments highlight
      - Engine analysis button
      
      /puzzles — Chess puzzles:
      - Daily (5 per day with dot progress)
      - Streak mode
      - Rush mode (timed)
      - Tab switching between modes
      
      /matchmaking — Animated opponent search:
      - Radar ring pulse animation
      - Timer counting up
      - Auto-poll API every 2s
      - Cancel button returns to lobby
      
      CSS additions:
      - Chess game layout (flexbox centered, responsive board)
      - Clock styles (active=gold, low=red+pulse)
      - Move list compact style
      - Matchmaking radar animation
      
      Also: chessboard.css now loaded in <head> globally
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      2dd53307
    • Mahmoud Aglan's avatar
      juice: full animation + interaction feedback system · d369c086
      Mahmoud Aglan authored
      CSS:
      - Button ripple effect (radial gradient follows finger position)
      - Gold button glow pulse (breathing box-shadow)
      - Gold button shimmer sweep (light streak animation)
      - Game card entrance pop (staggered scale+fade per card)
      - Game card icon float (subtle idle bob animation)
      - Game card hover glow (radial light on press)
      - Nav active indicator (animated bar slides in)
      - Nav tap bounce (scale down on press)
      - Streak claim celebration (pop + color change)
      - Page transition (fade+slide on every screen change)
      - Section stagger (each section fades in sequentially)
      - Activity items slide in (staggered translateX)
      - Chip selection pop (scale bounce on select)
      - Input focus glow (cyan ring)
      - Brand logo pulse on tap
      - Online dot ping ring (expanding ripple)
      - Login brand float (idle vertical bob)
      - Ambient background (slow-moving radial gradients)
      - Toast in/out animations
      - Card shadow compression on press
      - Counter tick scale animation
      
      JS:
      - Haptic feedback on every interactive element (pointerdown)
      - Web Audio API synthesizer (tap, click, coin, win, error sounds)
      - Ripple position tracking (--ripple-x, --ripple-y CSS vars)
      - tickCounter() for animated number updates
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      d369c086
    • Mahmoud Aglan's avatar
      nuke v2 SPA, rebuild as single-file app with working games · e620362f
      Mahmoud Aglan authored
      The ES modules approach was overengineered and broken:
      - Import maps failed silently
      - Game engines couldn't find window.App
      - Nothing was responsive
      
      New approach: everything in index.php + one CSS file.
      - Loads public/js/app.js (game engines need App.fetch, App.toast etc)
      - Simple defineScreen() router — no modules, no imports, no build step
      - Chess game works: loads chess.min.js + board.js + game.js, enters immersive mode
      - Ludo/Domino/Backgammon lobbies create games via API
      - All screens responsive (max-width adapts, clamp() on hero heights)
      - Visual identity from DESIGN.md: game-specific gradients, 20px radius cards, gold brand
      - Header shows level + coins + gems (the game currencies, not chess ELO)
      - DESIGN.md added as the visual specification document
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      e620362f
  2. 02 Jun, 2026 5 commits
    • Mahmoud Aglan's avatar
      feat: all screens built — chess lobby, profile, leaderboard, friends, shop,... · f39a8dcb
      Mahmoud Aglan authored
      feat: all screens built — chess lobby, profile, leaderboard, friends, shop, achievements, settings, ludo/domino/backgammon lobbies
      
      Phase 2+3 complete:
      - Chess lobby: full time control picker, bot selector, multiplayer search
      - Chess game: wraps Board + Game engines in immersive mode
      - Ludo lobby: player count, bot difficulty, room codes
      - Domino lobby: 2P/4P teams, difficulty, room codes
      - Backgammon lobby: match length, room codes
      - Profile: XP bar, per-game ratings, economy, stats
      - Leaderboard: multi-game + multi-mode selector
      - Friends: list, requests, search, add
      - Shop: categories, buy with coin burst particles, equip
      - Achievements: grid with progress tracking
      - Settings: sound toggle, logout
      - Fix: router import bug in main.js
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      f39a8dcb
    • Mahmoud Aglan's avatar
      nuke: delete entire PHP frontend, rebuild as vanilla JS SPA · 9d4a6fa3
      Mahmoud Aglan authored
      DELETED:
      - All 50+ PHP pages, templates, includes
      - app.css and app-v2.css (1782 + 700 lines of accumulated CSS)
      
      CREATED:
      - app/core/ — SPA engine (router, state, api, audio, haptics, particles, animate)
      - app/screens/ — ES module screens (home, login + placeholders for all routes)
      - app/styles/ — Design token system + animations + components
      - index.php — now serves SPA shell for all non-API routes
      
      ARCHITECTURE:
      - Vanilla JS SPA with ES Modules (no build step, no framework)
      - History API router with animated transitions
      - Web Audio API synthesizer for game sounds
      - Canvas particle system (confetti, coin bursts)
      - Web Animations API for juice (number tickers, fly-to, pop, shake)
      - Haptic feedback patterns via navigator.vibrate
      - Game engines load on-demand as classic scripts (zero modifications)
      
      API endpoints (24) completely unchanged. Game engine JS (25 files) unchanged.
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      9d4a6fa3
    • Mahmoud Aglan's avatar
      feat: kill chess-centric shell — EL3AB is now a game hub · 8c4dc029
      Mahmoud Aglan authored
      - Sidebar: games (شطرنج/لودو/طاولة/دومينو) are the primary nav items
      - Removed "العب الان" chess-only play button from sidebar
      - Removed floating chess FAB from mobile nav
      - Mobile nav: 5 tabs (home/games/leaderboard/social/profile)
      - Header: shows account level instead of chess ELO
      - Home page: games grid is the hero, no chess matchmaking widget
      - Removed all chess-specific time control UI from home page
      - Each game's lobby page handles its own matchmaking
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      8c4dc029
    • Mahmoud Aglan's avatar
    • Mahmoud Aglan's avatar
      feat: multi-game platform overhaul — per-game ratings, redesigned UI, kill chess-legacy · bd053eda
      Mahmoud Aglan authored
      - New player_game_ratings table (any game, any mode, ELO + W/L/D + streaks)
      - New /api/ratings.php — unified ratings API (player, leaderboard, history, modes)
      - game.php dual-writes to new table on chess game end
      - ludo.php now tracks ELO + XP + coins on game completion
      - Full v2 design system (app-v2.css) — WCAG AA, component-driven
      - Redesigned: home, profile, leaderboard, play, login pages
      - New nav: 4-tab mobile + floating play FAB + grouped desktop sidebar
      - XP level titles now game-neutral (مبتدئ → استاذ → اسطورة)
      - Leaderboard supports all games with mode selector
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      bd053eda
  3. 31 May, 2026 1 commit
  4. 30 May, 2026 28 commits
  5. 29 May, 2026 3 commits
    • Mahmoud Aglan's avatar
      fix: 30 UX improvements — make backgammon fully playable · 1e086492
      Mahmoud Aglan authored
      Game Controller (backgammon-game.js) rewrite:
      - Fix selection: click same piece to deselect, click another to swap
      - Bar enforcement: must enter from bar first with clear message
      - Auto-pass when no moves remain for unused dice
      - Bot waiting status message visible during thinking
      - Opening roll shows clear "your turn" status with dice values
      - Pass button action for truly stuck positions
      - Smart move validation with proper die tracking
      - Individual bot move logging
      - Source validation: only select pieces that have moves
      
      UI (backgammon-ui.js) rewrite:
      - setSelected directly applies DOM classes (no render cycle needed)
      - Status text system: guides player ("Select piece", "Choose target")
      - Movable checkers highlighted with golden ring when it's your turn
      - Dice remaining indicator text below dice
      - Pass/skip button shown when stuck
      - Active player gold border highlight
      - Tap feedback animation
      - Hover preview on valid targets
      - New game button in result overlay
      - Valid target points show dashed circle indicator
      
      CSS additions:
      - .bg-point--clickable with gold ring on top checker
      - .bg-point--hover-preview green tint
      - .bg-move-flash animation
      - .bg-status, .bg-pass-btn, .bg-dice-remaining styles
      - .bg-new-game-btn in overlay
      - Valid point dashed circle indicator
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      1e086492
    • Mahmoud Aglan's avatar
      fix: Ludo dice dots spacing — add gap between pips for real die look · 87ce35b8
      Mahmoud Aglan authored
      - Added gap: 4px between 3x3 grid cells
      - Added place-items: center for proper dot centering
      - Reduced dot size to 10px for better proportion with gaps
      - Removed margin: auto (place-items handles centering)
      - Increased border-radius to 12px for rounder dice
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      87ce35b8
    • Mahmoud Aglan's avatar
      fix: 30 visual refinements to Ludo board · 16fbb18e
      Mahmoud Aglan authored
      - Deeper board shadow + border + 12px corners
      - Warmer path cells (#faf8f4) with subtle 0.5px grid
      - Gold safe stars with glow, larger and bolder
      - Start cells use gradients, home entrance directional gradients
      - Base corners: radial gradients with depth
      - Warmer base-inner (#fffef8) with deeper shadows
      - Pieces: radial gradient 3D look, larger (5.8%), smoother movement
      - Stronger highlight pulse + brightness filter
      - Center triangles doubled in size (100px borders)
      - Dice: larger (72px), warm glow, bigger dots (12px)
      - Roll button: larger padding, gold glow shadow
      - Player cards: box-shadow, 12px radius, stronger active glow
      - Board wrapper: 520px max for bigger desktop board
      - More dramatic piece-land bounce animation
      Co-Authored-By: 's avatarClaude Opus 4.6 <noreply@anthropic.com>
      16fbb18e