AudioBridger — Changelog
========================

What's new in each public release of AudioBridger. Newest at the top.


--------------------------------------------------------------------
1.2.0 — Node Graph                              Released 2026-05-28
--------------------------------------------------------------------

Effects became a real node-graph editor. Wires are wires; cut means
cut; fan out a single FX to as many receivers as you like and edits
stay in lock-step across every mirror.


What's new
----------

  * Ten built-in effects per source: gain, pan, hard limiter,
    compressor, 5-band parametric EQ, noise gate, de-esser, delay,
    reverb and saturator. Each runs on the receiver, in the source's
    own DSP chain, before the mixer.

  * Node-graph effects editor. Drop an FX card on the canvas first
    and wire it up later. Drag from any sender's OUT, FX IN/OUT, or
    receiver IN to any compatible port. Pending wires draw dashed
    and turn solid green when the full sender -> ... -> receiver
    path is complete.

  * Fan-out. Drag an FX's OUT port to multiple receivers (or into
    other FX inputs) and they all hear the same DSP. Edits stay in
    lock-step across every mirror — slide a fader on one card,
    every copy moves.

  * Cut wires stay cut. Click a chain wire, press Delete, and only
    that wire goes. Audio stops on that path until you re-wire it.
    The FX cards stay where they were, with dashed wires showing
    what used to be connected — no auto-reconnect, no surprises.

  * Sample-rate conversion. Mismatched sample rates used to be
    silently rejected. Now they get a linear-interp resampler on
    the fly, and a yellow hazard chip on the mixer row tells you
    what's being converted (and to what), so you can fix it at
    source for best quality.

  * Compressor & EQ presets. Built-in starter presets (Vocal, Drum
    Bus, Mix Bus, Limiter-ish, Gentle Glue for the compressor;
    Flat, Vocal Air, Low Cut, Telephone, Smile, Warm, Bright for
    the EQ) plus Save / Load / Reset / Delete for your own custom
    presets, stored per browser.

  * Wider compressor card, taller EQ display. Compressor card now
    280px wide with the transfer-curve graph filling the width. EQ
    frequency response shows the live composite curve plus
    individual band curves in band-coloured ink.


Receiver
--------

  * Linear-interp resampler in the mix loop. Sources at any sample
    rate are accepted; the receiver pulls them at the source's
    native rate and produces the right number of output frames for
    the mixer. Phase is carried across calls + previous-frame is
    remembered so there are no clicks at buffer boundaries.


Hub
---

  * Unwired FX survive restarts. Dropped an FX card on the canvas
    but haven't wired it up yet? It stays put after a hub restart
    and replicates to standby hubs under HA.

  * Slider edits sync across mirrors. Adjust a parameter on one FX
    card and every fanned-out copy moves with it — one action,
    every receiver hears the change.

  * Deleting a route actually disconnects. Used to leave the
    receiver briefly chasing the last known sender; now it goes
    quiet immediately.

  * No more spurious "failed to write config" errors. Back-to-back
    edits no longer race the disk write.


UI
--

  * Compatible across browsers: a thorough Safari pass landed all
    the WebKit foreignObject quirks (inline width/height, no
    opacity for dimming, flex layout instead of position:absolute,
    plain text mute pill instead of speaker emoji). Sender/receiver
    cards, FX cards, VU meters and chain wires now render cleanly
    in Safari, Firefox and Chrome.


Node-graph polish
-----------------

  * One wire = one logical edge. Mirrored FX cards used to draw one
    wire per chain, so a delete or splice on the visible wire only
    touched one mirror and left ghost wires behind. Wires now
    dedupe across mirror chains, and add / delete / palette-splice
    broadcast to every chain that holds the same edge.

  * Multi-downstream DSP. A single FX can now fan out to multiple
    downstream FX inside the same chain. The receiver-side
    processor topo-sorts the graph and sums branches at merge
    points, so splitting a signal and recombining it works without
    external mixing.

  * Persistence fixes. Effect chains saved in the richer object
    form ({nodes, edges}) are reloaded correctly on hub restart —
    previously the loader only accepted the legacy array shape and
    silently dropped the rest, so every restart wiped chains.

  * Mirror-aware port drags. Drags from a sender or receiver port
    onto a mirrored FX now route the edge into the chain that
    needs it, not whichever chain the card happened to render
    against.

  * FX cards stop drifting when sender / receiver cards move.
    Auto-placed positions are frozen on first compute (per
    node_id, across status polls) so only the dragged card's
    directly-attached wires follow it.

  * Click empty canvas to clear FX wire selection (matches the
    sender/receiver wire selection behaviour).

  * DSP path-search. A node with multiple outgoing edges no longer
    randomly picks the first one as the audio path — the processor
    follows whichever branch actually reaches __receiver__.

  * Receiver VU reflects what comes out, not what comes in. Used
    to feed the raw incoming packet into the receiver's display
    VU, so two receivers subscribed to the same source mirrored
    each other's meters even when one had a broken DSP chain. Now
    the meter is driven from the post-DSP, post-mix output buffer
    — a broken chain shows a flat VU.


--------------------------------------------------------------------
1.1.0 — Initial public release                  Released 2026-05-09
--------------------------------------------------------------------

The first generally-available version of AudioBridger.


What it does
------------

AudioBridger streams audio between computers on your local network,
in real time, with no cables, drivers, or audio interfaces. Pick a
sound source on one machine, hear it on another. That's it.


Highlights
----------

  * Low latency. Built for live monitoring, not file transfer.
    Audio flows in tens of milliseconds, not seconds.

  * Zero setup. Run the apps on two machines and they find each
    other automatically over your LAN.

  * Cross-platform. Mac and Windows talk to each other freely, in
    either direction.

  * One sender, many listeners. A single source can be heard on up
    to ten receivers at once.

  * Studio-quality audio. Uncompressed 16-bit PCM, up to 48 kHz
    stereo, at about 1.5 Mbps per receiver.

  * Auto-reconnect. Network blips don't matter — AudioBridger
    picks back up where it left off.

  * Lightweight. No daemons, no system extensions, no driver
    installs.


The hub dashboard
-----------------

An optional third app, the hub, gives you a web dashboard for the
whole cluster:

  * One row per sender and receiver, with live VU meters and
    packet stats.

  * Drag wires from a sender to a receiver to route audio.

  * Mute receivers, swap their output devices, or pick a sender's
    input device — all from any browser on the network.

  * Inline browser playback for any sender that has the AAC stream
    enabled, so you can monitor without installing anything.


Listen in a browser
-------------------

Each sender can also publish a low-bitrate AAC stream over HTTP.
Open the URL in a phone, a laptop browser, VLC, or OBS — useful for
spot checks and remote monitoring without running a receiver.

Requires FFmpeg installed on the sending machine. If FFmpeg isn't
present the AAC stream silently turns off and everything else keeps
working.


Licensing
---------

  * Trial — no licence required. Sender and hub each run for 30
    minutes per launch. Receivers are always free.

  * Personal — one licence covers up to 4 senders and unlimited
    receivers in a single setup.

  * Pro — unlimited senders, unlimited receivers. For venues,
    broadcast facilities, and multi-room installations.

Licences are perpetual — once activated, the version you bought
keeps working forever. No subscription. Online and offline
activation supported. See the website for full terms.


Platforms
---------

  * macOS (Intel and Apple Silicon)
  * Windows 10 and later (32-bit and 64-bit)
