+ {/* Left Panel: Session List */}
+
+ {/* Admin header */}
+
+
+
+ {/* Session List */}
+
+ {loadingSessions && sessions.length === 0 ? (
+
+ {t('bots.sessionMonitor.loading')}
+
+ ) : sessions.length === 0 ? (
+
+ {t('bots.sessionMonitor.noSessions')}
+
+ ) : (
+
+ {sessions.map((session) => {
+ const isSelected = selectedSessionId === session.session_id;
+ const sessionType = parseSessionType(session.session_id);
+ const sessionIsAdmin = isSessionAdmin(session);
+ return (
+
setSelectedSessionId(session.session_id)}
+ >
+
+
+ {session.user_name ||
+ session.user_id ||
+ session.session_id.slice(0, 12)}
+
+
+ {formatRelativeTime(session.last_activity)}
+
+
+
+ {sessionType && (
+
+ {sessionType}
+
+ )}
+
+ {session.user_id && (
+
+ {abbreviateId(session.user_id)}
+
+ )}
+ {session.is_active && (
+
+
+
+ )}
+
+
+ );
+ })}
+
+ )}
+
+
+
+ {/* Right Panel: Messages */}
+
+ {!selectedSessionId ? (
+
+ {t('bots.sessionMonitor.selectSession')}
) : (
-
- {sessions.map((session) => {
- const isSelected = selectedSessionId === session.session_id;
- return (
-
-
+
+
+ >
);
});
diff --git a/web/src/i18n/locales/en-US.ts b/web/src/i18n/locales/en-US.ts
index bfc351f3e..44ad3769b 100644
--- a/web/src/i18n/locales/en-US.ts
+++ b/web/src/i18n/locales/en-US.ts
@@ -459,6 +459,10 @@ const enUS = {
deleteSuccess: 'Admin removed',
deleteError: 'Failed to remove admin: ',
noAdmins: 'No admins configured',
+ setAdminTitle: 'Set as admin',
+ adminBadge: 'Admin',
+ configureAdmins: 'Manage Admins',
+ removeAdminTitle: 'Remove admin',
},
},
plugins: {
diff --git a/web/src/i18n/locales/zh-Hans.ts b/web/src/i18n/locales/zh-Hans.ts
index dd32f0dae..9a825ad32 100644
--- a/web/src/i18n/locales/zh-Hans.ts
+++ b/web/src/i18n/locales/zh-Hans.ts
@@ -440,6 +440,10 @@ const zhHans = {
deleteSuccess: '已移除',
deleteError: '移除失败:',
noAdmins: '暂无管理员',
+ setAdminTitle: '设为管理员',
+ adminBadge: '管理员',
+ configureAdmins: '配置管理员',
+ removeAdminTitle: '移除管理员权限',
},
},
plugins: {