Route OSD notifications through overlay with mpv fallback

- Add main/renderer overlay notification pipeline with loading-state support
- Preserve notificationType semantics across osd/system/both/none routing
- Update plugin fallback behavior, docs/config examples, and regression tests
This commit is contained in:
2026-03-16 00:52:13 -07:00
parent e35aac6ee0
commit fbfd688109
30 changed files with 882 additions and 81 deletions

View File

@@ -724,12 +724,12 @@ do
"duplicate pause-until-ready auto-start should re-assert visible overlay on both start and ready events"
)
assert_true(
count_osd_message(recorded.osd, "SubMiner: Loading subtitle tokenization...") == 2,
"duplicate pause-until-ready auto-start should arm tokenization loading gate for each file"
count_osd_message(recorded.osd, "SubMiner: Loading subtitle tokenization...") == 0,
"duplicate pause-until-ready auto-start should suppress loading OSD when visible overlay is enabled"
)
assert_true(
count_osd_message(recorded.osd, "SubMiner: Subtitle tokenization ready") == 2,
"duplicate pause-until-ready auto-start should release tokenization gate for each file"
count_osd_message(recorded.osd, "SubMiner: Subtitle tokenization ready") == 0,
"duplicate pause-until-ready auto-start should suppress ready OSD when visible overlay is enabled"
)
assert_true(
count_property_set(recorded.property_sets, "pause", true) == 2,
@@ -770,16 +770,16 @@ do
"autoplay-ready script message should resume mpv playback"
)
assert_true(
has_osd_message(recorded.osd, "SubMiner: Loading subtitle tokenization..."),
"pause-until-ready auto-start should show loading OSD message"
not has_osd_message(recorded.osd, "SubMiner: Loading subtitle tokenization..."),
"pause-until-ready auto-start should suppress loading OSD when visible overlay is enabled"
)
assert_true(
not has_osd_message(recorded.osd, "SubMiner: Starting..."),
"pause-until-ready auto-start should avoid replacing loading OSD with generic starting OSD"
)
assert_true(
has_osd_message(recorded.osd, "SubMiner: Subtitle tokenization ready"),
"autoplay-ready should show loaded OSD message"
not has_osd_message(recorded.osd, "SubMiner: Subtitle tokenization ready"),
"autoplay-ready should suppress ready OSD when visible overlay is enabled"
)
assert_true(
count_control_calls(recorded.async_calls, "--show-visible-overlay") == 2,