livedesk 0.1.619 → 0.1.621
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/hub/src/server.js +26 -18
- package/hub/src/settings/settings-schema.js +13 -8
- package/hub/src/settings/settings-store.js +16 -6
- package/package.json +1 -1
- package/web/dist/app.webmanifest +1 -1
- package/web/dist/assets/LiveDeskApp-DIq0K1le.js +179 -0
- package/web/dist/assets/{index-7sOb6udB.js → index-DCjdwnVX.js} +2 -2
- package/web/dist/assets/{index-D7YfukrQ.css → index-Dp70stjV.css} +1 -1
- package/web/dist/index.html +2 -2
- package/web/dist/livedesk-build-evidence.json +20 -20
- package/web/dist/sw.js +1 -1
- package/web/dist/assets/LiveDeskApp-BNIX6XXG.js +0 -179
package/hub/src/server.js
CHANGED
|
@@ -4342,27 +4342,35 @@ app.post('/api/settings/agent/summary', async (req, res) => {
|
|
|
4342
4342
|
}
|
|
4343
4343
|
});
|
|
4344
4344
|
|
|
4345
|
-
app.get('/api/remote/status', (_req, res) => {
|
|
4346
|
-
noStore(res);
|
|
4347
|
-
if (runtimeRole !== 'hub') {
|
|
4345
|
+
app.get('/api/remote/status', async (_req, res) => {
|
|
4346
|
+
noStore(res);
|
|
4347
|
+
if (runtimeRole !== 'hub') {
|
|
4348
4348
|
res.status(403).json({ ok: false, error: 'role-not-allowed' });
|
|
4349
4349
|
return;
|
|
4350
4350
|
}
|
|
4351
|
-
|
|
4352
|
-
|
|
4353
|
-
|
|
4354
|
-
|
|
4355
|
-
|
|
4356
|
-
|
|
4357
|
-
|
|
4358
|
-
|
|
4359
|
-
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4351
|
+
try {
|
|
4352
|
+
const [secretStatus, wallPreferences] = await Promise.all([
|
|
4353
|
+
Promise.resolve(remoteHub.getStatus({ includeSecrets: true })),
|
|
4354
|
+
liveDeskSettingsStore.getWallPreferencesRecord()
|
|
4355
|
+
]);
|
|
4356
|
+
res.json({
|
|
4357
|
+
...remoteHub.getStatus({ includeSecrets: false }),
|
|
4358
|
+
pairingPin: secretStatus.pairingPin,
|
|
4359
|
+
product: 'LiveDesk',
|
|
4360
|
+
runtimeRole,
|
|
4361
|
+
deviceId: runtimeDeviceId,
|
|
4362
|
+
deviceName: runtimeDeviceName,
|
|
4363
|
+
roleSource: runtimeRoleSource,
|
|
4364
|
+
agentPackage: '@livedesk/client',
|
|
4365
|
+
wallPreferences,
|
|
4366
|
+
consoleRelay: hubConsoleRelay?.inspect() || { enabled: false, state: 'starting' },
|
|
4367
|
+
frameLanes: snapshotFrameLaneResourceHealth(),
|
|
4368
|
+
update: getLiveDeskUpdateStatus()
|
|
4369
|
+
});
|
|
4370
|
+
} catch (error) {
|
|
4371
|
+
res.status(500).json({ ok: false, error: error instanceof Error ? error.message : String(error) });
|
|
4372
|
+
}
|
|
4373
|
+
});
|
|
4366
4374
|
|
|
4367
4375
|
app.post('/api/remote/diagnostics/transport/start', async (req, res) => {
|
|
4368
4376
|
noStore(res);
|
|
@@ -46,9 +46,11 @@ export const DEFAULT_LIVEDESK_SETTINGS = Object.freeze({
|
|
|
46
46
|
rememberLastMonitor: true,
|
|
47
47
|
keepControlReadyBetweenPages: true
|
|
48
48
|
},
|
|
49
|
-
wall: {
|
|
50
|
-
performanceMode: 'auto',
|
|
51
|
-
|
|
49
|
+
wall: {
|
|
50
|
+
performanceMode: 'auto',
|
|
51
|
+
cadence: 'fast',
|
|
52
|
+
viewScale: 100,
|
|
53
|
+
autoStart: true,
|
|
52
54
|
connectedOnly: false,
|
|
53
55
|
keepEmptySlots: true,
|
|
54
56
|
showDeviceStatus: true,
|
|
@@ -110,9 +112,10 @@ export const DEFAULT_LIVEDESK_SETTINGS = Object.freeze({
|
|
|
110
112
|
}
|
|
111
113
|
});
|
|
112
114
|
|
|
113
|
-
const ENUMS = {
|
|
115
|
+
const ENUMS = {
|
|
114
116
|
accessMode: new Set(['trusted-only', 'ask-every-time', 'view-only', 'block-remote-access']),
|
|
115
|
-
performanceMode: new Set(['auto', 'responsive', 'quality', 'custom']),
|
|
117
|
+
performanceMode: new Set(['auto', 'responsive', 'quality', 'custom']),
|
|
118
|
+
wallCadence: new Set(['slow', 'fast']),
|
|
116
119
|
permissionMode: new Set(['ask', 'safe-auto', 'full-access', 'custom']),
|
|
117
120
|
wallFrameMode: new Set(['auto', 'mode2-lzo', 'mode3-h264-hw', 'mode4-h264-atlas']),
|
|
118
121
|
controlFrameMode: new Set(['mode3-h264-hw', 'mode5-lzo-delta']),
|
|
@@ -169,9 +172,11 @@ const RULES = {
|
|
|
169
172
|
control: {
|
|
170
173
|
...bools(['allowKeyboardMouse', 'allowSystemShortcuts', 'allowClipboardText', 'allowRemoteRestart', 'reconnectAfterRemoteRestart', 'allowSwitchingMonitors', 'showConnectionToolbar', 'showRemoteCursor', 'openControlOnDoubleClick', 'startRemoteAudioWithControl', 'fitRemoteScreen', 'rememberLastMonitor', 'keepControlReadyBetweenPages'])
|
|
171
174
|
},
|
|
172
|
-
wall: {
|
|
173
|
-
performanceMode: { type: 'enum', values: ENUMS.performanceMode },
|
|
174
|
-
|
|
175
|
+
wall: {
|
|
176
|
+
performanceMode: { type: 'enum', values: ENUMS.performanceMode },
|
|
177
|
+
cadence: { type: 'enum', values: ENUMS.wallCadence },
|
|
178
|
+
viewScale: { type: 'number', min: 0, max: 100 },
|
|
179
|
+
...bools(['autoStart', 'connectedOnly', 'keepEmptySlots', 'showDeviceStatus', 'showPerformanceDetails', 'pauseHiddenTiles', 'reduceWhenHidden', 'autoAdjustTileQuality', 'rememberDevicePositions'])
|
|
175
180
|
},
|
|
176
181
|
filesAudio: {
|
|
177
182
|
...bools(['allowFileTransfer', 'allowFolderSync', 'askBeforeReceivingFiles', 'openReceivedFolder', 'notifyTransferComplete', 'allowOverwrite', 'allowRemoteAudio', 'startAudioMuted', 'rememberVolume', 'automaticallyRecoverAudio', 'showAudioTroubleshooting', 'rollingBufferEnabled', 'includeRemoteCursor']),
|
|
@@ -40,12 +40,22 @@ export class LiveDeskSettingsStore {
|
|
|
40
40
|
return structuredClone(this.record);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
getCached() {
|
|
44
|
-
if (!this.record) return DEFAULT_LIVEDESK_SETTINGS;
|
|
45
|
-
return { ...this.record.settings, revision: this.record.revision };
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
async
|
|
43
|
+
getCached() {
|
|
44
|
+
if (!this.record) return DEFAULT_LIVEDESK_SETTINGS;
|
|
45
|
+
return { ...this.record.settings, revision: this.record.revision };
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async getWallPreferencesRecord() {
|
|
49
|
+
if (!this.record) await this.getRecord();
|
|
50
|
+
return {
|
|
51
|
+
revision: this.record.revision,
|
|
52
|
+
updatedAt: this.record.updatedAt,
|
|
53
|
+
cadence: this.record.settings.wall.cadence,
|
|
54
|
+
viewScale: this.record.settings.wall.viewScale
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async get() {
|
|
49
59
|
return publicSettings((await this.getRecord()).settings);
|
|
50
60
|
}
|
|
51
61
|
|
package/package.json
CHANGED
package/web/dist/app.webmanifest
CHANGED