Skip to content

Ploff v1.0.4

Choose a tag to compare

@lucabravi lucabravi released this 25 Jul 23:14
· 2 commits to main since this release

Added

  • Private, app-owned webOS DB8 storage for Plex account and Plex Home
    credentials, including automatic migration from legacy browser storage and a
    session-only fallback when private storage is unavailable.
  • A privacy policy, in-app privacy information, and a complete local-data
    deletion action covering credentials, servers, preferences, subtitle
    offsets, navigation state, and the local client identifier.
  • Network awareness backed by the official webOS API, with LAN, Internet, and
    local-only diagnostics, visible connection state, offline-safe local
    operation, and recovery when connectivity returns.
  • A playback queue for playlists, series, seasons, collections, and mixed
    media playlists. The player exposes the queue without leaving playback and
    preserves Plex playlist ordering.
  • A compact server-activity indicator in the navigation bar, including a
    Chrome 53-compatible animated state for legacy LG webOS TVs.
  • Automatic playback-version ranking by resolution, HDR, estimated quality,
    and Direct Play compatibility, plus version affinity across adjacent
    episodes.
  • Native TV locale detection for the initial onboarding language and
    background Plex discovery while the language is being selected.
  • A TV-readable technical media-information dialog for the active file,
    available from media details and player settings without exposing full
    filesystem paths or raw Plex XML.
  • LG Content Store preparation documents, static UX compliance checks,
    dependency auditing and update automation, plus a physical-TV release
    signoff gate.

Changed

  • Playback queues now continue through mixed item types in Plex's original
    order, while automatic version selection favors the best compatible source
    according to the user's preferences.
  • Advanced subtitle controls use a compact, remote-friendly layout with modal
    selectors, live text-subtitle preview, delayed size application, loop-aware
    preview restarts, and clearer Apply and Cancel actions.
  • Media detail pages use more consistent spacing, progressive artwork,
    non-flashing metadata transitions, readable summaries, and resilient
    backdrop loading.
  • Library navigation, recommendation rows, recycled cards, empty states, and
    progressive images preserve focus and visual state more consistently.
  • HDR priorities automatically adapt to detected TV capabilities and expose
    their availability in diagnostics and settings.
  • Onboarding preserves discovery work across language navigation and avoids
    unnecessary repeated scans.
  • Continuous integration now validates pull requests from Dependabot without
    granting elevated GitHub token permissions; release packaging uses refreshed
    pinned GitHub and Docker actions.

Fixed

  • Playlist queue navigation and the server-activity indicator retain their
    intended position and layout on legacy webOS, even when activity labels are
    visible or the navigation bar is crowded.
  • Final playback progress is sent before leaving the player and protected from
    an immediately stale Plex response, so Resume uses the latest confirmed
    position after returning to media details.
  • Direct Play, seek, chapter, buffering, and subtitle-preview recovery no
    longer leave stale loading indicators or mismatched presentation state in
    the covered regression cases.
  • Interrupted progressive artwork requests can be retried instead of leaving a
    backdrop permanently unavailable.
  • Offline state no longer disables reachable LAN Plex servers or triggers
    avoidable cloud requests.
  • Setup no longer gets stuck after returning from language selection, and an
    unavailable network state is presented as informational rather than as a
    blocking failure.
  • The media-information modules are imported through the browser namespace,
    preventing the packaged TV app from remaining indefinitely on its startup
    screen.

Compatibility Notes

  • Existing credentials are migrated on first launch. If private DB8 cannot be
    used, credentials remain available only for the current session and are not
    persisted in plaintext browser storage.
  • Runtime compatibility remains Chrome 53 / legacy LG webOS; no framework or
    runtime dependency was added to the installed application.
  • A public v1.0.4 tag additionally requires the completed physical-TV
    regression signoff documented in docs/testing.md.