Skip to content

Conversation

@staging-devin-ai-integration
Copy link
Contributor

@staging-devin-ai-integration staging-devin-ai-integration bot commented Feb 7, 2026

Summary

Updates all MoQ dependencies to their latest published versions and adapts code to breaking API changes.

Rust crate updates:

Crate Old New
moq-lite 0.11.0 0.13.0
moq-native 0.11.0 0.12.1
moq-transport 0.12.1 0.12.2
hang 0.10.0 0.13.0

JS/TS updates:

Package Old New
@moq/hang 0.1.1 0.1.2
@moq/lite 0.1.1 0.1.2
@moq/signals 0.1.0 0.1.2

Key API migrations:

  • Origin::produce() API simplified — no longer returns struct with .producer/.consumer fields; use .consume() to get consumer
  • client.connect()client.with_publish().with_consume().connect() builder pattern
  • hang::TrackProducerhang::container::OrderedProducer
  • hang::{Timestamp, BufList, Frame} moved to hang::container:: module
  • catalog::Audio is no longer Option in Catalog struct
  • catalog::AudioConfig now requires container and jitter fields
  • moq_native::Request replaces web_transport_quinn::Session in gateway

Updates since last revision

  • Catalog priority shim: Added catalog_to_json() helper in mod.rs that injects priority fields into the serialized catalog JSON. The Rust hang 0.13.0 removed priority from Audio/Video structs, but the published @moq/hang 0.1.2 Zod schema still requires it. The upstream JS source on main has already dropped this requirement, but it hasn't been published to npm yet. The shim uses priority: 60 for video and priority: 80 for audio (matching the upstream JS PRIORITY constants). Both push.rs and peer.rs now use this helper instead of catalog.to_string().
  • Fixed Default::default()Container::default() for clippy pedantic lint.

Review & Testing Checklist for Human

  • Test MoQ streaming end-to-end — Verify audio streaming works via the Stream view UI. The catalog priority shim fix should resolve the Zod validation error ("expected": "number", "path": ["priority"]), but this has not been verified at runtime.
  • Review hardcoded priority values — There are now two sets of hardcoded priorities to check:
    • Catalog JSON: priority: 60 (video) and priority: 80 (audio) injected by catalog_to_json() in mod.rs. These match the upstream JS PRIORITY constants but are not enforced by any shared definition.
    • Track creation: priority: 2 in pull.rs:386 and peer.rs:828 where audio.priority was previously used (the Audio struct no longer has a priority field in hang 0.13.0).
  • Verify create_broadcast error handling — The new API returns Option<BroadcastProducer>. Check that the error path is reasonable if broadcast creation fails.
  • Test MoQ gateway connection acceptance — The server.rs refactor changed how WebTransport connections are accepted. Verify publishers and subscribers can connect.

Recommended test plan:

  1. Start skit with MoQ feature enabled
  2. Open the Stream view in the UI
  3. Connect a MoQ publisher and verify the catalog is accepted (no Zod errors in console)
  4. Connect a MoQ subscriber and verify audio playback
  5. Test bidirectional peer connections if applicable

Notes

  • All CI checks pass (clippy, tests, build)
  • The hang crate removed several transitive dependencies (h264-parser, mp4-atom, scuffle-h265, etc.) which is why Cargo.lock has many removals
  • The catalog priority shim is a temporary workaround until @moq/hang publishes a new npm version that drops the priority requirement from the schema

Link to Devin run: https://staging.itsdev.in/sessions/aa3dd2facc404f53ba60d51ba7314b40
Requested by: Claudio Costa (@streamer45)

streamer45 and others added 2 commits February 7, 2026 11:38
Co-Authored-By: Claudio Costa <devin@streamkit.dev>
@staging-devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

streamkit-devin and others added 4 commits February 7, 2026 14:32
Co-Authored-By: Claudio Costa <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <devin@streamkit.dev>
Co-Authored-By: Staging-Devin AI <166158716+staging-devin-ai-integration[bot]@users.noreply.github.com>
Co-Authored-By: Staging-Devin AI <166158716+staging-devin-ai-integration[bot]@users.noreply.github.com>
@streamer45 streamer45 merged commit 8a12b00 into main Feb 8, 2026
14 checks passed
@streamer45 streamer45 deleted the update-moq branch February 8, 2026 07:36
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