From 5701e2a541b6503dd52057582523dc337c679209 Mon Sep 17 00:00:00 2001 From: fy59 Date: Sun, 20 Sep 2026 08:26:43 +0200 Subject: [PATCH] chore: start 0.1.3 development --- CHANGELOG.md | 4 ++++ README.md | 8 ++++---- android/app/build.gradle.kts | 4 ++-- docs/current_state.md | 2 +- docs/roadmap.md | 15 ++++++++------- meson.build | 2 +- tests/test_sync_deployment_tools.py | 4 ++-- tools/package_sync_candidate.py | 2 +- tui/tests/test_web_server.c | 2 +- 9 files changed, 24 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b5503b..e17b9d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased — 0.1.3 + +Development opened after the stable v0.1.2 release. + ## 0.1.2 — 2026-09-20 - Added USB-priority full-generation synchronization with a separately diff --git a/README.md b/README.md index 40f5ee9..235dcc0 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ over direct MTP; 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.2) | Display the Dashboard, the operational top-level Programmes daily active-program calendar, and the implemented Sessions inventory, deletion, manual preparation, Android-delivery, and Programs administration workflow through typed Trainlog Core/API boundaries. Programs has responsive detail, terminal logical deletion, and a privately deployed read-only Android projection. Analyse and Exercises remain placeholders. | +| Local Web (0.1.3 development) | Display the Dashboard, the operational top-level Programmes daily active-program calendar, and the implemented Sessions inventory, deletion, manual preparation, Android-delivery, and Programs administration workflow through typed Trainlog Core/API boundaries. Programs has responsive detail, terminal logical deletion, and a privately deployed read-only Android projection. Analyse and Exercises remain placeholders. | 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 @@ -50,9 +50,9 @@ 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.2** on Android and desktop; this is one shared -Trainlog version, not separate interface versions. Version 0.1.1 is the -previous stable release. +current development version is **0.1.3** on Android and desktop; this is one +shared Trainlog version, not separate interface versions. Version 0.1.2 is the +latest stable release. Trainlog presents French by default, with English selectable from **Settings → Language** on Android and the desktop TUI. The selection is diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index ff06af9..2f00680 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -43,7 +43,7 @@ val trainlogVersionCode = providers.environmentVariable("TRAINLOG_ANDROID_VERSION_CODE").orNull?.let { raw -> raw.toIntOrNull()?.takeIf { it in 1..Int.MAX_VALUE } ?: throw GradleException("TRAINLOG_ANDROID_VERSION_CODE must be a positive integer") - } ?: 3 + } ?: 4 android { namespace = "com.labfytools.trainlog" @@ -55,7 +55,7 @@ android { targetSdk = 36 versionCode = trainlogVersionCode - versionName = "0.1.2" + versionName = "0.1.3" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } diff --git a/docs/current_state.md b/docs/current_state.md index 1b1a99b..56aab39 100644 --- a/docs/current_state.md +++ b/docs/current_state.md @@ -76,7 +76,7 @@ parallel implementation of its rules. | Android SQLite | schema v25 | | 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.2`, synchronized across Android and desktop; latest stable release: `v0.1.2` (`v0.1.1` is the previous stable release) | +| Trainlog product version | `0.1.3` development, synchronized across Android and desktop; latest stable release: `v0.1.2` | | 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` | diff --git a/docs/roadmap.md b/docs/roadmap.md index 4d391b0..6b1bc5d 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -28,10 +28,11 @@ distinction between measured values and estimates. ## Current baseline -Stable v0.1.2 is the release baseline. Desktop schema v28, Android schema v25, 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 +Stable v0.1.2 is the release baseline for the v0.1.3 development cycle. +Desktop schema v28, Android schema v25, 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 and APP_SHELL_V1 retain their explicit manual validation/review gates. `TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED`; its local-only CLI/HTTP infrastructure, embedded frontend shell and the frozen Dashboard data @@ -50,9 +51,9 @@ mobile snapshot or `TRAINLOG_FORMAT_V1` contracts. ## Current cursor -The stable v0.1.2 baseline is closed; future work proceeds from its validated -Web, Program execution, USB/Drive generation, ACK, and causal-deletion -contracts without reopening those completed gates. +The v0.1.3 development cursor proceeds from the closed stable v0.1.2 baseline +and its validated Web, Program execution, USB/Drive generation, ACK, and +causal-deletion contracts without reopening those completed gates. ```text CURRENT_OPERATIONAL_CURSOR=TRAINLOG_WEB_V1_NEXT_CONTRACT diff --git a/meson.build b/meson.build index da748ba..bd0298f 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'trainlog', 'c', - version: '0.1.2', + version: '0.1.3', meson_version: '>=1.3.0', default_options: [ 'c_std=c17', diff --git a/tests/test_sync_deployment_tools.py b/tests/test_sync_deployment_tools.py index b8a8fd4..adf277d 100644 --- a/tests/test_sync_deployment_tools.py +++ b/tests/test_sync_deployment_tools.py @@ -65,7 +65,7 @@ class DeploymentToolsTest(unittest.TestCase): ) self.assertEqual(result.returncode, 0, result.stderr) inventory = json.loads((output / "candidate-inventory.json").read_text()) - self.assertEqual(inventory["product_version"], "0.1.2") + self.assertEqual(inventory["product_version"], "0.1.3") self.assertEqual(inventory["desktop_schema"], 28) self.assertEqual(inventory["android_schema"], 25) self.assertIn("session-preparations-v2", inventory["protocols"]) @@ -84,7 +84,7 @@ class DeploymentToolsTest(unittest.TestCase): text=True, ) self.assertEqual(linked.returncode, 0, linked.stderr) - self.assertIn("trainlog 0.1.2", linked.stdout) + self.assertIn("trainlog 0.1.3", linked.stdout) imported = subprocess.run( [ "python3", diff --git a/tools/package_sync_candidate.py b/tools/package_sync_candidate.py index a5ca840..ef5fa90 100644 --- a/tools/package_sync_candidate.py +++ b/tools/package_sync_candidate.py @@ -103,7 +103,7 @@ def main() -> int: "source_commit": subprocess.check_output( ["git", "rev-parse", "HEAD"], cwd=ROOT, text=True ).strip(), - "product_version": "0.1.2", + "product_version": "0.1.3", "desktop_schema": 28, "android_schema": 25, "protocols": [ diff --git a/tui/tests/test_web_server.c b/tui/tests/test_web_server.c index 242a789..055407a 100644 --- a/tui/tests/test_web_server.c +++ b/tui/tests/test_web_server.c @@ -308,7 +308,7 @@ static bool test_http_contract(TrainlogDatabase *database) { CHECK(strstr(response, "Access-Control-Allow-Origin") == NULL); CHECK(strstr(response, "{\"api_version\":1,\"status\":\"ok\",\"product\":\"trainlog\"," - "\"version\":\"0.1.2\"}") != NULL); + "\"version\":\"0.1.3\"}") != NULL); { char token[80]; CHECK(exchange(port,