Implemented version display in SiteHeader of webui

- Updated API version to 1.2.0
- Stored versions in localStorage
This commit is contained in:
yangdx
2025-03-22 01:51:39 +08:00
parent bb699509c9
commit 0df0ba269d
6 changed files with 63 additions and 14 deletions

View File

@@ -132,6 +132,8 @@ export type AuthStatusResponse = {
token_type?: string
auth_mode?: 'enabled' | 'disabled'
message?: string
core_version?: string
api_version?: string
}
export type LoginResponse = {
@@ -139,6 +141,8 @@ export type LoginResponse = {
token_type: string
auth_mode?: 'enabled' | 'disabled' // Authentication mode identifier
message?: string // Optional message
core_version?: string
api_version?: string
}
export const InvalidApiKeyError = 'Invalid API Key'

View File

@@ -43,7 +43,7 @@ const LoginPage = () => {
if (!status.auth_configured && status.access_token) {
// If auth is not configured, use the guest token and redirect
login(status.access_token, true)
login(status.access_token, true, status.core_version, status.api_version)
if (status.message) {
toast.info(status.message)
}
@@ -87,7 +87,7 @@ const LoginPage = () => {
// Check authentication mode
const isGuestMode = response.auth_mode === 'disabled'
login(response.access_token, isGuestMode)
login(response.access_token, isGuestMode, response.core_version, response.api_version)
if (isGuestMode) {
// Show authentication disabled notification

View File

@@ -55,7 +55,11 @@ function TabsNavigation() {
export default function SiteHeader() {
const { t } = useTranslation()
const { isGuestMode } = useAuthStore()
const { isGuestMode, coreVersion, apiVersion } = useAuthStore()
const versionDisplay = (coreVersion && apiVersion)
? `${coreVersion}/${apiVersion}`
: null;
const handleLogout = () => {
navigationService.navigateToLogin();
@@ -67,6 +71,11 @@ export default function SiteHeader() {
<ZapIcon className="size-4 text-emerald-400" aria-hidden="true" />
{/* <img src='/logo.png' className="size-4" /> */}
<span className="font-bold md:inline-block">{SiteInfo.name}</span>
{versionDisplay && (
<span className="ml-2 text-xs text-gray-500 dark:text-gray-400">
v{versionDisplay}
</span>
)}
</a>
<div className="flex h-10 flex-1 justify-center">

View File

@@ -19,7 +19,9 @@ interface BackendState {
interface AuthState {
isAuthenticated: boolean;
isGuestMode: boolean; // Add guest mode flag
login: (token: string, isGuest?: boolean) => void;
coreVersion: string | null;
apiVersion: string | null;
login: (token: string, isGuest?: boolean, coreVersion?: string | null, apiVersion?: string | null) => void;
logout: () => void;
}
@@ -84,15 +86,22 @@ const isGuestToken = (token: string): boolean => {
};
// Initialize auth state from localStorage
const initAuthState = (): { isAuthenticated: boolean; isGuestMode: boolean } => {
const initAuthState = (): { isAuthenticated: boolean; isGuestMode: boolean; coreVersion: string | null; apiVersion: string | null } => {
const token = localStorage.getItem('LIGHTRAG-API-TOKEN');
if (!token) {
return { isAuthenticated: false, isGuestMode: false };
return {
isAuthenticated: false,
isGuestMode: false,
coreVersion: null,
apiVersion: null
};
}
return {
isAuthenticated: true,
isGuestMode: isGuestToken(token)
isGuestMode: isGuestToken(token),
coreVersion: localStorage.getItem('LIGHTRAG-CORE-VERSION'),
apiVersion: localStorage.getItem('LIGHTRAG-API-VERSION')
};
};
@@ -103,20 +112,36 @@ export const useAuthStore = create<AuthState>(set => {
return {
isAuthenticated: initialState.isAuthenticated,
isGuestMode: initialState.isGuestMode,
coreVersion: initialState.coreVersion,
apiVersion: initialState.apiVersion,
login: (token, isGuest = false) => {
login: (token, isGuest = false, coreVersion = null, apiVersion = null) => {
localStorage.setItem('LIGHTRAG-API-TOKEN', token);
// 存储版本信息到 localStorage
if (coreVersion) {
localStorage.setItem('LIGHTRAG-CORE-VERSION', coreVersion);
}
if (apiVersion) {
localStorage.setItem('LIGHTRAG-API-VERSION', apiVersion);
}
set({
isAuthenticated: true,
isGuestMode: isGuest
isGuestMode: isGuest,
coreVersion,
apiVersion
});
},
logout: () => {
localStorage.removeItem('LIGHTRAG-API-TOKEN');
set({
isAuthenticated: false,
isGuestMode: false
isGuestMode: false,
coreVersion: null,
apiVersion: null
});
}
};