- C# 65.6%
- PowerShell 33.6%
- Inno Setup 0.8%
| .claude/skills/verify | ||
| design | ||
| installer | ||
| src/LightWeaver | ||
| .gitignore | ||
| CLAUDE.md | ||
| installer.ps1 | ||
| LightWeaver.slnx | ||
| PHASE4.md | ||
| PROGRESS.md | ||
| publish.ps1 | ||
| README.md | ||
| TECHNICAL.md | ||
LightWeaver
A native Windows Jellyfin client built for playback quality and responsiveness.
LightWeaver is a per-platform client family — each platform gets its own native client in its own repo: LightWeaver-Windows (this repo), LightWeaver-MacOS, LightWeaver-Android, LightWeaver-iOS. This client pairs a WPF (Fluent, dark) shell with an embedded mpv (libmpv) player that owns its own D3D11 rendering — enabling:
- NVIDIA RTX Video Super Resolution (
d3d11vppscaling) - NVIDIA RTX Video HDR (
nvidia-true-hdr) - Native HDR passthrough (mpv-owned HDR-capable swapchain,
vo=gpu-next) - Hardware decoding via
d3d11va
Status
Feature-complete for daily use: Jellyfin login (DPAPI-persisted token, auto-reconnect),
Home rows / library browsing / item detail, server-wide search, direct-play through embedded mpv
(vo=gpu-next, hwdec=d3d11va) with resume, watch-state reporting, video/audio/subtitle
track selection with preferred-language auto-select (incl. external/sidecar subtitles),
language badges on track rows (dropdowns hide when there is nothing to choose),
chapter markers and navigation, skip
intro/credits (native media segments, IntroSkipper plugin, or chapter-name fallback —
button or auto-skip), a settings screen (Ctrl+,), RTX VSR / RTX Video HDR toggles, a
configurable jump forward/back (buttons + arrow keys), trickplay seek previews,
auto-play next episode (Up Next card with countdown), watched badges with a
mark-watched toggle, an info panel (live playback stats + server media metadata),
subtitles that lift above the control bar while it is visible,
now-playing OSD title, landscape episode cards, playback-error toasts, a disk-backed
image cache (instant posters, offline-friendly), window position/size persistence, and a
self-contained release zip via publish.ps1. See PROGRESS.md.
Requirements
- Windows 10/11 (x64)
- .NET 10 SDK (to build)
libmpv-2.dll(mpv ≥ 0.40 for RTX Video HDR support) — place it innative/win-x64/(gitignored; copied next to the exe at build time) or anywhere onPATH- For RTX features: NVIDIA RTX GPU (20-series+) with RTX Video enabled in the NVIDIA App
Build & Run
dotnet build # Compile
dotnet run --project src/LightWeaver # Start empty
dotnet run --project src/LightWeaver -- "D:\movie.mkv" # Play a file immediately
Keys: Space play/pause · F11 fullscreen (also double-click) · Esc leave fullscreen ·
Ctrl+O open file · Ctrl+, settings · B/V cycle audio/subtitle track ·
[/] previous/next chapter · S skip intro/credits · Backspace back (browsing).
Click the video to pause; drop a file on it to play. On Home, Shift+wheel scrolls a
row horizontally.
Note: RTX VSR / RTX Video HDR apply to SDR content only (an NVIDIA limitation) — on HDR/Dolby Vision sources the toggles grey out (tooltip explains why), the filters are suppressed automatically, and mpv's own HDR tone-mapping takes over. On machines without an NVIDIA RTX GPU the toggles are disabled outright, again with the reason on hover.
Release build
.\publish.ps1 # dist/LightWeaver-<version>-win-x64.zip (self-contained, libmpv bundled)
.\installer.ps1 # dist/LightWeaver-<version>-setup.exe (Inno Setup; runs publish.ps1 first)
The installer is per-user (no admin prompt, %LOCALAPPDATA%\Programs\LightWeaver),
creates a Start menu entry (desktop icon optional), and updates in place — running a
newer setup over an existing install keeps credentials and all preferences, as does
uninstalling. Requires Inno Setup 6 (winget install -e --id JRSoftware.InnoSetup).
Documentation
- TECHNICAL.md — architecture and design decisions
- PROGRESS.md — living checklist