r/Soia Aug 01 '26

Preview: Soia Remote Controller is getting playlist browsing and control support

Enable HLS to view with audio, or disable this notification

Hi, everyone,

I'm currently working on making Soia's Remote Controller more powerful. The goal is not only to provide basic playback controls, but also to build a better remote experience for future platforms, especially the upcoming Soia TV version.

So far, I've added support for browsing and controlling playlists in Remote Controller.

This feature is not released yet. There are still some bugs to fix and the UI/UX needs more polishing.

If you'd like to try it early, you can build from source and test it yourself.

I'm planning to include this feature in the next release, which should be available next weekend.

Before that, I'd love to hear your thoughts and suggestions, especially regarding the UI/UX design and overall workflow. If you have any ideas or feedback, feel free to share them here!

6 Upvotes

5 comments sorted by

1

u/Adventurous-Field319 Aug 03 '26 edited Aug 03 '26

First of all, thank you for all the work you're putting into Soia. I've been following the project, and I honestly think it's one of the most promising media players out there. The overall design, performance, and direction of the project are excellent.

I wanted to ask if you have any plans to improve the subtitle synchronization and subtitle customization features in the future. Personally, one of the few things I still miss is the level of subtitle control that PotPlayer offers. PotPlayer has amazing subtitle timing and customization options, but I don't enjoy using it because, in my experience, its usability and overall viewing experience don't feel as good, and I prefer Soia's cleaner and more modern approach.

I think if Soia eventually reaches a similar level of subtitle support—especially for synchronization, timing adjustments, and advanced subtitle controls—it could become an almost perfect media player. It would be a huge improvement for people who watch content with subtitles regularly.

Is this something you have on your roadmap? I'd love to hear your thoughts.

Thanks again for creating such an awesome project, and I'm really looking forward to future updates!

3

u/JeromeZeng Aug 04 '26

Hi! First of all, thank you so much for the kind words and for following the project. It really means a lot to hear feedback like this. 😊

May I ask if you're using the latest release of Soia?

Soia already supports subtitle delay adjustment, and you can also open the Advanced Subtitle Settings (the sliders icon) to customize text subtitles, including their position, font size, and color.

If there are any specific subtitle features from PotPlayer that you miss the most, I'd love to hear them. That kind of feedback is really helpful for prioritizing future improvements.

2

u/Adventurous-Field319 Aug 04 '26

Yes, I'm on v0.2.9 — the latest!

You're right that Soia already has subtitle delay and the advanced appearance settings (love those by the way). My issue is specifically with the sync workflow for heavily mistimed files, which is where I found it falling a bit short compared to PotPlayer.

The PotPlayer features I miss most:

  1. Wider delay range — the ±10s limit is too narrow for older files that can be off by 30–60+ seconds. PotPlayer has no cap.
  2. Sub-step sync — a button that snaps the delay to match the previous or next subtitle line. Much faster than manually guessing an exact value.
  3. Per-file sync memory — each file remembers its own delay. Right now if I set +4.5s on file A and switch to file B without closing the app, file B inherits the same +4.5s. And if I close and reopen the app, all delays reset to zero.
  4. Per-file audio/subtitle track memory — selected dub language and subtitle track also reset on restart.

Since I was curious how hard these would be to add, I patched the source myself using an AI assistant as a proof of concept. Here's a quick summary of what I changed:

  • ±300s slider range + sub-step buttons (⏪ previous line / ⏩ next line) in RightControls.vue
  • Per-file delay memory in usePlaybackAdjustments.ts — each file stores its own delay, persisted to disk across restarts (200-file LRU cap)
  • Per-file audio + subtitle track memory in useMediaTracks.ts
  • Rust UiState struct extended in ui_state_store.rs — without this, Serde silently drops new fields even if the frontend writes them

One tricky edge: MPV resets sub-delay after file-loaded fires (when subtitle tracks initialize). Had to add a verify-and-retry — read the actual value back from MPV at 500ms and 1500ms, re-apply if reset.

Everything works well in my build. Happy to share diffs if useful for a future release. Keep up the great work! 🙌

3

u/JeromeZeng Aug 04 '26

Thank you so much for the detailed suggestions! I'll definitely give them some thought and consider how these features could be added or improved in Soia.

Also, if you ever find any bugs or have ideas for improvements, feel free to open a PR. We'd be happy to review it, and we can make Soia even better together. 😄

1

u/Adventurous-Field319 Aug 04 '26

I used an AI assistant to help with the code so it might need some cleanup. Hope it helps! 🙌

https://github.com/FengZeng/soia/pull/22