summaryrefslogtreecommitdiff
path: root/backend/decky_loader
diff options
context:
space:
mode:
authorAAGaming <aagaming@riseup.net>2025-07-01 14:49:48 -0400
committerGitHub <noreply@github.com>2025-07-01 14:49:48 -0400
commit7b8a18d02d8e6b098f3399d015cf22dd04bc561c (patch)
tree7139a04320c70caaaea7a53b77e7b4ff1132ab1a /backend/decky_loader
parentf327c6c792cb6beb1f32f70045e577a542a48070 (diff)
parentcbea1518ed1e88fde34e40a16a0e9c20e954a9f5 (diff)
downloaddecky-loader-7b8a18d02d8e6b098f3399d015cf22dd04bc561c.tar.gz
decky-loader-7b8a18d02d8e6b098f3399d015cf22dd04bc561c.zip
Merge branch 'main' into aa/fix-updater-reload
Diffstat (limited to 'backend/decky_loader')
-rw-r--r--backend/decky_loader/helpers.py2
-rw-r--r--backend/decky_loader/loader.py11
-rw-r--r--backend/decky_loader/locales/fr-FR.json69
-rw-r--r--backend/decky_loader/locales/ja-JP.json24
-rw-r--r--backend/decky_loader/locales/ru-RU.json16
5 files changed, 104 insertions, 18 deletions
diff --git a/backend/decky_loader/helpers.py b/backend/decky_loader/helpers.py
index c5c3cd9a..857503ab 100644
--- a/backend/decky_loader/helpers.py
+++ b/backend/decky_loader/helpers.py
@@ -23,6 +23,7 @@ csrf_token = str(uuid.uuid4())
ssl_ctx = ssl.create_default_context(cafile=certifi.where())
assets_regex = re.compile("^/plugins/.*/assets/.*")
+data_regex = re.compile("^/plugins/.*/data/.*")
dist_regex = re.compile("^/plugins/.*/dist/.*")
frontend_regex = re.compile("^/frontend/.*")
logger = getLogger("Main")
@@ -45,6 +46,7 @@ async def csrf_middleware(request: Request, handler: Handler):
str(request.rel_url.path) == "/fetch" or \
str(request.rel_url.path) == "/ws" or \
assets_regex.match(str(request.rel_url)) or \
+ data_regex.match(str(request.rel_url)) or \
dist_regex.match(str(request.rel_url)) or \
frontend_regex.match(str(request.rel_url)):
diff --git a/backend/decky_loader/loader.py b/backend/decky_loader/loader.py
index 6a324e23..e2e619f7 100644
--- a/backend/decky_loader/loader.py
+++ b/backend/decky_loader/loader.py
@@ -8,6 +8,7 @@ from typing import Any, Tuple, Dict, cast
from aiohttp import web
from os.path import exists
+from decky_loader.helpers import get_homebrew_path
from watchdog.events import RegexMatchingEventHandler, FileSystemEvent
from watchdog.observers import Observer
@@ -91,6 +92,7 @@ class Loader:
web.get("/plugins/{plugin_name}/frontend_bundle", self.handle_frontend_bundle),
web.get("/plugins/{plugin_name}/dist/{path:.*}", self.handle_plugin_dist),
web.get("/plugins/{plugin_name}/assets/{path:.*}", self.handle_plugin_frontend_assets),
+ web.get("/plugins/{plugin_name}/data/{path:.*}", self.handle_plugin_frontend_assets_from_data),
])
server_instance.ws.add_route("loader/get_plugins", self.get_plugins)
@@ -142,6 +144,13 @@ class Loader:
return web.FileResponse(file, headers={"Cache-Control": "no-cache"})
+ async def handle_plugin_frontend_assets_from_data(self, request: web.Request):
+ plugin = self.plugins[request.match_info["plugin_name"]]
+ home = get_homebrew_path()
+ file = path.join(home, "data", plugin.plugin_directory, request.match_info["path"])
+
+ return web.FileResponse(file, headers={"Cache-Control": "no-cache"})
+
async def handle_frontend_bundle(self, request: web.Request):
plugin = self.plugins[request.match_info["plugin_name"]]
@@ -216,4 +225,4 @@ class Loader:
async def handle_plugin_backend_reload(self, plugin_name: str):
plugin = self.plugins[plugin_name]
- await self.reload_queue.put((plugin.file, plugin.plugin_directory)) \ No newline at end of file
+ await self.reload_queue.put((plugin.file, plugin.plugin_directory))
diff --git a/backend/decky_loader/locales/fr-FR.json b/backend/decky_loader/locales/fr-FR.json
index 1fe43deb..50255f26 100644
--- a/backend/decky_loader/locales/fr-FR.json
+++ b/backend/decky_loader/locales/fr-FR.json
@@ -2,7 +2,7 @@
"BranchSelect": {
"update_channel": {
"label": "Canal de mise à jour",
- "prerelease": "Avant-première",
+ "prerelease": "Préliminaire",
"stable": "Stable",
"testing": "Test"
}
@@ -52,21 +52,29 @@
"MultiplePluginsInstallModal": {
"confirm": "Êtes-vous sûr de vouloir apporter les modifications suivantes ?",
"description": {
+ "downgrade": "Rétrograder {{name}} en {{version}}",
"install": "Installer {{name}} {{version}}",
+ "overwrite": "Écraser {{name}} avec {{version}}",
"reinstall": "Réinstaller {{name}} {{version}}",
- "update": "Mettre à jour {{name}} à {{version}}"
+ "update": "Mettre à jour {{name}} en {{version}}"
},
"ok_button": {
"idle": "Confirmer",
"loading": "En cours"
},
"title": {
+ "downgrade_many": "Rétrograder {{count}} plugins",
+ "downgrade_one": "Rétrograder 1 plugin",
+ "downgrade_other": "Rétrograder {{count}} plugins",
"install_many": "Installer {{count}} plugins",
"install_one": "Installer 1 plugin",
"install_other": "Installer {{count}} plugins",
"mixed_many": "Modifier {{count}} plugins",
"mixed_one": "Modifier {{count}} plugin",
"mixed_other": "Modifier {{count}} plugins",
+ "overwrite_many": "Écraser {{count}} plugins",
+ "overwrite_one": "Écraser 1 plugin",
+ "overwrite_other": "Écraser {{count}} plugins",
"reinstall_many": "Réinstaller {{count}} plugins",
"reinstall_one": "Réinstaller 1 plugin",
"reinstall_other": "Réinstaller {{count}} plugins",
@@ -76,12 +84,22 @@
}
},
"PluginCard": {
+ "plugin_downgrade": "Rétrograder",
"plugin_full_access": "Ce plugin a un accès complet à votre Steam Deck.",
"plugin_install": "Installer",
"plugin_no_desc": "Aucune description fournie.",
+ "plugin_overwrite": "Écraser",
+ "plugin_reinstall": "Réinstaller",
+ "plugin_update": "Mettre à jour",
"plugin_version_label": "Version du plugin"
},
"PluginInstallModal": {
+ "downgrade": {
+ "button_idle": "Rétrograder",
+ "button_processing": "Rétrogradation",
+ "desc": "Êtes-vous sûr de vouloir rétrograder {{artifact}} vers la version {{version}} ?",
+ "title": "Rétrograder {{artifact}}"
+ },
"install": {
"button_idle": "Installer",
"button_processing": "Installation en cours",
@@ -89,6 +107,13 @@
"title": "Installer {{artifact}}"
},
"no_hash": "Ce plugin n'a pas de somme de contrôle, vous l'installez à vos risques et périls.",
+ "not_installed": "(non installé)",
+ "overwrite": {
+ "button_idle": "Écraser",
+ "button_processing": "Écrasement",
+ "desc": "Êtes-vous sûr de vouloir remplacer {{artifact}} par la version {{version}} ?",
+ "title": "Écraser {{artifact}}"
+ },
"reinstall": {
"button_idle": "Réinstaller",
"button_processing": "Réinstallation en cours",
@@ -97,8 +122,8 @@
},
"update": {
"button_idle": "Mettre à jour",
- "button_processing": "Mise à jour",
- "desc": "Êtes-vous sûr de vouloir mettre à jour {{artifact}} {{version}} ?",
+ "button_processing": "Mise à jour en cours",
+ "desc": "Êtes-vous sûr de vouloir mettre à jour {{artifact}} vers la version {{version}} ?",
"title": "Mettre à jour {{artifact}}"
}
},
@@ -124,7 +149,7 @@
"decky_title": "Decky",
"decky_update_available": "Mise à jour vers {{tag_name}} disponible !",
"error": "Erreur",
- "plugin_error_uninstall": "Allez sur {{name}} dans le menu de Decky si vous voulez désinstaller ce plugin.",
+ "plugin_error_uninstall": "Le chargement de {{name}} a provoqué une exception comme indiqué ci-dessus. Cela signifie généralement que le plugin nécessite une mise à jour pour la nouvelle version de SteamUI. Vérifiez si une mise à jour est présente ou évaluez sa suppression dans les paramètres de Decky, dans la section Plugins.",
"plugin_load_error": {
"message": "Erreur lors du chargement du plugin {{name}}",
"toast": "Erreur lors du chargement de {{name}}"
@@ -153,7 +178,7 @@
"cef_console": {
"button": "Ouvrir la console",
"desc": "Ouvre la console CEF. Utile uniquement à des fins de débogage. Les éléments présentés ici sont potentiellement dangereux et ne doivent être utilisés que si vous êtes un développeur de plugins ou si vous êtes dirigé ici par un de ces développeurs.",
- "label": "CEF Console"
+ "label": "Console CEF"
},
"header": "Autre",
"react_devtools": {
@@ -171,7 +196,7 @@
},
"valve_internal": {
"desc1": "Active le menu développeur interne de Valve.",
- "desc2": "Ne touchez à rien dans ce menu à moins que vous ne sachiez ce qu'il fait.",
+ "desc2": "Ne touchez à rien dans ce menu à moins que vous ne sachiez ce que ça fait.",
"label": "Activer Valve Internal"
}
},
@@ -187,9 +212,9 @@
"label": "Mode développeur"
},
"notifications": {
- "decky_updates_label": "Mise à jour Decky disponible",
+ "decky_updates_label": "Mise à jour de Decky disponible",
"header": "Notifications",
- "plugin_updates_label": "Mises à jour du plugin disponibles"
+ "plugin_updates_label": "Mises à jour des plugins disponibles"
},
"other": {
"header": "Autre"
@@ -202,9 +227,19 @@
"developer_title": "Développeur",
"general_title": "Général",
"plugins_title": "Plugins",
- "testing_title": "Essai"
+ "testing_title": "Expérimentations"
},
"Store": {
+ "download_progress_info": {
+ "download_remote": "Téléchargement des binaires externes",
+ "download_zip": "Téléchargement du plugin",
+ "increment_count": "Incrémentation du nombre de téléchargements",
+ "installing_plugin": "Installation du plugin",
+ "open_zip": "Ouverture du fichier zip",
+ "parse_zip": "Analyse du fichier zip",
+ "start": "Initialisation",
+ "uninstalling_previous": "Désinstallation de la copie précédente"
+ },
"store_contrib": {
"desc": "Si vous souhaitez contribuer au Decky Plugin Store, consultez le dépôt SteamDeckHomebrew/decky-plugin-template sur GitHub. Des informations sur le développement et la distribution sont disponibles dans le fichier README.",
"label": "Contributions"
@@ -237,23 +272,27 @@
"store_testing_cta": "Pensez à tester de nouveaux plugins pour aider l'équipe Decky Loader !",
"store_testing_warning": {
"desc": "Vous pouvez utiliser cette chaîne de magasin pour tester des versions de plugins. Assurez-vous de laisser des commentaires sur GitHub afin que le plugin puisse être mis à jour pour tous les utilisateurs.",
- "label": "Bienvenue sur la chaîne du magasin de tests"
+ "label": "Bienvenue sur le canal test de la boutique"
}
},
"StoreSelect": {
"custom_store": {
- "label": "Plugin Store personnalisé",
+ "label": "Magasin personnalisé",
"url_label": "URL"
},
"store_channel": {
"custom": "Personnalisé",
"default": "Par défaut",
- "label": "Canal du Plugin Store",
+ "label": "Canal magasin",
"testing": "Test"
}
},
"Testing": {
- "download": "Télécharger"
+ "download": "Télécharger",
+ "error": "Erreur d'installation de la PR",
+ "header": "Les versions suivantes de Decky Loader sont construites à partir de Pull Requests ouvertes par des tiers. L'équipe de Decky Loader n'a pas vérifié leur fonctionnalité ou leur sécurité, et elles peuvent être obsolètes.",
+ "loading": "Chargement des Pull Requests ouvertes...",
+ "start_download_toast": "Téléchargement de la PR #{{id}}"
},
"TitleView": {
"decky_store_desc": "Ouvrir le magasin Decky",
@@ -264,7 +303,7 @@
"no_patch_notes_desc": "pas de notes de mise à jour pour cette version",
"patch_notes_desc": "Notes de mise à jour",
"updates": {
- "check_button": "Chercher les mises à jour",
+ "check_button": "Vérifier les mises à jour",
"checking": "Recherche",
"cur_version": "Version actuelle: {{ver}}",
"install_button": "Installer la mise à jour",
diff --git a/backend/decky_loader/locales/ja-JP.json b/backend/decky_loader/locales/ja-JP.json
index 53aedd85..0201dc88 100644
--- a/backend/decky_loader/locales/ja-JP.json
+++ b/backend/decky_loader/locales/ja-JP.json
@@ -52,7 +52,9 @@
"MultiplePluginsInstallModal": {
"confirm": "以下の変更を加えてもよろしいですか?",
"description": {
+ "downgrade": "ダウングレード {{name}} {{version}}",
"install": "インストール {{name}} {{version}}",
+ "overwrite": "上書き {{name}} {{version}}",
"reinstall": "再インストール {{name}} {{version}}",
"update": "アップデート {{name}} {{version}}"
},
@@ -61,19 +63,31 @@
"loading": "作業中"
},
"title": {
+ "downgrade_other": "{{count}} 個のプラグインをダウングレード",
"install_other": "{{count}} 個のプラグインをインストール",
"mixed_other": "{{count}} 個のプラグインを修正",
+ "overwrite_other": "{{count}} 個のプラグインを上書き",
"reinstall_other": "{{count}} 個のプラグインを再インストール",
"update_other": "{{count}} 個のプラグインをアップデート"
}
},
"PluginCard": {
+ "plugin_downgrade": "ダウングレード",
"plugin_full_access": "このプラグインはSteam Deckの全てのアクセス権を持ちます。",
"plugin_install": "インストール",
"plugin_no_desc": "説明はありません。",
+ "plugin_overwrite": "上書き",
+ "plugin_reinstall": "再インストール",
+ "plugin_update": "アップデート",
"plugin_version_label": "プラグインバージョン"
},
"PluginInstallModal": {
+ "downgrade": {
+ "button_idle": "ダウングレード",
+ "button_processing": "ダウングレード中",
+ "desc": "{{artifact}}をVer {{version}} にダウングレードしてもよろしいですか?",
+ "title": "{{artifact}}をダウングレード"
+ },
"install": {
"button_idle": "インストール",
"button_processing": "インストール中",
@@ -81,6 +95,13 @@
"title": "{{artifact}} をインストール"
},
"no_hash": "このプラグインにはハッシュがありません。ご自身の責任でインストールしてください。",
+ "not_installed": "(インストールされていません)",
+ "overwrite": {
+ "button_idle": "上書き",
+ "button_processing": "上書き中",
+ "desc": "{{artifact}}をVer {{version}} に上書きしてもよろしいですか?",
+ "title": "{{artifact}}を上書き"
+ },
"reinstall": {
"button_idle": "再インストール",
"button_processing": "再インストール中",
@@ -90,7 +111,7 @@
"update": {
"button_idle": "アップデート",
"button_processing": "アップデート中",
- "desc": "{{artifact}} {{version}} をアップデートしてもよろしいですか?",
+ "desc": "{{artifact}}をVer {{version}} にアップデートしてもよろしいですか?",
"title": "{{artifact}} をアップデート"
}
},
@@ -192,6 +213,7 @@
},
"Store": {
"download_progress_info": {
+ "download_remote": "外部バイナリのダウンロード",
"download_zip": "プラグインのダウンロード中",
"increment_count": "ダウンロード数の増加",
"installing_plugin": "プラグインのインストール中",
diff --git a/backend/decky_loader/locales/ru-RU.json b/backend/decky_loader/locales/ru-RU.json
index 798d5fc2..39a7b06f 100644
--- a/backend/decky_loader/locales/ru-RU.json
+++ b/backend/decky_loader/locales/ru-RU.json
@@ -52,7 +52,9 @@
"MultiplePluginsInstallModal": {
"confirm": "Вы уверены, что хотите внести следующие изменения?",
"description": {
+ "downgrade": "Откатить {{name}} до {{version}}",
"install": "Установить {{name}} {{version}}",
+ "overwrite": "Заменить {{name}} на {{version}}",
"reinstall": "Переустановить {{name}} {{version}}",
"update": "Обновить с {{name}} на {{version}}"
},
@@ -61,6 +63,9 @@
"loading": "В процессе"
},
"title": {
+ "downgrade_few": "Откатить {{count}} плагинов",
+ "downgrade_many": "Откатить {{count}} плагинов",
+ "downgrade_one": "Откатить 1 плагин",
"install_few": "Установить {{count}} плагинов",
"install_many": "Установить {{count}} плагинов",
"install_one": "Установить {{count}} плагин",
@@ -76,12 +81,21 @@
}
},
"PluginCard": {
+ "plugin_downgrade": "Откат",
"plugin_full_access": "Этот плагин имеет полный доступ к вашему Steam Deck.",
"plugin_install": "Установить",
"plugin_no_desc": "Нет описания.",
+ "plugin_overwrite": "Замена",
+ "plugin_reinstall": "Переустановка",
+ "plugin_update": "Обновление",
"plugin_version_label": "Версия плагина"
},
"PluginInstallModal": {
+ "downgrade": {
+ "button_idle": "Откат",
+ "desc": "Вы уверенны, что хотите откатить {{artifact}} до версии {{version}}?",
+ "title": "Откатить {{artifact}}"
+ },
"install": {
"button_idle": "Установить",
"button_processing": "Установка",
@@ -98,7 +112,7 @@
"update": {
"button_idle": "Обновить",
"button_processing": "Обновление",
- "desc": "Вы уверены, что хотите обновить {{artifact}} {{version}}?",
+ "desc": "Вы уверены, что хотите обновить {{artifact}} до версии {{version}}?",
"title": "Обновить {{artifact}}"
}
},