# RCWeb Cast

The **RCWeb Cast** app (`app/cast`) launches the main RCWeb viewer (`app/v`) on a Google Cast display and then hands the phone to the normal viewer controller (`app/v-c`) in the same room.

## What it does

- Opens the Google Cast device picker when the current host has a Custom Receiver app ID in `settings.json`.
- Sends the selected receiver a room-specific `/v/?r=<room>` viewer URL.
- Redirects the phone to `/v-c/?r=<room>` after the viewer launch is sent.
- Provides a browser Presentation API fallback for browsers that can present a URL directly to a remote display.

## Receiver setup

Google Cast cannot use the Default Media Receiver for RCWeb because RCWeb needs to display an arbitrary web application, not just media. Register a Custom Receiver in the Google Cast SDK Developer Console and point it at:

`https://<rcweb-lan-ip>:8080/cast/receiver.html`

Add the Custom Receiver app ID to `settings.json` next to the matching receiver URL. The Cast app loads that file and uses the app ID automatically when the current host matches a configured receiver URL. The app ID is not displayed on the web page. The Chromecast must be able to reach the RCWeb server by LAN IP; `localhost` only works for the browser on the phone or desktop, not for the Cast device.

The sender page is a separate constraint. Google Cast Web Sender requires a Cast-capable browser on a secure origin, so an `http://<lan-ip>:8080/cast/` page on a phone will usually report that Google Cast is unavailable before it can show devices. Use HTTPS for the sender page, or use a native Android/iOS sender if RCWeb is only available over HTTP.
