diff --git a/webui/react-ui/index.html b/webui/react-ui/index.html
index 0c589ec..4c1fc6c 100644
--- a/webui/react-ui/index.html
+++ b/webui/react-ui/index.html
@@ -4,7 +4,7 @@
-
Vite + React
+ LocalAGI
diff --git a/webui/react-ui/src/pages/ActionsPlayground.jsx b/webui/react-ui/src/pages/ActionsPlayground.jsx
index 5f8dc81..355338e 100644
--- a/webui/react-ui/src/pages/ActionsPlayground.jsx
+++ b/webui/react-ui/src/pages/ActionsPlayground.jsx
@@ -1,9 +1,10 @@
import { useState, useEffect } from 'react';
-import { useOutletContext } from 'react-router-dom';
+import { useOutletContext, useNavigate } from 'react-router-dom';
import { actionApi } from '../utils/api';
function ActionsPlayground() {
const { showToast } = useOutletContext();
+ const navigate = useNavigate();
const [actions, setActions] = useState([]);
const [selectedAction, setSelectedAction] = useState('');
const [configJson, setConfigJson] = useState('{}');
@@ -12,6 +13,14 @@ function ActionsPlayground() {
const [loading, setLoading] = useState(false);
const [loadingActions, setLoadingActions] = useState(true);
+ // Update document title
+ useEffect(() => {
+ document.title = 'Actions Playground - LocalAgent';
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, []);
+
// Fetch available actions
useEffect(() => {
const fetchActions = async () => {
diff --git a/webui/react-ui/src/pages/AgentSettings.jsx b/webui/react-ui/src/pages/AgentSettings.jsx
index 59f2d17..a0d8a53 100644
--- a/webui/react-ui/src/pages/AgentSettings.jsx
+++ b/webui/react-ui/src/pages/AgentSettings.jsx
@@ -10,7 +10,17 @@ function AgentSettings() {
const navigate = useNavigate();
const [metadata, setMetadata] = useState(null);
const [formData, setFormData] = useState({});
-
+
+ // Update document title
+ useEffect(() => {
+ if (name) {
+ document.title = `Agent Settings: ${name} - LocalAgent`;
+ }
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, [name]);
+
// Use our custom agent hook
const {
agent,
diff --git a/webui/react-ui/src/pages/AgentStatus.jsx b/webui/react-ui/src/pages/AgentStatus.jsx
index 8cf635b..8f7e81b 100644
--- a/webui/react-ui/src/pages/AgentStatus.jsx
+++ b/webui/react-ui/src/pages/AgentStatus.jsx
@@ -1,14 +1,25 @@
import { useState, useEffect } from 'react';
-import { useParams, Link } from 'react-router-dom';
+import { useParams, Link, useNavigate } from 'react-router-dom';
function AgentStatus() {
const { name } = useParams();
+ const navigate = useNavigate();
const [statusData, setStatusData] = useState(null);
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
const [eventSource, setEventSource] = useState(null);
const [liveUpdates, setLiveUpdates] = useState([]);
+ // Update document title
+ useEffect(() => {
+ if (name) {
+ document.title = `Agent Status: ${name} - LocalAgent`;
+ }
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, [name]);
+
// Fetch initial status data
useEffect(() => {
const fetchStatusData = async () => {
diff --git a/webui/react-ui/src/pages/AgentsList.jsx b/webui/react-ui/src/pages/AgentsList.jsx
index 6472c71..338abd5 100644
--- a/webui/react-ui/src/pages/AgentsList.jsx
+++ b/webui/react-ui/src/pages/AgentsList.jsx
@@ -95,6 +95,13 @@ function AgentsList() {
}
};
+ useEffect(() => {
+ document.title = 'Agents - LocalAgent';
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, []);
+
// Load agents on mount
useEffect(() => {
fetchAgents();
diff --git a/webui/react-ui/src/pages/Chat.jsx b/webui/react-ui/src/pages/Chat.jsx
index bf88639..e6835b0 100644
--- a/webui/react-ui/src/pages/Chat.jsx
+++ b/webui/react-ui/src/pages/Chat.jsx
@@ -1,10 +1,11 @@
import { useState, useRef, useEffect } from 'react';
-import { useParams, useOutletContext } from 'react-router-dom';
+import { useParams, useOutletContext, useNavigate } from 'react-router-dom';
import { useChat } from '../hooks/useChat';
function Chat() {
const { name } = useParams();
const { showToast } = useOutletContext();
+ const navigate = useNavigate();
const [message, setMessage] = useState('');
const messagesEndRef = useRef(null);
@@ -19,6 +20,16 @@ function Chat() {
clearError
} = useChat(name);
+ // Update document title
+ useEffect(() => {
+ if (name) {
+ document.title = `Chat with ${name} - LocalAgent`;
+ }
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, [name]);
+
// Scroll to bottom when messages change
useEffect(() => {
messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' });
diff --git a/webui/react-ui/src/pages/CreateAgent.jsx b/webui/react-ui/src/pages/CreateAgent.jsx
index a511ac7..8653b6c 100644
--- a/webui/react-ui/src/pages/CreateAgent.jsx
+++ b/webui/react-ui/src/pages/CreateAgent.jsx
@@ -8,35 +8,14 @@ function CreateAgent() {
const { showToast } = useOutletContext();
const [loading, setLoading] = useState(false);
const [metadata, setMetadata] = useState(null);
- const [formData, setFormData] = useState({
- name: '',
- description: '',
- identity_guidance: '',
- random_identity: false,
- hud: false,
- model: '',
- multimodal_model: '',
- api_url: '',
- api_key: '',
- local_rag_url: '',
- local_rag_api_key: '',
- enable_reasoning: false,
- enable_kb: false,
- kb_results: 3,
- long_term_memory: false,
- summary_long_term_memory: false,
- connectors: [],
- actions: [],
- mcp_servers: [],
- system_prompt: '',
- user_prompt: '',
- goals: '',
- standalone_job: false,
- standalone_job_interval: 60,
- avatar: '',
- avatar_seed: '',
- avatar_style: 'default',
- });
+ const [formData, setFormData] = useState({});
+
+ useEffect(() => {
+ document.title = 'Create Agent - LocalAgent';
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, []);
// Fetch metadata on component mount
useEffect(() => {
diff --git a/webui/react-ui/src/pages/GroupCreate.jsx b/webui/react-ui/src/pages/GroupCreate.jsx
index 0d3ad54..85383b7 100644
--- a/webui/react-ui/src/pages/GroupCreate.jsx
+++ b/webui/react-ui/src/pages/GroupCreate.jsx
@@ -21,6 +21,14 @@ function GroupCreate() {
profiles: []
});
+ // Update document title
+ useEffect(() => {
+ document.title = 'Create Agent Group - LocalAgent';
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, []);
+
// Fetch metadata on component mount
useEffect(() => {
const fetchMetadata = async () => {
diff --git a/webui/react-ui/src/pages/Home.jsx b/webui/react-ui/src/pages/Home.jsx
index 3eaf87a..22b4d56 100644
--- a/webui/react-ui/src/pages/Home.jsx
+++ b/webui/react-ui/src/pages/Home.jsx
@@ -1,5 +1,5 @@
import { useState, useEffect } from 'react';
-import { Link } from 'react-router-dom';
+import { Link, useLocation } from 'react-router-dom';
import { agentApi } from '../utils/api';
function Home() {
@@ -12,6 +12,15 @@ function Home() {
});
const [loading, setLoading] = useState(true);
const [error, setError] = useState(null);
+ const location = useLocation();
+
+ // Update document title
+ useEffect(() => {
+ document.title = 'Agent Dashboard - LocalAgent';
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, []);
// Fetch dashboard data
useEffect(() => {
diff --git a/webui/react-ui/src/pages/ImportAgent.jsx b/webui/react-ui/src/pages/ImportAgent.jsx
index a117918..2918786 100644
--- a/webui/react-ui/src/pages/ImportAgent.jsx
+++ b/webui/react-ui/src/pages/ImportAgent.jsx
@@ -1,4 +1,4 @@
-import { useState } from 'react';
+import { useState, useEffect } from 'react';
import { useNavigate, useOutletContext } from 'react-router-dom';
import { agentApi } from '../utils/api';
@@ -8,6 +8,14 @@ function ImportAgent() {
const [file, setFile] = useState(null);
const [loading, setLoading] = useState(false);
+ // Update document title
+ useEffect(() => {
+ document.title = 'Import Agent - LocalAgent';
+ return () => {
+ document.title = 'LocalAgent'; // Reset title when component unmounts
+ };
+ }, []);
+
const handleFileChange = (e) => {
const selectedFile = e.target.files[0];
if (selectedFile) {