Skip to content

fix(smoke): update interop clients to the current dev APIs#1952

Merged
kixelated merged 1 commit into
devfrom
claude/stoic-nobel-dd032d
Jun 30, 2026
Merged

fix(smoke): update interop clients to the current dev APIs#1952
kixelated merged 1 commit into
devfrom
claude/stoic-nobel-dd032d

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Summary

The cross-language smoke clients had drifted against dev's networking/catalog APIs and were failing before the main→dev merge (#1950). This fixes each client against the current dev surface.

Client Failure Fix
C implicit declaration of moq_origin_consume (renamed) Use the async moq_origin_consume_announced + an on_broadcast callback that wakes main once the broadcast is announced (replaces the old synchronous poll loop).
Python 'async for' requires __aiter__, got coroutine subscribe_catalog() is now a coroutine returning a CatalogConsumer; await it before iterating.
js-native (node + bun) Catalog.fetch is not a function Reconstruct the catalog via Json.Consumer (new @moq/json dep). Frame is now {data, timestamp}, so read frame.data.byteLength (would have failed next otherwise).
js (browser driver) decoded 0 frames Video stats moved from backend.video.stats to backend.video.output.stats. Decoding was actually fine; the Playwright driver just polled the wrong path and always read 0.

Test plan

  • C: compiles clean with -Werror=implicit-function-declaration against the freshly generated moq.h; call signature matches moq_origin_consume_announced.
  • js-native: tsc --noEmit clean; @moq/json linked via bun install.
  • Python: ruff check clean; confirmed the downstream subscribe_media / frame.payload / video.container surface still matches moq-ffi.
  • Biome clean on all JS/TS; bun.lock updated for the new workspace dep.
  • Full just test smoke-full in CI (the point of the PR).

(Written by Claude)

The smoke clients had drifted against dev's networking/catalog APIs and were
failing before the main->dev merge:

- c: moq_origin_consume was renamed; use the async moq_origin_consume_announced
  with an on_broadcast callback that wakes main once the broadcast is announced.
- python: subscribe_catalog() is now a coroutine returning a CatalogConsumer;
  await it before iterating.
- js-native: Catalog.fetch was removed; reconstruct the catalog via
  Json.Consumer (new @moq/json dep). Frame is now {data, timestamp}, so read
  frame.data.byteLength.
- js (browser driver): video stats moved to backend.video.output.stats;
  decoding was fine, the driver just read the wrong path and saw 0 frames.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @kixelated, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@kixelated kixelated merged commit 926c530 into dev Jun 30, 2026
2 of 3 checks passed
@kixelated kixelated deleted the claude/stoic-nobel-dd032d branch June 30, 2026 02:39
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.

1 participant