Files
SubMiner/plugin/subminer/messages.lua
T
sudacode 127e1ea88e fix(jellyfin): subtitle timing, resume progress, and overlay sync
- Add per-stream subtitle delay persistence and auto timeline-offset correction
- Strip server-selected subtitle stream from mpv load URL; suppress plugin subtitle rearm and auto-start during app-managed preload
- Fix resume position lost when mpv resets on stop; use last known position for final progress/stopped reports
- Keep Play vs Resume distinct to avoid early seek race on normal play
- Fix discovery resume when remote play sends StartPositionTicks=0 despite saved progress
- Deduplicate show/hide overlay commands using recorded visibility state
- Rewrite docs-site Jellyfin page around cast-to-device UX
2026-05-24 03:11:05 -07:00

72 lines
2.2 KiB
Lua

local M = {}
function M.create(ctx)
local mp = ctx.mp
local process = ctx.process
local aniskip = ctx.aniskip
local hover = ctx.hover
local ui = ctx.ui
local state = ctx.state
local function register_script_messages()
mp.register_script_message("subminer-start", function(...)
process.start_overlay_from_script_message(...)
end)
mp.register_script_message("subminer-stop", function()
process.stop_overlay()
end)
mp.register_script_message("subminer-toggle", function()
process.toggle_overlay()
end)
mp.register_script_message("subminer-visible-overlay-hidden", function()
process.record_visible_overlay_visibility(false)
end)
mp.register_script_message("subminer-visible-overlay-shown", function()
process.record_visible_overlay_visibility(true)
end)
mp.register_script_message("subminer-managed-subtitles-loading", function()
state.skip_managed_subtitle_rearm_once = true
state.app_managed_playback_pending = true
end)
mp.register_script_message("subminer-menu", function()
ui.show_menu()
end)
mp.register_script_message("subminer-options", function()
process.open_options()
end)
mp.register_script_message("subminer-restart", function()
process.restart_overlay()
end)
mp.register_script_message("subminer-status", function()
process.check_status()
end)
mp.register_script_message("subminer-autoplay-ready", function()
process.notify_auto_play_ready()
end)
mp.register_script_message("subminer-aniskip-refresh", function()
aniskip.fetch_aniskip_for_current_media("script-message")
end)
mp.register_script_message("subminer-skip-intro", function()
aniskip.skip_intro_now()
end)
mp.register_script_message(hover.HOVER_MESSAGE_NAME, function(payload_json)
hover.handle_hover_message(payload_json)
end)
mp.register_script_message(hover.HOVER_MESSAGE_NAME_LEGACY, function(payload_json)
hover.handle_hover_message(payload_json)
end)
mp.register_script_message("subminer-stats-toggle", function()
mp.osd_message("Stats: press ` (backtick) in overlay", 3)
end)
mp.register_script_message("subminer-reload-session-bindings", function()
ctx.session_bindings.reload_bindings()
end)
end
return {
register_script_messages = register_script_messages,
}
end
return M