diff --git a/backend/src/services/updateScheduler.js b/backend/src/services/updateScheduler.js index 1cbc8d6..e5e4095 100644 --- a/backend/src/services/updateScheduler.js +++ b/backend/src/services/updateScheduler.js @@ -202,11 +202,22 @@ class UpdateScheduler { try { const httpsRepoUrl = `https://api.github.com/repos/${owner}/${repo}/releases/latest`; + // Get current version for User-Agent + let currentVersion = '1.2.5'; // fallback + try { + const packageJson = require('../../package.json'); + if (packageJson && packageJson.version) { + currentVersion = packageJson.version; + } + } catch (packageError) { + console.warn('Could not read version from package.json for User-Agent, using fallback:', packageError.message); + } + const response = await fetch(httpsRepoUrl, { method: 'GET', headers: { 'Accept': 'application/vnd.github.v3+json', - 'User-Agent': 'PatchMon-Server/1.2.4' + 'User-Agent': `PatchMon-Server/${currentVersion}` } }); diff --git a/frontend/src/pages/Settings.jsx b/frontend/src/pages/Settings.jsx index 51a1f0e..f45c44c 100644 --- a/frontend/src/pages/Settings.jsx +++ b/frontend/src/pages/Settings.jsx @@ -47,7 +47,7 @@ const Settings = () => { // Version checking state const [versionInfo, setVersionInfo] = useState({ - currentVersion: '1.2.4', + currentVersion: null, // Will be loaded from API latestVersion: null, isUpdateAvailable: false, checking: false, @@ -153,6 +153,24 @@ const Settings = () => { console.log('Agent versions error:', agentVersionsError); }, [agentVersions, agentVersionsLoading, agentVersionsError]); + // Load current version on component mount + useEffect(() => { + const loadCurrentVersion = async () => { + try { + const response = await versionAPI.getCurrent(); + const data = response.data; + setVersionInfo(prev => ({ + ...prev, + currentVersion: data.version + })); + } catch (error) { + console.error('Error loading current version:', error); + } + }; + + loadCurrentVersion(); + }, []); + const createAgentVersionMutation = useMutation({ mutationFn: (data) => agentVersionAPI.create(data).then(res => res.data), onSuccess: () => {