Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 31 Jul 11:43

Several sources in one process

--config show.json starts any number of independent pipelines. Each is a whole
engine of its own — its own browser, its own clock, its own raster and its own
outputs — and they share nothing but Chromium's process, so a page that hangs, a
card that will not open or a raster change on one source cannot touch the others.

The control page grows a strip along the top with a live thumbnail per source. It
hides itself when there is only one, so a command-line launch looks exactly as it
did before.

Addressing is optional everywhere: HTTP verbs take ?source=<id>, OSC takes
/weblinked/source/<id>/<verb>, and without either the request goes to the first
source. Everything that drove a single-source WebLinked still does, unchanged.

How many sources a machine can carry is a property of that machine, not a
setting.
Three sources at 1080p50 + 720p50 + 1080p25 drop about 4% of frames on
an M4 Max — an independent receiver measures 46.27 fps against a nominal 50 —
while the same three at 720p25 drop 3 ticks in 1134. Measure it where the show
will run. docs/04-verification.md gives the numbers and the method.

Fixed: OSC dropped a quarter of all messages

This bug shipped in v0.3.0. The packet decoder double-counted a string's NUL
terminator, so any string whose length was 3 mod 4 ran past the end of the packet
and the whole message was discarded silently. /weblinked/url worked for most
URLs and did nothing at all for the rest. If you drive WebLinked over OSC, this
release is worth taking.


macOS.pkg installs WebLinked into /Applications; .dmg lets you drag it.
Apple Silicon only: CEF's binary distribution is per-architecture, so an Intel or
universal build needs a second distribution and a lipo pass.

Windows-setup.exe installs with shortcuts; .zip is portable. x86_64.

Linux — portable .tar.gz, x86_64.

Output backends in these builds: OMT only. NDI and DeckLink are located with
find_package and silently disabled when their SDKs are absent, which they are on
hosted runners. Build locally with the SDKs installed to get those backends — see
docs/02-building.md.

Verification status is in docs/04-verification.md: NDI has been confirmed
end-to-end against a real receiver; DeckLink, AJA and OMT compile against the real
SDKs but have never been run against hardware.

Builds are unsigned. On macOS, after installing:

xattr -dr com.apple.quarantine "/Applications/WebLinked.app"

That step matters more here than usual — the app nests five CEF helper .apps, and
approving the outer bundle does not unquarantine them. A quarantined helper is
killed silently and looks like the renderer simply failing to start.

Full Changelog: v0.3.0...v0.4.0