@urun-sh/core 0.2.22 → 0.2.24

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,13 +1,25 @@
1
1
  # Changelog
2
2
 
3
- ## Unreleased
3
+ ## 0.2.24
4
4
 
5
- - Add owner-only `Session.end()` for acknowledged terminal release through the existing authenticated session-request release endpoint. It returns a typed `ended`/`canceled` outcome, memoizes concurrent and repeated calls, and leaves `disconnect()` as the reconnectable transport-detach primitive. Consume-only viewer handles reject terminal release with `SessionEndUnavailableError`; release failures reject with `SessionEndError`.
5
+ - Docs-only release: README accuracy pass against the 0.2.23+ surface (the READMEs ship in
6
+ the npm tarball, so a docs change requires a publish). No runtime changes.
7
+
8
+ ## 0.2.23
9
+
10
+ - Removed the dead compositing-era scene-graph type exports (`Layer`, `SceneContext`,
11
+ `SceneGraph`, `LayoutConfig`, `LayoutContext`) — they documented `useScene()`/`useLayout()`
12
+ hooks that no longer exist anywhere. Type-only removal; no runtime surface change.
13
+ Guarded by `compositing-era-removed.test.ts`.
6
14
 
7
15
  ## 0.2.19
8
16
 
9
17
  - Structured, app-observable session diagnostics: new `SessionDiagnostic` type and `Session.onDiagnostic(handler)` (returns an unsubscribe function) over the transport's new `diagnostic` event. The media-liveness watchdogs now emit `media-stall` (inbound bytes stopped advancing) and `decode-wall` (inbound bytes advancing while `framesDecoded` stays flat past the stall window — the receives-but-never-decodes black-video failure) alongside their existing recovery action, and every diagnostic is mirrored unconditionally to the browser console via `console.warn`, so failures are visible even without app wiring.
10
18
 
19
+ ## 0.2.17
20
+
21
+ - Add owner-only `Session.end()` for acknowledged terminal release through the existing authenticated session-request release endpoint. It returns a typed `ended`/`canceled` outcome, memoizes concurrent and repeated calls, and leaves `disconnect()` as the reconnectable transport-detach primitive. Consume-only viewer handles reject terminal release with `SessionEndUnavailableError`; release failures reject with `SessionEndError`.
22
+
11
23
  ## 0.2.12
12
24
 
13
25
  - DELETE the dead legacy data-stream subscribe handshake. `TransportSession.subscribeStream()` / `unsubscribeStream()` and the `{t:"stream.subscribe"|"stream.unsubscribe"}` signaling control frames are removed: the session-server's vanilla-Yjs cutover made that doc-lane opt-in deliberately inert (`crdt/legacy-stub.ts handleStreamControlText` no-op, `StreamSubscriptions.shouldDeliver() === false`), so the frames did nothing. Named-DATA delivery is the contract §5 server-push path — the server pushes `consumeData` for every named stream to every leg, the client attaches a mediasoup `DataConsumer` (native `recvTransport.consumeData`) and acks `dataConsumerReady` on channel OPEN. Public API unchanged: `session.stream(name).messages()` / `emit()` behave identically; which handlers receive the flowing data is now a purely local concern.
@@ -1,5 +1,5 @@
1
- import { d as AppOptions, c as App$1, T as SessionPhase, X as SessionStatus, V as SessionPhaseName, A as AccessTokenOptions$1, B as RuntimeArtifact, E as RuntimeArtifactDownload, R as Recording, I as Session$1, C as ChannelEndpoint, a2 as TransportSession, e as AttachOptions, J as SessionDiagnostic, a as ActivationEvent, x as RecordingsAccessor, F as RuntimeArtifactsAccessor, O as SessionEndResult, Y as SessionStream$1, a1 as StreamDataTransport, N as SessionDocumentImpl, a0 as StreamChunkOptions, i as ChunkReadable, P as Presence, m as DocConnector, y as RequestOptions, z as RequestStreamOptions, $ as StoreOptions, _ as Store, g as ChannelMultiplexer, Q as SessionFailureKind, a4 as TransportState } from './stream-data-bZAHTqK-.mjs';
2
- export { b as ActivationState, L as Layer, n as LayoutConfig, o as LayoutContext, M as MediaChunkBinding, q as MediaChunkSource, r as MediaChunkSourceFactory, s as MediaRecorderChunkSourceOptions, t as PresenceState, u as RecordingBucket, v as RecordingLifecycle, w as RecordingStatus, G as RuntimeAvailability, S as SceneContext, H as SceneGraph, K as SessionDocument, U as SessionPhaseError, Z as SessionText, a8 as isPendingRecording, a9 as mediaRecorderChunkSource } from './stream-data-bZAHTqK-.mjs';
1
+ import { d as AppOptions, c as App$1, J as SessionPhase, Q as SessionStatus, N as SessionPhaseName, A as AccessTokenOptions$1, x as RuntimeArtifact, y as RuntimeArtifactDownload, R as Recording, S as Session$1, C as ChannelEndpoint, Z as TransportSession, e as AttachOptions, E as SessionDiagnostic, a as ActivationEvent, u as RecordingsAccessor, z as RuntimeArtifactsAccessor, H as SessionEndResult, T as SessionStream$1, Y as StreamDataTransport, G as SessionDocumentImpl, X as StreamChunkOptions, i as ChunkReadable, P as Presence, m as DocConnector, v as RequestOptions, w as RequestStreamOptions, W as StoreOptions, V as Store, g as ChannelMultiplexer, I as SessionFailureKind, $ as TransportState } from './stream-data-BQso6wNv.mjs';
2
+ export { b as ActivationState, M as MediaChunkBinding, n as MediaChunkSource, o as MediaChunkSourceFactory, p as MediaRecorderChunkSourceOptions, q as PresenceState, r as RecordingBucket, s as RecordingLifecycle, t as RecordingStatus, B as RuntimeAvailability, F as SessionDocument, K as SessionPhaseError, U as SessionText, a3 as isPendingRecording, a4 as mediaRecorderChunkSource } from './stream-data-BQso6wNv.mjs';
3
3
  import 'yjs';
4
4
  import 'y-protocols/awareness';
5
5
 
@@ -845,6 +845,10 @@ declare class WebTransportSession implements MediaSession {
845
845
  readonly kind: "webtransport";
846
846
  private wt;
847
847
  private decoder;
848
+
849
+ private decoderConfig;
850
+
851
+ private decoderErrorsAt;
848
852
  private writer;
849
853
  private deadCb;
850
854
  private deadFired;
@@ -869,6 +873,8 @@ declare class WebTransportSession implements MediaSession {
869
873
  jitterMs: number;
870
874
  };
871
875
  private initDecoder;
876
+
877
+ private onDecoderError;
872
878
  private datagramLoop;
873
879
  private decodeFrame;
874
880
  private sendControl;
@@ -943,6 +949,8 @@ declare class FrameReassembler {
943
949
 
944
950
  push(chunk: Uint8Array): void;
945
951
 
952
+ requireKeyframe(): void;
953
+
946
954
  drainWindow(): {
947
955
  bytes: number;
948
956
  delivered: number;
@@ -1,5 +1,5 @@
1
- import { d as AppOptions, c as App$1, T as SessionPhase, X as SessionStatus, V as SessionPhaseName, A as AccessTokenOptions$1, B as RuntimeArtifact, E as RuntimeArtifactDownload, R as Recording, I as Session$1, C as ChannelEndpoint, a2 as TransportSession, e as AttachOptions, J as SessionDiagnostic, a as ActivationEvent, x as RecordingsAccessor, F as RuntimeArtifactsAccessor, O as SessionEndResult, Y as SessionStream$1, a1 as StreamDataTransport, N as SessionDocumentImpl, a0 as StreamChunkOptions, i as ChunkReadable, P as Presence, m as DocConnector, y as RequestOptions, z as RequestStreamOptions, $ as StoreOptions, _ as Store, g as ChannelMultiplexer, Q as SessionFailureKind, a4 as TransportState } from './stream-data-bZAHTqK-.js';
2
- export { b as ActivationState, L as Layer, n as LayoutConfig, o as LayoutContext, M as MediaChunkBinding, q as MediaChunkSource, r as MediaChunkSourceFactory, s as MediaRecorderChunkSourceOptions, t as PresenceState, u as RecordingBucket, v as RecordingLifecycle, w as RecordingStatus, G as RuntimeAvailability, S as SceneContext, H as SceneGraph, K as SessionDocument, U as SessionPhaseError, Z as SessionText, a8 as isPendingRecording, a9 as mediaRecorderChunkSource } from './stream-data-bZAHTqK-.js';
1
+ import { d as AppOptions, c as App$1, J as SessionPhase, Q as SessionStatus, N as SessionPhaseName, A as AccessTokenOptions$1, x as RuntimeArtifact, y as RuntimeArtifactDownload, R as Recording, S as Session$1, C as ChannelEndpoint, Z as TransportSession, e as AttachOptions, E as SessionDiagnostic, a as ActivationEvent, u as RecordingsAccessor, z as RuntimeArtifactsAccessor, H as SessionEndResult, T as SessionStream$1, Y as StreamDataTransport, G as SessionDocumentImpl, X as StreamChunkOptions, i as ChunkReadable, P as Presence, m as DocConnector, v as RequestOptions, w as RequestStreamOptions, W as StoreOptions, V as Store, g as ChannelMultiplexer, I as SessionFailureKind, $ as TransportState } from './stream-data-BQso6wNv.js';
2
+ export { b as ActivationState, M as MediaChunkBinding, n as MediaChunkSource, o as MediaChunkSourceFactory, p as MediaRecorderChunkSourceOptions, q as PresenceState, r as RecordingBucket, s as RecordingLifecycle, t as RecordingStatus, B as RuntimeAvailability, F as SessionDocument, K as SessionPhaseError, U as SessionText, a3 as isPendingRecording, a4 as mediaRecorderChunkSource } from './stream-data-BQso6wNv.js';
3
3
  import 'yjs';
4
4
  import 'y-protocols/awareness';
5
5
 
@@ -845,6 +845,10 @@ declare class WebTransportSession implements MediaSession {
845
845
  readonly kind: "webtransport";
846
846
  private wt;
847
847
  private decoder;
848
+
849
+ private decoderConfig;
850
+
851
+ private decoderErrorsAt;
848
852
  private writer;
849
853
  private deadCb;
850
854
  private deadFired;
@@ -869,6 +873,8 @@ declare class WebTransportSession implements MediaSession {
869
873
  jitterMs: number;
870
874
  };
871
875
  private initDecoder;
876
+
877
+ private onDecoderError;
872
878
  private datagramLoop;
873
879
  private decodeFrame;
874
880
  private sendControl;
@@ -943,6 +949,8 @@ declare class FrameReassembler {
943
949
 
944
950
  push(chunk: Uint8Array): void;
945
951
 
952
+ requireKeyframe(): void;
953
+
946
954
  drainWindow(): {
947
955
  bytes: number;
948
956
  delivered: number;