vibelet 1.2.192 → 1.2.195

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,2 +1,2 @@
1
- var c=require("node:fs"),n=require("node:path"),p="@vibelet/cli";function i(r){try{let e=JSON.parse((0,c.readFileSync)(r,"utf8"));if(e.name===p&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function l(){return"1.2.192"}var a=l();process.stdout.write(`${a}
1
+ var c=require("node:fs"),n=require("node:path"),p="@vibelet/cli";function i(r){try{let e=JSON.parse((0,c.readFileSync)(r,"utf8"));if(e.name===p&&typeof e.version=="string"&&e.version.length>0)return e.version}catch{}return null}function l(){return"1.2.195"}var a=l();process.stdout.write(`${a}
2
2
  `);
package/dist/vibelet.mjs CHANGED
@@ -982,7 +982,7 @@ module.exports = KanjiData
982
982
 
983
983
  /***/ }),
984
984
 
985
- /***/ 433:
985
+ /***/ 2814:
986
986
  /***/ ((__unused_webpack_module, exports) => {
987
987
 
988
988
  /**
@@ -1525,7 +1525,7 @@ const BitBuffer = __nccwpck_require__(5654)
1525
1525
  const BitMatrix = __nccwpck_require__(7765)
1526
1526
  const AlignmentPattern = __nccwpck_require__(3062)
1527
1527
  const FinderPattern = __nccwpck_require__(5837)
1528
- const MaskPattern = __nccwpck_require__(433)
1528
+ const MaskPattern = __nccwpck_require__(2814)
1529
1529
  const ECCode = __nccwpck_require__(9261)
1530
1530
  const ReedSolomonEncoder = __nccwpck_require__(4449)
1531
1531
  const Version = __nccwpck_require__(1796)
@@ -7417,7 +7417,7 @@ function inflateOnError(err) {
7417
7417
 
7418
7418
  /***/ }),
7419
7419
 
7420
- /***/ 2814:
7420
+ /***/ 433:
7421
7421
  /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => {
7422
7422
 
7423
7423
 
@@ -9780,7 +9780,7 @@ const { Duplex, Readable } = __nccwpck_require__(2203);
9780
9780
  const { URL } = __nccwpck_require__(7016);
9781
9781
 
9782
9782
  const PerMessageDeflate = __nccwpck_require__(7388);
9783
- const Receiver = __nccwpck_require__(2814);
9783
+ const Receiver = __nccwpck_require__(433);
9784
9784
  const Sender = __nccwpck_require__(5601);
9785
9785
  const { isBlob } = __nccwpck_require__(155);
9786
9786
 
@@ -12558,7 +12558,7 @@ var extension = __nccwpck_require__(387);
12558
12558
  // EXTERNAL MODULE: ../../node_modules/ws/lib/permessage-deflate.js
12559
12559
  var permessage_deflate = __nccwpck_require__(7388);
12560
12560
  // EXTERNAL MODULE: ../../node_modules/ws/lib/receiver.js
12561
- var receiver = __nccwpck_require__(2814);
12561
+ var receiver = __nccwpck_require__(433);
12562
12562
  // EXTERNAL MODULE: ../../node_modules/ws/lib/sender.js
12563
12563
  var sender = __nccwpck_require__(5601);
12564
12564
  // EXTERNAL MODULE: ../../node_modules/ws/lib/subprotocol.js
@@ -14260,7 +14260,8 @@ function describeLaunchctlResult(result) {
14260
14260
  /* harmony export */ YP: () => (/* binding */ createCompactPairingPayload),
14261
14261
  /* harmony export */ dE: () => (/* binding */ findUnsafeCleartextHosts),
14262
14262
  /* harmony export */ mp: () => (/* binding */ applyRelayUrlToPairingPayload),
14263
- /* harmony export */ uR: () => (/* binding */ formatConnectionSummary)
14263
+ /* harmony export */ uR: () => (/* binding */ formatConnectionSummary),
14264
+ /* harmony export */ u_: () => (/* binding */ createScannablePairingPayload)
14264
14265
  /* harmony export */ });
14265
14266
  /* unused harmony exports normalizeHostValue, isIpv4Host, isTailscaleHost, isSharedIpv4Host, isLocalNetworkHost, isLoopbackHost, isPlainLocalHostname, isTrustedCleartextHost, parseCommaSeparatedHosts, isQuickTunnelHost, buildLegacyConnection, formatConnectionSourceLabel, buildConnectionHttpUrl, isPreferredWebUiHost, encodePairingPayloadForUrlFragment */
14266
14267
  function normalizeHostValue(host) {
@@ -14529,6 +14530,43 @@ function createCompactPairingPayload(pairingPayload) {
14529
14530
  return compactPayload;
14530
14531
  }
14531
14532
 
14533
+ /**
14534
+ * Keep camera-scanned QR codes small enough for reliable terminal capture.
14535
+ * The canonical target is sufficient for the initial /pair/create request;
14536
+ * that response returns the daemon's complete connection list for subsequent
14537
+ * reconnects. Preserve the primary tuple only when h/p cannot represent the
14538
+ * transport capability on its own.
14539
+ */
14540
+ function createScannablePairingPayload(pairingPayload) {
14541
+ const compactPayload = {
14542
+ t: 'vp',
14543
+ d: pairingPayload.daemonId,
14544
+ n: pairingPayload.displayName,
14545
+ h: pairingPayload.canonicalHost,
14546
+ p: pairingPayload.port,
14547
+ c: pairingPayload.pairNonce,
14548
+ e: pairingPayload.expiresAt,
14549
+ };
14550
+ const [primary] = normalizePairingConnections(pairingPayload);
14551
+ const needsExplicitTransport =
14552
+ primary && (Boolean(primary.tailcat) || (primary.secure === true && primary.port !== 443));
14553
+ if (needsExplicitTransport) {
14554
+ const tuple = [
14555
+ primary.kind,
14556
+ primary.host,
14557
+ primary.port,
14558
+ primary.source,
14559
+ primary.stability,
14560
+ primary.secure === true,
14561
+ ];
14562
+ if (primary.tailcat) {
14563
+ tuple.push(primary.tailcat.serverAddress, primary.tailcat.remotePort);
14564
+ }
14565
+ compactPayload.o = [tuple];
14566
+ }
14567
+ return compactPayload;
14568
+ }
14569
+
14532
14570
  function formatConnectionSourceLabel(source) {
14533
14571
  switch (source) {
14534
14572
  case 'configured_relay':
@@ -14600,6 +14638,47 @@ function buildWebUiUrl(target, pairingPayload) {
14600
14638
  }
14601
14639
 
14602
14640
 
14641
+ /***/ }),
14642
+
14643
+ /***/ 4021:
14644
+ /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __nccwpck_require__) => {
14645
+
14646
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
14647
+ /* harmony export */ p: () => (/* binding */ writePairingOutput)
14648
+ /* harmony export */ });
14649
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
14650
+ /* harmony import */ var qrcode__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(7514);
14651
+ /* harmony import */ var _vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(7721);
14652
+
14653
+
14654
+
14655
+
14656
+ async function writePairingOutput(pairingPayload, { directory, pairingCodePath, pairingQrPngPath, stdout }) {
14657
+ const payload = JSON.stringify((0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_2__/* .createCompactPairingPayload */ .YP)(pairingPayload));
14658
+ const qrPayload = JSON.stringify((0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_2__/* .createScannablePairingPayload */ .u_)(pairingPayload));
14659
+ const deepLink = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_2__/* .buildPairingDeepLink */ .N7)(payload);
14660
+ (0,node_fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync)(directory, { recursive: true });
14661
+ await qrcode__WEBPACK_IMPORTED_MODULE_1__.toFile(pairingQrPngPath, qrPayload, {
14662
+ type: 'png',
14663
+ errorCorrectionLevel: 'M',
14664
+ margin: 4,
14665
+ scale: 8,
14666
+ });
14667
+ const qr = await qrcode__WEBPACK_IMPORTED_MODULE_1__.toString(qrPayload, {
14668
+ type: 'utf8',
14669
+ errorCorrectionLevel: 'M',
14670
+ margin: 4,
14671
+ });
14672
+ (0,node_fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync)(pairingCodePath, `${payload}\n`, 'utf8');
14673
+ stdout.write(`\nScan this QR code with the Vibelet app:\n\n\x1b[47m\x1b[30m${qr}\x1b[0m\n`);
14674
+ stdout.write(`If Vibelet app can't scan the terminal QR, open this PNG instead:\n${pairingQrPngPath}\n`);
14675
+ stdout.write(`This pairing QR expires at: ${pairingPayload.expiresAt}\n`);
14676
+ stdout.write(`If this device can't scan, paste this pairing code in Vibelet:\n${payload}\n`);
14677
+ stdout.write(`Pairing code saved to:\n${pairingCodePath}\n`);
14678
+ stdout.write(`Or open this deep link on a device with Vibelet installed:\n${deepLink}\n`);
14679
+ }
14680
+
14681
+
14603
14682
  /***/ }),
14604
14683
 
14605
14684
  /***/ 4:
@@ -14870,18 +14949,18 @@ __nccwpck_require__.a(__webpack_module__, async (__webpack_handle_async_dependen
14870
14949
  /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(8161);
14871
14950
  /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6760);
14872
14951
  /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(3136);
14873
- /* harmony import */ var qrcode__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(7514);
14874
14952
  /* harmony import */ var _vibelet_cli_args_mjs__WEBPACK_IMPORTED_MODULE_17__ = __nccwpck_require__(6927);
14875
- /* harmony import */ var _cloudflared_tunnel_manager_mjs__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(2755);
14876
- /* harmony import */ var _vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(3869);
14953
+ /* harmony import */ var _cloudflared_tunnel_manager_mjs__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(2755);
14954
+ /* harmony import */ var _vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(3869);
14877
14955
  /* harmony import */ var _vibelet_launchd_mjs__WEBPACK_IMPORTED_MODULE_13__ = __nccwpck_require__(1010);
14878
- /* harmony import */ var _linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(4217);
14956
+ /* harmony import */ var _linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(4217);
14879
14957
  /* harmony import */ var _vibelet_stop_logic_mjs__WEBPACK_IMPORTED_MODULE_14__ = __nccwpck_require__(6274);
14880
14958
  /* harmony import */ var _vibelet_help_mjs__WEBPACK_IMPORTED_MODULE_16__ = __nccwpck_require__(4162);
14881
- /* harmony import */ var _vibelet_tailcat_config_mjs__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(5798);
14959
+ /* harmony import */ var _vibelet_tailcat_config_mjs__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(5798);
14882
14960
  /* harmony import */ var _vibelet_runtime_policy_mjs__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(4);
14883
- /* harmony import */ var _terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(1168);
14961
+ /* harmony import */ var _terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(1168);
14884
14962
  /* harmony import */ var _vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_15__ = __nccwpck_require__(7721);
14963
+ /* harmony import */ var _vibelet_pairing_output_mjs__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(4021);
14885
14964
 
14886
14965
 
14887
14966
 
@@ -14916,12 +14995,12 @@ const runtimeDir = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, '
14916
14995
  const runtimeCurrentDir = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(runtimeDir, 'current');
14917
14996
  const runtimeMetadataPath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(runtimeCurrentDir, 'runtime.json');
14918
14997
  const runtimeDaemonEntryPath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(runtimeCurrentDir, 'dist', 'index.cjs');
14919
- const runtimeTerminalControlTokenPath = _terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_11__/* .terminalControlTokenPath */ .gJ;
14998
+ const runtimeTerminalControlTokenPath = _terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_10__/* .terminalControlTokenPath */ .gJ;
14920
14999
  const stdoutLogPath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(logDir, 'daemon.stdout.log');
14921
15000
  const stderrLogPath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(logDir, 'daemon.stderr.log');
14922
15001
  const pidFilePath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'daemon.pid');
14923
- const relayConfig = (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_8__/* .createRelayConfigStore */ .T7)((0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'relay.json'));
14924
- const tailcatConfig = (0,_vibelet_tailcat_config_mjs__WEBPACK_IMPORTED_MODULE_10__/* .createTailcatConfigStore */ .S)((0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'tailcat.json'), vibeletDir);
15002
+ const relayConfig = (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_7__/* .createRelayConfigStore */ .T7)((0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'relay.json'));
15003
+ const tailcatConfig = (0,_vibelet_tailcat_config_mjs__WEBPACK_IMPORTED_MODULE_9__/* .createTailcatConfigStore */ .S)((0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'tailcat.json'), vibeletDir);
14925
15004
  const tunnelStatePath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'tunnel.json');
14926
15005
  const cloudflaredUpdateStatePath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'cloudflared-update.json');
14927
15006
  const updateCheckPath = (0,node_path__WEBPACK_IMPORTED_MODULE_4__.join)(vibeletDir, 'update-check.json');
@@ -15409,10 +15488,10 @@ function createLinuxBackend() {
15409
15488
  return [result?.stderr, result?.stdout].filter(Boolean).join('\n').trim();
15410
15489
  }
15411
15490
 
15412
- let useSystemd = (0,_linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_9__/* .canUseSystemdUserManager */ .X)();
15491
+ let useSystemd = (0,_linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_8__/* .canUseSystemdUserManager */ .X)();
15413
15492
 
15414
15493
  function demoteToDetachedIfSystemdUnavailable(result) {
15415
- if (!(0,_linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_9__/* .isSystemdUserManagerUnavailable */ .a)(resultOutput(result))) {
15494
+ if (!(0,_linux_systemd_mjs__WEBPACK_IMPORTED_MODULE_8__/* .isSystemdUserManagerUnavailable */ .a)(resultOutput(result))) {
15416
15495
  return false;
15417
15496
  }
15418
15497
  useSystemd = false;
@@ -15711,7 +15790,7 @@ function isDaemonStartCommand(command) {
15711
15790
  }
15712
15791
 
15713
15792
  function retireTrackedQuickTunnel({ required = false } = {}) {
15714
- return (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_8__/* .retireTrackedQuickTunnel */ .zj)({
15793
+ return (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_7__/* .retireTrackedQuickTunnel */ .zj)({
15715
15794
  tunnelStatePath,
15716
15795
  isAlive: isProcessAlive,
15717
15796
  required,
@@ -15764,26 +15843,12 @@ function validateExplicitCleartextHosts({ hostArg, fallbackHostsArg }) {
15764
15843
  }
15765
15844
 
15766
15845
  async function printPairingQr(pairingPayload) {
15767
- const payload = JSON.stringify((0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_15__/* .createCompactPairingPayload */ .YP)(pairingPayload));
15768
- const deepLink = (0,_vibelet_pairing_connections_mjs__WEBPACK_IMPORTED_MODULE_15__/* .buildPairingDeepLink */ .N7)(payload);
15769
- (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.mkdirSync)(vibeletDir, { recursive: true });
15770
- await qrcode__WEBPACK_IMPORTED_MODULE_6__.toFile(pairingQrPngPath, payload, {
15771
- type: 'png',
15772
- errorCorrectionLevel: 'M',
15773
- margin: 1,
15774
- scale: 4,
15775
- });
15776
- const qr = await qrcode__WEBPACK_IMPORTED_MODULE_6__.toString(payload, {
15777
- type: 'terminal',
15778
- small: true,
15779
- errorCorrectionLevel: 'M',
15846
+ await (0,_vibelet_pairing_output_mjs__WEBPACK_IMPORTED_MODULE_11__/* .writePairingOutput */ .p)(pairingPayload, {
15847
+ directory: vibeletDir,
15848
+ pairingCodePath,
15849
+ pairingQrPngPath,
15850
+ stdout: process.stdout,
15780
15851
  });
15781
- (0,node_fs__WEBPACK_IMPORTED_MODULE_1__.writeFileSync)(pairingCodePath, `${payload}\n`, 'utf8');
15782
- process.stdout.write(`\nScan this QR code with the Vibelet app:\n\n${qr}\n`);
15783
- process.stdout.write(`If Vibelet app can't scan the terminal QR, open this PNG instead:\n${pairingQrPngPath}\n`);
15784
- process.stdout.write(`If this device can't scan, paste this pairing code in Vibelet:\n${payload}\n`);
15785
- process.stdout.write(`Pairing code saved to:\n${pairingCodePath}\n`);
15786
- process.stdout.write(`Or open this deep link on a device with Vibelet installed:\n${deepLink}\n`);
15787
15852
  }
15788
15853
 
15789
15854
  // ─── Commands ───────────────────────────────────────────────────────────────────
@@ -15892,7 +15957,7 @@ function parseCommandArg(argv) {
15892
15957
  }
15893
15958
 
15894
15959
  async function tryUpdateRunningDaemonRelay(relayUrl) {
15895
- return await (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_8__/* .tryUpdateRunningDaemonRelay */ .BT)({ port, relayUrl, probeHealth });
15960
+ return await (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_7__/* .tryUpdateRunningDaemonRelay */ .BT)({ port, relayUrl, probeHealth });
15896
15961
  }
15897
15962
 
15898
15963
  async function main() {
@@ -15924,10 +15989,10 @@ async function main() {
15924
15989
  return;
15925
15990
  }
15926
15991
 
15927
- if ((0,_terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_11__/* .isTerminalAgentCommand */ .$c)(command)) {
15992
+ if ((0,_terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_10__/* .isTerminalAgentCommand */ .$c)(command)) {
15928
15993
  const backend = resolveBackend();
15929
15994
  await ensureDaemonForTerminalControl(backend);
15930
- process.exitCode = await (0,_terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_11__/* .runManagedNativeTerminal */ .WA)({
15995
+ process.exitCode = await (0,_terminal_wrapper_mjs__WEBPACK_IMPORTED_MODULE_10__/* .runManagedNativeTerminal */ .WA)({
15931
15996
  agent: command,
15932
15997
  args: process.argv.slice(3),
15933
15998
  port,
@@ -16030,7 +16095,7 @@ async function main() {
16030
16095
  }
16031
16096
 
16032
16097
  if (shouldManageTunnel) {
16033
- const managedTunnel = await (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_8__/* .prepareManagedQuickTunnel */ .kS)({
16098
+ const managedTunnel = await (0,_vibelet_cloudflare_runtime_mjs__WEBPACK_IMPORTED_MODULE_7__/* .prepareManagedQuickTunnel */ .kS)({
16034
16099
  force: forceFlag,
16035
16100
  port,
16036
16101
  logDir,
@@ -16093,7 +16158,7 @@ async function main() {
16093
16158
  if (command === 'status') {
16094
16159
  process.stdout.write(`Service (${backend.name}): ${backend.statusLabel()}\n`);
16095
16160
  process.stdout.write(`Runtime: ${(0,node_fs__WEBPACK_IMPORTED_MODULE_1__.existsSync)(runtimeDaemonEntryPath) ? runtimeDaemonEntryPath : 'not installed'}\n`);
16096
- const tunnelState = await (0,_cloudflared_tunnel_manager_mjs__WEBPACK_IMPORTED_MODULE_7__/* .getAliveManagedQuickTunnel */ .M)({
16161
+ const tunnelState = await (0,_cloudflared_tunnel_manager_mjs__WEBPACK_IMPORTED_MODULE_6__/* .getAliveManagedQuickTunnel */ .M)({
16097
16162
  tunnelStatePath,
16098
16163
  isAlive: isProcessAlive,
16099
16164
  managerId: 'vibelet-cli',
@@ -16245,7 +16310,11 @@ async function main() {
16245
16310
  const runningDriver = normalizeDriver(existingHealth.claudeDriverMode);
16246
16311
  const driverMismatch = requestedDriver !== null && runningDriver !== requestedDriver;
16247
16312
  const needsRestart = Boolean(isOutdated) || driverMismatch;
16248
- if (needsRestart && activeSessions === 0 && !canApplyConnectionConfigWithoutRestart) {
16313
+ // A relay refresh is only safe when it is applied by the daemon that will
16314
+ // actually serve the new pairing QR. If the installed runtime is older,
16315
+ // restart it before printing the QR; otherwise the QR can advertise a new
16316
+ // relay while the running daemon remains bound to the old one.
16317
+ if (needsRestart && activeSessions === 0) {
16249
16318
  process.stdout.write(
16250
16319
  isOutdated
16251
16320
  ? `Daemon is running v${runningVersion}, CLI is v${packageJson.version}. Restarting daemon to upgrade...\n`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibelet",
3
- "version": "1.2.192",
3
+ "version": "1.2.195",
4
4
  "description": "Cross-platform CLI for installing and running the Vibelet daemon",
5
5
  "homepage": "https://vibelet.icu",
6
6
  "files": [