Tighten web surfaces and clean handoff

This commit is contained in:
jan
2026-04-20 21:12:52 +02:00
parent ed1e4b49ab
commit d2ca1a2aef
13 changed files with 751 additions and 390 deletions

View File

@@ -277,6 +277,7 @@ fn handle_websocket(
let mut sequence = 1u64;
let mut last_event_millis = None::<u64>;
let mut last_event_signatures = Vec::<(Option<String>, String)>::new();
let mut last_streamed_preview = None::<crate::dto::ApiPreviewSnapshot>;
loop {
let snapshot = service.snapshot();
send_stream_message(
@@ -286,13 +287,22 @@ fn handle_websocket(
ApiStreamMessage::Snapshot(ApiStateSnapshot::from_snapshot(&snapshot)),
)?;
sequence += 1;
send_stream_message(
&mut stream,
sequence,
snapshot.generated_at_millis,
ApiStreamMessage::Preview(crate::dto::ApiPreviewSnapshot::from_snapshot(&snapshot)),
)?;
sequence += 1;
let preview_payload = crate::dto::ApiPreviewSnapshot::from_snapshot(&snapshot);
if last_streamed_preview
.as_ref()
.map(|previous| previous != &preview_payload)
.unwrap_or(true)
{
send_stream_message(
&mut stream,
sequence,
snapshot.generated_at_millis,
ApiStreamMessage::Preview(preview_payload.clone()),
)?;
sequence += 1;
last_streamed_preview = Some(preview_payload);
}
let mut new_events = snapshot
.recent_events