Rebrand user-visible surfaces to SageTube

The internal ytsage package name is kept deliberately - renaming it
would touch every file and destroy the ability to merge upstream
YTSage changes.

- pyproject: distribution name sagetube v0.1.0, sagetube entrypoint
  (ytsage alias retained), URLs point at the Gitea repo with an
  Upstream link to YTSage.
- Data dirs move to SageTube/ (fresh fork, fresh state) and the config
  file becomes sagetube_config.json; QApplication name and window
  title read SageTube.
- About dialog credits Houmeres and links "Based on YTSage by oop7".
- App self-update check against the upstream PyPI package is disabled
  by default; yt-dlp/deno/ffmpeg update flows are unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jaroslav Beneš
2026-07-25 02:45:58 +02:00
parent a8ebe89cc1
commit 8a05d5ff8f
7 changed files with 31 additions and 24 deletions
+9 -7
View File
@@ -3,11 +3,12 @@ requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[project]
name = "ytsage"
version = "5.2.0"
description = "Modern YouTube downloader with a clean PySide6 interface."
name = "sagetube"
version = "0.1.0"
description = "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage."
authors = [
{ name = "oop7", email = "oop7_support@proton.me" },
{ name = "Houmeres", email = "admin@ecoposta.sk" },
{ name = "oop7 (YTSage upstream)", email = "oop7_support@proton.me" },
]
dependencies = [
"PySide6>=6.10.1",
@@ -48,12 +49,13 @@ keywords = ["youtube", "downloader", "video", "audio", "PySide6", "yt-dlp", "GUI
[project.scripts]
sagetube = "ytsage.main:main"
ytsage = "ytsage.main:main"
[project.urls]
Homepage = "https://github.com/oop7/YTSage"
Bug-Tracker = "https://github.com/oop7/YTSage/issues"
Reddit = "https://www.reddit.com/r/NO-N_A_M_E/"
Homepage = "https://git.houmeres.sk/Houmeres/SageTube"
Bug-Tracker = "https://git.houmeres.sk/Houmeres/SageTube/issues"
Upstream = "https://github.com/oop7/YTSage"
[tool.setuptools]
include-package-data = true
+1 -1
View File
@@ -4,5 +4,5 @@ YTSage - YouTube Video Downloader
A modern, user-friendly YouTube video downloader built with PySide6.
"""
__version__ = "5.2.0"
__version__ = "0.1.0"
__author__ = "oop7"
@@ -226,24 +226,27 @@ class AboutDialog(QDialog):
info_layout = QHBoxLayout()
info_layout.setSpacing(15)
author_link = '<a href="https://github.com/oop7/" style="color: #c90000; text-decoration: none;">oop7</a>'
author_link = '<a href="https://git.houmeres.sk/Houmeres" style="color: #c90000; text-decoration: none;">Houmeres</a>'
author_label = QLabel(
f"{_('about.author', author=author_link)}"
)
author_label.setOpenExternalLinks(True)
info_layout.addWidget(author_label)
repo_link = '<a href="https://github.com/oop7/YTSage/" style="color: #c90000; text-decoration: none;">YTSage</a>'
repo_link = '<a href="https://git.houmeres.sk/Houmeres/SageTube" style="color: #c90000; text-decoration: none;">SageTube</a>'
repo_label = QLabel(
f"{_('about.github', repo=repo_link)}"
)
repo_label.setOpenExternalLinks(True)
info_layout.addWidget(repo_label)
sponsor_link = '<a href="https://github.com/sponsors/oop7" style="color: #c90000; text-decoration: none;">❤️ Sponsor</a>'
sponsor_label = QLabel(sponsor_link)
sponsor_label.setOpenExternalLinks(True)
info_layout.addWidget(sponsor_label)
upstream_link = (
'<a href="https://github.com/oop7/YTSage" style="color: #c90000; text-decoration: none;">'
"Based on YTSage by oop7</a>"
)
upstream_label = QLabel(upstream_link)
upstream_label.setOpenExternalLinks(True)
info_layout.addWidget(upstream_label)
# Center the info layout
info_container = QHBoxLayout()
+3 -3
View File
@@ -22,7 +22,7 @@
"restart_notice": "Language change will take effect after restarting the application."
},
"app": {
"title": "YTSage",
"title": "SageTube",
"version": "v{version}",
"ready": "Ready"
},
@@ -240,9 +240,9 @@
"update_in_progress_message": "yt-dlp is currently updating. Please wait a moment."
},
"about": {
"title": "About YTSage",
"title": "About SageTube",
"version": "Version {version}",
"description": "Modern YouTube downloader with clean PySide6 interface.",
"description": "Watch-first YouTube client with embedded mpv playback and yt-dlp downloading. Fork of YTSage by oop7 (MIT).",
"author": "By: {author}",
"github": "GitHub: {repo}",
"system_info": "System Information",
+2
View File
@@ -25,6 +25,8 @@ def main():
try:
logger.info("Starting YTSage application")
app = QApplication(sys.argv)
app.setApplicationName("SageTube")
app.setDesktopFileName("sagetube")
window = YTSageApp() # Instantiate the main application class
window.show()
+1 -1
View File
@@ -86,7 +86,7 @@ class ConfigManager:
"geo_proxy_url": None,
"auto_update_ytdlp": True,
"auto_update_frequency": "daily",
"check_app_updates": True,
"check_app_updates": False, # fork updates come from Gitea, not the upstream PyPI package
"check_beta_updates": False,
"last_update_check": 0,
"concurrent_fragments": 1,
+6 -6
View File
@@ -91,11 +91,11 @@ if OS_NAME == "Windows":
# Always use user data directory for app data, logs, config, and binaries
# Even when frozen, we don't want to create these folders next to the executable
APP_DIR: Path = Path(os.environ.get("LOCALAPPDATA", USER_HOME_DIR / "AppData" / "Local")) / "YTSage"
APP_DIR: Path = Path(os.environ.get("LOCALAPPDATA", USER_HOME_DIR / "AppData" / "Local")) / "SageTube"
APP_BIN_DIR: Path = APP_DIR / "bin"
APP_DATA_DIR: Path = APP_DIR / "data"
APP_LOG_DIR: Path = APP_DIR / "logs"
APP_CONFIG_FILE: Path = APP_DATA_DIR / "ytsage_config.json"
APP_CONFIG_FILE: Path = APP_DATA_DIR / "sagetube_config.json"
APP_HISTORY_FILE: Path = APP_DATA_DIR / "ytsage_history.json"
APP_THUMBNAILS_DIR: Path = APP_DATA_DIR / "thumbnails"
@@ -110,11 +110,11 @@ elif OS_NAME == "Darwin": # macOS
# Always use user data directory for app data, logs, config, and binaries
# Even when frozen, we don't want to create these folders next to the executable
APP_DIR: Path = USER_HOME_DIR / "Library" / "Application Support" / "YTSage"
APP_DIR: Path = USER_HOME_DIR / "Library" / "Application Support" / "SageTube"
APP_BIN_DIR: Path = APP_DIR / "bin"
APP_DATA_DIR: Path = APP_DIR / "data"
APP_LOG_DIR: Path = APP_DIR / "logs"
APP_CONFIG_FILE: Path = APP_DATA_DIR / "ytsage_config.json"
APP_CONFIG_FILE: Path = APP_DATA_DIR / "sagetube_config.json"
APP_HISTORY_FILE: Path = APP_DATA_DIR / "ytsage_history.json"
APP_THUMBNAILS_DIR: Path = APP_DATA_DIR / "thumbnails"
@@ -129,11 +129,11 @@ else: # Linux and other UNIX-like
# Always use user data directory for app data, logs, config, and binaries
# Even when frozen, we don't want to create these folders next to the executable
APP_DIR: Path = USER_HOME_DIR / ".local" / "share" / "YTSage"
APP_DIR: Path = USER_HOME_DIR / ".local" / "share" / "SageTube"
APP_BIN_DIR: Path = APP_DIR / "bin"
APP_DATA_DIR: Path = APP_DIR / "data"
APP_LOG_DIR: Path = APP_DIR / "logs"
APP_CONFIG_FILE: Path = APP_DATA_DIR / "ytsage_config.json"
APP_CONFIG_FILE: Path = APP_DATA_DIR / "sagetube_config.json"
APP_HISTORY_FILE: Path = APP_DATA_DIR / "ytsage_history.json"
APP_THUMBNAILS_DIR: Path = APP_DATA_DIR / "thumbnails"