Skip to content

feat: show native probe capture and upload progress - #206

Merged
willwashburn merged 6 commits into
mainfrom
codex/sessions-experience
Sep 20, 2026
Merged

willwashburn merged 6 commits into
mainfrom
codex/sessions-experience

Conversation

@willwashburn

@willwashburn willwashburn commented Sep 20, 2026 •

Copy link
Copy Markdown
Member

Initial session capture could remain at “Preparing local session capture” without feedback, while trajectory discovery descended into generated directories and symlink cycles.

Report per-source file progress, captured sessions, uploaded/queued records and unknown backlog totals in the CLI and Cloud. Prune dependency/build trees, avoid repeating initial capture, and throttle background rescans. Capture failures display local capture progress instead of claiming an upload failure; legacy NULL discovery states count as captured sessions.

Progress callbacks support nested capture without holding a mutable borrow during the callback. Periodic heartbeats read cached credentials. Final upload heartbeats can renew idle tokens with a two-second request deadline and a nonblocking refresh lock. Background capture/upload/shutdown never waits for heartbeat I/O; setup and --once allow at most nine seconds for final progress and require a successful Cloud acknowledgment before reporting a connected probe. Successful capture does not send a delayed final scanning update.

Validation

  • Strict workspace/all-target Clippy and probe Clippy passed.
  • Native probe tests: 11 passed, including blocked-report completion/drop and legacy session counts.
  • Plugin library: 157 tests passed, including bounded renewal, lock contention, and atomic rotation.
  • Changed Rust files are formatted; the full workspace suite passed (342 tests; 2 ignored).
  • Earlier synthetic installer/device-auth/capture/upload/table/assistant-transcript readback passed against the local three-service stack.

The companion History Cloud and Cloud PRs accept the new progress phases. Existing installations need the rebuilt probe; no package release, deployment or merge was performed.

Companion PRs

Agent session: codex://threads/01a0bbe4-973f-7a81-928e-4ea6b005be98.


Note

Medium Risk
Touches local ingest traversal, thread-local capture observers, and auth refresh locking; probe behavior changes (60s rescan throttle, setup requires Cloud heartbeat ack) but progress paths are best-effort and bounded.

Overview
Adds end-to-end capture and upload progress for the native Session Recorder probe: CLI status lines and Cloud heartbeats carrying phase, per-source file counts, captured sessions, and upload queue stats—without exposing paths or session content.

ai-hist introduces a thread-local CaptureProgress observer via sync_local_at_with_progress, per-source milestones, and capture_files for file-level scanning progress. Trajectory discovery skips dependency/build dirs (node_modules, .git, target, etc.), does not follow symlinks, and only indexes regular .json files to avoid cycles and junk trees.

Probe splits capture from deliver_captured; setup/--once waits up to COMPLETION_TIMEOUT for a final Cloud ack. Background loops rescan local history at most every 60s and otherwise only drain uploads. progress::Monitor prints human-readable lines and POSTs progress to /v1/onboarding/heartbeat; capture failures surface as local capture paused, not upload errors.

RelayHistory cloud auth adds try_progress_access_token: bounded refresh with a non-blocking rotation lock so progress I/O never blocks capture or contends with full token refresh.

Reviewed by Cursor Bugbot for commit dafe88d. Bugbot is set up for automated code reviews on this repo. Configure here.

@coderabbitai

coderabbitai Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 40 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: ee1c94b5-467d-4bf5-8816-7ce181cfbde7

📥 Commits

Reviewing files that changed from the base of the PR and between 535c52d and dafe88d.

📒 Files selected for processing (5)
  • crates/ai-hist/src/ingest.rs
  • plugins/relayhistory/rust/src/cloud.rs
  • plugins/relayhistory/rust/src/probe/collector.rs
  • plugins/relayhistory/rust/src/probe/main.rs
  • plugins/relayhistory/rust/src/probe/progress.rs

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-20T03:29:54.882670Z e728c2d PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

chatgpt-codex-connector[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

cursor[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

cursor[bot]

This comment was marked as resolved.

@willwashburn
willwashburn merged commit 4370711 into main Sep 20, 2026
12 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