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}