Repository navigation
feat(snapshot): add conditional replies and adaptive shell polling - #108
Merged
Merged
Conversation
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 22376ccd0c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…n any failure - Clear the stored panel version on any failed reply, status 0 included, so a reconnect asks for a full reply. - Static transport: when a request carrying X-Acon-Known fails in transport (e.g. an Access CORS policy refusing the header in preflight), retry it plain and stop sending the header to that node for the page. - Remove the unread serverSampledAt state. - README: Access CORS must allow X-Acon-Known for conditional replies. - CHANGELOG: note the Space cursor-only reply passthrough for 0.1.8 shells.
- Inbox and Space treat an ok:false reply as a failure even when it also says changed:false, so the failure banner and stale actors still show. - Each inbox round re-renders an open item peek, so a snooze that expires without a data change updates the peek too. - Docs no longer claim a separately retained server sample time; Room motion uses the client observation clock.
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.
Repeated snapshots currently transfer full bodies and use fixed polling intervals. This implements delivery 2 of #105: cached values carry an
X-Acon-Versionhash, and a matching optionalX-Acon-Knownrequest header gets{changed:false}. Conditional control stays outside plugin input and the canonical cache key; every body field, including a producer-owned known, remains unchanged. Producer cursor/changed:false replies and errors retain precedence. H2 forwards the header, configured-origin CORS preflight allows it, and older nodes/clients continue using full replies.Panel, Space and per-tool inbox polling adapt to
max(pollMs, 3 * last duration), capped at 60 seconds. Inbox retains its previous 5-second minimum. Space preserves polling cadence across one-second timer jitter instead of drifting into skipped polls. Hidden tabs start no panel/Space polls; visibility resumes one immediate or deferred busy follow-up. Existing heartbeat and PiP behavior remain. Inbox applies each tool as it finishes and rechecks signature-guarded views after each round so snooze expiry updates Inbox, Mini/PiP and pet pose without new provider data.Room motion uses client observation time. Repeated cached timestamps or later sample jumps therefore cannot cause false source gaps; the shell does not keep a separate server sample time. Routine SWR reuse stays healthy, while actual failed replies retain existing failure handling. Both transports share a header reader, and producer body fields are preserved.
Synthetic body-rewriting probes request the full source using header controls and remove metadata that no longer describes their body. A separate SWR-grace case deliberately preserves stale/sample headers and checks healthy actors, no failure banner and unchanged writes.
Validation of the tree committed as
b38e393406a31ca3cf0fb74ec59c9e0b802f9401:--space-motion-only: 1 capture, 0 findings; actual transform transition present (0.8 seconds), 10-second message fade and zero unchanged writes.--space-views-only: 80 captures, 0 findings. Team/Flow/Board each pass 16 rows. The 3D idle window remains at render count 102 before/after with no pending frames; SWR case has no failure banner, no stale actors and zero unchanged writes. Representative motion/3D screenshots inspected.Related to #105. Push transport and producer changes remain separate.
Final round (owner escalated to Claude): transport failures clear stored versions, the static transport retries without
X-Acon-Knownafter a refused preflight and stops sending it to that node, producerok:falsereplies keep failure handling even withchanged:false, open item peeks refresh each inbox round, and docs drop the separate server sample-time claim. Local macOS Chromium ui-check at this head: 419 captures, 0 findings.