- Added language selector in top-left corner
- Implemented data attributes for all translatable text
- Created language management system with localStorage persistence
- Updated all JavaScript functions to support both languages
- Added translations for notifications, error messages, and UI elements
- Maintained existing functionality while adding language switching
- Updated .data-table tr:hover to use subtle dark background
- Fixed .data-table th background and text colors
- Updated table cell text colors to white
- Fixed border colors to match dark theme
- Table text is now readable on hover
- Updated .page-stat-card background to dark theme
- Changed border-left color to cyan accent
- Updated h3 text color to white
- Fixed close button hover color
- All page statistics cards now fully dark
- Added dark background to .page-stats-content container
- Updated .page-item cards with subtle dark background
- Added hover effects for better interactivity
- Improved visual consistency with dark theme
- All page statistics cards now match dark design
- Fixed .modal-content background to dark theme
- Fixed .link-stat-card background to dark theme
- Updated text colors in link statistics cards
- Changed close button color to match dark theme
- All sections now consistently use dark design
- Updated .page-stats-section background to dark theme
- Changed text colors to white for better contrast
- Updated border colors to match dark theme
- Changed page-count badges to cyan accent color
- Fixed 'Hauptseiten besucher' section to match overall dark design
- Updated adminlogin.css to use dark theme with Inter font
- Updated generator.css to use dark theme with Inter font
- Updated admin-dashboard.css to use dark theme with Inter font
- All pages now use consistent:
* Dark background with radial gradients
* Inter font family
* Dark containers with glassmorphism effect
* White text on dark backgrounds
* Consistent color scheme (#00d4ff accents, #8892b0 secondary text)
* Unified border and shadow styling
- Improved visual consistency across entire application
- Added proper HTML/body height: 100% for full viewport height
- Changed body to flex-direction: column for proper footer positioning
- Updated footer CSS with margin-top: auto for sticky footer behavior
- Added flex-grow: 1 to containers for proper space distribution
- Footer now properly sticks to bottom of viewport
- Improved responsive layout for both adminlogin and generator pages
- Removed automatic API location name usage
- User input from locationSearch field is used as location name
- API search only provides coordinates (latitude/longitude)
- User has full control over location naming
- Search functionality purely for coordinate lookup
- Added hidden field 'realLocationName' to store actual location name from Nominatim API
- Updated location saving to use real location name (display_name) instead of search term
- Fallback to search term if real location name not available
- Now saves proper location names like 'Marienplatz, Altstadt-Lehel, München, Bayern, Deutschland' instead of just 'München'
- Improved location data quality in database
- Added show_in_leaderboard to user-player API response
- Improved loadSettings() function with better error handling
- Added console logging for debugging
- Settings modal now shows current user preference instead of always 'off'
- Fixed dependency on currentPlayerId (now uses currentUser.id directly)
- Changed from /api/v1/private/update-player-settings to /api/v1/public/update-player-settings
- Removed API key requirement for logged-in users
- Added both public and private endpoints for flexibility
- Fixed 401 Unauthorized error in settings modal
✨ Features:
- Added show_in_leaderboard column to players table (default: false)
- Replaced Quick Actions with Settings section in dashboard
- Added toggle switch for leaderboard visibility
- Created settings modal with privacy controls
🔧 API Changes:
- Added /api/v1/private/update-player-settings endpoint
- Updated best-times queries to filter by show_in_leaderboard
- Updated times-with-details to respect privacy settings
- Added updated_at column to players table
🎨 UI/UX:
- Modern toggle switch design
- Responsive settings modal
- Success/error notifications
- Clear privacy explanation
🔐 Privacy:
- Default: Times are NOT shown in global leaderboard
- Users can opt-in via settings
- Personal dashboard always shows own times
- Global leaderboard only shows opted-in users
- Simplified CORS configuration to allow all origins (*)
- Removed origin restrictions for easier development
- Fixed CORS preflight request handling
- Now allows requests from any domain including 192.168.1.96
- Created detailed API.md with all endpoints
- Documented Public, Private, Web, Admin and Achievements APIs
- Added request/response examples for all routes
- Included data models and error handling
- Added authentication methods and status codes
- Comprehensive documentation for 55+ API endpoints