siftlode/frontend/src/i18n/locales/hu
npeter83 736db017e4 feat(plex): unify movies + shows into one cross-library browser
Collapse the separate Movie/Show library sections into ONE unified library with a
shared search + shared filter sidebar and a Movies/Shows/Both scope selector.

Backend: new GET /api/plex/library — a cross-library UNION of movies (plex_items) and
shows (plex_shows) as one mixed, paginated, sorted feed, scoped movie|show|both, with
the shared filters (extracted into _apply_meta_filters, DRY), FTS search, and per-user
watch-state (a show's state = the aggregate of its episodes). On a search that also
matches episodes, matching episodes come back in a separate 'episodes' list (the grouped
'Episodes' section — Proposal 3). /facets is now scope-aware (merged across the scope's
libraries). /item and /show now return their library section key (for the admin
collection editor, since there's no single library prop in the unified view).

Frontend: PlexSidebar's library picker -> a scope selector (Both/Movies/Shows); facets +
browse follow the scope (App's plexLib repurposed to a validated scope, default both).
PlexBrowse uses the unified endpoint, renders a mixed Titles grid + an Episodes section
on search. Poster cards are generalized: a hover Play/Resume overlay on every card, a
clickable title (not just the poster), and a movie/show type tag. The quick watched
toggle is now optimistic so it reliably flips BOTH ways (fixes the movie card that could
mark but not un-mark). Cast/crew members and the show hero's meta (year/rating/genre/
content-rating) are clickable filters; clicking a person widens the scope to Both so the
result is a mixed movie+show feed. i18n plex.filter.scope*/plex.unified.* (en/hu/de).

Still pending from the polish list (next pass): season-card quick toggles (watched +
add-to-playlist), per-episode watched toggle, and the full glassy art-bg + hide-cast
customize menu on the series pages.
2026-07-11 00:15:49 +02:00
..
about.json feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
card.json feat(tags): tag UX overhaul + per-card video reset 2026-06-18 01:17:31 +02:00
channel.json feat(search): ephemeral results UX, count selector, channel blocklist (frontend) 2026-07-01 01:00:32 +02:00
channels.json feat(search): ephemeral results UX, count selector, channel blocklist (frontend) 2026-07-01 01:00:32 +02:00
common.json feat(welcome): link to the public source repository from the footer 2026-07-01 14:27:42 +02:00
config.json feat(plex): surface playback errors + media-mount status in the UI 2026-07-05 06:58:34 +02:00
datatable.json feat(ui): reusable DataTable component 2026-06-17 19:16:23 +02:00
downloads.json feat(downloads): editable details with clickable channel and extra links 2026-07-07 20:19:18 +02:00
editor.json feat(downloads): editor v2 — cut-list, join, aspect filmstrip + hover scrub 2026-07-04 03:26:33 +02:00
errors.json fix(web): make the 'connection lost' notice self-resolving 2026-06-18 23:17:32 +02:00
feed.json feat(plex): P1 frontend — Plex feed source, browse/search, show drill-down 2026-07-05 02:32:00 +02:00
header.json improvement(filters): count Source + Library scope as active; unify Clear all; add search clear (X) 2026-07-01 04:22:39 +02:00
inbox.json feat(messages): E2EE real-time messaging UI + system welcome 2026-06-25 22:05:35 +02:00
login.json feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
messages.json feat(messages): standalone Messages module + floating chat dock 2026-06-25 22:34:24 +02:00
nav.json feat(nav): admin section label + role chip beside the user name 2026-07-01 22:50:59 +02:00
notifications.json refactor(i18n,format): translate ETA strings; consolidate time/duration formatters 2026-06-29 00:22:21 +02:00
onboarding.json feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
player.json feat(player): open YouTube's native settings menu fully + push higher quality 2026-07-10 15:52:34 +02:00
playlists.json fix(notifications): name the entity in action toasts 2026-06-26 00:32:17 +02:00
plex.json feat(plex): unify movies + shows into one cross-library browser 2026-07-11 00:15:49 +02:00
quotaActions.json feat(channels): dedicated channel page + ephemeral explore UI 2026-06-30 03:08:52 +02:00
scheduler.json feat(plex): Phase C — incremental + full Plex↔Siftlode watch reconcile 2026-07-10 00:46:22 +02:00
settings.json fix(plex): optimistic toggle + 'importing' indicator for watch-sync 2026-07-09 15:34:28 +02:00
setup.json feat(setup): install-wizard UI (epic 6c) 2026-06-21 01:11:16 +02:00
sidebar.json feat(layout): full-height collapsible filter sidebar; sync status + scope relocated 2026-07-01 23:08:25 +02:00
stats.json feat(stats): consolidate per-user sync status into the Stats page 2026-06-19 11:48:20 +02:00
tagManager.json fix(notifications): name the entity in action toasts 2026-06-26 00:32:17 +02:00
time.json refactor(i18n,format): translate ETA strings; consolidate time/duration formatters 2026-06-29 00:22:21 +02:00
users.json feat(admin): user management — roles, suspend, delete + lifecycle emails 2026-06-19 19:52:12 +02:00
views.json feat(views): saved-views UI — sidebar widget, apply/rename/default/reorder/share 2026-07-01 03:17:36 +02:00
welcome.json improvement(welcome): prominent open-source callout in the page body 2026-07-02 02:14:27 +02:00