livedesk 0.1.370 → 0.1.372

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livedesk/client",
3
- "version": "0.1.164",
3
+ "version": "0.1.166",
4
4
  "description": "LiveDesk local remote client",
5
5
  "type": "module",
6
6
  "bin": {
@@ -444,7 +444,7 @@ function configure(value) {
444
444
  send({
445
445
  type: 'log',
446
446
  level: 'warn',
447
- message: `Mode 4 waiting for Mode 2 input from ${missing.length}/${config.deviceIds.length} devices: ${missing.slice(0, 8).join(', ')}`
447
+ message: `Mode 4 waiting for internal Atlas input from ${missing.length}/${config.deviceIds.length} devices: ${missing.slice(0, 8).join(', ')}`
448
448
  });
449
449
  }
450
450
  }, 3000) : null;
@@ -59,14 +59,14 @@ const REMOTE_FRAME_MODE_PROFILES = Object.freeze({
59
59
  modeVersion: 1,
60
60
  implemented: true
61
61
  }),
62
- 'mode2-lzo': Object.freeze({
63
- mode: 'mode2-lzo',
64
- label: 'Mode 2 - RGB565 LZO Wall',
62
+ 'mode2-lzo': Object.freeze({
63
+ mode: 'mode2-lzo',
64
+ label: 'Internal Atlas Input - RGB565 LZO',
65
65
  transport: 'ws-binary',
66
66
  encoding: 'image-raw',
67
67
  codec: 'rgb565',
68
68
  compression: 'lzo1x',
69
- profile: 'mode2-lzo-rgb565-v1',
69
+ profile: 'atlas-input-rgb565-lzo-v1',
70
70
  modeVersion: 2,
71
71
  implemented: true
72
72
  }),
@@ -5661,7 +5661,7 @@ export function createRemoteHub(options = {}) {
5661
5661
  return normalized || 'unknown';
5662
5662
  }
5663
5663
 
5664
- function normalizeLiveStreamStartOptions(options = {}) {
5664
+ function normalizeLiveStreamStartOptions(options = {}) {
5665
5665
  const transfer = buildRemoteFrameTransferDescriptor(options.mode || options.frameMode || DEFAULT_REMOTE_FRAME_MODE);
5666
5666
  const streamPurpose = safeString(options.streamPurpose || options.purpose || 'wall', 24) || 'wall';
5667
5667
  const platform = normalizeLivePlatform(options.platform);
@@ -5673,7 +5673,15 @@ export function createRemoteHub(options = {}) {
5673
5673
  const quality = clampNumber(options.quality, 20, 95, 45);
5674
5674
  const monitorIndex = normalizeMonitorIndex(options.monitorIndex ?? options.screenIndex ?? options.displayIndex);
5675
5675
  return { fps, maxWidth, maxHeight, quality, monitorIndex, transfer, streamPurpose, platform };
5676
- }
5676
+ }
5677
+
5678
+ function liveStreamModePolicyError(normalized) {
5679
+ if (normalized?.transfer?.frameMode === 'mode2-lzo'
5680
+ && normalized?.streamPurpose !== 'atlas') {
5681
+ return 'MODE2_ATLAS_ONLY: Mode 2 is reserved for internal Mode 4 Atlas input and cannot be used for Wall or Control.';
5682
+ }
5683
+ return '';
5684
+ }
5677
5685
 
5678
5686
  function liveStreamStartStillPending(activeLiveStream) {
5679
5687
  if (!activeLiveStream?.active || activeLiveStream.open === true) {
@@ -5764,8 +5772,10 @@ export function createRemoteHub(options = {}) {
5764
5772
  return { ok: false, error: 'device-live-stream-unavailable' };
5765
5773
  }
5766
5774
 
5767
- const now = new Date().toISOString();
5775
+ const now = new Date().toISOString();
5768
5776
  const normalized = normalizeLiveStreamStartOptions({ fps: 2, ...options, platform: device.platform });
5777
+ const modePolicyError = liveStreamModePolicyError(normalized);
5778
+ if (modePolicyError) return { ok: false, error: modePolicyError };
5769
5779
  const { fps, maxWidth, maxHeight, quality, monitorIndex, transfer, streamPurpose } = normalized;
5770
5780
  const streamId = safeString(options.streamId, 128) || makeStableLiveStreamId(deviceId, streamPurpose);
5771
5781
  const activeLiveStream = getDeviceLiveStream(device, streamId);
@@ -5860,8 +5870,10 @@ export function createRemoteHub(options = {}) {
5860
5870
  return { ok: false, error: 'device-live-stream-unavailable' };
5861
5871
  }
5862
5872
 
5863
- const now = new Date().toISOString();
5873
+ const now = new Date().toISOString();
5864
5874
  const normalized = normalizeLiveStreamStartOptions({ ...options, platform: device.platform });
5875
+ const modePolicyError = liveStreamModePolicyError(normalized);
5876
+ if (modePolicyError) return { ok: false, error: modePolicyError };
5865
5877
  const { fps, maxWidth, maxHeight, quality, monitorIndex, transfer, streamPurpose } = normalized;
5866
5878
  const streamId = safeString(options.streamId, 128) || makeStableLiveStreamId(deviceId, streamPurpose);
5867
5879
  const activeLiveStream = getDeviceLiveStream(device, streamId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livedesk",
3
- "version": "0.1.370",
3
+ "version": "0.1.372",
4
4
  "buildFlavor": "production",
5
5
  "description": "LiveDesk Hub and client launcher",
6
6
  "type": "module",
@@ -48,10 +48,10 @@
48
48
  "ws": "^8.18.3"
49
49
  },
50
50
  "optionalDependencies": {
51
- "@livedesk/fast-linux-x64": "0.1.369",
52
- "@livedesk/fast-osx-arm64": "0.1.369",
53
- "@livedesk/fast-osx-x64": "0.1.369",
54
- "@livedesk/fast-win-x64": "0.1.369"
51
+ "@livedesk/fast-linux-x64": "0.1.372",
52
+ "@livedesk/fast-osx-arm64": "0.1.372",
53
+ "@livedesk/fast-osx-x64": "0.1.372",
54
+ "@livedesk/fast-win-x64": "0.1.372"
55
55
  },
56
56
  "publishConfig": {
57
57
  "access": "public"