Skip to content

input list --fuzzy treats ansi formatting characters as if they have visible length #18310

@neurodynamic

Description

@neurodynamic

Bug report form

  • I have done a basic search of the issue tracker to find any existing issues that are similar.
  • I have checked that my version is at least the latest stable release available via my installation method.

Describe the bug

I recently went from 0.108.0 to 0.113.0 and the functionality of input list --fuzzy has changed. It now cuts off and adds an ellipsis to lines that are too long, which is a nice improvement, but the way it evaluates length seems to be counting things like ansi white_bold as if they have real visible length and adding the ellipses before the line actually gets too long in those cases.

As such, a menu I was formatting nicely before can no longer be formatted in this way without making lines cut off in weird ways.

How to reproduce

This will render just fine:

[
"Some option that is as wide as the number of columns in the terminal"
"Some other option that is as wide as the number of columns in the terminal"
]
| input list --fuzzy

But this will get cut off by ellipses despite being the same length visually:

[
$"(ansi white_bold)Some option that is as wide as the number of columns in the terminal(ansi reset)"
$"(ansi white_bold)Some other option that is as wide as the number of columns in the terminal(ansi reset)"
]
| input list --fuzzy

Expected behavior

I would expect formatted options of the same visual length to be cut off only when they are actually visually taking up more space than the terminal can fit, with or without formatting.

Configuration

key value
version 0.113.0
major 0
minor 113
patch 0
branch
commit_hash
build_os macos-aarch64
build_target aarch64-apple-darwin
rust_version rustc 1.96.0 (ac68faa20 2026-05-25)
rust_channel 1.96.0-aarch64-apple-darwin
cargo_version cargo 1.96.0 (30a34c682 2026-05-25)
build_time 2026-05-29 13:14:37 -04:00
build_rust_channel release
allocator standard
features default, mcp, network, plugin, rustls-tls, sqlite, trash-support
installed_plugins polars 0.113.0
experimental_options example=false, reorder-cell-paths=true, pipefail=true, enforce-runtime-annotations=false, native-clip=false, cell-path-types=false

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:needs-triageAn issue that hasn't had any proper look

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions