siftlode/frontend/src/i18n/locales/en
npeter83 95d1549570 feat(auth): SA4 — server-side session revocation via per-user session epoch
Signed client-side session cookies had no server-side kill switch: logout + password
reset couldn't evict a stolen/copied cookie (valid until expiry). Add User.session_epoch
(migration 0053), record it in the cookie at every login, and reject in current_user any
cookie whose recorded epoch is behind the account's current one.
- Bump the epoch on: password reset (kills ALL sessions — a reset is a compromise response),
  password change + a new 'Log out other sessions' action (both re-stamp the CURRENT cookie
  so the caller stays signed in, evicting only the others).
- Per-account epoch map in the session so one account's revocation doesn't evict the other
  signed-in accounts in the same browser wallet.
- Missing epoch (pre-SA4 cookie) is treated as 0, so the first bump revokes grandfathered
  sessions too.
- New POST /auth/logout-others + a Settings → Account 'Active sessions' button (trilingual).
2026-07-12 03:00:16 +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 chore(channels-ui): Phase 2 #3 frontend cleanup — dedup 403 handler, count cell, LS keys, dead i18n 2026-07-11 18:11:23 +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 chore(downloads-ui): FE-C4 follow-up cleanup 2026-07-11 17:10:15 +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 fix(messages-ui): surface silent send failures, stop scroll/render churn (+cleanup) 2026-07-11 20:16:14 +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 chore(plex): drop dead _enabled guard, dedup watch-toggle, remove dead i18n 2026-07-11 21:53:24 +02:00
quotaActions.json feat(channels): dedicated channel page + ephemeral explore UI 2026-06-30 03:08:52 +02:00
scheduler.json fix(admin-ui): Plex library toggle inversion + Purge-discovery confirm (+ cleanups) 2026-07-11 19:44:53 +02:00
settings.json feat(auth): SA4 — server-side session revocation via per-user session epoch 2026-07-12 03:00:16 +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