siftlode/frontend/src
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
..
components feat(playlists): make YouTube-mirrored playlists editable + syncable 2026-06-15 21:40:13 +02:00
i18n feat(playlists): make YouTube-mirrored playlists editable + syncable 2026-06-15 21:40:13 +02:00
lib feat(playlists): Sync to YouTube UI + delete-on-YouTube choice 2026-06-15 21:23:13 +02:00
App.tsx feat(playlists): Sync to YouTube UI + delete-on-YouTube choice 2026-06-15 21:23:13 +02:00
index.css perf(feed): smoother scrolling for long feeds 2026-06-12 18:17:03 +02:00
main.tsx feat(ui): reusable app-styled confirm dialog, replacing window.confirm 2026-06-15 15:06:47 +02:00
vite-env.d.ts feat(i18n): foundation — react-i18next, language switcher, server-persisted choice 2026-06-15 00:30:34 +02:00