github patrickjaja/claude-desktop-bin v1.24012.9-7
Claude Desktop 1.24012.9 (patch release 7)

7 hours ago

Claude Desktop 1.24012.9 (patch release 7)

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-bin/install-pacman.sh | sudo bash
sudo pacman -Syu claude-desktop-bin

Arch Linux (manual package)

# x86_64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-bin/releases/download/v1.24012.9-7/claude-desktop-bin-1.24012.9-7-x86_64.pkg.tar.zst
# ARM64
sudo pacman -U https://github.com/patrickjaja/claude-desktop-bin/releases/download/v1.24012.9-7/claude-desktop-bin-1.24012.9-7-aarch64.pkg.tar.zst

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.24012.9-7_amd64.deb
# ARM64
sudo apt install ./claude-desktop-bin_1.24012.9-7_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.24012.9-7.x86_64.rpm
# ARM64
sudo dnf install ./claude-desktop-bin-1.24012.9-7.aarch64.rpm

NixOS / Nix

nix run github:patrickjaja/claude-desktop-bin

AppImage (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.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
Arch pacman (x86_64) aed1a038260a0db0eda629040aa3e6e003d1e5453c9836bf170cb3ddfa7ab7a4
Arch pacman (aarch64) f258cb813b5239e244c91424459088a8ace9fe7fada338c5ee7a9fc9de266407
Tarball (x86_64) 7855b604c066837434bd4baaac5762059c5bfec67f6f4ba54f9a4021e9441c5e
Tarball (aarch64) 94a7a68eda7454b465121b24cc9d834f1e507ffcbcf2c9966d39896c70e6edcd
AppImage (x86_64) 0d902cd5b6d0364e4e45050efe5f788be8a4f65b5175d5096263441031e0dc2b
AppImage (aarch64) af42db3ae5f5daa663c7ea9984be16c3d8066b343365d1d2ede83eb1a174ec19
Debian (amd64) d247cf3626d982967aa8e91601257b8e4c2cc4845a61f27b5f02b05d691815ce
Debian (arm64) ec30500d274f3b7bad88cc65a7f38a0a0c7ac714a40935d9716cb90770b59a89
RPM (x86_64) 6d1c310852a9f372e12c96176d6af385e8733f826059aa6017984fae4c8da5af
RPM (aarch64) 34e360b3f3dc105cc9282f270844d6ca07e1d0c28513f59171fe1160df00b442

Changes since last release

From CHANGELOG.md, 2026-07-29:

84 community color palettes now ship with the package

Alongside the seven curated built-in themes, the theme patch now bundles 84 palettes converted from the Noctalia community-palettes collection - Rose Pine, Gruvbox, Everforest, Kanagawa, Solarized, Tokyo Night, the Catppuccin accent variants and many more. Each one is a full dual light/dark token set, so "activeTheme": "rose-pine-moon" is all a config needs and Claude's own light/dark toggle keeps working. Theme resolution order is your own themes entries first, then the built-ins, then the community palettes, so a theme you author under the same slug replaces the bundled one instead of colliding with it.

The conversion is done by scripts/generate-community-themes.mjs, which maps each palette's Material-ish roles onto our CSS tokens, fixes border polarity (community palettes follow surface polarity; claude.ai needs the opposite), substitutes button-label colors that would be unreadable on their own accent, and renders one swatch card per palette. It is deterministic and takes the collection path as its argument, so refreshing after the upstream collection changes is a single command. The role-to-token mapping is documented in the script's header.

themes/PALETTES.md is the visual catalog: all 97 bundled palettes with their swatch cards and slugs, an index, and notes on the ones with deliberately unusual variants (the AMOLED palettes' pure-black backgrounds, the muted mid-tone light variants of Everforest and the Kanagawa pair).

Six gaming themes and a Gaming category

Six palettes drawn from games ship alongside the curated built-ins: PlayStation (PS1 console gray over charcoal blue-black, PlayStation-blue accent, status colors borrowed from the controller's button symbols), Game Boy (DMG shell gray with magenta buttons in light, pea-green LCD in dark), Final Fantasy (parchment cream over the classic menu blue with a crystal-gold accent), Zelda (forest green and gold), Warcraft (parchment gold and Alliance blue, with orc-green success) and Dragon Ball (sky and white over deep blue, bright orange accent). They resolve at built-in rank, so "activeTheme": "gameboy" is all a config needs, and they are authored in js/gaming_themes.json.

They are grouped by a new category field rather than by which registry they come from, so they get their own divider-separated Gaming section in both the Ctrl+Shift+T picker and Settings -> Extra -> Themes. Mario carries the same category, so it moves into that section too - seven cards in all. A theme of your own can join it with "category": "gaming".

Every bundled palette now has its own loading spinner

The spinner reshape used to be a built-in-only luxury. All 84 community palettes now carry one too, drawn from the palette's name or its colors: a stag for Everdeer, aurora ribbons for Nord Aurora, a great-wave curl across the Kanagawa family, one curled sleeping cat across every Catppuccin variant, an ensō brush circle for Zenbones, a crescent moon for Tokyo Night Moon. There are 53 distinct designs across the 84 slugs, because families share a shape on purpose.

The glyphs are curated in scripts/community-spinners.json and merged into the palettes by scripts/generate-community-themes.mjs, so regenerating after the upstream collection changes is still one command. The generator hard-fails rather than shipping a broken glyph: slug parity is checked in both directions, path data must tokenize as SVG, and any explicitly colored fill must clear 2.5:1 against both variants' backgrounds. The same spec contract is asserted while the patch compiles, for every bundled theme.

Theme switches now re-theme the loading glyph too

Switching theme changed the colors live but left the loading glyph on the old shape until the app was restarted, because reshaping it rewrote the star's SVG paths in place and the original geometry the matcher keys on was gone after the first pass.

The engine now takes custody of the original glyph: the first time it reshapes an element it stashes that element's untouched markup, keeps the first capture as a document-wide fallback for glyphs the page later clones, and tracks every element it owns. A theme switch re-renders all of them with the new spec and sweeps for any that appeared since; reverting to Claude default puts Claude's own star back. Its MutationObserver installs the spec in effect now rather than the one baked in at injection time, so glyphs rendered after a switch get the new shape as well.

Nothing about a theme switch needs a restart any more - colors, fonts, customCss and the spinner all follow the click, in every open window. Hand-editing claude-desktop-bin.jsonc still does, since that file is read at startup.

A "flip" spinner animation for two-frame sprites

Spinner specs accept a fourth animation, flip, next to pulse, spin and bounce. It renders two frames at once (paths and paths2) and hard-cuts between them at about two frames per second with no interpolation, the way a retro sprite animates: the Zelda hero takes a step, the Warcraft peon swings his pick. Six community glyphs use it as well, among them a blinking terminal cursor and a checker-diamond flicker.

paths2 is required exactly when the animation is flip and ignored otherwise, and that pairing is asserted at build time, so a half-authored sprite fails the build instead of shipping as a glyph that flickers against nothing.

Theme picker on Ctrl+Shift+T

Press Ctrl+Shift+T in any Claude Desktop window and a searchable gallery opens with every theme available to you - your own, the gaming palettes, the built-ins, and the community palettes, each in its own section - every card showing a dark and a light row of swatches. Click one and it applies immediately in every open window; no restart, no editing a file by hand. A "Claude default" entry at the top reverts to Claude's stock palette.

The choice is persisted to claude-desktop-bin.jsonc by a surgical text edit that replaces only the activeTheme value, so comments and every other key survive; if the file does not exist yet it is created from a short commented template. Colors, the chatFont override, customCss and the loading spinner all switch live.

The picker is a local window driven by a key handler in the main process, so it does not depend on anything in claude.ai's bundle.

An "Extra" page in Claude's own Settings dialog

Claude's Settings dialog now carries an Extra group with two panels:

  • Themes - the same registry as the picker, rendered as rows with color dots. Clicking one applies it live and saves it exactly as the picker does.
  • Features - the 134 catalogued GrowthBook feature flags as switches, so browsing and flipping a flag no longer means hand-editing a config file. Flags upstream already enables start switched on, and turning one off writes an explicit false. Flags that carry a value rather than a switch are read-only, and the one flag documented as breaking Cowork is not toggleable.

Flag changes are written to growthbookOverrides in claude-desktop-bin.json; the panel states in red that they need a restart (the features they gate are wired up at startup) and offers a Restart now button. Anything set by hand in claude-desktop-bin.jsonc is shown as owned by that file and left alone - the hand-edited value still wins per flag ID.

The group looks native because it is not drawn from scratch: its header and its two rows are clones of Claude's own, so font, size, indentation, the icon box and the selected pill all come from Claude's stylesheet, and the selected look is handed back to the row it was borrowed from when you navigate away. Only the word "Extra" and the two glyphs are ours.

Because the Settings dialog is claude.ai markup this package does not control, the injector anchors on semantics only and fails soft: if it cannot find the dialog it logs one line and changes nothing. The shape it is fitted to is recorded verbatim in baseline/SETTINGS_NAV_CAPTURE.md, and a sanitized DOM-shape line in claude-patches.log names the anchor to refit when claude.ai changes. Ctrl+Shift+T is entirely local and always available.

Fix: uncommenting a single flag line no longer invalidates the whole config

claude-desktop-bin.jsonc is auto-created as a template with every known flag commented out, one per line, each already ending in a comma - so uncommenting exactly one entry left a trailing comma before the closing brace, which is not valid JSON. The parser rejected the file silently, and with it every other setting in it, activeTheme included: the documented "uncomment an entry to activate it" workflow appeared to do nothing. All readers of the file now tolerate trailing commas.

Fix: chat header, "Quick answer" band and disclaimer strip now follow the theme

With a custom theme active, three chat regions kept Claude's stock background: the sticky conversation header, the "Quick answer" band above the composer, and the disclaimer strip below it. claude.ai's desktop-frame stylesheet redefines the background token on the container that wraps the whole chat view, and a CSS variable set directly on an element always beats one inherited from an ancestor - so those regions never saw the theme's value. The theme engine now re-asserts its background ramp at that container too (via collision-proof mirror variables), which also fixes the two regions that paint the token through gradients. A regression suite renders the affected elements against the real claude.ai CSS and asserts the computed colors in both modes.

Links

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

NewReleases is sending notifications on new releases.