Repository navigation
Wake Android receipt reads over bounded WebSocket - #365
Merged
Merged
Conversation
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.
Android waited between receipt GETs after submitting a request. Add an advertised authenticated WebSocket that wakes the exact pending receipt immediately, multiplexes up to 16 durable IDs and recovers already-committed results after reconnect. Encrypted payload retrieval still requires fresh membership, signature, original route/request binding and journal settlement; old relays retain HTTP polling and no command is automatically reposted.
The relay retains connection and shared poll admission across upgrades, bounds frames, writes and socket lifetime, rechecks revocation, and uses PostgreSQL notifications across workers. Normal socket rotation avoids the network-failure cooldown. Opt-in timing records separate socket opening, successful readiness and fallback without request data. Also fix the legacy SQLite fixture to remove both current indexes before reconstructing its older schema.
Validation: 1,242 Android JVM cases and release lint; relay unit/codec/vector and 31 public-workspace cases; three real WebSocket contracts on disposable PostgreSQL (including independent workers, reconnect, revocation and connection admission); strict Clippy, Rust formatting and source/privacy checks. Production rollout and signed Android delivery are tracked separately in zerus-6pkc.22.
Preserve the existing integration checks while incorporating main: keep the Tasks guide within its context budget, format the replica crates, group the internal message actor/time parameters, and remove redundant test clones/nested formatting. Task wire data, dispatch and replay rules stay compatible. Reconcile desktop fixtures with the approved removal of the central Task Board; retain durable speech-save readiness. Fix two inherited inspector regressions: reapply its owned opaque canvas after reparenting and coalesce detail refreshes without hiding saved comments or starving slow same-selection replies. Deterministic gated tests preserve exact-once comments, request IDs and rejection of old-selection responses.
Paired-emulator acceptance against the deployed relay/proxy: three opens and eight passive refreshes, two socket openings, 57 readiness notifications and no fallback or receipt-poll sleeps. App composition clocks measured fresh checked state in 2.37–2.58 s for the three opens; this is a bounded sample, not a latency SLA. Public signed APK delivery remains separate.