April 23, 2026 · 6 min read

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

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:

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:

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:

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


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

Eight fixes, configurable HuggingFace path, in-app Privacy section

Download v2.4.0

No GPU? LU Cloud runs in a browser, paid from credit packs that start at 15 EUR and need no subscription. See what it costs.