Repository navigation
One release for every Art Computer in the field.
- Both firmware generations. The pairing request is the one 0.5 sends. An
FF1 on FF OS with display grants answers with a grant (relay v2, as in
0.5); an FF1 on older FF OS answers with a relayer session, which 0.5
discarded withdevice_unsupportedand 0.6 keeps and casts with, through
the legacy relayer's HTTPSPOST /api/cast, as 0.4 did. EphemeralBrowserSessionis a union discriminated bykind:
"displayGrant"({ deviceId, ctl, expiresAt?, persistent }) or
"relayerSession"({ sessionId, expiresAt?, persistent, relayerBaseUrl? }).
The session's token stays inlocalStorageand is never returned.- Storage precedence. A stored grant first (IndexedDB), then a stored
session (localStorage, underephemeralBrowserSessionStorageKey(origin),
the 0.4 key and record), else pair. A new grant replaces a stored session.
Sessions 0.4 stored are used, no longer removed. relayerBaseUrlis an option again onDisplayDp1PlaylistOptionsand
mountDisplayOnArtComputerButton(a value or a function), with no default;
the session's ownrelayerBaseUrlwins.DisplayDp1PlaylistOptionstakes
fetchImplagain.- Relayer answers.
400 {"error":{"id":1003}}(no FF1 on the session's
channel: the FF1 updated, or it is off) isdevice_unrecognized: the
session is kept and the button offers "Pair again?".401/403is
session_rejected, and the session is deleted. unpairArtComputer()andclearStoredEphemeralBrowserSession(origin)also
forget a stored session.- Removed the 0.5 deprecated aliases:
mountPlayOnArtComputerButton,
PlayOnArtComputerButtonOptions,PlayOnArtComputerButtonHandle,
PlayError,PlayErrorCode, theff-ac-play,ff-ac-play-buttonand
ff-ac-play-statusclass names, and theplay.jsrelease asset. Use the
Displaynames andff-ac-display*classes. - Removed
legacySessionStorageKey: useephemeralBrowserSessionStorageKey
(the same key). - On a session's 1003 the button says "Could not reach your Art Computer. If
it is on and was updated recently, pair again." and its "Pair again?" pairs
without deleting the session first: if that pairing fails, the session
still works once the FF1 is back. A browser whose IndexedDB is missing or
will not open still casts with a stored session; only a new pairing needs
IndexedDB. - A relayer-session cast honours
timeoutMs(one deadline over the request,
its retry and the body read), like a grant cast.