Tracking upstream YTSage
SageTube keeps the full git history of YTSage
and the internal ytsage package name so upstream improvements can be merged.
Syncing
Expected conflict zones
Most SageTube features live in new files and merge cleanly. Conflicts are
likely only in:
| File |
Reason |
ytsage/gui/ytsage_gui_main.py |
tab-shell edit in init_ui (_setup_main_tabs), closeEvent hook |
ytsage/gui/ytsage_gui_analysis.py |
delegates subprocess execution to YtdlpClient |
ytsage/utils/ytsage_constants.py |
SageTube data dirs, PATH prepend for managed binaries |
ytsage/utils/ytsage_config_manager.py |
atomic save, defaults merge, player/feed/advanced keys |
pyproject.toml |
name, version, deps (python-mpv), URLs |
ytsage/languages/en.json |
added sections: player, cards, main_tabs, search, watch, browse, feed |
Bug fixes made in this fork (see git log between the merge commit and the
first feature commit) may also conflict if upstream fixes them differently —
prefer whichever version is stricter about verification and thread safety.
SageTube-only modules (never conflict)
ytsage/core/ytsage_client.py — shared yt-dlp JSON invocation layer
ytsage/core/ytsage_mpv.py — libmpv probe
ytsage/gui/ytsage_gui_player.py — embedded mpv player
ytsage/gui/ytsage_gui_watch.py / _search.py / _browse.py / _feed.py — tabs
ytsage/gui/ytsage_gui_router.py / _cards.py — navigation + video cards
ytsage/utils/ytsage_library_manager.py — subscriptions/history/queue DB