Repository navigation
feat(health): export weekly training summaries as CSV and JSON - #50
Conversation
Add weekly export files with explicit units, missing-value handling and safely quoted activity counts. Verify the XML-to-weekly-export flow and document the package API. Co-authored-by: OpenAI Codex <noreply@openai.com>
|
Core test capture succeeded at commit |
|
Reverified PR #50 at Core test capture succeeded. No app UI changed and no capture path was blocked. The first CI attempt failed in the existing |
|
The coverage rerun passed on the unchanged commit |
Add CSV and JSON export for weekly training summaries, with explicit units, missing-value handling, sorted activity counts and atomic file writes. Add package API documentation and 11 tests, including XML parsing through weekly aggregation to exported output.
Completes the weekly export slice. Part of #6. Closes #49.
Reverified locally at
19d9db4on 13 November 2026 in a fresh worktree. The branch is already based on current main.mise run lintpassed with 0 serious violations. The 491 existing warnings are outside the new files.mise run buildpassed.mise run testpassed, including 162 XCTest tests, 30 Swift Testing tests and 23 video pipeline checks.mise run ios:build:ciandmise run ios:e2epassed.mise run ios:coverageinitially failed in the existing finish-workout UI test after two animation-idle timeouts. Its captured UI hierarchy still showed the confirmation dialog after the save tap. The same save flow passed in the next test. A single rerun on the unchanged commit passed all 27 UI tests, including both summary tests. No source changes were needed.Core test capture succeeded at commit
19d9db4. Captured proof transcript. The transcript includes all 11 new tests, including the XML parser-to-export flow, plus the full suite totals. No app UI changed and no capture path was blocked.The parser-to-export test verifies UTC week boundaries from dates with a +1000 offset, kJ-to-kcal and km-to-m conversions, heart-rate metrics, and missing values. File tests exercise replacement and error propagation. Floating point conversions retain their existing precision.
The successful CI coverage rerun confirms the existing finish-workout flow passes on the unchanged commit.
This is a package-only slice with no user-facing app changes. Core test capture supplies the behaviour proof, and the CI UI suite also passed. No simulator screenshot was needed. The parent epic stays open. App sharing and further ingestion work remain outside this slice.