Claude Desktop 1.11847.5 (patch release 3)
This release provides Claude Desktop version 1.11847.5 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.11847.5-3_amd64.deb
# ARM64
sudo apt install ./claude-desktop-bin_1.11847.5-3_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.11847.5-3.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-bin-1.11847.5-3.aarch64.rpmNixOS / Nix
nix run github:patrickjaja/claude-desktop-binAppImage (Any Distro)
# x86_64
chmod +x Claude_Desktop-1.11847.5-x86_64.AppImage
./Claude_Desktop-1.11847.5-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.11847.5-aarch64.AppImage
./Claude_Desktop-1.11847.5-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) | 37f82382390e7e365333540479087c3bc4db782e160bff1b2e918b6e27aee1d5
|
| Tarball (aarch64) | 4889757c1449ab146806460940a1daaed913de6d1e1d2b047b8d5e3d9e39d76b
|
| AppImage (x86_64) | 8a74293ee66a3bc0983bfe673b6fb5d23dc46af1478ede30cee2db24efe87f5b
|
| AppImage (aarch64) | d75acb33466122ddc29d43acacab812437091dd851172750c56903d06979a94e
|
| Debian (amd64) | 27e316fe29b179730b49632e35f15d61a4b2d689266804864c00a982c372f2f2
|
| Debian (arm64) | 0f354ea7e4421869f26d1b672f2de845280360f74656be2524bc943ae7fc7824
|
| RPM (x86_64) | f52d824785d9955b36d1d24d054a860bee757a71d3fa0b3718b8160720debeba
|
| RPM (aarch64) | 5ac02cd14f1f76b4e7986e44ee5b5546426aa115fdacc1ef2be09374acc1227e
|
Changes since last release
Issue
- #128:
[CliGovernor] memory pressure (critical)log spam on Linux plus silent renderer "eviction" forcing a claude.ai re-login. Root cause of the spam: Electron'sprocess.getSystemMemoryInfo().freeisMemFreeon Linux, which excludes reclaimable page cache. A healthy 32 GB box measured MemFree/MemTotal = 5.3% while MemAvailable/MemTotal = 61.8%, so the governor (warning <5%, critical <2%, 10s poll,M$r=.05/N$r=.02in v1.11847.5) fires constantly on perfectly healthy systems. The pressure events only log + send telemetry - they never touch the renderer. Separately, the main webview'srender-process-gonehandler early-returns with no log when the reason iskilled/clean-exitor an expected kill is pending - a kernel OOM SIGKILL maps tokilled, so the renderer death that precedes the re-login was invisible in main.log (the reporter's "no render-process-gone events" proved nothing).
New patches (2)
fix_cli_governor_memavailable.nim- rewritesgetFreeMemoryRatioto readMemAvailable/MemTotalfrom/proc/meminfo(clamped withMath.min(1, ...)), re-emitting the captured upstream expression verbatim as the fallback if the/procread throws.require("fs")is cached by Node's module loader, so the 10s poll costs one ~1.5 KB procfs read. Idempotency marker:/proc/meminfowithin 200 chars ofgetFreeMemoryRatio:. macOS is unaffected (native pressure events bypass the polling path). Upstream's own MCP timeout diagnostics already compensate withfree + fileBackedelsewhere - the governor just never got the fix.fix_renderer_gone_suppressed_log.nim- insertsD.info("Main webview render process gone (suppressed): %o",{reason,exitCode,expectedKills})inside the early-return branch of the main-webviewrender-process-gonehandler, before the counter decrement (expectedKills > 0= app-initiated kill via the unresponsive handler;0with reasonkilled= external kill, e.g. kernel OOM). All identifiers captured via[\w$]+groups; the trailing"Main webview render process gone: %o"literal pins the one correct site out of 8render-process-goneregistrations. Pure observability - suppression behavior (no reload) unchanged.
Tooling
scripts/validate-patches.sh- added anim-dirbranch (copy directory to a temp dir, run the binary on it) and a directory-aware existence check. Previouslyfix_ion_dist_linux.nimalways failed standalone validation with "target file not found" because the script-f-tested its directory target; suite is now 51/51.
Not addressed (still open in #128)
preferencesChangedMaxListeners warning - upstream claude.ai web-app bug (the shipped preload'sonPreferencesChangedcorrectly returns an unsubscribe closure; the remote web app re-subscribes without cleanup). Trivial magnitude (~KBs per page session); masking it would hide real regressions.- The re-login mechanism itself - the claude.ai view runs on persistent
session.defaultSessionand the recovery path is a plainwebContents.reload(), so the web session should survive; needs incident-time evidence from the reporter (asks posted on the issue).
Verification
- Patch count 48 -> 50; both new patches idempotent (second run exits 0 via marker detection);
node --checkpasses on the patched JS;./scripts/validate-patches.sh51/51 green; pure-JS text patches, identical on x86_64 and aarch64.
Launcher log rotation (#132)
Credit: boommasterxd (Yannick Schäfer) - triaged #132 (located the reported awk hang in
aaddrick/claude-desktop-debian, not this repo) and contributed the rotation fix (#133). Merged after the-2release - ships with the next release, not in the v1.11847.5-2 artifacts.
- Issue: #132: Reported that
_previous_launch_hit_gpu_fatalhangs the launcher on large log files via an O(n^2) awk scan of the wholelauncher.logon every startup. Investigation result: that function,setup_logging,build_electron_argsand the~/.cache/claude-desktop-debian/cache path do not exist anywhere in this repo - they belong to the separateaaddrick/claude-desktop-debianproject. This launcher writes to~/.cache/claude-desktop/launcher.logand only ever reads it viatail -10for--diagnostics, so the reported O(n^2) hang cannot occur here. The one applicable half of the report - unbounded log growth - did apply:log()appended without any size cap. - Fix:
scripts/claude-desktop-launcher.sh- rotatelauncher.logtolauncher.log.oldonce it exceeds 2 MiB, checked once per startup beforelog()is defined. Every step is guarded (statfailure ->0, numeric regex guard,mvfailure ignored) so the rotation can never itself prevent Claude from launching. - Post-merge fixup:
_diagnose's "Recent launcher log" section now reads across the rotated backup (cat launcher.log.old launcher.log 2>/dev/null | tail -10 || true) so the last 10 lines survive a rotation that just happened at startup. The|| trueis required under the launcher'sset -euo pipefail:catexits non-zero when one of the files is missing, which is the common state (no.oldexists before the first rotation) and would otherwise abort--diagnosemid-output.