* fix: use optional chaining for WebSocket state checks and improve error handling in remote command execution
* chore(deps): update Next.js, Vitest, and ESLint dependencies; clean up eslint-disable comments
* chore: add vite as a dependency in package.json
---------
Co-authored-by: ProxmoxVE Developer <dev@localhost>
* fix: PB 503 retry, IPv6 validation, download concurrency
- Add withPbRetry() with exponential backoff for PocketBase queries
that return 503/429 under concurrent tRPC request load (#527)
- Accept IPv6 addresses in gateway and DNS resolver fields (#524)
- Batch loadMultipleScripts in groups of 5 with Promise.allSettled
and inter-batch delay to avoid GitHub rate limits (#523)
Closes#527, Closes#524, Closes#523
* perf: increase staleTime, disable refetchOnWindowFocus, use httpBatchLink
- staleTime 30s → 5min: script metadata rarely changes, avoids
constant re-fetches on every navigation
- refetchOnWindowFocus: false: prevents all queries from re-firing
when switching tabs or clicking back into the window
- httpBatchLink instead of httpBatchStreamLink: responses arrive as
single JSON payload instead of streamed chunks, reducing overhead
for the typical small tRPC payloads
* fix: address TypeScript linting issues and improve error handling across multiple files
* fix: resolve TypeScript linting issues by updating error handling and filtering logic
---------
Co-authored-by: ProxmoxVE Developer <dev@localhost>
- logoCacheService.ts: download script logos to public/logos/ for local serving
- cache-logos.ts: build-time script caching 500+ logos from PocketBase
- scripts.ts router: resolve local logo paths, resyncScripts now caches logos
- autoSyncService.js: cache logos during background auto-sync
- ScriptDetailModal: show config_path per install method
- ResyncButton: renamed 'Sync Json Files' to 'Sync Scripts'
- GeneralSettingsModal: updated auto-sync description text
- .gitignore: ignore public/logos/ and data/*.db