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.
16 lines
700 B
JSON
16 lines
700 B
JSON
{
|
|
"navLabel": "Benachrichtigungen",
|
|
"title": "Benachrichtigungen",
|
|
"subtitle": "Neuigkeiten aus deiner Bibliothek und vom System.",
|
|
"empty": "Alles erledigt.",
|
|
"markAllRead": "Alle als gelesen markieren",
|
|
"clearAll": "Alle löschen",
|
|
"markRead": "Als gelesen markieren",
|
|
"dismiss": "Verwerfen",
|
|
"andMore": "und {{count}} weitere",
|
|
"maintenance": {
|
|
"title": "Videos entfernt",
|
|
"body_one": "{{count}} gespeichertes oder in einer Playlist befindliches Video wurde entfernt, weil es auf YouTube nicht mehr verfügbar ist.",
|
|
"body_other": "{{count}} gespeicherte oder in Playlists befindliche Videos wurden entfernt, weil sie auf YouTube nicht mehr verfügbar sind."
|
|
}
|
|
}
|