This commit is contained in:
onysd 2026-08-26 02:53:47 +03:00
parent 1c9a192a96
commit f3c4e3c60b
12 changed files with 95 additions and 16 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -23,8 +23,8 @@
})();
</script>
<script type="module" crossorigin src="/assets/index-qfdwgPZE.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-Dc3900m_.css">
<script type="module" crossorigin src="/assets/index-CgFYD-Jw.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-hA2EpjuH.css">
</head>
<body>
<div id="root"></div>

View file

@ -42,7 +42,7 @@ export function App() {
return (
<PermissionsProvider permissions={session.permissions ?? []} hideThirdPartyVerification={session.hide_third_party_verification ?? true}>
<Shell actor={session.actor} route={route} navigate={navigate} onLogout={() => setSession(null)}>
<Shell actor={session.actor} build={session.build} route={route} navigate={navigate} onLogout={() => setSession(null)}>
<Routes route={route} navigate={navigate} />
</Shell>
</PermissionsProvider>

View file

@ -41,12 +41,14 @@ export function BootScreen() {
export function Shell({
actor,
build,
route,
navigate,
onLogout,
children
}: {
actor: string;
build?: { commit: string; short_commit: string; dirty: boolean; build_time: string };
route: RouteState;
navigate: Navigate;
onLogout: () => void;
@ -143,6 +145,11 @@ export function Shell({
</nav>
<div className="sidebar-status">
<span className="sidebar-label">{"Version: O7"}</span>
{build?.short_commit && (
<span className="sidebar-label sidebar-build" title={build.commit + (build.dirty ? " (uncommitted changes)" : "")}>
{`Build: ${build.short_commit}${build.dirty ? "+" : ""}`}
</span>
)}
</div>
</aside>
<div className="workspace">

View file

@ -263,6 +263,13 @@ a {
letter-spacing: 0.04em;
}
.sidebar-build {
font-weight: 500;
text-transform: none;
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
opacity: 0.7;
}
.nav-list {
display: grid;
gap: 4px;

View file

@ -584,6 +584,14 @@ export type AdminSession = {
// comment. Used by Server Settings' Restart/Update flow to detect a
// genuinely new admin process after asking it to bounce.
boot_id?: string;
// This admin binary's own build -- shown under "Version" in the sidebar
// footer so an operator can tell which build is actually running.
build?: {
commit: string;
short_commit: string;
dirty: boolean;
build_time: string;
};
};
export type AdminLoginResult = AdminSession & {