Bump to v2.1.0: UPnP, read-only profile lock, sleep/hibernate audio fix
Headline features: * Automatic router port opening (UPnP / NAT-PMP / PCP). Opt-in via Preferences; surfaces external address + carrier-grade NAT detection. * Lock profile (read-only). New File-menu tick that makes a profile load-only — session changes don't persist, no save prompt on close. Unblocks unattended shutdowns (NVDA gone, remote dropped, hibernate) where the existing save prompt could deadlock. * Check for updates on startup (default on) + brief countdown notice before silent updates install, so a launch-time update doesn't make the app silently vanish. * "Cue sounds" -> "Audio cue sounds" label clarification. Bug fixes: * No sound after the computer wakes from sleep. PowerResumeHandler rebuilds the audio backend automatically on resume; brief "Reconnecting to audio driver" splash during the rebuild. * Receiver audio silent after waking from hibernate. RefreshAudioDeviceLists now treats a transient ASIO probe failure (returns -1/-1 because the driver is mid-teardown / mid-reinit) as "retry next tick" instead of clearing the user's tick selection. Diagnostic-only changes (gated on the existing Enable-logs checkbox, zero cost when off): * AudioStepProbe split into cross-buffer vs within-buffer maxes so log inspection can tell a real-content sharp transient apart from a pipeline-boundary glitch. Plumbed through every probe owner. * New rxNetGapMs + gc0/gc1/gc2 delta columns in the diag log to split receive-side jitter into network-layer vs managed-runtime causes. Files touched: RELEASE_NOTES.md + readme.html + 24 source files across RemSound.Core / RemSound.Sender / RemSound.Receiver / RemSound.App. Three new app files: PowerResumeHandler, RouterPortMapper, UpdateInstallNoticeDialog. Wire format and audio pipeline unchanged from v1.5 onward — v1.5 through v2.1 peers interoperate.
This commit is contained in:
+85
-7
@@ -153,6 +153,35 @@ ul, ol { padding-left: 1.4em; }
|
||||
<li><strong>Window position and size</strong> — Windows itself remembers these.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="profile-lock">Locking a profile (read-only)</h3>
|
||||
|
||||
<p>By default, RemSound treats your profile like a document: if you change something while it's running, you'll be asked “save changes?” when you exit. Most of the time that's exactly what you want — you don't lose work by accident.</p>
|
||||
|
||||
<p>But sometimes you want the opposite. You have a profile you live in every day, you toggle send or receive on or off during the day as a matter of course, and you don't want to be asked about saving every single time you close RemSound. You especially don't want to be asked if RemSound might close itself for some other reason (a Windows update, your screen reader crashing, a remote session dropping, a laptop going into hibernate) — because then there's a save prompt sitting on screen that nobody can dismiss, and the app can't actually close.</p>
|
||||
|
||||
<p><strong>Locking the profile</strong> solves this. When ticked:</p>
|
||||
|
||||
<ul>
|
||||
<li>The profile loads normally and everything in the app works the same way it always did.</li>
|
||||
<li>Anything you change during the session — ticking a device, sliding the volume, toggling send or receive, picking a peer — <strong>still works for that session</strong>. RemSound just doesn't write any of it back to the profile file on disk.</li>
|
||||
<li>When you close RemSound, there is <strong>no save prompt</strong>. The app just closes. Whatever you changed during the session is forgotten; the next time you open the profile it's back to what it was when you locked it.</li>
|
||||
<li>The window title shows “(read-only)” so you can always tell at a glance.</li>
|
||||
<li>The startup profile picker also shows “(read-only)” next to locked profiles, so you know what you're picking before you hit Enter.</li>
|
||||
<li>Pressing Save (Ctrl+S) shows a one-time message telling you the profile is locked and suggesting Save as… instead. There's a tick on the message to stop it showing again.</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>How to lock or unlock:</strong> open the File menu (Alt+F) and pick <strong>Lock profile (read-only)</strong> (Alt+F, L). It's a tickable menu item — pick it once to turn the lock on (a tick appears next to it); pick it again to turn the lock off (the tick disappears). The lock state is remembered with the profile, so closing and reopening RemSound keeps the profile locked exactly as you left it.</p>
|
||||
|
||||
<p><strong>If you decide to keep your changes:</strong> two ways:</p>
|
||||
<ul>
|
||||
<li>Unlock the profile first (untick the menu item), then press Save (Ctrl+S). Your changes are saved to the profile.</li>
|
||||
<li>Or use <strong>Save as…</strong> directly. That always works, even on a locked profile, and the new copy starts out unlocked — so you can edit it normally afterwards.</li>
|
||||
</ul>
|
||||
|
||||
<div class="note">
|
||||
<strong>If a save prompt is blocking your shutdown right now:</strong> close it by pressing Esc (or click Cancel if you can see it), unlock by going File → Lock profile (read-only), then close RemSound. From this launch forward there'll be no prompt.
|
||||
</div>
|
||||
|
||||
<h2 id="main-window">4. The main window: menu bar + three tabs</h2>
|
||||
|
||||
<p>The main window has three parts, stacked top to bottom:</p>
|
||||
@@ -185,8 +214,9 @@ ul, ol { padding-left: 1.4em; }
|
||||
<tr><td><strong>Save</strong></td><td>Ctrl+S</td><td>Updates the current profile with your current settings. If there's no current profile (you're on the blank template), this becomes Save as automatically.</td></tr>
|
||||
<tr><td><strong>Save as…</strong></td><td>Alt+F, A</td><td>Asks for a name and saves a copy. Use it to save your current setup under a new name, or to save for the first time from the blank template.</td></tr>
|
||||
<tr><td><strong>Rename current profile…</strong></td><td>Alt+F, M</td><td>Renames the current profile's file and updates the window title. Does nothing on the blank template (there's no profile to rename).</td></tr>
|
||||
<tr><td><strong>Lock profile (read-only)</strong> (tickable)</td><td>Alt+F, L</td><td>When ticked, the current profile is loaded for use but RemSound will not save any of your changes back to it. The window title shows “(read-only)” so you can tell at a glance. Save (Ctrl+S) politely refuses with a hint to use Save as instead, and closing RemSound never asks “save changes?” — it just closes. Anything you've changed during the session is forgotten when RemSound closes; the file on disk is left exactly as it was. The lock setting is saved on the profile itself, so it sticks across launches. See <a href="#profile-lock">Locking a profile</a> for the full story.</td></tr>
|
||||
<tr><td><strong>Minimise to tray</strong></td><td>Alt+F, N</td><td>Hides the window down to the system tray (the small icons near the clock). To bring the window back, click the tray icon or use the “Show or hide window” global hotkey (set in the Keyboard shortcuts dialog, default Ctrl+Shift+F10).</td></tr>
|
||||
<tr><td><strong>Exit</strong></td><td>Alt+F, X (or Alt+F4)</td><td>Closes RemSound. If you have unsaved profile changes, it asks you first.</td></tr>
|
||||
<tr><td><strong>Exit</strong></td><td>Alt+F, X (or Alt+F4)</td><td>Closes RemSound. If you have unsaved profile changes (and the profile isn't locked), it asks you first.</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>Record menu</h3>
|
||||
@@ -209,7 +239,7 @@ ul, ol { padding-left: 1.4em; }
|
||||
<tr><td><strong>Recording settings…</strong></td><td>Alt+O, S</td><td>Opens the Recording settings dialog. Up to five lists: <em>Recording source</em> (Alt+S), <em>File format</em> (Alt+F), <em>Audio format attributes</em> (Alt+A), <em>FLAC compression level</em> (Alt+L — only shown when FLAC is chosen), and <em>Channels</em> (Alt+C). The attributes list changes to match the format you pick. OK saves to the current profile; Cancel discards.</td></tr>
|
||||
<tr><td><strong>Keyboard shortcuts…</strong></td><td>Ctrl+K, or Alt+O, K</td><td>Opens the global hotkey dialog (mute, volume, show/hide window, start/stop recording, remote-control commands).</td></tr>
|
||||
<tr><td><strong>Startup behaviour…</strong></td><td>Alt+O, T</td><td>Opens the Startup behaviour dialog. Choose whether to launch automatically with Windows, which profile to load by default, and whether to start hidden in the tray.</td></tr>
|
||||
<tr><td><strong>Preferences…</strong></td><td>Ctrl+P, or Alt+O, P</td><td>Opens the Preferences dialog. This holds the settings that stay the same on this computer no matter which profile is loaded: the profiles folder, the <strong>Cue sounds (Alt+N)</strong> checklist (one tickable item per cue: connect, disconnect, recording start, recording stop), whether to accept remote volume commands, how often to check for updates, a manual check-for-updates button, whether to install updates quietly, whether to keep logs, and a button to write logs now. Esc or the Close button dismisses it.</td></tr>
|
||||
<tr><td><strong>Preferences…</strong></td><td>Ctrl+P, or Alt+O, P</td><td>Opens the Preferences dialog. This holds the settings that stay the same on this computer no matter which profile is loaded: the profiles folder, the <strong>Audio cue sounds (Alt+N)</strong> checklist (one tickable item per cue: connect, disconnect, recording start, recording stop), whether to accept remote volume commands, whether to check for updates on startup, how often to check for updates after that, a manual check-for-updates button, whether to install updates quietly, whether to ask your router to open the audio port for you (UPnP), whether to keep logs, and a button to write logs now. Esc or the Close button dismisses it.</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>Help menu</h3>
|
||||
@@ -398,7 +428,7 @@ Audient USB Audio ASIO Driver — Pair 3 (channels 5/6): Loop-back 1 (L) / L
|
||||
<p>Even if a peer is sending sound your way, you won't hear it until you've ticked their checkbox. This is deliberate — connecting is a step where you give your consent. A peer's name appears in Discovered the moment they come online, but they can't make any sound on your speakers until you say yes.</p>
|
||||
|
||||
<h3>Connection health</h3>
|
||||
<p>For each connected peer, the status read-out at the bottom of the window shows a small health note: the latest round-trip time in milliseconds, or <strong>pending</strong>, <strong>stale</strong> or <strong>unreachable</strong> if the regular check-in messages have stopped. (Round-trip time is how long sound takes to travel to the other computer and back.) RemSound plays a connect cue (a short sound) when a peer becomes healthy and a disconnect cue when one becomes unreachable. You can silence both cues using <strong>Cue sounds</strong> in the Preferences dialog (Options → Preferences, or Ctrl+P).</p>
|
||||
<p>For each connected peer, the status read-out at the bottom of the window shows a small health note: the latest round-trip time in milliseconds, or <strong>pending</strong>, <strong>stale</strong> or <strong>unreachable</strong> if the regular check-in messages have stopped. (Round-trip time is how long sound takes to travel to the other computer and back.) RemSound plays a connect cue (a short sound) when a peer becomes healthy and a disconnect cue when one becomes unreachable. You can silence both cues using <strong>Audio cue sounds</strong> in the Preferences dialog (Options → Preferences, or Ctrl+P).</p>
|
||||
|
||||
<h2 id="network">11. How the network works (LAN, WAN, Tailscale)</h2>
|
||||
|
||||
@@ -425,9 +455,29 @@ Audient USB Audio ASIO Driver — Pair 3 (channels 5/6): Loop-back 1 (L) / L
|
||||
<p>Connecting two computers directly across the internet needs one of these:</p>
|
||||
<ul>
|
||||
<li>A VPN that puts both computers on the same private network — <strong>Tailscale</strong> is the one we recommend. (A VPN is a service that creates a private network linking your computers wherever they are.) Each computer gets a Tailscale address (it looks like <code>100.something</code>) and they can reach each other directly.</li>
|
||||
<li>Or, port forwarding on each end's router (this is more involved and isn't covered here).</li>
|
||||
<li>Or, let RemSound ask your router to open the audio port for you automatically — see <a href="#upnp">Automatic router port opening (UPnP)</a> below. Off by default; one tick to turn it on.</li>
|
||||
<li>Or, port forwarding on each end's router by hand (this is more involved and isn't covered here).</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="upnp">Automatic router port opening (UPnP)</h3>
|
||||
|
||||
<p>Most home routers support a feature called UPnP (or its newer cousins NAT-PMP and PCP) which lets an app politely ask the router to open a port so the outside world can reach it. RemSound can use this so two computers can find each other across the internet without you having to log into the router and set up port forwarding by hand.</p>
|
||||
|
||||
<p><strong>How to turn it on.</strong> Open <strong>Options → Preferences</strong> (Ctrl+P) and tick <strong>Automatically open my router for incoming connections (UPnP)</strong> (Alt+O). Off by default — we don't want to poke your router without permission. As soon as you tick the box, a status line appears just below it telling you what happened:</p>
|
||||
|
||||
<table>
|
||||
<tr><th>Status line says…</th><th>What it means</th><th>What to do</th></tr>
|
||||
<tr><td>“Searching for a router that supports UPnP / NAT-PMP / PCP…”</td><td>RemSound is asking around on your network for a router that speaks one of these languages. Usually finishes within a few seconds.</td><td>Wait a moment.</td></tr>
|
||||
<tr><td>“Router port opened. Peers can reach you at X.X.X.X:47830.”</td><td>Your router has agreed to forward incoming audio to this computer. Tell the peer at the other end that address and they can connect using <em>Add peer by IP</em>.</td><td>Pass that address (the part before the colon) to whoever you want to connect to.</td></tr>
|
||||
<tr><td>“No router with UPnP / NAT-PMP / PCP found.”</td><td>Either your router doesn't support it, the feature is turned off in the router's settings, or something on your network is blocking it.</td><td>Try turning UPnP on in your router's settings page (look for “UPnP” or “NAT-PMP”), or use Tailscale instead.</td></tr>
|
||||
<tr><td>“The router opened the port, but the external address is on a carrier-grade NAT.”</td><td>Your router did its part, but your internet provider has put you behind a second layer of NAT (a sort of giant shared router) and there's nothing your home router can do about that. This is common on mobile broadband and on some cable connections.</td><td>Use Tailscale or the relay server instead — both work fine through carrier-grade NAT.</td></tr>
|
||||
<tr><td>“The router rejected the port-mapping request.”</td><td>The router found the request but said no — usually because another device on your network already has the same port forwarded, or because the router has UPnP set to a restrictive mode.</td><td>Check your router's UPnP settings, or fall back to manual port forwarding or Tailscale.</td></tr>
|
||||
</table>
|
||||
|
||||
<p><strong>Across sleep and reboots.</strong> If your computer goes to sleep, RemSound asks the router to reopen the port automatically when it wakes up — some routers drop their port-forwarding list during long idle periods. Closing RemSound politely tells the router to forget the forwarding rule, so the port doesn't stay open after you're done.</p>
|
||||
|
||||
<p><strong>Why this is off by default.</strong> Some networks — corporate offices, shared accommodation, hotel Wi-Fi — really don't want apps asking the router to open ports for them, either because there's a security policy or because the router is locked down. Off by default means RemSound never touches your router unless you explicitly tick the box.</p>
|
||||
|
||||
<h3>Finding peers on Tailscale and other VPNs</h3>
|
||||
<p>The ordinary “I'm here” announcements that work on a home network don't travel across a VPN. RemSound works around this by also sending announcements directly to every address in your Remembered peers list. So:</p>
|
||||
<ol>
|
||||
@@ -742,11 +792,24 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift
|
||||
|
||||
<table>
|
||||
<tr><th>Setting</th><th>Shortcut</th><th>What it does</th></tr>
|
||||
<tr><td><strong>Check for updates</strong> (drop-down)</td><td>Alt+U</td><td>How often RemSound checks for a newer version in the background. Choices: <em>Never</em>, <em>Every hour</em>, <em>Every 6 hours</em>, <em>Every 24 hours</em>. The default is <em>Every 24 hours</em>. Your choice is remembered between launches; if you set it to <em>Never</em>, the only way an update arrives is through the manual button below.</td></tr>
|
||||
<tr><td><strong>Check for updates on startup</strong> (checkbox)</td><td>Alt+S</td><td>When ticked, RemSound has a quiet look for a newer version a few seconds after each launch. On by default. Combined with <em>Silently install updates</em> below, this means leaving RemSound to keep itself up to date without you ever needing to press anything. Untick if you'd rather only ever check on a timer or by pressing the manual button.</td></tr>
|
||||
<tr><td><strong>Then check every</strong> (drop-down)</td><td>Alt+U</td><td>How often RemSound checks for a newer version in the background <em>after</em> launch. Choices: <em>Never</em>, <em>Every hour</em>, <em>Every 6 hours</em>, <em>Every 24 hours</em>. The default is <em>Every 24 hours</em>. Your choice is remembered between launches; if you set it to <em>Never</em> and you've also unticked the startup check, the only way an update arrives is through the manual button below.</td></tr>
|
||||
<tr><td><strong>Check for updates now</strong> (button)</td><td>Alt+N</td><td>Checks for a newer version straight away. If you're already up to date you get a small popup saying so. If there's a newer version, you get a confirmation dialog with the release notes and a Yes / No to install. The same button is in the Help menu (Alt+H, C).</td></tr>
|
||||
<tr><td><strong>Silently install updates when available</strong> (checkbox)</td><td>Alt+I</td><td>When ticked, the background check installs any available update without asking — RemSound downloads it, closes briefly, swaps the files, and reopens itself. Off by default. The <em>manual</em> “Check for updates now” button always asks first, no matter how this checkbox is set.</td></tr>
|
||||
<tr><td><strong>Silently install updates when available</strong> (checkbox)</td><td>Alt+I</td><td>When ticked, the background and startup checks install any available update without asking — RemSound downloads it, closes briefly, swaps the files, and reopens itself. Off by default. The startup check shows a brief notice first so you can see what's about to happen (see below). The <em>manual</em> “Check for updates now” button always asks first, no matter how this checkbox is set.</td></tr>
|
||||
</table>
|
||||
|
||||
<h3>The brief notice before a silent update installs</h3>
|
||||
|
||||
<p>If RemSound finds an update right after launch and is set to install silently, it now shows a small window so you're not surprised when the app closes a few seconds in. The window says “RemSound vX.X is ready to install” with three buttons:</p>
|
||||
|
||||
<ul>
|
||||
<li><strong>Install now</strong> — installs straight away. This is the default; press Enter or wait through the countdown to pick it.</li>
|
||||
<li><strong>Skip this version</strong> — leaves the update alone for this launch. (RemSound may offer it again next time it checks.)</li>
|
||||
<li><strong>Postpone</strong> — close the notice without installing now. The next scheduled background check will pick it up again.</li>
|
||||
</ul>
|
||||
|
||||
<p>A short countdown picks <em>Install now</em> automatically if you don't choose anything — long enough to read the version number, short enough that walking away from your desk doesn't block the silent update. Esc has the same effect as Postpone.</p>
|
||||
|
||||
<h3>What happens during an install</h3>
|
||||
|
||||
<p>RemSound can't replace its own program file while it's running, so an install starts a small helper that finishes the job once RemSound has closed:</p>
|
||||
@@ -805,7 +868,7 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift
|
||||
|
||||
<p>RemSound plays a short ding when a recording starts and another when it stops, so you have an audible confirmation that the toggle actually took effect. The cues are <code>record start.wav</code> and <code>record stop.wav</code> in the RemSound install folder — you can drop in your own sounds to customise them, as long as you keep the same filenames.</p>
|
||||
|
||||
<p>Each cue can be turned off on its own via <strong>Preferences → Cue sounds (Alt+N)</strong>. The same checklist also controls the connect and disconnect cues. The cues play through your default Windows output device, separately from the recording, so a normal RemSound recording doesn't contain the cue. The one exception: if your sending side is capturing the very same output device the cue plays through, then the cue gets captured along with everything else from that device. In that case you'll have to live with the start cue appearing in the file, unless you turn it off.</p>
|
||||
<p>Each cue can be turned off on its own via <strong>Preferences → Audio cue sounds (Alt+N)</strong>. The same checklist also controls the connect and disconnect cues. The cues play through your default Windows output device, separately from the recording, so a normal RemSound recording doesn't contain the cue. The one exception: if your sending side is capturing the very same output device the cue plays through, then the cue gets captured along with everything else from that device. In that case you'll have to live with the start cue appearing in the file, unless you turn it off.</p>
|
||||
|
||||
<h3>Where recordings go</h3>
|
||||
|
||||
@@ -923,6 +986,18 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift
|
||||
<h3>The device list shows old devices that are no longer plugged in</h3>
|
||||
<p>RemSound refreshes its lists every second. If a device has really been unplugged it should disappear within a few seconds. If it lingers, restart RemSound — Windows' own device list occasionally needs a nudge.</p>
|
||||
|
||||
<h3>No sound after the computer wakes from sleep</h3>
|
||||
<p>RemSound notices when the computer has just woken up, waits a moment for any USB sound devices to come back to life, and rebuilds its audio engine from scratch — you'll briefly see a small “Reconnecting to audio driver” window during the rebuild, then sound should resume on its own. If sound still doesn't come back, click on the ASIO driver picker on the Audio inputs and outputs tab and re-pick the same driver (or pick <em>(none)</em> and then re-pick your driver). That triggers the same full rebuild manually. As a last resort, quit and reopen RemSound.</p>
|
||||
|
||||
<h3>UPnP says “no router found” even though my router supports it</h3>
|
||||
<p>The most common reasons:</p>
|
||||
<ul>
|
||||
<li>UPnP is disabled in your router's settings. Look for a checkbox marked “UPnP”, “NAT-PMP”, or “Allow apps to automatically forward ports” in the router's admin page. It's often off by default.</li>
|
||||
<li>Your Windows network is set to “Public” rather than “Private”. Public mode blocks the discovery messages RemSound uses to find the router. In Windows' network settings, switch your home network to Private.</li>
|
||||
<li>Your computer is on a Wi-Fi guest network or a corporate / hotel network. These networks usually block the kind of discovery messages UPnP needs.</li>
|
||||
</ul>
|
||||
<p>If none of those apply, just fall back to Tailscale — it works without involving the router at all.</p>
|
||||
|
||||
<h2 id="glossary">21. Glossary</h2>
|
||||
|
||||
<table>
|
||||
@@ -941,6 +1016,9 @@ Use whatever key combinations you prefer (for example Ctrl+Shift+Up / Ctrl+Shift
|
||||
<tr><td>Heartbeat</td><td>A small message that connected computers exchange every second to confirm they can still reach each other and to measure the round-trip time. It travels on the audio channel (47830 by default).</td></tr>
|
||||
<tr><td>Discovery</td><td>The way RemSound computers find each other on the network without you having to know each other's addresses up front.</td></tr>
|
||||
<tr><td>Tailscale</td><td>An easy-to-use VPN that puts your computers on a private network together. The simplest way to connect RemSound across the internet without changing your router settings.</td></tr>
|
||||
<tr><td>UPnP</td><td>Short for “Universal Plug and Play”. A feature most home routers support that lets an app politely ask the router to open a port for incoming connections, without the user having to log into the router. RemSound uses UPnP (and its newer relatives NAT-PMP and PCP) to set up port forwarding automatically when you tick “Automatically open my router for incoming connections” in Preferences. Off by default.</td></tr>
|
||||
<tr><td>NAT</td><td>Short for “Network Address Translation”. The way your router lets several computers share a single internet connection — one public address on the outside, lots of private addresses on the inside. Most home networks use NAT, which is why you usually need port forwarding (or UPnP, or a VPN) for two computers in different places to reach each other directly.</td></tr>
|
||||
<tr><td>Carrier-grade NAT</td><td>An extra layer of NAT that some internet providers (especially on mobile broadband and some cable connections) put in between your router and the rest of the internet. Your home router opens a port fine, but the provider's NAT in front of it still blocks incoming connections. RemSound's UPnP status line warns you when this is the case — the way through it is a VPN like Tailscale, or the relay server.</td></tr>
|
||||
<tr><td>Auto-tune</td><td>RemSound automatically adjusting the latency target based on how evenly packets are arriving. Off by default; turn it on with the Continuous auto-tune checkbox on the Audio profile tab.</td></tr>
|
||||
<tr><td>Profile</td><td>A saved snapshot of every RemSound setting and choice — device ticks, send / receive states, codec, latency, peers, hotkeys, ASIO driver choice, the lot. Stored as one settings file. You pick one at startup, and can switch with File → Open profile.</td></tr>
|
||||
<tr><td>Blank template</td><td>An entry in the startup profile picker that begins a session with all the defaults — nothing ticked, no peers, no saved name. A clean starting point for a new profile, or for a one-off session you don't plan to save.</td></tr>
|
||||
|
||||
Reference in New Issue
Block a user