Skip to content

Wake Android receipt reads over bounded WebSocket - #365

Merged
ufna merged 7 commits into
mainfrom
fix/mobile-websocket-20261027
Oct 27, 2026
Merged

ufna merged 7 commits into
mainfrom
fix/mobile-websocket-20261027

Conversation

@ufna

@ufna ufna commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

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.

@ufna
ufna merged commit 3e85234 into main Oct 27, 2026
27 of 28 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.

1 participant