diff --git a/packages/app/src/components/add-host-method-modal.tsx b/packages/app/src/components/add-host-method-modal.tsx index 834aa27f0..1d9984d70 100644 --- a/packages/app/src/components/add-host-method-modal.tsx +++ b/packages/app/src/components/add-host-method-modal.tsx @@ -65,7 +65,7 @@ export function AddHostMethodModal({ Direct connection - Local network or Tailscale (unencrypted). + Local network or VPN. @@ -74,7 +74,7 @@ export function AddHostMethodModal({ Scan QR code - Relay pairing (E2EE). + Encrypted relay connection. ) : null} @@ -83,7 +83,7 @@ export function AddHostMethodModal({ Paste pairing link - Relay pairing (E2EE). + Encrypted relay connection. diff --git a/packages/app/src/components/add-host-modal.tsx b/packages/app/src/components/add-host-modal.tsx index 17aaad552..7fd530015 100644 --- a/packages/app/src/components/add-host-modal.tsx +++ b/packages/app/src/components/add-host-modal.tsx @@ -103,13 +103,13 @@ function buildConnectionFailureCopy(endpoint: string, error: unknown): { title: rawLower.includes("connection refused") || rawLower.includes("err_connection_refused") ) { - detail = "Connection was refused. Is the daemon running on that host and port?"; + detail = "Connection refused. Is the server running at this address?"; } else if (rawLower.includes("enotfound") || rawLower.includes("not found")) { detail = "Host not found. Check the hostname and try again."; } else if (rawLower.includes("ehostunreach") || rawLower.includes("host is unreachable")) { detail = "Host is unreachable. Check your network and firewall."; } else if (rawLower.includes("certificate") || rawLower.includes("tls") || rawLower.includes("ssl")) { - detail = "TLS/certificate error. This app expects a daemon reachable over the local network or via relay."; + detail = "TLS error. Direct connections use an unencrypted local connection. Use relay for remote access."; } else if (raw) { detail = "Unable to connect. Check the host/port and that the daemon is reachable."; } else { @@ -221,7 +221,7 @@ export function AddHostModal({ visible, onClose, onCancel, onSaved, targetServer return ( - Connect to a daemon by entering host:port. + Enter the address of a Paseo server. Host @@ -229,7 +229,7 @@ export function AddHostModal({ visible, onClose, onCancel, onSaved, targetServer ref={hostInputRef} value={endpointRaw} onChangeText={setEndpointRaw} - placeholder="host:6767" + placeholder="hostname:port" placeholderTextColor={theme.colors.foregroundMuted} style={styles.input} autoCapitalize="none" diff --git a/packages/app/src/components/pair-link-modal.tsx b/packages/app/src/components/pair-link-modal.tsx index a0b1c22c8..c49c35dea 100644 --- a/packages/app/src/components/pair-link-modal.tsx +++ b/packages/app/src/components/pair-link-modal.tsx @@ -149,7 +149,7 @@ export function PairLinkModal({ visible, onClose, onCancel, onSaved, targetServe return ( - Paste the daemon’s pairing link. + Paste the pairing link from your server. Pairing link diff --git a/packages/app/src/desktop/components/desktop-updates-section.tsx b/packages/app/src/desktop/components/desktop-updates-section.tsx index 77c0e030b..68d5a43d9 100644 --- a/packages/app/src/desktop/components/desktop-updates-section.tsx +++ b/packages/app/src/desktop/components/desktop-updates-section.tsx @@ -88,9 +88,9 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { statusError ?? (managedStatus?.daemonRunning ? managedStatus.transportType === "tcp" - ? `Managed daemon running on explicit TCP ${managedStatus.transportPath}.` - : `Managed daemon running on private ${managedStatus.transportType}.` - : "Managed daemon is currently stopped."); + ? `Running on ${managedStatus.transportPath}.` + : "Running." + : "Not running."); const handleUpdateLocalDaemon = useCallback(() => { if (!showSection) { @@ -101,10 +101,10 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { } void confirmDialog({ - title: "Restart managed daemon", + title: "Restart daemon", message: - "This restarts the desktop-managed daemon using its private managed home and socket.", - confirmLabel: "Restart daemon", + "This will restart the built-in daemon. The app will reconnect automatically.", + confirmLabel: "Restart", cancelLabel: "Cancel", }) .then((confirmed) => { @@ -118,13 +118,13 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { void restartManagedDaemon() .then((status) => { setManagedStatus(status); - setStatusMessage("Managed daemon restarted."); + setStatusMessage("Daemon restarted."); return loadManagedStatus(); }) .catch((error) => { console.error("[Settings] Failed to restart managed daemon", error); const message = error instanceof Error ? error.message : String(error); - setStatusMessage(`Managed daemon restart failed: ${message}`); + setStatusMessage(`Restart failed: ${message}`); }) .finally(() => { setIsRestartingDaemon(false); @@ -132,7 +132,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { }) .catch((error) => { console.error("[Settings] Failed to open managed daemon restart confirmation", error); - Alert.alert("Error", "Unable to open the managed daemon restart confirmation dialog."); + Alert.alert("Error", "Unable to open the restart confirmation dialog."); }); }, [isRestartingDaemon, loadManagedStatus, showSection]); @@ -162,7 +162,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { }) .catch((error) => { const message = error instanceof Error ? error.message : String(error); - setCliStatusMessage(`CLI shim action failed: ${message}`); + setCliStatusMessage(`CLI install failed: ${message}`); }) .finally(() => { setIsInstallingCli(false); @@ -191,10 +191,10 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { void Clipboard.setStringAsync(logPath) .then(() => { - Alert.alert("Copied", "Managed daemon log path copied."); + Alert.alert("Copied", "Log path copied."); }) .catch((error) => { - console.error("[Settings] Failed to copy managed daemon log path", error); + console.error("[Settings] Failed to copy log path", error); Alert.alert("Error", "Unable to copy log path."); }); }, [managedLogs?.logPath, managedStatus?.logPath]); @@ -219,7 +219,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { .then((pairing) => { setPairingOffer(pairing); if (!pairing.relayEnabled || !pairing.url) { - setPairingStatusMessage("Relay pairing is disabled for this managed daemon."); + setPairingStatusMessage("Relay pairing is not available."); } }) .catch((error) => { @@ -269,12 +269,12 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { }) .then((status) => { setManagedStatus(status); - setStatusMessage("Managed TCP exposure disabled."); + setStatusMessage("Network access disabled."); return loadManagedStatus(); }) .catch((error) => { const message = error instanceof Error ? error.message : String(error); - setStatusMessage(`Managed TCP update failed: ${message}`); + setStatusMessage(`Failed to update: ${message}`); }) .finally(() => { setIsSavingTcpSettings(false); @@ -296,15 +296,15 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { return; } if (port === 6767) { - Alert.alert("Port unavailable", "Managed TCP mode must not claim 127.0.0.1:6767."); + Alert.alert("Port unavailable", "Port 6767 is reserved. Choose a different port."); return; } void confirmDialog({ - title: "Enable managed TCP", + title: "Enable network access", message: - "This exposes the managed daemon on a TCP listener. Relay remains available, but network exposure is no longer private to the desktop app.", - confirmLabel: "Enable TCP", + "This makes the daemon reachable on your local network. Relay connections will continue to work.", + confirmLabel: "Enable", cancelLabel: "Cancel", }) .then((confirmed) => { @@ -317,20 +317,20 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { .then((status) => { setManagedStatus(status); setIsTcpModalOpen(false); - setStatusMessage(`Managed TCP exposure enabled on ${host}:${port}.`); + setStatusMessage(`Network access enabled on ${host}:${port}.`); return loadManagedStatus(); }) .catch((error) => { const message = error instanceof Error ? error.message : String(error); - setStatusMessage(`Managed TCP update failed: ${message}`); + setStatusMessage(`Failed to update: ${message}`); }) .finally(() => { setIsSavingTcpSettings(false); }); }) .catch((error) => { - console.error("[Settings] Failed to open managed TCP confirmation", error); - Alert.alert("Error", "Unable to open the managed TCP confirmation dialog."); + console.error("[Settings] Failed to open TCP confirmation", error); + Alert.alert("Error", "Unable to open the confirmation dialog."); }); }, [isSavingTcpSettings, loadManagedStatus, tcpHostInput, tcpPortInput]); @@ -340,7 +340,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { return ( - Managed daemon + Built-in daemon @@ -353,7 +353,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { Restart daemon - Restarts the desktop-managed daemon without touching `~/.paseo` or `127.0.0.1:6767`. + Restarts the built-in daemon. Your data and external connections are not affected. {statusMessage ? ( {statusMessage} @@ -370,9 +370,9 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { - CLI shim + Command line (CLI) - Installs a global `paseo` launcher that forwards into the desktop-managed runtime. + Adds the `paseo` command to your terminal. {cliStatusMessage ? {cliStatusMessage} : null} @@ -395,7 +395,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { {managedLogs?.logPath ?? managedStatus?.logPath ?? - "Managed daemon log path unavailable."} + "Log path unavailable."} @@ -418,7 +418,7 @@ export function LocalDaemonSection({ appVersion }: LocalDaemonSectionProps) { Pair device - Show the managed daemon QR code and a copyable pairing link for the mobile app. + Connect your phone to this computer.