Release 5.5.0

Also stops one benign libmpv message being logged as an error: `after
creating texture: OpenGL error INVALID_ENUM` comes from the GL driver, arrives
several times per playback start and per fullscreen toggle, and playback
continues regardless. Hundreds of lines a session buried the errors that
matter -- it is a debug line now.

Verified end to end on the real display with an actual video playing: ten tab
switches and four fullscreen toggles while frames were rendering, position
advancing throughout, the render context intact, no crash, and an empty error
log afterwards.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-09 01:18:43 +02:00
parent fd744a1a85
commit 9c4749e49b
4 changed files with 22 additions and 6 deletions
+5 -1
View File
@@ -8,7 +8,7 @@ Kept as the work happens, not assembled at release time. Format is
with its history. SageTube's own versions start below and are the ones this file with its history. SageTube's own versions start below and are the ones this file
records. records.
## Unreleased ## 5.5.0 — 2026-08-09
### Added ### Added
@@ -88,6 +88,10 @@ records.
### Fixed ### Fixed
- The error log filled with hundreds of `after creating texture: OpenGL error
INVALID_ENUM` lines per session. They come from the GL driver, playback
continues regardless, and they buried the errors that do matter, so they are
logged at debug level now.
- The player's cookie and proxy options were joined with commas and never - The player's cookie and proxy options were joined with commas and never
escaped, so a cookie path or a proxy URL containing one silently truncated escaped, so a cookie path or a proxy URL containing one silently truncated
the option and produced a bogus one. The geo-bypass proxy was honoured by the the option and produced a bogus one. The geo-bypass proxy was honoured by the
+1 -1
View File
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
[project] [project]
name = "sagetube" name = "sagetube"
version = "5.4.0" version = "5.5.0"
description = "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage." description = "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage."
authors = [ authors = [
{ name = "Houmeres", email = "admin@ecoposta.sk" }, { name = "Houmeres", email = "admin@ecoposta.sk" },
+1 -1
View File
@@ -10,5 +10,5 @@ match `version` in pyproject.toml and the repository's latest signed tag --
this package's tag line continues YTSage's, which is why it starts at 5.x. this package's tag line continues YTSage's, which is why it starts at 5.x.
""" """
__version__ = "5.4.0" __version__ = "5.5.0"
__author__ = "Houmeres" __author__ = "Houmeres"
+15 -3
View File
@@ -281,13 +281,25 @@ class MpvRenderWidget(QOpenGLWidget):
if value is not None: if value is not None:
self.mpvBufferingChanged.emit(bool(value)) self.mpvBufferingChanged.emit(bool(value))
#: libmpv reports these at error level, but they are noise from the GL
#: driver rather than a failure: playback continues and frames keep
#: arriving. They were filling the error log with hundreds of lines per
#: session, which buries the errors that do matter.
_BENIGN_MPV_ERRORS = (
"after creating texture: OpenGL error INVALID_ENUM",
)
def _on_mpv_log(self, level: str, prefix: str, text: str) -> None: def _on_mpv_log(self, level: str, prefix: str, text: str) -> None:
message = text.strip()
if level in ("error", "fatal"): if level in ("error", "fatal"):
logger.error(f"mpv [{prefix}] {text.strip()}") if level == "error" and any(noise in message for noise in self._BENIGN_MPV_ERRORS):
logger.debug(f"mpv [{prefix}] {message}")
return
logger.error(f"mpv [{prefix}] {message}")
if "ytdl" in prefix or level == "fatal": if "ytdl" in prefix or level == "fatal":
self.mpvError.emit(text.strip()) self.mpvError.emit(message)
else: else:
logger.debug(f"mpv [{prefix}] {text.strip()}") logger.debug(f"mpv [{prefix}] {message}")
# --------------------------------------------------------------- OpenGL # --------------------------------------------------------------- OpenGL