@threadbase-sh/streamer 1.105.1 → 1.106.0

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/README.md CHANGED
@@ -184,7 +184,7 @@ Full endpoint reference: [docs/api-reference.md](docs/api-reference.md).
184
184
 
185
185
  ## Mobile Pairing (QR)
186
186
 
187
- A pairing QR is printed on server start (skip with `--no-pair-qr`), or reprint one anytime with `tb-streamer pair`. Scanning it trades a single-use token for a sealed API key — the key itself never appears in the QR.
187
+ A pairing QR is printed on server start (skip with `--no-pair-qr`), or reprint one anytime with `tb-streamer pair` (`tb-streamer pair --dev` prints one for the TbDev QA app, which registers `threadbase-dev://` so it can sit beside Threadbase). Scanning it trades a single-use token for a sealed API key — the key itself never appears in the QR.
188
188
 
189
189
  If the phone can't reach `localhost`, give it a reachable address via (in order of precedence) `--public-url`, `THREADBASE_PUBLIC_URL`, or `public_url:` in `server.yaml`. HTTPS is required except for `localhost`.
190
190
 
package/dist/cli.cjs CHANGED
@@ -192591,7 +192591,8 @@ async function printServerBanner({
192591
192591
  port,
192592
192592
  apiKey,
192593
192593
  publicUrl,
192594
- includeQr
192594
+ includeQr,
192595
+ scheme = "threadbase"
192595
192596
  }, deps = {}) {
192596
192597
  const log21 = deps.log ?? defaultLog;
192597
192598
  const fetchFn = deps.fetch ?? globalThis.fetch;
@@ -192613,7 +192614,7 @@ async function printServerBanner({
192613
192614
  const { token, expiresAt, expiresInSeconds } = await res.json();
192614
192615
  const expSeconds = Math.floor(expiresAt / 1e3);
192615
192616
  let fingerprint2;
192616
- let payload = `threadbase://pair?url=${encodeURIComponent(url2)}&token=${token}&exp=${expSeconds}`;
192617
+ let payload = `${scheme}://pair?url=${encodeURIComponent(url2)}&token=${token}&exp=${expSeconds}`;
192617
192618
  if (e2eeOffered) {
192618
192619
  const spk = identityKey();
192619
192620
  payload += `&spk=${spk}&v=1`;
@@ -193338,11 +193339,17 @@ program2.command("devices").description("List, revoke and erase paired devices")
193338
193339
  log20.info(`Erased ${deviceId}.`, void 0, "console");
193339
193340
  })
193340
193341
  );
193341
- program2.command("pair").description("Print a pairing QR code (server must already be running)").option("-p, --port <number>", "Port the server is listening on", "8766").action(async (opts) => {
193342
+ program2.command("pair").description("Print a pairing QR code (server must already be running)").option("-p, --port <number>", "Port the server is listening on", "8766").option("--dev", "Pair the TbDev QA app (threadbase-dev://) instead of Threadbase", false).action(async (opts) => {
193342
193343
  const port = Number.parseInt(opts.port, 10);
193343
193344
  const apiKey = loadOrCreateApiKey();
193344
193345
  const publicUrl = loadPublicUrl() ?? null;
193345
- await printServerBanner({ port, apiKey, publicUrl, includeQr: true });
193346
+ await printServerBanner({
193347
+ port,
193348
+ apiKey,
193349
+ publicUrl,
193350
+ includeQr: true,
193351
+ scheme: opts.dev ? "threadbase-dev" : "threadbase"
193352
+ });
193346
193353
  });
193347
193354
  program2.command("codex [path]").description(
193348
193355
  "Start a streamer-managed Codex session in a directory and attach this terminal to it (server must already be running)"