Repository navigation
feat(local): Add session discovery and viewer controls - #1509
Open
MathurAditya724 wants to merge 27 commits into
Open
MathurAditya724 wants to merge 27 commits into
MathurAditya724 wants to merge 27 commits into
Conversation
Discover running and retained sessions through a separate browser capability and switch isolated feeds in local and hosted viewers. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Use the existing shadcn Command and Button components with a Radix popover, keep session paths in the menu, and constrain the workspace width. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Use full-width labeled buttons and separate closing a session from clearing events. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Give Change receiver a full button and retain accessible icon controls for clearing events and closing sessions. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Let Change fill the available space beside fixed-size Clear and Close icon buttons. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Move retention into validated sidebar settings and add tooltips to receiver actions. Preserve discovery across reloads and same-port daemon restarts. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Point human Local output at the hosted viewer with the actual loopback port. Accept plain receiver query links and consume them after pairing so reloads preserve the selected session without exposing capabilities or changing JSON output. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Offer Light, Dark, and System themes through the existing viewer theme provider. Persist the preference without reconnecting the receiver and cover the Settings flow with an integration regression. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Use a dismissible Add receiver modal with a shared connection form and tab-scoped history. Probe replacement streams before switching, preserve retained-session context, and guard cancelled or stale lifecycle actions. Keep Settings accessible on the landing and cover modal, history, replay, and session-state transitions with regressions. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Close old SSE and probe sockets explicitly after stopping each test server. This avoids Node 22 keep-alive delays exhausting the history test timeout on CI. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Separate retained envelopes from the editable limit and preserve visible capacity in read-only viewers. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Merge main after PR #1503, reuse the CLI brand asset, simplify receiver copy, and make event and trace inspection usable on narrow screens. Use the shared Settings dialog from mobile receiver actions and cover focus handoff, retention bounds, and live system-theme changes. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Clear a failed landing attempt when its endpoint changes. Preserve the disconnected feed error while a replacement is edited in the modal. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
MathurAditya724
marked this pull request as ready for review
October 16, 2026 01:05
Freeze closed sessions, replay finite archives, notify every reader on reset and close, and provide explicit disconnection without deleting capture data. Keep the workspace stable during clears and guard stale deliveries. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Use the existing React Hook Form and Valibot form on trusted hosted Local origins. Permit only retention updates, preserve session capabilities and origin checks, and reject values that would discard retained envelopes. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Evict the least recently used receiver when adding another and trim existing oversized history on load and save. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Gate Settings on the known closed session instead of transient SSE connection status. Cover replay connection, open and completion in a regression test. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Offer an enabled reconnect action after failed clears, including clears during a pending reconnect. Reuse startup URL validation so ignored links cannot reconnect a disconnected tab to a saved receiver. Co-Authored-By: GPT-6 Codex <noreply@openai.com>
Preserve session discovery and hosted retention controls alongside upstream promise-handling and envelope-ID fixes. Refs #1509 Co-Authored-By: GPT-6 (Codex) <noreply@openai.com>
Reject foreign daemon authorities and finish CLI tails after retained replay. Preserve final viewer events and explicit reconnections, and validate streamed spans with segment names and typed HTTP metadata. Refs #1509 Co-Authored-By: GPT-6 (Codex) <noreply@openai.com>
Exercise a delayed real POST and wait for submission completion. Assert retained data after the receiver commits the new limit. Refs #1509 Co-Authored-By: GPT-6 (Codex) <noreply@openai.com>
Separate tab-only clearing from confirmed receiver deletion. Show capture lifecycle and scope, and provide event and span inspectors with resizable panes. Add explicit view filters, diagnostics, onboarding, and lifecycle and accessibility regressions. Co-Authored-By: GPT-6 (Codex) <noreply@openai.com>
Seed retained envelopes with bounded HTTP concurrency and query only the settings dialog. Keep real replay and mutation coverage without starving CI request deadlines. Co-Authored-By: GPT-6 (Codex) <noreply@openai.com>
Restore this tab's receiver choice, block reload during deletion, and preserve trace filters. Ignore stale span selections on fallback traces and cover each transition with regressions. Co-Authored-By: GPT-6 (Codex) <noreply@openai.com>
This branch was successfully deployed
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.
Connect Local to a daemon's plain
http://127.0.0.1:<port>/streamaddress to discover capturing and saved sessions. The searchable picker keeps feeds isolated, refreshes as runs start or expire, and restores the selected capture after reload. Human-readable Local commands print a hosted viewer link using the actual bound port; JSON output stays unchanged.The workspace explains capture state and the scope of each action:
sentry local run --session web --open -- <your dev command>example, with connecting to an existing receiver as a secondary flow./liveand/sdksroutes remain compatible.Discovery uses a separate capability restricted to loopback and trusted hosted Local origins. Scoped retention updates require the session stream capability; discovery grants neither ingestion nor CLI control. Hosted viewers can update validated retention and clear their own view, but cannot delete receiver data or stop captures. Remote HTTPS streams stay read-only. Older receivers can connect without discovery; upgrading older daemons requires a restart, which clears their in-memory telemetry. This PR has not been deployed to production.
The span-v2 handling from Spotlight #1372 is adapted to Toolkit's viewer model, including supported-container validation, typed HTTP attributes, and late segment naming. Raw payloads remain available.
Validation: 278 viewer tests and all 27 real Local CLI process E2E tests pass. Root typecheck and lint pass. Known unrelated local failures are musl installer detection, the DerivedData scan timeout, and an existing issue-link response-cache race under coverage (11,399 CLI unit tests pass). The cache failure also reproduces on the pre-UI commit; its 63-test file passes without coverage. These local gate exceptions were explicitly approved; the cache implementation is unchanged. Regressions cover permission boundaries, confirmed deletion/cancellation, finite replay, frozen expiry, receiver switching, independent filters, span navigation/focus, resizing, and repeated parent refreshes. The Local workflow also runs npm/native process E2E on Linux, macOS, and Windows.