Claude Desktop 1.34493.1
This release provides Claude Desktop version 1.34493.1 pre-patched for Linux.
Installation Options
Arch Linux (pacman Repository - recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install-pacman.sh | sudo bash
sudo pacman -Syu claude-desktop-extraArch Linux (manual package)
# x86_64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-extra/releases/download/v1.34493.1/claude-desktop-extra-1.34493.1-1-x86_64.pkg.tar.zst
# ARM64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-extra/releases/download/v1.34493.1/claude-desktop-extra-1.34493.1-1-aarch64.pkg.tar.zstDebian/Ubuntu (APT Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install.sh | sudo bash
sudo apt install claude-desktop-extraDebian/Ubuntu (manual .deb)
# x86_64
sudo apt install ./claude-desktop-extra_1.34493.1-1_amd64.deb
# ARM64
sudo apt install ./claude-desktop-extra_1.34493.1-1_arm64.debFedora/RHEL (RPM Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-extra/install-rpm.sh | sudo bash
sudo dnf install claude-desktop-extraFedora/RHEL (manual .rpm)
# x86_64
sudo dnf install ./claude-desktop-extra-1.34493.1-1.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-extra-1.34493.1-1.aarch64.rpmNixOS / Nix
nix run github:patrickjaja/claude-desktop-extraAppImage (Any Distro)
# x86_64
chmod +x Claude_Desktop-1.34493.1-x86_64.AppImage
./Claude_Desktop-1.34493.1-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.34493.1-aarch64.AppImage
./Claude_Desktop-1.34493.1-aarch64.AppImageUpdate existing AppImage (delta download — only changed blocks):
appimageupdatetool Claude_Desktop-*-x86_64.AppImage # Or from within the AppImage: ./Claude_Desktop-*-x86_64.AppImage --appimage-update
Checksums
| File | SHA256 |
|---|---|
| Arch pacman (x86_64) | acd0b4f838eca23294b467b3eb58fdfd15fd05e0bb1c3339a675eacd2c3e49e2
|
| Arch pacman (aarch64) | 9edd153e9f1096044a7d9a99e86ba7e34997af3db3da2f3e1874a229f887fb5a
|
| Tarball (x86_64) | 721a6f1a3711b13b98d9d17e463f56fe6d52ff86a218daab0734acc68dcb2017
|
| Tarball (aarch64) | f9d3db2bb84526764bc0e29f075d1f10fab6839c6d2721df09a329244833ec23
|
| AppImage (x86_64) | 82e14f5a5a3ea8aace539f4ac9e989bc186514c0c0e68736741f59a729f197c1
|
| AppImage (aarch64) | bb9058f5b1b1d56bb5a7678f901a59ed50407c625a580dcb0f1759f9c8825314
|
| Debian (amd64) | 303d719d6306e4f155313b57d090d44469d23446f4b002932f40a38da8bed493
|
| Debian (arm64) | d6c72f380f5e53913531f43c481d92ed413e8915962b85264eb5fee3625bc806
|
| RPM (x86_64) | a8c5a7f5b851eb70aed7db1bdaf2606b72f3706052aa7d5659f27a3da21b3571
|
| RPM (aarch64) | 89c5d1235e4bef7777ab3c10cc6028c387800993c805f3aeccacfd01565c25bd
|
Changes since last release
From CHANGELOG.md, 2026-08-22:
Claude Desktop v1.34493.1
All 43 patches apply. Only one needed re-fitting - add_growthbook_overrides (below) - and the full audit came back clean: no new darwin/win32 gate lacks Linux support, no new native module, Electron stays 42.9.2, and the four bundled native artifacts are byte-identical. Upstream still ships no native Linux Computer Use executor, so our CU patch stays load-bearing.
Notable upstream additions, none of which intersect our patch sites: SSH remote sessions with reattach, Design PDF export (a new designWindow.js preload), an Artifact "host tools" MessagePort bridge, Claude in Chrome local pairing / Remote Control, scratch workspaces and worktrees, workspace cwd-trust prompts, and scheduled-task folder grants. Local PR creation was removed from the desktop app in favour of a cloud-session path. The dangerous-switch startup blocklist grew from 2 entries to 16 (--disable-web-security, --ignore-certificate-errors, …) - none of our launcher flags collide, but a user passing one of those now gets a hard exit with a message on stderr.
Two features worth knowing about that stay macOS-only by construction: watch-record (the "show Claude how to do it" demonstration recorder) grew from a stub into a full Electron-side controller, but its InputRecorder provider is pruned to Promise.resolve(null) in the Linux bundle, so widening its platform gate would achieve nothing - a real port means writing a global input recorder from scratch. violinBow is hardcoded unavailable on every platform. The new coworkThinkingInSend capability is unconditionally supported and works on Linux as-is.
Baselines re-validated: feature flags (+14/-2 flag IDs, registry 57 -> 59, all three override layers intact), built-in MCP (the ccd_directory server gained a change_directory tool), ion-dist (partial rebuild, both fix_ion_dist_linux targets still found by content signature), platform gates (darwin 88, win32 147, linux 20). The managed-settings deploy catalog gained claudeInChromeEnabled (109 keys).
Correction to the v1.32885.1 notes: bootPlaceholder was not removed - it is still a registry entry and a zod key, carrying {status:"unsupported"} in both builds.
Computer Use no longer freezes the app when the GNOME portal bridge stops answering (#232)
Reported on Ubuntu 26.04 / GNOME Wayland: Computer Use locked the whole app until the OS offered "Force Quit or Wait". The bridge itself was not answering, but what turned that into a freeze was ours - every bridge call on the capture and input paths was a blocking execFileSync, and a failed session-start left no memo, so each action re-paid the full bill: screens (15 s) + session-start (30 s) + the command itself (30 s), and the next click did it all again.
- The screenshot path is async end to end. It was already an
asyncfunction awaiting anasynccaller, so nothing was gained by blocking - it now usesexecFilethroughout and cannot stall the main process at all. - A failed portal session is latched for 60 seconds. Input and capture fail immediately with a message naming the portal and pointing at the bridge command to run by hand, instead of blocking on a session that just failed. A fresh Computer Use lock clears the latch, so a real retry - consent dialog and all - still happens on the next user gesture.
- The synchronous session-start backstop is capped at 8 s (was 30). It only fires when a portal command beats the lock hook; waiting out a consent dialog belongs to the async lock path, which keeps the full 30 s budget. One failed click now costs at most 8 s of blocking, once, instead of two minutes, repeatedly.
- No x11-bridge fallback on a covered Wayland session. Under a rootless XWayland server the X root window holds nothing, so
zoomthere can only answerBadMatch- which is exactly the confusing error the report ended on. The covered cascade now goes straight to thedesktopCapturerlast resort, matching what the diagnostics line has always advertised. Exotic (uncovered) Wayland compositors keep their x11-bridge tier. - An empty bridge monitor list is now called out in the log, because it means the capture region is sent in global coordinates with no
--display- wrong on any multi-monitor layout. claude-desktop --diagnosegains a GNOME Wayland section: GNOME Shell and PipeWire versions plus a timed, portal-freegnome-portal-bridge screensself-test. There was only a KDE self-test before, so a GNOME report could not show whether the bridge worked.
New harness scripts/tests/linux/test-cu-nonblocking.mjs (18 assertions) pins all of it against the real executor with child_process stubbed - the screenshot path spawning nothing synchronously, the latch costing zero spawns, the exotic-Wayland tier surviving, and the sync budget staying click-sized. scripts/tests/linux/ is a new third test category.
Packages are ~5 MB smaller
v1.34493.1 ships a V8 bytecode compile-cache inside app.asar. We patch two of the three files it covers, so 5.04 MB of the 5.05 MB is guaranteed rejected at load - dead weight in every artifact plus a pointless read at startup. The build now drops it before repacking. V8 validates the cache against the source and recompiles on mismatch, and upstream already handles the directory being absent, so nothing changes at runtime.
add_growthbook_overrides re-fitted for Claude Desktop v1.34493.1
Upstream reshaped the features-store setter: it now takes a second (source/status) parameter, drops the dirty flag, and routes the stored value through the deployment-mode hardcoded-features filter, which used to be a separate load path calling the setter. Sub-patch B now wraps that transform call instead of reassigning the raw parameter, so overrides still apply to the map that is actually stored - the same layering as before (user override > any rollout). Anchor unchanged: the [growthbook] loaded %d features (%d changed) log line.
Contributed by @dels07 in #231.