siftlode/frontend/src/components
npeter83 2b072a10de feat(playlists): make YouTube-mirrored playlists editable + syncable
Mirrors (source='youtube') were read-only; per the original two-way design they can
now be edited locally (add/remove/reorder/rename) and pushed back. The read-sync
skips a dirty mirror so it won't clobber unpushed edits; a successful push clears
dirty and lets the mirror refresh. _mark_dirty now covers any YouTube-linked list
(exported local or mirror), and rename marks dirty too. push/delete no longer reject
mirrors. Push reconciles the title as well (cheap playlists.list compare, then
playlists.update only if changed) so a local rename doesn't revert on the next pull.
Frontend: editable = not-built-in (was also excluding mirrors); rows/reorder enabled
for all owned lists; AddToPlaylist popover lists mirrors too (with a YT marker); the
origin chip now reads 'edits sync back'. Trilingual.
2026-06-15 21:40:13 +02:00
..
legal chore: rebrand Subfeed -> Siftlode 2026-06-14 04:40:22 +02:00
About.tsx feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
AddToPlaylist.tsx feat(playlists): make YouTube-mirrored playlists editable + syncable 2026-06-15 21:40:13 +02:00
Avatar.tsx fix(ui): robust avatars — no-referrer + graceful fallback 2026-06-12 18:01:43 +02:00
Channels.tsx feat(ui): reusable app-styled confirm dialog, replacing window.confirm 2026-06-15 15:06:47 +02:00
ConfirmProvider.tsx feat(ui): reusable app-styled confirm dialog, replacing window.confirm 2026-06-15 15:06:47 +02:00
ErrorBoundary.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
Feed.tsx feat(playlists): unify Saved into a built-in Watch later playlist 2026-06-15 15:33:53 +02:00
Header.tsx fix(playlists): correctly clear/reselect after deleting a playlist 2026-06-15 15:15:56 +02:00
LanguageSwitcher.tsx feat(i18n): foundation — react-i18next, language switcher, server-persisted choice 2026-06-15 00:30:34 +02:00
Login.tsx feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
Modal.tsx feat(ui): About dialog, Release Notes, and new-version banner 2026-06-15 00:06:57 +02:00
NotificationCenter.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
OnboardingWizard.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
PlayerModal.tsx feat(playlists): keep the player queue live across tabs 2026-06-15 16:27:28 +02:00
Playlists.tsx feat(playlists): make YouTube-mirrored playlists editable + syncable 2026-06-15 21:40:13 +02:00
ReleaseNotes.tsx feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
SettingsPanel.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
Sidebar.tsx fix(notifications): use the success level for success toasts 2026-06-15 19:46:37 +02:00
Stats.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
SyncStatus.tsx fix(header): keep the sync-status count live (focus refetch + background poll) 2026-06-15 17:00:06 +02:00
Toaster.tsx feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
Tooltip.tsx fix(ui): portal tooltips, opaque glass, settings rail+stable height, notif test, channel help 2026-06-11 21:30:25 +02:00
VersionBanner.tsx feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
VideoCard.tsx feat(playlists): unify Saved into a built-in Watch later playlist 2026-06-15 15:33:53 +02:00