Skip to content

Preserve timer metadata across stop sync - #10

Merged
Tricked-dev merged 3 commits into
Tricked-dev:masterfrom
AKolenda:codex/fix-timer-sync-v0.2.3
Aug 25, 2026
Merged

Preserve timer metadata across stop sync#10
Tricked-dev merged 3 commits into
Tricked-dev:masterfrom
AKolenda:codex/fix-timer-sync-v0.2.3

Conversation

@AKolenda

Copy link
Copy Markdown
Contributor

Summary

Preserve the description, project, task, billable state, and tags when a running timer is stopped immediately after editing. Keep unresolved metadata authoritative when STOP reaches the server but UPDATE fails, and prevent child date/time/split pickers from dismissing the overnight-entry editor.

Scope and acceptance criteria

  • Commit visible running-entry metadata and UPDATE + STOP outbox operations in one Room transaction.
  • Preserve local metadata through a failed UPDATE, successful STOP, and subsequent refresh.
  • Retry metadata against the authoritative stopped interval without restarting the timer.
  • Keep the entry sheet open while overnight date/time/split child pickers are active.
  • Retain the v0.2.3 split project/task chooser from upstream master.

Validation

Commands and focused tests actually run:

.\gradlew.bat --no-daemon testDebugUnitTest --tests "dev.tricked.solidverdant.data.repository.TimeEntryRepositoryWriteTest" --tests "dev.tricked.solidverdant.sync.SyncWorkerTest" --tests "dev.tricked.solidverdant.ui.tracking.TrackingViewModelMutationTest" --tests "dev.tricked.solidverdant.ui.tracking.TimeEntryFormSheetTest" -> BUILD SUCCESSFUL
.\gradlew.bat --no-daemon spotlessCheck testDebugUnitTest lintDebug assembleDebug assembleDebugAndroidTest -> BUILD SUCCESSFUL (638 tests)
.\gradlew.bat --no-daemon assembleBenchmark -> BUILD SUCCESSFUL; version 0.2.3-bench / versionCode 203

Verification status by scope:

  • Host/unit/lint: Green
  • Screenshot/UI: Green for focused Robolectric Compose regression; no baseline changes
  • Device/E2E: Not run locally; GitHub Actions emulator sharding remains authoritative
  • Backend/server evidence: Focused fake-remote worker test covers rejected UPDATE, successful STOP, and pull refresh

Evidence and remaining gaps

The first full-suite attempt encountered a timeout in an unrelated tile-service test. That test passed in isolation, and the complete host gate then passed on rerun. No physical-device or live-backend workflow was run.

Safety and working tree

  • No tokens, work data, or machine-specific paths are included.
  • Unrelated changes were preserved.
  • No generated APKs or build outputs are committed.

@AKolenda

Copy link
Copy Markdown
Contributor Author

CI follow-up after the initial Linux coroutine timeouts:

  • Commit d9345a0 gives the four successful-stop tests explicit completed suspend answers instead of relying on MockK's platform-sensitive relaxed default.
  • All three cold Linux host gates now pass on the PR (formatting, 638 unit tests, lint, debug APK, and Android-test APK).
  • API-29 shard 0 passed instrumentation completely.
  • Shards 1 and 2 remain red only on existing emulator tests: SearchFilterE2eTest, TrackingLifecycleE2eTest, SyncDetailsNavigationE2eTest, and WeekCalendarViewTest.
  • Tagged base v0.2.3 has the same SearchFilterE2eTest and TrackingLifecycleE2eTest failures in its latest master run: https://github.com/Tricked-dev/SolidVerdant/actions/runs/32560692108
  • Current PR run: https://github.com/Tricked-dev/SolidVerdant/actions/runs/32792674337

The timer/sync regression tests and all host build gates are green; the remaining red checks are base-branch instrumentation instability rather than failures introduced by this patch.

@Tricked-dev
Tricked-dev merged commit 94b912d into Tricked-dev:master Aug 25, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants