github patrickjaja/claude-desktop-bin v1.19367.0
Claude Desktop 1.19367.0

latest releases: v1.19367.0-3, v1.19367.0-2
3 hours ago

Claude Desktop 1.19367.0

This release provides Claude Desktop version 1.19367.0 pre-patched for Linux.

Installation Options

Arch Linux (AUR)

yay -S claude-desktop-bin

Debian/Ubuntu (APT Repository — recommended)

curl -fsSL https://patrickjaja.github.io/claude-desktop-bin/install.sh | sudo bash
sudo apt install claude-desktop-bin

Debian/Ubuntu (manual .deb)

# x86_64
sudo apt install ./claude-desktop-bin_1.19367.0-1_amd64.deb
# ARM64
sudo apt install ./claude-desktop-bin_1.19367.0-1_arm64.deb

Fedora/RHEL (RPM Repository — recommended)

curl -fsSL https://patrickjaja.github.io/claude-desktop-bin/install-rpm.sh | sudo bash
sudo dnf install claude-desktop-bin

Fedora/RHEL (manual .rpm)

# x86_64
sudo dnf install ./claude-desktop-bin-1.19367.0-1.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-bin-1.19367.0-1.aarch64.rpm

NixOS / Nix

nix run github:patrickjaja/claude-desktop-bin

AppImage (Any Distro)

# x86_64
chmod +x Claude_Desktop-1.19367.0-x86_64.AppImage
./Claude_Desktop-1.19367.0-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.19367.0-aarch64.AppImage
./Claude_Desktop-1.19367.0-aarch64.AppImage

Update 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
Tarball (x86_64) 75631a4c71b6183f5a7680ed11d0f6bd2c43b6721fb186e8e0dda9e96c921458
Tarball (aarch64) ed3b2c2566e205d86e733a6ecb96d23b5c4512cdda2ef8d6974be7270a9dd15f
AppImage (x86_64) a1dd93b20ec6718a68efcb9c5e28269629625481cf802ddfcb6f88c58d9bffee
AppImage (aarch64) aeecb4c52dc8ad990ce68bb299cbb64cff3b4b25d0c4979223678a17fbd3d152
Debian (amd64) 328708c1d45aee4add13beeea86ae39f5603cb4069c4039f9ea28912d819fa78
Debian (arm64) bac22c8be8e39db7257bef7a9f05229c6c1774c4c26af9ae1f2b560dc72d9b39
RPM (x86_64) 4a5e70c8cfc94bae64ba98d5bc48f3ea5646ab70e66069e784f89b852c8a7ffa
RPM (aarch64) b556cf956d91b725db5c70bd32889c8880c17b989f80563160cc2f7b4f239e86

Changes since last release

v1.19367.0: upstream code-split the main bundle - orchestrator now patches stub + chunks as one logical file

Upstream restructured the app: .vite/build/index.js went from a 15 MB monolith to a 773-byte loader stub, with the real main-process code in ~44 content-hashed index.chunk-<hash>.js siblings, and index.pre.js (now the package.json entry point) grew to 4.5 MB. Chunk hashes change every release, so no patch can target them by name. Every pattern-matching patch 0-matched and the auto-release failed (#187).

The fix is in the patch orchestrator, not in 40 regexes: apply_patches.py (and validate-patches.sh) now stage the stub plus all sibling chunks as one concatenated file with boundary markers, run every index.js patch against it, then split it back and write each file. Patches keep their @patch-target: .../index.js headers and their strict aggregate match counts work across the whole logical bundle exactly as on the old monolith; a corrupted boundary fails the build loudly, and each split file is node --checked. This proved necessary beyond convenience: fix_asar_workspace_cwd's five anchor sites now span two different chunks.

31 of 40 patches applied verbatim on the concatenation. Nine needed real fixes, almost all one shared root cause: the code-split minifier turned module-local identifiers into dotted cross-chunk member paths that [\w$]+ cannot match - the main window is now exports.mainWindow (fix_window_bounds, fix_profile_window_title, fix_quick_entry_cli_toggle), loggers are n.logger.info (fix_asar_workspace_cwd), and flag reads are p.isFeatureEnabled("...") instead of rt("...") (fix_imagine_linux, fix_buddy_ble_linux, enable_local_agent_mode - the latter's standalone flag matchers would otherwise have produced dangling l.!0 syntax errors). The remaining drifts were minifier hoisting (var r; before the folder-drop handler in fix_asar_folder_drop) and a renamed tray icon variable (fix_tray_icon_theme). SSH plugin/MCP forwarding remains unconditional upstream (regression guard re-anchored, satisfied).

Two latent pre-existing bugs were found and fixed along the way: fix_quick_entry_cli_toggle's second-instance argv sub-patch reported "already applied" on pristine bundles because its idempotency probe matched a sibling sub-patch's own injected text (it now checks the real end-state and genuinely applies), and fix_buddy_ble_linux reported success on files containing no buddy code at all (absence now fails loud).

v1.19367.0: desktopName pinned to claude-desktop.desktop (upstream renamed to com.anthropic.Claude.desktop)

Upstream renamed its desktopName to com.anthropic.Claude.desktop, matching the .desktop file the official .deb installs. Chromium derives the window's Wayland app_id / X11 WM_CLASS from that value, and every .desktop entry we ship (Arch/deb/rpm/AppImage/Nix, the launcher's per-profile entries, StartupWMClass, the claude:// xdg-mime handler) is built around the claude-desktop identity - the window-to-icon matching fixed in #148 would have silently broken on Wayland. The tarball build now pins desktopName back to claude-desktop.desktop after extraction (the JS bundle references neither name, so the pin is safe) and fails loud if the key ever disappears.

Local agent sessions: stop forcing ENABLE_TOOL_SEARCH (Patch 3f disabled)

enable_local_agent_mode.nim no longer forces GrowthBook flag 1129419822 (ENABLE_TOOL_SEARCH='auto' for local agent sessions); the flag now follows Anthropic's server-side rollout. Forcing it put a ToolSearch tool into every Cowork/Code session, but with a session inventory of ~79 tools nothing was ever deferred, so the tool had nothing to load - and its mere presence primed the model into a bogus "load tools first" detour (observed in a live session: Skill({"skill":"ToolSearch"}) -> "Unknown skill" error, one wasted turn before recovering). All computer-use and MCP tools were always fully loaded; removing the force removes the confusion surface without losing anything.

v1.19367.0: what else changed upstream

The bundle actually shrank 1.7 MB - the old build double-shipped agent-sdk (0.3.198 + 0.3.202), the new one ships only 0.3.202. Electron stays 42.5.1; the built-in MCP server set, the Cowork VM backend files, and the CU platform gates are unchanged. No newly darwin/win32-gated features exclude Linux; the new file-index-worker (fuzzy file scorer) and coworkScheduledTaskProjects capability are ungated and work on Linux natively. Three new GrowthBook flags (session-concurrency limits, device-tool artifact read gate, GPU crash-streak marker) - none patch-relevant; all 13 flags forced by enable_local_agent_mode are unchanged. ion-dist needed no patch changes (one new config key upstream: inferenceFoundryAuthFlow for Entra ID device-code vs browser sign-in). Eleven new IPC channels landed (LocalSessions remote-target trust/WSL/cwd handling, a DocumentFunnel bridge, Extensions.isLocalExtensionInstallAllowed), none removed. One structural caveat for future audits, now noted in the baseline docs: minified helper names differ per chunk (the flag reader is rt() in the big chunk but isFeatureEnabled() in smaller ones), so greps must cover all index*.js files.

Links

Don't miss a new claude-desktop-bin release

NewReleases is sending notifications on new releases.