Harden web transcript streaming and brain responsiveness#896
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
📝 WalkthroughWalkthroughThe PR converts credential, GitHub, transcript, compression, synchronization, and chat UI operations to bounded asynchronous flows. It adds cancellation propagation, byte-based pagination and caching, hydration barriers, reconnect-safe GitHub refreshes, retryable history loading, and iOS cursor-mode support. ChangesAsync storage and GitHub services
Async chat history and synchronization
Renderer and iOS transcript flows
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related PRs
Suggested labels: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
c908b6d to
f5d532b
Compare
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
apps/ade-cli/src/services/credentials/credentialStore.ts (1)
551-625: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick winClear the negative cache when the sync writer creates the keychain item.
readOrCreateMacKeychainMaterial()creates the Mac keychain secret synchronously and updatescachedDefaultOsBoundKeyMaterial, but it never resetslastMissingDefaultOsBoundKeyMaterialAt. A concurrent async read that is still in the 30s negative-cache window can still returnnull, derive the machine-key-only key, and fail to decrypt the OS-bound envelope. Reset the negative-cache timestamp from the sync path, too.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@apps/ade-cli/src/services/credentials/credentialStore.ts` around lines 551 - 625, Update readOrCreateMacKeychainMaterial so that whenever it successfully creates or obtains the keychain material and updates cachedDefaultOsBoundKeyMaterial, it also resets lastMissingDefaultOsBoundKeyMaterialAt to 0. Keep the async read behavior unchanged.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/ios/ADE/Views/Work/WorkSessionDestinationView.swift`:
- Line 309: Update the cache-hit restoration logic around transcriptCursorKind
so byte-mode restores transcriptEntriesByIndex from the cached fallbackEntries,
not only the presentation list. Apply this consistently at the related cursor
and cache restoration sites, preserving the cached cursor while ensuring
subsequent tail refreshes merge with the full restored scrollback.
---
Outside diff comments:
In `@apps/ade-cli/src/services/credentials/credentialStore.ts`:
- Around line 551-625: Update readOrCreateMacKeychainMaterial so that whenever
it successfully creates or obtains the keychain material and updates
cachedDefaultOsBoundKeyMaterial, it also resets
lastMissingDefaultOsBoundKeyMaterialAt to 0. Keep the async read behavior
unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: e1a32fd3-8588-4cba-acd3-24851632d001
⛔ Files ignored due to path filters (5)
docs/ARCHITECTURE.mdis excluded by!docs/**docs/features/sync-and-multi-device/README.mdis excluded by!docs/**docs/features/sync-and-multi-device/ios-companion.mdis excluded by!docs/**docs/features/sync-and-multi-device/remote-commands.mdis excluded by!docs/**docs/features/web-client/README.mdis excluded by!docs/**
📒 Files selected for processing (42)
.agents/skills/ade-perf-work/SKILL.mdapps/ade-cli/src/bootstrap.tsapps/ade-cli/src/headlessLinearServices.test.tsapps/ade-cli/src/headlessLinearServices.tsapps/ade-cli/src/multiProjectRpcServer.tsapps/ade-cli/src/services/credentials/credentialStore.test.tsapps/ade-cli/src/services/credentials/credentialStore.tsapps/ade-cli/src/services/personalChats/personalChatScope.test.tsapps/ade-cli/src/services/personalChats/personalChatScope.tsapps/ade-cli/src/services/sync/rosterBuilder.test.tsapps/ade-cli/src/services/sync/rosterBuilder.tsapps/ade-cli/src/services/sync/syncHostService.test.tsapps/ade-cli/src/services/sync/syncHostService.tsapps/ade-cli/src/services/sync/syncRemoteCommandService.test.tsapps/ade-cli/src/services/sync/syncRemoteCommandService.tsapps/desktop/src/main/services/adeActions/registry.tsapps/desktop/src/main/services/ai/tools/orchestrationTools.test.tsapps/desktop/src/main/services/chat/agentChatService.test.tsapps/desktop/src/main/services/chat/agentChatService.tsapps/desktop/src/main/services/chat/chatTranscriptHistoryPager.test.tsapps/desktop/src/main/services/chat/chatTranscriptHistoryPager.tsapps/desktop/src/main/services/ipc/registerIpc.tsapps/desktop/src/main/services/pty/ptyService.test.tsapps/desktop/src/main/services/pty/ptyService.tsapps/desktop/src/main/services/storage/historyCompression.test.tsapps/desktop/src/main/services/storage/historyCompression.tsapps/desktop/src/renderer/browserMock.tsapps/desktop/src/renderer/components/app/AppShell.aiStatus.test.tsxapps/desktop/src/renderer/components/app/AppShell.tsxapps/desktop/src/renderer/components/chat/AgentChatMessageList.test.tsxapps/desktop/src/renderer/components/chat/AgentChatMessageList.tsxapps/desktop/src/renderer/components/chat/AgentChatPane.test.tsxapps/desktop/src/renderer/components/chat/AgentChatPane.tsxapps/desktop/src/renderer/index.cssapps/desktop/src/renderer/webclient/adapter/__tests__/adapter.test.tsapps/desktop/src/renderer/webclient/adapter/agentChat.tsapps/desktop/src/renderer/webclient/adapter/misc.tsapps/desktop/src/renderer/webclient/adapter/personalChats.tsapps/desktop/src/shared/types/personalChats.tsapps/ios/ADE/Services/SyncService.swiftapps/ios/ADE/Views/Work/WorkSessionDestinationView.swiftapps/ios/ADETests/ADETests.swift
Summary by CodeRabbit
New Features
Bug Fixes
Greptile Summary
This PR adds bounded transcript paging and compressed transcript support across the chat stack. The main changes are:
Confidence Score: 5/5
This PR appears safe to merge based on the reviewed changed paths.
The changes are broad but include focused tests for race handling, pagination, compression, and UI behavior. No blocking or non-blocking issues were identified.
No files require special attention.
What T-Rex did
Important Files Changed
Sequence Diagram
Reviews (1): Last reviewed commit: "Fix transcript cache and keychain races" | Re-trigger Greptile