Big June 26 Update with a long list of new features, fixes and security improvements.
Added: Title and Comment for Workouts
Added: Public stream - public feed of workouts marked as is_public (list + detail)
Added: SVG mini-map thumbnails and pace on public workout cards
Added: Light/dark logo variants in public topbar and share view
Added: Theme-aware icons in public and share views
Added: Workout title and comment fields, editable from the dashboard
Added: Public footer with source-code links
Added: Embed tokens with expiry (migration 0018, default 365 days)
Added: Audit-log composite index (migration 0017) for retention queries
Added: HTTPException responses={...} documentation on all endpoints
Added: SonarQube stage in the GitLab pipeline
Changed: FastAPI dependency injection migrated to Annotated (Depends + Query)
Changed: Geocoding moved out of the import hot path
Changed: Correlated EXISTS in /workouts and /public/workouts (N+1 fix)
Changed: ImportJob always reaches a terminal status, even on BaseException
Changed: Content-length and max-workouts-per-request limits on POST /workouts
Changed: Hardened pagination, upload, and token bounds
Changed: Streaming GPX export
Changed: Form-label a11y - inputs bound via for/id, group labels switched to div
Changed: Badge color contrast via light-dark() for 23 activity badges
Changed: Public workout card uses router-link instead of article role="button"
Changed: log_audit converted to sync (16 call sites updated)
Changed: TypeScript - Number.parseInt/parseFloat/isNaN, globalThis over window, .replaceAll, dataset over setAttribute, .remove() over removeChild, onMounted instead of top-level async calls
Changed: Case-block lexical declarations and else-if refactors
Fixed: SonarQube Quality Gate ERROR → OK; total issues 218 → 0
Removed: HelloWorld.vue scaffold leftover
Bump: fastapi 0.136.1 → 0.136.3
Bump: starlette 1.0.1 → 1.2.1
Bump: uvicorn[standard] 0.47.0 → 0.48.0
Bump: sqlalchemy[asyncio] 2.0.49 → 2.0.50
Bump: python-multipart 0.0.29 → 0.0.30
Clone, build, run!
Get the Code on Codeberg.




Schreibe einen Kommentar