Improve default browser handling and protocol support

Adds explicit AppUserModelID for Windows, robust single-instance and protocol URL handling, and protocol registration for http/https in package.json. Enhances default browser logic to handle OS-specific requirements, provides user feedback in the setup UI, and allows opening system settings for default browser selection. Updates preload and renderer logic to support these changes.
This commit is contained in:
2026-01-21 21:11:59 +13:00
parent 97150ce2c4
commit 28d2daf06d
4 changed files with 175 additions and 22 deletions
+33 -12
View File
@@ -294,26 +294,47 @@ async function setDefaultBrowser() {
const result = await window.api.setAsDefaultBrowser();
if (result.success) {
setupState.defaultBrowserSet = true;
const isDefault = await window.api.isDefaultBrowser();
if (isDefault) {
setupState.defaultBrowserSet = true;
if (statusEl) {
statusEl.classList.remove('not-default');
statusEl.classList.add('is-default');
statusEl.innerHTML = `
<div class="status-icon">✓</div>
<p class="status-text">Nebula is now your default browser!</p>
`;
}
if (btn) {
btn.innerHTML = '<span class="btn-icon">✓</span> Set Successfully';
}
// Auto-advance after a brief delay
setTimeout(() => goToStep(4), 1500);
return;
}
if (statusEl) {
statusEl.classList.remove('not-default');
statusEl.classList.add('is-default');
statusEl.innerHTML = `
<div class="status-icon"></div>
<p class="status-text">Nebula is now your default browser!</p>
<div class="status-icon"></div>
<p class="status-text">System settings opened. Choose Nebula as your default browser to finish.</p>
`;
}
if (btn) {
btn.innerHTML = '<span class="btn-icon">✓</span> Set Successfully';
btn.disabled = false;
btn.innerHTML = '<span class="btn-icon">↻</span> Check Again';
}
// Auto-advance after a brief delay
setTimeout(() => goToStep(4), 1500);
} else {
throw new Error(result.error || 'Failed to set default browser');
if (result.needsUserAction && window.api.openDefaultBrowserSettings) {
try { await window.api.openDefaultBrowserSettings(); } catch {}
}
return;
}
throw new Error(result.error || 'Failed to set default browser');
} catch (error) {
console.error('[Setup] Error setting default browser:', error);