BREAKING CHANGE: nouvelle architecture frontend avec layout sidebar, système de thèmes et routes restructurées ### Frontend - nouveau layout global `AppLayout.vue` avec sidebar de navigation inspirée Radarr/Sonarr - sidebar configurable via un objet `NavItem[]` avec support parents/enfants cliquables - 3 thèmes CSS (Indigo Électrique, Crimson Night, Teal Froid) persistés via localStorage - switcher de thème en bas de sidebar avec pastilles colorées - logo FanKarr cliquable, bouton déconnexion discret dans le header sidebar - badge animé sur "Activité" affichant le nombre de téléchargements en cours - migration complète vers Tailwind v4 avec variables CSS `@theme` - classes utilitaires globales : `btn-primary`, `btn-secondary`, `settings-card`, `settings-input` ### Vues - `SeriesView` : barre colorée en bas des affiches (vert/bleu/orange), dropdown filtres, boutons taille S/M/L/XL persistés - `SerieView` : bouton état unique par épisode (↓/⟳/✓/✗), badges simplifiés, toast via `useToast` global - `ActivityView` : onglets pill, stats, toggle "masquer importés", polling silencieux - `DashboardView` : stats catalogue/importées/en cours/erreurs, torrents actifs, derniers imports - `SettingsView` découpée en 3 vues indépendantes : `DownloadClientView`, `MediaManagementView`, `CatalogueView` - `LogsView` déplacée dans `src/views/settings/` - `AuthView` : migré au système de thème ### Composants - `SidebarNavItem` : support badge, chevron masqué si badge présent - `SettingsToggle` : composant réutilisable `v-model` - `FolderPicker` : migré au thème, `Teleport` intégré - `ToastContainer` : déplacé en bas droite, groupement des toasts similaires avec badge count ### Router - `AppLayout` comme layout racine pour toutes les routes protégées - `/auth` reste hors layout - redirections `/` → `/series`, `/downloads` → `/activity` - `SettingsLayout` avec titre dynamique par route - scroll géré sur `<main id="main-scroll">` dans `AppLayout` ### Stores & composables - nouveau store `downloads` partagé pour le badge sidebar - `usePosterSize` : taille des affiches persistée en localStorage - `useToast` : groupement des toasts du même type, timer reset au lieu d'empilement ### Serveur - logs structurés via `logger` dans `auth.ts`, `organize.ts`, `organize-worker.ts`, `torrent-clients/index.ts`, `qbittorrent.ts`, `index.ts` - suppression des `console.log/error/warn` en faveur de `logger.info/warn/error/debug` - messages worker routés vers `logger` via `organize.ts` - logs `debug` pour les événements verbeux (healthcheck, skip, worker terminé)
46 lines
1.8 KiB
JSON
46 lines
1.8 KiB
JSON
{
|
|
"name": "fankarr",
|
|
"private": true,
|
|
"version": "0.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "concurrently \"vite\" \"tsx watch server/index.ts\"",
|
|
"dev:server": "tsx watch server/index.ts",
|
|
"dev:client": "vite",
|
|
"build": "vite build && tsc -p tsconfig.server.json",
|
|
"build:bun:linux": "bun build server/index.ts --compile --target bun-linux-x64 --outfile binaries/fankarr-linux-x64 && bun build server/organize-worker.ts --target node --outfile binaries/organize-worker.js",
|
|
"build:bun:windows": "bun build server/index.ts --compile --target bun-windows-x64 --outfile binaries/fankarr-windows-x64.exe && bun build server/organize-worker.ts --target node --outfile binaries/organize-worker.js",
|
|
"build:bun:macos": "bun build server/index.ts --compile --target bun-darwin-arm64 --outfile binaries/fankarr-macos && bun build server/organize-worker.ts --target node --outfile binaries/organize-worker.js",
|
|
"build:bun:all": "pnpm build:bun:linux && pnpm build:bun:windows && pnpm build:bun:macos",
|
|
"start": "node dist/server/index.js",
|
|
"preview": "vite preview"
|
|
},
|
|
"dependencies": {
|
|
"@tailwindcss/vite": "^4.2.1",
|
|
"@vueuse/core": "^14.2.1",
|
|
"bcryptjs": "^3.0.3",
|
|
"cookie-parser": "^1.4.7",
|
|
"express": "^5.2.1",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"lucide-vue-next": "^1.0.0",
|
|
"node-fetch": "^3.3.2",
|
|
"pinia": "^3.0.4",
|
|
"tailwindcss": "^4.2.1",
|
|
"vue": "^3.5.25",
|
|
"vue-router": "^5.0.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bcrypt": "^5.0.2",
|
|
"@types/cookie-parser": "^1.4.8",
|
|
"@types/express": "^5.0.6",
|
|
"@types/jsonwebtoken": "^9.0.9",
|
|
"@types/node": "^24.10.1",
|
|
"@vitejs/plugin-vue": "^6.0.2",
|
|
"@vue/tsconfig": "^0.8.1",
|
|
"concurrently": "^9.2.1",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "~5.9.3",
|
|
"vite": "^7.3.1",
|
|
"vue-tsc": "^3.1.5"
|
|
}
|
|
} |