Repository navigation
Dashboard: one realtime socket, revision-based invalidation - #402
Merged
Merged
Conversation
- Realtime data layer - Keep one shell-owned WebSocket per channel across same-channel navigation. - Centralize realtime query invalidation and reconcile channel data after reconnect. - Polling and worker relays - Disable connected-state polling for chat voting, votekick, ads, and BELABOX while preserving offline fallback. - Relay chat_voting, belabox, and votekick live-state hints to panel sockets. - Refresh chat voting when a shared votekick ballot opens or closes. - #387 regression coverage - Cover socket reuse, query invalidation, fallback polling, worker relays, shared-ballot invalidation, frozen event snapshots, and overlay selection safety. - Preserve module query ordering and stable layouts.
Realtime query refresh - Throttle active query keys to one leading and one trailing read per second. - Reconcile channel queries on every socket connection and keep fallback polling active only offline. Regression coverage - Cover saved chat-voting defaults, cached first-connect reconciliation, and sustained fast hints. - Preserve event snapshots and editor drafts through refreshes; references #387.
Realtime refresh behavior - Avoid settings refreshes for module event hints while bounding repeated query refreshes. - Keep chat-voting defaults current after settings writes on a connected socket. Regression coverage - Cover sustained realtime hints and one-socket navigation across dashboard views for #387.
- Realtime lifecycle - Gate the channel socket on authentication, channel selection, and sign-out state. - Dispose disabled sockets immediately and cancel pending reconnect timers. - Overlay editor - Initialize from fresh overlay and variable data while module state loads independently. - Keep the fixed loading frame until module state resolves. - Regression coverage - Verify 401 reconnect cancellation and guarded logout with a dirty editor draft. - Cover continuous variable updates during a pending module read. (#387)
- Realtime protocol (#387) - Add panel-only bounded `{ part }` hints with strict payload validation and throttled query invalidation. - Keep module overlay payloads on overlay sockets. - Module state transitions - Relay chat voting, BELABOX, and votekick changes after commits, including BELABOX failures and terminal ballot transitions. - Publish hints independently of overlay payload size limits. - Regression coverage - Cover relay routing, secret-free hints, failure transitions, and oversized chat voting closes. - Verify single-socket navigation across 10 repeated e2e runs.
- #387 Durable revisions: add per-resource D1 triggers and Durable Object counters with bounded, data-free panel hints. - #387 Notifier coverage: fan out committed writes from channel, module, auth, EventSub, platform, alarm, and maintenance paths. - #387 Dashboard: share one channel socket, reconcile revisions on hints, connect, and focus, and poll only while offline. - #387 Regressions: cover query mapping, channel isolation, failure commits, secret-free hints, fallback polling, and navigation without socket churn.
- Chat voting realtime coverage (#387) - Guard routes, chat commands, alarms, ballot writes, and word approvals with committed-resource invalidation. - Keep connected panel refreshes driven by server-confirmed state with polling disabled. - Test compatibility (#387) - Align fixtures and saved-duration coverage with the chat voting kind model and 0046/0047 schema.
- #387 Add commit-coupled resource revisions, per-channel outbox delivery, and write dependency coverage across D1 and Durable Object commits. - #387 Reconcile query revisions on socket connect, hints, and focus; keep refresh polling as an offline fallback. - #387 Recheck panel authorization at send and handshake time, and await socket closure after membership or session revocation. - #387 Add route and alarm registry guards, migration and lost-hint regressions, two-client coverage, and repeated navigation E2E checks.
- Authorization: #387 version queued revocations and recheck socket membership and sessions before close. - Delivery: #387 retry failed socket closures and reconcile every affected committed channel. - Coverage: #387 guard runtime alarm handlers and add regressions for cross-client freshness and route dependencies.
Issue #387 - Publish all queued channel revisions after authenticated channel commits, with unauthenticated fanout guarded. - Retry revision reads and affected query refreshes with capped backoff; cancel pending retries on socket disposal and auth renewal. - Preserve per-key trailing refresh ordering and cover cross-channel delivery, retry recovery, and teardown.
- Schema: place the lease migration after main’s 0050 and update the health sentinel. - Regression guard: reject duplicate migration numbers. - #387: preserve migration ordering for bounded revision delivery.
Implements #387. - Drain races - Reconcile local DO commits while D1 leases are active. - Keep newer D1 revisions queued with compare-and-delete cleanup. - Background commits - Share an outer-finally drain across waitUntil tasks and DO alarms. - Regression coverage - Exercise both lease interleavings and stream readback failure after commit. - Guard the source registry against unwrapped waitUntil paths.
- Mark local delivery successful only after revision reads and reconciliation complete. - Recover local DO revisions after a claimed delivery fails. - Add the D1/DO interleaving regression test (Refs #387).
- Keep panel GETs read-only across core and module routes. - Back off failed BELABOX samples and add an explicit manager schedule refresh. - Cover GET revision invariants and bounded realtime requests for #387.
- Runtime - Add passive ballot snapshot and availability RPCs for panel reads. - Regression coverage (#387) - Exercise registered panel GETs against expired chat-voting and votekick ballots; assert unchanged D1/DO revision vectors and zero hints.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



One realtime socket per channel and durable, revision-based panel invalidation for every write (epic #389).
Closes #387