Skip to content

fix(tv): hold the Fire TV wall past the silent-audio file - #23

Draft
ddedic wants to merge 1 commit into
mainfrom
cursor/fire-tv-keep-awake-9576
Draft

ddedic wants to merge 1 commit into
mainfrom
cursor/fire-tv-keep-awake-9576

Conversation

@ddedic

@ddedic ddedic commented Nov 2, 2026

Copy link
Copy Markdown
Collaborator

What and why

Refs #22.

On a Fire TV Stick HD the release build stopped about 33 minutes after launch, with no crash report, after memory had already settled near 300 MiB. Nothing in the app waits that long, the photo pool is capped, and a dropped WebSocket reconnects instead of exiting. A silent stop matches Vega's lifecycle manager: an inactive foreground component is sent to the background when timeout-secs fires, and a display forced off kills the process. The only thing that holds the display is an audio-playback session.

That session was not held. HTMLMediaElement.loop is unsupported, and @amazon-devices/react-native-w3cmedia 2.3.4 calls play() on ended without seeking to 0 and swallows the event. The silent file is 300 seconds, so the session can end about five minutes after the player starts. The ~33 minute figure is one measurement, not a documented constant (published idle defaults are a 5-minute screensaver and low-power mode at 15 minutes). Once the audio session dies, a longer Ambient setting or the undocumented system-default component timeout can land near half an hour.

This change:

  • leaves loop off, seeks to 0 and plays again on ended, and restarts if the playhead stalls
  • sets lifespan = "permanent" and a one-year timeout-secs in the manifest, and the same through TimeoutManager

It does not stop power-service-core → forceDisplayOff when Ambient mode is off. That still needs a device log. The steps are in docs/vega-os-notes.md.

Checks

  • pnpm typecheck && pnpm lint && pnpm test && pnpm format:check passes
  • If it touches the TV app or packages/wall-ui: pnpm tv:build:debug builds, and the wall still runs at / in pnpm web:dev — no Vega SDK in this environment, so the .vpkg was not built. The web wall does not use this player.
  • Docs updated where behaviour or setup changed
  • Screenshots for visible changes — no visible change
Open in Web Open in Cursor 

Vega does not rewind HTMLMediaElement.loop, so the silent keep-awake
file ended the audio-playback session after 300 seconds and LCM could
background the wall with no crash report. Seek back to the start on
ended, and set a permanent lifespan with a one-year inactivity timeout.

Refs #22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants