release: prepare v0.1.5
This commit is contained in:
parent
f2fd610b4f
commit
f2747b357b
6 changed files with 99 additions and 46 deletions
|
|
@ -1,9 +1,9 @@
|
|||
# Changelog
|
||||
|
||||
## Unreleased — 0.1.5
|
||||
## 0.1.5 — 2026-09-23
|
||||
|
||||
- Completed the software-validated Sleep Tonight readiness delta without a
|
||||
device-rollout or stable-release claim. Pre-bed medication now creates or
|
||||
- Completed the Sleep Tonight readiness delta and its non-destructive private
|
||||
vc47 rollout. Pre-bed medication now creates or
|
||||
reuses one durable pending 18:00-to-18:00 Sleep entry; Couché appends bedtime
|
||||
to that same stable identity, while Réveil/Levé remain unavailable before
|
||||
bedtime. Pending quick facts are publishable through a distinct marker and
|
||||
|
|
|
|||
16
README.md
16
README.md
|
|
@ -24,7 +24,7 @@ it never copies SQLite database files between devices.
|
|||
|---|---|
|
||||
| Android | Capture and quickly correct sets, repetitions, loads, durations, and continuous activities; reorder active and completed-session occurrences; capture feedback, J+1 follow-ups, body measurements, and AI proposals; trigger sync; show quick summaries. |
|
||||
| Desktop TUI | Administer, inspect, maintain, import/export, correct canonical history, and provide technical tools. |
|
||||
| Local Web (0.1.5 development) | Display Dashboard, Programmes, Sessions, Exercises and factual Analyse workspaces. Analyse includes the Sleep Diary editor, 18:00-to-18:00 agenda and local vector PDF export. |
|
||||
| Local Web (0.1.5) | Display Dashboard, Programmes, Sessions, Exercises and factual Analyse workspaces. Analyse includes the Sleep Diary editor, multi-night 18:00-to-18:00 agenda, factual heart-rate timelines and local vector PDF export. |
|
||||
|
||||
No interface reconstructs business truth from SQLite tables. The local Web is
|
||||
a sibling adapter, not an extension of the TUI. On `main`, its loopback-only
|
||||
|
|
@ -35,8 +35,12 @@ The top-level `/programmes` route is an operational daily calendar for active
|
|||
Programs. Sessions → Programmes remains the technical administration/import,
|
||||
list, detail, archive, and delete surface.
|
||||
Web Exercises administration, the factual Dashboard/Analyse read model, and the
|
||||
synchronized Sleep Diary workspace are the stable v0.1.4 baseline. Version
|
||||
0.1.5 development now has validated persistent CYCPLUS acquisition, the global `♥ BPM` indicator, training exercise timestamps, one-tap Android Sleep capture, dedicated synchronized `cardio` sessions, versioned measured Cardio calibration, fresh-signal BPM-guided phases and factual Web heart-rate timelines in History/Sleep; software validation is complete; private-device visual review is the current implementation cursor.
|
||||
synchronized Sleep Diary workspace are the stable v0.1.4 baseline. Stable
|
||||
0.1.5 adds persistent CYCPLUS acquisition, the global `♥ BPM` indicator,
|
||||
training exercise timestamps, structured Android Sleep capture, dedicated
|
||||
synchronized `cardio` sessions, versioned measured Cardio calibration,
|
||||
fresh-signal BPM-guided phases and factual Web heart-rate timelines in
|
||||
History/Sleep.
|
||||
|
||||
## Releases
|
||||
|
||||
|
|
@ -53,8 +57,8 @@ Each published stable release provides:
|
|||
- SHA-256 checksums.
|
||||
|
||||
Both mirrors publish the same Trainlog product version and release assets. The
|
||||
latest stable version is **0.1.4** on Android and desktop; this is one shared
|
||||
Trainlog version, not separate interface versions. Version 0.1.3 is the
|
||||
latest stable version is **0.1.5** on Android and desktop; this is one shared
|
||||
Trainlog version, not separate interface versions. Version 0.1.4 is the
|
||||
previous stable release.
|
||||
|
||||
Trainlog presents French by default, with English selectable
|
||||
|
|
@ -158,7 +162,7 @@ updates; generating a replacement key is not a normal release procedure.
|
|||
|
||||
### Linux runtime dependencies
|
||||
|
||||
The published v0.1.4 x86-64 desktop runtime is dynamically linked. Its tagged
|
||||
The published v0.1.5 x86-64 desktop runtime is dynamically linked. Its tagged
|
||||
source directly requires compatible versions of:
|
||||
|
||||
- glibc and the GCC support runtime;
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ parallel implementation of its rules.
|
|||
| Android SQLite | schema v32; v32 additively gives every Sleep medication intake a structured `quantity` (1..99), defaults historical rows to 1, and records a distinct quick-publication tip |
|
||||
| Mobile snapshot | V3 active; V1/V2 readable legacy inputs; explicit V4 codec staged, not selected by transport |
|
||||
| Desktop terminal backend | Notcurses only |
|
||||
| Trainlog product version | `0.1.5` development, synchronized across Android and desktop; latest stable release: `v0.1.4` |
|
||||
| Trainlog product version | `0.1.5` stable, synchronized across Android and desktop; latest stable release: `v0.1.5` |
|
||||
| Interface language | `TRAINLOG_I18N_V0_1_1=PASS`: French default; English selectable in Settings → Language on both surfaces |
|
||||
| AI history export | `TRAINLOG_AI_EXPORT_V1` active |
|
||||
| AI session proposals | `TRAINLOG_AI_SESSION_DRAFT_V1=VALIDATION_PENDING` |
|
||||
|
|
@ -156,10 +156,10 @@ parallel implementation of its rules.
|
|||
| Cardio calibration | `TRAINLOG_CARDIO_CALIBRATION_V1=PASS`: reserved system Calibration cardio exercise, real measured observed peak, ≥3 min recovery with bounded +1/+2/+3 min factual samples, immutable profile and Android→desktop calibration companion |
|
||||
| Cardio BPM guidance | `TRAINLOG_CARDIO_BPM_GUIDANCE_V1=PASS`: absolute/calibration-derived immutable BPM targets, 2 BPM hysteresis, 3 s confirmation, stale-signal suspension, durable phase/condition history, Android live guidance UI and strict Android→desktop `trainlog-cardio-guidance` V1 sync |
|
||||
| Cardio Web visualization | `TRAINLOG_CARDIO_WEB_VISUALIZATION_V1=PASS`: one bounded factual heart-rate timeline read model/HTTP endpoint powers Web History and Sleep with raw BPM/RR, real session/exercise/Sleep markers, guided targets/instructions and calibration facts; no sleep-stage or medical inference |
|
||||
| Sleep tonight readiness delta | Software validated: Meson 111/111, import checks 6/6, Android `testDebugUnitTest` plus `assembleDebug`, and Web 191/191 plus typecheck/build. It adds no device rollout evidence and authorizes no stable release. |
|
||||
| 0.1.5 validation | `TRAINLOG_0_1_5_VALIDATION_V1=SOFTWARE_PASS / DEVICE_VISUAL_PASS`: native 111/111; Android 304 tests (299 pass + 5 historical skips) and debug APK build; Web 183/183 + typecheck/build baseline. Private vc46 preserves the live HR capture and samples across Training → Cardio, drives measured guidance, and renders Sommeil and Calibration cardio without mutation. No stable release is authorized by this status. |
|
||||
| Sleep tonight readiness delta | `TRAINLOG_SLEEP_TONIGHT_CLOSEOUT_V1=PASS`: Meson 111/111, import checks 6/6, Android `testDebugUnitTest` plus `assembleDebug`, Web 191/191 plus typecheck/build, exact V2 quantity replay, private vc47 schema-v32 migration, fresh CYCPLUS BPM and non-mutating Android/Web visual review. |
|
||||
| 0.1.5 validation | `TRAINLOG_0_1_5_VALIDATION_V1=PASS`: native 111/111; Android unit-test task and APK build; Web 191/191 plus typecheck/build; JSON/import, C-format and diff checks pass. Private vc47 preserves real data through schema v32, renders pre-bed medication quantity controls, reconnects the CYCPLUS and presents the multi-night Web Sleep agenda. |
|
||||
| Tomorrow session readiness | `TRAINLOG_TOMORROW_SESSION_CARDIO_READINESS_V1=PASS`: the private vc46 is clean on schema v31 with fresh CYCPLUS BPM and the next Program session is unambiguous; one combined regression proves two ordered occurrences loaded from the synchronized Program, Program provenance, factual timeline/HR ownership, finalization, full generation, desktop import, replay and correlated ACK |
|
||||
| Current operational cursor | Sleep Tonight Readiness V2 is software-validated; private-device rollout and visual review remain separate authorization, and no stable 0.1.5 tag or release is authorized. |
|
||||
| Current operational cursor | Stable v0.1.5 closes the cardio and Sleep Tonight cycle; subsequent development opens as 0.1.6 after the immutable release tag. |
|
||||
| Complete synchronization gap contract | Frozen dependency contract; operational USB/Drive slices required by v0.1.2 are delivered |
|
||||
| Isolated synchronization test environment | `TRAINLOG_SYNC_TEST_ENV_V1=PASS/FROZEN` |
|
||||
| Synchronization characterization | `TRAINLOG_SYNC_CHARACTERIZATION_V1=PASS/FROZEN` |
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ than later development. GitHub and Forgejo publication must preserve the
|
|||
existing release, tag, status, and assets while keeping their note bodies equal
|
||||
to the corresponding source file.
|
||||
|
||||
- [Trainlog v0.1.5](v0.1.5.md)
|
||||
- [Trainlog v0.1.4](v0.1.4.md)
|
||||
- [Trainlog v0.1.3](v0.1.3.md)
|
||||
- [Trainlog v0.1.2](v0.1.2.md)
|
||||
|
|
|
|||
59
docs/releases/v0.1.5.md
Normal file
59
docs/releases/v0.1.5.md
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
Trainlog v0.1.5 completes the factual cardio capture cycle and makes the
|
||||
Android-to-Web Sleep workflow ready for real nightly use without adding
|
||||
medical, sleep-stage, or causal inference.
|
||||
|
||||
## Heart-rate capture and cardio sessions
|
||||
|
||||
- Android persistently acquires real CYCPLUS Heart Rate Service measurements,
|
||||
retains factual observation timestamps, BPM and raw RR values, and exposes a
|
||||
global fresh/stale/disconnected indicator.
|
||||
- Training occurrences have explicit start/end timelines so synchronized
|
||||
heart-rate samples retain their stable exercise ownership instead of
|
||||
inferring it later from time overlap.
|
||||
- Dedicated `cardio` sessions, measured calibration profiles and fresh-signal
|
||||
BPM-guided phases use separate versioned companions and preserve the frozen
|
||||
historical session formats.
|
||||
- Guidance suspends on stale signal and records measured facts only; it does
|
||||
not estimate fitness, recovery, readiness or medical state.
|
||||
|
||||
## Factual Web timelines
|
||||
|
||||
- History and Sleep display synchronized heart-rate samples through one
|
||||
bounded native read model and responsive Web timeline.
|
||||
- Full-source min/mean/max and RR counts remain exact while large visual
|
||||
projections are bounded.
|
||||
- Cardio timelines show factual occurrence bounds, resolved targets,
|
||||
instruction changes and measured calibration points.
|
||||
- Sleep highlights notable relative rises and falls with a deterministic local
|
||||
median rule, explicitly without assigning a sleep stage or cause.
|
||||
|
||||
## Sleep capture and medication quantity
|
||||
|
||||
- Medication can be recorded before Couché. The first intake creates one
|
||||
durable pending 18:00-to-18:00 night; Couché advances the same stable entry,
|
||||
Réveil leaves heart-rate capture running, and Levé closes it at the factual
|
||||
final-get-up timestamp.
|
||||
- A missing sensor fabricates neither a capture nor a sample.
|
||||
- Sleep Diary V2 carries structured per-intake quantity while published V1
|
||||
remains strict and readable; historical intakes default to quantity one.
|
||||
- The Web agenda renders every night in the selected period on one aligned
|
||||
18:00-to-18:00 axis, and the selected night owns the full-width heart-rate
|
||||
detail. PDF reports retain their multi-night behavior and display quantity
|
||||
without replacing per-unit dose.
|
||||
|
||||
## Compatibility and validation
|
||||
|
||||
- Desktop schema v35 and Android schema v32 are additive migrations.
|
||||
- `TRAINLOG_FORMAT_V1`, mobile export V3, stable identities, causal revision
|
||||
lineage, generation/ACK semantics and Bluetooth/MTP transport ownership are
|
||||
unchanged.
|
||||
- Native tests, Android unit tests and APK assembly, Web tests/typecheck/build,
|
||||
JSON/import validation, changed-C formatting and exact Sleep V2 replay all
|
||||
pass at the release tag.
|
||||
|
||||
## Assets
|
||||
|
||||
- `trainlog-android-v0.1.5.apk`: signed public Android APK.
|
||||
- `trainlog-tui-linux-x86_64-v0.1.5`: Linux x86-64 runtime bundle containing
|
||||
the TUI, local Web adapter, synchronization helpers and required catalogs.
|
||||
- `SHA256SUMS`: SHA-256 checksums for both artifacts.
|
||||
|
|
@ -30,14 +30,14 @@ estimates.
|
|||
|
||||
## Current baseline
|
||||
|
||||
Stable v0.1.4 is the release baseline for the v0.1.5 development cycle.
|
||||
Desktop schema v29, Android schema v26, Notcurses, direct `Documents/Trainlog`
|
||||
Stable v0.1.5 is the release baseline for the next development cycle.
|
||||
Desktop schema v35, Android schema v32, Notcurses, direct `Documents/Trainlog`
|
||||
storage, mobile export V3, Training Knowledge V1, Body Zones V1, Training
|
||||
Feedback V1/V2, STATS V1, and Session Generator V1 are implemented. Session
|
||||
Generator V1 is hidden pending V2. AI session-draft exchange retains its
|
||||
explicit manual validation gate. APP_SHELL_V1 remains useful historical design
|
||||
evidence, but its September 2026 observations must be revalidated against the
|
||||
v0.1.4 baseline rather than treated as a current implementation plan.
|
||||
v0.1.5 baseline rather than treated as a current implementation plan.
|
||||
`TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED`; its local-only
|
||||
CLI/HTTP infrastructure, embedded frontend shell and the frozen Dashboard data
|
||||
contract, frozen interactive grid, versioned layout persistence and factual
|
||||
|
|
@ -46,8 +46,9 @@ visualizations and Sessions V1 are implemented. The top-level `/programmes`
|
|||
route is an operational daily active-Program calendar, while
|
||||
Sessions → Programmes remains the technical administration/import, list,
|
||||
detail, archive, and delete surface. Web Exercises V1, the factual
|
||||
Dashboard/Analyse read-model foundation, and Sleep Diary V1 are included in
|
||||
stable v0.1.4.
|
||||
Dashboard/Analyse read-model foundation, Sleep Diary V1/V2, synchronized
|
||||
factual heart-rate timelines, and the complete Cardio V1
|
||||
capture/calibration/guidance chain are included in stable v0.1.5.
|
||||
The corrective prepared-item projection, bounded phase-owned MTP outbox,
|
||||
Sessions presentation correction, local date preference and durable preparation
|
||||
withdrawal are implemented. The withdrawal uses the separate versioned
|
||||
|
|
@ -56,29 +57,19 @@ mobile snapshot or `TRAINLOG_FORMAT_V1` contracts.
|
|||
|
||||
## Current cursor
|
||||
|
||||
Stable v0.1.4 closes the Analyse/Sleep Diary cycle and freezes the Bluetooth
|
||||
Classic synchronization transport independently from future sensor work.
|
||||
|
||||
The 0.1.5 cycle owns cardio end to end. Android alone discovers and reads the
|
||||
heart-rate sensor, exposes the global ♥ BPM state, timestamps training
|
||||
session/exercise boundaries, provides one-tap Sleep capture, and records the
|
||||
new dedicated cardio session type. Cardio starts with a versioned Calibration
|
||||
exercise and later drives phase guidance from fresh BPM. Desktop/Web consume
|
||||
only synchronized recorded measurements and never connect directly to the
|
||||
sensor. Heart-rate ingestion must not reuse or overload the frozen Trainlog
|
||||
Bluetooth synchronization transport contract.
|
||||
Stable v0.1.5 closes Cardio V1 and the Sleep Tonight readiness cycle. Android
|
||||
alone discovers and reads the heart-rate sensor; desktop/Web consume only
|
||||
synchronized factual measurements and never connect directly to the sensor.
|
||||
The heart-rate path remains independent from the frozen Bluetooth Trainlog
|
||||
synchronization transport.
|
||||
|
||||
```text
|
||||
CURRENT_OPERATIONAL_CURSOR=Sleep Tonight Readiness V2 software validation complete; private-device rollout remains a separate decision.
|
||||
CURRENT_OPERATIONAL_CURSOR=Stable v0.1.5 published; open 0.1.6 development without reopening frozen 0.1.5 contracts.
|
||||
```
|
||||
|
||||
The current development cursor is the validated Sleep Tonight readiness delta:
|
||||
V1 stays frozen/readable while active capable peers require `sleep-diary-v2`.
|
||||
The remaining operational work, if authorized separately, is a non-destructive
|
||||
private-device rollout and visual review; it must not be represented as a
|
||||
stable release or a medical/readiness claim. The Web’s relative HR rise/fall
|
||||
overlays are descriptive measured-series presentation only, never inferred
|
||||
sleep states or causes.
|
||||
Sleep Diary V1 stays frozen/readable while active capable peers require
|
||||
`sleep-diary-v2`. The Web’s relative HR rise/fall overlays remain descriptive
|
||||
measured-series presentation only, never inferred sleep states or causes.
|
||||
|
||||
The vc45 real-device smoke found that selecting Cardio after live capture had
|
||||
already started on the default Training draft left the durable capture tagged
|
||||
|
|
@ -89,15 +80,13 @@ transition through an active exercise and guidance event. The vc46 re-smoke
|
|||
then passed with the same capture, preserved pre-transition samples, measured
|
||||
guidance, and non-mutating Sommeil/Calibration screen checks.
|
||||
|
||||
Tomorrow's next synchronized Program session is unambiguously
|
||||
`S1 D — Haut du corps machines` on 2026-09-24 with seven occurrences. The
|
||||
private phone remains on Android schema v31 with integrity/FK checks clean and
|
||||
no active draft, timeline, HR capture, guidance phase or calibration. A single
|
||||
combined regression now proves Program start and provenance through two
|
||||
ordered occurrences originating in the synchronized Program payload, four HR
|
||||
ownership positions, finalization, full generation, desktop import, idempotent
|
||||
replay and correlated ACK. This readiness result does not authorize a stable
|
||||
0.1.5 tag or release.
|
||||
The private phone advanced non-destructively to Android schema v32 on vc47 with
|
||||
integrity/FK checks clean and preserved business counts. The preceding
|
||||
tomorrow-session readiness regression proves Program start and provenance
|
||||
through two ordered occurrences originating in the synchronized Program
|
||||
payload, four HR ownership positions, finalization, full generation, desktop
|
||||
import, idempotent replay and correlated ACK. That readiness evidence is now
|
||||
part of the stable v0.1.5 validation record rather than the active cursor.
|
||||
|
||||
The focused `TRAINLOG_SYNC_CAUSAL_DELETE_V1_CLOSEOUT` is complete before this
|
||||
cursor: complete predecessor state, imported built-in authorization,
|
||||
|
|
|
|||
Loading…
Reference in a new issue