siftlode/frontend/src/components
npeter83 4dd1327b93 chore(hygiene): Phase 4 guardrails — noUnusedLocals/Parameters + dead-code sweep
Enable tsconfig noUnusedLocals + noUnusedParameters (permanent guardrail: every tsc/
build now flags re-accumulated dead code). Fixed the 8 violations that surfaced, all
genuine dead code:
- Sidebar: deleted unused SORT_IDS/SHOW_IDS/rollSeed consts + the dead Toggle component
  (+ its now-unused Switch import).
- PlexBrowse: dropped the unused onClearSearch prop (Props + destructure + App call site).
- VideoEditor: dropped the unused map index; notifications: deleted the dead back-compat
  toast(); storage: deleted the unused non-account usePersistedState (+ readJSON import).
- SavedViewsWidget: deleted the dead loadDefaultViewFilters export (App loads the default
  view inline; resolves the last knip unused-export → knip now clean).

Backend: added backend/ruff.toml (ignore E402 — intentional pre-import setup in main.py)
and fixed the 6 E702/E741 style items (_vtt_s_to_ts semicolons, ambiguous `l` loop vars)
so ruff is green. localdev boots; Feed/Plex/sidebar render; 0 console errors.
2026-07-12 02:15:52 +02:00
..
legal chore: Phase 1 hygiene — drop unused imports/exports/types (behavior-neutral) 2026-07-11 04:47:08 +02:00
ui chore(ui): extract shared inputCls + btnCls to ui/form.tsx 2026-07-12 00:29:04 +02:00
About.tsx feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
AddToPlaylist.tsx refactor(ui): useDismiss hook for outside-click/Escape close 2026-06-29 00:11:44 +02:00
AdminUsers.tsx perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
Avatar.tsx fix(ui): robust avatars — no-referrer + graceful fallback 2026-06-12 18:01:43 +02:00
BackToTop.tsx fix(ui): make the back-to-top button resist ad-block cosmetic filters 2026-06-30 05:18:07 +02:00
Banner.tsx refactor(banner): extract reusable Banner base for VersionBanner + DemoBanner 2026-06-19 11:18:20 +02:00
channelColumns.tsx chore(ui): dedup last 3 jscpd clones → 0 (collapsed rail, video-card text block, subs column) 2026-07-12 00:46:52 +02:00
ChannelDiscovery.tsx chore(ui): dedup last 3 jscpd clones → 0 (collapsed rail, video-card text block, subs column) 2026-07-12 00:46:52 +02:00
ChannelLink.tsx refactor(channels): share one ChannelLink + channelYouTubeUrl helper 2026-06-19 03:22:10 +02:00
ChannelPage.tsx fix(channels): ChannelPage subscribe — surface 403 + fix stale caches 2026-07-11 18:11:23 +02:00
Channels.tsx chore(ui): dedup last 3 jscpd clones → 0 (collapsed rail, video-card text block, subs column) 2026-07-12 00:46:52 +02:00
ChatDock.tsx fix(messages): make the dock new-message flash actually visible 2026-06-26 00:00:21 +02:00
ChatThread.tsx fix(messages-ui): surface silent send failures, stop scroll/render churn (+cleanup) 2026-07-11 20:16:14 +02:00
CollapsedFilterRail.tsx chore(ui): dedup last 3 jscpd clones → 0 (collapsed rail, video-card text block, subs column) 2026-07-12 00:46:52 +02:00
ConfigPanel.tsx fix(admin-ui): Plex library toggle inversion + Purge-discovery confirm (+ cleanups) 2026-07-11 19:44:53 +02:00
ConfirmProvider.tsx feat(ui): reusable app-styled confirm dialog, replacing window.confirm 2026-06-15 15:06:47 +02:00
DataTable.tsx chore: Phase 1 hygiene — drop unused imports/exports/types (behavior-neutral) 2026-07-11 04:47:08 +02:00
DemoBanner.tsx refactor(banner): extract reusable Banner base for VersionBanner + DemoBanner 2026-06-19 11:18:20 +02:00
DownloadButton.tsx perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
DownloadCenter.tsx chore(ui): extract shared inputCls + btnCls to ui/form.tsx 2026-07-12 00:29:04 +02:00
DownloadDialog.tsx chore(ui): extract shared inputCls + btnCls to ui/form.tsx 2026-07-12 00:29:04 +02:00
ErrorBoundary.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
ErrorDialog.tsx fix(ux): modal error dialog for server-refused actions + ESC closes only the topmost 2026-06-18 01:17:31 +02:00
Feed.tsx fix(feed): repair 2 bugs found in the Phase 2 #2 review 2026-07-11 17:43:18 +02:00
Header.tsx fix(plex): give the library search its own ephemeral state 2026-07-08 23:19:36 +02:00
KeyGate.tsx feat(messages): standalone Messages module + floating chat dock 2026-06-25 22:34:24 +02:00
LanguageSwitcher.tsx feat(nav): current-language badge (HU/EN/DE) on the rail language switcher 2026-07-01 22:50:59 +02:00
Messages.tsx fix(messages-ui): surface silent send failures, stop scroll/render churn (+cleanup) 2026-07-11 20:16:14 +02:00
Modal.tsx fix(ui): only close a modal when the backdrop click starts on the backdrop 2026-07-07 22:28:33 +02:00
NavSidebar.tsx fix(e2ee): clear the device's private key on logout (user-approved: every logout) 2026-07-11 20:57:30 +02:00
NotificationsPanel.tsx perf: route- and modal-level code splitting (React.lazy) 2026-07-04 19:43:50 +02:00
OnboardingWizard.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
PageTitle.tsx feat(ui): favicon, dynamic tab title, clickable logo, styled module headers 2026-07-04 06:17:40 +02:00
PlayerModal.tsx fix(player): short-video auto-watch + player cleanups 2026-07-11 18:49:56 +02:00
Playlists.tsx fix(playlists-ui): surface YouTube 403s + rollback remove; drop dup name/import 2026-07-11 18:33:16 +02:00
PlexBrowse.tsx chore(hygiene): Phase 4 guardrails — noUnusedLocals/Parameters + dead-code sweep 2026-07-12 02:15:52 +02:00
PlexCollectionEditor.tsx fix(plex): address code-review findings (F1-F3, F5, F9) 2026-07-11 02:25:14 +02:00
PlexInfo.tsx chore(plex): dedup frontend formatters + LS key, drop dead wasPlaying pref 2026-07-11 23:10:24 +02:00
PlexPlayer.tsx fix(plex): player marker-skip reset, lang-switch reload, tracks wheel, sidebar badge clamp 2026-07-11 23:13:10 +02:00
PlexPlaylistAdd.tsx feat(plex): grouped collapsible playlist view + drag-and-drop + bulk add 2026-07-06 22:14:56 +02:00
PlexPlaylistView.tsx feat(plex): grouped collapsible playlist view + drag-and-drop + bulk add 2026-07-06 22:14:56 +02:00
PlexSidebar.tsx feat(plex): collapse button in the expanded Plex filter sidebar 2026-07-12 01:55:10 +02:00
ProfileEditor.tsx chore(ui): extract shared inputCls + btnCls to ui/form.tsx 2026-07-12 00:29:04 +02:00
ReleaseNotes.tsx feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
SavedViewsWidget.tsx chore(hygiene): Phase 4 guardrails — noUnusedLocals/Parameters + dead-code sweep 2026-07-12 02:15:52 +02:00
Scheduler.tsx fix(admin-ui): Plex library toggle inversion + Purge-discovery confirm (+ cleanups) 2026-07-11 19:44:53 +02:00
SettingsPanel.tsx fix(admin-ui): Plex library toggle inversion + Purge-discovery confirm (+ cleanups) 2026-07-11 19:44:53 +02:00
SetupWizard.tsx feat(setup): install-wizard UI (epic 6c) 2026-06-21 01:11:16 +02:00
ShareDialog.tsx chore(ui): extract shared inputCls + btnCls to ui/form.tsx 2026-07-12 00:29:04 +02:00
Sidebar.tsx chore(hygiene): Phase 4 guardrails — noUnusedLocals/Parameters + dead-code sweep 2026-07-12 02:15:52 +02:00
Stats.tsx fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
SyncStatus.tsx fix(sync): keep the pause control inline in the nav rail, not on an orphan line 2026-07-04 04:41:13 +02:00
Tabs.tsx fix(state): scope all per-account localStorage by account id 2026-07-02 01:45:16 +02:00
TagManager.tsx fix(notifications): name the entity in action toasts 2026-06-26 00:32:17 +02:00
Toaster.tsx feat(toast): surface toasts bottom-left by the bell, brighter dark rim 2026-06-17 14:28:29 +02:00
Tooltip.tsx fix(tooltip): keep hint captions inside the viewport near screen edges 2026-07-04 04:45:51 +02:00
UndoToolbar.tsx feat(playlists): sort + group-by-channel with reusable undo/redo 2026-06-15 21:52:28 +02:00
VersionBanner.tsx refactor(banner): extract reusable Banner base for VersionBanner + DemoBanner 2026-06-19 11:18:20 +02:00
VideoCard.tsx chore(ui): dedup last 3 jscpd clones → 0 (collapsed rail, video-card text block, subs column) 2026-07-12 00:46:52 +02:00
VideoEditor.tsx chore(hygiene): Phase 4 guardrails — noUnusedLocals/Parameters + dead-code sweep 2026-07-12 02:15:52 +02:00
VirtualFeed.tsx feat(channels): dedicated channel page + ephemeral explore UI 2026-06-30 03:08:52 +02:00
WatchPage.tsx feat(downloads): clickable channels + poster fallback for thumbnail-less sources 2026-07-07 22:28:49 +02:00
Welcome.tsx perf(landing): WebP welcome screenshots + long-cache static assets 2026-07-04 18:17:11 +02:00