diff --git a/messages/de.json b/messages/de.json index bdab5ce76..2ac02982f 100644 --- a/messages/de.json +++ b/messages/de.json @@ -2438,6 +2438,10 @@ "danger-zone": { "title": "Gefahrenzone", "subtitle": "Destruktive systemweite Operationen." + }, + "about": { + "title": "Über", + "subtitle": "Version, Lizenz, Quellcode und Update-Prüfung." } }, "carrier": "Anbieter", diff --git a/messages/en.json b/messages/en.json index f05009440..8c948adcd 100644 --- a/messages/en.json +++ b/messages/en.json @@ -2438,6 +2438,10 @@ "danger-zone": { "title": "Danger Zone", "subtitle": "Destructive system-wide operations." + }, + "about": { + "title": "About", + "subtitle": "Version, license, source, and update check." } }, "carrier": "Carrier", diff --git a/messages/es.json b/messages/es.json index 04805cd8c..79fe0560b 100644 --- a/messages/es.json +++ b/messages/es.json @@ -2438,6 +2438,10 @@ "danger-zone": { "title": "Danger Zone", "subtitle": "Destructive system-wide operations." + }, + "about": { + "title": "About", + "subtitle": "Version, license, source, and update check." } }, "carrier": "Operador", diff --git a/messages/fr.json b/messages/fr.json index 8afaf44e1..b73b6cd22 100644 --- a/messages/fr.json +++ b/messages/fr.json @@ -2438,6 +2438,10 @@ "danger-zone": { "title": "Danger Zone", "subtitle": "Destructive system-wide operations." + }, + "about": { + "title": "About", + "subtitle": "Version, license, source, and update check." } }, "carrier": "Opérateur", diff --git a/messages/it.json b/messages/it.json index 5485270fa..fa665b2ce 100644 --- a/messages/it.json +++ b/messages/it.json @@ -2438,6 +2438,10 @@ "danger-zone": { "title": "Danger Zone", "subtitle": "Destructive system-wide operations." + }, + "about": { + "title": "About", + "subtitle": "Version, license, source, and update check." } }, "carrier": "Operatore", diff --git a/messages/pl.json b/messages/pl.json index 89e6390c5..b17f4c127 100644 --- a/messages/pl.json +++ b/messages/pl.json @@ -2438,6 +2438,10 @@ "danger-zone": { "title": "Danger Zone", "subtitle": "Destructive system-wide operations." + }, + "about": { + "title": "About", + "subtitle": "Version, license, source, and update check." } }, "carrier": "Operator", diff --git a/src/app/admin/[section]/renderer.tsx b/src/app/admin/[section]/renderer.tsx index dd22db0bc..304cbf512 100644 --- a/src/app/admin/[section]/renderer.tsx +++ b/src/app/admin/[section]/renderer.tsx @@ -16,6 +16,7 @@ import type { JSX } from "react"; import { useAuth } from "@/hooks/use-auth"; import { useTranslations } from "@/lib/i18n/context"; +import { AboutSection } from "@/components/settings/about-section"; import { AiQualitySection } from "@/components/admin/ai-quality-section"; import { AssistantSection } from "@/components/admin/assistant-section"; import { CoachFeedbackSection } from "@/components/admin/coach-feedback-section"; @@ -185,6 +186,11 @@ export function AdminSectionRenderer({ ); + case "about": + // v1.4.36 W4e — About section reused as-is from the settings + // surface. The component owns its own heading + cards layout + // so no SectionFrame wrapper. + return ; default: slug satisfies never; return null; diff --git a/src/components/admin/admin-shell.tsx b/src/components/admin/admin-shell.tsx index 65a764c62..d0da17c02 100644 --- a/src/components/admin/admin-shell.tsx +++ b/src/components/admin/admin-shell.tsx @@ -21,6 +21,7 @@ import { Bell, Database, FileText, + Info, KeyRound, Inbox, Plug, @@ -125,6 +126,12 @@ export const ADMIN_SECTIONS: readonly AdminSection[] = [ titleKey: "admin.section.danger-zone.title", icon: ShieldAlert, }, + // v1.4.36 W4e — About / version / update check folded into Admin. + { + slug: "about", + titleKey: "admin.section.about.title", + icon: Info, + }, ] as const; export interface AdminShellProps { diff --git a/src/components/admin/section-slugs.ts b/src/components/admin/section-slugs.ts index 449a07560..d5a20e925 100644 --- a/src/components/admin/section-slugs.ts +++ b/src/components/admin/section-slugs.ts @@ -29,6 +29,10 @@ export const ADMIN_SECTION_SLUGS = [ "app-logs", "backups", "danger-zone", + // v1.4.36 W4e — About / version / update check folded into Admin + // Console. Lives at /admin/about; the legacy /settings/about route + // is unlinked from the user-card dropdown. + "about", ] as const; export type AdminSectionSlug = (typeof ADMIN_SECTION_SLUGS)[number]; diff --git a/src/components/layout/sidebar-nav.tsx b/src/components/layout/sidebar-nav.tsx index 9da47bdc9..8a4249bc0 100644 --- a/src/components/layout/sidebar-nav.tsx +++ b/src/components/layout/sidebar-nav.tsx @@ -8,7 +8,6 @@ import { ChevronsLeft, ChevronsRight, Home, - Info, Lightbulb, LogOut, Monitor, @@ -144,17 +143,10 @@ function SidebarUserSection({ collapsed }: { collapsed: boolean }) { {t("nav.notifications")} - {/* v1.4.33 IW7 — "About" used to live as its own Settings - section but the three small cards inside (identity / links / - update check) collectively get read once or twice a year, so - the top-level slot has been collapsed into this dropdown. The - route stays alive at `/settings/about`. */} - - - - {t("nav.about")} - - + {/* v1.4.36 W4e — About moved into the Admin Console + (`/admin/about`). Admins reach it through the Admin sidebar + and the mobile section strip; non-admin users see the + public `/about` landing instead. */} {themeIcon} diff --git a/src/components/layout/top-bar.tsx b/src/components/layout/top-bar.tsx index 3564e19a3..aa9071014 100644 --- a/src/components/layout/top-bar.tsx +++ b/src/components/layout/top-bar.tsx @@ -3,7 +3,6 @@ import { Bell, ChevronDown, - Info, LogIn, LogOut, Monitor, @@ -95,15 +94,10 @@ export function TopBar() { {t("nav.notifications")} - {/* v1.4.33 IW7 — "About" folded out of Settings into the - user-card dropdown; mobile dropdown mirrors the - desktop sidebar so the entry shows up here too. */} - - - - {t("nav.about")} - - + {/* v1.4.36 W4e — About moved into the Admin Console + (`/admin/about`). The dropdown entry was redundant + for the small audience that still reaches it (admins + only, on the order of once or twice a year). */} {themeIcon}