• v0.3.1 2a3030b237

    v0.3.1
    All checks were successful
    fuzz / cargo fuzz nightly long-run (push) Has been skipped
    darwin / detect relevant changes (push) Successful in 11s
    darwin / darwin docs-only no-op (push) Has been skipped
    windows / detect relevant changes (push) Successful in 12s
    windows / windows docs-only no-op (push) Has been skipped
    fuzz / cargo fuzz smoke (per target) (push) Successful in 1m11s
    pr / nix flake check (push) Successful in 11s
    darwin / build felis (aarch64-darwin) (push) Successful in 1m39s
    pr / cargo build / clippy / test / deny (push) Successful in 6m23s
    pr / wire schema is compatible with the base (push) Successful in 5s
    windows / cargo nextest (Windows) (push) Successful in 7m45s
    pr / frontend smoke (x86_64-linux) (push) Successful in 4m41s
    windows / cargo clippy (Windows cross) (push) Successful in 33s
    release / the tag names this exact revision (push) Successful in 1m53s
    windows / frontend smoke (Windows) (push) Successful in 7m6s
    release / package felis (aarch64-darwin) (push) Successful in 1m5s
    release / cargo nextest (Windows) (push) Successful in 2m53s
    release / nix flake check (push) Successful in 9s
    release / frontend smoke (Windows) (push) Successful in 2m43s
    release / cargo build / clippy / test / deny (push) Successful in 6m36s
    release / wire schema is compatible with the newest release (push) Successful in 12s
    release / frontend smoke (x86_64-linux) (push) Successful in 11s
    release / package felis (x86_64-linux) (push) Successful in 41s
    release / publish the release page (push) Successful in 22s
    Stable

    natsukium released this 2026-10-24 01:02:25 +09:00 | 13 commits to main since this release

    Signed by natsukium
    SSH key fingerprint: SHA256:ByU5VseUJyH2UYFs65yNYhqJHhqJzP8BNBlvG0a6WOs

    felis v0.3.1, built from 2a3030b237947497708b962ba6be8c2adade4951.

    Downloads

    • Linux (x86_64): felis-x86_64-linux.tar.gz. Unpack it anywhere and run bin/felis.
    • macOS (Apple silicon): felis-aarch64-darwin.tar.gz. Before the first run, clear the quarantine flag: xattr -dr com.apple.quarantine <directory>. Then run bin/felis or open felis.app.
    • Windows (x86_64): felis-x86_64-pc-windows-msvc.zip. Unpack its three executables into one directory on your PATH and run felis.exe.
    • Nix: nix run github:felis-terminal/felis/v0.3.1. The flake offers prebuilt binaries from https://nix-cache.natsukium.com.
    • Homebrew (macOS Apple silicon, Linux x86_64): brew install felis-terminal/tap/felis.

    Step-by-step instructions are in install.md.

    These three platforms are supported. ARM64 Linux (aarch64-linux) builds from source through the flake but is not supported.

    felis.proto and felis-config.schema.json are the IPC wire schema and the config schema of this build, for tools that talk to felis or validate its config.

    Changes

    macOS Option types what the layout puts behind it, low-contrast text can be raised to a readable ratio, ssh brings the
    terminfo entry along, and a pasted control byte no longer runs a command unasked.

    Added

    • Config: theme.minimum_contrast raises text whose color is too close to its background to a WCAG 2 contrast
      ratio, keeping its hue. The default of 1 leaves colors as programs set them.
    • Shell integration: share/felis/shell-integration/ssh.bash, ssh.zsh and ssh.fish define an ssh function
      that installs the xterm-felis terminfo entry on the remote host before each interactive login, and logs in with
      TERM=xterm-256color after a warning where it cannot. The home-manager module sources it with
      programs.felis.enableSshIntegration.
    • Config: window.macos_option_as_alt (default false) makes macOS Option act as Alt for every key, so Option+B
      sends ESC b, at the cost of the characters the layout puts behind Option.
    • Keymap: background = true on a run binding spawns the command without a transient session, so the window stays
      usable while it runs. The command still sees FELIS_ORIGIN_SESSION_ID, FELIS_HOST and FELIS_CWD and starts in the
      session's directory. A chord can now open another window, or a second window on the same session, without open -n or
      another launcher that returns at once.

    Fixed

    • A paste into a program that has not enabled bracketed paste now asks for confirmation when it contains any C0 control
      character other than tab, such as ^O, ^C or ESC, not only when it contains a line break. Those bytes act as
      typed keys, and some run the shell's command line without a newline.
    • On macOS, a character typed with Option reaches the program as that character. Before, one that came out as ASCII
      arrived with Alt still set: German Option+L sent ESC @ instead of @, Option+8 ESC {, and under the Kitty
      keyboard protocol Option+L reported Alt+@. Option+Space now types its composed character (U+00A0 on the US layout)
      instead of Alt+Space, and the release of a key whose press went into a dead-key composition no longer reaches the
      program on its own.
    • A program that follows the OS light/dark preference, such as Neovim, no longer switches to its light theme while its
      session has no window attached, for example behind a session picker. A session without a window keeps answering color
      queries with the colors and preference it last answered with.
    • A keymap command no longer sees FELIS_HOST, FELIS_CWD or another origin variable left over from an earlier chord.
      Before, a window launched from a run command passed that command's values on to its own chords and new sessions, so
      a local window opened from a --host window kept reporting the remote host.
    Downloads