@urun-sh/core 0.2.60 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.0
4
+
5
+ - **BREAKING (types): `SessionPhaseName` widens 9 → 11 members** — adds
6
+ `'waiting_for_capacity'` and `'unknown'`. An exhaustive `switch` over
7
+ `phase.name` with a `never` default, or a `Record<SessionPhaseName, …>` label
8
+ map, stops compiling until the two new members are handled. The terminal
9
+ server words RELEASED/REAPED/EXPIRED/SUPERSEDED still map onto the *existing*
10
+ `'ended'`/`'expired'` names — no new terminal strings. (Breaking change rides
11
+ the 0.x minor per semver.)
12
+ - **Server status honesty (#351).** `STATUS_TO_PHASE` maps the full server
13
+ vocabulary; an unrecognized status is no longer silently rendered as
14
+ `'provisioning'` — it becomes a loud `'unknown'` phase + `console.error` +
15
+ `unknown-server-status` diagnostic carrying the literal word. The lookup is
16
+ own-property-only, so `Object.prototype` words (`"constructor"`, `"toString"`,
17
+ `"__proto__"`) are treated as unknown rather than resolving inherited members.
18
+ `SessionPhase.reason` now propagates on non-terminal AND terminal paths, and
19
+ the session-refresh stash is cleared on every server-declared terminal frame
20
+ (fixes the eternal "Provisioning…" re-attach, urun-infra#1856). New exports:
21
+ `isServerTerminalPhase`, `SIGNALING_PROTOCOL_VERSION` (`'v1'`, sent on the
22
+ `start` frame).
23
+ - **WT audio lane (#353).** Opus-over-QUIC-datagram downlink: datagram header
24
+ byte 11 is the lane discriminant (0 = video, byte-for-byte the historical
25
+ layout; 1 = audio) → `AudioFrameAssembler` → WebCodecs `AudioDecoder` →
26
+ scheduled WebAudio playout → bridge `MediaStreamTrack`, with a 40ms standing
27
+ buffer. A decode-error budget kills only the audio lane (reverts to WebRTC;
28
+ video keeps flowing). Negotiated per leg, so a pre-audio client never receives
29
+ a lane-1 datagram. The assembler bounds its in-flight set
30
+ (`WT_AUDIO_MAX_PENDING_FRAMES`) under sustained loss, rejects a non-finite
31
+ `jitterBufferTargetMs`, and closes the `AudioContext` if decoder setup throws.
32
+
3
33
  ## 0.2.57
4
34
 
5
35
  - **FIX: `jitterBufferTarget` range guard (0–4000ms).** The W3C