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
Accuracy sweep: twelve MCP tools (FAQ), no armv7 image (Home Assistant), settings mirror is local-primary (Multiple Displays), caps field is named_colors not named_colours (Writing Apps, Compatibility), HTTP frame-push is ~40 fps since fw 3.0.1 (Writing Apps)
Wiki: rewrite backward-looking phrasing in present tense
Drop 'as it always did / was', 'no longer', 'it did not always work that way'
and similar comparisons to prior behaviour — they only make sense to readers who
saw earlier versions. State the current behaviour as simply how it works.
Two gateways, two names — plus Provisioning and Calibration get their own pages
SplitFlap Gateway drives real modules; Matrix Gateway draws a simulated
wall on an LED matrix. The Gateway and Matrix-Portal-Gateway pages are
renamed (redirect stubs left at the old names), 21 pages re-worded, and
both diagrams regenerated with the new labels — the configurations
diagram also aligns all seven Modules boxes on one row.
New: Module provisioning (the full process — the SplitFlap Gateway's
Provision tab and bare-metal provision.py in detail, splitflap-os's
built-in equivalent acknowledged without detail) and Module calibration
(the CALIBRATION_GUIDE ported: the three quantities, the golden order,
nudge vs exact offset, per-flap tuning, the wizard and whole-board pass,
the control reference). Linked from the sidebar's Build-it section,
Home, Module-Firmware and the SplitFlap Gateway tab tour.
Regenerate the configurations diagram and the Displays screenshot
The diagram's B column claimed splitflap-os + Universal Firmware needs the
provision.py terminal tool — provisioning is built into splitflap-os now,
and the box says so; the legend adds that splitflap-os and the gateway both
provision, with the CLI as the bare-metal fallback.
The Displays screenshot now shows the 2.2.0 dialog mid-discovery: the
network scan's 'Found on your network' list with two real gateways and
their one-tap Add buttons.
Wiki: five reference pages close the repo-doc gaps; provisioning is in splitflap-os now
A census of all four repos found documentation living only in repo READMEs;
the wiki now carries it:
- Bus Protocol — the RS-485 wire reference: frames, addressing, every module
command with reply grammars and result codes, EEPROM layout, boot sequence.
- Gateway API — REST + MQTT for both gateways, /api/capabilities set
arithmetic, the companion registration + settings-blob contract.
- Companion without Home Assistant — Docker, the install script, the full
COMPANION_* configuration reference, settings storage & disaster recovery.
- Languages & Localization — every language surface and how to contribute one.
- Serial Bridge — splitflap-os over the gateway's MQTT via a virtual PTY,
including Mosquitto setup.
Corrections: splitflap-os now provisions from its own UI (provision.py is
optional, three pages updated); Multiple Displays documents the network scan;
Gateway links its API reference; Home lists all 22 pages + release-notes
links; sidebar gains Reference entries; Built-in Apps adds the Binary Clock
and the Matrix-Portal-only seconds options. Every GitHub link curl-verified.
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.