edcee399b4f39d6f063fe2278c613a3e3730b36e
Tap on a case in the list (or Tile continue-case) now opens a new CaseDetailScreen showing date + oneliner + record EdgeButton. Only hitting record enters RecordingScreen, which is itself trimmed to just a live mm:ss counter and a stop EdgeButton. Swipe-right on the recording screen discards the in-flight recording (no confirmation). "New case" button still bypasses the detail step. State machine: Recording now counts elapsedSeconds (up) instead of secondsLeft. New OnStopTap and OnDiscardTap events, new reducer transitions. Safety cap at 300 s. ViewModel: startRecordingFlow split into a cancellable ticker job plus a separate finalizeAndUpload run in applicationScope so the upload survives the pop that follows a clean stop. AtomicBoolean finalizationStarted guards against double-finalization between the stop, discard, and auto-stop paths. Display: FLAG_KEEP_SCREEN_ON on the recording screen via view.keepScreenOn. DisposableEffect.onDispose doubles as the discard trigger for swipe-right / back / host destruction; discardIfStillRecording() is a no-op after a clean stop. CaseDetailScreen lays out three vertical thirds: date/time at top (Heute/Gestern/dd.MM.yy + HH:mm:ss), oneliner in the middle, EdgeButton at the bottom. formatTime extracted to TimeFormat.kt so list and detail never drift apart.
Description
No description provided
Languages
Rust
74%
Kotlin
12.7%
HTML
4.9%
Python
4.1%
Shell
3.8%
Other
0.5%