Device face: the roster shows whoever identified, master[flow] included
Rows in first-seen order, a closed app dims in place, more than four is
"plus n more". Mentions the probe device under Installing.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add the multi-output interface fix to Troubleshooting
An interface with eight or sixteen outputs arrives in Settings offering
only 1/2, because macOS reports its preferred speaker layout rather
than its outputs. The steps for an Aggregate Device, which publishes no
layout and so restores the real count.
Say what the device face says now, and admit the page can lag
The device stopped counting attached windows a while ago: Status reads
`Connected to Live` whether or not an app is on it, and underneath is a row per
app — set[flow], visual[flow], chart[flow] — with a dot that lights while that
one is connected, and `plus N more` for anything else attached. The old wording
described a connection count that no longer exists, so `No connections` was
being offered as a diagnosis for a state the device cannot report.
Both pages now carry a note that they are hand-written and can fall behind, and
that Live wins the disagreement. It is the honest thing to say on a page
describing a face that changes with the build and only changes here when
somebody remembers — the same drift that put eleven `lens` modes on Visuals
until the reference was generated.
The device no longer opens a browser
set[flow] is an app of its own now. The device face has lost the button and the
address that went with it: the WebSocket is not a documented interface, so an
address on the face invited something nobody supports. Status is the only
readout left, which is the one worth having.
Co-authored-by: Codex <noreply@openai.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DYCKLWb13J5PLkNpGGRdfi
Say that Live keeps drawing while the set is read
The first read no longer locks Live up: it runs in pieces with a pause
between each, so the progress bar means something now. Two consequences a
user can see and would otherwise misread — it finishes a little later than
it would if it hogged everything, and restructuring the set mid-read makes
it start over rather than show a half-and-half answer.
Co-authored-by: Codex <noreply@openai.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XgWVKDg9bAtZhhDoQjtqE4
Say that only the first load reads the set
The device keeps track of the set now, so opening, refreshing or opening a second
window is instant however big it is — and a refresh that reads everything again is
a bug to report rather than something to work around. Also says the following
happens in the device, which is why closing every window doesn't stop it and how
the Push encoder stays right with no browser open.
Co-authored-by: Codex <noreply@openai.com>
Rename the tempo button and say what it writes
The button is now Apply tempo to song start: the song's first scene gets
Scene.tempo and the rest of the song gives it up. That is also how a set
written the every-scene way converts, so the page says so, and
Troubleshooting gains the symptom that sends you there — firing a scene
mid-song snapping the whole set.
Co-authored-by: Codex <noreply@openai.com>
Document the split left columns and the continuous song header
The grid's left edge is two columns now, not one. The metadata column
holds a scene's number, BPM and key and nothing else; the Master column
beside it is Live's Master track at the head of a column of its own,
carrying each scene's launcher and role above, and Stop All Clips and
Master's strip below. Both stay pinned while you scroll across the
tracks.
What that changes for a reader: the ▶ is in the Master column rather than
a gutter of the scene's own, the role chip sits beside it, the Songs
heading is no longer tinted with Live's Master color — that color went
with the Master column — and Master's strip is the same size as every
other strip rather than a wider one centred in an oversized cell.
An open song header is one continuous bar across the whole grid, with its
name, artist, facts, tag and flags pinned to the left edge so scrolling
out to track 30 still says which song those clips belong to. The song tag
is gone from the scene rows: every scene of a song carries the same one,
so a column of them said nothing the header hadn't.
Both ASCII diagrams are redrawn and re-aligned. The width table's track
counts are recomputed for the narrower left edge — Narrow fits about 11
tracks now, Wide about 7 — and the 8/16 note says that Master takes a
track's worth of width without being one of the eight.
Two things were stale before this and are fixed with it: "click a scene
name" described a gesture whose target shows no name, and Troubleshooting
still recommended the S column width, which was removed some time ago.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JcqKqi7azGSadYatDcsyGD
Update song navigation and grid controls
Co-authored-by: Codex <noreply@openai.com>
The grid keeps up with more, and re-reads on staleness
Follows the code change that moved the full re-walk off window focus and onto an
age check, and that gave the bridge observers on whatever Live's Session cursor
is sitting on.
**The grid disagrees with Live** was describing behaviour that no longer exists.
It said the app re-reads everything whenever you switch back to the browser, and
that an in-place rename needs a trip into Live and back. Neither is true now: an
in-place rename, recolor or delete reaches the grid on its own, and the full
re-walk happens on staleness rather than on every alt-tab.
What is left uncovered is worth naming precisely rather than hand-waving, so the
two genuine blind spots are listed with the reason: Live exposes no notification
for a clip's length or a group's fold state, so there is nothing to watch and
**sync** is the answer. The table swaps the rename row, which is now automatic,
for those two.
**Nothing appears in the grid** still said to check both pills. There is one
readiness line in the bottom strip now, and it names the first thing it's waiting
on rather than asking anyone to combine two statuses.
**Undo** described the snapshot being re-walked every time you switch back from
Live, as part of why there's one level and no redo. The reasoning is unchanged —
the picture an undo entry was captured against keeps moving — but the trigger
isn't what it says.
Document meter controls and device connection status
Document the consolidated readiness status
Song tags, the sort hierarchy, and following Live
Brings the manual up to the 2026-08-07 work. Three of these were not
additions but corrections — the pages described behaviour the app no
longer has.
The convention lost its BPM. A scene name is `[ROLE] @{key} {SONG}
{TAG}`; the tempo lives on Scene.tempo, which is the one fact Live
already has a home for, and duplicating it into the name meant two
answers that could disagree. Naming is rewritten around that, with the
three readable legacy forms in a table so a half-converted set is
recognisable rather than mysterious.
Song tags are new and get a section rather than a page: an open,
optional, brace-delimited classification of what the song is. The braces
are the point — they make an arbitrary tag reversible without a fixed
vocabulary, which is what keeps the mapping derivable from the name
alone. Roles gets the tag-versus-role distinction, since one describes a
scene and the other a song, and they are deliberately different marks.
Roles and the chosen palette moved out of bsv.json and localStorage into
a hidden device parameter, so Live writes them into the .als. That is a
better story than the one it replaces and Installing, Roles and Color
each told the old one. Home gains a section saying it plainly: there is
no database, and the set is the storage.
The palette is now compiled in. Color and Troubleshooting documented a
Re-derive button that no longer exists — worse than incomplete, since
someone would have gone looking for it.
Following Live is documented with its failure mode stated out loud. It
watches the Session cursor and it is the least verified path in the app,
so "a clip drawn in two places means this got it wrong, press sync" is
in both Reading the grid and Troubleshooting. A manual that only
described the happy path would leave the one symptom worth reporting
looking like a bug in the reader's set.
The same commit records what following Live cost: a write no longer
re-reads the set, so it no longer quietly catches up on changes made in
Live as a side effect. That is a regression from the user's seat and it
says so.
Also: the sort hierarchy in the running order, per-scene slices in
folded song headers, ⌘A, and the bar.beat.sixteenth readout that has
been in the header since the branded transport and was never written up.
Some of this documents work that is still in the working tree, so the
manual is briefly ahead of the released device.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MutvDXT74GQ57Jjztt21cz