Problem
Operators currently build or copy a run deep link from the browser address bar. It is easy to share the wrong Primary run after switching between a synthetic demo, a real call, and a comparison.
Goal
Provide an explicit copy action that preserves the selected Primary and optional Compare run IDs.
Suggested scope
- Add a
Copy link control near the run selector or summary.
- Build the URL from the current
run_id and optional compare_run_id state.
- Preserve the current path and omit empty query parameters.
- Show short accessible success/failure feedback without blocking the page.
- Do not copy credentials, audio-session tokens, API base internals, or unrelated form state.
Likely files:
web/src/App.tsx
web/src/styles.css
Acceptance criteria
- Primary-only links reopen the same run.
- Primary+Compare links reopen both selections.
- Empty Compare is omitted.
- The control is keyboard accessible and has a useful accessible name.
- Clipboard failure produces a visible safe message.
npm --prefix web run build passes.
Out of scope
- URL shorteners.
- Authentication or public sharing of protected recordings.
- Persisting UI state beyond the two run IDs.
This is a bounded good first issue with an operator-visible result.
Problem
Operators currently build or copy a run deep link from the browser address bar. It is easy to share the wrong Primary run after switching between a synthetic demo, a real call, and a comparison.
Goal
Provide an explicit copy action that preserves the selected Primary and optional Compare run IDs.
Suggested scope
Copy linkcontrol near the run selector or summary.run_idand optionalcompare_run_idstate.Likely files:
web/src/App.tsxweb/src/styles.cssAcceptance criteria
npm --prefix web run buildpasses.Out of scope
This is a bounded good first issue with an operator-visible result.