X Tutup
Skip to content

v15.25.0

Choose a tag to compare

@leafo leafo released this 06 Feb 07:23
· 48 commits to master since this release

New Builds

Linux ARM64 (aarch64)

Butler now builds natively for Linux ARM64, and those builds are published to broth.

macOS ARM64 (Apple Silicon) + Universal Binary

Butler now builds natively for macOS ARM64. A universal binary (x86_64 + arm64 via lipo) is also produced and code-signed. The ox dependency was updated to support ARM architecture detection.

Note: we may stop generated universal builds in the future, testing it out to see if it's useful to anyone

Breaking Changes

Linux minimum glibc raised from 2.28 to 2.31

Linux binaries are now built on Debian Bullseye, raising the minimum required glibc from 2.28 to 2.31. Users on older Linux distributions (e.g. Debian Buster) may need to upgrade.

Build & CI/CD

New GitHub Actions Build & Release Workflow

We have migrating building and releasing binaries of butler to GitHub actions. The new workflow includes all new job pipelines for signing and notarizing builds. Builds are published to broth directly from GitHub actions.

Windows executables are now signed with Azure Trusted Signing.

CI Modernization

  • Go version: Upgraded from Go 1.14/1.23 to Go 1.24.0. All CI workflows now use go-version-file: 'go.mod' instead of hardcoding versions.

Helper Makefile

New Makefile with build, install, test, and clean targets for local development convenience.

Dependency Updates

Major dependency upgrades across the board. Many itchio dependencies were bumped to modern Go with enhancements and cleanups.

Dependency Old New Highlights
itchio/arkive 2020 2026-01-29 Proper error handling for password protected zips
itchio/boar 2024-12-12 2026-01-29 Support for libc7zip arm on linux and macOS
itchio/dash 2020 2026-01-28
itchio/go-itchio 2020-08-26 2025-12-29 Includes new OAuth login API methods
itchio/headway 2020 2025-12-29
itchio/httpkit 2020 2025-12-31
itchio/hush 2020 2026-01-23 Updated extensions for naked apps
itchio/ox 2020 2026-02-04 Ability to detect arm architecture from host machine
itchio/savior 2020 2026-01-28
BurntSushi/toml 0.3.1 1.6.0
mitchellh/mapstructure 1.3.2 1.5.0
golang.org/x/crypto 0.31.0 0.47.0
golang.org/x/sync 0.10.0 0.19.0
golang.org/x/sys 0.28.0 0.40.0
golang.org/x/text 0.21.0 0.33.0
golang.org/x/time 2020 0.14.0
klauspost/compress 1.10.9 1.18.3
stretchr/testify 1.6.1 1.11.1

Documentation

Migrated from gitbook to honkit for documentation building. Docs deployed from master into GitHub pages.

Expanded Installation Guide

The docs/installing.md was completely rewritten with:

  • Platform-specific step-by-step installation instructions (Windows, Linux, macOS)
  • Verification steps for each platform
  • Clarified broth URLs as permanent (vs expiring itch.io download links)
  • New appendix: "Using butler from the itch app" with paths for each platform and how to find the current version

New Troubleshooting Page

Added docs/troubleshooting.md covering common issues: PATH errors, incorrect directory paths, spaces in file paths, invalid target errors, authentication problems, project page requirements, and firewall/antivirus issues.

butlerd

OAuth Login with PKCE Support

New Profile.LoginWithOAuthCode butlerd endpoint that allows the itch.io desktop app to authenticate users via OAuth authorization code exchange with PKCE. This accepts an authorization code, PKCE code verifier, redirect URI, and client ID — and returns the user profile along with a website cookie. The OAuth client ID is no longer hardcoded; it is provided as a parameter by the caller.

Unlike the existing LoginWithPassword and LoginWithAPIKey endpoints, the OAuth result also returns a Cookie map, enabling the desktop app to synchronize website login state after authentication.

butlerd NPM Package Rename

The butlerd npm package has moved to https://www.npmjs.com/package/@itchio/butlerd

The generous support path changed from butlerd/lib/support to @itchio/butlerd/lib/support.

butlerd Spec Updates

  • Added Profile.LoginWithOAuthCode request to butlerd.json spec
  • Added metadata field (type { [key: string]: any }) to Candidate type in spec
X Tutup