Line ownership, the bridge, and the no-yank handover rule

Featurekamo-internal
Shipped
August 26, 2026 at 3:11 AM UTC
Author
kamo
Commit
b958c5c

Three pure modules with no consumers yet, so this ships inert. lineOwnership elects exactly one SIP registrar per browser via Web Locks. That is mandatory here rather than defensive: verified live, every FreePBX AOR is max_contacts=1 with remove_existing=yes, so a second REGISTER evicts the first and the evicted document keeps showing "Registered" while receiving nothing. Web Locks needs no liveness protocol — the lock belongs to the agent, so a crashed or task-killed window releases it and the next waiter is promoted. Where the API is absent we report "unsupported" and the caller keeps today's behaviour rather than risking two registrations. lineBridge is a versioned BroadcastChannel envelope. Not window.opener: that goes stale exactly when the opener reloads, which is the event this whole feature exists to survive. Version skew degrades to a stale remote control, never a throw in a live call UI. The mirrored state is an allow-list — directory data stays where it is loaded. lineHandover is one rule: a live call is never yanked.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing