release: prepare v0.1.6
This commit is contained in:
parent
bb20aa44ef
commit
9a8708c63b
7 changed files with 89 additions and 21 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## Unreleased — 0.1.6
|
## 0.1.6 — 2026-09-25
|
||||||
|
|
||||||
- Corrected delayed session finalization so a heart-rate capture cannot extend
|
- Corrected delayed session finalization so a heart-rate capture cannot extend
|
||||||
beyond the explicit factual session end. Android now transactionally removes
|
beyond the explicit factual session end. Android now transactionally removes
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,8 @@ exchanges, and user-controlled storage. Plans never become performed work until
|
||||||
they are actually recorded, continuous activities are not disguised as sets,
|
they are actually recorded, continuous activities are not disguised as sets,
|
||||||
and estimates are kept distinct from measurements.
|
and estimates are kept distinct from measurements.
|
||||||
|
|
||||||
> **Release line:** Trainlog `0.1.6` is in development. The latest stable
|
> **Release line:** The latest stable release is
|
||||||
> release is [`v0.1.5`](https://github.com/labfytools/trainlog/releases/tag/v0.1.5).
|
> [`v0.1.6`](https://github.com/labfytools/trainlog/releases/tag/v0.1.6).
|
||||||
|
|
||||||
## ✦ Showcase
|
## ✦ Showcase
|
||||||
|
|
||||||
|
|
@ -26,7 +26,7 @@ and estimates are kept distinct from measurements.
|
||||||
<img src="docs/reviews/evidence/sleep-diary-alignment-firefox.png" alt="Trainlog Web Analyse workspace showing the Sleep Diary agenda and factual heart-rate timeline" width="100%">
|
<img src="docs/reviews/evidence/sleep-diary-alignment-firefox.png" alt="Trainlog Web Analyse workspace showing the Sleep Diary agenda and factual heart-rate timeline" width="100%">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center"><sub>Web Analyse in the 0.1.6 development line — synchronized Sleep facts and measured heart-rate data on one timeline.</sub></p>
|
<p align="center"><sub>Web Analyse in Trainlog 0.1.6 — synchronized Sleep facts and measured heart-rate data on one timeline.</sub></p>
|
||||||
|
|
||||||
The repository currently tracks real-browser evidence for the Web interface.
|
The repository currently tracks real-browser evidence for the Web interface.
|
||||||
Its Android overview asset is a clearly labelled static design study with
|
Its Android overview asset is a clearly labelled static design study with
|
||||||
|
|
@ -231,7 +231,7 @@ chronological detail in the [`CHANGELOG`](CHANGELOG.md).
|
||||||
|
|
||||||
| Boundary | Current state |
|
| Boundary | Current state |
|
||||||
| ------------------- | --------------------------------------------------------------------------------------------------------- |
|
| ------------------- | --------------------------------------------------------------------------------------------------------- |
|
||||||
| Product | `0.1.6` development; latest stable release `v0.1.5` |
|
| Product | `0.1.6` stable |
|
||||||
| Desktop persistence | SQLite schema v36 |
|
| Desktop persistence | SQLite schema v36 |
|
||||||
| Android persistence | SQLite schema v33 |
|
| Android persistence | SQLite schema v33 |
|
||||||
| Mobile exchange | V3 active; V1/V2 readable; V4 staged only |
|
| Mobile exchange | V3 active; V1/V2 readable; V4 staged only |
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ ANDROID_BODY_SHELL=IMPLEMENTED
|
||||||
LOCAL_PERSISTENCE=IMPLEMENTED
|
LOCAL_PERSISTENCE=IMPLEMENTED
|
||||||
DIRECT_STORAGE=IMPLEMENTED
|
DIRECT_STORAGE=IMPLEMENTED
|
||||||
MTP_SYNC=IMPLEMENTED
|
MTP_SYNC=IMPLEMENTED
|
||||||
ANDROID_SCHEMA=17
|
ANDROID_SCHEMA=33
|
||||||
```
|
```
|
||||||
|
|
||||||
## Visual contract
|
## Visual contract
|
||||||
|
|
|
||||||
|
|
@ -81,8 +81,8 @@ is idempotent and no transport carries SQLite. The Bluetooth transport does not
|
||||||
yet ingest heart-rate sensor data.
|
yet ingest heart-rate sensor data.
|
||||||
|
|
||||||
The public Android release chain advances from v0.1.1 versionCode 2 through
|
The public Android release chain advances from v0.1.1 versionCode 2 through
|
||||||
v0.1.2 versionCode 3 and v0.1.3 versionCode 4 to v0.1.4 versionCode 5 under
|
v0.1.2 versionCode 3, v0.1.3 versionCode 4, v0.1.4 versionCode 5 and v0.1.5
|
||||||
certificate SHA-256
|
versionCode 6 to v0.1.6 versionCode 7 under certificate SHA-256
|
||||||
`5ef41117da107c9805ae3215c5ec823cff06216610e6e4f7542a754161c71bd2`.
|
`5ef41117da107c9805ae3215c5ec823cff06216610e6e4f7542a754161c71bd2`.
|
||||||
Higher-numbered private validation builds used a separate Android Debug
|
Higher-numbered private validation builds used a separate Android Debug
|
||||||
certificate and are not members of the public update-signature chain.
|
certificate and are not members of the public update-signature chain.
|
||||||
|
|
@ -97,7 +97,7 @@ The rollout packager now keeps the legacy request daemon and one-shot helper in
|
||||||
the same relocatable, hashed bundle as the Web generation coordinator, avoiding
|
the same relocatable, hashed bundle as the Web generation coordinator, avoiding
|
||||||
mixed-checkout user-service execution during the controlled rollout.
|
mixed-checkout user-service execution during the controlled rollout.
|
||||||
|
|
||||||
Snapshot date: **2026-09-24**.
|
Snapshot date: **2026-09-25**.
|
||||||
|
|
||||||
`TRAINLOG_CODE_READABILITY_V1` normalizes the recent generation-MTP,
|
`TRAINLOG_CODE_READABILITY_V1` normalizes the recent generation-MTP,
|
||||||
generation/ACK, Android-backup, Web Dashboard serialization, tests, doubles and
|
generation/ACK, Android-backup, Web Dashboard serialization, tests, doubles and
|
||||||
|
|
@ -132,7 +132,7 @@ parallel implementation of its rules.
|
||||||
| Android SQLite | schema v33; v33 makes Sleep revision payload tables append-only; v32 gives every Sleep medication intake a structured `quantity` (1..99), defaults historical rows to 1, and records a distinct quick-publication tip |
|
| Android SQLite | schema v33; v33 makes Sleep revision payload tables append-only; v32 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 |
|
| Mobile snapshot | V3 active; V1/V2 readable legacy inputs; explicit V4 codec staged, not selected by transport |
|
||||||
| Desktop terminal backend | Notcurses only |
|
| Desktop terminal backend | Notcurses only |
|
||||||
| Trainlog product version | `0.1.6` development, synchronized across Android and desktop; latest stable release: `v0.1.5` |
|
| Trainlog product version | `0.1.6` stable, synchronized across Android and desktop; latest stable release: `v0.1.6` |
|
||||||
| Interface language | `TRAINLOG_I18N_V0_1_1=PASS`: French default; English selectable in Settings → Language on both surfaces |
|
| 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 history export | `TRAINLOG_AI_EXPORT_V1` active |
|
||||||
| AI session proposals | `TRAINLOG_AI_SESSION_DRAFT_V1=VALIDATION_PENDING` |
|
| AI session proposals | `TRAINLOG_AI_SESSION_DRAFT_V1=VALIDATION_PENDING` |
|
||||||
|
|
@ -176,7 +176,8 @@ parallel implementation of its rules.
|
||||||
| 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. |
|
| 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. |
|
| 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 |
|
| 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 | 0.1.6 Sleep graph overlays, shared agenda estimate and denser responsive agenda axis validated and privately served from Web code commit `a60e1aa`; immutable stable v0.1.5 remains unchanged. |
|
| 0.1.6 validation | `TRAINLOG_0_1_6_VALIDATION_V1=PASS`: native Meson 114/114 and Clang ASan/UBSan 114/114; Android 317 tests (312 passed, five documented optional skips), debug APK and signed release APK; Web 32 files / 209 tests plus typecheck/build; JSON/import, changed-C formatting and diff checks pass. |
|
||||||
|
| Current operational cursor | Stable v0.1.6 closes the Web refinement, Sleep timeline, synchronization recovery and factual session-finalization cycle; subsequent stabilization opens as 0.1.7 after the immutable release tag. |
|
||||||
| Sleep awake/selection/PDF refinement | `TRAINLOG_SLEEP_AWAKE_SELECTION_PDF_V1=PASS`: one temporal projection drives agenda and selected HR detail; a separate inclusive night-start date range drives preview/export from the loaded period. The agenda axis and rows share 24 exact hour columns; estimated sleep duration is consistent and remains non-persistent. |
|
| Sleep awake/selection/PDF refinement | `TRAINLOG_SLEEP_AWAKE_SELECTION_PDF_V1=PASS`: one temporal projection drives agenda and selected HR detail; a separate inclusive night-start date range drives preview/export from the loaded period. The agenda axis and rows share 24 exact hour columns; estimated sleep duration is consistent and remains non-persistent. |
|
||||||
| Sleep Réveil interval policy | Android Réveil creates a revisioned 30-minute `long_awake` window; repeated taps extend it and Levé clamps it. The real 2026-09-23 night is causally repaired on Android/desktop and renders two orange intervals in agenda, HR and PDF; Android 307 passed plus five optional skips, and Web 208/208 passed. |
|
| Sleep Réveil interval policy | Android Réveil creates a revisioned 30-minute `long_awake` window; repeated taps extend it and Levé clamps it. The real 2026-09-23 night is causally repaired on Android/desktop and renders two orange intervals in agenda, HR and PDF; Android 307 passed plus five optional skips, and Web 208/208 passed. |
|
||||||
| Sleep revision collision recovery | `TRAINLOG_SLEEP_REVISION_COLLISION_RECOVERY_V1=PASS`: one unpublished divergent desktop tip was re-identified without payload loss, the immutable Android identity was restored exactly, and a fresh successor retained the non-conflicting union. The original generation was consumed with a full SQLite ACK; the real 24/09 session, Sleep facts, cardio samples, timeline, feedback, and Program provenance are visible on Desktop/Web. Schema v36/v33 and importer payload checks prevent recurrence. |
|
| Sleep revision collision recovery | `TRAINLOG_SLEEP_REVISION_COLLISION_RECOVERY_V1=PASS`: one unpublished divergent desktop tip was re-identified without payload loss, the immutable Android identity was restored exactly, and a fresh successor retained the non-conflicting union. The original generation was consumed with a full SQLite ACK; the real 24/09 session, Sleep facts, cardio samples, timeline, feedback, and Program provenance are visible on Desktop/Web. Schema v36/v33 and importer payload checks prevent recurrence. |
|
||||||
|
|
@ -512,8 +513,7 @@ The full Android lint comparison against an isolated clean `main` worktree is
|
||||||
unchanged at ten pre-existing errors: one `NewApi`, one
|
unchanged at ten pre-existing errors: one `NewApi`, one
|
||||||
`LocalContextConfigurationRead`, and eight bilingual `StringFormatMatches`
|
`LocalContextConfigurationRead`, and eight bilingual `StringFormatMatches`
|
||||||
diagnostics. This UI tranche adds no lint error and changes no lint policy.
|
diagnostics. This UI tranche adds no lint error and changes no lint policy.
|
||||||
The stable Android v0.1.5 tag uses `versionName=0.1.5` and public versionCode 6.
|
The stable Android v0.1.6 tag uses `versionName=0.1.6` and public versionCode 7.
|
||||||
The v0.1.6 development source starts at `versionName=0.1.6` and versionCode 7.
|
|
||||||
Private validation builds may still supply only a strictly increasing
|
Private validation builds may still supply only a strictly increasing
|
||||||
`versionCode` as a build-time override; that does not create a public release
|
`versionCode` as a build-time override; that does not create a public release
|
||||||
or change schemas and protocols.
|
or change schemas and protocols.
|
||||||
|
|
|
||||||
|
|
@ -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
|
existing release, tag, status, and assets while keeping their note bodies equal
|
||||||
to the corresponding source file.
|
to the corresponding source file.
|
||||||
|
|
||||||
|
- [Trainlog v0.1.6](v0.1.6.md)
|
||||||
- [Trainlog v0.1.5](v0.1.5.md)
|
- [Trainlog v0.1.5](v0.1.5.md)
|
||||||
- [Trainlog v0.1.4](v0.1.4.md)
|
- [Trainlog v0.1.4](v0.1.4.md)
|
||||||
- [Trainlog v0.1.3](v0.1.3.md)
|
- [Trainlog v0.1.3](v0.1.3.md)
|
||||||
|
|
|
||||||
64
docs/releases/v0.1.6.md
Normal file
64
docs/releases/v0.1.6.md
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
Trainlog v0.1.6 closes the Web refinement and synchronization-recovery cycle.
|
||||||
|
It improves factual Sleep and training presentation, preserves immutable
|
||||||
|
history through difficult replay and recovery cases, and gives the repository
|
||||||
|
a durable Catppuccin-based project entry point without widening frozen product
|
||||||
|
contracts.
|
||||||
|
|
||||||
|
## Local Web refinement
|
||||||
|
|
||||||
|
- Dashboard activity uses calendar months and ISO weeks, progression is a
|
||||||
|
factual global synthesis, and Analyse drills from BODY ZONES to exercises and
|
||||||
|
measured detail without inventing missing exercise time.
|
||||||
|
- A persistent French/English preference, Settings route, denser shared
|
||||||
|
surfaces, responsive charts, and a shared BODY ZONES figure refine the local
|
||||||
|
interface while presentation state remains outside business SQLite.
|
||||||
|
- Equipment administration can transactionally merge a custom duplicate into
|
||||||
|
a canonical identity while preserving history, MAX context, preparations,
|
||||||
|
Programs, and causal deletion evidence.
|
||||||
|
|
||||||
|
## Sleep facts and heart-rate timelines
|
||||||
|
|
||||||
|
- The multi-night agenda, selected-night heart-rate detail, and vector PDF use
|
||||||
|
one temporal projection of factual sleep intervals, awakenings, point events,
|
||||||
|
medication occurrences, and exact bounds.
|
||||||
|
- The shared 18:00-to-18:00 agenda keeps exact hourly geometry at desktop and
|
||||||
|
narrow widths. A clearly labelled fallback estimate is presentation-only,
|
||||||
|
non-medical, and never written to Sleep data.
|
||||||
|
- Android wake capture records revisioned long-awake intervals, medication
|
||||||
|
quantity survives persistence and synchronization, and Sleep revision
|
||||||
|
payloads are append-only on both platforms.
|
||||||
|
|
||||||
|
## Synchronization and recovery
|
||||||
|
|
||||||
|
- Bluetooth restart recovery retains immutable generation identity and accepts
|
||||||
|
the exact original generation/digest acknowledgement across conversation
|
||||||
|
runs; direct MTP remains the wired recovery transport.
|
||||||
|
- Android foreground and automatic synchronization share one ownership arbiter,
|
||||||
|
and direct-MTP publication waits for MediaProvider visibility before exposing
|
||||||
|
a mutable generation reference.
|
||||||
|
- Divergent Sleep revision identities can be recovered without choosing an
|
||||||
|
arbitrary winner. Strict payload checks reject reuse of a historical revision
|
||||||
|
identity with different parentage or content.
|
||||||
|
- A separate heart-rate correction companion removes samples strictly after a
|
||||||
|
factual session end and prevents an older immutable generation from
|
||||||
|
resurrecting the removed tail.
|
||||||
|
|
||||||
|
## Compatibility and validation
|
||||||
|
|
||||||
|
- Desktop schema v36 and Android schema v33 are additive migrations.
|
||||||
|
- `TRAINLOG_FORMAT_V1`, mobile export V3, stable identities, generation/ACK
|
||||||
|
semantics, and Bluetooth/MTP transport ownership remain unchanged.
|
||||||
|
- The default automatic exchange remains V3; full-generation synchronization
|
||||||
|
remains behind its trusted local opt-in.
|
||||||
|
- Native Meson and Clang ASan/UBSan suites each pass 114/114. Android passes
|
||||||
|
317 tests (312 passed and five documented optional skips), debug assembly,
|
||||||
|
signed release assembly, and signature verification. Web passes 32 files / 209
|
||||||
|
tests plus typecheck/build; JSON/import validation, changed-C formatting, and
|
||||||
|
diff checks also pass at the release tag.
|
||||||
|
|
||||||
|
## Assets
|
||||||
|
|
||||||
|
- `trainlog-android-v0.1.6.apk`: signed public Android APK.
|
||||||
|
- `trainlog-tui-linux-x86_64-v0.1.6`: 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
|
## Current baseline
|
||||||
|
|
||||||
Stable v0.1.5 is the release baseline for the v0.1.6 development cycle.
|
Stable v0.1.6 is the release baseline for the next stabilization cycle.
|
||||||
Desktop schema v36, Android schema v33, Notcurses, direct `Documents/Trainlog`
|
Desktop schema v36, Android schema v33, Notcurses, direct `Documents/Trainlog`
|
||||||
storage, mobile export V3, Training Knowledge V1, Body Zones V1, Training
|
storage, mobile export V3, Training Knowledge V1, Body Zones V1, Training
|
||||||
Feedback V1/V2, STATS V1, and Session Generator V1 are implemented. Session
|
Feedback V1/V2, STATS V1, and Session Generator V1 are implemented. Session
|
||||||
Generator V1 is hidden pending V2. AI session-draft exchange retains its
|
Generator V1 is hidden pending V2. AI session-draft exchange retains its
|
||||||
explicit manual validation gate. APP_SHELL_V1 remains useful historical design
|
explicit manual validation gate. APP_SHELL_V1 remains useful historical design
|
||||||
evidence, but its September 2026 observations must be revalidated against the
|
evidence, but its September 2026 observations must be revalidated against the
|
||||||
v0.1.5 baseline rather than treated as a current implementation plan.
|
v0.1.6 baseline rather than treated as a current implementation plan.
|
||||||
`TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED`; its local-only
|
`TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED`; its local-only
|
||||||
CLI/HTTP infrastructure, embedded frontend shell and the frozen Dashboard data
|
CLI/HTTP infrastructure, embedded frontend shell and the frozen Dashboard data
|
||||||
contract, frozen interactive grid, versioned layout persistence and factual
|
contract, frozen interactive grid, versioned layout persistence and factual
|
||||||
|
|
@ -48,7 +48,8 @@ Sessions → Programmes remains the technical administration/import, list,
|
||||||
detail, archive, and delete surface. Web Exercises V1, the factual
|
detail, archive, and delete surface. Web Exercises V1, the factual
|
||||||
Dashboard/Analyse read-model foundation, Sleep Diary V1/V2, synchronized
|
Dashboard/Analyse read-model foundation, Sleep Diary V1/V2, synchronized
|
||||||
factual heart-rate timelines, and the complete Cardio V1
|
factual heart-rate timelines, and the complete Cardio V1
|
||||||
capture/calibration/guidance chain are included in stable v0.1.5.
|
capture/calibration/guidance chain and the 0.1.6 refinement/recovery work are
|
||||||
|
included in stable v0.1.6.
|
||||||
The corrective prepared-item projection, bounded phase-owned MTP outbox,
|
The corrective prepared-item projection, bounded phase-owned MTP outbox,
|
||||||
Sessions presentation correction, local date preference and durable preparation
|
Sessions presentation correction, local date preference and durable preparation
|
||||||
withdrawal are implemented. The withdrawal uses the separate versioned
|
withdrawal are implemented. The withdrawal uses the separate versioned
|
||||||
|
|
@ -57,23 +58,25 @@ mobile snapshot or `TRAINLOG_FORMAT_V1` contracts.
|
||||||
|
|
||||||
## Current cursor
|
## Current cursor
|
||||||
|
|
||||||
Stable v0.1.5 closes Cardio V1 and the Sleep Tonight readiness cycle. Android
|
Stable v0.1.6 closes the Web refinement, Sleep timeline, synchronization
|
||||||
|
recovery, and factual session-finalization cycle. Android
|
||||||
alone discovers and reads the heart-rate sensor; desktop/Web consume only
|
alone discovers and reads the heart-rate sensor; desktop/Web consume only
|
||||||
synchronized factual measurements and never connect directly to the sensor.
|
synchronized factual measurements and never connect directly to the sensor.
|
||||||
The heart-rate path remains independent from the frozen Bluetooth Trainlog
|
The heart-rate path remains independent from the frozen Bluetooth Trainlog
|
||||||
synchronization transport.
|
synchronization transport.
|
||||||
|
|
||||||
The 0.1.6 Web refinement now also projects factual Sleep intervals, every
|
The stable 0.1.6 Web refinement projects factual Sleep intervals, every
|
||||||
structured awakening, point events, medication intakes, bounds, and duration
|
structured awakening, point events, medication intakes, bounds, and duration
|
||||||
through the agenda, selected-night HR detail, and selected-night PDF. Its
|
through the agenda, selected-night HR detail, and selected-night PDF. Its
|
||||||
explicitly labeled fallback estimate is presentation-only, subtracts overlapping
|
explicitly labeled fallback estimate is presentation-only, subtracts overlapping
|
||||||
structured awakenings for displayed duration, and is shared by all three views;
|
structured awakenings for displayed duration, and is shared by all three views;
|
||||||
the agenda retains an exact hourly 18:00-to-18:00 geometry. Android lifecycle/ACK regressions now explicitly guard
|
the agenda retains an exact hourly 18:00-to-18:00 geometry. Android lifecycle/ACK regressions now explicitly guard
|
||||||
pre-bed medication snapshots against restart, replay and stale ancestry.
|
pre-bed medication snapshots against restart, replay and stale ancestry. The
|
||||||
Release work remains the next separate operational step.
|
release closes this implementation cycle without reopening its frozen
|
||||||
|
contracts.
|
||||||
|
|
||||||
```text
|
```text
|
||||||
CURRENT_OPERATIONAL_CURSOR=0.1.6 Sleep agenda/HR/PDF projection, active-night selection and Android medication persistence proof validated and privately deployed; stable release work remains separate.
|
CURRENT_OPERATIONAL_CURSOR=Stable v0.1.6 published; open 0.1.7 stabilization after the immutable release tag.
|
||||||
```
|
```
|
||||||
|
|
||||||
Sleep Diary V1 stays frozen/readable while active capable peers require
|
Sleep Diary V1 stays frozen/readable while active capable peers require
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue