v2.4.0 — Settings Polish, Linux Drag Fix, and Configurable HuggingFace Path
This post covers an older release. The current version is on the releases page, and the handbook explains how updates arrive.
Locally Uncensored v2.4.0 is a polish release. Eight fixes, two of them surfaced through community feedback on Discord, six caught during an internal end-to-end pass on the v2.3.9 build. No new headline features — this release exists so the next feature release lands on a cleaner foundation.
Quick TL;DR before we dig in:
- Single-instance lock — double-clicking the shortcut focuses the existing window instead of spawning a second process
- Settings > Model Storage — paste or pick the folder where HuggingFace GGUF downloads land
- Settings > Privacy — in-app statement of what runs locally and what doesn’t
- Settings > Onboarding — a button that re-runs the first-launch wizard on demand
- Reset tutorial — the button now actually does what its label promises
- Linux window drag — the title-bar drag works on Ubuntu 24.04 again
- Discover — the HuggingFace download path is no longer printed twice
- HuggingFace search heuristic — search results for repos with a quant tag in the name no longer 404 on download
Single-Instance Lock
Before v2.4.0, double-clicking the desktop shortcut started a second locally-uncensored.exe process. Both instances would race each other writing to %APPDATA%/Locally Uncensored/store_backup.json — not a frequent corruption source, but a real one when both happened to flush at the same millisecond.
v2.4.0 ships with tauri-plugin-single-instance. The second launch focuses, un-minimizes, and brings the existing window to front. No new process. Double-checked with three back-to-back launches: only one PID survives.
Settings > Model Storage — Configurable HuggingFace Folder
The Model Manager > Discover > Text tab lets you download GGUF models from HuggingFace. Until v2.4.0, the destination folder was always auto-detected from the active openai-compat provider — usually LM Studio’s ~/.lmstudio/models or the equivalent on Linux/macOS.
That worked fine for single-disk setups. It did not work for dual-boot users who wanted a shared model partition between Linux and Windows, or anyone running a NAS-mounted models folder. Reported on Discord.
v2.4.0 adds a dedicated Settings > Model Storage section. Three controls:
- A path input (placeholder shows
(auto-detect)when empty — meaning the previous behaviour) - A Browse… button that opens the native folder picker
- A Reset button that clears the override (only visible when set)
The override takes effect immediately. Discover’s subtitle updates live to show the new Saves to: <path>. Verified end-to-end with a Gemma 4 E4B download (4.6 GB) landing in a custom Desktop folder, while the LM Studio default folder stayed untouched.
Settings > Privacy — In-App Statement
The privacy claim has always been on the README and in the schema.org metadata, but never inside the app itself. That mattered for first-launch trust — if you can’t be bothered to open GitHub, you were taking the README at its word.
v2.4.0 adds a Settings > Privacy section that lays out the actual behaviour:
- 100% local by default. Chat, agent runs, image and video generation all execute on your machine. No telemetry, no analytics, no model pings home.
- The only outbound network calls without explicit opt-in are GitHub Releases update checks.
- Cloud provider APIs (OpenAI, Anthropic, OpenRouter, Groq) only fire when you configure them with your own keys.
- Conversations, memories, and generated media live in
%APPDATA%/Locally Uncensoredon Windows (or the equivalent on Linux/macOS). Back up the folder, move it between machines, or delete it — LU writes nothing else.
Note, October 2026: this is the statement as version 2.4.0 shipped it. Since September 2026 the app also counts each press of the Cloud switch (which way, platform, app version, no identifier), and while you are signed in to LU Cloud it checks your account every five minutes. The current wording is in the app under Settings, General, Privacy.
Settings > Onboarding — Re-Run Wizard
The first-launch wizard runs once: hardware scan, recommended models, agent-mode tour. After that, the only way to see it again was Reset to Defaults, which wipes every other preference too — not great if you wanted to redo the hardware scan or show the app to a friend.
v2.4.0 adds an Onboarding section to Settings with a single Re-run onboarding button. It clears the marker file, flips onboardingDone back to false, and reloads the app. The wizard renders again from step 1.
The Rust command set_onboarding_done now accepts an optional boolean instead of always writing the marker, so callers can also clear it.
Reset Tutorial — Actually Resets Now
This was a quiet bug for several releases. The Reset tutorial link in Settings > Agent Permissions called setTutorialCompleted(), which unconditionally sets tutorialCompleted: true. Clicking it on a fresh install silently skipped the agent-mode tour. Clicking it after seeing the tour did nothing at all.
v2.4.0 adds a dedicated resetTutorial() store action that flips the flag back to false, and rewires the button. Verified live: click Reset, create a new chat, click the Agent toggle — the “Welcome to Agent Mode” tutorial renders again. A regression test in stores.test.ts guards against the next regression.
Linux Window Drag Fix
On Ubuntu 24.04, dragging the LU title bar threw an unhandled Promise rejection:
window.start_dragging not allowed.
Permissions associated with this command: core:window:allow-start-dragging
The window stayed anchored. Keyboard tiling (Super+arrows) still worked, so the bug only bit users who actually dragged windows around. Reported on Discord with a clean Promise-rejection dump.
The fix was one line in src-tauri/capabilities/default.json — core:window:allow-start-dragging was missing from the capability list. Added.
Discover — No More Duplicate Path Display
Cosmetic but jarring: the Discover tab showed the HuggingFace download path twice. Once in the section subtitle (“Download GGUF models from HuggingFace. Saves to: ...”) and again in a paragraph below the download grid (“Downloads save to: ...”). v2.4.0 removes the second one.
HuggingFace Search Filename Fix
This one is a pre-existing bug that surfaced while end-to-end testing the new Model Storage feature. Searching the Discover tab for tinyllama Q4 returned repos like hieupt/TinyLlama-1.1B-Chat-v1.0-Q4_K_M-GGUF. The client guessed the inner GGUF filename by appending -Q4_K_M.gguf to the repo’s base name. For repos that already ended in a quant tag, that produced doubled tags — ...-Q4_K_M-Q4_K_M.gguf — which 404 every time on HuggingFace.
v2.4.0 extracts the heuristic into deriveQ4FilenameFromRepo(), adds a case-insensitive quant-suffix detector (matching Q4_K_M, Q5_K_M, IQ2_XXS, UD-IQ, BF16, FP16 and friends), and collapses the doubled tag. Nine regression tests in discover-hf-filename.test.ts cover the edge cases.
Tests & Verification
Test suite went from 2205 to 2216 (+11 regression tests). cargo check clean. tsc --noEmit clean.
Live end-to-end on the installed v2.4.0 build:
- Single-instance: 3 back-to-back exe launches → 1 PID
- HF download override: typed custom path, Discover subtitle updated, Gemma 4 E4B partial download (35.9 MB at 897 KB/s) landed in the picked folder, LM Studio default untouched
- Re-run onboarding: click → marker deleted → 6-step wizard renders → Get Started → marker re-created with fresh timestamp
- Reset tutorial: click →
tutorialCompletedflipped to false in the persisted store → new chat → Agent toggle → tutorial renders
Download
v2.4.0 is on GitHub Releases. Installers for Windows (.exe, .msi) and Linux (.deb, .rpm, .AppImage) — the auto-update channel is signed against a public minisign key. Auto-update picks the new build up on next launch for anyone on v2.3.x.
Related
- v2.3.1 release notes — in-app Ollama install + configurable ComfyUI port
- v2.3.0 release notes — Remote Access + Coding Agent streaming + agent overhaul
- How to run uncensored AI locally — full setup walkthrough
- Best local AI apps in 2026 — landscape overview
Locally Uncensored v2.4.0. AGPL-3.0 licensed. Built by PurpleDoubleD. Bug reports and feature requests on GitHub Discussions or in the Discord.
In the handbook
- Install and update, the SmartScreen warning and how updates arrive
- Settings and troubleshooting, every settings tab in one line each and where the log file is