Skip to content

Latest commit

 

History

History
22 lines (17 loc) · 5.05 KB

File metadata and controls

22 lines (17 loc) · 5.05 KB

KNOWN_BUGS.md

Defects in jellyfin-vue that are broken regardless of jellyfin-web — i.e. not parity work. Parity gaps live in PARITY.md; this file is only for things that should work and don't.

Sourced from the fork owner's observed gripes during planning. Severity: high (data loss / unusable) / medium (degraded) / low (cosmetic).

# Bug Symptom Suspected cause Likely files Severity Status
B1 Player OSD never auto-hides The pause/skip/settings controls overlay stays visible and never fades while video is playing Real cause was a CSS class collision, not the timer. JOverlay (packages/ui-toolkit/src/components/JOverlay.vue line 6) hard-codes uno-opacity-100 on its root when neither hover nor scrim props are passed. pages/playback/video.vue then layered :class="{ 'uno-opacity-0': !overlay }" on the same element. Vue merges parent and child classes, so the rendered element ended up with both uno-opacity-0 and uno-opacity-100. UnoCSS atomic classes have identical specificity, so source order in the generated stylesheet decided — and uno-opacity-100 typically won, keeping the OSD visible even when the timer correctly set overlay = false. pages/playback/video.vue medium fixed — replaced the parent's class-based opacity binding with :style="{ opacity: overlay ? 1 : 0 }"; inline styles override any colliding uno-opacity-* class. The earlier timer-state fix (8fae096f) was necessary but not sufficient; both fixes together close the bug.
B2 Player bottom gradient not visible The translucent bottom→top gradient behind the OSD doesn't render Not a missing featurevideo.vue already defines .osd-bottom with a full linear-gradient. It has regressed or is overridden pages/playback/video.vue (.osd-bottom / .osd-top styles) low open — investigate why the existing gradient doesn't show
B3 Leaving the tab restarts playback Switching away from the tab and returning restarts the current media from the beginning, losing position Tab visibility change likely re-triggers _currentPlaybackInfo / a source-URL recompute / media-element reload store/playback-manager.ts, store/player-element.ts, components/Playback/PlayerElement.vue, store/index.ts (isDocumentVisible) high open
B4 Video contrast/brightness looks wrong The video image's contrast/brightness differs from jellyfin-web — looks off Possibly an overlay tint over the media element, a CSS filter, or a colour-handling issue pages/playback/video.vue, components/Playback/PlayerElement.vue, theme/overlay styles medium open — needs investigation
B5 Theme-toggle button shows a wrong / overlapping icon The top-right theme button renders a weird or incorrect icon AppBar.vue binds the JIcon class as a non-mutually-exclusive object — i-mdi:weather-sunny (isAutoTheme), i-mdi:weather-night (!currentThemeIsDark) and i-mdi:brightness-auto (currentThemeIsDark) can be true simultaneously, applying two icon classes at once. Confirmed in source. components/Layout/AppBar/AppBar.vue medium open — root cause identified
B6 Connection-status button flickers on launch The network/connection status indicator flashes in and out right after opening jellyfin-vue The status AppBarButtonLayout is `v-if="!(remote.socket.isConnected isConnectedToServer)"; on launch the socket isn't connected yet and isConnectedToServeris acomputedAsync` that resolves asynchronously, so the button appears then disappears once the connection settles components/Layout/AppBar/AppBar.vue, store/index.ts (isConnectedToServer)
B7 pages/settings/server.vue is not admin-guarded A non-admin can reach /settings/server directly and see the configuration form (writes still 403 server-side, but the form renders) The file is missing the <route lang="yaml">meta: admin: true</route> block every other admin page carries; without meta.admin, the global adminGuard middleware (plugins/router/middlewares/admin-pages.ts) does nothing for the route pages/settings/server.vue medium open — discovered during SRV-2; add the route block

Notes

  • B1 vs the paused-overlay feature: while paused, the OSD staying visible is current intended behaviour. The paused-state info overlay (PARITY.md §1.1, gripe G6) is the proper treatment of the paused case. B1 is specifically about the playing case.
  • B5/B6 were one gripe ("top-right buttons buggy on launch — flicker, weird icons, weird status"), split here because they are independent defects with separate root causes and separate fixes. Both are flavours of the app bar painting before async state settles.
  • The CastButton is commented out in AppBar.vue (<!-- <cast-button /> -->), so it does not contribute to these bugs — but note it for PARITY.md §3.4: the cast capability is not merely disabled, it is unmounted.
  • Fixes are out of scope for the current planning pass; this file is the tracking record.