Releases: lucabravi/ploff-webos
Releases · lucabravi/ploff-webos
Release list
Ploff v1.0.6
Added
- An integrated Detail media-version browser: Version stays first and always opens
technical file/video/audio/subtitle information, supports non-destructive preview
across multiple files, and keeps explicit D-pad-reachable Cancel/Apply actions. - Contextual Detail media options with confirmed whole-season watched/unwatched
mutations, sequential best-effort updates, fresh season reload, partial-failure
reporting, and metadata refresh. - Three additional visual themes built as isolated Chrome 53/webOS designs:
premiere(premium cinematic),nova(futuristic tech), andatelier
(minimal luxury), each with theme-specific Home, browsing, Settings, Detail,
Player, focus, and motion treatments. - A unified local
release:packagecommand that rebuilds generated assets, runs the pre-release gate, packages and inspects the IPK, and writes SHA-256 checksums without mutating Git or version metadata. - Versioned fixtures for local Settings, saved-settings backup payloads, and playback compatibility memory, including non-destructive recovery of legacy split v2 saved-settings playlists.
- Diagnostics support export now keeps the QR mail draft while also showing the same privacy-safe report text as a legacy-TV-friendly fallback.
- Contextual media actions opened by long-press OK or the Magic Remote center button, with dynamic watched/unwatched, clear-progress, play-from-beginning, and Continue Watching removal choices for movies and episodes.
- Detail media options now preserve whether a movie or episode was opened from
Continue Watching, exposing the same removal action with Plex refresh, toast
feedback, and immediate action cleanup after success. - TV calibration controls with independent safe-area insets and a live edge/center preview.
- Subtitle appearance controls for background, vertical position, and text edge, with a live in-settings preview driven by the same presentation variables used by playback.
- Optional high-contrast and stronger-focus presentation modes for TV viewing.
- Independent poster/thumbnail and backdrop download-quality controls. Poster
artwork uses 70%, 80%, 85%, 90%, and 100% steps with a 90% default; backdrops
use 50%, 60%, 70%, 85%, and 100% with an 85% default. These settings change
Plex request resolution without changing on-screen element geometry. - Origin-aware paginated playback sequences for Series, Playlist, and Collection
origins, with bounded metadata and artwork retention, duplicate-safe occurrence
identity, a virtualized queue drawer, and confirmation before crossing missing
season or episode ranges. - A pre-release memory lifecycle gate that repeatedly creates and destroys caches,
dialogs, queue state, cancellable Plex requests, timers, and progressive-image
jobs while checking deterministic teardown,WeakRefcollection, and heap
stabilization. - Local Plex discovery through the packaged Luna service, restoring multicast GDM
discovery on webOS while preserving manual server entry. - Lazy, non-blocking update checks after the first successful Home load, with a
clickable application-version row, manual refresh, release status, and QR link. - Privacy-safe support reports now include allow-listed Settings and adaptive-playback
compatibility schema/context summaries without exposing Plex tokens, credentials, server URLs,
or local addresses. - Explicit visible Cancel, Close, or Back actions for persistent dialogs that
previously depended only on the remote Back key. - Library-origin badges on mixed Home rows, Search, Watchlist, and playlist content.
- Watched-state and live Play/Pause markers in the playback queue.
- An exhausted-queue countdown that returns to Home or leaves the final frame paused
when cancelled.
Changed
- Accent-color Settings now sit directly below the visual theme, show the selected
color swatch in the main list, and are visible only for Simple and Cinema;
Premiere, Nova, and Atelier keep their theme-owned palettes while preserving the
saved global accent for later theme switches. - Home hero copy now uses the available horizontal gutter width instead of narrow
percentage/max-width caps, reducing unnecessary title truncation across the shipped
theme layouts while preserving each theme's visual treatment. - Repository documentation was consolidated around current references: completed implementation plans and intermediate benchmark logs were removed from the working tree, the roadmap now contains only open work, and README and contributor guidance now provide clearer architecture and installation onboarding.
- Settings UI choice rows now consume bounded domain values directly from
settings-schema.js; the catalog owns labels and presentation only. - Application composition regression coverage now freezes server-switch, account reset/disconnect, and shared playback-identity lifecycle boundaries.
- Persisted Settings definitions are centralized in
settings-schema.js, while the existing
Settings catalog remains presentation-only; defaults and bounded choices now have one
persistence authority without changing existing migration semantics. - Release metadata now fails verification when
package.json,package-lock.json, and
webos-shell-app/appinfo.jsondrift, and tagged releases reuse the same canonical checker. - Settings categories and rows were reordered into a clearer TV-first hierarchy, with Accessibility immediately after Interface and background theme audio grouped under Audio & themes.
- Adaptive playback compatibility fingerprints now include video bit depth and the actually selected audio/subtitle technical characteristics; file-specific exceptions also distinguish exact selected stream IDs.
- Playback compatibility storage moved to schema v3 with bounded TV/runtime/application metadata, explicit observation/derived/user-override provenance, and migration from v2.
- Application settings storage moved to schema v3 with explicit sequential migration from v1/v2 persisted records, including legacy video-quality, autoplay, and removed sync semantics.
- Replaced the temporary suboptimal terminal-transcode workaround with a bounded
Direct Stream lookback and a verified native seek on the same absolute Plex
clock. Requests within the final five seconds now jump to the actual native
end and pause there, while ordinary Direct Play and Direct Stream playback
keep their selected delivery mode. - Ordered application settings now render as accessible stepped bars with the
active value shown beside the track; LAN and remote video quality increase
from 4 Mbps through 12 Mbps to Original at the rightmost step. - Related settings, selectors, dialogs, filters, setup surfaces, and Player panels
share action surfaces, focus rings, panel tokens, disabled states, and consistent
secondary-left / primary-right action ordering. - Ordinary pointer clicks now synchronize focus and use the same semantic OK path as
the physical remote; timeline coordinates, navbar long-press, and other truly
pointer-specific interactions keep dedicated handling. - Main navigation Back now rises one visible level at a time through content, filters,
sub-navigation, the current navbar item, and finally Home. - Playback queues open on the current item but allow navigation to earlier episodes or
earlier playlist/collection occurrences. - Player settings focus the first available action on open and temporarily hide active
Skip prompts without discarding them. - Runtime bundle guardrails are documented as adjustable engineering alarms rather
than webOS platform limits. - Player return restoration now reloads the authoritative Plex origin for Series,
Playlist, and Collection detail views and restores the exact played occurrence. - Playlist and Collection detail share one presentation contract, while long
containers and episodic queues load only bounded pages or season segments. - The generated ES5 coordinator bundle is deterministically token-minified and
verified through normalized AST equivalence. - Plex pagination, media-document parsing, track normalization, cancellable HTTP
transport, media choices, technical labels, search normalization, and server
identity matching now use focused shared domain modules instead of duplicated
implementations. - Player terminology was reviewed across all eight locales, and unused translation
keys were removed while preserving key and placeholder parity. - The full Library catalog now uses focus-only updates, frame-scheduled scrolling,
incremental keyed row reconciliation, in-place page append, and tiered artwork
promotion while retaining the existing three-row overscan. - Card geometry, fixed artwork dimensions, mounted-node lookup, bounded card
presentation, and Search measurements now reuse explicitly invalidated caches instead
of recalculating static layout data during navigation and scrolling.
Fixed
- Concurrent, stale, malformed, aborted, or terminal Plex pages can no longer
expand a known queue boundary, leave phantom items, or poison a later retry. - Rapid Player selections and superseded playback preparation now preserve the
latest user choice and abort obsolete metadata, decision, and stream work. - Library and Recently Added pagination preserve raw Plex offsets and merge groups
correctly when one season spans page boundaries. - Home, dialog, Player, Up Next, queue-gap, progressive-image, and XHR lifecycle
paths release timers, callbacks, handlers, and retained target bindings during
replacement or teardown. - Rapid navbar movement can no longer leave the highlighted navigation item and
visible page out of sync when focus enters the content. - Pointer hover no longer rebuilds settings, setup, choice, language, server, resume,
or Library-filter controls before their click completes. - Watchlist, Library, recommendations, theme audio, credentials, server probes,
metadata refresh, cloud Search ordering, upd...
Ploff v1.0.5
Added
- Independent poster/thumbnail and backdrop download-quality controls. Poster
artwork uses 70%, 80%, 85%, 90%, and 100% steps with a 90% default; backdrops
use 50%, 60%, 70%, 85%, and 100% with an 85% default. These settings change
Plex request resolution without changing on-screen element geometry. - Origin-aware paginated playback sequences for Series, Playlist, and Collection
origins, with bounded metadata and artwork retention, duplicate-safe occurrence
identity, a virtualized queue drawer, and confirmation before crossing missing
season or episode ranges. - A pre-release memory lifecycle gate that repeatedly creates and destroys caches,
dialogs, queue state, cancellable Plex requests, timers, and progressive-image
jobs while checking deterministic teardown,WeakRefcollection, and heap
stabilization. - Local Plex discovery through the packaged Luna service, restoring multicast GDM
discovery on webOS while preserving manual server entry. - Lazy, non-blocking update checks after the first successful Home load, with a
clickable application-version row, manual refresh, release status, and QR link. - Explicit visible Cancel, Close, or Back actions for persistent dialogs that
previously depended only on the remote Back key. - Library-origin badges on mixed Home rows, Search, Watchlist, and playlist content.
- Watched-state and live Play/Pause markers in the playback queue.
- An exhausted-queue countdown that returns to Home or leaves the final frame paused
when cancelled.
Changed
- Ordered application settings now render as accessible stepped bars with the
active value shown beside the track; LAN and remote video quality increase
from 4 Mbps through 12 Mbps to Original at the rightmost step. - Related settings, selectors, dialogs, filters, setup surfaces, and Player panels
share action surfaces, focus rings, panel tokens, disabled states, and consistent
secondary-left / primary-right action ordering. - Ordinary pointer clicks now synchronize focus and use the same semantic OK path as
the physical remote; timeline coordinates, navbar long-press, and other truly
pointer-specific interactions keep dedicated handling. - Main navigation Back now rises one visible level at a time through content, filters,
sub-navigation, the current navbar item, and finally Home. - Playback queues open on the current item but allow navigation to earlier episodes or
earlier playlist/collection occurrences. - Player settings focus the first available action on open and temporarily hide active
Skip prompts without discarding them. - Runtime bundle guardrails are documented as adjustable engineering alarms rather
than webOS platform limits. - Player return restoration now reloads the authoritative Plex origin for Series,
Playlist, and Collection detail views and restores the exact played occurrence. - Playlist and Collection detail share one presentation contract, while long
containers and episodic queues load only bounded pages or season segments. - The generated ES5 coordinator bundle is deterministically token-minified and
verified through normalized AST equivalence. - Plex pagination, media-document parsing, track normalization, cancellable HTTP
transport, media choices, technical labels, search normalization, and server
identity matching now use focused shared domain modules instead of duplicated
implementations. - Player terminology was reviewed across all eight locales, and unused translation
keys were removed while preserving key and placeholder parity. - The full Library catalog now uses focus-only updates, frame-scheduled scrolling,
incremental keyed row reconciliation, in-place page append, and tiered artwork
promotion while retaining the existing three-row overscan. - Card geometry, fixed artwork dimensions, mounted-node lookup, bounded card
presentation, and Search measurements now reuse explicitly invalidated caches instead
of recalculating static layout data during navigation and scrolling.
Fixed
- Concurrent, stale, malformed, aborted, or terminal Plex pages can no longer
expand a known queue boundary, leave phantom items, or poison a later retry. - Rapid Player selections and superseded playback preparation now preserve the
latest user choice and abort obsolete metadata, decision, and stream work. - Library and Recently Added pagination preserve raw Plex offsets and merge groups
correctly when one season spans page boundaries. - Home, dialog, Player, Up Next, queue-gap, progressive-image, and XHR lifecycle
paths release timers, callbacks, handlers, and retained target bindings during
replacement or teardown. - Rapid navbar movement can no longer leave the highlighted navigation item and
visible page out of sync when focus enters the content. - Pointer hover no longer rebuilds settings, setup, choice, language, server, resume,
or Library-filter controls before their click completes. - Watchlist, Library, recommendations, theme audio, credentials, server probes,
metadata refresh, cloud Search ordering, update checks, and local-storage failure
paths reject stale work and remain bounded or non-blocking across profile, server,
network, and lifecycle changes.
Verified release. Includes the generic IPK and SHA-256 checksums.
Ploff v1.0.4
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.4tag additionally requires the completed physical-TV
regression signoff documented indocs/testing.md.
Ploff v1.0.3
Verified Ploff release for legacy LG webOS TVs. Includes the generic IPK and SHA-256 checksums.
Full Changelog: v1.0.2...v1.0.3
Ploff v1.0.2
Verified Ploff release for legacy LG webOS TVs. Includes the generic IPK and SHA-256 checksums.
Full Changelog: v1.0.1...v1.0.2
Ploff v1.0.1
Verified Ploff release for legacy LG webOS TVs. Includes the generic IPK and SHA-256 checksums.
Full Changelog: v1.0.0...v1.0.1
Ploff v1.0.0
Full Changelog: https://github.com/lucabravi/ploff-webos/commits/v1.0.0