Marc-André Bombeck
bc94223423
style(insights): run prettier on the metric stat strip
...
The formatter joins one JSX line that was left wrapped. No behaviour change.
It is the only thing standing between this branch and a green gate: typecheck,
tests, e2e, integration and both image builds already pass, and `format:check`
fails on this file alone.
2026-07-30 10:33:24 +02:00
Marc-André Bombeck
c83254032e
fix(google-health): map badminton workouts
2026-07-29 22:24:04 +02:00
Marc-André Bombeck
0c7b958b1b
fix(workouts): collapse repeated same-source sessions
2026-07-29 21:30:52 +02:00
Marc-André Bombeck
90b1a4eaee
fix(insights): improve narrative contrast and spacing
2026-07-29 21:28:29 +02:00
Marc-André Bombeck
ab450bbfd1
fix(dashboard): keep hero headline when score lead is removed
2026-07-29 21:20:16 +02:00
Marc-André Bombeck
bdca4f5724
fix(dashboard): compact score-only hero
2026-07-29 17:05:53 +02:00
Marc-André Bombeck
1682c3b54d
fix(web): render public pages under nonce CSP
2026-07-29 16:46:19 +02:00
Marc-André Bombeck
271f0ed28a
fix(medications): make import replay results honest
2026-07-29 16:11:45 +02:00
Marc-André Bombeck
5b695f43ea
fix(analytics): restore device-priority sleep selection
2026-07-29 16:08:41 +02:00
Marc-André Bombeck
fb02cf89b1
fix(jobs): reconcile durable fact inventory
2026-07-29 15:59:27 +02:00
Marc-André Bombeck
75aa850eae
style: satisfy v1.34.1 format gate
2026-07-29 15:59:12 +02:00
Marc-André Bombeck
b0a94b3423
fix(web): stabilize document and example downloads
2026-07-29 15:57:20 +02:00
Marc-André Bombeck
fb9ae2ac61
fix(coach): keep stateless turns grounded
2026-07-29 15:56:19 +02:00
Marc-André Bombeck
9354c649fe
fix(integrations): surface Google sync progress and canonical workouts
2026-07-29 15:55:37 +02:00
Marc-André Bombeck
b9879e8829
fix(nightscout): pin approved private origins
2026-07-29 15:54:01 +02:00
Marc-André Bombeck
8db21ab718
fix(jobs): persist bounded success outcomes
2026-07-29 15:50:42 +02:00
Marc-André Bombeck
b41b32d472
feat(i18n): complete v1.34.1 locale reconciliation
2026-07-29 15:11:40 +02:00
Marc-André Bombeck
67eeefd584
fix(i18n): translate final security and import states
2026-07-29 15:07:35 +02:00
Marc-André Bombeck
b6dfe62c9d
test(i18n): inventory v1.34.1 locale contracts
2026-07-29 15:07:05 +02:00
Marc-André Bombeck
5bc213c5b8
test(01-21): type guarded progress mock calls
...
- declare the updateMany mock argument tuple
- assert the guarded write exists before inspection
2026-07-29 15:04:08 +02:00
Marc-André Bombeck
ba6d06be3b
feat(01-21): expose Google sync terminal status
...
- return redacted per-resource outcomes from manual sync
- poll owner-scoped progress and invalidate committed workout views
2026-07-29 15:01:13 +02:00
Marc-André Bombeck
104a058096
style(workouts): format pulse enrichment
2026-07-29 14:58:46 +02:00
Marc-André Bombeck
5ec1a3836f
feat(01-21): add fair Google sync outcomes
...
- finish workout and low-cost resources before dense metrics
- report bounded terminal outcomes and invalidate workout caches
2026-07-29 14:58:40 +02:00
Marc-André Bombeck
f6555d471b
fix(workouts): show aggregate pulse in lists
2026-07-29 14:58:25 +02:00
Marc-André Bombeck
d2f6bf33eb
fix(workouts): sanitize WHOOP zone enrichment
2026-07-29 14:58:24 +02:00
Marc-André Bombeck
89fefce7ac
test(workouts): separate pulse aggregates from curves
2026-07-29 14:57:42 +02:00
Marc-André Bombeck
43cce08012
fix(workouts): share enriched canonical detail data
2026-07-29 14:56:59 +02:00
Marc-André Bombeck
ed63a3bf32
test(workouts): pin enriched list and detail envelopes
2026-07-29 14:56:21 +02:00
Marc-André Bombeck
635e9b64c5
fix(workouts): enrich canonical WHOOP aggregates
2026-07-29 14:55:11 +02:00
Marc-André Bombeck
1cb0f7dd6a
test(workouts): pin WHOOP aggregate enrichment
2026-07-29 14:53:59 +02:00
Marc-André Bombeck
c3ffc43335
refactor(01-22): reuse Google cohort concurrency limit
...
- preserve the shared Google Health poll fan-out width
2026-07-29 14:53:22 +02:00
Marc-André Bombeck
6a3861122c
feat(01-22): publish truthful cohort outcomes
...
- fold complete partial failed parked and skipped user verdicts
- bound serialized job facts to a privacy-safe scalar allowlist
- preserve provider retry isolation and reminder queue completion
2026-07-29 14:50:30 +02:00
Marc-André Bombeck
5cfcb69ef2
feat(01-21): add guarded Google sync progress
...
- persist one bounded owner-scoped current-run envelope
- reject stale writers and materialize interrupted runs safely
2026-07-29 14:49:12 +02:00
Marc-André Bombeck
addd6b7000
fix(01-19): avoid phantom ECG failure counts
...
- increment archive-level failures only for discovered ECG artifacts
2026-07-29 14:47:47 +02:00
Marc-André Bombeck
4b64556b38
feat(01-19): expose privacy-safe ECG import outcomes
...
- return and render bounded ECG result counters with partial-failure wording
- document archive limits, encrypted storage, and exact WHOOP constraints
2026-07-29 14:47:22 +02:00
Marc-André Bombeck
a686c7200b
feat(01-19): persist Apple Health ECG recordings
...
- encrypt and upsert stable content-addressed ECG recordings transactionally
- keep XML imports successful while ECG members fail with scalar counters
2026-07-29 14:45:40 +02:00
Marc-André Bombeck
f06137c0db
feat(01-19): add bounded Apple Health ECG parsing
...
- validate ZIP paths, compression metadata, and actual decompressed bytes
- normalize ECG CSV descriptors and bounded microvolt samples
2026-07-29 14:42:18 +02:00
Marc-André Bombeck
0bf3a3573d
fix(01-20): render explicit assessment states
...
- prioritize safe fallback text over provider metadata
- keep terminal and pending card geometry stable
2026-07-29 14:40:55 +02:00
Marc-André Bombeck
33a7dafec4
fix(01-20): terminate assessment polling honestly
...
- normalize legacy responses into explicit assessment states
- abort on timeout or unmount and expose poll exhaustion
2026-07-29 14:39:38 +02:00
Marc-André Bombeck
b8260474ed
fix(01-17): remove duplicate mobile insights spacer
...
- suppress only the inherited mobile pre-pill top padding
- preserve safe-area clearance focus paint and 44px targets
2026-07-29 14:38:19 +02:00
Marc-André Bombeck
efe203212a
fix(01-20): classify safe assessment outcomes
...
- add a discriminated generated and fallback contract
- screen derived prose and expose retryable cache policy
2026-07-29 14:36:29 +02:00
Marc-André Bombeck
0ae9165aae
refactor(01-18): format occurrence identity changes
...
- apply repository formatting to reminder and scheduling updates
- preserve verified occurrence behavior without semantic changes
2026-07-29 14:36:21 +02:00
Marc-André Bombeck
23c738efac
fix(01-17): align and pin desktop sidebars
...
- place both sidebars on the heading row with one main scroll owner
- bound short-viewport sidebar content without horizontal layout drift
2026-07-29 14:36:18 +02:00
Marc-André Bombeck
840e47fda5
fix(01-18): preserve authoritative rolling due in consumers
...
- expose the canonical due schedule identity from the shared list read
- prevent passed local windows from rebinding a prior overdue occurrence
2026-07-29 14:35:23 +02:00
Marc-André Bombeck
2de9bccf9d
fix(01-18): retain rolling occurrence through due band
...
- preserve prior rolling identity independently of local-day flooring
- scope exact resolution by schedule and era while advancing resolved grids
- include open rolling slots for display without widening compliance bands
2026-07-29 14:33:17 +02:00
Marc-André Bombeck
c0af97ce46
fix(01-18): preserve reminder occurrence across midnight
...
- select active canonical recurrence slots instead of rebuilding from tick day
- scope intake suppression and dedup metadata to the occurrence local date
2026-07-29 14:30:23 +02:00
Marc-André Bombeck
7396119ec8
feat(01-17): group gated admin navigation
...
- cluster allowed destinations under semantic settings-style headings
- preserve fail-closed role gating and mobile target order
2026-07-29 14:29:51 +02:00
Marc-André Bombeck
431120d55e
fix(01-16): unify records action grammar
...
- use Save for new and existing lifestyle facts
- show first-entry or populated-list add actions without duplication
2026-07-29 14:29:19 +02:00
Marc-André Bombeck
c4ec2d552f
fix(01-16): normalize assessment prose presentation
...
- use the readable foreground at confirmed medication and Mood mounts
- tighten Health Score and medication assessment spacing
2026-07-29 14:28:47 +02:00
Marc-André Bombeck
d67b899138
fix(01-16): remove redundant score and summary presentation
...
- keep useful Today prose without repeating the ring score
- remove stored-summary regeneration and Health Score notice/method/list copy
2026-07-29 14:27:45 +02:00