chore: start 0.1.3 development
This commit is contained in:
parent
fdf4301502
commit
5701e2a541
9 changed files with 24 additions and 19 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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` |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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": [
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue