Claude Desktop 1.15962.0 (patch release 2)
This release provides Claude Desktop version 1.15962.0 pre-patched for Linux.
Installation Options
Arch Linux (AUR)
yay -S claude-desktop-binDebian/Ubuntu (APT Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-bin/install.sh | sudo bash
sudo apt install claude-desktop-binDebian/Ubuntu (manual .deb)
# x86_64
sudo apt install ./claude-desktop-bin_1.15962.0-2_amd64.deb
# ARM64
sudo apt install ./claude-desktop-bin_1.15962.0-2_arm64.debFedora/RHEL (RPM Repository — recommended)
curl -fsSL https://patrickjaja.github.io/claude-desktop-bin/install-rpm.sh | sudo bash
sudo dnf install claude-desktop-binFedora/RHEL (manual .rpm)
# x86_64
sudo dnf install ./claude-desktop-bin-1.15962.0-2.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-bin-1.15962.0-2.aarch64.rpmNixOS / Nix
nix run github:patrickjaja/claude-desktop-binAppImage (Any Distro)
# x86_64
chmod +x Claude_Desktop-1.15962.0-x86_64.AppImage
./Claude_Desktop-1.15962.0-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.15962.0-aarch64.AppImage
./Claude_Desktop-1.15962.0-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 |
|---|---|
| Tarball (x86_64) | 75e26571027ba341a748c0099361347bd16417502a094a3d50c534419b2cf3a5
|
| Tarball (aarch64) | 436f2b103fd466ab4513b5b69cf86c8bb5b7aea2311af7f054d2fa0a51f52d9d
|
| AppImage (x86_64) | 24db8c10b5fdb1a36cbfcdfce1e9ab3504a1fe411ce9406d93feed339e6307e0
|
| AppImage (aarch64) | 206f601f554bc30831ec71ded4bf95291077563392f6f1c76a709966211347a7
|
| Debian (amd64) | c5c49eb89dba701b29e29e72c923b75d3d22b7c534baceda49e3fc8c13c7574c
|
| Debian (arm64) | be32c8cdfd300971965836a786b4fa2e318717514d8f362d4c12728ae5e37907
|
| RPM (x86_64) | a515e3390b58ad9759688ac05631b9a8d1058d800f625f28ab0d627771f231c2
|
| RPM (aarch64) | 24b05b45740546f4d88481d892e1da90332dd20436c2e16968b53433b0fe8e32
|
Changes since last release
Fix: Computer Use broken on Linux - Cowork executor factory fell through to throw (#159)
- Cowork / agent Computer Use failed on Linux with
computer-use executor not implemented for linux(#159, thanks @Adiker for the precise diagnosis). As of v1.15200 upstream split executor resolution into two factories.fix_computer_use_linux.nimalready (a) injects our fullglobalThis.__linuxExecutor(ydotool/xdotool input, grim/spectacle/scrot screenshots, multi-monitor, KDE kwin-bridge) at app-ready and (b) routescreateDarwinExecutorto it. But the second factory - the one the Cowork/agent path actually calls - has the shape{const{…,hostBundleId:Z()};if(win32)return …;if(darwin)return …;throw "computer-use executor not implemented for ${platform}"}with nolinuxbranch, so on Linux it fell straight to the throw. This is a factory dispatch, not aprocess.platform===guard, which is why a platform-gate count diff didn't surface it. - Fix: new sub-patch (Patch 4d, count 35 -> 36) injects
if(process.platform==="linux"&&globalThis.__linuxExecutor)return globalThis.__linuxExecutor;immediately before that throw, anchored on the uniqueif(process.platform==="darwin")return X(Y);throw "…executor not implemented…"site. Both factories now resolve to the same already-injected__linuxExecutor; the&&globalThis.__linuxExecutorguard preserves a clean fallback to the original throw (no regression). Idempotency keys on the linux branch being present at this throw-site (Rule 6), not merely existing somewhere (Patch 4 injects an identical string intocreateDarwinExecutor). Matches the one-line fix the reporter verified working (screenshot/click/type/multi-monitor). (Gotcha fixed along the way: the throw interpolates${process.platform}, whose body has a., so the placeholder anchor is[\w$.]+-[\w$]+stops at the dot and silently 0-matches.)
Upstream bump v1.15200.0 -> v1.15962.0 (4 patches fixed; all apply)
- Version bump v1.15200.0 -> v1.15962.0, a full re-minify release. Routine for Linux: no new platform gate locks out a Linux feature (darwin/win32/linux gate counts unchanged at 76/125/10; the only structural change is the removal of a macOS-only
disclaimerHelpers command wrapper, a Linux no-op), no new native modules, no new built-in MCP servers, and the Cowork RPC contract between Desktop andclaude-cowork-serviceis functionally identical (same socket name, framing, 22 prior methods, 7 event types, spawn args/env). Three patches needed rebasing for the re-minify (a fourth,fix_computer_use_linux, gained a sub-patch for #159 - see the entry above). fix_quick_entry_cli_toggle: the Quick Entry show-handler's focus branch gained an argument. Upstream changed the registration arrow from?(w.focus(),i9t())to?(w.focus(),GZt(tt))- the focus-branch call now takes the window var. Sub-patch A's anchor required empty parens (,[\w$]+\(\)\)), so it matched 0 times. Widened both ternary-branch call arg-lists from\(\)to\([\w$]*\). The arrow prefix/body slice is unchanged; sub-patch B (second-instance) was unaffected.fix_window_bounds: a new setup call was inserted into the main-window factory. The factory went from…Mk(w.webContents,MAIN_WINDOW),w}to…ev(tt.webContents,MAIN_WINDOW),Cft(tt),tt}- aCft(tt)call now sits between theMAIN_WINDOWsetup call and the trailing,w}return, breaking the adjacency the regex anchored on. Added a second lazy(.*?)group after the setup call (re-emitted verbatim, so the new call is preserved and the bounds-fix IIFE is injected just before,w}).fix_cowork_linuxPatch G: the smol-bin copy gate was wrapped in a GrowthBook-readiness await. Upstream changedif(process.platform==="win32"){const …}toif(await BO(),process.platform==="win32"){await L9(5e3),await Promise.race([…]);const …}(BO=waitForGrowthBookReady). The old anchor keyed onif(immediately before the gate plus the{const …}body shape. Re-anchored on the gate expression only (process.platform==="win32")({…\smol-bin.)via a[^}]+body matcher terminated by thesmol-bin.tail (unique - the bare gate appears 68x but only this one precedes a resourcesPath/smol-bin join), and dropped the leadingif(from the replacement so theawait BO(),prefix is preserved. The Linux KVM opt-in (||process.platform==="linux"&&globalThis.__coworkKvmMode) is unchanged.- New in v1.15962, no patch needed: upstream now ships bundled skills (
resources/bundled-skills/withdocx/pdf/pdf-reading/pptx/xlsx/frontend-design+ a manifest), andusesLocalSkillStorage()now returns those bundled skills instead of an empty list. This may partially close the gap where document-skills were unavailable on 3p/gateway deployments (a manual workaround we documented) - worth a re-test on 3p, but it adds no platform-gated code. Also added: 14 renderer<->main IPC handlers (an external-browser-preview surface that is hard-disabled in this build, MCP-OAuth + folder-picker channels for local sessions, an SSH-target setter, and a plugin-bridgelistServers) - none touch platform/spawn/native code. - Cowork daemon: no change required. v1.15962 adds a
getNetworkDrivesRPC and anetworkDrivesfield onconfigure; both are absorbed by the daemon's existing tolerance (unknown-method default returns null -> Desktop falls back to[]inside a try/catch; the unknownconfigurefield is dropped by a non-strictjson.Unmarshal).COWORK_RPC_PROTOCOL.mdupdated to record this. - Baselines re-validated and updated:
CLAUDE_FEATURE_FLAGS.md(registryz_()->QR(), mergeryDA->HSA, gateHR()->gM(), readernt()->it(), yukonSilver fn$oe()->Uae(); 4 GrowthBook flags added / 1 removed, none gating a cowork/code/dispatch surface, so theenable_local_agent_modeoverride list is unchanged - all 15 forced flag IDs + 12 merger override names still present),ION.md(97 MB / 758 JS / 984 files / 25 CSS; config chunkQjesmIoF->DAO_m0do; ternary obj varft->mt;fix_ion_dist_linux.nimstill applies cleanly), andPLATFORM_GATE_BASELINE.md(gate counts unchanged; one macOS-only gate removed)..electron-versionstays 42.0.0, so no.electron-shasumsupdate.