siftlode/frontend/src/i18n/locales/de
npeter83 3ae42409b3 feat(notifications): durable per-user inbox (P1) + maintenance schema
Add a server-backed notification center that coexists with the client-side
transient bell: a per-user `notifications` table (type/title/body/data JSON/
read/dismissed), a `/api/me/notifications` CRUD API (list, unread_count, read,
read_all, dismiss, clear), and a left-nav inbox module with a live unread badge
polled via useLiveQuery. Known types render trilingual text from type+data
(English stored text is the fallback); read rows are trimmed past a soft cap.

Also adds the schema the maintenance job builds on: videos.list?part=status
columns (embeddable/privacy_status/upload_status) and the validation lifecycle
columns (last_checked_at, unavailable_since, unavailable_reason).

Page-id validation is centralized in one PAGES source of truth (isPage) so the
new page survives reload without a second allowlist to keep in sync.
2026-06-18 03:20:17 +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
channels.json feat(tags): tag UX overhaul + per-card video reset 2026-06-18 01:17:31 +02:00
common.json feat(demo): login trigger, feature gating + admin UI (HU/EN/DE) 2026-06-16 09:17:34 +02:00
datatable.json feat(ui): reusable DataTable component 2026-06-17 19:16:23 +02:00
errors.json fix(ux): modal error dialog for server-refused actions + ESC closes only the topmost 2026-06-18 01:17:31 +02:00
feed.json fix(demo): graceful UX when YouTube actions are unavailable 2026-06-16 09:27:34 +02:00
header.json feat(scheduler): live admin Scheduler dashboard + reusable poll hook (HU/EN/DE) 2026-06-16 14:38:51 +02:00
inbox.json feat(notifications): durable per-user inbox (P1) + maintenance schema 2026-06-18 03:20:17 +02:00
login.json feat(i18n): translate login and app chrome (HU/EN/DE) 2026-06-15 00:30:34 +02:00
nav.json feat(nav): N1 — collapsible left nav sidebar (Design C) 2026-06-16 00:42:23 +02:00
notifications.json feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
onboarding.json feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
player.json fix(player): friendly fallback when a video can't be embedded 2026-06-16 10:45:57 +02:00
playlists.json polish(playlists): compact header actions + open-on-YouTube link 2026-06-15 22:40:21 +02:00
scheduler.json feat(scheduler): per-job help tooltips, status legend, inline interval edit 2026-06-16 15:58:23 +02:00
settings.json feat(demo): login trigger, feature gating + admin UI (HU/EN/DE) 2026-06-16 09:17:34 +02:00
sidebar.json feat(tags): tag UX overhaul + per-card video reset 2026-06-18 01:17:31 +02:00
stats.json feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00
tagManager.json feat(tags): tag UX overhaul + per-card video reset 2026-06-18 01:17:31 +02:00
time.json feat(i18n): translate remaining components (HU/EN/DE) 2026-06-15 00:47:04 +02:00