- 27 May, 2026 11 commits
-
-
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 29 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>
-
Mahmoud Aglan authored
Content was stretching full-width on 1920px screens. Added 800px max-width centered container in AppShell, fixed nav overflow for scrollable items. 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
Toned down bg layers (less blue, more neutral dark), replaced card-based login layout with a clean borderless form using subtle transparency for inputs. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
- Primary CTA: wider (88%), taller (py-6), larger text (xl) - Secondary CTA: wider (82%), taller (py-5), thicker border - Time control tiles: bigger (py-5), larger text (base) - More gap between sections (gap-5) and buttons (gap-5) 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
- Add 'as const' to transition type literals in variant objects for Framer Motion 12 compatibility - Replace playSound('click') with playSound('tap') to match sound registry - Use ENV.SUPABASE_URL instead of protected supabase.supabaseUrl property Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
-
Mahmoud Aglan authored
Vibrant, playful design system with thick 3px borders, bold/black font weights, bouncy spring animations, and saturated colors. Desktop-friendly with responsive container (480-560px max-width). - New color palette: brighter gold, vibrant coral/cyan/purple - Thick bordered cards, push-effect buttons, animated glow rings - app-container system: centered content, generous gutters - All 14 pages rewritten with the new design language - No edge-to-edge elements anywhere Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Phase 5: Real-time multiplayer with matchmaking queue, live clock sync, and Supabase Realtime for move broadcasting between players. Phase 7: Friends system with requests/accept/block, notifications with Realtime subscription, and online presence heartbeat. Phase 8: Tournaments list with registration and status filters, leaderboard with time control/period filters and top-3 podium. Phase 9: Cosmetics shop with rarity system, purchase flow, daily reward with streak multiplier. Phase 10: Edit profile modal, recent games on home/profile, improved settings/404/toast system. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
Nginx now serves index.html with no-cache headers so every deploy is immediately visible. Login/Register pages get floating card treatment with visible gutters, gold borders, and centered buttons. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-
Mahmoud Aglan authored
PageTransition now caps at 360px centered, creating visible dark background gutters on each side. Header and nav are floating pills with rounded-[18px]. Buttons use w-[85%] not w-full. Co-Authored-By:Claude Opus 4.6 <noreply@anthropic.com>
-