2026-08-04, 03:52 PM
Hi all — after months of building (and daily-driving it on the family
HTPC), I've open-sourced my Jellyfin client: a procedurally-built 3D video
rental store where every library is an aisle and every item is a case on a
shelf.
Integration details, since this is the right room for them:
- Browsing is built from your libraries/genres/BoxSets; duplicate quality
versions collapse with the choice deferred to play time; TV series render
as season boxsets.
- Playback: direct-play first, HLS transcode fallback, full progress
reporting (start/progress/stop) so resume and watch history stay honest —
watch history feeds an on-shelf "staff picks" engine.
- The back-of-box specs table is generated from MediaStreams (HDR flavor,
audio layouts, subs), which turned out to be a lovely showcase of how much
metadata Jellyfin actually holds.
- Optional Jellyseerr integration shelves collection gaps and trending
titles as request cases inside the store.
- A 2.5D HTML/CSS mode covers low-power clients, and a WebRTC remote-play
mode streams the HTPC's render to phones.
Repo (GPL-3.0): https://github.com/halcyon-video/halcyon-video · No-login
demo: https://halcyon-video.github.io/halcyon-video/ · 45s tour:
https://youtu.be/TCkEpeL8Y3w
Feedback from this community steers the roadmap — the current top item is
whether to generalize the media layer beyond Jellyfin. Bug reports welcome.
HTPC), I've open-sourced my Jellyfin client: a procedurally-built 3D video
rental store where every library is an aisle and every item is a case on a
shelf.
Integration details, since this is the right room for them:
- Browsing is built from your libraries/genres/BoxSets; duplicate quality
versions collapse with the choice deferred to play time; TV series render
as season boxsets.
- Playback: direct-play first, HLS transcode fallback, full progress
reporting (start/progress/stop) so resume and watch history stay honest —
watch history feeds an on-shelf "staff picks" engine.
- The back-of-box specs table is generated from MediaStreams (HDR flavor,
audio layouts, subs), which turned out to be a lovely showcase of how much
metadata Jellyfin actually holds.
- Optional Jellyseerr integration shelves collection gaps and trending
titles as request cases inside the store.
- A 2.5D HTML/CSS mode covers low-power clients, and a WebRTC remote-play
mode streams the HTPC's render to phones.
Repo (GPL-3.0): https://github.com/halcyon-video/halcyon-video · No-login
demo: https://halcyon-video.github.io/halcyon-video/ · 45s tour:
https://youtu.be/TCkEpeL8Y3w
Feedback from this community steers the roadmap — the current top item is
whether to generalize the media layer beyond Jellyfin. Bug reports welcome.



