Voice on by default for every new visitor (mute persists)
humuhumu33+1: Claude Opus 4.8
e40897c
Bonsai's on-device pocket-tts voice now defaults ON for a new visitor;
the speaker button still toggles it and a stored "0" (chose to mute) is
respected. The "Start chatting" gesture already unlocks audio via
armNarration, so auto-on produces sound without an extra tap. Shell-only
change (SWR entry, not a sealed member) — manifest unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Self-heal poisoned weight cache: purge + re-fetch on κ MISMATCH
humuhumu33+1: Claude Opus 4.8
d9f5555
holo-load2bit cachedBytes persists each block to holo-kappa-v1 BEFORE
verifying it, so one truncated/corrupted download poisons the cache and
every later load then wedges on "κ MISMATCH" forever. getBlock now purges
the poisoned entry and re-fetches fresh once; a mismatch on the FRESH
bytes is still a real Law-L5 integrity failure and throws. Happy path is
byte-for-byte unchanged. Manifest resealed.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Keep multi-turn conversations fast: snapshot the conversation's KV before the follow-up-suggestion pass evicts it, and restore it before the next turn so only the new turn prefills instead of re-processing the whole thread. Measured 20x faster re-prefill on a 459-token thread (12s to 0.6s, same GPU back-to-back), byte-identical by determinism, gated to long threads on capable desktops.
humuhumu33+1: Claude Fable 5
a593567
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
WARP W0: 27B cross-turn state carry (TTFT no longer grows with history) + incremental detok + specDecode qk_norm lift (byte-identity proven, spec stays opt-in)
humuhumu33+1: Claude Fable 5
1365052
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Protect decode throughput: the background carve now yields the CPU while the mind is generating (the 8B does one GPU readback per token on the main thread, so any concurrent verify+gunzip steals exactly that). Background top-up waits for idle. No effect once weights are resident; matters on a slow first-load.
humuhumu33+1: Claude Fable 5
4845e8d
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fix ERR_FAILED on model switch: the SW served the HF directory-root 302 as the navigation response, and Chrome rejects a redirected Response for a navigation (then it was cached redirected, so it failed on every reload). shell() now rebuilds a clean 200 from the body before caching or returning it, and never serves a redirected cache entry.
humuhumu33+1: Claude Fable 5
b7d7158
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Embed frames boot on the click, not behind the welcome: a returning visitor's silent multi-GB GPU boot inside the Spaces embed iframe was killing the frame. Top-level windows keep the instant behind-the-welcome wake; embeds start on Start chatting with the warm cache making it fast.
humuhumu33+1: Claude Fable 5
1a8aaf0
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Paint first, pull second: the welcome warm now waits 900ms past first paint and runs at half strength inside an embed iframe - the fetch storm racing first paint was killing the Spaces embed frame before it ever painted.
humuhumu33+1: Claude Fable 5
97d52c5
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
SW update no longer wipes the world: activate evicts prior RUNTIME caches only (holo-kappa-rt-*), never the model/ear/voice data caches - a ship must not cold-reboot every returning visitor, and the mass deletion churn was crashing the Spaces embed frame.
humuhumu33+1: Claude Fable 5
6f421c3
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The conversing mind: tap the mic and talk to it. Moonshine hears you on-device (Silero VAD segments, ~300ms transcribe), Bonsai answers, alba speaks it back while it writes, and the mic reopens when the voice finishes - a full voice-to-voice loop, 100% in the browser, audio never leaving the device. The ear, its runtime, the voice and the mind now ship as ONE BLAKE3 object (root 4eed444d...) with per-device slices: phones stream moonshine-tiny, desktops moonshine-base, one hash pins both.
humuhumu33+1: Claude Fable 5
8687cb9
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Karaoke: the clause being spoken lights up in the transcript, bound to the audio clock itself (segment timeline recorded at schedule time) - text and voice cannot drift. Quiet wash, no motion, zero residue when playback ends or a new question barges in.
humuhumu33+1: Claude Fable 5
0242e85
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The speaking mind, one kappa: Bonsai 8B and its voice now stream as ONE BLAKE3-rooted object (root ceb22e28...) carved into the cache by verified range windows; the voice arrives first and narrates the mind's arrival; sentences batch into single generates for natural prosody; synthesis is seeded-deterministic so spoken clauses are content-addressed and replay in O(1).
humuhumu33+1: Claude Fable 5
f94d26f
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The mind speaks: pocket-tts voice as a kappa-object. Toggle the speaker and answers are spoken clause by clause while they stream; the voice's 76 MB brain arrives as verified content-addressed blocks from HOLOGRAMTECH/q-pocket-tts, warms once, then works offline. Barge-in is instant; the think block is never spoken; voice off stays byte-identical.
humuhumu33+1: Claude Fable 5
8b948e5
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
No more dead 0%: the loading line now counts real bytes, starts where the welcome head-start left off, and everything the load needs (manifest, GPU adapter) begins at first paint instead of at the click.
Humuhumu33
8551d9d
The kappa-swarm: blocks race across mirrors, every byte re-verified before it counts (a hostile or flaky CDN can only lose), broken transfers retry to 100%. Plus an honest ?bench=load mode showing exactly where load time goes.
Humuhumu33
8aa062f
Instant first load: the 27B mind starts streaming its verified blocks the moment the welcome paints, into the loader's own cache. Always open on 27B; warm the 8B too so switching is fast. Entering is near-instant; revisits are offline.
Humuhumu33
0336867
Model picker is now a dropdown (pick 27B or 8B, stay in the chat), and the loading line is plain and honest: 'Loading Bonsai 27B - 30%' with real progress, no jargon.
Humuhumu33
7b68496
Welcome screen, golden-ratio pass: copy holds the phi-major column, the ring floats in the phi-minor, headline lands on two lines, and it stays balanced and legible from a 320px phone to an ultrawide.
Humuhumu33
5e03db2
Re-mint the κ-runtime manifest over the 27B build (26 members) + vendor; seal is now part of build-space
humuhumu33+1: Claude Fable 5
89c3fca
The 27B ship carried a stale 14-member manifest — returning visitors whose browser runs the κ-runtime
would refuse drifted members (409). The manifest is re-minted over the exact served bytes, and
build-space.mjs now runs the seal on every build so the manifest and files can never drift again.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Model name is now the switch: tap it in the chat to glide between the 27B mind and the fast 8B. 27B stays the default; the swap lands you straight back in the conversation.
Humuhumu33
f9f6ffb
Welcome screen: remove the model toggle for a cleaner, calmer entry. 27B stays the default mind; the fast 8B remains one URL away (?m=8b).
Humuhumu33
b39f419
Bonsai 27B is now the default: the full 27B mind runs in your browser (4-5 tok/s, watch it think), with a one-tap toggle to the fast 8B. Verified q1 hybrid engine + app bridge.
Humuhumu33
730dfb5
κ-runtime: serve the HF-wrapped HTML shell (not verified), verify all code members
humuhumu33+1: Claude Opus 4.8
fe909f5
HF injects <script>window.huggingface=...</script> into every static .html, so the top document is not
byte-stable and cannot be content-verified. Fix: the runtime serves index.html stale-while-revalidate
(cached instantly, offline, refreshed in background) and does NOT verify it; every code member the shell
loads (the 8B engine, all q/ modules + wasm) stays verify-on-read, fail-closed. Manifest drops index.html
from members (14 verified members); root is now the closure digest.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- index.html IS the app now: paints on the first byte, no loader / no reload / no iframe (fastest first paint)
- portal-sw.js is a CLASSIC service worker (inlined blake3, no ES-module import) → works on iOS Safari and
every browser (the module SW failed on Safari — this fixes 'any mobile/desktop browser')
- the runtime serves every same-origin file content-addressed: cache-first BY HASH (repeat visits 0-network,
instant, offline), verify-on-read (re-derive to blake3 κ), fail-closed (409 on tamper), SWR on the manifest
- precache the tiny entry on install → first repeat visit is instant + offline
- dropped dead-weight vendored three.js (the ring is a 2D canvas); removed prior module-SW files
- subtle honest 'offline-ready' signal once the closure is cached
Verified: first paint immediate, classic SW active+controlling, members served with x-kappa, tamper→409,
mobile 375px no overflow, every staged blob re-derives to its κ.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Boot inside the κ-addressable holospace runtime from byte zero
humuhumu33+1: Claude Opus 4.8
1f751a7
- index.html is now a byte-zero loader: installs a κ-runtime service worker, then steps into the app THROUGH it
- portal-sw.js = the κ-runtime: serves every same-origin member content-addressed, verify-on-read (blake3),
fail-closed (409 on any byte that does not re-derive to its κ), content-cached by hash → offline + instant on repeat
- app.html = the Bonsai app (former index.html), served & verified by the runtime; larger login ring, warm-visit
ring no longer disappears, em-dash removed from copy
- manifest.holo.json = the closure (17 κ-members); _shared/holo-blake3.mjs + holo-l5.mjs = σ-axis + L5 primitive
- .gitattributes: members are content-addressed → stored byte-exact (-text) so served bytes match their κ
- fail-open: no service worker or any boot error → the app still loads directly
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
O(1) κ-answer memo: greedy decode is deterministic, so a repeated (model,input) serves its answer from its content address — instant, byte-identical, labeled honestly
Humuhumu33
0cbced2
Bonsai landing: login-screen ring (abstract_ring, transparent), neutral bone accent, tighter copy
humuhumu33+1: Claude Opus 4.8
f35f8a5
- Right-side animation now the exact greeter theme (abstract_ring dark-sphere torus)
- Chroma-key black to transparent (greeter keyBlack) — no black box behind the ring
- Replace Claude coral accent with a neutral bone fill (premium, mono, sharp)
- Welcome/chat copy: concise, jargon-free, why/how/what
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
welcome animation = the OS greeter's own Plymouth metal_ball theme, played exactly as the OS plays it (progressive stream, Cache API warm, 25fps, no added effects)
Grok-exact follow-ups: model authors its own two next questions from the real exchange, stacked in the conversation flow; context raised to 2048 so reasoning + answer complete
Humuhumu33
17e72d9
welcome centerpiece: wireframe holographic torus (stock three.js primitives, Claude palette)
Humuhumu33
57fe074
Grok-flavored chat in Claude palette: Thought-for-Ns reasoning header, copy+regenerate action row, right-aligned user bubble, local follow-up chips (no fake sources)