mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-21 23:05:46 +00:00
fix(themes): serve the Theme Store from GitHub raw, not jsDelivr (#1051)
Theme assets (registry.json, theme CSS, thumbnails) were served from the jsDelivr CDN's mutable @main edge, which caches up to 12h. The registry is purged on every themes push so updates were offered promptly — but the theme CSS could still be served stale, so an update stored pre-update CSS under the new version label and no further update was offered to correct it (a freshly animated theme would install without its @keyframes). Fetch everything from GitHub raw (permissive CORS, ~5-min server cache), which is always current. jsDelivr is dropped entirely: our request volume does not need a CDN, and its only real upside here (high-traffic edge serving) does not apply, while its staleness actively caused the bug. Rename cdnUrl -> assetUrl to reflect the source.
This commit is contained in:
@@ -355,7 +355,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Theme-Store',
|
||||
themeStoreSubmitText: 'Eigenes Theme gebaut? Teil es mit der Community — mehr Infos im Themes-Repository.',
|
||||
themeStoreSubmitLink: 'Themes-Repository öffnen',
|
||||
themeStoreNetworkNotice: 'Der Theme-Store lädt Katalog und Vorschauen von externen Diensten (jsDelivr-CDN und GitHub). Es werden keine persönlichen Daten gesendet.',
|
||||
themeStoreNetworkNotice: 'Der Theme-Store lädt Katalog und Vorschauen von GitHub. Es werden keine persönlichen Daten gesendet.',
|
||||
themeStoreStatsNotice: 'Die „Zuletzt geändert“-Daten werden einmal täglich aktualisiert (gegen 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Themes suchen…',
|
||||
themeStoreFilterMode: 'Nach Modus filtern',
|
||||
|
||||
@@ -399,7 +399,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Theme Store',
|
||||
themeStoreSubmitText: 'Made your own theme? Share it with the community — more info in the themes repository.',
|
||||
themeStoreSubmitLink: 'Open the themes repository',
|
||||
themeStoreNetworkNotice: 'The Theme Store loads its catalogue and previews from external services (the jsDelivr CDN and GitHub). No personal data is sent.',
|
||||
themeStoreNetworkNotice: 'The Theme Store loads its catalogue and previews from GitHub. No personal data is sent.',
|
||||
themeStoreStatsNotice: 'Last-changed dates refresh once a day (around 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Search themes…',
|
||||
themeStoreFilterMode: 'Filter by mode',
|
||||
|
||||
@@ -353,7 +353,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Tienda de temas',
|
||||
themeStoreSubmitText: '¿Has creado tu propio tema? Compártelo con la comunidad — más información en el repositorio de temas.',
|
||||
themeStoreSubmitLink: 'Abrir el repositorio de temas',
|
||||
themeStoreNetworkNotice: 'La tienda de temas carga el catálogo y las vistas previas desde servicios externos (la CDN de jsDelivr y GitHub). No se envían datos personales.',
|
||||
themeStoreNetworkNotice: 'La tienda de temas carga el catálogo y las vistas previas desde GitHub. No se envían datos personales.',
|
||||
themeStoreStatsNotice: 'Las fechas de última modificación se actualizan una vez al día (sobre las 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Buscar temas…',
|
||||
themeStoreFilterMode: 'Filtrar por modo',
|
||||
|
||||
@@ -351,7 +351,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Boutique de thèmes',
|
||||
themeStoreSubmitText: "Vous avez créé votre propre thème ? Partagez-le avec la communauté — plus d'infos dans le dépôt de thèmes.",
|
||||
themeStoreSubmitLink: 'Ouvrir le dépôt de thèmes',
|
||||
themeStoreNetworkNotice: 'Le Theme Store charge son catalogue et ses aperçus depuis des services externes (le CDN jsDelivr et GitHub). Aucune donnée personnelle n’est envoyée.',
|
||||
themeStoreNetworkNotice: 'Le Theme Store charge son catalogue et ses aperçus depuis GitHub. Aucune donnée personnelle n’est envoyée.',
|
||||
themeStoreStatsNotice: 'Les dates de dernière modification sont actualisées une fois par jour (vers 04h17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Rechercher des thèmes…',
|
||||
themeStoreFilterMode: 'Filtrer par mode',
|
||||
|
||||
@@ -354,7 +354,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Temabutikk',
|
||||
themeStoreSubmitText: 'Laget ditt eget tema? Del det med fellesskapet — mer info i tema-repoet.',
|
||||
themeStoreSubmitLink: 'Åpne tema-repoet',
|
||||
themeStoreNetworkNotice: 'Theme Store laster katalogen og forhåndsvisninger fra eksterne tjenester (jsDelivr-CDN og GitHub). Ingen personopplysninger sendes.',
|
||||
themeStoreNetworkNotice: 'Theme Store laster katalogen og forhåndsvisninger fra GitHub. Ingen personopplysninger sendes.',
|
||||
themeStoreStatsNotice: 'Sist endret-datoene oppdateres én gang om dagen (rundt 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Søk i temaer…',
|
||||
themeStoreFilterMode: 'Filtrer etter modus',
|
||||
|
||||
@@ -351,7 +351,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Themawinkel',
|
||||
themeStoreSubmitText: 'Eigen thema gemaakt? Deel het met de community — meer info in de themarepository.',
|
||||
themeStoreSubmitLink: 'Themarepository openen',
|
||||
themeStoreNetworkNotice: 'De Theme Store laadt de catalogus en previews van externe diensten (de jsDelivr-CDN en GitHub). Er worden geen persoonlijke gegevens verzonden.',
|
||||
themeStoreNetworkNotice: 'De Theme Store laadt de catalogus en previews van GitHub. Er worden geen persoonlijke gegevens verzonden.',
|
||||
themeStoreStatsNotice: 'De laatst-gewijzigd-datums worden eenmaal per dag bijgewerkt (rond 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: "Thema's zoeken…",
|
||||
themeStoreFilterMode: 'Filteren op modus',
|
||||
|
||||
@@ -357,7 +357,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Magazin de teme',
|
||||
themeStoreSubmitText: 'Ți-ai creat propria temă? Împărtășește-o cu comunitatea — mai multe informații în depozitul de teme.',
|
||||
themeStoreSubmitLink: 'Deschide depozitul de teme',
|
||||
themeStoreNetworkNotice: 'Theme Store încarcă catalogul și previzualizările de la servicii externe (CDN-ul jsDelivr și GitHub). Nu se trimit date personale.',
|
||||
themeStoreNetworkNotice: 'Theme Store încarcă catalogul și previzualizările de la GitHub. Nu se trimit date personale.',
|
||||
themeStoreStatsNotice: 'Datele privind ultima modificare se actualizează o dată pe zi (în jurul orei 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Caută teme…',
|
||||
themeStoreFilterMode: 'Filtrează după mod',
|
||||
|
||||
@@ -410,7 +410,7 @@ export const settings = {
|
||||
themeStoreTitle: 'Магазин тем',
|
||||
themeStoreSubmitText: 'Создали свою тему? Поделитесь с сообществом — подробности в репозитории тем.',
|
||||
themeStoreSubmitLink: 'Открыть репозиторий тем',
|
||||
themeStoreNetworkNotice: 'Магазин тем загружает каталог и превью с внешних сервисов (CDN jsDelivr и GitHub). Личные данные не отправляются.',
|
||||
themeStoreNetworkNotice: 'Магазин тем загружает каталог и превью с GitHub. Личные данные не отправляются.',
|
||||
themeStoreStatsNotice: 'Даты последнего изменения обновляются раз в день (около 04:17 UTC).',
|
||||
themeStoreSearchPlaceholder: 'Поиск тем…',
|
||||
themeStoreFilterMode: 'Фильтр по режиму',
|
||||
|
||||
@@ -350,7 +350,7 @@ export const settings = {
|
||||
themeStoreTitle: '主题商店',
|
||||
themeStoreSubmitText: '做了自己的主题?与社区分享——更多信息见主题仓库。',
|
||||
themeStoreSubmitLink: '打开主题仓库',
|
||||
themeStoreNetworkNotice: '主题商店从外部服务(jsDelivr CDN 和 GitHub)加载目录和预览。不会发送任何个人数据。',
|
||||
themeStoreNetworkNotice: '主题商店从 GitHub 加载目录和预览。不会发送任何个人数据。',
|
||||
themeStoreStatsNotice: '最后更新时间每天更新一次(约 04:17 UTC)。',
|
||||
themeStoreSearchPlaceholder: '搜索主题…',
|
||||
themeStoreFilterMode: '按模式筛选',
|
||||
|
||||
Reference in New Issue
Block a user