Skip to content

chore: bump package versions - #3879

Merged
kixelated merged 1 commit into
mainfrom
chore/bump-versions
Sep 23, 2026
Merged

kixelated merged 1 commit into
mainfrom
chore/bump-versions

Conversation

@kixelated

@kixelated kixelated commented Sep 22, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

The dev merge (#3793) landed on main with breaking API changes across the published JavaScript packages and every non-Rust binding, but no version has moved since #3401 / #3548. The next publish would ship those breaks under a patch range.

Approach

Each package was diffed from its last version-line commit to HEAD and classified from the exported surface, not commit prefixes. Pre-1.0: additive = patch, removed/renamed/changed = minor. Lockfiles (bun.lock, uv.lock) and the documented install coordinates (kt/README.md, swift/README.md, the esm.sh pins in js/watch/README.md and js/publish/README.md) follow.

Rust crates are release-plz's (.release-plz.toml, release-rs.yml); every Cargo.toml is untouched.

Impact

Package Old -> New Class Justifying change
@moq/net 0.3.5 -> 0.4.0 minor Connection.Reload/Established namespace -> one Connection class; Announce.Event {path, active} -> Update {prefix, captures, kind, route}, announced(Path.Pattern); Track.Info.latencyMax/ordered -> maxAge; readFrame/nextGroup move to subscriber.ordered(); writeDatagram -> insertDatagram(sequence, timestamp, payload); RemoteError -> Error.Stream/Error.Session
@moq/pattern 0.1.0 -> 0.2.0 minor PatternError -> InvalidPattern, ErrorCode -> InvalidPattern.Code
@moq/hang 0.4.3 -> 0.5.0 minor catalog timeline -> root archive (+ clock); Container.Timeline -> Hang.Timeline; Container.Legacy.Producer(track, format, props); trackInfo requires priority, latencyMax -> maxAge
@moq/json 0.3.3 -> 0.4.0 minor all Producer/Consumer ctors (track, config?) -> { track, ... }; compression: boolean -> "none" | "deflate"; ProducerConfig/ConsumerConfig renamed
@moq/binary 0.1.0 -> 0.2.0 minor same options-object and Compression change as json
@moq/watch 0.5.4 -> 0.6.0 minor latency/latency-min/latency-max/jitter -> delay/buffer (attrs and props, old setters throw); Latency, Paced, Bound, latencyBounds removed; reload -> announced; decoder ctors take one props object
@moq/publish 0.4.7 -> 0.5.0 minor BroadcastProps.connection -> origin: Origin.Table, latencyMax -> maxAge; element capture field private; Video.Capture.out.frame -> out.frames; encoder bandwidth is a Bandwidth.Handle
@moq/auth 0.1.0 -> 0.2.0 minor load/loadPublic/sign/verify/generate -> Key.*; loadSet/findKey/... -> KeySet.*; kty-less oct JWK refused; PatternError -> InvalidPattern
@moq/room 0.1.0 -> 0.2.0 minor Claims.get/put: string -> subscribe/publish: string[]; connection props take Moq.Connection; Local camera/screen fields removed
@moq/msf 0.2.2 -> 0.3.0 minor fetch(track: Track.Subscriber) -> Track.Ordered (additive ext too)
@moq/boy 0.3.1 -> 0.4.0 minor GameConfig requires origin, connection: Moq.Connection; Game.latency -> delay
@moq/signals 0.2.3 -> 0.2.4 patch Derived, GetterValues added; getter() accepts foreign readables
@moq/loc 0.2.2 -> 0.2.3 patch Format(kind = "data"), Format.kind, Format.end() added
moq-rs (py) 0.4.7 -> 0.5.0 minor Announcement -> AnnounceUpdate (path -> prefix), Announced -> AnnounceConsumer; publisher()/consumer() -> publish()/consume(); publish_media* -> publish_audio/publish_video/publish_container; set_route/set_announce -> announce/unannounce; dynamic(prefix, route)
Swift 0.4.6 -> 0.5.0 minor publisher/consumer -> publish/consume; publishMedia* split; setRoute/setAnnounce -> announce/unannounce; RouteWatch/routeUpdates() removed; TLS setters now throws; subscribeAudio -> decodeAudio
Kotlin 0.4.5 -> 0.5.0 minor Announced/Announcement/OriginOptions -> AnnounceConsumer/AnnounceUpdate/OriginConfig; announcements(prefix) -> announcements(AnnounceConfig); routes() removed; publisher()/consumer() -> publish()/consume()
Go wrapper 0.6 -> 0.7 minor Announced(prefix) -> Announced(AnnounceOptions), Announcement -> AnnounceUpdate; RequestBroadcast takes ctx; Dynamic(prefix, route); SetRoute/SetAnnounce -> Announce/Unannounce; EncodeAudio/EncodeVideo take *Bandwidth; Session.Publisher() -> Publish()

Wire: none in this PR (the format changes shipped in #3793).

Examined and left alone:

  • @moq/flate: only a @types/bun devDependency bump, nothing shipped changes.
  • @moq/clock, @moq/wasm, demos, smoke clients: private, not released.
  • Rust Cargo.toml versions: release-plz.
  • py/moq-ffi, swift/ffi, kt/moq-ffi, go/ffi, go.mod FFI placeholder: track the moq-ffi crate.
  • Intra-workspace deps are all workspace:^ (net -> signals is workspace:*), so the publish step rewrites them from the bumped versions; no manual range edits needed.

Alternatives

Bump the whole JS workspace to one shared minor. Rejected: signals and loc are purely additive and stay patch per the convention.

Follow-ups

  • The Go 0.6 line already saw context.Context and other breaks before this bump (feat(go)!: publish the wrapper as moq.dev/moq #2957 set 0.6 on 2026-08-20); this moves to 0.7 for everything since.
  • Maintainer to review the classifications before flipping to ready.

(Written by Claude Opus 5)

🤖 Generated with Claude Code

@kixelated
kixelated marked this pull request as ready for review September 22, 2026 15:50
@coderabbitai

coderabbitai Bot commented Sep 22, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 1 minute.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 6d798c8f-db99-408c-b7cf-0af3118c1b4a

📥 Commits

Reviewing files that changed from the base of the PR and between e5647aa and 14a9acf.

⛔ Files ignored due to path filters (2)
  • bun.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (21)
  • go/wrapper/VERSION
  • js/auth/package.json
  • js/binary/package.json
  • js/hang/package.json
  • js/json/package.json
  • js/loc/package.json
  • js/moq-boy/package.json
  • js/msf/package.json
  • js/net/package.json
  • js/pattern/package.json
  • js/publish/README.md
  • js/publish/package.json
  • js/room/package.json
  • js/signals/package.json
  • js/watch/README.md
  • js/watch/package.json
  • kt/README.md
  • kt/gradle.properties
  • py/moq-rs/pyproject.toml
  • swift/README.md
  • swift/VERSION

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.

@moq-bot

moq-bot Bot commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

No issues found.
Verdict: approve
(Written by Muse Spark)

New%20session%20-%202026-09-22T15%3A51%3A09.526Z
opencode session  |  github run

@kixelated

Copy link
Copy Markdown
Collaborator Author

Summary

Bumps published JS packages and non-Rust bindings (Python, Swift, Kotlin, Go) after the #3793 API break, with lockfiles and install-doc pins updated to match. Rust crates stay on release-plz. Classifications follow pre-1.0 convention (additive = patch, breaking = minor) from the exported surface rather than commit prefixes.

Positive improvement?

Yes. Without this, the next publish would ship breaking API under stale patch versions. The per-package table and the decision to leave purely additive packages (signals, loc) at patch are the right call.

Worth the complexity?

Yes — the change itself is mechanical (versions + locks + README pins). The complexity is in the classification audit, which is already done in the PR description and is appropriate for a multi-package bump.

Alternative approach?

A single shared minor across the whole JS workspace was considered and correctly rejected. No better shape than shipping the bumps that match the breaks already on main.

MERGE

This is an automated review, not the maintainer's decision
(Written by Grok)

The dev merge (#3793) landed breaking API changes across the published
JavaScript packages and every non-Rust binding since the last bumps
(#3401, #3548).

JavaScript:
- @moq/net 0.3.5 -> 0.4.0: Connection namespace collapses into one
  class; announcements are prefix routes (Update {prefix, captures,
  kind, route}); Track.Info latencyMax/ordered -> maxAge; readFrame moves
  to the Ordered handle; writeDatagram -> insertDatagram.
- @moq/pattern 0.1.0 -> 0.2.0: PatternError -> InvalidPattern.
- @moq/hang 0.4.3 -> 0.5.0: catalog timeline -> archive; Container.Timeline
  moves to Hang.Timeline; Legacy.Producer takes a format.
- @moq/json 0.3.3 -> 0.4.0 and @moq/binary 0.1.0 -> 0.2.0: producers and
  consumers take one options object; compression is a string.
- @moq/watch 0.5.4 -> 0.6.0: latency splits into delay and buffer;
  Latency/Paced/Bound exports removed; reload -> announced.
- @moq/publish 0.4.7 -> 0.5.0: BroadcastProps.connection -> origin,
  latencyMax -> maxAge; capture.out.frame -> out.frames.
- @moq/auth 0.1.0 -> 0.2.0: free key functions fold into Key and KeySet;
  an oct JWK without kty is refused.
- @moq/room 0.1.0 -> 0.2.0: Claims get/put -> subscribe/publish arrays;
  connection props take Moq.Connection.
- @moq/msf 0.2.2 -> 0.3.0: fetch() takes Moq.Track.Ordered.
- @moq/boy 0.3.1 -> 0.4.0: GameConfig requires origin; latency -> delay.
- @moq/signals 0.2.3 -> 0.2.4: Derived and GetterValues added.
- @moq/loc 0.2.2 -> 0.2.3: Format gains kind and end().

Bindings:
- moq-rs (Python) 0.4.7 -> 0.5.0, Swift 0.4.6 -> 0.5.0, Kotlin
  0.4.5 -> 0.5.0, Go wrapper 0.6 -> 0.7: Announcement -> AnnounceUpdate,
  publisher()/consumer() -> publish()/consume(), publish_media splits
  into audio/video/container, set_route/set_announce -> announce/unannounce,
  dynamic() takes a prefix and route.

Rust crates are left to release-plz. @moq/flate has no shipped change.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@kixelated
kixelated enabled auto-merge (squash) September 23, 2026 18:59
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary:

  • Rebased onto main (58 commits). Lockfiles still resolve (bun install --frozen-lockfile, uv lock --check), no stale install pins found.
  • Re-audited what landed since the branch point: every public-API change falls in packages already bumped a minor. @moq/signals, @moq/loc, @moq/pattern only picked up devDependency bumps. @moq/flate moved pako from ^3.0.1 to ^3.0.2 with no code change, so it's left unbumped.
  • "Verify staged package resolves" (Release Swift Lib) fails because of a problem that was already there: main's Swift wrapper uses moq-ffi APIs (MoqReservation) that shipped after moq-ffi-v0.4.0, and in PR mode the gate only diffs the PR against its base. On push to main, the tag-based gate defers the wrapper publish until the FFI release, so merging is safe. The gate fix is tracked separately.
  • Auto-merge (squash) enabled; it waits on the required Check/Test.

(Written by Claude Opus 5.5)

@kixelated
kixelated merged commit c331168 into main Sep 23, 2026
9 checks passed
@kixelated
kixelated deleted the chore/bump-versions branch September 23, 2026 19:30
kixelated added a commit that referenced this pull request Sep 26, 2026
Patch bumps for unreleased behavior since #3879. Rust stays with release-plz. Go stays at 0.7 because the wrapper additions are compatible and CI owns that patch.

Co-Authored-By: Grok <noreply@x.ai>
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