feat(themes): Theme Store install counts, downloads & sort (#1036)

* feat(themes): install counts, downloads, popularity & sort in the Theme Store

Each registry theme now carries an install count and a last-changed date. Store
rows show them in a dedicated meta panel (author, popularity bar, total
downloads, last changed), plus a sort dropdown (most popular / newest / name),
zebra-striped rows, a numbered pager, and a note that the stats refresh daily.
Adds a shared formatRelativeTime helper (formatLastSeen now delegates to it).

* test(themes): cover sort modes, pager jump and relative-time formatting

* fix(build): gate nvidia_quirk_active to Linux

Its only caller is the Linux branch of theme_animation_risk, so on Windows and
macOS the function was dead code and tripped clippy's -D warnings.

* docs: CHANGELOG + credits for theme store download stats & sort (#1036)
This commit is contained in:
Psychotoxical
2026-06-08 22:05:41 +02:00
committed by GitHub
parent 68f0f09aae
commit 0878cbf308
19 changed files with 346 additions and 48 deletions
+8 -1
View File
@@ -331,6 +331,7 @@ export const settings = {
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.',
themeStoreStatsNotice: 'Statisticile de descărcări și ultima modificare se actualizează o dată pe zi (în jurul orei 04:17 UTC).',
themeStoreSearchPlaceholder: 'Caută teme…',
themeStoreFilterMode: 'Filtrează după mod',
themeStoreModeAll: 'Toate',
@@ -344,7 +345,13 @@ export const settings = {
themeStoreEmpty: 'Nicio temă nu corespunde filtrelor tale.',
themeStoreActive: 'Activă',
themeStoreEnlarge: 'Mărește previzualizarea',
themeStoreByAuthor: 'de {{author}}',
themeStoreSortPopular: 'Cele mai populare',
themeStoreSortNewest: 'Cele mai noi',
themeStoreSortName: 'Alfabetic',
themeStoreAuthor: 'Autor',
themeStorePopularity: 'Popularitate',
themeStoreDownloads: 'Descărcări totale',
themeStoreLastChanged: 'Ultima modificare',
themeMigrationNoticeTitle: 'Tema a fost mutată în magazin',
themeMigrationNoticeBody: '{{themes}} nu mai este inclusă în aplicație. O poți reinstala din Magazinul de Teme (Setări → Teme) sau poți alege altă temă.',
themeMigrationNoticeOpen: 'Deschide Magazinul de Teme',