Skip to content

v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Oct 01:42
· 105 commits to main since this release
v0.9.0
82032a8

Release Notes - Version 0.9.0

This release is about how mandible looks and how you move around in it. There is now a settings screen and a set of colour themes, search has been rebuilt, both panes can be sorted, long lines can wrap or scroll sideways, and help pages read more like the tool meant them to. Big help pages are also much faster.

Install

Homebrew (macOS or Linux)

brew install as-foss/mandible/mandible

Fedora / EPEL (COPR repository)

sudo dnf copr enable as-foss/mandible
sudo dnf install mandible

Nix

nix run github:AS-FOSS/mandible

Cargo

cargo binstall mandible
cargo install mandible

Debian and Ubuntu: the signed apt repository carries every released version for amd64 and arm64, with setup instructions.

Or download a binary below. Verify with the accompanying .sha256.


Settings and colour themes

Press ? and then Tab to open the new settings tab. Pick a setting with ↑/↓ and change it with ←/→. A change shows on screen straight away and is saved to ~/.config/mandible/config.toml. Only the line you changed is touched, so your own comments and other settings stay where they are.

Settings and themes

  • Seven built-in themes: default, light (for light terminals), high-contrast, gruvbox-style, nord-style, dracula-style and catppuccin-style.
  • Your own colours: choose custom and set each of the seven colours yourself. Step through the 256 terminal colours with ←/→, or press Enter and type a number or a colour name. Each row shows a sample of what that colour paints.
  • Other settings: open in the tool's own --help view, scroll long lines sideways, show long descriptions as a preview, use ASCII glyphs, and the starting sort order for flags and commands.
  • NO_COLOR and MANDIBLE_ASCII still win over the file. A setting they decide is shown dimmed, with the variable's name next to it.
  • A mistake in config.toml costs only that one line. Everything else still applies, and the footer names the line until you press a key.
  • mandible mandible now uses your theme's colours too.

Search, rebuilt

Search

  • Every word, in any order. no verify finds --no-verify, size finds --blocksize, and a dash is just a character, so --no-squash finds --[no-]squash.
  • A suggestion as you type. A dim hint shows where Enter will land. Tab takes it.
  • n and p step through the matching flags on the page, wrapping at the ends.
  • Matches are marked in both panes. Matching commands are bold, each one shows how many of its flags matched (3 found), and matching rows on the page get a bar in the margin with the matched letters underlined.
  • A better first jump. Enter goes to the best match: an exact name first, then names that start with what you typed. /rebase now lands on git rebase.
  • When nothing matches, the list says No matches for "…" and the cursor goes back to where it was.
  • Esc in the box cancels the search and returns you to the row you started from. / reopens the box with your last search.

Sort either pane

Press s to sort the focused pane by name. On a command's page it cycles through the tool's own order, A–Z within each section, and A–Z over the whole page. The commands list switches between the tool's order and A–Z. The pane title shows which order you are in.

Sorting

Wrap, or scroll sideways

Press w to switch line wrapping off and on in the view on screen. With wrapping off, each line stays on one row, ←/→ scroll sideways, ◀ and ▶ mark lines that continue off screen, and Esc goes back to the first column. Section headings keep their full width however far you scroll.

Wrapping and scrolling

Moving around

  • PgUp/PgDn move ten rows in the commands list and a screenful on the page. Home/End jump to the top or bottom. This works in the parsed and the raw view.
  • The ? pop-up fits its content, uses two columns on a wide terminal, and scrolls when the terminal is short.
  • ▲ and ▼ on the page border tell you there is more above or below.
  • Changing wrap or resizing the terminal keeps the same line at the top of the page.
  • Command keys work with Caps Lock on.
  • A terminal smaller than 30×10 shows a short message asking for more room, instead of a broken screen.

Pages that read better

Several spellings stay readable. A flag with more than one short or long name keeps the first pair on the first line and lists the others below it, after a dim or.

Flags with several spellings

Narrow terminals get a man-page like layout. When a description would get squeezed below 20 columns, the flag goes on its own line with its description indented underneath.

Narrow layout

USAGE is easier to scan. The command path is highlighted at the start of each usage line, and a form that wraps continues indented, so you can see where one form ends and the next begins. The selected row in the commands list is now a full-width bar.

USAGE and the selected row

Examples get their own section. A tool's example lines are collected into an EXAMPLES section at the end of the page, printed exactly as written (tar, jq, bpftrace, gh pr list and more).

EXAMPLES section

Long descriptions don't push the flags away. A description that would fill more than half the page shows as a short preview at the top, with the full text as the last section.

Clear notices. Messages from mandible itself, as opposed to the tool's own help text, are short and drawn in the warning colour when something went wrong. For example, when mandible will not run a name it could not confirm is a real command:

Notices

  • A page with nothing beyond its summary says so and tells you to press t to see what the command printed.
  • A command whose help is still being read says Reading this command's help… instead of showing a blank page.
  • A description that only repeats the summary line, as on most docker commands, is no longer shown twice.
  • Summaries in the commands list show only when they have room. A long name hides its own summary instead of cutting it to a fragment.

Faster on big help pages

Search on ffplay

  • Searching a page with thousands of flags, like mandible ffplay, used to take about a second per key. It now takes under a tenth of a second.
  • Pages with thousands of flags scroll without lag, and an idle screen no longer redraws itself ten times a second.
  • Reloading with r or opening the raw view with t no longer freezes the screen while a slow tool answers.
  • The command under the cursor is read first, ahead of the background walk.

More reliable reading

  • Each command gets 30 seconds to print its help, up from 10. If it takes longer, the page says so and r tries again with two minutes. --doctor and --report take --no-timeout to wait as long as needed.
  • A slow command shows the same page on every launch. git filter-branch used to show different pages on different runs.
  • Quitting mandible while it is reading a tool's help no longer leaves that tool running in the background.
  • r reloads what you are looking at: a command and its subcommands, or the whole tool from its root page.
  • A row opened before the background walk reached it no longer stays ⋯ loading for good.

Parser fixes

  • krb5-config lists its library names under the LIBRARIES operand instead of under --libs.
  • A usage line that names another program, like bpftrace [options] filename under tcpretrans.bt, is shown as printed.
  • A value written --log-file=[PATH] is read as an optional value PATH.
  • Long value names and group headings wrap inside a narrow page instead of running past the border.

Changes to know about

  • The raw view (t) now folds long lines to the pane by default. Set horizontal_scroll = true in config.toml to get sideways scrolling back. That one setting now covers both views.
  • The ? pop-up closes with Esc or ?.

The full list of changes is in the CHANGELOG.