agent v0.3.15: mode proxy auto/manuel, correction auto-update et conservation systray, animation UI update
This commit is contained in:
+39
-4
@@ -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', {
|
||||
|
||||
Reference in New Issue
Block a user