Conversation
moq-ffi's MoqAnnounceConsumer::next returns MoqAnnounceEvent (Announced, Updated, Retracted carrying a MoqAnnounce record, or Live), mirroring moq-net's announce::Event and replacing MoqAnnounceUpdate::active(). libmoq's moq_announce_update gains a moq_announce_kind in place of the active flag, and delivers a LIVE record once caught up. The Python, Go, Swift, Kotlin, and Dart wrappers follow, each with a test that an empty origin yields Live. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-bindings # Conflicts: # doc/lib/c/index.md # rs/libmoq/src/test.rs # rs/moq-ffi/src/test.rs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 42c9074647
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| /// | ||
| /// A [AnnounceEventLive] follows the routes live at subscribe time, so a | ||
| /// listener can collect what is live and stop there. | ||
| Stream<AnnounceEvent> announcements({ |
There was a problem hiding this comment.
Update the Dart README for the new event type
Update dart/moq/README.md with this breaking return-type change. Its quickstart still calls announcement.prefix() and announcement.captures(), but each value is now an AnnounceEvent, which exposes neither method, so the documented example no longer compiles. It should pattern-match AnnounceEventAnnounced, read event.announce.prefix and captures, and account for AnnounceEventLive.
AGENTS.md reference: AGENTS.md:L27-L27
Useful? React with 👍 / 👎.
Problem
moq-net's announce consumer yields
announce::Event::Liveonce every route live at subscribe time has landed, but moq-ffi and libmoq dropped it. A binding app could not list what is live and stop without a timer.Approach
Mirror
announce::Eventone to one:MoqAnnounceConsumer::nextreturnsMoqAnnounceEvent(Announced,Updated,Retractedcarrying aMoqAnnouncerecord, orLive).MoqAnnounceis a record (prefix,captures,route), mirroringannounce::Announce, so the getter-onlyMoqAnnounceUpdateobject is gone.moq_announce_update.kind(moq_announce_kind:ANNOUNCED,UPDATED,RETRACTED,LIVE) replacesactive. ALIVEevent arrives through the sameon_announcecallback with no prefix or captures, and is freed like any other record.AnnounceandAnnounceEvent, and name the variants with one convention, now recorded in/quest/m1/ffi-shape/net.md:AnnounceEventAnnounced,AnnounceEventUpdated,AnnounceEventRetracted,AnnounceEventLivein Go, Kotlin, Dart, and Python, whatever the generated name. Swift keeps its generated cases (.announced(announce:), ...,.live), since it cannot alias a case.Liveat once, and that an existing route comes beforeLive. Existing tests skipLivewherever it lands.Impact
MoqAnnounceConsumer::nextreturnsOption<MoqAnnounceEvent>.MoqAnnounceUpdate(object withprefix(),captures(),route(),active()) is replaced by theMoqAnnouncerecord plus theMoqAnnounceEventenum.moq_announce_update.activeismoq_announce_update.kind, a newmoq_announce_kindenum.on_announcealso fires once forLIVE.moq.AnnounceUpdateis removed;AnnounceConsumeryieldsmoq.AnnounceEvent. Newmoq.Announceand the four variant aliases.AnnounceUpdateis removed;AnnounceConsumer.Next/AllyieldAnnounceEvent. NewAnnounceand the four variant aliases.AnnounceUpdateis removed;AnnounceConsumer.ElementisAnnounceEvent. NewAnnounce.AnnounceUpdateis removed;announcements()is aFlow<AnnounceEvent>. NewAnnounce,AnnounceEvent, and the four variant aliases.AnnounceUpdateis removed;announcements()is aStream<AnnounceEvent>. NewAnnounce,AnnounceEvent, and the four variant aliases.Alternatives
MoqAnnounceUpdateas an object and add akind()getter. Rejected: it keeps a getter-only handle (which/quest/m1/ffi-shape/net.mdwants gone) and would not mirror Rust'sEventenum.LIVE. Rejected: the existing record pluskindkeeps one callback and matches the quest plan.Follow-ups
doc/setup/upgrade.mdcovers the 2026-09-23 train only; the next train's page should list this break.🤖 Generated with Claude Code
(Written by Opus 5.5)