Skip to content

Reconcile README: js-native-node, Go, gst, and brew token bottle are all green now#13

Merged
kixelated merged 2 commits into
mainfrom
claude/dreamy-shockley-efd5e2
Jun 22, 2026
Merged

Reconcile README: js-native-node, Go, gst, and brew token bottle are all green now#13
kixelated merged 2 commits into
mainfrom
claude/dreamy-shockley-efd5e2

Conversation

@kixelated

@kixelated kixelated commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

What

The README's Current state section listed four cells as red. All four are now fixed in current published artifacts, so this PR reconciles the docs with reality (comment/prose only — no harness logic changes). Each was verified, not just assumed.

1. Native JS on node (js-native-node)

The napi/ESM module-load break (does not provide an export named 'NapiClient') is fixed in @moq/web-transport 0.1.2 — session.ts now default-imports the .cjs binding and destructures, exactly as the README predicted. Verified: node --import tsx import + install() succeeds.

2. Go (any role)

moq-dev/moq-go was un-buildable (stuck at v0.2.15, missing moq.h + the prebuilt static libs). v0.2.22 now ships moq.h and libmoq_ffi.a for linux (amd64/arm64), darwin, and windows. Verified with a real CGO_ENABLED=1 go build in a linux/amd64 podman container → builds and links cleanly.

⚠️ Found a separate, new macOS-only bug while checking: the module's darwin cgo LDFLAGS omit -framework CoreServices, so the bundled Rust notify crate's FSEvents symbols don't link on a Mac. CI only builds Go on Linux, so the matrix is unaffected. Filed upstream against moq go/moq/cgo.go (libmoq's build.rs already links CoreServices — the Go side just didn't match).

3. GStreamer subscribe (gst)

The "no moq-gst-v* release yet" blocker is gone — releases now exist (latest moq-gst-v0.2.7) with apt/brew/rpm/tarball + nix artifacts. Verified: downloaded the published tarball and ran the harness's own gst-inspect-1.0 moq check → moqsrc/moqsink load against a system GStreamer.

4. Token interop on the Homebrew bottle (macOS brew)

The 0.5.31 bottle no longer bakes in a /nix/store/…-libiconv rpath (the dyld: Library not loaded abort). Verified on macOS: only LC_RPATH is /usr/lib, so @rpath/libiconv.2.dylib resolves to the system libiconv; generate --algorithm HS256 runs and produces a token.

Net effect

With these, the documented matrix is all-green. Two honesty caveats: the Go and gst entries verify the documented blocker (build / plugin-load), not a fresh end-to-end subscribe — CI exercises the full path. The new macOS Go link gap is tracked separately and doesn't affect the (Linux-only) Go cell.

🤖 Generated with Claude Code

@moq/web-transport 0.1.2 fixed the named-import breakage that kept the
js-native-node cell red: its session.ts now default-imports the CJS
binding (renamed napi.js -> napi.cjs) and destructures NapiClient, which
node's ESM loader accepts.

Verified locally under node 22 with the current latest deps
(@moq/web-transport 0.1.2, @moq/net 0.1.5, @moq/hang 0.2.11): importing
the polyfill and calling install() succeeds, with no "does not provide an
export named 'NapiClient'" -- the exact module-load failure the cell
documented is gone.

Reconcile the docs that still called the cell red:
- README.md: flip the node bullet to working; keep the break-then-fix
  history in past tense and cite the 0.1.2 fix.
- .github/workflows/smoke.yml: drop the "currently fails" comment.
- smoke.sh: also fix a stale comment naming the old
  @fails-components/webtransport polyfill (it's moq's own
  @moq/web-transport now, matching subscribe.ts and the README).

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

coderabbitai Bot commented Jun 22, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Three comment-only edits document that the js-native-node failure caused by a missing NapiClient named export in the NAPI CJS module was resolved in @moq/web-transport version 0.1.2. The CI workflow comment is updated to reflect that both js-native-bun and js-native-node now use the @moq/web-transport polyfill. The smoke.sh inline comment is updated to reference @moq/web-transport instead of @fails-components/webtransport. The README status for Native JS on node is changed from failing to working.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title accurately reflects the main changes: it identifies four specific items (js-native-node, Go, gst, brew token bottle) that are now working/green, which directly corresponds to the PR's core objective of reconciling the README's current state section with reality.
Description check ✅ Passed The description is comprehensive and directly related to the changeset. It explains what was fixed (four red cells now green), why they were red, how they were verified, and which files were updated—all matching the documented changes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch claude/dreamy-shockley-efd5e2

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

All three were verified fixed against current published artifacts, the
same way as js-native-node:

- Go: moq-go is no longer stuck at v0.2.15. v0.2.22 ships moq.h and
  libmoq_ffi.a for linux (amd64/arm64), darwin, and windows. A real
  CGO_ENABLED=1 go build against it links cleanly in a linux/amd64
  podman container -- the documented "go get + build fails" blocker is
  gone. Noted a separate, macOS-only link gap (darwin cgo LDFLAGS omit
  -framework CoreServices for the bundled notify crate's FSEvents
  symbols); CI only builds Go on Linux, so the matrix is unaffected.
  Filed upstream against moq go/moq/cgo.go.
- gst: moq-gst releases now exist (latest moq-gst-v0.2.7) with the
  apt/brew/rpm/tarball + nix artifacts. Downloaded the published tarball
  and confirmed gst-inspect exposes moqsrc/moqsink against a system
  GStreamer.
- brew token bottle: 0.5.31 no longer bakes in a /nix/store libiconv
  rpath -- its only LC_RPATH is /usr/lib, so it resolves the system
  libiconv and runs (generate --algorithm HS256 succeeds).

Also update the smoke.yml matrix comment and soften the now-stale
"the brew bottle leaks" aside on the working token-interop line.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@kixelated kixelated changed the title Mark js-native-node green: upstream napi/ESM fix shipped Reconcile README: js-native-node, Go, gst, and brew token bottle are all green now Jun 22, 2026
@kixelated kixelated merged commit b6f8c09 into main Jun 22, 2026
3 of 4 checks passed
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