agent v0.3.15: mode proxy auto/manuel, correction auto-update et conservation systray, animation UI update

This commit is contained in:
EduBox Dev
2026-06-28 19:53:19 +00:00
parent 33d89c66c0
commit adab165274
13 changed files with 444 additions and 55 deletions
+39 -4
View File
@@ -454,6 +454,25 @@
border-color: rgba(0,0,0,0.1);
border-top-color: var(--text-secondary);
}
.spin {
display: inline-block;
animation: spin 1s linear infinite;
}
.progress-bar {
background: rgba(0,0,0,0.1);
border-radius: 4px;
height: 6px;
margin-top: 0.5rem;
overflow: hidden;
}
.progress-bar > div {
background: var(--info);
height: 100%;
transition: width 0.3s ease;
}
</style>
</head>
<body>
@@ -565,6 +584,16 @@
<label for="cfg-data-dir">Répertoire de données</label>
<input type="text" id="cfg-data-dir" readonly>
<label for="cfg-proxy-mode">Mode proxy</label>
<select id="cfg-proxy-mode">
<option value="disabled">Désactivé</option>
<option value="auto">Automatique (recommandé)</option>
<option value="enabled">Activé</option>
</select>
<label for="cfg-proxy-url">URL du proxy</label>
<input type="text" id="cfg-proxy-url" placeholder="http://10.0.0.5:3128">
<button type="submit">Enregistrer et redémarrer</button>
</form>
<div id="settings-status" class="status"></div>
@@ -904,6 +933,8 @@
document.getElementById('cfg-headscale-url').value = cfg.headscale_url || '';
document.getElementById('cfg-headscale-key').value = cfg.headscale_auth_key || '';
document.getElementById('cfg-data-dir').value = cfg.data_dir || '';
document.getElementById('cfg-proxy-mode').value = cfg.proxy_mode || 'disabled';
document.getElementById('cfg-proxy-url').value = cfg.proxy_url || '';
document.getElementById('detail-version').textContent = cfg.version || 'dev';
document.getElementById('detail-nodeid').textContent = cfg.node_id || '-';
document.getElementById('detail-server').textContent = cfg.server || '-';
@@ -926,12 +957,14 @@
function showUpdateProgress(percent, message) {
const banner = document.getElementById('update-banner');
const pct = parseInt(percent || '0', 10);
banner.innerHTML = `
<div class="service-item" style="background: var(--info-bg); border-radius: 8px; padding: 0.75rem; margin-bottom: 0.75rem;">
<div class="service-icon" style="background: var(--info);">⬇️</div>
<div>
<div class="service-icon" style="background: var(--info);"><span class="spin">↻</span></div>
<div style="flex: 1;">
<div class="service-text">Mise à jour en cours</div>
<div class="service-detail">${escapeHtml(message || '')} (${percent || 0}%)</div>
<div class="service-detail">${escapeHtml(message || '')}</div>
<div class="progress-bar"><div style="width: ${pct}%"></div></div>
</div>
</div>
`;
@@ -958,7 +991,9 @@
node_id: document.getElementById('cfg-node').value.trim(),
headscale_url: document.getElementById('cfg-headscale-url').value.trim(),
headscale_auth_key: document.getElementById('cfg-headscale-key').value.trim(),
data_dir: document.getElementById('cfg-data-dir').value.trim()
data_dir: document.getElementById('cfg-data-dir').value.trim(),
proxy_mode: document.getElementById('cfg-proxy-mode').value,
proxy_url: document.getElementById('cfg-proxy-url').value.trim()
};
try {
const res = await fetch('/api/config', {