Skip to content

ScreenHarbour 0.2.46 — seasonal layout loop fix

Pre-release
Pre-release

Choose a tag to compare

@jampez77 jampez77 released this 03 Oct 22:36
· 23 commits to main since this release

ScreenHarbour 0.2.46 — prerelease

Fixes a continuous seasonal-row layout update in older Chromium browsers. With row expansion enabled, the calculated padding could contain a long decimal such as 38.30000000000001px. Chromium 79 stores that as 38.3px. Comparing the two as text caused ScreenHarbour to write the padding again, trigger its Home observer, and repeat before the browser could paint. This can happen with a static background, without doors or parallax.

Seasonal measurements now use stable pixel values and compare their numeric sizes. Repeated attachment can settle, while resizing and focus expansion still update the row. The background images and all seasonal options remain available. The original image is unchanged: the Halloween Nightmare background is 2048 × 768 pixels and about 182 KiB on disk.

Existing settings, collections, seasonal dates, artwork choices and advent unlock rules are preserved. The graphics-layer reduction from 0.2.45 remains included. That earlier change did not resolve the reported physical TV problem by itself.

Update

Update ScreenHarbour, restart Jellyfin, then fully reload browsers or close and reopen web-based TV clients. Keep File Transformation enabled.

Jellyfin server Plugin version
10.10.7 0.2.46.1
10.11.x 0.2.46.2
12.x 0.2.46.3

The existing catalogue remains:

https://raw.githubusercontent.com/jampez77/ScreenHarbour/main/manifest.json

Plugin identity, assembly, API routes and storage keys are unchanged. No reconfiguration is needed.

Validation

  • Reproduced the pre-fix loop in actual Chromium 79.0.3945.0 with a 485-pixel row: medium expansion at 720px and large expansion at 720px/960px reached a protective 100-mutation cutoff before the next timer could run. After the fix, all nine combinations of no/medium/large expansion and 720px/960px/1080px viewport heights made exactly two initial style writes and allowed the timer to run.
  • A new browser regression models that older engine's numeric CSS serialization on a 60-item static-background row. It checks that Home becomes visible, layout writes settle, normal timers run, focus expansion and collapse work, resizing from 720px to 960px updates spacing, and all items remain available.
  • Typecheck, client build and all 246 unit tests passed. 59 browser checks passed, including the new regression and existing seasonal, advent, frame-fit, editor, rank, graphics-layer and Home focus checks. One optional native-CSS fixture check was skipped because its external fixture was not configured.
  • All 700 server checks passed against Jellyfin 10.11.0. All three supported target packages build and pass embedded-client/artwork, assembly version, MD5/SHA-256 and catalogue checks. All 138 historical catalogue entries are preserved.
  • Physical LG webOS confirmation remains pending. The unsuccessful temporary fade-mask CSS test was removed from the live server, preserving its original branding CSS and account settings.