Home · Forge

bBuzz forge

play in two tabs.

Open a second tab. Turn a knob. Watch it move.

Changes live in these tabs and are not saved.
Tabs in this room
the shared word
places in the field
Open a second tab

the second tab opens beside this one. it only shares with tabs in this browser.

Jam the field.

open another hand ↗ (opens in a new tab)
y.doc://bBuzz-forge-room
reach = this browser · persistence = noneno server, no remote transport

y.map · the shared composition

keyvalue · bound to the room
seed
density
hueBase
hueDrift
symmetry

transport · in order

    open room.html in a new tab

    receipt · this tab

    verify · no trust in this page needed
    • cd forge/visual/test && npm ci && node --test room.test.mjs · real Yjs, an asynchronous channel bus: late join, convergence, the fallback
    • open two tabs · turn density in one · both receipts show the same doc
    • close every tab · open again · the defaults are back: nothing was stored

    the whole room

    The two-tab room Jam the field. The two-tab room // shared state, local render

    Open a second tab. Turn a knob. Watch it move. One shared composition. Every tab is a hand on the same instrument. A Yjs document shared over BroadcastChannel. Each tab renders the same seed and parameters locally.

    this browser only Only tabs in this browser share this composition.

    Open a second tab

    Changes live in these tabs and are not saved.

    Starting the room…

    Tabs in this roomWaiting for another tab.
    Seed and hue drift
    How the two tabs share

    Open this page in another tab of the same browser. Changing a control updates the field in both tabs. Different controls can be changed together. If two tabs change the same control, they eventually agree on one value.

    More about this room

    CRDT layer: forge/visual/shared.js (createSharedPiece) with Yjs 13.6.20 (MIT, Gate BS-1), loaded from jsDelivr. Tabs exchange a complete document snapshot on arrival, then incremental updates over BroadcastChannel. Concurrent edits to separate parameters merge; concurrent edits to one parameter converge on one value.

    This page does not connect people across devices. LiveKit is a planned transport adapter, not an active connection here. Closing every tab discards the room. Private windows, browser profiles and different site origins keep separate rooms.

    Stack: forge/visual/shared.js · createSharedPiece · Yjs 13.6.20 · BroadcastChannel. No persistence or remote transport. The hexfield CORE is unchanged; the same seed and parameters reproduce the same field.