Skip to content

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 14 Jun 14:01
b7cd587

1.3.0 (2026-06-14)

Features

  • account deletion, data export, DSGVO consent (Art. 9/17/20) (61f89e0)
  • account lockout after 5 failed logins (OWASP-compliant) (1fe0c5f)
  • activity page glassmorphism, light mode fix, pre-commit + CI hardening (a5cc16c)
  • activity: synchronized chart crosshair, map layer selector, VO₂max sub-page (#204) (e647409)
  • add abbreviation/unit explanations to RPE, Trainingswirkung and metric KPIs (23ff299)
  • add activity detail page with GPS map and training effect (c585a34)
  • add central settings page with connection management (c7ad182)
  • add energy score backfill script + make target (833b6be)
  • add epilepsy seizure diary (V15) (8eeaed9)
  • add epilepsy seizure diary (V15) (034fa5d)
  • add intensity minutes, training status, fix HRV trend display (401d103)
  • add intensity minutes, training status, fix HRV trend display (859f3ca)
  • add manual sync button with last-sync timestamp and error toasts (18b8b67)
  • add new ML metrics for battery pattern and correlations (30164eb)
  • add password reset request test and update password query test (a1687e6)
  • add plain-language explanations to all ML detail pages (8083992)
  • add readiness score info tooltip (19a259d)
  • add RF confidence intervals and API route tests (642bb81)
  • add running economy metrics (V13) (1f77323)
  • add science explanations and sources to all metric detail pages (9f92f50)
  • add Sentry DSN configuration for error tracking in ml-service a… (df7b646)
  • add Sentry DSN configuration for error tracking in ml-service and sync-service (4fb0a63)
  • add tests and configuration for sync-service activities and sleep mapping (104ddb8)
  • add weekly volume aggregation and readiness score endpoints to API (af63969)
  • aktualisiere Schlafberechnung und entferne Qualitätsfaktor für Tiefschlaf (898343d)
  • aktualisiere Trainingsübersicht und verbessere Datenabfrage für Trainingslast (aed6f38)
  • api: einheitliche Fehlerform via globale Exception-Handler (#170) (ce4b4b0)
  • audit logging + remove garmin-tokens volume (b074efd)
  • auto-backfill energy history on ML run when gaps exist (4d401d4)
  • body battery pattern analysis (k-means clustering) (bcbed81)
  • body battery pattern analysis (k-means clustering) (92011ba)
  • CI/CD und Sicherheitsverbesserungen — Trivy Artefakte hochladen, CSP Nonce implementieren, Branch-Namen aktualisieren (cdbf286)
  • CI/CD und Sicherheitsverbesserungen — Trivy Artefakte hochladen… (bfc4d1e)
  • ci: add JS quality gates — Biome lint, Vitest unit tests, Playwright E2E (580b3c5)
  • consolidate dashboard metrics into hero + RPE rating on activity page (0a362dd)
  • custom metrics replace Garmin black-box scores (6eb533d)
  • custom metrics replace Garmin black-box scores (#roadmap-1-6) (ad5db2a)
  • dashboard: update styling for help button and sync action for improved UI (dfca5bf)
  • db: per-service DB roles with least privilege (ADR-0001) (a8b6b1f)
  • db: per-service DB roles with least privilege (ADR-0001) (e9d5738)
  • e2e: implement end-to-end testing workflow and update test configurations (e0f0db1)
  • email-verification at registration (2c18d6d)
  • encrypt Garmin/LibreLink tokens at rest in DB (a06811e)
  • enhance backfill logic to include additional custom metrics for energy scores (fd2b577)
  • enhance body battery model with REM sleep data and improve backfill processes (2f8fdb6)
  • Enhance evidence catalog with EN 62366-inspired fields and update dashboard (edc6519)
  • Enhance metrics rendering and improve sync-service shutdown handling (8cc1cb4)
  • erweitere Schlafmetriken um Einschlaf- und Aufwachzeiten sowie Diagramme für Schlafrhythmus (8204484)
  • erweitere Wochenparameter auf 56 und verbessere Body Battery-Diagramm-Logik (7fe25e1)
  • EU compliance — consent_terms, consent_age, accessibility statement (f52609e)
  • expand seizure risk indicator with HRV, body battery, resting HR and vigorous training flags (cb9703d)
  • extend ML models + add scientific evidence transparency (f5a50ac)
  • Extrahiere Token-Logik in auth_tokens.py und verbessere Sicherh… (5c7eb67)
  • Extrahiere Token-Logik in auth_tokens.py und verbessere Sicherheitsüberprüfungen in auth.py und epilepsy.js (0775ce7)
  • glassmorphism dashboard redesign and fix training status sync (71e3d9b)
  • hardening: app-rules compliance — structlog, caching, CSP, fonts, Docker (96fb992)
  • help: enhance help articles with improved search functionality and layout adjustments; add metrics overview script (fbbfd96)
  • hero card permanent above tabs + fix stress label + 100% coverage (ccaf546)
  • hero card redesign + chart time navigation (49aaab0)
  • implement 4 quick-win ML metrics (ACWR, Training Monotony, Sleep Consistency, SpO2 Trend) (b252bd2)
  • implement ACME/Let's Encrypt support for TLS certificates in Traefik (adc9c7b)
  • implement database structure and inference models for health metrics (625149a)
  • implement epilepsy mode update and enhance risk indicator presentation (c7bb1db)
  • implement historical backfill for new ML metrics (body battery, stress, running economy, hrv recovery) (7a513d2)
  • implement password reset flow and update environment file structure (6fad099)
  • implement training load calculation and update sync settings (c86a99d)
  • implement V17 quick-win metrics (body battery, stress score, running economy, hrv recovery) + spo2 settings (c25d7f0)
  • implement weekly statistics and readiness score endpoints, update activity and dashboard templates (d63229d)
  • initial PulseBase commit (2a9fb72)
  • integrate LibreLinkUp glucose data from Libre 3 CGM sensor (54ad402)
  • Konfidenzintervall auf der Readiness-Seite anzeigen (cb95f64)
  • metrics: enhance metrics with summaries and recommendations (f13399f)
  • metrics: update readiness metrics to include training date and adjust training sample count display (cdccc8c)
  • ML Analytics Phase 1 — ml-service infrastructure (5188d53)
  • ML Analytics Phase 1 — ml-service infrastructure (90367c6)
  • ML Einblicke Widget im Dashboard (c8aeed6)
  • ML Einblicke Widget im Dashboard (PR B) (cd235cc)
  • mobile-first UI redesign and activity date-range filter (90c56d0)
  • ops: verschlüsselter Backup-Container (age) + TimescaleDB-korrektes Restore (Wave 16 PR-B) (#171) (757d7db)
  • password-reset flow + per-service secrets isolation (07cd943)
  • Phase 1 chart polish — gradients, tick limits, pointRadius, touch UX (6a86419)
  • Phase 2 score-cards & surfaces — surface-elevated, scoreLabel, KPI delta (90197d8)
  • Phase 3 inline sparklines — 14-Tage-Trend in Hero-Tiles (0de9f80)
  • Phase 4 navigation — bottom-nav, tab merge, /metrics overview (e7fd3e8)
  • profile: add weight_kg field for VO₂max and W/kg calculations (#202) (052a4f8)
  • readiness score info tooltip (e059eb4)
  • redesign hero card + merge readiness sub-pages into combined view (d42a689)
  • redesign hero card + recalibrate energy metrics (c7d815c)
  • redesign UI — opaque cards, type scale, chart palette (a905f6a)
  • refactor: implement structured logging and Dockerfile improvements across services (b9f582a)
  • replace dashboard hero with bento box layout and add metric detail pages (745052a)
  • replace Garmin-based readiness with own energy metrics + add sleep quality factor to cognitive score (dc33773)
  • report: add architecture review report for PulseBase (e7b5701)
  • restore 4-tab layout (Heute/Training/Verlauf/Erholung) (01a5fc4)
  • RF confidence intervals + API route tests (45bbc8f)
  • RF median imputation + extended correlations (sleep/BB → resting HR) (e61d196)
  • RF median imputation + extended correlations (sleep/BB → resting HR) (40dc257)
  • security hardening, network isolation, Caddy integration (c9899f2)
  • separate ML detail pages with feature importance (f49ceb9)
  • show confidence interval on readiness ML page (e44afaa)
  • style: Motion-Fundament (reduced-motion + Tokens) + Wow-Polish (#162) (5599938)
  • style: Skeleton-Screens für Hero + Aktivitäten (kein Layout-Shift) (#163) (1215a4c)
  • sync-service: add health server and improve fernet key handling (f2c5144)
  • sync-service: add health server and improve fernet key handling (ddf1b16)
  • Tailwind CSS migration + Slate/Emerald redesign + sport type fix (#45) (fb23449)
  • tests: Wave 6 — Tests & Zuverlässigkeit (H-04, H-05, M-14, M-30, M-31, L-12, L-22, L-23) (ac4d679)
  • tests: Wave 6 — Tests & Zuverlässigkeit (H-04, H-05, M-14, M-30… (947e78a)
  • trigger ML inference after sync + add training load as readiness feature (0146622)
  • trigger ML inference after sync + training load as readiness feature (e027f8b)
  • ui: clean up UI components and remove bottom navigation; enhance dashboard layout and ML insights display (2689948)
  • ui: Dashboard ↔ Metriken — klickbare Charts + kuratierte „Deine Metriken"-Leiste + Verwandte-Metriken-Block (#179) (1171fc3)
  • ui: Dashboard-Kopfbereich neu — sticky Top-Bar, Segmented Zeitraum, Sync-Pill (#176) (c9e02a9)
  • ui: hero card redesign + ML metrics consolidation (0a46c1f)
  • ui: KI-Transparenz im Dashboard (UX-Review PR2) (280c88b)
  • update CI configuration, enhance security scanning, and improve error handling in database operations (1b04e8a)
  • update Dockerfiles to include apt-get update and upgrade (8d3fde4)
  • Update documentation for testing, security, and architecture improvements (2ba45c7)
  • update monitoring setup and external service configurations (ac6f9b5)
  • update security policy and documentation for public deployment (5abd67a)
  • update sleep score metric routing and enhance metric descriptions (4c53b73)
  • ux: Item-Level-ML-Feedback (👍/👎) auf KI-Tiles — UX [D3-1] (825a390)
  • ux: PR3 — Anfälle editierbar, Bestätigungsdialoge, Onboarding-Hinweis (4078f1d)
  • ux: PR3 — Anfälle editierbar, Bestätigungsdialoge, Onboarding-Hinweis (5815fd6)
  • ux: PR4 — ML-Feedback (👍/👎) + Rest-Lows [A-6]/[D4-2] (685f5f1)
  • ux: rename stress score to Autonomer Stressindex, consolidate Body Battery + Readiness (#205) (be16ce5)
  • ux: Rohdaten-Hinweis bei ML-Leerzuständen — UX [D4-2] (39c7e35)
  • Verbesserte Protokollierung und Fehlerverarbeitung in allen Die… (0bb883c)
  • Verbesserte Protokollierung und Fehlerverarbeitung in allen Diensten (6624ea1)
  • Wave 10 R1 — Security Quick Wins + 100% Coverage (alle 3 Services) (b889cda)
  • Wave 10 R1 — Security Quick Wins + 100% Coverage (alle 3 Services) (870ce4f)
  • Wave 10 R3 — Architektur & Betrieb (c83c544)
  • Wave 10 R3 — Architektur & Betrieb (M-45, M-46, M-48, M-49, L-40, L-43) (effb1bc)
  • Wave 10 R4 — Tests (L-47–50, M-53, M-55) (82cf3fe)
  • Wave 10 R4 — Tests (L-47–50, M-53, M-55) (0331ee4)
  • Wave 10 Runde 5 — Code-Qualität und neue Tests hinzugefügt (6ea52d6)
  • Wave 7 — Observability & Docker-Härtung (M-20, L-01–05, L-20, L-24, L-25) (c27507e)
  • Wave 7 — Observability & Docker-Härtung (M-20, L-01–05, L-20, L… (cbaaefd)
  • Wave 9 R4+5 — Code-Qualität, CI/CD & Observability (340da7a)
  • Wave 9 R4+5 — Code-Qualität, CI/CD & Observability (2b87a16)
  • Wave 9 Runde 2+3 — Graceful Shutdown, Tests, E2E Coverage (1dfe4fc)
  • Wave 9 Runde 2+3 — Graceful Shutdown, Tests, E2E Coverage (87c3b10)
  • wire recovery chip to metrics page + chip UX fixes (6020c2d)

Bug Fixes

  • a11y: Fokus-Ring-Kontrast anheben — UX [A-6] (0c2c0db)
  • activity: korrigiere Schrittlängenberechnung und erweitere Präzision in der Datenbank (ad24f0c)
  • add stress sparkline to hero card dots (avg_stress from daily data) (248d9ec)
  • add type ignore comments for Settings instantiation in db and main modules (39b4f84)
  • Aktualisiere Importpfad für Authentifizierungseinstellungen in den Tests (9a482f7)
  • body_battery_custom KPIs — show '0' instead of '−0' for zero drains (ee50f50)
  • body_battery_custom metrics page — update KPIs + formula to fresh-state model v2 (3d54abc)
  • cast session user_id to int in require_user; switch to Renovate (1cdabce)
  • CI — mypy explicit-package-bases, trivy ignore-unfixed, bandit assert→raise (ff546bf)
  • CI e2e — env/.env.app + FERNET_KEY migration (f4e8b10)
  • ci: exclude *.md from PR size check (525f589)
  • ci: exclude lockfiles from PR size check, lower sync coverage gate to 50% (938ccd1)
  • ci: remove quiet flag from Playwright browser installation (9d9aef6)
  • ci: suppress bandit B108 + semgrep false positives; move sync DB queries to repo layer (1a1198d)
  • ci: wave 3 — CI/CD hardening (8afe713)
  • correct docker image versions to match existing data (04a0002)
  • db: drop hardcoded DB name in V24 (broke garmin_test) (f295cb1)
  • docker: add missing networks configuration for db-test service (0f1afa4)
  • dynamic feature set for RF model when hrv_last_night has no data (204023f)
  • ensure numeric rounding in weekly stats calculations for distance and duration (c8b24f3)
  • Entferne nicht verwendete pnpm-workspace.yaml Datei (4bfdc9d)
  • epilepsy: epilepsy.js als ES-Modul laden (b295b28)
  • exclude fastapi 0.136.3 (MAL-2026-4750 supply chain) (7919484)
  • gap detection checks each model independently (body_battery_custom + stress_score_custom) (01e8e5e)
  • infra: Wave 2 — Docker reproducibility, healthchecks & security hardening (#181) (c59e637)
  • logging: prevent credential disclosure in Garmin and LibreLinkUp token logging (d6b58db)
  • logging: prevent credential disclosure in token login warning (15fb257)
  • make db + add make logs-ml, make build-ml (50517f1)
  • makefile: remove quiet flag from Playwright browser installation (1c374e2)
  • median imputation for readiness inference + dedup sleep sessions + always refresh readiness today (a1fb84c)
  • ml: circular sleep std, HRV battery fallback, running economy thresholds, stress 75/25 blend (#201) (767791e)
  • mypy arg-type für sentry_sdk.capture_message level-Parameter (a7689a0)
  • mypy type: ignore[override] auf def-Zeile für NonceTemplates (ab52e3d)
  • pass cutoff date as Python date object in ml-service queries (50dbf75)
  • pnpm-workspace.yaml packages field + esbuild allowBuilds (997680e)
  • readiness tooltip extends right instead of left (b1bde64)
  • reduce test coverage failure threshold to 15% (49e4fb9)
  • regenerate uv.lock after package rename garmin-* → pulsebase-* (50572fc)
  • resolve HRV sync bug, align RF labels with energy metrics, and clean up inconsistencies (32f2d64)
  • security+bugs: wave 1 — bug fixes & security quick wins (798f0a8)
  • security+bugs: wave 1 — bug fixes & security quick wins (3effe23)
  • security: address top-10 findings from app-eval audit (7ede441)
  • security: address wave-2a findings from app-eval audit (38650c5)
  • security: address wave-2b findings from app-eval audit (a92756d)
  • security: address wave-2b findings from app-eval audit (f2dfb08)
  • security: address wave-2b findings from app-eval audit (7fb5f2f)
  • security: address wave-2b findings from app-eval audit (e9a00f0)
  • security: Wave 1 — token TTL, Sentry gaps, backup hygiene, GDPR consent audit (#180) (b7300da)
  • security: wave 2 — CSRF protection + reset token invalidation (95025e9)
  • semgrep: drop exc arg from token-login warning to eliminate credential-leak rule (26691bc)
  • semgrep: move nosemgrep comments to preceding line for multiline logger calls (3f6fec3)
  • semgrep: remove PII and credential-leak false positives from logger calls (08a26bf)
  • specify type for password_hash in login function (2d6b912)
  • starlette 1.0.0 → 1.2.1 (PYSEC-2026-161); exclude data/*.json from PR size check (4a6ba78)
  • style: Tailwind-Purge-Bug, Light-Mode-Kontrast + accent-Single-Source (#161) (c685eb8)
  • suppress bandit false positives in libre client (258d58c)
  • sync: support new Garmin API metric format + backfill script + make targets (#203) (6e14788)
  • tests: update save_consent tests to use test IP hash instead of secret (f594b12)
  • training-load: correct EWM alpha factor + readiness arc redesign (d136f35)
  • type=module ergaenzt, identisch zu dashboard/help/metrics. (b295b28)
  • ui: Zeitauswahl-Labels (1W·2W·1M·3M·1J) + Onboarding-Dismiss CSP-fest (#178) (0388fb3)
  • update CI workflow to trigger on all branches and add concurrency settings (b29f983)
  • update CI workflow to trigger on main branch only (56302f3)
  • update logging configuration to write logs to stdout and add Sentry initialization (4fb0a63)
  • update pip-audit commands to use directory paths (897d20b)
  • update readiness test fixture to use energy-based labels (4acb433)
  • update test import after anomaly function rename (2fb83a8)
  • update test to reflect median imputation in predict_tomorrow (e48542f)
  • Wave 8 — Code-Qualität: Rückmeldung zu fehlenden Return-Annotierungen in aktualisiert (f6eda32)
  • wave-6: docs, cosmetics & minor fixes (L2, L5, L6, L18, L25–L28) (#185) (3157502)