From 20fc427c2f49ea208127811e6dddf71b3767d18f Mon Sep 17 00:00:00 2001 From: fy59 Date: Fri, 18 Sep 2026 19:17:34 +0200 Subject: [PATCH] feat(programs): add deletion and Android projection --- CHANGELOG.md | 16 + README.md | 8 +- .../trainlog/data/AndroidBackupService.kt | 4 +- .../SyncGenerationForegroundCoordinator.kt | 1 + .../trainlog/data/SyncGenerationService.kt | 8 +- .../trainlog/data/TrainlogRepository.kt | 358 +++++++++++++++++- .../trainlog/model/ProgramModels.kt | 44 +++ .../labfytools/trainlog/ui/AndroidAppShell.kt | 1 + .../labfytools/trainlog/ui/AppNavigation.kt | 2 + .../labfytools/trainlog/ui/ProgramScreens.kt | 79 ++++ .../labfytools/trainlog/ui/SectionScreens.kt | 3 + .../com/labfytools/trainlog/ui/TrainlogApp.kt | 5 +- .../app/src/main/res/values-en/strings.xml | 14 + android/app/src/main/res/values/strings.xml | 14 + .../data/AndroidV10PlanningMigrationTest.kt | 2 +- .../AndroidV11ExerciseAliasMigrationTest.kt | 2 +- .../AndroidV16AiSessionDraftMigrationTest.kt | 2 +- .../labfytools/trainlog/data/BodyZonesTest.kt | 2 +- .../data/BridgeBackupMigrationTest.kt | 2 +- .../data/ProgramsProjectionRepositoryTest.kt | 127 +++++++ .../data/SessionPreparationExchangeTest.kt | 2 +- .../data/SyncGenerationServiceTest.kt | 2 +- .../data/TrainlogRepositoryDraftTest.kt | 4 +- docs/README.md | 5 +- docs/android.md | 17 +- docs/architecture.md | 12 +- docs/current_state.md | 31 +- docs/database.md | 20 +- docs/program_format_v1.md | 10 +- .../evidence/web-programs-v1-card-desktop.png | Bin 0 -> 115463 bytes ...ograms-v1-delete-dialog-mobile-390x844.png | Bin 0 -> 69728 bytes ...presentation_android_delete_v1_evidence.md | 52 +++ docs/roadmap.md | 6 +- docs/sync_exchange.md | 18 +- docs/tests.md | 18 +- docs/web_sessions.md | 18 +- tests/test_programs_exchange.py | 84 ++++ tests/test_sync_deployment_tools.py | 16 + tests/test_web_sessions_browser.py | 246 ++++++++++++ tools/causal_delete_exchange.py | 2 +- tools/execution_draft_exchange.py | 2 +- tools/export_ai_history.py | 4 +- tools/export_ai_session_drafts.py | 2 +- tools/export_equipment_associations.py | 2 +- tools/export_equipment_definitions.py | 2 +- tools/export_exercise_aliases.py | 2 +- tools/export_exercise_body_zones.py | 2 +- tools/export_exercise_profile_state.py | 2 +- tools/export_pc_catalog.py | 2 +- tools/export_pc_mobile.py | 4 +- tools/export_programs.py | 107 ++++++ tools/export_session_preparations.py | 4 +- tools/export_training_feedback.py | 2 +- tools/import_ai_session_draft.py | 2 +- tools/import_equipment_associations.py | 2 +- tools/import_equipment_definitions.py | 2 +- tools/import_exercise_aliases.py | 2 +- tools/import_exercise_body_zones.py | 2 +- tools/import_exercise_profile_state.py | 2 +- tools/import_mobile_export.py | 4 +- tools/import_training_feedback.py | 2 +- tools/package_sync_candidate.py | 6 +- tools/sync_generation_exchange.py | 23 +- tui/include/trainlog/database.h | 2 +- tui/include/trainlog/web_programs.h | 10 + tui/src/database.c | 24 +- tui/src/web_programs.c | 250 +++++++++++- tui/src/web_server.c | 49 +++ tui/src/web_sessions.c | 3 +- tui/tests/test_schema_v21_migration.c | 8 +- tui/tests/test_schema_v7_migration.c | 8 +- tui/tests/test_schema_v9_migration.c | 2 +- tui/tests/test_web_programs.c | 67 ++++ web/src/api/programs.ts | 34 +- web/src/routes/ProgramsTab.test.tsx | 56 +++ web/src/routes/ProgramsTab.tsx | 90 ++++- web/src/theme/app.css | 7 +- 77 files changed, 1935 insertions(+), 116 deletions(-) create mode 100644 android/app/src/main/java/com/labfytools/trainlog/model/ProgramModels.kt create mode 100644 android/app/src/main/java/com/labfytools/trainlog/ui/ProgramScreens.kt create mode 100644 android/app/src/test/java/com/labfytools/trainlog/data/ProgramsProjectionRepositoryTest.kt create mode 100644 docs/reviews/evidence/web-programs-v1-card-desktop.png create mode 100644 docs/reviews/evidence/web-programs-v1-delete-dialog-mobile-390x844.png create mode 100644 docs/reviews/programs_presentation_android_delete_v1_evidence.md create mode 100644 tests/test_programs_exchange.py create mode 100644 tools/export_programs.py diff --git a/CHANGELOG.md b/CHANGELOG.md index 95ad38d..bd495ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,22 @@ ## Unreleased — 0.1.2 +- Implemented `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1` without + deployment. Desktop schema v26 adds terminal logical Program deletion with + request/deleted revisions, durable response replay, generation linkage and + acknowledgment state; source definitions and derived preparations remain, + while deleted Programs cannot resurrect or prepare. The responsive Sessions + Programs cards/timeline now use imported/session/usage/provenance data and + protect a discrete accessible trash confirmation with focus restoration and + Escape/Cancel no-op behavior. Android schema v24 adds the read-only synced + Programs list/detail projection. The optional staged controlled-generation + `trainlog-programs` V1 (`programs-v1.json`) publishes nondeleted Programs and + unacknowledged tombstones under capability `programs-v1`; it changes neither + `TRAINLOG_FORMAT_V1`, mobile V3, catalog exchange, nor preparations. Real + Firefox Programs screenshots are recorded in + `docs/reviews/programs_presentation_android_delete_v1_evidence.md`; + deployment remains pending. + - Completed the private grouped rollout of Web Sessions deletion and Program V1 from desktop source `a0fc48f082b76dba2ae3a56fceb492169de89f89`. Desktop migrated from schema v24 to v25 after backup, restoration, and diff --git a/README.md b/README.md index 4468859..cfdbe36 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,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 development) | Display the Dashboard and the implemented Sessions inventory, deletion, manual preparation, Android-delivery, and embedded Programs workflow through typed Trainlog Core/API boundaries. Analyse, the standalone Programmes route, and Exercises remain placeholders. | +| Local Web (0.1.2 development) | Display the Dashboard and the implemented Sessions inventory, deletion, manual preparation, Android-delivery, and embedded Programs workflow through typed Trainlog Core/API boundaries. Programs has responsive detail and terminal logical deletion; its latest Android projection companion is implemented but not deployed. Analyse, the standalone Programmes route, 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 @@ -320,7 +320,7 @@ not contain cloud credentials and does not run `rclone`. As of 2026-09-18: - `TRAINLOG_FORMAT_V1=PASS/FROZEN`; -- desktop SQLite schema v25 and Android SQLite schema v23; +- desktop SQLite schema v26 and Android SQLite schema v24; - Notcurses is the only active desktop terminal backend; - direct storage is `/storage/emulated/0/Documents/Trainlog` under Android's all-files access setting; @@ -335,6 +335,10 @@ As of 2026-09-18: `WEB_DASHBOARD_V1=PASS/FROZEN` and `TRAINLOG_WEB_SESSIONS_V1=PASS/FROZEN`; Programs is implemented inside Sessions; Analyse, Exercises, and the standalone top-level Programmes route remain placeholders; +- `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=IMPLEMENTED_VALIDATED`: + desktop Programs presentation/logical deletion and the Android read-only + projection are implemented and have real Firefox screenshot evidence, but + deployment remains pending; - `TRAINLOG_WEB_V1=CONTRACT_FROZEN / IMPLEMENTATION_STARTED`; - `TRAINLOG_SYNC_GENERATION_ACK_V1=PASS/FROZEN` through explicit staged services; automatic synchronization still selects V3. The trusted local diff --git a/android/app/src/main/java/com/labfytools/trainlog/data/AndroidBackupService.kt b/android/app/src/main/java/com/labfytools/trainlog/data/AndroidBackupService.kt index bf81478..e0d9bea 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/data/AndroidBackupService.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/data/AndroidBackupService.kt @@ -219,7 +219,7 @@ internal class AndroidBackupService(private val context: Context) { manifest.getInt("version") == VERSION && manifest.getString("package") == context.packageName && manifest.getBoolean("plaintext") && - manifest.getInt("schema") in 17..23 + manifest.getInt("schema") in 17..24 ) { "Unsupported backup." } @@ -313,7 +313,7 @@ internal class AndroidBackupService(private val context: Context) { } ) require(db.rawQuery("PRAGMA foreign_key_check", null).use { !it.moveToFirst() }) - require(db.version in 17..23) { "Unsupported Android schema ${db.version}." } + require(db.version in 17..24) { "Unsupported Android schema ${db.version}." } return db.version } finally { db.close() diff --git a/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationForegroundCoordinator.kt b/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationForegroundCoordinator.kt index 27104c9..fca6919 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationForegroundCoordinator.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationForegroundCoordinator.kt @@ -164,6 +164,7 @@ internal class SyncGenerationForegroundCoordinator(private val repository: Train "execution-draft-v1", "generation-archive-v1", "session-preparations-v2", + "programs-v1", ) ), ) diff --git a/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationService.kt b/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationService.kt index 86ed1ec..a99dd19 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationService.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/data/SyncGenerationService.kt @@ -70,7 +70,8 @@ internal class SyncGenerationService(private val repository: TrainlogRepository) private val SUPPORTED = (ANDROID_KINDS.values + Kind("trainlog-ai-session-drafts", 2, "ai-proposals-v2.json", false) + - Kind("trainlog-session-preparations", 2, "session-preparations-v2.json", false)) + Kind("trainlog-session-preparations", 2, "session-preparations-v2.json", false) + + Kind("trainlog-programs", 1, "programs-v1.json", false)) .map { it.format to it.version } .toSet() @@ -658,6 +659,7 @@ internal class SyncGenerationService(private val repository: TrainlogRepository) is ExerciseAliasImportResult.Applied, is ExecutionDraftImportResult.Applied, is AiSessionDraftImportResult.Applied, + is ProgramsImportResult.Applied, is CausalDeleteResult.Applied, is CausalDeleteResult.Unchanged -> null else -> result.toString() @@ -799,6 +801,10 @@ internal class SyncGenerationService(private val repository: TrainlogRepository) apply("causal-deletions") { repository.applyCausalDeletionExportV1Json(checkNotNull(a["causal-deletions"])) } + if ("programs-v1" in a) + apply("programs-v1") { + repository.applyProgramsV1Json(checkNotNull(a["programs-v1"])) + } apply("catalog") { repository.applyPcCatalogJson(checkNotNull(a["catalog"])) } apply("exercise-profile-state") { repository.applyExerciseProfileStateJson( diff --git a/android/app/src/main/java/com/labfytools/trainlog/data/TrainlogRepository.kt b/android/app/src/main/java/com/labfytools/trainlog/data/TrainlogRepository.kt index 230f122..cf92f63 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/data/TrainlogRepository.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/data/TrainlogRepository.kt @@ -38,6 +38,10 @@ import com.labfytools.trainlog.model.SessionLoadMode import com.labfytools.trainlog.model.SessionSetDraft import com.labfytools.trainlog.model.SessionType import com.labfytools.trainlog.model.TrackingMode +import com.labfytools.trainlog.model.SyncedProgramDetail +import com.labfytools.trainlog.model.SyncedProgramOccurrence +import com.labfytools.trainlog.model.SyncedProgramSession +import com.labfytools.trainlog.model.SyncedProgramSummary import org.json.JSONArray import org.json.JSONObject import java.text.Normalizer @@ -218,7 +222,14 @@ sealed interface MobileSessionImportResult { data object DatabaseError : MobileSessionImportResult } +sealed interface ProgramsImportResult { + data class Applied(val imported: Int, val deleted: Int, val skipped: Int) : ProgramsImportResult + data class Invalid(val message: String) : ProgramsImportResult + data object DatabaseError : ProgramsImportResult +} + private class SyncLifecycleConflict(val ownerId: String) : RuntimeException() +private class ProgramsImportInvalid(message: String) : RuntimeException(message) sealed interface CreateEquipmentResult { data class Created(val equipment: EquipmentCatalogEntry) : CreateEquipmentResult @@ -8056,6 +8067,299 @@ class TrainlogRepository( secondaryZoneIds.forEach { insert(it, "secondary") } } + /** + * Applies the desktop-owned read-only program projection. + * + * WHY: snapshot omission is not proof of deletion on an intermittently connected phone. + * CONTRACT: the complete document is validated before one transactional replacement pass; + * explicit tombstones are applied before live rows. INVARIANT: a durable tombstone always + * wins over a later stale snapshot and never touches drafts, preparations, history or catalog. + */ + fun applyProgramsV1Json(json: String): ProgramsImportResult { + if (json.toByteArray(StandardCharsets.UTF_8).size > 8 * 1024 * 1024 || + !jsonHasUniqueObjectKeys(json)) return ProgramsImportResult.Invalid("Invalid Programs JSON.") + val root = try { JSONObject(json) } catch (_: Exception) { + return ProgramsImportResult.Invalid("Invalid Programs JSON.") + } + fun JSONObject.exact(vararg names: String): Boolean = + keys().asSequence().toSet() == names.toSet() + fun bounded(value: Any?, maximum: Int, nullable: Boolean = false): Boolean { + if (value == null || value == JSONObject.NULL) return nullable + val text = value as? String ?: return false + return text.isNotBlank() && text.toByteArray(StandardCharsets.UTF_8).size <= maximum + } + fun nullableBounded(value: Any?, maximum: Int): Boolean = + value == JSONObject.NULL || bounded(value, maximum) + fun date(value: Any?): Boolean = value == JSONObject.NULL || + (value is String && try { LocalDate.parse(value); true } catch (_: Exception) { false }) + fun timestamp(value: Any?): Boolean = value is String && + try { OffsetDateTime.parse(value); true } catch (_: Exception) { false } + fun integer(value: Any?, minimum: Int, maximum: Int): Boolean = + (value is Int || value is Long) && (value as Number).toLong() in minimum.toLong()..maximum.toLong() + fun optionalInteger(value: Any?, minimum: Int, maximum: Int): Boolean = + value == JSONObject.NULL || integer(value, minimum, maximum) + fun optionalWeight(value: Any?): Boolean = value == JSONObject.NULL || + (value is Number && value.toDouble().isFinite() && value.toDouble() >= 0.0) + try { + if (!root.exact("format", "version", "generated_at", "programs", "deletions") || + root.optString("format") != "trainlog-programs" || root.opt("version") !is Int || + root.getInt("version") != 1 || !timestamp(root.opt("generated_at")) || + root.opt("programs") !is JSONArray || root.opt("deletions") !is JSONArray) + throw ProgramsImportInvalid("Unsupported Programs document.") + val programs = root.getJSONArray("programs") + val deletions = root.getJSONArray("deletions") + if (programs.length() > 256 || deletions.length() > 4096) + throw ProgramsImportInvalid("Programs document exceeds its item bound.") + val programIds = mutableSetOf() + val sessionIds = mutableSetOf() + val deletionIds = mutableSetOf() + val deletedProgramIds = mutableSetOf() + for (index in 0 until deletions.length()) { + val deletion = deletions.optJSONObject(index) + ?: throw ProgramsImportInvalid("Invalid program deletion.") + if (!deletion.exact("deletion_id", "program_id", "predecessor_revision_id", "revision_id", "requested_at") || + !bounded(deletion.opt("deletion_id"), 128) || + !bounded(deletion.opt("program_id"), 128) || + !bounded(deletion.opt("predecessor_revision_id"), 128) || + !bounded(deletion.opt("revision_id"), 128) || + !timestamp(deletion.opt("requested_at")) || + !deletionIds.add(deletion.getString("deletion_id")) || + !deletedProgramIds.add(deletion.getString("program_id"))) + throw ProgramsImportInvalid("Invalid or duplicate program deletion.") + } + for (programIndex in 0 until programs.length()) { + val program = programs.optJSONObject(programIndex) + ?: throw ProgramsImportInvalid("Invalid program.") + if (!program.exact( + "program_id", "revision_id", "title", "note", "state", "start_date", + "end_date", "created_at", "updated_at", "source_format", "source_version", + "source_payload_sha256", "sessions", + ) || + !bounded(program.opt("program_id"), 128) || !programIds.add(program.getString("program_id")) || + !bounded(program.opt("revision_id"), 128) || !bounded(program.opt("title"), 200) || + !nullableBounded(program.opt("note"), 4000) || program.optString("state") !in setOf("active", "archived") || + !date(program.opt("start_date")) || !date(program.opt("end_date")) || + !timestamp(program.opt("created_at")) || !timestamp(program.opt("updated_at")) || + !bounded(program.opt("source_format"), 64) || !integer(program.opt("source_version"), 1, Int.MAX_VALUE) || + (program.opt("source_payload_sha256") as? String)?.matches(Regex("^[0-9a-f]{64}$")) != true || + program.opt("sessions") !is JSONArray) + throw ProgramsImportInvalid("Invalid program metadata.") + val sessions = program.getJSONArray("sessions") + if (sessions.length() !in 1..64) throw ProgramsImportInvalid("Invalid program session count.") + for (sessionIndex in 0 until sessions.length()) { + val session = sessions.optJSONObject(sessionIndex) + ?: throw ProgramsImportInvalid("Invalid program session.") + if (!session.exact("program_session_id", "title", "session_type", "planned_for", "note", "occurrences") || + !bounded(session.opt("program_session_id"), 128) || !sessionIds.add(session.getString("program_session_id")) || + !bounded(session.opt("title"), 200) || session.optString("session_type") !in setOf("training", "max_test") || + !date(session.opt("planned_for")) || !nullableBounded(session.opt("note"), 4000) || + session.opt("occurrences") !is JSONArray) + throw ProgramsImportInvalid("Invalid program session metadata.") + val occurrences = session.getJSONArray("occurrences") + if (occurrences.length() !in 1..64) throw ProgramsImportInvalid("Invalid program occurrence count.") + val entryIds = mutableSetOf() + for (entryIndex in 0 until occurrences.length()) { + val entry = occurrences.optJSONObject(entryIndex) + ?: throw ProgramsImportInvalid("Invalid program occurrence.") + if (!entry.exact( + "entry_id", "exercise_id", "equipment_id", "load_mode", + "rest_seconds", "target_sets", "target_reps", + "target_duration_seconds", "target_weight_kg", "notes", + ) || + !bounded(entry.opt("entry_id"), 128) || !entryIds.add(entry.getString("entry_id")) || + !bounded(entry.opt("exercise_id"), 128) || !nullableBounded(entry.opt("equipment_id"), 128) || + entry.optString("load_mode") !in setOf("none", "external", "assistance") || + !integer(entry.opt("rest_seconds"), 0, 86400) || + !optionalInteger(entry.opt("target_sets"), 1, 99) || + !optionalInteger(entry.opt("target_reps"), 1, 10000) || + !optionalInteger(entry.opt("target_duration_seconds"), 1, 604800) || + !optionalWeight(entry.opt("target_weight_kg")) || !nullableBounded(entry.opt("notes"), 4000) || + (entry.isNull("target_reps") == entry.isNull("target_duration_seconds"))) + throw ProgramsImportInvalid("Invalid program occurrence values.") + } + } + } + + val db = database.writableDatabase + db.beginTransaction() + try { + var deleted = 0 + var imported = 0 + var skipped = 0 + for (index in 0 until deletions.length()) { + val deletion = deletions.getJSONObject(index) + val values = arrayOf( + deletion.getString("deletion_id"), deletion.getString("program_id"), + deletion.getString("predecessor_revision_id"), deletion.getString("revision_id"), + deletion.getString("requested_at"), + ) + val existing = db.rawQuery( + "SELECT deletion_id,predecessor_revision_id,revision_id,requested_at FROM synced_program_deletions WHERE program_id=?", + arrayOf(values[1]), + ).use { cursor -> if (!cursor.moveToFirst()) null else List(4) { cursor.getString(it) } } + if (existing != null && existing != listOf(values[0], values[2], values[3], values[4])) + throw ProgramsImportInvalid("Program deletion identity conflict.") + if (existing == null) { + db.execSQL("INSERT INTO synced_program_deletions VALUES(?,?,?,?,?)", values) + deleted++ + } else skipped++ + db.delete("synced_programs", "program_id=?", arrayOf(values[1])) + } + for (programIndex in 0 until programs.length()) { + val program = programs.getJSONObject(programIndex) + val id = program.getString("program_id") + val tombstoned = db.rawQuery("SELECT 1 FROM synced_program_deletions WHERE program_id=?", arrayOf(id)) + .use { it.moveToFirst() } + if (tombstoned) { skipped++; continue } + val digest = causalDigest(program) + val existing = db.rawQuery("SELECT revision_id,snapshot_sha256 FROM synced_programs WHERE program_id=?", arrayOf(id)) + .use { cursor -> if (!cursor.moveToFirst()) null else cursor.getString(0) to cursor.getString(1) } + if (existing?.first == program.getString("revision_id")) { + if (existing.second != digest) throw ProgramsImportInvalid("Program revision identity conflict.") + skipped++ + continue + } + db.delete("synced_programs", "program_id=?", arrayOf(id)) + db.execSQL( + "INSERT INTO synced_programs VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)", + arrayOf(id, program.getString("revision_id"), program.getString("title"), program.optStringOrNull("note"), + program.getString("state"), program.optStringOrNull("start_date"), program.optStringOrNull("end_date"), + program.getString("created_at"), program.getString("updated_at"), program.getString("source_format"), + program.getInt("source_version"), program.getString("source_payload_sha256"), digest), + ) + val sessions = program.getJSONArray("sessions") + for (sessionIndex in 0 until sessions.length()) { + val session = sessions.getJSONObject(sessionIndex) + val sessionId = session.getString("program_session_id") + db.execSQL("INSERT INTO synced_program_sessions VALUES(?,?,?,?,?,?,?)", arrayOf( + sessionId, id, sessionIndex, session.getString("title"), session.getString("session_type"), + session.optStringOrNull("planned_for"), session.optStringOrNull("note"))) + val entries = session.getJSONArray("occurrences") + for (entryIndex in 0 until entries.length()) { + val entry = entries.getJSONObject(entryIndex) + db.execSQL("INSERT INTO synced_program_entries VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)", arrayOf( + sessionId, entry.getString("entry_id"), entryIndex, entry.getString("exercise_id"), + entry.optStringOrNull("equipment_id"), entry.getString("load_mode"), entry.getInt("rest_seconds"), + entry.optIntOrNull("target_sets"), entry.optIntOrNull("target_reps"), + entry.optIntOrNull("target_duration_seconds"), entry.optDoubleOrNull("target_weight_kg"), + entry.optStringOrNull("notes"), id)) + } + } + imported++ + } + db.setTransactionSuccessful() + return ProgramsImportResult.Applied(imported, deleted, skipped) + } finally { db.endTransaction() } + } catch (error: ProgramsImportInvalid) { + return ProgramsImportResult.Invalid(error.message ?: "Invalid Programs document.") + } catch (_: Exception) { + return ProgramsImportResult.DatabaseError + } + } + + fun listSyncedPrograms(): List = database.readableDatabase.rawQuery( + "SELECT p.program_id,p.title,p.state,p.start_date,p.end_date,COUNT(s.program_session_id) " + + "FROM synced_programs p LEFT JOIN synced_program_sessions s ON s.program_id=p.program_id " + + "GROUP BY p.program_id ORDER BY CASE p.state WHEN 'active' THEN 0 ELSE 1 END,p.title COLLATE NOCASE,p.program_id", + null, + ).use { cursor -> + buildList { + while (cursor.moveToNext()) { + add( + SyncedProgramSummary( + cursor.getString(0), + cursor.getString(1), + cursor.getString(2), + if (cursor.isNull(3)) null else cursor.getString(3), + if (cursor.isNull(4)) null else cursor.getString(4), + cursor.getInt(5), + ), + ) + } + } + } + + fun getSyncedProgram(programId: String): SyncedProgramDetail? { + val db = database.readableDatabase + data class Header( + val title: String, + val note: String?, + val state: String, + val startDate: String?, + val endDate: String?, + ) + val header = db.rawQuery( + "SELECT title,note,state,start_date,end_date FROM synced_programs WHERE program_id=?", + arrayOf(programId), + ).use { cursor -> + if (!cursor.moveToFirst()) null else Header( + cursor.getString(0), + if (cursor.isNull(1)) null else cursor.getString(1), + cursor.getString(2), + if (cursor.isNull(3)) null else cursor.getString(3), + if (cursor.isNull(4)) null else cursor.getString(4), + ) + } ?: return null + val sessions = mutableListOf() + db.rawQuery( + "SELECT program_session_id,title,session_type,planned_for,note " + + "FROM synced_program_sessions WHERE program_id=? " + + "ORDER BY position,program_session_id", + arrayOf(programId), + ).use { sessionCursor -> + while (sessionCursor.moveToNext()) { + val sessionId = sessionCursor.getString(0) + val entries = mutableListOf() + db.rawQuery( + "SELECT pe.entry_id,pe.exercise_id," + + "COALESCE(e.name,canonical.name,pe.exercise_id),pe.equipment_id," + + "pe.load_mode,pe.rest_seconds,pe.target_sets,pe.target_reps," + + "pe.target_duration_seconds,pe.target_weight_kg,pe.notes " + + "FROM synced_program_entries pe " + + "LEFT JOIN exercises e ON e.exercise_id=pe.exercise_id " + + "LEFT JOIN exercise_aliases alias ON alias.source_exercise_id=pe.exercise_id " + + "LEFT JOIN exercises canonical " + + "ON canonical.exercise_id=alias.canonical_exercise_id " + + "WHERE pe.program_session_id=? ORDER BY pe.position,pe.entry_id", + arrayOf(sessionId), + ).use { entry -> + while (entry.moveToNext()) { + entries += SyncedProgramOccurrence( + entry.getString(0), + entry.getString(1), + entry.getString(2), + if (entry.isNull(3)) null else entry.getString(3), + entry.getString(4), + entry.getInt(5), + if (entry.isNull(6)) null else entry.getInt(6), + if (entry.isNull(7)) null else entry.getInt(7), + if (entry.isNull(8)) null else entry.getInt(8), + if (entry.isNull(9)) null else entry.getDouble(9), + if (entry.isNull(10)) null else entry.getString(10), + ) + } + } + sessions += SyncedProgramSession( + sessionId, + sessionCursor.getString(1), + sessionCursor.getString(2), + if (sessionCursor.isNull(3)) null else sessionCursor.getString(3), + if (sessionCursor.isNull(4)) null else sessionCursor.getString(4), + entries, + ) + } + } + return SyncedProgramDetail( + programId, + header.title, + header.note, + header.state, + header.startDate, + header.endDate, + sessions, + ) + } + private fun normalizeName( value: String, ): String { @@ -8143,6 +8447,9 @@ private fun JSONObject.optDoubleOrNull(key: String): Double? = private fun JSONObject.optIntOrNull(key: String): Int? = if (has(key) && !isNull(key)) getInt(key) else null +private fun JSONObject.optStringOrNull(key: String): String? = + if (has(key) && !isNull(key)) getString(key) else null + private fun jsonHasUniqueObjectKeys(json: String): Boolean = try { JsonReader(StringReader(json)).use { reader -> fun consumeValue() { @@ -8231,7 +8538,7 @@ private class TrainlogDatabaseHelper( appContext, databaseName, null, - 23, + 24, ) { override fun onConfigure( db: SQLiteDatabase, @@ -8279,6 +8586,7 @@ private class TrainlogDatabaseHelper( createSyncGenerationArchiveTable(db) createSessionPreparationTables(db) createSessionPreparationWithdrawalTable(db) + createSyncedProgramTables(db) seedEquipment(db) } @@ -8468,6 +8776,14 @@ private class TrainlogDatabaseHelper( createSessionPreparationWithdrawalTable(db) version = 23 } + if (version < 24 && newVersion >= 24) { + /* WHY: reusable Programs remain desktop-owned planning definitions. + * CONTRACT: v24 adds only a read-only projection and durable deletion + * tombstones. INVARIANT: no draft, preparation, history, catalog or + * body row is rewritten, inferred or removed by this migration. */ + createSyncedProgramTables(db) + version = 24 + } if (version != newVersion) { error( @@ -8477,6 +8793,46 @@ private class TrainlogDatabaseHelper( } } + private fun createSyncedProgramTables(db: SQLiteDatabase) { + db.execSQL( + """CREATE TABLE IF NOT EXISTS synced_programs( + program_id TEXT PRIMARY KEY, revision_id TEXT NOT NULL, title TEXT NOT NULL, + note TEXT, state TEXT NOT NULL CHECK(state IN('active','archived')), + start_date TEXT, end_date TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, + source_format TEXT NOT NULL, source_version INTEGER NOT NULL, + source_payload_sha256 TEXT NOT NULL, snapshot_sha256 TEXT NOT NULL + )""".trimIndent(), + ) + db.execSQL( + """CREATE TABLE IF NOT EXISTS synced_program_sessions( + program_session_id TEXT PRIMARY KEY, + program_id TEXT NOT NULL REFERENCES synced_programs(program_id) ON DELETE CASCADE, + position INTEGER NOT NULL CHECK(position>=0), title TEXT NOT NULL, + session_type TEXT NOT NULL CHECK(session_type IN('training','max_test')), + planned_for TEXT, note TEXT, UNIQUE(program_id,position) + )""".trimIndent(), + ) + db.execSQL( + """CREATE TABLE IF NOT EXISTS synced_program_entries( + program_session_id TEXT NOT NULL REFERENCES synced_program_sessions(program_session_id) ON DELETE CASCADE, + entry_id TEXT NOT NULL, position INTEGER NOT NULL CHECK(position>=0), exercise_id TEXT NOT NULL, + equipment_id TEXT, load_mode TEXT NOT NULL CHECK(load_mode IN('none','external','assistance')), + rest_seconds INTEGER NOT NULL CHECK(rest_seconds BETWEEN 0 AND 86400), + target_sets INTEGER, target_reps INTEGER, target_duration_seconds INTEGER, + target_weight_kg REAL, notes TEXT, program_id TEXT NOT NULL, + PRIMARY KEY(program_session_id,entry_id), UNIQUE(program_session_id,position) + )""".trimIndent(), + ) + db.execSQL("CREATE INDEX IF NOT EXISTS synced_program_entries_exercise ON synced_program_entries(exercise_id)") + db.execSQL( + """CREATE TABLE IF NOT EXISTS synced_program_deletions( + deletion_id TEXT PRIMARY KEY, program_id TEXT NOT NULL UNIQUE, + predecessor_revision_id TEXT NOT NULL, revision_id TEXT NOT NULL, + requested_at TEXT NOT NULL + )""".trimIndent(), + ) + } + private fun createSyncDataLifecycleTables(db: SQLiteDatabase) { fun addColumn(table: String, name: String, declaration: String) { if (!tableHasColumn(db, table, name)) { diff --git a/android/app/src/main/java/com/labfytools/trainlog/model/ProgramModels.kt b/android/app/src/main/java/com/labfytools/trainlog/model/ProgramModels.kt new file mode 100644 index 0000000..faf5b7f --- /dev/null +++ b/android/app/src/main/java/com/labfytools/trainlog/model/ProgramModels.kt @@ -0,0 +1,44 @@ +package com.labfytools.trainlog.model + +/** Read-only desktop-owned program projection exposed to Android presentation. */ +data class SyncedProgramSummary( + val programId: String, + val title: String, + val state: String, + val startDate: String?, + val endDate: String?, + val sessionCount: Int, +) + +data class SyncedProgramDetail( + val programId: String, + val title: String, + val note: String?, + val state: String, + val startDate: String?, + val endDate: String?, + val sessions: List, +) + +data class SyncedProgramSession( + val programSessionId: String, + val title: String, + val sessionType: String, + val plannedFor: String?, + val note: String?, + val occurrences: List, +) + +data class SyncedProgramOccurrence( + val entryId: String, + val exerciseId: String, + val exerciseName: String, + val equipmentId: String?, + val loadMode: String, + val restSeconds: Int, + val targetSets: Int?, + val targetReps: Int?, + val targetDurationSeconds: Int?, + val targetWeightKg: Double?, + val notes: String?, +) diff --git a/android/app/src/main/java/com/labfytools/trainlog/ui/AndroidAppShell.kt b/android/app/src/main/java/com/labfytools/trainlog/ui/AndroidAppShell.kt index 91b95fe..128afb2 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/ui/AndroidAppShell.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/ui/AndroidAppShell.kt @@ -66,6 +66,7 @@ fun AndroidAppShell( AppRoute.Home -> R.string.nav_home; AppRoute.Sessions -> R.string.nav_sessions AppRoute.SessionEditor -> R.string.route_session_editor; AppRoute.SessionGenerator -> R.string.route_session_generator AppRoute.AiSessionDrafts -> R.string.route_ai_drafts; AppRoute.CompletedSessions -> R.string.route_completed_sessions + AppRoute.Programs -> R.string.route_programs; is AppRoute.ProgramDetail -> R.string.route_program_detail is AppRoute.SessionDetail -> R.string.route_session_detail; is AppRoute.SessionCorrection -> R.string.route_session_correction AppRoute.Exercises -> R.string.nav_exercises; is AppRoute.ExerciseDetail -> R.string.route_exercise_detail is AppRoute.ExerciseEdit -> R.string.route_exercise_edit; is AppRoute.ExerciseCreate -> R.string.route_exercise_create diff --git a/android/app/src/main/java/com/labfytools/trainlog/ui/AppNavigation.kt b/android/app/src/main/java/com/labfytools/trainlog/ui/AppNavigation.kt index 3bde5cc..14d1282 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/ui/AppNavigation.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/ui/AppNavigation.kt @@ -23,6 +23,8 @@ sealed interface AppRoute { data object SessionGenerator : AppRoute { override val section = AppSection.SESSIONS } data object AiSessionDrafts : AppRoute { override val section = AppSection.SESSIONS } data object CompletedSessions : AppRoute { override val section = AppSection.SESSIONS } + data object Programs : AppRoute { override val section = AppSection.SESSIONS } + data class ProgramDetail(val programId: String) : AppRoute { override val section = AppSection.SESSIONS } data class SessionDetail(val sessionId: String) : AppRoute { override val section = AppSection.SESSIONS } data class SessionCorrection(val sessionId: String) : AppRoute { override val section = AppSection.SESSIONS } data object Exercises : AppRoute { override val section = AppSection.EXERCISES } diff --git a/android/app/src/main/java/com/labfytools/trainlog/ui/ProgramScreens.kt b/android/app/src/main/java/com/labfytools/trainlog/ui/ProgramScreens.kt new file mode 100644 index 0000000..15a94df --- /dev/null +++ b/android/app/src/main/java/com/labfytools/trainlog/ui/ProgramScreens.kt @@ -0,0 +1,79 @@ +package com.labfytools.trainlog.ui + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import com.labfytools.trainlog.R +import com.labfytools.trainlog.data.TrainlogRepository + +/** Presentation-only list for the desktop-owned Programs projection. */ +@Composable +fun ProgramsScreen(repository: TrainlogRepository, onOpen: (String) -> Unit) { + val strings = localizedContext() + val programs = repository.listSyncedPrograms() + TrainlogScreen(strings.getString(R.string.route_programs)) { + if (programs.isEmpty()) TrainlogInfo(strings.getString(R.string.programs_none)) + programs.forEach { program -> + TrainlogFrame(program.title, active = program.state == "active") { + TrainlogInfo( + listOfNotNull( + strings.getString(if (program.state == "active") R.string.program_active else R.string.program_archived), + program.startDate?.let { strings.getString(R.string.program_start_date, formatDate(it)) }, + program.endDate?.let { strings.getString(R.string.program_end_date, formatDate(it)) }, + strings.resources.getQuantityString( + R.plurals.program_session_count, + program.sessionCount, + program.sessionCount, + ), + ).joinToString(" · "), + ) + TrainlogButton( + strings.getString(R.string.program_open), + { onOpen(program.programId) }, + Modifier.testTag("program-${program.programId}"), + ) + } + } + } +} + +/** CONTRACT: this route exposes no start, edit, archive, or delete mutation. */ +@Composable +fun ProgramDetailScreen(repository: TrainlogRepository, programId: String) { + val strings = localizedContext() + val program = repository.getSyncedProgram(programId) + TrainlogScreen(strings.getString(R.string.route_program_detail)) { + if (program == null) { + TrainlogInfo(strings.getString(R.string.program_not_found)) + return@TrainlogScreen + } + TrainlogFrame(program.title, active = program.state == "active") { + TrainlogInfo(strings.getString(if (program.state == "active") R.string.program_active else R.string.program_archived)) + program.startDate?.let { TrainlogInfo(strings.getString(R.string.program_start_date, formatDate(it))) } + program.endDate?.let { TrainlogInfo(strings.getString(R.string.program_end_date, formatDate(it))) } + program.note?.let { TrainlogInfo(it) } + } + program.sessions.forEachIndexed { index, session -> + TrainlogFrame("${index + 1}. ${session.title}") { + TrainlogInfo( + listOfNotNull( + strings.getString(if (session.sessionType == "max_test") R.string.session_max_test else R.string.session_training), + session.plannedFor?.let { strings.getString(R.string.planned_for, formatDate(it)) }, + ).joinToString(" · "), + ) + session.note?.let { TrainlogInfo(it) } + session.occurrences.forEachIndexed { occurrenceIndex, occurrence -> + val target = occurrence.targetReps?.let { strings.getString(R.string.program_target_reps, it) } + ?: occurrence.targetDurationSeconds?.let { strings.getString(R.string.program_target_duration, it) }.orEmpty() + val sets = occurrence.targetSets?.let { strings.getString(R.string.program_target_sets, it) }.orEmpty() + val weight = occurrence.targetWeightKg?.let { strings.getString(R.string.program_target_weight, it) }.orEmpty() + TrainlogInfo( + "${occurrenceIndex + 1}. ${occurrence.exerciseName}" + + listOf(sets, target, weight).filter { it.isNotEmpty() }.joinToString(" · ", prefix = " · "), + ) + occurrence.notes?.let { TrainlogInfo(it) } + } + } + } + } +} diff --git a/android/app/src/main/java/com/labfytools/trainlog/ui/SectionScreens.kt b/android/app/src/main/java/com/labfytools/trainlog/ui/SectionScreens.kt index 40a0948..1c23a95 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/ui/SectionScreens.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/ui/SectionScreens.kt @@ -46,6 +46,7 @@ fun SessionsHub( onManual: () -> Unit, onDrafts: () -> Unit, onHistory: () -> Unit, + onPrograms: () -> Unit = {}, ) { val colors = LocalTrainlogColors.current val strings = localizedContext() @@ -67,6 +68,8 @@ fun SessionsHub( } TrainlogButton(strings.getString(R.string.route_completed_sessions), onHistory, Modifier.fillMaxWidth().testTag("sessions-history-action")) + TrainlogButton(strings.getString(R.string.route_programs), onPrograms, + Modifier.fillMaxWidth().testTag("sessions-programs-action")) } } diff --git a/android/app/src/main/java/com/labfytools/trainlog/ui/TrainlogApp.kt b/android/app/src/main/java/com/labfytools/trainlog/ui/TrainlogApp.kt index f6d1002..b6d8db5 100644 --- a/android/app/src/main/java/com/labfytools/trainlog/ui/TrainlogApp.kt +++ b/android/app/src/main/java/com/labfytools/trainlog/ui/TrainlogApp.kt @@ -106,7 +106,7 @@ fun TrainlogApp(repository: TrainlogRepository, exporter: SyncExporter, inbox: S { open(AppRoute.BodyMeasurements) }, { open(AppRoute.SessionDetail(it)) }, { open(AppRoute.Sync) }, ) AppRoute.Sessions -> SessionsHub(activeDraft, pendingAiDraftCount, { open(AppRoute.SessionEditor) }, ::openManualSession, - { open(AppRoute.AiSessionDrafts) }, { open(AppRoute.CompletedSessions) }) + { open(AppRoute.AiSessionDrafts) }, { open(AppRoute.CompletedSessions) }, { open(AppRoute.Programs) }) AppRoute.SessionEditor -> SessionScreen(repository, catalogRevision, { draftRevision++; back() }, { open(AppRoute.ExerciseCreate(AppRoute.SessionEditor)) }, { exportSnapshot(); draftRevision++ }) AppRoute.SessionGenerator -> SessionGeneratorScreen(repository, generatorState, { back() }, { generatorState.abandon(); draftRevision++; open(AppRoute.SessionEditor) }, { draftMessage = strings.getString(R.string.existing_draft_warning) @@ -124,6 +124,8 @@ fun TrainlogApp(repository: TrainlogRepository, exporter: SyncExporter, inbox: S onStarted = { open(AppRoute.SessionEditor) }, ) AppRoute.CompletedSessions -> HistoryScreen(repository, { back() }) { open(AppRoute.SessionDetail(it)) } + AppRoute.Programs -> ProgramsScreen(repository) { open(AppRoute.ProgramDetail(it)) } + is AppRoute.ProgramDetail -> ProgramDetailScreen(repository, route.programId) is AppRoute.SessionDetail -> SessionDetailScreen(repository, route.sessionId, { back() }, { open(AppRoute.SessionCorrection(route.sessionId)) }) { draftRevision++; open(AppRoute.SessionEditor) } is AppRoute.SessionCorrection -> CompletedSessionCorrectionScreen(repository, route.sessionId) { saved -> if (saved) exportSnapshot() @@ -164,6 +166,7 @@ fun TrainlogApp(repository: TrainlogRepository, exporter: SyncExporter, inbox: S private fun AppRoute.stateKey(): String = when (this) { is AppRoute.SessionDetail -> "session:${sessionId}" is AppRoute.SessionCorrection -> "session-correction:${sessionId}" + is AppRoute.ProgramDetail -> "program:${programId}" is AppRoute.ExerciseDetail -> "exercise:${exerciseId}" is AppRoute.ExerciseEdit -> "exercise-edit:${exerciseId}:${caller.section}" is AppRoute.ExerciseCreate -> "exercise-create:${caller.section}" diff --git a/android/app/src/main/res/values-en/strings.xml b/android/app/src/main/res/values-en/strings.xml index 90353ed..eef469d 100644 --- a/android/app/src/main/res/values-en/strings.xml +++ b/android/app/src/main/res/values-en/strings.xml @@ -12,6 +12,20 @@ Plan a session Drafts Completed sessions + Programs + Program details + No synchronized programs. + ACTIVE + ARCHIVED + Start: %1$s + End: %1$s + View program + Program not found. + %1$d sets + %1$d repetitions + %1$d s + %1$.1f kg + %d session%d sessions Session details Edit session Exercise details diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 466ee88..89c75be 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -12,6 +12,20 @@ Programmer une séance Brouillons Séances effectuées + Programmes + Détail du programme + Aucun programme synchronisé. + ACTIF + ARCHIVÉ + Début : %1$s + Fin : %1$s + Afficher le programme + Programme introuvable. + %1$d séries + %1$d répétitions + %1$d s + %1$.1f kg + %d séance%d séances Détail de la séance Modifier la séance Fiche exercice diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV10PlanningMigrationTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV10PlanningMigrationTest.kt index 7967d49..e4680cd 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV10PlanningMigrationTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV10PlanningMigrationTest.kt @@ -66,7 +66,7 @@ class AndroidV10PlanningMigrationTest { TrainlogRepository(context, name).useForTest { it.listSessions() } SQLiteDatabase.openDatabase(path.path, null, SQLiteDatabase.OPEN_READONLY).use { db -> - assertEquals(23, scalar(db, "PRAGMA user_version")) + assertEquals(24, scalar(db, "PRAGMA user_version")) for (table in listOf("session_exercises", "draft_session_exercises")) { assertEquals(6, scalar(db, "SELECT COUNT(*) FROM pragma_table_info('$table') WHERE name IN ('load_mode','rest_seconds','target_sets','target_reps','target_duration_seconds','target_weight_kg')")) assertEquals(0, scalar(db, "SELECT COUNT(*) FROM $table WHERE load_mode<>'none' OR rest_seconds<>0 OR target_sets IS NOT NULL OR target_reps IS NOT NULL OR target_duration_seconds IS NOT NULL OR target_weight_kg IS NOT NULL")) diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV11ExerciseAliasMigrationTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV11ExerciseAliasMigrationTest.kt index b18cb11..3873732 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV11ExerciseAliasMigrationTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV11ExerciseAliasMigrationTest.kt @@ -69,7 +69,7 @@ class AndroidV11ExerciseAliasMigrationTest { migrated.close() } SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY).use { db -> - assertEquals(23, scalar(db, "PRAGMA user_version")) + assertEquals(24, scalar(db, "PRAGMA user_version")) /* v13 intentionally adds the frozen machine identities and * exercise-owned metadata; all non-exercise facts stay exact. */ val after = snapshot(db).filterKeys { it !in setOf("exercise_aliases", "exercise_profile_state", "exercise_profile_revisions") } diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV16AiSessionDraftMigrationTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV16AiSessionDraftMigrationTest.kt index 9bc8b62..3c1ddcc 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV16AiSessionDraftMigrationTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/AndroidV16AiSessionDraftMigrationTest.kt @@ -78,7 +78,7 @@ class AndroidV16AiSessionDraftMigrationTest { migrated.close() } SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY).use { db -> - assertEquals(23, scalar(db, "PRAGMA user_version")) + assertEquals(24, scalar(db, "PRAGMA user_version")) assertEquals(before, listOf( scalar(db, "SELECT COUNT(*) FROM sessions"), scalar(db, "SELECT COUNT(*) FROM performed_sets"), diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/BodyZonesTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/BodyZonesTest.kt index 7e48e16..9de2ca0 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/BodyZonesTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/BodyZonesTest.kt @@ -328,7 +328,7 @@ class BodyZonesTest { SQLiteDatabase.openDatabase(context.getDatabasePath(name).path, null, SQLiteDatabase.OPEN_READONLY).use { db -> db.rawQuery("PRAGMA user_version", null).use { cursor -> - assertTrue(cursor.moveToFirst()); assertEquals(23, cursor.getInt(0)) + assertTrue(cursor.moveToFirst()); assertEquals(24, cursor.getInt(0)) } db.rawQuery("SELECT id FROM exercises", null).use { cursor -> assertTrue(cursor.moveToFirst()); assertEquals(42L, cursor.getLong(0)) diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/BridgeBackupMigrationTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/BridgeBackupMigrationTest.kt index b28219b..0b487a8 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/BridgeBackupMigrationTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/BridgeBackupMigrationTest.kt @@ -43,7 +43,7 @@ class BridgeBackupMigrationTest { null, android.database.sqlite.SQLiteDatabase.OPEN_READONLY, ) - .use { assertEquals(23, it.version) } + .use { assertEquals(24, it.version) } } finally { repository.close() context.deleteDatabase(name) diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/ProgramsProjectionRepositoryTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/ProgramsProjectionRepositoryTest.kt new file mode 100644 index 0000000..e139d90 --- /dev/null +++ b/android/app/src/test/java/com/labfytools/trainlog/data/ProgramsProjectionRepositoryTest.kt @@ -0,0 +1,127 @@ +package com.labfytools.trainlog.data + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import java.util.UUID +import org.json.JSONArray +import org.json.JSONObject +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class ProgramsProjectionRepositoryTest { + private val context: Context = ApplicationProvider.getApplicationContext() + + private fun program(title: String = "Cycle lisible"): JSONObject = + JSONObject() + .put("program_id", "pg_aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa") + .put("revision_id", "pgr_bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb") + .put("title", title) + .put("note", "Lecture seule") + .put("state", "active") + .put("start_date", "2026-09-21") + .put("end_date", JSONObject.NULL) + .put("created_at", "2026-09-18T10:00:00Z") + .put("updated_at", "2026-09-18T11:00:00Z") + .put("source_format", "trainlog-program") + .put("source_version", 1) + .put("source_payload_sha256", "a".repeat(64)) + .put( + "sessions", + JSONArray().put( + JSONObject() + .put("program_session_id", "pgs_cccccccc-cccc-4ccc-8ccc-cccccccccccc") + .put("title", "Séance A") + .put("session_type", "training") + .put("planned_for", JSONObject.NULL) + .put("note", JSONObject.NULL) + .put( + "occurrences", + JSONArray().put( + JSONObject() + .put("entry_id", "pge_dddddddd-dddd-4ddd-8ddd-dddddddddddd") + .put("exercise_id", "ex_eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee") + .put("equipment_id", JSONObject.NULL) + .put("load_mode", "external") + .put("rest_seconds", 90) + .put("target_sets", 3) + .put("target_reps", 8) + .put("target_duration_seconds", JSONObject.NULL) + .put("target_weight_kg", 40.0) + .put("notes", JSONObject.NULL), + ), + ), + ), + ) + + private fun artifact(programs: JSONArray, deletions: JSONArray = JSONArray()): String = + JSONObject() + .put("format", "trainlog-programs") + .put("version", 1) + .put("generated_at", "2026-09-18T12:00:00Z") + .put("programs", programs) + .put("deletions", deletions) + .toString() + + private fun deletion(): JSONObject = + JSONObject() + .put("deletion_id", "pgd_ffffffff-ffff-4fff-8fff-ffffffffffff") + .put("program_id", "pg_aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa") + .put("predecessor_revision_id", "pgr_bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb") + .put("revision_id", "pgr_11111111-1111-4111-8111-111111111111") + .put("requested_at", "2026-09-18T12:30:00Z") + + @Test + fun projectionReplayConflictDeletionAndRestartAreDurable() { + val name = "programs-${UUID.randomUUID()}.db" + var repository = TrainlogRepository(context, name) + try { + assertEquals(ProgramsImportResult.Applied(1, 0, 0), repository.applyProgramsV1Json(artifact(JSONArray().put(program())))) + assertEquals(ProgramsImportResult.Applied(0, 0, 1), repository.applyProgramsV1Json(artifact(JSONArray().put(program())))) + val summary = repository.listSyncedPrograms().single() + assertEquals(1, summary.sessionCount) + val detail = repository.getSyncedProgram(summary.programId)!! + assertEquals("ex_eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee", detail.sessions.single().occurrences.single().exerciseName) + + val conflict = repository.applyProgramsV1Json(artifact(JSONArray().put(program("Divergent")))) + assertTrue(conflict is ProgramsImportResult.Invalid) + assertEquals("Cycle lisible", repository.listSyncedPrograms().single().title) + + assertEquals(ProgramsImportResult.Applied(0, 1, 0), repository.applyProgramsV1Json(artifact(JSONArray(), JSONArray().put(deletion())))) + assertTrue(repository.listSyncedPrograms().isEmpty()) + } finally { + repository.close() + } + + repository = TrainlogRepository(context, name) + try { + assertEquals(ProgramsImportResult.Applied(0, 0, 1), repository.applyProgramsV1Json(artifact(JSONArray().put(program())))) + assertTrue(repository.listSyncedPrograms().isEmpty()) + assertTrue(repository.listEquipment().isNotEmpty()) + } finally { + repository.close() + context.deleteDatabase(name) + } + } + + @Test + fun malformedNestedDocumentDoesNotPartiallyDelete() { + val name = "programs-invalid-${UUID.randomUUID()}.db" + val repository = TrainlogRepository(context, name) + try { + repository.applyProgramsV1Json(artifact(JSONArray().put(program()))) + val malformed = program().apply { getJSONArray("sessions").getJSONObject(0).remove("title") } + val result = repository.applyProgramsV1Json(artifact(JSONArray().put(malformed), JSONArray().put(deletion()))) + assertTrue(result is ProgramsImportResult.Invalid) + assertEquals(1, repository.listSyncedPrograms().size) + } finally { + repository.close() + context.deleteDatabase(name) + } + } +} diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/SessionPreparationExchangeTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/SessionPreparationExchangeTest.kt index 2b2b693..b4b51e4 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/SessionPreparationExchangeTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/SessionPreparationExchangeTest.kt @@ -260,7 +260,7 @@ class SessionPreparationExchangeTest { repository = TrainlogRepository(context, name) assertEquals(1, repository.listPreparedSessions().size) repository.close() - assertEquals("23", scalarText(name, "PRAGMA user_version")) + assertEquals("24", scalarText(name, "PRAGMA user_version")) assertEquals( "0", scalarText(name, "SELECT COUNT(*) FROM session_preparation_withdrawals"), diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/SyncGenerationServiceTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/SyncGenerationServiceTest.kt index 29490ba..aa7e3cc 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/SyncGenerationServiceTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/SyncGenerationServiceTest.kt @@ -111,7 +111,7 @@ class SyncGenerationServiceTest { .use { db -> db.rawQuery("PRAGMA user_version", null).use { assertTrue(it.moveToFirst()) - assertEquals(23, it.getInt(0)) + assertEquals(24, it.getInt(0)) } db.rawQuery("SELECT COUNT(*) FROM exercises", null).use { assertTrue(it.moveToFirst()) diff --git a/android/app/src/test/java/com/labfytools/trainlog/data/TrainlogRepositoryDraftTest.kt b/android/app/src/test/java/com/labfytools/trainlog/data/TrainlogRepositoryDraftTest.kt index 2195ba1..038ebac 100644 --- a/android/app/src/test/java/com/labfytools/trainlog/data/TrainlogRepositoryDraftTest.kt +++ b/android/app/src/test/java/com/labfytools/trainlog/data/TrainlogRepositoryDraftTest.kt @@ -2260,7 +2260,7 @@ class TrainlogRepositoryDraftTest { ).use { db -> db.rawQuery("PRAGMA user_version;", null).use { cursor -> assertTrue(cursor.moveToFirst()) - assertEquals(23, cursor.getInt(0)) + assertEquals(24, cursor.getInt(0)) } db.rawQuery( "SELECT eq.equipment_id, ps.reps, ps.weight_kg FROM session_exercises se " + @@ -2387,7 +2387,7 @@ class TrainlogRepositoryDraftTest { ).use { db -> db.rawQuery("PRAGMA user_version;", null).use { cursor -> assertTrue(cursor.moveToFirst()) - assertEquals(23, cursor.getInt(0)) + assertEquals(24, cursor.getInt(0)) } db.rawQuery("SELECT weight_kg FROM performed_sets WHERE id = 1;", null).use { cursor -> assertTrue(cursor.moveToFirst()) diff --git a/docs/README.md b/docs/README.md index 0e71e4c..734595f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -17,7 +17,7 @@ evidence and chronology. - [Web Sessions V1](web_sessions.md) owns the implemented preparation, resume, history and Android-delivery workflow. - [Program format V1](program_format_v1.md) owns the strict desktop planning - import contract used by the Sessions Programs subtab. + import contract and program lifecycle used by the Sessions Programs subtab. - [Android](android.md) owns field-companion capture, local persistence, glanceable summaries, permissions, and Android interaction rules. @@ -77,6 +77,9 @@ evidence and chronology. - [Review records](reviews/) retain historical audits, incidents, checkpoints, and validation evidence. Their status and paths are historical. +- [Programs presentation / Android delete evidence](reviews/programs_presentation_android_delete_v1_evidence.md) + records the implemented, not-deployed validation checkpoint and real-browser + screenshot evidence. - [Changelog](../CHANGELOG.md) owns chronological change history. - [Release notes](releases/) retain reusable, tag-scoped English source text for public GitHub and Forgejo releases. diff --git a/docs/android.md b/docs/android.md index d62e9ad..d75befa 100644 --- a/docs/android.md +++ b/docs/android.md @@ -16,6 +16,13 @@ and their active or completed execution data is untouched. The stored result is Withdrawal replay is idempotent, and an older preparation delivery is skipped once the withdrawal identity for that preparation exists. +Android schema v24 adds a read-only synchronized Programs projection: +`synced_programs`, `synced_program_sessions`, `synced_program_entries`, and +`synced_program_deletions`. It presents received program and session detail in +Sessions without offering import, archive, delete, preparation, or other +program mutation actions. The projection is separate from capture data, AI +proposals, manual preparations, and the active-session singleton. + ## 1. Purpose The Android application is Trainlog's low-friction capture client. @@ -68,7 +75,15 @@ including intermediate forms such as `0.`, `0,`, `.3`, and `,3`. Commit replaces existing positive/non-negative domain rule. Distance remains explicitly km; no unit guessing or automatic correction occurs. -## Session exchange V3 +## Session exchange V3 and optional Programs companion V1 + +`trainlog-programs` V1 is an optional staged controlled-generation companion, +not a replacement for mobile export V3. The PC publishes `programs-v1.json` as +a full snapshot of nondeleted programs plus unacknowledged program-deletion +tombstones. Both peers advertise the `programs-v1` capability; Android applies +the projection and deletion state durably, and desktop records the correlated +ACK before marking the tombstone acknowledged. It changes neither +`TRAINLOG_FORMAT_V1`, mobile V3, catalog exchange, nor preparation exchange. Completed session occurrences persist an `entry_id`; it is never regenerated for exchange. Android schema v14 added feedback roots and completion `ended_at` diff --git a/docs/architecture.md b/docs/architecture.md index e666270..6c04957 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -493,9 +493,15 @@ silently rendered as unclassified. ### Desktop -Desktop SQLite schema v24 is canonical long-term history. Its additive v23 -> -v24 migration adds durable manual-preparation withdrawal identity without -deleting revisions, deliveries or workout facts. Its additive v18 -> +Desktop SQLite schema v26 is canonical long-term history. Its additive v25 -> +v26 migration adds terminal Program logical deletion and its durable replay, +generation, and acknowledgement ledger without deleting imported definitions, +derived preparations, or workout facts. Android schema v24 maintains the +separate read-only synchronized Programs projection; the optional staged +`trainlog-programs` V1 companion does not replace mobile V3 or change +`TRAINLOG_FORMAT_V1`. Its additive desktop v23 -> v24 migration adds durable +manual-preparation withdrawal identity without deleting revisions, deliveries +or workout facts. Its additive v18 -> v19 migration stores causal notes and execution-draft lifecycle state without activating a new transport. Its v15 -> v16 transactional rebuild adds the occurrence-owned `tracking_mode` snapshot; the diff --git a/docs/current_state.md b/docs/current_state.md index 072ac3c..011421a 100644 --- a/docs/current_state.md +++ b/docs/current_state.md @@ -57,8 +57,8 @@ parallel implementation of its rules. | Boundary | Current state | |---|---| | Frozen project exchange | `TRAINLOG_FORMAT_V1=PASS/FROZEN` | -| Desktop SQLite | schema v25 | -| Android SQLite | schema v23 | +| Desktop SQLite | schema v26 | +| Android SQLite | schema v24 | | 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` development, synchronized across Android and desktop; latest stable release: `v0.1.1` | @@ -81,6 +81,7 @@ parallel implementation of its rules. | Web Dashboard V1 | `WEB_DASHBOARD_V1=PASS/FROZEN` | | Web Sessions V1 | `TRAINLOG_WEB_SESSIONS_V1=PASS/FROZEN` (controlled desktop/Android deployment validated) | | Web Sessions deletion and Programs V1 | `TRAINLOG_WEB_SESSIONS_DELETE_AND_PROGRAMS_V1=PASS` (private grouped rollout validated) | +| Programs presentation, Android projection, and deletion | `TRAINLOG_PROGRAMS_PRESENTATION_ANDROID_DELETE_V1=IMPLEMENTED_VALIDATED` (not deployed; real Firefox Programs screenshots recorded) | | Sync orchestrator/report V1 | `TRAINLOG_SYNC_ORCHESTRATOR_REPORT_V1=PASS/FROZEN` | | Web sync API V1 | `TRAINLOG_WEB_SYNC_API_V1=PASS/FROZEN` | | Web sync button V1 | `TRAINLOG_WEB_SYNC_BUTTON_V1=PASS/FROZEN` | @@ -231,9 +232,9 @@ explicit proposal derivation and generation-backed Android delivery. Programmes is implemented as the fourth Sessions subtab; Analyse and Exercises remain explicit placeholders, and no standalone Programs route exists. -Desktop schema v25 owns immutable manual-preparation revisions, stable ordered +Desktop schema v26 owns immutable manual-preparation revisions, stable ordered occurrences, persistent HTTP idempotency keys, delivery-to-execution identity, -and durable revision-bound withdrawal records. Android schema v23 stores +and durable revision-bound withdrawal records. Android schema v24 stores received preparations and permanent withdrawal results separately from AI proposals and the active singleton. Pending deliveries are cancelled by an exact V2 withdrawal; started executions are preserved. An exact correlated ACK @@ -254,12 +255,22 @@ preparations and is propagated by `trainlog-ai-session-drafts` V2; inactive execution drafts and completed sessions use revision-guarded causal deletion. Active or concurrently changed drafts conflict instead of being erased. -Program V1 is desktop-owned planning data in schema v25. The Sessions Programs -subtab lists, searches, filters, deep-links and archives programs. Local JSON -import is strict and bounded, previews through Core before committing, and has -deterministic replay/conflict behavior. One explicit program-session action -creates a provenance-bearing manual preparation without Android delivery or -performed work. +Program V1 is desktop-owned planning data in schema v26. The responsive +Sessions Programs subtab provides cards and timeline detail backed by real +imported definitions, sessions, usage, and provenance; it keeps strict bounded +preview/commit import and deterministic replay/conflict behavior. A discrete, +accessible trash action uses confirmation, focus restoration, and Escape-safe +cancel semantics. Active and archived programs may be terminally logically +deleted; sources and derived preparations remain, while deleted programs cannot +resurrect or reprepare and archived programs cannot prepare. + +Android schema v24 contains a read-only synchronized Programs projection with +program, session, entry, and deletion tables. Its Sessions list/detail has no +program mutation actions. The optional staged controlled-generation +`trainlog-programs` V1 companion publishes a PC-to-Android full nondeleted +snapshot plus unacknowledged tombstones under capability `programs-v1`; a +durable correlated ACK records acknowledgment. It changes neither +`TRAINLOG_FORMAT_V1`, mobile V3, catalog exchange, nor preparations. The controlled deployment preserved the installed Android signing identity and advanced its private `versionCode` from 13 to 14 without uninstalling or diff --git a/docs/database.md b/docs/database.md index eac1ab9..f667b62 100644 --- a/docs/database.md +++ b/docs/database.md @@ -1,5 +1,19 @@ # Desktop database +## Schema v26: Programs presentation, Android projection, and logical deletion + +Schema v26 adds nullable `programs.deleted_at` and the terminal +`program_deletions` logical-deletion ledger. A ledger row binds the stable +program identity to the request revision, deleted revision, response replay, +generation identity, and nullable `acknowledged_at`. Deletion is available for +active and archived programs. It retains the imported source definition and +all derived preparations, but a deleted program cannot be resurrected or used +to create another preparation. An archived program cannot be prepared. + +The related Programs presentation reads imported definitions, their sessions, +usage, and provenance as real desktop data; it does not make planning targets +performed work. The v26 migration is additive and transactional. + ## Schema v25: Web deletion requests and Program V1 Schema v25 adds durable Program V1 definitions, their ordered session and @@ -51,8 +65,8 @@ is a later, separately versioned migration. ## 1. Status ```text -TRAINLOG_DATABASE_SCHEMA_VERSION=25 -DATABASE_SCHEMA_V25=IMPLEMENTED +TRAINLOG_DATABASE_SCHEMA_VERSION=26 +DATABASE_SCHEMA_V26=IMPLEMENTED TRAINLOG_FORMAT_V1=FROZEN ``` @@ -71,7 +85,7 @@ PRAGMA user_version; Current value: ```text -25 +26 ``` The independent actual-set loads documented in the current desktop, Android diff --git a/docs/program_format_v1.md b/docs/program_format_v1.md index 4fe694c..e7ebcbe 100644 --- a/docs/program_format_v1.md +++ b/docs/program_format_v1.md @@ -13,7 +13,7 @@ identities remain opaque. Display titles are not identities. A program is not a reusable session template, AI proposal, manual preparation, execution draft or completed session. -Desktop schema v25 owns the imported program and its exact source SHA-256. +Desktop schema v26 owns the imported program and its exact source SHA-256. Exact same-ID content replay is idempotent. The same ID with a different byte payload is an explicit conflict. A different ID may reuse a title because titles have no identity semantics. @@ -60,3 +60,11 @@ session is a separate idempotent command that copies the ordered plan and stores program/session provenance on a new `sp_` manual preparation. It does not create a delivery, Android object, execution draft, completed session or performed measurement. + +Deletion is a separate terminal logical lifecycle transition. It is allowed +from active or archived state, records request/deleted revisions and durable +response replay in the desktop `program_deletions` ledger, and retains the +source definition and derived preparations. A deleted program cannot be +resurrected or prepared; an archived program cannot be prepared. The optional +`trainlog-programs` V1 synchronization companion is a separate PC-to-Android +projection and does not alter this import format. diff --git a/docs/reviews/evidence/web-programs-v1-card-desktop.png b/docs/reviews/evidence/web-programs-v1-card-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..2410e94c91a0288a02b6f68850dc40fcc50f459a GIT binary patch literal 115463 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 literal 0 HcmV?d00001 diff --git a/docs/reviews/evidence/web-programs-v1-delete-dialog-mobile-390x844.png b/docs/reviews/evidence/web-programs-v1-delete-dialog-mobile-390x844.png new file mode 100644 index 0000000000000000000000000000000000000000..2bd52e61673d12d24f4ea69568cad51621c143b4 GIT binary patch literal 69728 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