Einstellungen-Tab, plattformuebergreifendes Update/Branding, CI-Release-Pipeline

- Settings-Tab in der App (Discord/Update/Start-Tab live editierbar, kein config.json-Handbearbeiten noetig)
- updater.py: plattformabhaengige Asset-Auswahl + Installation (Windows .zip/robocopy, Linux .tar.gz/Shell-Skript)
- browser.py/chrome_shim.py: Sec-CH-UA + navigator.userAgentData jetzt je nach sys.platform (Windows/Linux/macOS)
- app_id.py: robustere Suche nach umbenanntem QtWebEngine-Hilfsprozess (rglob statt fixer Pfade)
- packaging/playtube.spec: icon/version nur unter Windows setzen (Linux-Build faehig)
- packaging/install-linux.sh: Installationsskript fuer native Linux-Version (Desktop-Eintrag, Icon, PATH)
- .github/workflows/release.yml: baut bei Tag-Push automatisch Windows-.exe UND Linux-Binary und veroeffentlicht beide als GitHub Release

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
2026-09-11 19:34:45 +02:00
co-authored by Claude Sonnet 5
parent 578cda499a
commit 0e6b580018
11 changed files with 459 additions and 109 deletions
+15 -3
View File
@@ -21,9 +21,21 @@ Nutzer lediglich, sich in der eigenen App mit dem eigenen Google-Konto anzumelde
so wie es in vielen anderen Desktop-Clients (z.B. Mail-/Chat-Sammler-Apps) ueblich ist.
"""
import sys
CHROME_MAJOR = "140"
CHROME_FULL = "140.0.0.0"
if sys.platform == "win32":
_JS_PLATFORM = "Windows"
_JS_PLATFORM_VERSION = "15.0.0"
elif sys.platform.startswith("linux"):
_JS_PLATFORM = "Linux"
_JS_PLATFORM_VERSION = "6.0.0"
else:
_JS_PLATFORM = "macOS"
_JS_PLATFORM_VERSION = "14.0.0"
CHROME_SHIM_JS = f"""
(function() {{
try {{
@@ -69,12 +81,12 @@ CHROME_SHIM_JS = f"""
var uaData = {{
brands: brands,
mobile: false,
platform: 'Windows',
platform: '{_JS_PLATFORM}',
getHighEntropyValues: function(hints) {{
var full = {{
architecture: 'x86', bitness: '64', brands: brands,
fullVersionList: fullBrands, mobile: false, model: '',
platform: 'Windows', platformVersion: '15.0.0',
platform: '{_JS_PLATFORM}', platformVersion: '{_JS_PLATFORM_VERSION}',
uaFullVersion: '{CHROME_FULL}', wow64: false
}};
var result = {{}};
@@ -83,7 +95,7 @@ CHROME_SHIM_JS = f"""
}});
return Promise.resolve(result);
}},
toJSON: function() {{ return {{ brands: brands, mobile: false, platform: 'Windows' }}; }}
toJSON: function() {{ return {{ brands: brands, mobile: false, platform: '{_JS_PLATFORM}' }}; }}
}};
Object.defineProperty(navigator, 'userAgentData', {{ get: () => uaData, configurable: true }});
}} catch (e) {{}}