feat(ui): About dialog, Release Notes, and new-version banner

About (in the account menu) shows frontend/backend/database versions + build.
Release Notes renders per-version highlights with a commit-SHA reference; a
dismissible banner appears once after the running build's version changes and
links into the notes. Adds a reusable Modal shell and the release-notes data
(detailed v0.1.0).
This commit is contained in:
npeter83 2026-06-15 00:06:57 +02:00
parent a93ab30fb2
commit 82f0936ca7
9 changed files with 347 additions and 1 deletions

View file

@ -1,5 +1,5 @@
import { useRef, useState } from "react";
import { BarChart3, Home, LogOut, Search, Settings, Shield, Tv } from "lucide-react";
import { BarChart3, Home, Info, LogOut, Search, Settings, Shield, Tv } from "lucide-react";
import type { FeedFilters, Me } from "../lib/api";
import type { Page } from "../lib/urlState";
import SyncStatus from "./SyncStatus";
@ -13,6 +13,7 @@ export default function Header({
page,
setPage,
onOpenSettings,
onOpenAbout,
onGoToFullHistory,
}: {
me: Me;
@ -21,6 +22,7 @@ export default function Header({
page: Page;
setPage: (p: Page) => void;
onOpenSettings: () => void;
onOpenAbout: () => void;
onGoToFullHistory: () => void;
}) {
async function logout() {
@ -65,6 +67,7 @@ export default function Header({
page={page}
setPage={setPage}
onOpenSettings={onOpenSettings}
onOpenAbout={onOpenAbout}
/>
</div>
</div>
@ -88,12 +91,14 @@ function AccountMenu({
page,
setPage,
onOpenSettings,
onOpenAbout,
}: {
me: Me;
logout: () => void;
page: Page;
setPage: (p: Page) => void;
onOpenSettings: () => void;
onOpenAbout: () => void;
}) {
const [open, setOpen] = useState(false);
const closeTimer = useRef<ReturnType<typeof setTimeout> | null>(null);
@ -161,6 +166,10 @@ function AccountMenu({
<Settings className="w-4 h-4" />
Settings
</button>
<button onClick={() => { onOpenAbout(); setOpen(false); }} className={itemClass}>
<Info className="w-4 h-4" />
About
</button>
<button onClick={logout} className={itemClass}>
<LogOut className="w-4 h-4" />
Sign out