Repository navigation
Conversation
Quest-Claim: 83cd7a82760cec0e
Advance the moq submodule to moq main (`just upgrade-moq`), which includes the strip pan (moq-dev/moq#8180) that this quest pinned. The newer moq API renames or removes three things the studio used: - `encode::Config::gop` is `join`, read through `effective_join()`, which is the interval the catalog declares. - `track::Producer::drop_groups` is test-only; a publisher that will never produce a group calls `skip_groups`, which readers move past without ending. - `hang::Catalog::media()` is `without_ext()`. Closes the quest/m0/pin-audio-pan.md quest. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
moq's Watch.Player replaced its `probe` input with `viewer.viewers`: the player claims the connection's receive estimate and selects video from that grant, so the join page's half-size guest rendition follows from the claim. Also rustfmt the renamed calls. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
The upstream quest file it linked was deleted when moq-dev/moq#8180 landed, so the link now 404s. The PR is where the pan was settled. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 26 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head: 64cb706
No actionable defects found in the studio changes.
Checked the changed Rust and join-page call sites against the pinned upstream implementations:
- effective_join() declares the cadence of the same configuration used to create the encoder, including fractional-frame-rate rounding.
- Replay skip_groups() marks only sequences omitted from the completed copy. Existing partial groups and their read errors are still copied separately.
- without_ext() preserves the same media fields as the former media() method, so the recording selection retains its inputs.
- The guest player receives the connection's live viewers getter, derives its ceiling from the catalog, and releases its claim on close.
- The new moq pin is an ancestor of upstream main and contains Strip::set_pan; the completed pin quest and its dependency links are removed consistently.
Direction: no code revisions requested from this review. The reported media-replay timestamp flake remains tracked separately by #106.
Verification limits: GitHub-only static review. I did not run quest context, builds, tests, or a live/hardware join session. The broader upstream commit range was not exhaustively re-reviewed. GitHub Check was still in progress when inspected. The PR reports 275/276 tests passing with one pre-existing timestamp failure; I have not independently reproduced that failure or established a passing CI result.

Bumps the
moqsubmodule to moq main079a6460f, which includes moq-dev/moq#8180 (the bus strip pan). Fixes what the newer moq API breaks here. Deletesquest/m0/pin-audio-pan.mdand its links withquest rm.API changes
encode::Config::gopis gone; the interval a catalog declares isConfig::effective_join()(moq-dev/moq#8121). Updated the reserve calls inrs/moq-scene(publish.rs,source.rs) andrs/moq-studio(engine.rs,replay.rs).track::Producer::drop_groupsis now test-only.rs/moq-scene/src/replay.rscallsskip_groupsin the gap copy and in the test helper. Behavior differs: a skip is final and ends no reader, where a drop ended readers with its error. The replay tests pass.hang::Catalog::media()iswithout_ext()(rs/moq-studio/src/record.rs).js/join:Watch.Player'sprobeinput isviewer: { viewers }. The player claims the connection's receive estimate and selects video from that grant, so the guest's half-size rendition now follows the claim, not the probe. The join page change is settled under Decisions.Other pins
I checked the other studio pins against moq main. None is satisfied: each names an upstream quest file that still exists there (
quest/m3/audio-strip-tap.md,quest/m3/capture-linux.md,quest/m5/audio-filters.md,quest/m5/audio-encode-audiotoolbox.md,quest/m5/audio-encode-mediafoundation.md,quest/m5/audio-web.md,quest/m5/video-web.md). Sopin-aac-encode,pin-audio-filters,pin-audio-tap,pin-browser-audio,pin-browser-video, andpin-portal-tokenstay.quest/m0/audio-pan.mdis now unblocked: itsRequiredlink is gone. Its Plan linked the moq quest file that moq deleted; it now links moq-dev/moq#8180.Checks
just check: passes (quest gate).just test --no-fail-faston this head: 275 of 276 pass. The one failure is the flaky test below, and it is the only failure in the run.Flaky test, not from this bump
publish::tests::a_media_file_is_published_on_one_timelinefails intermittently. The stamps contain a duplicate (10550mstwice), and the strictly-increasing assertion atrs/moq-scene/src/publish.rsfails. It fails on the pre-bump commitcd9641btoo: 4 of 8 isolated runs. On this branch it failed 3 of 6 isolated runs. I did not fix it here.Decisions
Settled by the maintainer on 2026-11-07.
publish::tests::a_media_file_is_published_on_one_timeline: ✅ handled byquest/m0/media-replay-timestamps.md, planned in moq-dev/studio#106 (rejected: fix it in this PR). It fails the same way on main before the bump, so it is recorded as pre-existing in the validation above and is not fixed here. Rates: 4 of 8 isolated runs on pre-bumpcd9641b; 3 of 6 isolated runs on this branch.probe→viewer: { viewers: connection.viewers }: ✅ no live join run needed (rejected: a throttled guest run first). moq'sWatch.Playerdocs (moq/js/watch/src/player.ts) say video selects from the claim's grant, the one-to-one replacement forprobe.Choices made without asking
effective_join()rather than the rawjoinfield: it rounds to whole frames, the value a catalog declares, which matches the old GOP-duration behavior.skip_groupsrather thandrop_groupsat both sites: the producer knows those sequences will never arrive, and nothing should end a reader for them.viewer: { viewers: connection.viewers }withoutmax, so the rendition follows the catalog.Models
Size: XS
Implementer: Claude Code, claude-haiku-5-5, high effort
🤖 Generated with Claude Code
(Written by Haiku 5.5)
Review
Rewritten by
quest reviewafter each round.01a1b99e-f87f-75f2-865f-196c0368b3a8, round 1Source review found no actionable defects and the call-site changes match the updated upstream APIs, but builds and tests were not run because review instructions prohibited them.