Repository navigation
Show synced context usage rings across harnesses - #264
Merged
Merged
Conversation
SinaKhalili
added a commit
that referenced
this pull request
Sep 8, 2026
… screen - AppModel decides the transport mode from the vault before any store dials: an explicit absent vault permits the legacy rooms, an approved membership with the current epoch key permits the encrypted generations, every other state blocks sync. Sign-out invalidates the config; the foreground re-checks pending approvals. Mode changes rebuild the stores. - MobileVault, Keychain-protected VaultPersistence, the per-chat sealed outbox (VaultChatDisk), the registry field codec, and the encrypted SessionStore/ChatRoomClient/WorkspaceStore paths (outcome-bearing apply, paused/resume, ack-retired batches, verified-baseline registry merge). - EncryptionView (Home → account menu): state, fingerprint, epoch, the genesis-bound comparison code, "Approve from another device", and "Use recovery key". - Desktop/CLI expose the vault fingerprint the phone pins during pairing. - Engine e2e: the transcript reset-frame assertion now includes the contextUsage field every update has carried since #264 (pre-existing upstream mismatch; failed identically on main). Verification: xcodebuild simulator build succeeds; ZeronTests 104 unit + 11 UI tests pass on an iPhone 17 Pro simulator; engine e2e suite passes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
SinaKhalili
added a commit
that referenced
this pull request
Sep 9, 2026
… screen - AppModel decides the transport mode from the vault before any store dials: an explicit absent vault permits the legacy rooms, an approved membership with the current epoch key permits the encrypted generations, every other state blocks sync. Sign-out invalidates the config; the foreground re-checks pending approvals. Mode changes rebuild the stores. - MobileVault, Keychain-protected VaultPersistence, the per-chat sealed outbox (VaultChatDisk), the registry field codec, and the encrypted SessionStore/ChatRoomClient/WorkspaceStore paths (outcome-bearing apply, paused/resume, ack-retired batches, verified-baseline registry merge). - EncryptionView (Home → account menu): state, fingerprint, epoch, the genesis-bound comparison code, "Approve from another device", and "Use recovery key". - Desktop/CLI expose the vault fingerprint the phone pins during pairing. - Engine e2e: the transcript reset-frame assertion now includes the contextUsage field every update has carried since #264 (pre-existing upstream mismatch; failed identically on main). Verification: xcodebuild simulator build succeeds; ZeronTests 104 unit + 11 UI tests pass on an iPhone 17 Pro simulator; engine e2e suite passes. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Adds a context ring beneath the composer for every selected conversation, including remote and project-less chats. Hover shows measured tokens and remaining capacity; the ring turns amber at 75% and red at 90%. Unknown usage is distinct from measured zero, and an open hover card updates live.
The host normalizes context separately from billing totals and persists one atomic snapshot in the chat document. Existing document sync and transcript watches carry it to other devices, including context-only updates, reconnects, and document rebuilds. Rendering needs no polling or local CLI access.
Claude Code, Codex, OpenCode, and ACP harnesses supply measurements when their protocols report them. Cursor's pinned SDK only exposes billed per-turn totals, so it shows unavailable instead of a guessed percentage.
Validation:
git diff --checkpassed.Screenshots are from the native desktop connected to the viewing engine. A separate host replayed deterministic Claude protocol fixtures through the local relay; the displayed measurements are test data.
Measured usage, dark mode:
Near capacity, light mode:
Unavailable usage:
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.