Stremio shell using WebView2/mpv, written in Rust
Find a file
Claude 9b057a0030
Bump libmpv2 crate from 4.1.0 to 5.0.3
The 4.x -> 5.x release folded `EventContext` into `Mpv` and made
`wait_event` take `&mut self`, so the previous design (a single
`Arc<Mpv>` shared between the message and event threads, with the event
thread constructing its own `EventContext` from `mpv.ctx`) no longer
compiles.

Migration:
- Build the main `Mpv` (with `wid`, `title`, etc.) and use it from the
  message thread for commands and `set_property`.
- `create_client(None)` a sub-client `Mpv`, owned by the event thread,
  which calls `disable_deprecated_events`/`observe_property`/`wait_event`
  on itself. Global events (`EndFile`, `Shutdown`) and property changes
  observed by this client land in its event queue.
- Replace the old `MpvExt::wake_up` (which woke the main `Mpv`) with an
  `EventClientWakeup` holding the sub-client's `mpv_handle` pointer, so
  the message thread can interrupt the event thread's blocking
  `wait_event` after pushing a new observe request onto the channel.

Also removed the `PropertyData::Node(_)` match arm in
`communication.rs`: 5.0.0 dropped `mpv_node` support, so the variant no
longer exists and the match is exhaustive without it.

https://claude.ai/code/session_01CuGHFREBZFkf8tfaiRV4K6
2026-05-05 07:59:26 +00:00
.github/workflows Fix checkout action 2026-03-10 12:13:52 +02:00
bin Us correct DLLs 2025-08-05 13:49:03 +03:00
bin-arm64 Arm64 installer 2025-12-18 12:40:50 +02:00
images Arm64 installer 2025-12-18 12:40:50 +02:00
mpv-arm64 Windows no ARM build 2025-11-12 18:02:41 +02:00
mpv-x64 Windows no ARM build 2025-11-12 18:02:41 +02:00
setup Arm64 installer 2025-12-18 12:40:50 +02:00
src Bump libmpv2 crate from 4.1.0 to 5.0.3 2026-05-05 07:59:26 +00:00
.gitignore 64 bit build 2025-06-30 12:39:12 +03:00
build-arm64.ps1 Remove build thread arm64 2026-03-12 17:54:25 +02:00
build.ps1 Remove sign thread 2026-03-12 17:27:44 +02:00
build.rs Arm64 installer 2025-12-18 12:40:50 +02:00
Cargo.lock Bump libmpv2 crate from 4.1.0 to 5.0.3 2026-05-05 07:59:26 +00:00
Cargo.toml Bump libmpv2 crate from 4.1.0 to 5.0.3 2026-05-05 07:59:26 +00:00
generate_descriptor.js Multi architecture descriptors 2025-12-05 15:44:01 +02:00
libmpv-2_arm64.zip Bump libmpv to mpv 0.41.0 (shinchiro 20260421 build) 2026-05-05 07:47:30 +00:00
libmpv-2_x64.zip Bump libmpv to mpv 0.41.0 (shinchiro 20260421 build) 2026-05-05 07:47:30 +00:00
README.md fix typo 2025-02-05 09:14:50 +02:00
rust-toolchain.toml Windows no ARM build 2025-11-12 18:02:41 +02:00
server.js update server to v4.20.17 2026-03-20 14:16:19 +02:00
stremiover.js Version check 2026-03-10 10:54:23 +02:00
upload.ps1 Better uploader 2026-02-05 13:48:58 +02:00

Stremio shell: new gen

A Windows-only shell using WebView2 and MPV

Goals:

  • Performance
  • Reliability
  • Easy to ship

In all three, this architecture excels the Qt-based shell: it is about 2-5x more efficient depending on the use case, as it allows MPV to render directly in the window through it's optimal video output rather than using libmpv to integrate with Qt.

This is due to Qt having a complex rendering pipeline involving ANGLE and multiple levels of composing and drawing to textures, which inhibits full HW acceleration.

Meanwhile in this setup MPV uses whichever pipeline it considers to be optimal (like the mpv desktop app), which is normally d3d11, allowing full HW acceleration.

For web rendering, we use the native WebView2, which is Chromium based but shipped as a part of Windows 10: therefore we do not need to ship our own "distribution" of Chromium.

Finally, this should be a lot more reliable as it uses a much simpler and more native overall architecture.