089b144626
The package version had been left at the scaffolded 0.1.0 while the released tag was v5.4.0. Nothing in the code chose 0.1.0 -- it was npm-init's equivalent, never updated -- and it made every version comparison meaningless: the window title, the About dialog and the update check all read it. ConfigManager merged a stored config over the defaults with dict.update(), which is shallow. A config written by an older build carries partial "player" and "feed" objects, and a shallow update replaces the whole nested default with the partial one, so keys added since came back missing. The `or 15` and `or "auto"` fallbacks at the call sites were load-bearing because of it. The merge is now recursive, and keys present only in the stored file are kept so a downgrade cannot destroy settings. Configs now carry a config_version. A file written before 5.4.0 -- including one inherited from an upstream YTSage install -- has its stored check_app_updates cleared once, because that setting used to point at PyPI's `ytsage` package and oop7/YTSage's releases, neither of which is this program. The settings tab read a missing check_app_updates as enabled and persisted that reading on OK, so merely opening Custom Options turned the checker back on. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
15 lines
551 B
Python
15 lines
551 B
Python
"""
|
|
SageTube - watch-first YouTube client
|
|
|
|
Search, browse, subscribe and stream in an embedded mpv player, with the full
|
|
yt-dlp download feature set inherited from YTSage. Built with PySide6.
|
|
|
|
The version below is the single source of truth for the running application:
|
|
the window title, the About dialog and the update checker all read it. It must
|
|
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.
|
|
"""
|
|
|
|
__version__ = "5.4.0"
|
|
__author__ = "Houmeres"
|