livedesk 0.1.593 → 0.1.594

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/bin/livedesk.js CHANGED
@@ -3135,10 +3135,10 @@ async function runManager(args, resolvedRole = null, runtimeLock = null, updateH
3135
3135
  }
3136
3136
  }
3137
3137
 
3138
- async function runClient(args, resolvedRole = null, runtimeLock = null) {
3139
- const runtimeOwner = runtimeLock?.payload || null;
3140
- const internalClientEntry = resolve(packageRoot, 'client', 'bin', 'livedesk-client.js');
3141
- const packagedWebDist = resolve(packageRoot, 'web', 'dist');
3138
+ async function runClient(args, resolvedRole = null, runtimeLock = null) {
3139
+ const runtimeOwner = runtimeLock?.payload || null;
3140
+ const internalClientEntry = resolve(packageRoot, 'client', 'bin', 'livedesk-client.js');
3141
+ const packagedWebDist = resolve(packageRoot, 'web', 'dist');
3142
3142
  if (!existsSync(internalClientEntry)) {
3143
3143
  throw new Error('The published livedesk package is missing its internal Client runtime. Rebuild the package with npm run build.');
3144
3144
  }
@@ -3152,9 +3152,9 @@ async function runClient(args, resolvedRole = null, runtimeLock = null) {
3152
3152
  LIVEDESK_NPM_LAUNCHER_VERSION: readVersion(),
3153
3153
  LIVEDESK_RUNTIME_ROLE: 'client',
3154
3154
  LIVEDESK_UNIFIED_RUNTIME: '1',
3155
- LIVEDESK_WEB_DIST: existsSync(resolve(packagedWebDist, 'index.html'))
3156
- ? packagedWebDist
3157
- : String(process.env.LIVEDESK_WEB_DIST || ''),
3155
+ LIVEDESK_WEB_DIST: existsSync(resolve(packagedWebDist, 'index.html'))
3156
+ ? packagedWebDist
3157
+ : String(process.env.LIVEDESK_WEB_DIST || ''),
3158
3158
  LIVEDESK_CLIENT_RUNTIME_PORT: String(process.env.LIVEDESK_CLIENT_RUNTIME_PORT || process.env.LIVEDESK_LOCAL_RUNTIME_PORT || DEFAULT_MANAGER_HTTP_PORT),
3159
3159
  LIVEDESK_UNIFIED_LAUNCHER_ENTRY: String(process.argv[1] || ''),
3160
3160
  LIVEDESK_ROLE_TRANSITION: resolvedRole?.roleTransition === true || process.env.LIVEDESK_ROLE_TRANSITION === '1'
@@ -253,7 +253,7 @@ export function createRoleBootstrapServer(options = {}) {
253
253
  return;
254
254
  }
255
255
  if (url.pathname === '/api/health') {
256
- sendJson(req, res, 200, { ok: true, product: 'LiveDesk', role: 'bootstrap' }, port);
256
+ sendJson(req, res, 200, { ok: true, product: 'LiveDesk', role: 'bootstrap' }, port);
257
257
  return;
258
258
  }
259
259
  if (url.pathname === '/api/bootstrap/status' || url.pathname === '/api/runtime/status' || url.pathname === '/api/runtime') {
@@ -54,10 +54,10 @@ const SESSION_REFRESH_SKEW_SECONDS = 60;
54
54
  const SUPABASE_REQUEST_TIMEOUT_MS = 8_000;
55
55
  const HUB_TARGET_CACHE_MAX_AGE_MS = 30 * 24 * 60 * 60 * 1000;
56
56
  const HUB_TARGET_CACHE_FUTURE_SKEW_MS = 5 * 60 * 1000;
57
- const WINDOWS_STARTUP_SCRIPT_NAME = 'VuvoDesk Desktop.vbs';
58
- const WINDOWS_STARTUP_LEGACY_DESKTOP_SCRIPT_NAME = 'LiveDesk Desktop.vbs';
59
- const WINDOWS_STARTUP_LEGACY_SCRIPT_NAME = 'LiveDesk Client.vbs';
60
- const WINDOWS_STARTUP_LEGACY_CMD_NAME = 'LiveDesk Client.cmd';
57
+ const WINDOWS_STARTUP_SCRIPT_NAME = 'VuvoDesk Desktop.vbs';
58
+ const WINDOWS_STARTUP_LEGACY_DESKTOP_SCRIPT_NAME = 'LiveDesk Desktop.vbs';
59
+ const WINDOWS_STARTUP_LEGACY_SCRIPT_NAME = 'LiveDesk Client.vbs';
60
+ const WINDOWS_STARTUP_LEGACY_CMD_NAME = 'LiveDesk Client.cmd';
61
61
  const SUPABASE_URL = process.env.LIVEDESK_SUPABASE_URL || 'https://otbyfkjxrkngvjziawki.supabase.co';
62
62
  const SUPABASE_PUBLISHABLE_KEY = process.env.LIVEDESK_SUPABASE_PUBLISHABLE_KEY || 'sb_publishable_NpUs0RDJH2YnllsqTKO6TQ_1jTdSsNQ';
63
63
  const CLIENT_STATE_DIR = process.env.LIVEDESK_CLIENT_STATE_DIR || join(os.homedir(), '.livedesk-client');
@@ -738,15 +738,15 @@ function getWindowsStartupScriptPath() {
738
738
  return join(getWindowsStartupDir(), WINDOWS_STARTUP_SCRIPT_NAME);
739
739
  }
740
740
 
741
- function getLegacyWindowsStartupCommandPath() {
742
- return join(getWindowsStartupDir(), WINDOWS_STARTUP_LEGACY_CMD_NAME);
743
- }
744
-
745
- function getLegacyWindowsDesktopStartupScriptPath() {
746
- return join(getWindowsStartupDir(), WINDOWS_STARTUP_LEGACY_DESKTOP_SCRIPT_NAME);
747
- }
748
-
749
- function getLegacyWindowsStartupScriptPath() {
741
+ function getLegacyWindowsStartupCommandPath() {
742
+ return join(getWindowsStartupDir(), WINDOWS_STARTUP_LEGACY_CMD_NAME);
743
+ }
744
+
745
+ function getLegacyWindowsDesktopStartupScriptPath() {
746
+ return join(getWindowsStartupDir(), WINDOWS_STARTUP_LEGACY_DESKTOP_SCRIPT_NAME);
747
+ }
748
+
749
+ function getLegacyWindowsStartupScriptPath() {
750
750
  return join(getWindowsStartupDir(), WINDOWS_STARTUP_LEGACY_SCRIPT_NAME);
751
751
  }
752
752
 
@@ -754,12 +754,12 @@ function isWindowsStartupSupported() {
754
754
  return os.platform() === 'win32';
755
755
  }
756
756
 
757
- function isWindowsStartupRegistered() {
758
- return isWindowsStartupSupported() && (
759
- existsSync(getWindowsStartupScriptPath())
760
- || existsSync(getLegacyWindowsDesktopStartupScriptPath())
761
- || existsSync(getLegacyWindowsStartupScriptPath())
762
- );
757
+ function isWindowsStartupRegistered() {
758
+ return isWindowsStartupSupported() && (
759
+ existsSync(getWindowsStartupScriptPath())
760
+ || existsSync(getLegacyWindowsDesktopStartupScriptPath())
761
+ || existsSync(getLegacyWindowsStartupScriptPath())
762
+ );
763
763
  }
764
764
 
765
765
  function quoteCommandArg(value) {
@@ -831,10 +831,10 @@ function registerWindowsStartup(startupArgs = []) {
831
831
  ''
832
832
  ].join('\r\n');
833
833
 
834
- mkdirSync(startupDir, { recursive: true });
835
- writeFileSync(scriptPath, script, 'utf8');
836
- rmSync(getLegacyWindowsDesktopStartupScriptPath(), { force: true });
837
- rmSync(getLegacyWindowsStartupScriptPath(), { force: true });
834
+ mkdirSync(startupDir, { recursive: true });
835
+ writeFileSync(scriptPath, script, 'utf8');
836
+ rmSync(getLegacyWindowsDesktopStartupScriptPath(), { force: true });
837
+ rmSync(getLegacyWindowsStartupScriptPath(), { force: true });
838
838
  rmSync(getLegacyWindowsStartupCommandPath(), { force: true });
839
839
  return { changed: true, supported: true, path: scriptPath };
840
840
  }
@@ -844,12 +844,12 @@ function unregisterWindowsStartup() {
844
844
  return { changed: false, supported: false, path: '' };
845
845
  }
846
846
  const scriptPath = getWindowsStartupScriptPath();
847
- const existed = existsSync(scriptPath)
848
- || existsSync(getLegacyWindowsDesktopStartupScriptPath())
849
- || existsSync(getLegacyWindowsStartupScriptPath())
850
- || existsSync(getLegacyWindowsStartupCommandPath());
851
- rmSync(scriptPath, { force: true });
852
- rmSync(getLegacyWindowsDesktopStartupScriptPath(), { force: true });
847
+ const existed = existsSync(scriptPath)
848
+ || existsSync(getLegacyWindowsDesktopStartupScriptPath())
849
+ || existsSync(getLegacyWindowsStartupScriptPath())
850
+ || existsSync(getLegacyWindowsStartupCommandPath());
851
+ rmSync(scriptPath, { force: true });
852
+ rmSync(getLegacyWindowsDesktopStartupScriptPath(), { force: true });
853
853
  rmSync(getLegacyWindowsStartupScriptPath(), { force: true });
854
854
  rmSync(getLegacyWindowsStartupCommandPath(), { force: true });
855
855
  return { changed: existed, supported: true, path: scriptPath };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livedesk/client",
3
- "version": "0.1.252",
3
+ "version": "0.1.252",
4
4
  "description": "VuvoDesk local remote client",
5
5
  "type": "module",
6
6
  "bin": {
@@ -36,16 +36,16 @@
36
36
  "dependencies": {
37
37
  "@ffmpeg-installer/ffmpeg": "^1.1.0",
38
38
  "ffmpeg-static": "^5.3.0",
39
- "@livedesk/runtime-core": "0.1.6",
39
+ "@livedesk/runtime-core": "0.1.6",
40
40
  "@supabase/supabase-js": "^2.110.0",
41
41
  "node-screenshots": "^0.2.8",
42
42
  "ws": "^8.18.3"
43
43
  },
44
44
  "optionalDependencies": {
45
- "@livedesk/fast-linux-x64": "0.1.448",
46
- "@livedesk/fast-osx-arm64": "0.1.448",
47
- "@livedesk/fast-osx-x64": "0.1.448",
48
- "@livedesk/fast-win-x64": "0.1.448"
45
+ "@livedesk/fast-linux-x64": "0.1.448",
46
+ "@livedesk/fast-osx-arm64": "0.1.448",
47
+ "@livedesk/fast-osx-x64": "0.1.448",
48
+ "@livedesk/fast-win-x64": "0.1.448"
49
49
  },
50
50
  "publishConfig": {
51
51
  "access": "public"
@@ -20,9 +20,9 @@ const SUPABASE_URL = process.env.LIVEDESK_SUPABASE_URL || 'https://otbyfkjxrkngv
20
20
  const SUPABASE_PUBLISHABLE_KEY = process.env.LIVEDESK_SUPABASE_PUBLISHABLE_KEY || 'sb_publishable_NpUs0RDJH2YnllsqTKO6TQ_1jTdSsNQ';
21
21
  const CLIENT_STATE_DIR = process.env.LIVEDESK_STATE_DIR || (process.env.LIVEDESK_UNIFIED_RUNTIME === '1' ? join(os.homedir(), '.livedesk') : join(os.homedir(), '.livedesk-client'));
22
22
  const CLIENT_AUTH_PATH = join(CLIENT_STATE_DIR, 'auth.json');
23
- const DEFAULT_TRUSTED_WEB_ORIGINS = Object.freeze([
24
- 'https://vuvodesk.com',
25
- 'https://livedesk.pages.dev',
23
+ const DEFAULT_TRUSTED_WEB_ORIGINS = Object.freeze([
24
+ 'https://vuvodesk.com',
25
+ 'https://livedesk.pages.dev',
26
26
  'http://127.0.0.1:5173',
27
27
  'http://localhost:5173',
28
28
  'http://127.0.0.1:4173',
@@ -1501,7 +1501,7 @@ export function createClientRuntimeServer(options = {}) {
1501
1501
  return;
1502
1502
  }
1503
1503
  if (pathname === '/api/health') {
1504
- respondJson(200, { ok: true, product: 'LiveDesk', role: 'client', timestamp: new Date().toISOString() });
1504
+ respondJson(200, { ok: true, product: 'LiveDesk', role: 'client', timestamp: new Date().toISOString() });
1505
1505
  return;
1506
1506
  }
1507
1507
  if (pathname === '/api/client/diagnostics') {
@@ -1,5 +1,5 @@
1
1
  extends: file:packages/livedesk/electron/electron-builder.win.yml
2
- artifactName: VuvoDesk-${version}-dev-${arch}.${ext}
2
+ artifactName: VuvoDesk-${version}-dev-${arch}.${ext}
3
3
  directories:
4
4
  output: dist/desktop-dev
5
5
  extraMetadata:
package/electron/main.mjs CHANGED
@@ -53,8 +53,8 @@ import { createDesktopClipboardOwner } from './desktop-clipboard-owner.mjs';
53
53
  // warm-idle process baseline instead of retaining a hidden utility process.
54
54
  app.commandLine.appendSwitch('disable-features', 'AudioServiceOutOfProcess');
55
55
 
56
- const APP_NAME = 'VuvoDesk Desktop';
57
- const DESKTOP_STARTUP_ENTRY_NAME = 'LiveDesk Desktop';
56
+ const APP_NAME = 'VuvoDesk Desktop';
57
+ const DESKTOP_STARTUP_ENTRY_NAME = 'LiveDesk Desktop';
58
58
  const appWindowTitle = () => `${APP_NAME} · ${app.getVersion()}`;
59
59
  const LOCAL_RUNTIME_PORT = Number(process.env.LIVEDESK_LOCAL_RUNTIME_PORT || 5179);
60
60
  const LOCAL_RUNTIME_URL = `http://127.0.0.1:${Number.isInteger(LOCAL_RUNTIME_PORT) && LOCAL_RUNTIME_PORT > 0 ? LOCAL_RUNTIME_PORT : 5179}/`;
@@ -78,11 +78,11 @@ const SUPABASE_URL = DESKTOP_AUTH_CONFIG.supabaseUrl;
78
78
  const SUPABASE_PUBLISHABLE_KEY = DESKTOP_AUTH_CONFIG.publishableKey;
79
79
  const OAUTH_REDIRECT_URI = DESKTOP_AUTH_CONFIG.oauthRedirectUri;
80
80
  const OAUTH_PENDING_TTL_MS = 10 * 60 * 1000;
81
- const LEGACY_STARTUP_ENTRY_NAMES = ['LiveDesk Client.vbs', 'LiveDesk Client.cmd', 'LiveDesk Desktop.vbs'];
81
+ const LEGACY_STARTUP_ENTRY_NAMES = ['LiveDesk Client.vbs', 'LiveDesk Client.cmd', 'LiveDesk Desktop.vbs'];
82
82
  const configuredStateRoot = process.env.LIVEDESK_DESKTOP_STATE_DIR || process.env.LIVEDESK_STATE_DIR || '';
83
83
  const stateRoot = configuredStateRoot
84
84
  ? resolve(configuredStateRoot)
85
- : join(process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local'), 'LiveDesk');
85
+ : join(process.env.LOCALAPPDATA || join(homedir(), 'AppData', 'Local'), 'LiveDesk');
86
86
  const logDir = join(stateRoot, 'logs');
87
87
  const logPath = join(logDir, 'desktop.log');
88
88
  const authSessionPath = join(stateRoot, 'auth-session.json');
@@ -1187,7 +1187,7 @@ function createTray() {
1187
1187
  { label: 'About VuvoDesk', click: () => { void dialog.showMessageBox(mainWindow, { type: 'info', title: APP_NAME, message: APP_NAME, detail: `Version ${app.getVersion()}\nOne VuvoDesk runtime with Hub and Client roles.` }); } },
1188
1188
  { label: 'Open logs', click: () => { void shell.openPath(logDir); } },
1189
1189
  { type: 'separator' },
1190
- { label: 'Start with Windows', type: 'checkbox', checked: app.getLoginItemSettings().openAtLogin, click: item => app.setLoginItemSettings({ openAtLogin: item.checked, name: DESKTOP_STARTUP_ENTRY_NAME }) },
1190
+ { label: 'Start with Windows', type: 'checkbox', checked: app.getLoginItemSettings().openAtLogin, click: item => app.setLoginItemSettings({ openAtLogin: item.checked, name: DESKTOP_STARTUP_ENTRY_NAME }) },
1191
1191
  { label: 'Quit VuvoDesk', click: () => { app.quit(); } }
1192
1192
  ]);
1193
1193
  tray.setContextMenu(menu);
package/hub/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livedesk/hub",
3
- "version": "0.1.50",
3
+ "version": "0.1.50",
4
4
  "description": "VuvoDesk local Hub API and browser frame bridge",
5
5
  "type": "module",
6
6
  "main": "src/server.js",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "dependencies": {
18
18
  "@ffmpeg-installer/ffmpeg": "^1.1.0",
19
- "@livedesk/runtime-core": "0.1.6",
19
+ "@livedesk/runtime-core": "0.1.6",
20
20
  "@openai/codex-sdk": "0.145.0",
21
21
  "cors": "^2.8.5",
22
22
  "express": "^4.21.2",
package/hub/src/server.js CHANGED
@@ -3860,7 +3860,7 @@ function buildHubHealthPayload({
3860
3860
  };
3861
3861
  return {
3862
3862
  ok: true,
3863
- product: 'LiveDesk',
3863
+ product: 'LiveDesk',
3864
3864
  timestamp: new Date().toISOString(),
3865
3865
  persistentSessionGc,
3866
3866
  memoryBeforeGc,
@@ -4323,7 +4323,7 @@ app.get('/api/remote/status', (_req, res) => {
4323
4323
  res.json({
4324
4324
  ...remoteHub.getStatus({ includeSecrets: false }),
4325
4325
  pairingPin: secretStatus.pairingPin,
4326
- product: 'LiveDesk',
4326
+ product: 'LiveDesk',
4327
4327
  runtimeRole,
4328
4328
  deviceId: runtimeDeviceId,
4329
4329
  deviceName: runtimeDeviceName,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "livedesk",
3
- "version": "0.1.593",
4
- "livedeskClientVersion": "0.1.252",
3
+ "version": "0.1.594",
4
+ "livedeskClientVersion": "0.1.252",
5
5
  "buildFlavor": "production",
6
6
  "description": "VuvoDesk Hub and client launcher",
7
7
  "type": "module",
@@ -51,10 +51,10 @@
51
51
  "ws": "^8.18.3"
52
52
  },
53
53
  "optionalDependencies": {
54
- "@livedesk/fast-linux-x64": "0.1.448",
55
- "@livedesk/fast-osx-arm64": "0.1.448",
56
- "@livedesk/fast-osx-x64": "0.1.448",
57
- "@livedesk/fast-win-x64": "0.1.448"
54
+ "@livedesk/fast-linux-x64": "0.1.448",
55
+ "@livedesk/fast-osx-arm64": "0.1.448",
56
+ "@livedesk/fast-osx-x64": "0.1.448",
57
+ "@livedesk/fast-win-x64": "0.1.448"
58
58
  },
59
59
  "publishConfig": {
60
60
  "access": "public"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livedesk/runtime-core",
3
- "version": "0.1.6",
3
+ "version": "0.1.6",
4
4
  "description": "Shared VuvoDesk runtime role and lifecycle contracts",
5
5
  "type": "module",
6
6
  "main": "src/index.js",
@@ -1,6 +1,6 @@
1
1
  export const PRODUCTION_SUPABASE_URL = 'https://otbyfkjxrkngvjziawki.supabase.co';
2
2
  export const PRODUCTION_SUPABASE_PUBLISHABLE_KEY = 'sb_publishable_NpUs0RDJH2YnllsqTKO6TQ_1jTdSsNQ';
3
- export const PRODUCTION_OAUTH_REDIRECT_URI = 'https://vuvodesk.com/desktop-auth-callback';
3
+ export const PRODUCTION_OAUTH_REDIRECT_URI = 'https://vuvodesk.com/desktop-auth-callback';
4
4
  export const PRODUCTION_BUILD_FLAVOR = 'production';
5
5
  export const E2E_BUILD_FLAVOR = 'e2e';
6
6
 
@@ -4,7 +4,7 @@
4
4
  "short_name": "VuvoDesk",
5
5
  "description": "Monitor and control your VuvoDesk computers from your phone.",
6
6
  "lang": "en",
7
- "start_url": "/app?pwa=0.1.593",
7
+ "start_url": "/app?pwa=0.1.594",
8
8
  "scope": "/",
9
9
  "display": "standalone",
10
10
  "orientation": "any",