- /api/leaderboard - returns top 10 players
- /api/stats - returns total players/games
- /api/health - health check
- Website now shows live leaderboard with auto-refresh
- Nginx proxies /api to container port 8080
Features:
- Player database with ELO tracking
- Game recording
- Leaderboard view (top 10 players)
- ELO calculation after each game
- Player stats (wins/losses/draws/winrate)
Database schema:
- players: id, username, elo, games_played, wins, losses, draws
- games: id, players, result, moves, elo_changes, duration
Menu now shows option 4 for Leaderboard
- Health checks: website, SSH server, Docker containers
- Auto-rollback to previous commit if checks fail
- Auto-create PR to staging when develop passes all checks
- Detailed deployment summary in GitHub Actions
- develop: auto-deploy to dev.shellmate.sh
- staging: auto-deploy to staging.shellmate.sh
- main: auto-deploy to production shellmate.sh
Proper CI/CD flow:
1. Feature branch → PR to develop → CI tests → merge → deploy dev
2. develop → PR to staging → deploy staging
3. staging → PR to main → deploy production
- Type source square (e.g. E2), see piece selected (blue highlight)
- Legal destinations shown in green with dots
- Type destination to complete move
- ESC to cancel selection
- Click same piece to deselect
- Much smoother than typing full move
- Simple box drawing characters
- Direct ANSI escape codes (no Rich markup issues)
- Dots on dark squares, empty on light
- White pieces bright white, black pieces yellow
- Clean single-line cells like Gambit
- Auto-scales: big board for large terminals, compact for smaller
- Dark/light square colors with background shading
- White pieces in white, black pieces in yellow for contrast
- Unicode box-drawing characters for elegant borders
- Centered vertically and horizontally
- Better status display
- Connect resize handler to process channel
- Re-fetch terminal size before each render
- Improved screen clearing to remove artifacts
- Added debug logging for terminal size changes
- Remove leftover console.print that caused scope error
- Consolidate all board rendering into render_board function
- Add vertical centering based on terminal height
- Board now properly centers in any size terminal
- Remove complex Rich styling from board (caused rendering issues)
- Use simple ASCII box drawing (+---+) instead of Unicode box chars
- Use dots for dark squares, spaces for light
- Plain text status display
- Much more reliable over SSH terminals
- Fix mismatched closing tags in menu markup
- Use Text() objects for safe string rendering
- Add comprehensive UI render tests that catch markup errors
- Tests cover: menu, game status, chess board, narrow terminals
- CI will now catch these before deployment
- Remove key generation from Dockerfile (was causing new key each build)
- Add ssh_keys volume mount in docker-compose
- Generate key at runtime only if it doesn't exist
- No more clearing known_hosts after updates!
- Add TerminalSession class with proper resize handler
- Fix crash when terminal is resized
- Add ASCII art title for wide terminals
- Better centered panels with Rich
- Green chess board theme with proper piece colors
- Stockfish AI integration (falls back to random moves)
- Move history display
- Responsive layout that adapts to terminal size
- Hide/show cursor appropriately
- Return False from begin_auth to skip authentication
- Users can connect instantly without password/key prompts
- Frictionless: just ssh play@shellmate.sh
- Auto-fit to terminal size with dynamic cell sizing
- Refined color palette (sage/forest green squares)
- Gold highlights for selected squares
- Perfect border alignment with box-drawing chars
- Double-line outer borders for polish
- Compact mode auto-triggers on small terminals
- Better piece visibility with bold rendering
- Improved sidebar layout and sizing