From 2ccc0381bcaabe3072693d12e8dcabb2322c0629 Mon Sep 17 00:00:00 2001 From: archipelago Date: Wed, 7 Oct 2026 19:53:09 -0400 Subject: [PATCH] docs: reconcile companion guide with confirmed playback and PiP --- docs/app-media-integration.md | 24 ++++++++++++++++-------- docs/post-1.9.0-work-backlog.md | 9 ++++++--- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/docs/app-media-integration.md b/docs/app-media-integration.md index b915c810..c86fd1c8 100644 --- a/docs/app-media-integration.md +++ b/docs/app-media-integration.md @@ -9,10 +9,12 @@ proof that a particular deployed app or companion version supports every feature Cloud video PiP is implemented in companion0.5.35/build55; the operator accepted the delivered Cloud PiP flow on2026-10-07. Audio and video use separate channels. -Native background audio is a companion0.5.36/build56 candidate:29 Android tests -and six companion-bridge dashboard tests pass; physical background/lock-screen/task -removal acceptance remains required. Do not infer those phone results from -browser or Robolectric tests. +Native background audio is operator-confirmed on companion 0.5.37/build57 for +the reported background playback and notification flow. The full physical +controls, queue, task-removal and recovery matrix remains open. Notification +artwork has a qualified dashboard correction awaiting guarded deployment and +physical confirmation; it does not require another APK. Browser and Robolectric +results do not establish phone acceptance. ## Declare the audio integration @@ -107,7 +109,7 @@ Example state: window.parent.postMessage({ type: 'archipelago:media-state', version: 1, session, available: true, - title: track.title, artist: track.artist, + title: track.title, artist: track.artist ?? '', artwork: track.cover, shuffle: player.shuffleEnabled, playing: player.playing, position: player.currentTime, duration: track.duration, @@ -189,7 +191,10 @@ the operator subsequently reports that background playback now works and the notification is present, but song artwork is missing. This accepts the reported background flow only; the complete controls, queue and recovery matrix below remains open. No definitive cause of the earlier failure is established. USB -access is unavailable. Artwork handling is under investigation/correction. +access is unavailable. The artwork origin correction passes 26 focused dashboard +tests, production browser checks at 390/1440px and two native JPEG tests on API +28/35. Guarded dashboard deployment and physical artwork confirmation remain +pending; these checks do not prove the cover from a particular live track. Apps continue using the existing version1 app audio protocol above. They do not @@ -205,8 +210,11 @@ Dashboard→native messages contain version1, a random session, monotonically increasing sequence, bounded title/position/duration, playback/control flags and optional JPEG thumbnail bytes. Artwork is fetched by the already authenticated page with same-origin credentials only, capped at512KiB, resized to192px and sent -as a bounded data URL. Native code does not fetch artwork URLs or receive auth -credentials. Cross-origin images without CORS may have no notification thumbnail; +as a bounded data URL. The qualified correction admits HTTP covers on the +verified app origin, including its distinct port, while rejecting arbitrary HTTP +origins and URL credentials. Cross-origin requests omit cookies and require CORS; +redirects are rejected and no referrer is sent. Native code does not fetch artwork +URLs or receive auth credentials. Cross-origin images without CORS may have no notification thumbnail; missing artwork never blocks playback. Native image decoding bounds dimensions. Native→dashboard controls carry the same session. Retired sessions, stale sequence diff --git a/docs/post-1.9.0-work-backlog.md b/docs/post-1.9.0-work-backlog.md index ad0e0d03..a9ef7dd4 100644 --- a/docs/post-1.9.0-work-backlog.md +++ b/docs/post-1.9.0-work-backlog.md @@ -583,9 +583,12 @@ review; this new media task is part of that preceding work. Document the supported video/PiP contract for other apps after qualification; do not claim the audio postMessage bridge already implements video PiP. -Source inspection so far: MainActivity declares no supportsPictureInPicture flag, -and the native sources contain no PiP entry/controller implementation. Existing -WebViewFullscreen handles fullscreen; this is not evidence of native PiP support. +**Nearly finished:** Cloud PiP is implemented and was delivered in companion +0.5.35/build55; the operator accepted the reported Cloud PiP flow on 2026-10-07. +The reusable audio adapter and developer guide are implemented in +[app-media-integration.md](app-media-integration.md). Remaining physical edge +checks include disabled/unsupported PiP, session expiry, FIPS interruption and +process recreation. The accepted flow does not establish that complete matrix. ## 20. Companion background media for V4V and other apps