This repository has no description

pin teleport to its source livestream via strongRef master

Greptile flagged that endLivestreamForTeleport used GetLatestLivestreamForRepo to pick which stream to end. That's a race: if the streamer started a new stream before the delayed teleport arrival callback ran, the latest record would be the new (unrelated) broadcast, and we'd terminate it while the teleport's actual source stream stayed live. Fix it by adding a required `livestream` strongRef (com.atproto.repo. strongRef) to the place.stream.live.teleport lexicon, pointing at the source livestream the teleport is sending viewers away from. The server now ends exactly that record (parse the strongRef URI for its rkey, getRecord for a fresh swap CID, set endedAt, putRecord with the swap) — never "the latest livestream". Teleports without an origin livestream strongRef (e.g. records from before this field existed) are treated as a no-op rather than guessing. The client (createTeleport / registerTeleportCommand) now passes the current livestream's uri+cid when creating a teleport record. Regenerated via `make lexicons` (Go types, JS types, MD docs). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>


+121 -64
7 changed files