mirror of
https://github.com/screentinker/screentinker.git
synced 2026-08-15 14:53:18 -06:00
docs: 1.9.29-rc5 changelog
This commit is contained in:
parent
647a2bcc56
commit
c226bdddc6
44
CHANGELOG.md
44
CHANGELOG.md
|
|
@ -1,5 +1,49 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 1.9.29-rc5
|
||||||
|
|
||||||
|
### Fixed — the BrightSign host scripts were written against Roku's API reference
|
||||||
|
BrightScript is Roku's language, the two references read almost identically, and nothing in CI can
|
||||||
|
run either — so a call to an object that does not exist looked exactly like a call to one that does.
|
||||||
|
Found by auditing against BrightSign's published reference after a consultant's deployment failed,
|
||||||
|
and verified on an XT245.
|
||||||
|
|
||||||
|
- **A string literal stopped the whole script loading.** `"{""width"":"` is not an escaped quote;
|
||||||
|
BrightScript has no escape sequences, so it is three adjacent literals with no operator between
|
||||||
|
them. The compiler rejects the entire file — `ScriptLoadError: Syntax Error (compile error &h02)`
|
||||||
|
— which is not a broken feature but **no player at all**, on a display showing nothing.
|
||||||
|
- **`MatchFiles` was called with a path as both arguments.** It takes a DIRECTORY plus a pattern and
|
||||||
|
returns nothing when the pattern contains a separator, so the existence check could never return
|
||||||
|
true for any file on any player. That is the reported failure: `no autorun.zip on any volume`
|
||||||
|
printed while `dir SD:` listed it. It also silently disabled the entire self-update path.
|
||||||
|
- **Roku objects that do not exist on BrightSign**, each quietly disabling a feature: `roFileSystem`
|
||||||
|
(~20 sites — an update could never be marked applied), `roMessageDigest` (verification returned
|
||||||
|
false unconditionally and burned the retry counter), `PostFromStringWithRetry` (a snapshot request
|
||||||
|
raised "member function not found" from inside the event loop and took the player down).
|
||||||
|
- **`Unpack()` deletes everything already in its target directory.** Unpacking an update to the
|
||||||
|
volume root would have erased the player's provisioning and its whole content pool as a side
|
||||||
|
effect of a routine upgrade. It now stages to a directory of its own and never overwrites
|
||||||
|
`screentinker.json`.
|
||||||
|
- Rotation moves to `SetScreenModes()` (`SetMode()` takes one argument) and fires only on a real
|
||||||
|
change, because that call reboots the player.
|
||||||
|
|
||||||
|
`server/test/brightscript-api-surface.test.js` guards all of it — a deny-list of Roku APIs plus the
|
||||||
|
argument shapes and literal forms that compile and then do nothing.
|
||||||
|
|
||||||
|
### Fixed — a player that could not cache was telling the fleet it could
|
||||||
|
A real BrightSign exposes `navigator.serviceWorker`, passes an `'serviceWorker' in navigator` check,
|
||||||
|
and then never even fetches the worker: its runtime refuses to register one. It advertised
|
||||||
|
`offline.cache` while unable to cache a byte. The capability is now claimed only when a worker is
|
||||||
|
genuinely in control, and a refused registration reports itself to the server instead of a
|
||||||
|
`console.warn` on a display nobody has a console for.
|
||||||
|
|
||||||
|
### Fixed — storage paths assumed a card slot that may not exist
|
||||||
|
`StorageRoot()` knew only internal flash and SD. Fitting real storage to a flash-booting player and
|
||||||
|
moving the deployment onto it resolved every derived path — the offline page, the widget's local
|
||||||
|
storage, the update paths — to a slot with nothing in it. It now probes in the order the OS itself
|
||||||
|
searches for an autorun script. The widget's `storage_path` is likewise an absolute path on the boot
|
||||||
|
volume rather than a bare `/cache`, which carried no drive specifier and so had nowhere to persist.
|
||||||
|
|
||||||
## 1.9.29-rc4
|
## 1.9.29-rc4
|
||||||
|
|
||||||
### Fixed — the web player's offline cache was switched off at the URL everyone uses
|
### Fixed — the web player's offline cache was switched off at the URL everyone uses
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue