Skip to content

Move cab OBS source URLs to the stream dashboard - #635

Open
noahm wants to merge 3 commits into
partykitfrom
claude/obs-source-urls-cab-access-k9h05h
Open

Move cab OBS source URLs to the stream dashboard#635
noahm wants to merge 3 commits into
partykitfrom
claude/obs-source-urls-cab-access-k9h05h

Conversation

@noahm

@noahm noahm commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Grabbing several OBS source URLs in a row meant re-opening the same three levels of submenu for every one of them. This moves them all onto the stream dashboard, where they can be scanned and copied from a list.

Cab sidebar

The menu on each cab is now two items: OBS Sources › dashboard and Remove Cab. The submenu tree is gone; the link goes straight to that cab's sources.

the cab menu

Dashboard

A collapsible Cab OBS Sources section, closed by default, between the text sources and the CSS editor:

  • a Cab dropdown listing every cab
  • a Players count (default 2, max 8), replacing the old dead-end (edit URL for players beyond 1) hint
  • one row per source — icon, label, the full URL, and a copy button. Cards / Title / Current Phase / All Players, then Name and Score / Name / Score per player. Rows are real anchors, so middle-click opens a source directly.

the source list

Linkable selections

The section keeps its whole state in the url — ?cab=<id> both expands it and names the cab — so a particular cab's sources can be bookmarked or shared, and each cab's menu links at its own id. Switching cabs and collapsing use replace rather than push, so the back button leaves for the main view instead of walking back through the churn. A link to a cab removed since still opens the section, on the first cab. Arriving with the section open scrolls it into view, since any number of text sources can sit above it.

Notes

  • Cab source paths are now written relative to the event route (../cab/…), matching the global label paths, since the dashboard sits one level deeper than the sidebar did.
  • Below ~900px the url preview is hidden and the label takes the width. That's the measured point where a real 21-char room name stops fitting: past it every row reads an identical …/cab/default/sourc…, cut off right before the part that tells sources apart. This page is often docked narrow inside OBS.
  • docs/obs.md walked through the removed menu, so that passage is rewritten and both screenshots refreshed.

Testing

yarn validate is clean. Driven against a local dev server + partykit backend with Playwright:

  • the menu link lands on /e/<room>/dash?cab=<id> with the section expanded on that cab, and its source URLs point at that cab
  • switching cabs in the select rewrites the url and re-points every row; collapsing drops the param, expanding restores it
  • a cold load of a permalink in a fresh tab opens on the right cab; an unknown id falls back to the first cab, still expanded
  • one back press from the dashboard returns to the main view
  • with 8 text sources pushing the section below the fold, arriving with ?cab= scrolls it fully into view; arriving without the param leaves the page at the top
  • a generated URL loads a real source page, and the copy button puts the absolute url on the clipboard with the expected toast
  • checked in light and dark theme, and at 380 / 520 / 700 / 900 / 901 / 1200px with no horizontal overflow

One thing I left alone: the cab <select> clips descenders slightly. That's a pre-existing global select { font-size: 16px !important } in app.css (an iOS auto-zoom guard) affecting every HTMLSelect in the app, so fixing it belongs in its own change.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HR7hcxtbUhcbeThy9JyVCL


Generated by Claude Code

claude added 3 commits August 22, 2026 23:03
Grabbing several source URLs in a row meant re-opening the same three
levels of submenu for each one. The cab menu now just links over to the
stream dashboard, which grew a collapsible "Cab OBS Sources" section
listing every source for a chosen cab with its URL and a copy button.

The player rows are driven by a count input rather than hardcoded to
player 1, so the old "(edit URL for players beyond 1)" hint is gone.

Cab source paths are now written relative to the event route, matching
the global label paths, since the dashboard sits one level deeper than
the cab sidebar did.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HR7hcxtbUhcbeThy9JyVCL
Below ~900px the url gets cut off before the part that distinguishes one
source from the next, so every row reads the same. Drop it there and let
the label take the width; the copy button is unaffected.
The dashboard's cab source section now keeps its whole state in the url:
`?cab=<id>` both expands the section and picks the cab it's showing, so a
particular cab's sources can be linked to or bookmarked directly. Each
cab's menu links straight at its own id.

Switching cabs and collapsing replace the current entry rather than push,
so the back button leaves for the main view instead of walking back
through the churn. An unknown id (a cab removed since the link was made)
still opens the section, on the first cab.

Arriving with the section open scrolls it into view, since any number of
text sources can be listed above it.
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ddr-tools Ready Ready Preview Aug 22, 2026 11:17pm

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.

2 participants