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
Marc-André Bombeck
690c4aeb5a
test(01-14): add failing truthful cohort contracts
...
- distinguish complete partial failed parked skipped and clean-zero outcomes
- require bounded privacy-safe scalar serialization and retry codes
2026-07-29 14:26:26 +02:00
Marc-André Bombeck
958b0e10d9
fix(01-11): keep reminder fixture type-safe
...
- mutate the inferred schedule fixture without widening nullable fields
- preserve the cross-midnight RED expectation unchanged
2026-07-29 14:24:00 +02:00
Marc-André Bombeck
25612294d1
test(01-11): pin rolling overdue consumer parity
...
- compare persisted weekly occurrence across list, dashboard, GLP-1, and take-all
- protect exact intake retries and unrelated occurrence isolation
2026-07-29 14:23:52 +02:00