@burdenoff/website-sdk 2026.1101.2 → 2026.1101.3

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
@@ -372,9 +372,16 @@ publishes audio, video or data, and it sends the avatar nothing to say.
372
372
  production nothing else is added, so no preflight has to complete while the
373
373
  page unloads. The server ends sessions on its own deadlines as well.
374
374
  - **Consent copy is versioned.** The panel shows a consent card only when it
375
- holds reviewed copy for exactly the version the server names (the current
376
- English copy is `web-consent-2026-10-31`, and `web-consent-2026-11` stays for
377
- servers that still name it); otherwise the view stays as it was.
375
+ holds reviewed copy for exactly the version the server names; otherwise the
376
+ view stays as it was. `web-consent-2026-11-02` is product-neutral: its card
377
+ reads "a suggested question" on every site, whatever `productName` is, so
378
+ every product's site shows the same words and the server can bind one notice
379
+ digest for all of them (the card's title, intro, processing, storage and
380
+ privacy-link lines, each ending with a line feed: 760 bytes, SHA-256
381
+ `2e02b051ceb1163c14bc58fa63a954a12c0d1f2695029a6d4805922d74c793f7`).
382
+ `web-consent-2026-10-31` (which names the product, "a suggested Healthy Bowl
383
+ question") and `web-consent-2026-11` stay, unchanged, for servers that still
384
+ name them.
378
385
  - **How a session ended.** When the worker leaves, the server closes the room,
379
386
  or the session's time runs out with the room still open, the view says only
380
387
  "The live avatar has ended." (key `finished`). The browser
@@ -474,6 +474,21 @@ var CONSENT = /* @__PURE__ */ new Map([
474
474
  privacyLink: "How we handle this"
475
475
  }
476
476
  }
477
+ ],
478
+ [
479
+ // The words of web-consent-2026-10-31 with no product name in them: one notice, byte for byte, on every product's
480
+ // site, because the server binds one consent version and one notice digest for all of them.
481
+ "web-consent-2026-11-02",
482
+ {
483
+ en: {
484
+ title: "Live AI avatar (beta)",
485
+ introProduct: null,
486
+ intro: "This is an AI avatar, not a real person. It reads the assistant's first eligible answer to a suggested question aloud for up to a minute. The answer is AI-generated and can be wrong.",
487
+ processing: "When you start, Cloudflare checks for bots. The answer text goes to Google to create the voice. Our server sends that voice through LiveKit to Protoface, which makes the avatar video streamed through LiveKit. Your browser connects to LiveKit, which sees your IP address.",
488
+ storage: "Your microphone and camera are not used. We do not record the live session or store the generated voice. We keep a record of this consent. The privacy notice explains our safeguards, storage periods and the providers' processing. For people aged eighteen and over.",
489
+ privacyLink: "How we handle this"
490
+ }
491
+ }
477
492
  ]
478
493
  ]);
479
494
  function avatarConsentCopy(version, locale) {
@@ -1229,7 +1244,7 @@ function AvatarLiveView({
1229
1244
  className: "w-full max-w-sm rounded-lg border border-border p-4 text-start",
1230
1245
  children: [
1231
1246
  /* @__PURE__ */ jsxRuntime.jsx("h2", { id: consentTitleId, className: "text-base font-semibold", children: copy.title }),
1232
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm", children: productName === null ? copy.intro : chunkO4GS3XPZ_js.fill(copy.introProduct, { product: productName }) }),
1247
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm", children: productName === null || copy.introProduct === null ? copy.intro : chunkO4GS3XPZ_js.fill(copy.introProduct, { product: productName }) }),
1233
1248
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: copy.processing }),
1234
1249
  /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm text-muted-foreground", children: copy.storage }),
1235
1250
  /* @__PURE__ */ jsxRuntime.jsxs(