commit 834af4b874f3995d9bd3222485c703b12d43afd5
parent ad6d06f930714a9d378239afd2434be5ea568f61
Author: triesap <tyson@radroots.org>
Date: Mon, 25 May 2026 22:27:56 +0000
sync: preserve empty sync transport requests
- let real sync transports receive empty requests with trigger and conflict context
- keep relay-only synthesis scoped to the unavailable fallback transport
- restore foreground resume and review-required manual refresh coverage
- validate with app check and full app cargo test
Diffstat:
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/crates/launchers/desktop/src/runtime.rs b/crates/launchers/desktop/src/runtime.rs
@@ -134,6 +134,10 @@ impl AppSyncTransport for UnavailableAppSyncTransport {
SYNC_TRANSPORT_UNAVAILABLE_MESSAGE,
))
}
+
+ fn supports_empty_sync_request(&self) -> bool {
+ false
+ }
}
fn default_sync_transport() -> Box<dyn AppSyncTransport + Send> {
@@ -3345,7 +3349,10 @@ impl DesktopAppRuntimeState {
request: AppSyncRequest,
started_at: &str,
) -> Result<AppSyncResult, AppSyncTransportError> {
- if request.pending_operations.is_empty() && self.has_configured_relay_ingest() {
+ if request.pending_operations.is_empty()
+ && self.has_configured_relay_ingest()
+ && !self.sync_transport.supports_empty_sync_request()
+ {
return Ok(AppSyncResult {
run_status: AppSyncRunStatus::Succeeded,
checkpoint: SyncCheckpointStatus::current(
diff --git a/crates/shared/sync/src/lib.rs b/crates/shared/sync/src/lib.rs
@@ -480,6 +480,10 @@ impl AppSyncTransportError {
pub trait AppSyncTransport {
fn sync(&mut self, request: AppSyncRequest) -> Result<AppSyncResult, AppSyncTransportError>;
+
+ fn supports_empty_sync_request(&self) -> bool {
+ true
+ }
}
#[derive(Clone, Debug)]