Historie změn
Verze:
v1.2.2 (068f3c6)
Poslední aktualizace:
2026-02-21
Poslední commit:
Release v1.2.2 - Subdirectory Language URLs (#26)
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.2.2] - 2026-01-12
Frontend
Changed
- Language URLs - Switched from query parameters (
?lang=cs) to subdirectory URLs (/cs/) for better SEO - Automatic redirects - Old
?lang=URLs now redirect (301) to new subdirectory format - Language switcher - Updated to navigate between subdirectory URLs
Backend
Backend
Added
- Subdirectory language routing - All HTML pages now support
/{lang}/prefix (e.g.,/cs/privacy,/cs/configure/calendar) - Language URL helpers - New
lang_url()function for generating language-aware URLs in templates
Changed
- Sitemap - Now includes all language variants with subdirectory URLs
- Hreflang tags - Updated to reference subdirectory URLs instead of query parameters
- BMP endpoints unchanged - API endpoints (
/calendar.bmp,/teams.bmp) still use?lang=parameter
Fixed
- Router ordering - Reordered routers so
/preview/*routes are matched before/{lang}/*patterns - Service Worker - Removed non-existent
favicon.svgfrom cache list (was causing SW install failure) - Configure page preload - Removed unused image preload that didn't match dynamically loaded variants
[1.2.1] - 2026-01-12
Backend
Backend
Fixed
- Spectra 6 PNG previews - Configure page previews now display colors instead of grayscale
- SEO: Sitemap HEAD support -
/sitemap.xmland/robots.txtnow respond to HEAD requests (fixes Google Search Console) - SEO: Canonical URLs - Sitemap now uses clean URLs without
?lang=parameter
[1.2.0] - 2026-01-11
API
Added
displayparameter for/calendar.bmp- set tospectra6for 6-color E-Ink displays (default:1bit)
Frontend
Added
- Display type selector - Choose between 1-BIT (monochrome) and 6-COLOR (Spectra 6) display modes
- Mobile display controls - Full display type settings available on mobile sidebar
- Pre-rendered preview variants - Configure page now uses pre-rendered PNG for all weather/display combinations
Fixed
- SEO - Invalid or empty
?lang=parameter now redirects to canonical URL (301) - Language preference - Stored language preference now applied correctly on page load
- Weather buttons - Fixed visibility in desktop mode
- Preview weather sync - Weather OFF/current/race buttons now show correct preview image
Backend
Backend
Added
- Spectra 6 Renderer - New 840-line renderer for 7.3" 6-color E-Ink displays (800×480)
- 6-color palette - BLACK, WHITE, RED (#A02020), YELLOW (#F0E050), GREEN (#608050), BLUE (#5080B8)
- Pre-processed track images - 25 circuit maps optimized for Spectra 6 (494×271, no dithering)
- Pre-processed flag images - 26 country flags for Spectra 6 (87×58)
- Dedicated F1 logo - Color-optimized logo for Spectra 6 displays
- Weather pre-fetch - Scheduler fetches weather at :55 before hourly image generation
- DeepSource integration - Automated code quality analysis
- PNG preview variants - Scheduler generates preview PNG for all weather/display combinations
Changed
- Scheduler - Pre-generates all variants: 2 displays × 3 weather modes × 2 languages
- Session colors - Simplified for Spectra 6: only "Race" is RED, all others BLACK
- Red accent lines - F1 logo underline and results separator now use RED in Spectra 6
- Code quality - Added @staticmethod decorators to pure utility methods
- Short countdown labels - Uses "d"/"h" instead of "days"/"hours" for current/race_day weather types
- Unified weather cache - Image generation now uses same in-memory cache as dynamic rendering
Fixed
- CIRCUIT_ID_MAP - Added Vegas → Las Vegas mapping for track images
- Country code logic - Removed redundant fallback (already in COUNTRY_MAP)
- Weather config - Added missing weather configuration attributes
- Track centering - Spectra 6 renderer now centers track images horizontally and vertically
- Pre-generated image selection - Correctly selects BMP file based on weather_type parameter
[1.1.4] - 2026-01-04
API
Added
weatherparameter for/calendar.bmp- set tofalseto disable weather displayweather_typeparameter -currentfor current weather,race_dayfor race day forecast (default)
Frontend
Added
- Weather display in countdown box - Shows weather icon, temperature, and precipitation chance
- Weather Icons font - Professional weather icons from erikflowers/weather-icons (SIL OFL 1.1)
- Weather type selector - Choose between current weather or race day forecast
- Mobile weather controls - Full weather settings available on mobile sidebar
Changed
- Countdown box redesign - Now shows
🏁 5D 3Hformat with weather on the right - Circuit stats simplified - Only shows track length, fastest lap, and First GP (weather moved to countdown)
- Configure page - Weather section with neobrutalism-styled toggle buttons (OFF/CURRENT/RACE DAY)
Backend
Backend
Added
WeatherServiceclass with Open-Meteo API integrationWeatherDatadataclass with icon, temperature, and precipitation properties- Weather icon font loader (
_load_weather_icon_font) - Race day weather forecast (up to 14 days ahead)
- Current weather fallback when race day forecast unavailable
- Weather caching (60 minutes default)
Changed
render_calendar()now acceptsweather_dataparameter_draw_countdown_box()renders weather alongside countdown_draw_circuit_stats()simplified - removed weather row- Weather params included in BMP cache key
[1.1.3] - 2026-01-02
Backend
Backend
Fixed
- Font MIME Type - TTF fonts served as
text/plaininstead offont/ttf- registered correct MIME types
[1.1.2] - 2026-01-02
Backend
Backend
Fixed
- Font Loading - SpaceMono TTF files were corrupted (HTML instead of binary) - re-downloaded from Google Fonts
- SEO - Fixed hreflang x-default to include
?lang=enfor consistency with canonical URLs - Performance - Removed oversized favicon.svg (240KB embedded PNG) - using PNG favicon instead
[1.1.1] - 2026-01-02
Frontend
Fixed
- LCP Optimization - First preview image now has
fetchpriority="high"and no lazy loading - CLS Prevention - Added explicit
width="800" height="480"to preview images - Logo Optimization - Removed oversized 2x srcset (19KB → 10KB saved), added
fetchpriority="high" - Render-blocking - Deferred
common.jsscript loading
Accessibility
- WCAG AA Contrast - Fixed low contrast text in credits section (
text-gray-400→text-gray-600) - WCAG AA Contrast - FoxeeLab link now uses
font-boldwith hover state instead oftext-racing-red - Screen Readers - Added
aria-labelto mobile menu buttons with fallback (nav.get('nav_menu', 'Menu')) - Screen Readers - Added
aria-hidden="true"to decorative SVG icons - Screen Readers - Added
sr-onlylabel to language switcher select
SEO
- Canonical URLs - Now correctly use
request.url.pathwith language parameter - Hreflang Tags - Fixed to match canonical URL structure per page
[1.1.0] - 2026-01-01
API
Added
/teams.bmpendpoint for teams & drivers grid/api/teams/{year}endpoint for team data (JSON)/api/standings/leaderendpoint for championship leaders (JSON)/api/perfendpoint collects Web Vitals (LCP, FCP, CLS, TTFB, INP) from browsers
Frontend
Added
- New landing page with screen type selection (Calendar/Teams)
- Teams & Drivers screen - Full team grid with driver photos and points
- Teams panel sidebar on homepage showing championship leaders
- Configure page (
/configure/{screen}) for interactive preview of each screen type - Percentile Stats - p50/p75/p95 percentiles for Core Web Vitals with color-coded thresholds
- Service Worker - Offline caching for static assets (
/static/*) with cache-first strategy - Critical CSS Inlining - Above-the-fold CSS inlined in
<head>for faster first paint
Changed
- Redesigned homepage with screen type selector
- Improved teams screen layout with full driver names and enlarged photos
- Driver numbers now display in Racing Sans font when photo is missing
- Team logos centered with fixed container sizing
- Drivers sorted by points within each team
- Stats page Web Vitals section now displays percentile table instead of simple averages
- Stylesheet loading now uses preload/onload pattern with noscript fallback
Fixed
- Mobile navigation - Added missing nav links (Stats, API, Privacy, Changelog) to configure page sidebar
- Driver number font size increased to 22px for better proportion
- Left-aligned driver positions with enlarged P1-P3 badges
- Preview position now maintains consistent spacing
- Removed duplicate logo from homepage
- Fixed Zivyobraz.eu capitalization
Backend
Backend
Added
- Team logos integration in teams service
- GZip Compression - Response compression middleware for responses >=500 bytes
get_perf_trends()method in database service for hourly metric aggregation- Percentile calculation (
_calculate_percentile()) for performance statistics
Changed
get_perf_stats()now returns p50/p75/p95 percentiles for each metric
Fixed
- Teams "Current" season logic - Now correctly returns 2025 data until March 8, 2026 (season start) instead of using calendar year
[1.0.2] - 2025-12-30
Backend
Backend
Security
- Fix 7 CodeQL path injection vulnerabilities (high severity) in
i18n.py,f1_service.py,main.py
[1.0.1] - 2025-12-28
Backend
Backend
Security
- Add timezone, language, and year validation to prevent path injection attacks
- Add
permissions: contents: readto CI workflow
Added
- Startup check for persistent storage - Creates
.persistence_markerfile, warns if storage is non-persistent
[1.0.0] - 2025-12-26
Initial public release.
API
Added
/calendar.bmpendpoint for E-Ink calendar imagelangparameter for language selection (cs/en)tzparameter for timezone conversionyearandroundparameters for specific race selection
Frontend
Added
- Neobrutalist UI redesign with Space Mono font, neo-brutalist shadows, and black borders
- Persistent header with navigation links (GitHub, API, Privacy, Credits dropdown)
- Mobile-responsive layout with hamburger menu for small screens
- Timezone selector with continent filters and search functionality
- Auto-detection of user's timezone in browser
- Credits dropdown in header with links to all third-party services and inspiration
- Privacy Policy page (
/privacy) with multi-language support (EN/CS) - Interactive API documentation (
/api/docs/html) with styled UI and code examples - 800x480 1-bit BMP calendar image for E-Ink displays
- Multi-language support (Czech and English)
- Historical race results display (previous year's podium)
- Circuit statistics display (length, laps, first GP)
- Track map rendering
Changed
- Footer removed - all links moved to persistent header navigation
- UI language detection from
Accept-Languageheader with?lang=override - Improved mobile layout with collapsible sidebar instead of inline controls
Fixed
- Header title now clickable link to homepage on all pages
- Hamburger menu now properly closes with overlay click and close button
- Missing timezone label element added for timezone display
Backend
Backend
Added
- FastAPI backend with async support
- F1 race data fetching from Jolpica API
- Timezone conversion (UTC to configurable timezone)
- Umami analytics integration
- Sentry/GlitchTip error monitoring
- Docker and Docker Compose support
- Coolify deployment support
- SQLite-based API call logging with data transfer statistics
- Complete favicon set: SVG, ICO (48x48), Apple Touch Icon (180x180), PWA manifest icons
- New translations:
laps,first_gp,circuit_not_available,contact_github, privacy policy texts
Changed
- F1Service now accepts timezone parameter
- Database paths now use absolute paths (
/app/data/) for Docker container compatibility
Fixed
- Database persistence with absolute paths for Docker deployments
- HTML structure with proper
<main>element nesting toggleSidebar()function added to main page JavaScript- Umami analytics task reference retention for proper async tracking
- Circuit ID mapping:
vegasnow correctly maps tolas_vegasfor circuit stats - Moved debug scripts to
scripts/directory - Cleaned up root directory (removed test files, old Dockerfile)