Restore 22 pages + 23 images deleted by mistake in 3b9277a (2026-07-30)
Commit 3b9277a ("Binary ops: one format, no version framing") was pushed from
an incomplete working copy of the wiki: alongside its intended 11-line edit to
Canvas-Ops-Reference.md it recorded deletions of every page not in that copy --
22 pages (Home, Quick-Start, Provisioning, Calibration, FAQ, Hardware, ...) and
23 screenshots. _Sidebar.md still linked all of them, so 22 of 28 nav links 404'd.
Restored verbatim from 3b9277a's parent. Additions only; the 8 pages that
evolved since 2026-07-30 are left at their current content.
Binary ops: one format, no version framing
Wiki: multiple displays, the Matrix Portal's real alphabet, and who decides case
Four things the wiki did not know about yet.
**Multiple displays** — a new page, and a line in every interface's page: one companion
drives several walls, each with its own apps, playlists and settings. GATEWAY_URL takes a
comma-separated list; every /api/ route takes ?display=; the Vestaboard API takes
/local-api/<id>/message; MCP takes a `display` argument and gained `list_displays`; Home
Assistant publishes one device per wall, with the default keeping its historic entity ids
so existing automations don't break.
**The Matrix Portal's extra flaps.** The page still described the lowercase/colour
collision as an unsolved limitation — "the lowercase letter `r` is reachable only by
index". That is still true of the one-byte character protocol, and always will be: the
byte for lowercase `r` already means RED. But firmware 1.6 added an index-addressed
endpoint that sidesteps it, and the companion now uses it automatically, so the 60
lowercase flaps and the 14 pictographs the emulated reel was always carrying are finally
reachable. Documented both — the constraint and the way around it.
**Who decides the case.** Apps write their words the way a person writes them; the
companion folds to capitals on the way out, and only for a wall with no lowercase flaps.
Flaps & Character Sets said "the companion never polices characters", which is no longer
true. It also gains the pictograph table and their fallbacks.
**Stop blanks the wall.** The MCP page claimed `stop` "leaves the last frame on the
flaps". It doesn't any more.
Screenshots retaken against a real companion (two stub gateways, made-up data). The two
new ones are the point of the whole release: the same app, the same minute, showing
"IT'S FIVE PAST THREE" on a split-flap and "It's five past three" on a Matrix Portal.
Wiki: correct the splitflap-os feature grid; give Vestaboard + MCP their own pages
Feature grid — I built it from splitflap-os's README, which undersells it. Rebuilt
from the code (csader/splitflap-os main, with feat/app-triggers, feat/schedules and
feature/custom-char-map all merged in):
- Event triggers, schedules and quiet hours: splitflap-os HAS these. Was "—", now ✅
for every splitflap-os configuration.
- Flap sets: splitflap-os reads each module's flap count and character set from the
firmware and encodes against them, so a non-64 reel works — but it can't *write*
one. Split the row into "custom character set" and "flap count other than 64", both
✅ (web UI) only where the Universal Firmware meets the gateway, ⚠️ for sfOS.
- REST API: it has Flask endpoints for its own UI but no documented API. Now ⚠️.
- Localization: verified against upstream main — no language/locale settings there.
Left as "—" with a footnote saying so; i18n exists in forks.
Vestaboard + MCP are companion features, not Home Assistant features. They now have
their own pages, and the HA page links to them instead of owning them:
- Vestaboard-API: enabling it, the endpoints (GET returns {"message": [[…]]}, POST
201, 401 is plain text), the {"text": …} extension, ha-vestaboard and rest_command.
- MCP-Server: the eleven tools, why read-before-write matters, connecting Claude Code
and Desktop, and worked examples of what you can ask for.
Both are linked from the Companion's new "Ways to drive it from outside" section.