Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion livekit-ffi-node-bindings/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
}
},
"dependencies": {
"@bufbuild/protobuf": "^1.10.1"
"@bufbuild/protobuf": "^2.0.0"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🔴 Protobuf runtime upgraded to v2 but generated code still uses incompatible v1 API, breaking all proto operations

The protobuf runtime dependency is upgraded to v2 ("@bufbuild/protobuf": "^2.0.0" at livekit-ffi-node-bindings/package.json:36) without regenerating the proto files, so all protobuf serialization and deserialization will fail at runtime.

Impact: The package is completely non-functional — any code that imports or uses protobuf messages will crash.

Generated proto files use v1 APIs that don't exist in v2

The proto files in proto/ were generated by protoc-gen-es v1.10.1 (visible in the header comment of each file, e.g. proto/audio_frame_pb.js:15). They import and use v1-specific APIs:

  • const { proto2 } = require("@bufbuild/protobuf") — proto/audio_frame_pb.js:23
  • proto2.makeEnum(...) — used extensively across all proto JS files
  • proto2.makeMessageType(...) — used extensively across all proto JS files
  • import { Message, proto2 } from "@bufbuild/protobuf" — proto/audio_frame_pb.d.ts:21
  • import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf" — proto/audio_frame_pb.d.ts:20

In @bufbuild/protobuf v2, the Message base class, proto2.makeEnum, proto2.makeMessageType, and the type exports like FieldList and PlainMessage were all removed or completely restructured. The v2 library uses a descriptor-based approach instead.

Additionally, devDependencies still pins @bufbuild/protoc-gen-es at ^1.10.1 which has a peer dependency on @bufbuild/protobuf@1.10.1, creating a version conflict (pnpm-lock.yaml shows it resolved with @bufbuild/protobuf@2.12.1 which is incompatible).

The index.d.ts:31 also re-exports PartialMessage from @bufbuild/protobuf, which has a different type signature in v2.

Prompt for agents
The @bufbuild/protobuf runtime was upgraded from v1 to v2, but the generated proto files in proto/ were generated with protoc-gen-es v1.10.1 and use the v1 API (Message class, proto2.makeEnum, proto2.makeMessageType, etc.) which does not exist in v2. There are two approaches to fix this:

1. Keep @bufbuild/protobuf at v1: Revert the dependency back to "^1.10.1" to match the generated code.

2. Fully migrate to v2: Upgrade @bufbuild/protoc-gen-es to v2 in devDependencies, then regenerate all proto files using the v2 plugin (which produces completely different output using the descriptor-based API). Also update index.d.ts since PartialMessage has moved in v2.

The devDependency @bufbuild/protoc-gen-es should always match the major version of the @bufbuild/protobuf runtime dependency.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Missing changeset file required by repository contribution rules

No changeset file was added for this PR (no new files in .changeset/ directory at livekit-ffi-node-bindings/package.json:36), so the change cannot be properly documented or versioned.

Impact: The dependency bump won't be tracked in the changelog and may not trigger the required version bump.

AGENTS.md requires a changeset for every PR

The AGENTS.md file states:

  • "Every PR needs a changeset"
  • "Changeset must list any crates which need to be bumped stemming from the change"
  • "Document changes interactively from the CLI with knope document-change or create manually in /.changeset"

The git diff between the base and head commits shows no new files in .changeset/. Since this PR changes a runtime dependency version (which is a breaking change), it especially needs a changeset documenting the bump.

Prompt for agents
Add a changeset file in /.changeset/ documenting this dependency upgrade. You can create one interactively with `knope document-change` or manually create a markdown file in the .changeset directory that lists the @livekit/rtc-ffi-bindings package as needing a version bump due to the @bufbuild/protobuf upgrade.
Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

},
"devDependencies": {
"@bufbuild/protoc-gen-es": "^1.10.1",
Comment thread
devin-ai-integration[bot] marked this conversation as resolved.
Expand Down
15 changes: 10 additions & 5 deletions livekit-ffi-node-bindings/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading