From a08e6c3e06bc40579ce28db4a5c924512f9dccfe Mon Sep 17 00:00:00 2001 From: ScreenTinker Date: Wed, 5 Aug 2026 14:15:34 -0500 Subject: [PATCH] =?UTF-8?q?Tizen=20does=20not=20have=20offline=20caching?= =?UTF-8?q?=20=E2=80=94=20correct=20the=20baseline?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The platform audit caught my own contract lying. I gave the Tizen baseline offline.cache; Tizen caches only the playlist JSON (st_payload_cache, in localStorage) and has no service worker and no media cache, so the bytes still come from the network and an outage leaves a panel holding a playlist it cannot play. That is exactly the claim this model exists to prevent, made by the model itself, and it would have applied to every legacy Tizen panel — the ones that declare nothing and depend entirely on the baseline being honest. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01Uaeo9MvzKoyXuN6ZsbhtkL --- server/lib/player-capabilities.js | 6 +++++- server/test/player-capabilities.test.js | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/server/lib/player-capabilities.js b/server/lib/player-capabilities.js index 5bcfad8..c0c2e67 100644 --- a/server/lib/player-capabilities.js +++ b/server/lib/player-capabilities.js @@ -72,7 +72,11 @@ const BASELINE = { 'display.rotation', 'remote.input', 'system.restart_player', - 'sync.clock', 'offline.cache', + 'sync.clock', + // NOT offline.cache: Tizen caches only the playlist JSON (st_payload_cache in localStorage). + // There is no service worker and no media cache, so the bytes still come from the network and + // content does NOT survive an outage. My first baseline claimed it — caught by the platform + // audit, and exactly the kind of optimistic claim this model exists to stop. ], brightsign: [ 'playback.video', 'playback.image', 'playback.widget', 'playback.youtube', diff --git a/server/test/player-capabilities.test.js b/server/test/player-capabilities.test.js index 7f9c10d..4e203ec 100644 --- a/server/test/player-capabilities.test.js +++ b/server/test/player-capabilities.test.js @@ -89,3 +89,11 @@ test('BrightSign claims display power and reboot; Tizen claims neither', () => { assert.equal(caps.supports(tizen, 'display.power'), false); assert.equal(caps.supports(tizen, 'system.reboot'), false); }); + +test('Tizen does NOT claim offline caching — it caches the playlist, not the media', () => { + // st_payload_cache holds the playlist JSON in localStorage; there is no service worker and no + // media cache, so an outage leaves the panel with a playlist it cannot play. The first version + // of this baseline claimed offline.cache, which is precisely the lie the model exists to stop. + assert.equal(caps.supports({ platform: 'Tizen 6.5' }, 'offline.cache'), false); + assert.ok(caps.supports({ client_type: 'apk' }, 'offline.cache'), 'Android really does cache media'); +});