Writing-Apps: channel page order (sequential/random) with item grouping
1627eab
Built-in-Apps: National Today absorbed into Public Holidays (four switchable layers)
d90bddd
Built-in-Apps: Public Holidays is offline with religious observances; National Today is country-aware
c82d0e6
Writing-Apps: document the native date/time picker field types
8cef8aa
Writing-Apps: house rules from the app audit; get_location coordinates; trigger helpers. Built-in-Apps: refreshed badges and minimums.
0eca3e4
The library is the companion's own — 'vendored snapshot' retired
Some apps originated in splitflap-os and have been enhanced since; many
more were created here. Using-splitflap-os said the companion ships a
vendored snapshot of csader's library; it and every remaining 'vendored'
phrasing across the wiki now say built-in / its own library.
03a9ec0
Calibration: the nudge screenshot sits with Option A, the step it shows
22d1d42
Calibration: crops display at their real UI size
The step screenshots are 2x retina captures; without a width GitHub
blows them up to double life size. Each now displays at the size the
control actually has in the gateway UI.
be1a859
Matrix Gateway: the E jumper ships in the right position; BGR is a setting
The page implied a 64-row panel needs soldering; the board wires E to
connector pin 8 out of the box (the common layout), so 128x64 normally
just works — only pin-16 panels need the jumper moved. And the other
wiring variation, BGR vs RGB panels, is called out with its telltale
wrong-colour pattern and the Settings -> LED Panel -> BGR toggle.
0d11279
Calibration: a screenshot for every step
Step 0 the opened module panel, Step 1 the Total Steps editor with Count
Steps, Step 2 the nudge row, Step 3 the per-flap tuner, and the wizard
and whole-board passes mid-flight — all captured from the real gateway
UI against the stub wall.
edda4d6
Provisioning & Calibration: step-by-step visuals
Each page opens with a process-flow diagram (the whole journey at a
glance — the advertising/identify/assign loop; the golden order with
the wizard rail) and shows the real gateway tab: Provision with two
modules mid-advertisement, Calibration with the maintenance banner,
whole-board pass and the per-module picker.
ba92203
mDNS names carry the board id: splitflap-gw-xxxxxx.local
Firmware 3.11 gives the SplitFlap Gateway the suffixed hostname the
Matrix Gateway always had (plain splitflap-gw collides the moment a
second gateway joins the LAN). Every page that named the old address
now shows the suffixed form and says where to find yours: the boot log
and the router's device list.
58a70aa
Home Assistant: both channels install side by side, but only one runs — they share port 8000
a9ac5a7
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.
c64ddfa
The companion has its own app library — the csader relationship, stated honestly
The ecosystem graphic claimed the companion 'runs the splitflap-os app
library (csader)'; it ships its OWN library and speaks the splitflap-os
plugin format. Regenerated, and the framing aligned across the wiki:
splitflap-os is an acknowledged alternative content engine (A/B/E/F);
apps written for it drop in and run here — that inbound direction stays
a hard contract; apps written here MAY run there, without the injected
helpers and unoptimized, with no guarantees. Compatibility's goal
paragraph now says exactly that.
Also: Writing-Apps documents the grown get_weather surface (sky tokens,
days=N forecast + hourly, air=True with labels and canonical bands), and
Built-in Apps gains the countdown's per-unit colour-bar panel and the
weather app's forecast/AQI/UV/pollen in their rows.
38eb322
Gateway API: 'ESP32 only' was no distinction — both gateways are ESP32s
The Matrix Portal is an ESP32-S3, so labeling the RS-485 product 'the
ESP32' told readers nothing. Labels are now RS-485 gateway / Matrix
Portal, with a terminology note where the two products are introduced.
b3c42dd
Home Assistant: board-image screenshot with the wall's pictograph tints
1cb029d
Home Assistant: the Board image entity, pictured
A 'board as a picture' section with a real render from the entity's own
code — colour flaps, accents, pictographs — plus where the integration's
icon comes from now (in-integration brand/, HA 2026.3+), and the
broadcast note on splitflap.message.
5a7d8a6
Home Assistant: the integration's Board image entity
909daf2
Home Assistant: the HACS integration is per-display now — one entry per wall
1cff1e4
The motion capability: the wall states how it moves
Gateway-API documents the new /api/capabilities motion key (Gateway 3.10+,
Matrix Portal 1.12+); Writing-Apps' caps table gains instant — the flag an
app gates any ticking display on; Compatibility lists it with the other
caps fields.
9464c27
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.
febd026
Drop the Serial Bridge page: splitflap-os speaks MQTT natively now
The virtual-PTY bridge existed so a serial-only splitflap-os could ride the
gateway's MQTT. splitflap-os has since gained native MQTT support, so the
E/F configurations are just a transport setting in splitflap-os itself —
no bridge, no PTY, nothing to install. Using-splitflap-os says so; Home
and the sidebar drop the entry.
afa4f06
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.
de64545
Writing Apps: anim_speed default is now 2 s (sized for a physical wall)
d7ac5af
Wiki: Built-in Apps — the full catalog at a glance
All 63 shipped apps, grouped, with badges for i18n/trigger/animation/API-key
and each app's minimum grid, built from the manifests. Leads with the
disclaimer that the ecosystem is always changing and the App Library in the
companion is the source of truth. Linked from the sidebar (Drive it) and the
Companion page.
f463b1c
Wiki: Writing Apps + Compatibility move in from the repo, fact-checked against the code
Every claim audited against the companion source; the wrong ones fixed:
loop_delay default is 8, 'id' is a fallback not an override, lowercase
colour codes are animation-only, the real date app (i18n, rows>=4),
per-app anim_speed/anim_style, the full catalog-globals list, global_key
is ignored, /sports_search is the only sports endpoint, a trigger shows
the first page only, the safety audit also blocks threads/processes,
and app directories are NOT importable (single-module apps only).
Sidebar gains an 'Extend it' section; external repo-doc links become
wiki links.
dc0d57d
Wiki: the ss rule for a reel with no eszett
A reel that carries eszett carries only the lowercase flap -- there is no uppercase one --
so an all-caps German page correctly shows STRAsseE. Only a reel with none at all falls
back to SS, which costs a second module.
3d403cc
Wiki: the companion now asks the wall what characters it can show
Flaps & Character Sets said the companion "does not police characters: it sends what the
app produced, and each module shows it or homes". That is no longer true, and the sentence
was describing a bug as though it were a design.
Gateways now answer GET /api/capabilities with their charset, so the companion asks — on
boot and on every resync — and degrades what your reel cannot show to the nearest thing it
can, rather than letting a module home into a blank hole nobody hears about. On a mixed
wall it uses the intersection, because a character only half the modules carry punches
holes in the other half.
And it says what survives: on the fr-FR reel, "Prévu" now reaches the wall as "PRÉVU".
19532f2
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.
67c0d97