Default live publishers to relay passthrough
Some checks are pending
ci-gates / checks (push) Waiting to run
deploy-cloudflare / checks (push) Waiting to run
deploy-cloudflare / deploy (push) Blocked by required conditions

This commit is contained in:
Conrad Kramer 2026-06-10 02:54:04 -07:00
parent 168e9928a5
commit b49dcff27d
No known key found for this signature in database
2 changed files with 49 additions and 10 deletions

View file

@ -457,8 +457,8 @@ struct WsSubscribeArgs {
#[derive(Parser, Debug)]
struct WtPublishArgs {
/// Relay URL (WebTransport) to connect to.
/// Default points at moq.dev's public relay.
#[arg(long, default_value = "https://cdn.moq.dev/anon")]
/// Default points at every.channel's public relay.
#[arg(long, default_value = "https://relay.every.channel/anon")]
url: String,
/// Broadcast name to publish.
///
@ -483,7 +483,7 @@ struct WtPublishArgs {
movflags: String,
/// Transmit fMP4 fragments directly (passthrough mode).
/// When false, the importer may reframe into CMAF fragments.
#[arg(long, default_value_t = false, action = clap::ArgAction::Set)]
#[arg(long, default_value_t = true, action = clap::ArgAction::Set)]
passthrough: bool,
/// Danger: disable TLS verification for the relay.
#[arg(long, default_value_t = false)]
@ -531,7 +531,7 @@ struct NbcBootstrapArgs {
#[derive(Parser, Debug)]
struct NbcWtPublishArgs {
/// Relay URL (WebTransport) to connect to.
#[arg(long, default_value = "https://cdn.moq.dev/anon")]
#[arg(long, default_value = "https://relay.every.channel/anon")]
url: String,
/// Broadcast name to publish.
#[arg(long)]
@ -540,7 +540,7 @@ struct NbcWtPublishArgs {
#[arg(long)]
source_url: String,
/// Transmit fMP4 fragments directly (passthrough mode).
#[arg(long, default_value_t = false, action = clap::ArgAction::Set)]
#[arg(long, default_value_t = true, action = clap::ArgAction::Set)]
passthrough: bool,
/// H.264 GOP/keyframe interval in frames.
#[arg(long, default_value_t = WT_PUBLISH_GOP_FRAMES)]
@ -1795,6 +1795,41 @@ mod tests {
assert!(set.contains("d"));
}
#[test]
fn publish_commands_default_to_current_relay_passthrough() {
let cli = Cli::parse_from([
"ec-node",
"wt-publish",
"--name",
"la-test",
"--input",
"http://example.invalid/auto/v2.1",
]);
match cli.command {
Commands::WtPublish(args) => {
assert_eq!(args.url, "https://relay.every.channel/anon");
assert!(args.passthrough);
}
_ => panic!("expected wt-publish command"),
}
let cli = Cli::parse_from([
"ec-node",
"nbc-wt-publish",
"--name",
"nbc-test",
"--source-url",
"https://example.invalid/live",
]);
match cli.command {
Commands::NbcWtPublish(args) => {
assert_eq!(args.url, "https://relay.every.channel/anon");
assert!(args.passthrough);
}
_ => panic!("expected nbc-wt-publish command"),
}
}
#[test]
fn deterministic_enabled_reads_env() {
let prev = std::env::var("EVERY_CHANNEL_DETERMINISTIC").ok();

View file

@ -24,8 +24,10 @@ Also keep a short-lived local guide cache, merge cached entries with the HTML se
`/api/public-streams` in the background with a bounded timeout. A slow or empty refresh no longer
clears already visible channels.
Change the web client, publisher module defaults, runbook examples, and remote watch E2E default
relay to `https://relay.every.channel/anon`. Preload/preconnect the primary player dependencies and
Change the web client, publisher CLI/module defaults, runbook examples, and remote watch E2E default
relay to `https://relay.every.channel/anon`. Default `wt-publish` and `nbc-wt-publish` to fMP4
passthrough so hotpatch-launched publishers emit the `timescale` and `trackId` CMAF catalog metadata
expected by the hosted `@moq/watch` element. Preload/preconnect the primary player dependencies and
warm the `@moq/watch` custom element after first paint. Let `@moq/watch` use its available live
transport fallback instead of forcing WebTransport-only playback. Add client performance marks for
guide first render, guide fetch, watch request, player module readiness, player mount, catalog/live
@ -42,6 +44,8 @@ status, and first observable canvas frame when the browser exposes it.
## Rollout / teardown plan
Ship the static web change with the existing Worker asset deploy. Validate with clean-cache
desktop/mobile browser loads and check the app's `window.__ecPerf` marks. Teardown is removing the
HTML seed/cache/warmup path and returning to live-API-only station rendering.
Ship the static web change with the existing Worker asset deploy and roll the publisher hotpatch
binary to the LA nodes so their catalogs match the current watcher schema. Validate with clean-cache
desktop/mobile browser loads and check the app's `window.__ecPerf` marks plus a live tune through the
public relay. Teardown is removing the HTML seed/cache/warmup path, returning to live-API-only station
rendering, and explicitly passing `--passthrough=false` only if an older watcher path is restored.