- 29 May, 2026 4 commits
-
-
Mahmoud Aglan authored
Measured actual slot center coordinates from the rendered DOM instead of calculating from CSS math. Fixes piece-to-slot misalignment. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Derived slot positions mathematically from CSS layout: - Base: 6x6 grid cells, inner circle: 72%, padding: 16%, gap: 12% - Slot centers at 30%/70% of inner circle on each axis Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- P3/P4 base coordinates restored to proper center (12.5) offset - Added domino to gameRoutes so it shows play button instead of coming soon - Fixed icon/cover class keys from "dominoes" to "domino" to match DB Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Pull pieces inward toward base center so they sit properly within the white circle slots instead of near the edges. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 28 May, 2026 2 commits
-
-
Mahmoud Aglan authored
- Dice: white background with gold border, shadow for contrast against dark panel - Dice dots: fixed-size black circles with proper centering using margin:auto - Dice: removed gap, increased padding so dots align in clean 3x3 grid like real dice - Base inner circle: white background instead of dark, proper shadow depth - Piece positions: recentered within base quadrants (was offset toward top-left) - Pieces: slightly larger, white border + highlight shadow for better visibility Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Complete dominoes integration with formal tournament rules: - Double-six set (28 tiles), spinner rule (first double = 4-way branch) - 2-player Draw Game (draw from boneyard when blocked, first to 100) - 4-player Teams Block Game (pass when blocked, first to 150) - All modes: local pass-and-play, VS bot (easy/medium/hard), online matchmaking, private rooms - Full server-side validation (api/domino.php — play/draw/pass/round/match lifecycle) - Bot AI with 3 difficulty levels (random, greedy-pip, strategic with opponent tracking) - Supabase Realtime multiplayer via WebSocket - CSS pip rendering, board layout with 4 directions, responsive tiles - Database: domino_matches, domino_queue, RLS policies, game_plugins entry Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 27 May, 2026 19 commits
-
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- api/game.php: ELO rating update after bot games (K-factor from DB), XP awards (50/game + 30 win bonus), level-up detection, economy transaction logging, game stats (total_games_played, wins/draws/losses) - api/daily-reward.php: XP award (25/claim), level-up check, economy tx logging - api/shop.php: rewritten to use correct tables (cosmetics + player_cosmetics), equip/unequip support, feature flag check, economy tx logging - api/friends.php: notifications on friend request sent/accepted - api/matchmaking.php: notifications on match found, feature flag check - api/bots.php: feature flag check (bot_games_enabled) - config/database.php: added check_feature_flag() helper - includes/feature-flags.php: new cached feature flag system (60s file cache) - includes/header.php: includes feature-flags.php - pages/shop.php: updated to use cosmetic_type enums, equip UI - templates/nav-*.php: hide disabled features (shop, tournaments) - DB: seeded 25 achievements, 11 cosmetics, 1 test tournament, disabled trivia Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- New /api/bots.php: proxies Stockfish API /api/chess/bots with 5min cache - New /api/games.php: reads game_plugins table (game list, time controls, config) - New /api/config.php: serves system_config (reward amounts, matchmaking, etc.) - pages/bots.php: fetches bot list dynamically from API (names, ratings, styles) - pages/games.php: renders game grid from game_plugins DB table - pages/play.php: populates bot dropdown from API - pages/game.php: loads bot name from API instead of hardcoded map - pages/home.php: loads reward config from API, bot names for recent games - pages/ludo.php: loads difficulty options from game config - api/daily-reward.php: reads reward amounts from system_config table - analysis.js: fetches bot names from API cache Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Spacing & Layout Fixes: - Fixed bottom nav overlapping content (added 24px extra padding) - Fixed profile stat grid overflow (4-column grid, 2-col on small mobile) - Fixed ludo mobile panel cramped (more padding + margin-bottom) - Fixed ludo board wrapper spacing on mobile Sounds (Ludo): - Dice roll sound + haptic vibration on every roll - Move sound on piece placement - Capture sound + stronger vibration on kills - Six rolled special sound - Home reached celebration sound - Win/lose game end sounds - Celebration overlay on human win Sounds (Chess): - Added celebration overlay on chess win Haptic Feedback: - Button ripple tap vibration (5ms) - Dice roll vibration (15ms) - Capture vibration (30ms) - App.vibrate() helper Visual Improvements: - Better avatar placeholder (gradient background) - Better empty state (flex column, centered, larger padding) - Better input focus glow (3px cyan ring) - Better button active states (darker variants) - Animated gradient text utility (.text-gradient) - Progress bar component - Notification dot component - Divider with text component - Pill selection group component - Section divider utility - Game result animation (scale-in) - Action pulse animation utility - Focus-visible outlines for a11y - Better list item tap feedback - Better card-body padding on mobile (14px) - Games Hub subtitle text - Proper game-specific icons (domino, backgammon, cards) - Stat grid 4-column variant with mobile responsive fallback - Gold button shimmer animation Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Phase 2 (P1): - Pull-to-refresh on mobile (touch gesture + indicator) - Bottom sheet modal system (App.showSheet/hideSheet) - Enhanced toasts with icons, progress bar, swipe-to-dismiss - Nav sliding active indicator (vertical bar desktop, horizontal mobile) - Counter/number animations on profile load - Request caching (App.cachedFetch with 30s TTL) - Responsive typography scale (clamp-based) - Safe area handling for all edges - Animated gradient background on Games Hub - Elevation/depth system (4 levels) - Ludo capture explosion particles - Sound feedback system (Web Audio synthesized tones) - Win streak fire badge on profile nav - Landscape game layout adjustments - Gold shimmer sweep on .btn-gold Phase 3 (P2): - 3D dice roll animation (perspective + rotateX/Y) - Achievement celebration overlay (confetti + gold title) - Gold shimmer effect utility class - Clock urgency visual (pulse <30s, shake <10s) - Page prefetching for adjacent routes - Soft navigation helper (App.navigate with exit animation) Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Games Hub (/games) with game cards grid, replaces separate nav entries - Navigation: single "العاب" entry in both desktop sidebar and mobile bottom nav - Glassmorphism: frosted glass header, desktop nav, and mobile bottom nav - Button ripple effect on all .btn clicks - Card hover/tap lift animation - Gradient accent borders on active game cards - Page enter animation (fade + slide) - Skeleton loading state CSS utilities - Streak calendar strip on home page (7-day visual) - Ludo piece bounce on landing animation - Chess legal move pulsing indicator - Tablet breakpoint (768-1023px) - Breadcrumb back-links on game lobbies - Optimistic UI helper (App.optimistic) - Number animation helper (App.animateNumber) - Lazy image placeholder CSS Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
These CSS variables were used in the game styles but weren't editable via the admin theme customization page. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Pieces were positioned at cell top-left corners instead of centers. Added half-step offset to both top/left calculations. Increased piece size from 4% to 5.2% for better visibility. Adjusted stacking offsets. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Scripts load after inline code in footer pattern; ensure all LudoLive/App references are inside DOMContentLoaded callbacks. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
External scripts load after inline code; LudoConstants was referenced before its script tag was parsed in local mode. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Ludo: 4-player support with CSS-only board (15x15 grid), bot AI (easy/hard), local pass-and-play, multiplayer via Supabase Realtime, in-game chat, matchmaking, private rooms, mixed human+bot games - Theme editor: admin panel at /admin/theme with 9 categories, color pickers, file uploads, DB persistence, global cache - CSS vars: unified all hardcoded colors across the codebase (chess board, analysis, bots, overlays, arrows, eval bar) - New files: ludo-constants, ludo-ui, ludo-bot, ludo-game, ludo-live, ludo-chat, api/ludo, api/theme, pages/ludo*, admin-theme - DB: ludo_matches + ludo_queue tables with RLS policies - Nav: added Ludo icon to sprite.svg and both nav menus Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Check status code and absence of error 'code' key to distinguish real data arrays from PostgREST error objects. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- tournaments: use created_at instead of non-existent start_time - tournaments frontend: use started_at/completed_at columns - shop: guard against non-array response when table missing - achievements: use correct table names and column ordering Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
- 26 May, 2026 15 commits
-
-
Mahmoud Aglan authored
- Replace broken bot avatar images with gradient letter avatars - Hide eval bar on mobile to prevent board cropping - Fix SVG icon rendering (add stroke/fill to icon-lg/sm/xl classes) - Add error handling to App.fetch (try/catch for network failures) - Show empty state instead of infinite loading on tournaments - Use clock icon for draws instead of confusing X icon Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Matchmaking API: queue players by rating/time control, auto-pair - Multiplayer game API: move validation, resign, draw offer/accept/decline, timeout, abort - Supabase Realtime WebSocket client: subscribe to match row changes for live game sync - Matchmaking page: animated search with wait timer, rating range expansion - Live game page: full board with clocks, move list, resign/draw/abort controls - Play page: prominent "ضد لاعب حقيقي" multiplayer button with time control selector - DB: REPLICA IDENTITY FULL on matches table, realtime tenant fixed - Routes: /matchmaking, /game-live?id=UUID Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
The board was getting vertically squished because aspect-ratio doesn't work reliably inside flex containers. Switch to the padding-top: 100% technique with absolute-positioned board inside. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Remove duplicate static coord elements from game.php (board.js creates them dynamically) - Force LTR direction on game-layout and board to prevent RTL interference - Fix piece font-size for proper unicode rendering - Translate all game UI text to Arabic (status, result, stats) - Sync move list and status to both desktop and mobile panels - Improve board colors and spacing Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
- Pro board: drag/drop, pre-moves, arrows, highlights, keyboard nav, coords - Pro timer: Fischer/Bronstein/delay, tenths/hundredths, low-time warnings - Pro move stack: clickable, scrollable, opening detection (100+ openings) - Post-game analysis: eval bar, eval graph, move classification, accuracy % - Puzzle trainer: daily puzzles, streak mode, rush mode, themed puzzles - Sound system: move/capture/check/castle/game-end via Web Audio API - Eval bar: real-time position evaluation display - PGN export, FEN copy, analyze button - 50 seeded puzzles in database with ELO rating system - New icons: eye, download, copy, chart, puzzle, brain Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Complete rewrite from React/Vite to PHP/HTML/CSS/JS stack. - PHP 8.3 Apache Docker setup with routing - Supabase auth (login/register) working - Full CSS design system (dark theme, RTL, responsive) - SVG icon sprite (no emojis) - Desktop side nav + mobile bottom nav - All page routes with placeholders Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
In RTL, marginInlineEnd maps to physical left, which pushed content toward the nav. Using physical marginRight correctly offsets content away from the right-side nav. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Use CSS variable --desktop-nav-width (72px on lg+) with marginInlineEnd for RTL-correct nav offset. Content now truly centers in the remaining viewport space. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Changed lg:mr to lg:pr for nav clearance (RTL-correct), centered content container at 720px max-width, aligned header to same width. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-