Danger Zone
diff --git a/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx b/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx
new file mode 100644
index 00000000..afb8ce2e
--- /dev/null
+++ b/packages/web/src/components/modals/settingsPanels/DesktopPanel.tsx
@@ -0,0 +1,127 @@
+import { useState, useEffect } from 'react';
+import { Toggle } from '../../ui/Toggle';
+
+function AutoLaunchSettings() {
+ const [openAtLogin, setOpenAtLogin] = useState(false);
+ const [startMinimized, setStartMinimized] = useState(true);
+ const [loading, setLoading] = useState(true);
+
+ useEffect(() => {
+ window.backspace?.getAutoLaunchSettings().then((settings) => {
+ setOpenAtLogin(settings.openAtLogin);
+ setStartMinimized(settings.startMinimized);
+ setLoading(false);
+ }).catch(() => setLoading(false));
+ }, []);
+
+ const handleOpenAtLoginChange = async (enabled: boolean) => {
+ setOpenAtLogin(enabled);
+ try {
+ const result = await window.backspace!.setAutoLaunchSettings({ openAtLogin: enabled });
+ setOpenAtLogin(result.openAtLogin);
+ setStartMinimized(result.startMinimized);
+ } catch {
+ setOpenAtLogin(!enabled);
+ }
+ };
+
+ const handleStartMinimizedChange = async (enabled: boolean) => {
+ setStartMinimized(enabled);
+ try {
+ const result = await window.backspace!.setAutoLaunchSettings({ startMinimized: enabled });
+ setOpenAtLogin(result.openAtLogin);
+ setStartMinimized(result.startMinimized);
+ } catch {
+ setStartMinimized(!enabled);
+ }
+ };
+
+ if (loading) return null;
+
+ return (
+ <>
+
+
+
Start at boot
+
+ Automatically launch Backspace when you log in
+
+
+
+
+
+
+
Start minimized
+
+ Start hidden in the system tray instead of showing the window
+
+
+
+
+ >
+ );
+}
+
+function UpdateSettings() {
+ const [version, setVersion] = useState
(null);
+ const [checking, setChecking] = useState(false);
+
+ useEffect(() => {
+ window.backspace?.getVersion().then(setVersion).catch(() => {});
+ }, []);
+
+ const handleCheck = () => {
+ setChecking(true);
+ window.backspace?.checkForUpdates();
+ // Reset after a few seconds — electron-updater doesn't have a "no update" callback
+ setTimeout(() => setChecking(false), 5000);
+ };
+
+ return (
+
+
+
+ {version ? `Version ${version}` : 'Backspace Desktop'}
+
+
+ Check for new versions of the desktop app
+
+
+
+
+ );
+}
+
+export function DesktopPanel() {
+ return (
+
+
Desktop
+
+
+
+
+
+
+
+
+
+
{window.location.origin}
+
Currently connected instance
+
+
+
+
+
+ );
+}