fix: recursive data nesting guard + VM destroy in uninstall wizard
- Cleaned 242MB of recursive data/data/data/ nesting - Added nesting-guard.js: auto-detects and removes recursive duplicates at startup - Wired VM sandbox cleanup into uninstall wizard (calls vmDestroy before regular uninstall) - Container stats, health data, and VM disk all cleaned on uninstall
This commit is contained in:
@@ -56,6 +56,12 @@ const state = {
|
||||
tailscaleIP: '',
|
||||
detected: false
|
||||
},
|
||||
// Auto-updater state
|
||||
update: {
|
||||
available: false,
|
||||
downloaded: false,
|
||||
version: null
|
||||
},
|
||||
installation: {
|
||||
status: 'pending', // pending, running, complete, error
|
||||
progress: 0,
|
||||
@@ -229,6 +235,20 @@ function setupEventListeners() {
|
||||
state.installation.error = data.error || 'VM provisioning failed';
|
||||
render();
|
||||
});
|
||||
|
||||
// Auto-updater listeners
|
||||
window.electronAPI.onUpdateAvailable((data) => {
|
||||
state.update.available = true;
|
||||
state.update.downloaded = false;
|
||||
state.update.version = (data && data.version) ? data.version : null;
|
||||
render();
|
||||
});
|
||||
|
||||
window.electronAPI.onUpdateDownloaded((data) => {
|
||||
state.update.downloaded = true;
|
||||
state.update.version = (data && data.version) ? data.version : state.update.version;
|
||||
render();
|
||||
});
|
||||
}
|
||||
|
||||
// Navigation
|
||||
@@ -1313,6 +1333,26 @@ async function startUninstallation() {
|
||||
render();
|
||||
|
||||
try {
|
||||
// Destroy VM sandbox first (if it exists)
|
||||
if (window.electronAPI.vmDestroy && state.uninstall.config?.vmInfo) {
|
||||
state.uninstall.currentTask = 'Destroying virtual disk sandbox...';
|
||||
render();
|
||||
try {
|
||||
const vmResult = await window.electronAPI.vmDestroy({
|
||||
installPath: state.uninstall.installPath,
|
||||
vmInfo: state.uninstall.config.vmInfo,
|
||||
exportDataPath: state.uninstall.preserveSettings ? null : null
|
||||
});
|
||||
if (vmResult.success) {
|
||||
state.uninstall.completedTasks.push({ step: 'VM sandbox removed', detail: vmResult.message || 'Virtual disk deleted' });
|
||||
render();
|
||||
}
|
||||
} catch (vmErr) {
|
||||
console.warn('VM destroy failed (non-fatal):', vmErr.message);
|
||||
// Continue with regular uninstall even if VM destroy fails
|
||||
}
|
||||
}
|
||||
|
||||
await window.electronAPI.runUninstallation({
|
||||
installPath: state.uninstall.installPath,
|
||||
preserveSettings: state.uninstall.preserveSettings,
|
||||
|
||||
Reference in New Issue
Block a user