There was an error while loading. Please reload this page.
Add 26.9.21 to Releases and move the current version The release notes for what shipped today: Android reporting real peer connection states, so a call whose transport died finally ends there; RestartIce working on all five platforms rather than one, and the IceRestart offer option that four bindings silently ignored; automatic recovery of a failed transport on the signalling path; a Windows sender that can be capped mid-call; the frame sink deadlock and the Media tile that ignored a changed stream. M153 underneath. The Apple camera preview delay is written up as a known issue rather than left for someone to find: it is in this release and fixed after it. Current version moved from 26.9.18 across Home, Getting started, Platform prerequisites, Testing and the feature matrix, whose body was already written for 26.9.21.
ICE restart only ever worked on Blazor RTCOfferOptions.IceRestart is read by one binding. Blazor passes the options object to the browser's createOffer; Android, iOS, Mac Catalyst and Windows discard it, so the "restart" was a plain re-offer carrying the old credentials. The call renegotiated and nothing restarted, which is why a browser test passed it and this page said the feature was verified on all five. Fixed in the repository as of 26.9.21 by calling RestartIce() instead, so: - What works where says what each platform actually did, and gains a row for the automatic recovery, which is new. - Connection.md documents that a call now recovers by itself, and warns anyone on an earlier package that the button is decorative on four platforms. - The 26.9.18 release note carries a correction, because that is the published package and people are running it today.
Two more places that claimed to be current at 26.9.16 The page index in Releases and the heading of What works where both state a version they are current as of, so they are claims rather than history and had gone stale. The remaining 26.9.16 mentions are deliberate - "on 26.9.16 and earlier", "26.9.16 or later", and a tag in the release-process diagram.
Add 26.9.18 to Releases and bump the current version One bug across three platforms, filed as several issues: peer connection awaits resumed on libwebrtc own signalling thread, so a Dispose after an await ran inside libwebrtc callback and closed the connection a few lines before libwebrtc used what the close destroyed. EXC_BAD_ACCESS at 0x30 on Apple, a destroyed-mutex abort on Android, and asynchronous either way so it killed unrelated work. Also records OnTrack finally firing on Apple, and the -NativeLog switch. Connection-Signaling said "the release following 26.9.16" in three places for things that have now shipped; they name 26.9.18.
DOMAIN must be the address clients dial, not localhost The documented docker run set DOMAIN=localhost, which rejects every client that is not on the server's own machine. The demo server turns away a WebSocket upgrade whose Origin does not match DOMAIN, and it does it above the application, so docker logs shows nothing whatsoever. The client-side message is actively misleading - "Websocket connection aborted unexpectedly. Check connection and socket security version/TLS version" - when TLS has already succeeded a line earlier. The empty server log is the real tell. Found the hard way while verifying issue #21 on an iPhone: TCP connected, TLS connected, handshake aborted, nothing logged. Setting DOMAIN to the announced address fixed it immediately and the phone produced to the SFU.
Correct the TURN proxy table: three of the five are stubs The table listed all five proxies as though they were choices. Three of them - Twilio, Coturn and AppRtc - have a GetIceServersAsync that throws NotImplementedException, so picking one gets an exception at the first client to join a room rather than a working call. The page also said "the two proxies for hosted ones are already written", which is half true: Xirsys is, Twilio is not. That misinformation had a cost. Someone deploying the server and asking why calls worked on a LAN and not the internet (issue #42) was told, on the issue, to switch to Coturn or Twilio. Neither could ever have worked. Records the third gate as well, which nobody had noticed: IHttpClientFactory was never registered, so XirsysProxy - the one hosted proxy that is implemented - could not be resolved even after the two source edits this page described. Documents the single configuration key that replaces all three edits, marked as arriving in the release after 26.9.16 since the server is run from source and master does not have it yet. The old three-edit procedure is kept for anyone on an older checkout. Also documents ISignalingServerUrlProvider for setting the client's signalling address at runtime, same release, since this page is where the client BaseUrl is documented.
Connection-Signaling: switching TURN provider takes two edits, not one The page said uncomment the proxy you want in Startup.cs. That is necessary and not sufficient: RoomHub hardcodes Create(TurnServer.StunOnly) rather than reading it from configuration, so uncommenting alone changes nothing and the reader would conclude the provider is broken. Written from Startup.cs without following the call through to the hub. Found by tracing what actually reads the TURN settings - the answer being nothing, in the default build. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Release as 26.9.16, today's date The scheme is the build date and 26.9.17 was tomorrow's. Also corrects the one sentence a blind replace would have left wrong - the example that maps the version back to a calendar date. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Releases: NOTICE now ships inside the packages Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Releases: NOTICE is filled in, so stop saying it is empty Replaces the warning with what the file now covers, and keeps one caveat that is still true: it is not packed into the .nupkg, so it does not reach a consumer on its own. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Releases: absorb the release notes the README was carrying The root README had become a changelog with a package list attached - the 2.0.0 notes, the Xamarin drop, the credits and the upgrade steps. That belongs on a releases page, and now that one exists the README can stop being one. README_V1.md stays where it is and is linked rather than copied. It is a stack of dated notes going back to 2021 and reads as the historical record it is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wiki: the five reference pages Platform prerequisites leads with the three failures that say nothing when you hit them, symptom first, because that is how a reader arrives. What works where separates implemented from run. A lot of Apple code was written on reasoning alone and compiles perfectly, and a matrix that shows only yes or no would hide exactly that. Two rows were corrected against the source while writing it: OnDeviceChange is dead on iOS and Mac Catalyst, and simulcast outside Blazor and Android is unverified rather than working. Testing carries the real numbers - 114 tests, 2.0s - from a run, not from counting attributes. Troubleshooting is organised by what the reader sees, never by which layer is at fault, since a reader who knew the layer would not need the page. Releases records what the packages embed and that attribution is the consumer's to satisfy, and says plainly that NOTICE is empty rather than letting an empty file read as nothing being required. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wiki: the seven stack pages One page per layer, bottom to top, each ending in a pointer to the next: WebRTCnative, Bindings, The unified API, Middleware, Connection and its two implementations, and the demo apps. The unified API page is named for what it is rather than for the package, because a sidebar with WebRTCme nested under WebRTCme reads as a mistake. Connection is split three ways. One page covering two topologies, two server deployments and two sequence diagrams would have been six hundred lines, and the two implementations have almost nothing in common below IConnection. Twelve mermaid diagrams, all parsed and rendered under the strict security level GitHub uses before being committed. Mermaid rather than SVG pairs: it themes itself for dark mode and stays editable in place. Connection-Signaling records that the server's tracked appsettings.json carries a real Xirsys credential, because a reader who forks this needs to know not to rely on it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Wiki spine: Home, Getting started, Hello world, sidebar Replaces the two-page stub. Home and Api.md described the Xamarin era and a WebRTCme.Api that no longer exists as a separate assembly; Api.md was a placeholder line of text and is deleted. The three prerequisites that fail silently - the Windows App Runtime, the MAUI version pin and the Blazor script tag - are each stated where a reader hits them, not only on a page of their own. The Hello world sample is compiled against all five slices before publishing, not transcribed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Updated Home (markdown)
Created Api (markdown)
Initial Home page