Claude Desktop 1.24012.9 (patch release 11)
Claude Desktop 1.24012.9 (patch release 11)
This release provides Claude Desktop version 1.24012.9 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.24012.9-11/claude-desktop-extra-1.24012.9-11-x86_64.pkg.tar.zst
# ARM64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-extra/releases/download/v1.24012.9-11/claude-desktop-extra-1.24012.9-11-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.24012.9-11_amd64.deb
# ARM64
sudo apt install ./claude-desktop-extra_1.24012.9-11_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.24012.9-11.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-extra-1.24012.9-11.aarch64.rpmNixOS / Nix
nix run github:patrickjaja/claude-desktop-extraAppImage (Any Distro)
# x86_64
chmod +x Claude_Desktop-1.24012.9-x86_64.AppImage
./Claude_Desktop-1.24012.9-x86_64.AppImage
# ARM64
chmod +x Claude_Desktop-1.24012.9-aarch64.AppImage
./Claude_Desktop-1.24012.9-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) | ad2c36f3fb2735b97e55e428519651a098f9c2b5449438f176fefe42fd348796 |
| Arch pacman (aarch64) | e50f0b530ffd5aeb8c56c8799fb305de031d68e2873be2f2503fa3f0c1cb4116 |
| Tarball (x86_64) | 254e1faa3d55ca68958e5747169d45c1c3e7743ba899c5b5f8f8839b52e7d9d0 |
| Tarball (aarch64) | 74e5d085b850699c03eea4da0b04ca9b6549f07ef7d17d71d1a3abd93d40981e |
| AppImage (x86_64) | a8c58af50c70e2ec3e299c3c9658a799169a84fb49c47e8e46de899bde1bb184 |
| AppImage (aarch64) | 1c7adaa7d500ae18055b14159e588fd2a7eb2c862b0a67772a1482f2918f7919 |
| Debian (amd64) | d88141f7d80d9ca3ab8767885f8c497fd739b2b0df333ae61f991bf1d072d600 |
| Debian (arm64) | eabc5410a8239ab3347ab42ca230f3f8dbbf8019e6d0707e09ae8a0024710519 |
| RPM (x86_64) | 3b1dc6591c23bf50cbe83741d16c5c89ba7e2c52e6a5593af246e8e857d6fae9 |
| RPM (aarch64) | c2840347a9101cbec09491f73f1222a5ae2c40babfae813f5b412df7509b5638 |
Changes since last release
From CHANGELOG.md, 2026-07-30:
The project is now claude-desktop-extra
The packages are renamed from claude-desktop-bin to claude-desktop-extra. The name says what the project does: the official Claude Desktop Linux build covers Debian-based distros only, and this project fills the gaps - Arch, Fedora, RHEL, NixOS and AppImage packaging - plus the extra features on top (Computer Use backends, custom themes, multi-profile, Quick Entry, and the growing Extra settings hub).
Upgrades are automatic on every distro:
- Arch: the new package carries
replaces=claude-desktop-bin, sopacman -Syuswaps it in. The pacman repo section is now[claude-desktop-extra]; the old[claude-desktop-bin]section keeps working for the transition (the repo publishes both database names), and the package prints a one-line note if your pacman.conf still uses the old one. The install dir moves to/usr/lib/claude-desktop, the same path deb and rpm always used. - Debian/Ubuntu: a transitional
claude-desktop-binpackage depends on the new name, soapt upgrademigrates in place. - Fedora/RHEL: the rpm carries
Obsoletes: claude-desktop-bin, sodnf upgrademigrates in place. - NixOS: the flake gains a
claude-desktop-extraattribute; the existingclaude-desktopanddefaultattributes keep working. - Config:
~/.config/Claude/claude-desktop-extra.jsoncis the config file now. On first start the app copies an existingclaude-desktop-bin.jsonc/.jsonover automatically - themes and flag overrides survive, and the old files stay in place as backups.
Version numbers keep their {upstream}-{pkgrel} format. The /deploy skill now documents the rule (new upstream version resets pkgrel to 1; any re-release at the same upstream bumps it) and decides force_rebuild itself from what actually changed since the last release.
The GitHub repository moved - and a compatibility mirror keeps old installs working
The repository is now github.com/patrickjaja/claude-desktop-extra; every documented URL follows it. The old claude-desktop-bin repository stays in place as a compatibility mirror for the transition: its Pages keep serving the APT and DNF repositories at the pre-rename URLs, its releases mirror the new repository's assets (so pre-rename pacman sections and AppImage self-updates keep resolving), and its flake re-exports the new one (so github:patrickjaja/claude-desktop-bin inputs keep evaluating). Upgrading migrates the APT/DNF repo configuration to the new URLs automatically; pacman users get the new stanza printed once. The mirror is fed by CI on every release and will be retired after the transition window.
claude-desktop-extra is on the AUR
CI publishes the release PKGBUILD to the claude-desktop-extra AUR package on every release, so yay -S claude-desktop-extra works alongside the signed pacman repo (which remains the recommended path).
The Code and Cowork transcript follows a running response again
Watching Claude work meant grabbing the mouse. Partway through a response the transcript would stop following the output and simply stay where it was, and nothing brought it back except scrolling down by hand. In the floating side chat it was worse - that viewport is a few hundred pixels tall, so once it fell behind, the part you wanted to read was always off-screen.
The cause is how narrow claude.ai's own test is. Its transcript scroller decides whether to keep itself at the bottom by watching a 1px sentinel element with an IntersectionObserver, and it sets overflow-anchor: none, so the browser's own scroll anchoring does not step in either. Being at the bottom therefore means being at it exactly. Measured in a live session: park the transcript at the bottom, move scrollTop up by 3 pixels, and it never follows again - content grew from 1280 to 3080 pixels while the scroll position stayed frozen at 641, stranding the view 1803 pixels behind the output. A 3px drift is not an edge case during streaming; sub-pixel layout, scrollbar-gutter: stable both-edges, a font finishing loading and [contain:strict] reflow all produce one.
fix_epitaxy_autoscroll.nim attaches our own stick-to-bottom to the transcript scrollers in both surfaces. It treats a band of a few lines as "at the bottom" rather than a single pixel, re-asserts the position on every content resize and mutation, and gives up following the moment you scroll up on purpose - wheel, touch and PageUp/Home/↑ unpin synchronously, so a message arriving in the same frame as your gesture cannot yank you back down. Scroll back to the bottom and it resumes on its own.
This markup belongs to the remote claude.ai SPA rather than to the bundle we patch, so a claude.ai deploy can rename the anchors it keys on. It fails soft when that happens: the sweep finds nothing and the view behaves exactly as it does today.
Contributed by @Felitendo (#209) - thanks!
The pulsing Cowork glow can be held still, for laptops and weak GPUs
The glow behind the Cowork hero never sits still. Its element carries .cowork-hero-glow, and claude.ai gives that class a single declaration - animation: 3.2s ease-in-out infinite cowork-hero-glow-pulse, whose keyframes swing opacity between 55% and 100%.
infinite is the part that matters on a laptop. The animation never ends, so for as long as a Cowork view is open the compositor is handed work every frame and the display pipeline never gets to idle - battery spent on decoration. An opacity animation is cheap while it is GPU-composited, but this is Linux, and our own launcher falls back to --disable-gpu-compositing on software/llvmpipe setups and to --disable-gpu outright when the GPU is blocklisted. In those configurations the glow is redrawn on the CPU for every one of those frames. Upstream's only escape hatch is prefers-reduced-motion: reduce, an OS-wide switch that flattens every other animation in the app along with it.
The Features panel under Settings -> Extra now leads with a Motion switch that holds the glow still. The interesting part is what "still" has to mean: that class carries nothing but the animation, because the gradient and blur come from utilities on the same element. Setting animation: none on its own would therefore leave the glow parked at its own opacity - brighter than the pulse's average, not calmer. So the switch pins both, holding it at a fixed opacity that defaults to 0.55, the dim end of upstream's own range.
No frame-time or power figure is claimed for this: the reasoning is the mechanism above, not a benchmark.
It is applied with webContents.insertCSS and removed again with removeInsertedCSS, so flipping it takes effect immediately in every open window and needs no restart. The choice is saved as coworkGlow in claude-desktop-extra.json; coworkGlowOpacity sets the fixed opacity if 0.55 is not to your taste. Setting coworkGlow by hand in the .jsonc still wins the startup merge, and the switch then shows itself as locked rather than silently disagreeing with the file.
The same stylesheet also defines an animate-[conway-pulse-glow_2s_ease-in-out_infinite] utility that looks related, but @keyframes conway-pulse-glow is not defined anywhere in the shipped CSS, so it animates nothing and is deliberately left alone.
As with anything keyed to remote claude.ai markup, a claude.ai deploy can rename the selector. It fails soft: the CSS matches nothing and the glow keeps pulsing exactly as it does today.
Contributed by @Felitendo (#210) - thanks!