24644a0144fa92eac2861c8d9b5bea25ec1a8868
Per-case JSON markers under filesDir/recordings/cases/, atomic tmp+rename writes, kotlinx.coroutines Mutex serialising mutations. Wire format mirrors doctate-client-core::CaseMarker exactly (snake_case keys, RFC3339 strings, internally-tagged OnelinerState) — markers round-trip with the desktop client. mergeServerSnapshot adds/updates only; reconcileWithServerSnapshot removes synced markers inside the response window that the server stopped reporting. Pending markers are never touched. Local Manual oneliners stick against non-Manual server overrides. DoctateApp now exposes caseStore as a lazy property and wires a distinct-head flow collector to TileService.requestUpdate, decoupling the store from Android Tile APIs (testable on the JVM). JVM test infra: real org.json:json:20240303 plus testOptions.unitTests.isReturnDefaultValues=true to bypass android.jar 'not mocked' stubs for Log/JSONObject. 35 unit tests green incl. 13 new DiskCaseStoreTest cases (bootstrap, merge/reconcile semantics, mutex ordering).
Description
No description provided
Languages
Rust
74%
Kotlin
12.7%
HTML
4.9%
Python
4.1%
Shell
3.8%
Other
0.5%