feat(web): embed beat audio into gallery and infiplot exports
Walk every speaking beat at export time, reuse current scene's beatAudioMap, and synth the rest via BYO TTS or /api/beat-audio with concurrency 4. Show a progress toast on the play page while collecting. Gallery export keeps audio in a sidecar localStorage key so the first paint is not blocked by JSON.parse-ing several MB of base64; the gallery lazy-loads it after the first scene image, then plays per-beat audio with a mute toggle persisted to localStorage. .infiplot share files embed audioByBeatId in the doc itself (v2); on import the data URIs survive scene swaps and feed back into the per-beat audio map so replayers hear the original voices for free. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -4,8 +4,8 @@ export const runtime = "nodejs";
|
||||
|
||||
// Cap a bit above pack's MAX_DOC_BYTES — ciphertext adds the 16-byte GCM tag
|
||||
// and the 17-byte header; some slack accommodates near-cap docs without
|
||||
// rejecting them at unpack time.
|
||||
const MAX_FILE_BYTES = 6_000_000;
|
||||
// rejecting them at unpack time. Bumped to fit pre-baked beat audio.
|
||||
const MAX_FILE_BYTES = 13_000_000;
|
||||
|
||||
// Decrypt a `.infiplot` share file back to its doc JSON string. Returns the
|
||||
// plaintext as a JSON field (not raw bytes) so the client can chain it through
|
||||
|
||||
Reference in New Issue
Block a user