Avatar for the Rhiz3K user
Rhiz3K
InkyCloud-F1
BlogDocsChangelog

Performance History

Latest Results

fix: restore circuit facts and championship headings Restore supplementary circuit data without replacing newer runtime history. Keep its legacy provenance separate from Jolpica results and verify current Madring facts. Restore the original e-paper headings and expire old images. Expand the complete team-logo source review and distinguish weather request estimates from counters that require access to the deployed database.
feat/open-track-artwork-and-privacy
4 days ago
fix: harden data sync, API limits, startup readiness, renderer, and web assets (#124) * fix(data): keep the season sync running when the next season is unpublished Jolpica answers with an empty race list for a season the FIA has not published yet. The updater treated that as a hard failure, exited 1, and the workflow skipped its pull-request step, so the 2026 calendar has not been synced since July. Skip unpublished seasons, keep failing when a season that already had races comes back empty, and let the workflow open a PR for updated seasons before reporting a failed year. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(api): rate-limit before auth, compare tokens as bytes, validate perf paths Apply the per-IP quota before validating ADMIN_API_TOKEN so guessing is bounded, and compare tokens as UTF-8 bytes because compare_digest raises TypeError (an HTTP 500) for non-ASCII str input. Validate perf-metric page_path as a site-relative path, collapse unknown pages into /other, and lower the default beacon quota to one browser page view worth. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(startup): publish calendars before upstream refreshes Readiness depends only on a fresh core generation, but startup ran the historical catch-up (up to the 90-minute budget under Jolpica rate limits) and the all-circuit weather fetch first, leaving /health/ready in 'starting' past the container health-check window. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * perf(upstream): cache Jolpica payloads and degraded rosters Requests for seasons without a static file refetched Jolpica on every call and degraded team rosters were never cached, so a burst of unique requests queued hundreds of paced upstream calls behind the scheduler. Cache raw season and round payloads with positive and negative TTLs and per-key coalescing, keep degraded rosters for five minutes, parse each static season file once per on-disk version, and stop logging every calendar request at INFO. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(changelog): remember failed GitHub version lookups briefly With an empty cache every /changelog view performed two blocking GitHub API calls while the API was down or rate-limited. Keep a five-minute negative cache and skip the inline refresh inside that window. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * perf(renderer): resample 1-bit track maps in grayscale and drop per-pixel loops Pillow silently uses NEAREST for mode '1' resizes, which broke thin track lines on 19 of 25 preprocessed maps; resample in grayscale and re-threshold instead. Count logo activity rows in Pillow's C loops and pack 4-bit BMP nibbles without a Python per-pixel walk, taking startup warmup from about nine seconds to under one and each B/W/R render down by roughly a hundred milliseconds. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(reset-db): guard running instances and fail on SQL errors Deleting the database under a running instance left the app writing to an unlinked inode without a schema until restart, and sqlite3 failures still printed success. Run with strict shell mode, use the app's busy timeout, refuse 'all' while WAL/SHM sidecars exist unless --force is given, and document running the reset against a stopped service. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(web): escape translations in configure markup, fix stylesheet loading and labels Localized labels were concatenated into innerHTML unescaped, the primary stylesheets were loaded through a preload swap that rendered hidden menus in-flow before CSS arrived, static URLs had no cache-busting, the icon-only sidebar close button had no accessible name, and the sidebar controls were not associated with their labels. Also escape the Umami website id inside the tracking script tag. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * chore(ci): cover composite actions, drop unused OIDC permission, harden containers Dependabot never scanned .github/actions, leaving setup-uv pinned to an older version than the workflows. Remove the id-token permission that no step uses, exec uvicorn as PID 1, drop all capabilities and disallow privilege escalation in Compose, tag Sentry events with the release, and replace the broken pip extras install in the contributor docs with the uv dependency group CI actually uses. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * chore(release): 1.2.40 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix: address review feedback on season sync, remote cache semantics, and lint Keep merging static cancellations when the upstream calendar is empty (only a failed fetch short-circuits), report an unreadable existing season file instead of treating it as unpublished, locate out-of-range BMP pixels without an unguarded next(), and drop a redundant lambda in the API tests. Also fix the last stale locale mention in the Copilot instructions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(cache): reject malformed Jolpica payloads before caching * fix(startup): include fresh weather without scheduler * fix(data): harden season updates and refresh 2026 calendar * docs: run development commands through uv * ci(data): report season update failures through issues * chore(release): update 1.2.40 notes * fix(cache): bound retries for malformed Jolpica payloads * fix(changelog): suppress retries after refresh errors * fix(web): localize settings sidebar close label * refactor(changelog): encapsulate version cache state * fix(f1): handle null race times in season payloads * fix(calendar): render Sepang with validated track artwork Add semantic palette variants and fit overflowing race titles.\n\nProvide a provenance-gated local importer and fail season updates when an active circuit is missing source artwork or a runtime BMP. * style: format code with Ruff Formatter This commit fixes the style issues introduced in 293d419 according to the output from Ruff Formatter. Details: https://github.com/Rhiz3K/InkyCloud-F1/pull/124 * fix(calendar): harden artwork publication and title fitting Publish track source variants behind a final hash marker so preprocessing and CI reject interrupted or mixed bundles. Clamp subtitles that remain too wide after font fitting and remove redundant exception catches flagged by DeepSource. * test(assets): cover bundle validation failures Exercise every fail-closed marker branch and both PNG encoding errors so the changed-line coverage ratchet protects the complete bundle contract. Simplify the expected-path construction flagged by DeepSource. * fix(previews): honor conditional PNG requests Return an empty 304 for matching configure-preview ETags while preserving the FileResponse validators and cache policy. Reuse one stat snapshot so validation and delivery describe the same file revision. --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: deepsource-autofix[bot] <62050782+deepsource-autofix[bot]@users.noreply.github.com>
main
11 days ago

Latest Branches

CodSpeed Performance Gauge
0%
chore(deps): bump the uv group across 1 directory with 2 updates#126
6 days ago
0ea6d40
dependabot/uv/uv-c06bb78122
CodSpeed Performance Gauge
-1%
CodSpeed Performance Gauge
0%
12 days ago
cc566a9
dependabot/docker/python-cad9a2c
© 2026 CodSpeed Technology
Home Terms Privacy Docs