Skip to content

v0.8.4

Choose a tag to compare

@github-actions github-actions released this 12 Oct 19:34
· 128 commits to main since this release
v0.8.4
498ae3d

Release Notes - Version 0.8.4

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.


Fixed

  • A heading word such as Options: is no longer a tool's description: mandible gcc, g++, cpp, ld, thin_check and more than 100 other tools show no description line where the help prints only a heading (a heading like Management Options stays the label of its flags).
  • pnpm and its subcommand pages now show the page's own description first and the Version 11.22.0 line after it, instead of opening with the version.
  • snap get now shows its description with the three $ snap get example blocks and their output, which were dropped.
  • mandible jarsigner shows -providerArg <arg> as its own flag, with configure argument for -addprovider and ... for -providerClass, instead of text inside those two flags' descriptions.
  • mandible cargo-generate-rpm --auto-req lists its values (auto, disabled, builtin, find-requires, /path/to/find-requires) as choices with their descriptions, from the Possible values: dash bullets.
  • mandible speedtest lists the formats printed in its Valid output formats: line (human-readable (default), csv, tsv, json, jsonl, json-pretty) as the values of -f, --format ((default) kept as printed) and the Machine readable formats ... line after it is part of its description.
  • A value placeholder keeps the text printed right after it: mandible pnpm install shows --filter <pattern>... and <pattern>^..., snap get shows --with=<param>=<constraint>, dpkg shows -L <package>....
  • mandible ethtool shows each operation's description and its setting rows (-s|--change lists [ speed %d ] [ duplex half|full ] ...), keeps the 15 operations after -Q (--cable-test, --set-pse, --monitor, ...), and no longer lists EEPROM, RSS, EEE, PHY, FEC and FUNC as operands; --groups offers eth-phy, eth-mac, eth-ctrl, rmon.
  • mandible ssh-keygen shows -h and -U as two flags, not -h with a value U; the same for the two-letter groups of iscsiadm, nfsidmap, preconv and ssh-agent: a glued two-letter group is two switches when the help writes every flag value after a space.
  • mandible linux-version shows compare with VERSION1 OP VERSION2 and sort with optional repeatable VERSION1 VERSION2: numbered upper-case operands of a command's own usage form are read when the same stem recurs with another number.
  • mandible linux-version lists compare, sort and list as commands, with --reverse under sort and --paths under list: usage forms that print the program as /usr/bin/linux-version are read like the bare name.
  • mandible linux-version, fragiso and git worktree no longer repeat their commands' operands and flags on the parent page when every usage form names a command.
  • mandible jfr lists print as a command with its own flags (--xml, --json, --stack-depth), not as the root usage whose flags sat on jfr itself.
  • mandible git log shows its second usage form as printed (git show [<options>] <object>...), not as log git show ....
  • mandible corepack disable and corepack enable show their --install-directory flag: the General commands heading now attests its rows, so their own help pages are read.
  • Prose after the usage line and a blank line is part of the description: mandible automake opens with Generate Makefile.in for configure from Makefile.am., jq and find show their intro paragraphs (Default path is the current directory; default expression is -print.).
  • mandible cd keeps the paragraph after its options (The default is to follow symbolic links ...) and shows Exit Status: as its own paragraph.
  • mandible jfr configure shows the option=value and event-setting=value rows and the Options for default.jfc: keys as description text, not as operands and flags, with the paragraph after them and the wizard and example blocks.
  • A heading word is never the description: mandible xdg-open reads xdg-open - opens a file or URL in the user's preferred application, not Synopsis (ping and tracepath no longer show Usage).
  • Probes run in a scratch directory under ~/.cache/mandible instead of /tmp, so a tool that searches upward for project files (pnpm start --help runs the nearest package.json) can no longer be handed a file another local user planted in /tmp.
  • An existing ~/.cache/mandible is tightened to mode 0700, and probes are refused when it is a symlink, not a directory, or owned by another user, so no other local user can plant files above a probe.
  • When ~/.cache/mandible cannot be created (for example an unwritable HOME), mandible <tool> exits with a one-line reason instead of opening an empty page.
  • A subcommand whose help answer is only the tool's own error is no longer shown as its page (mandible pnpm start, test and exec no longer print [ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND] No package.json ... was found); t still shows it.
  • A root help that says 'git help -a' ... list available subcommands is asked that listing, so mandible git gains every command it lists (remote, stash, worktree, bundle open their own pages) and none of the concept guides.
  • pnpm's and snap's root help point to pnpm help -a and snap help --all, so mandible pnpm gains 27 commands its short list omits (patch, licenses, runtime, self-update, ...) and mandible snap lists all 67 commands with their groups; mandible pnpm shows store and cache with their listed subcommands.
  • Usage forms that each open with a different verb name that command's subcommands, each with its own usage, flags and operands (mandible git bisect lists start, good, bad, run; git stash, remote, worktree, bundle, reflog, commit-graph likewise).
  • A usage flag written --term-(new|bad)=<term>, (-m | --message) <message> or --update-refs=(branches|head) is read as the flags and value it spells (the value keeps its printed (branches|head)), not as a fabricated --term- (new or a value ).
  • A subcommand whose help answer says the word is not a command (git citool where git-gui is not installed) is shown as unreadable, not as help listing the did-you-mean suggestion as a child.
  • Flags in usage synopses keep their own values on git's verb pages: git worktree add --lock and --reason, -b/-B <new-branch>, git remote set-head -a, --mirror=<fetch|push>, reflog expire --single-worktree, and git shortlog no longer gets git log's --pretty.
  • A flag whose spelling overruns its table's description column keeps its description (mandible git clone's --[no-]reject-shallow, git rm's --[no-]ignore-unmatch; capsh, clang, gzip, run-parts, tar).
  • A value spec nested several levels deep is kept as printed (mandible git diff's --stat[=<width>[,<name-width>[,<count>]]], strace --tips, lspci -s, fzf-tmux -p).
  • -NUM is one option, not -N with the value UM, when its description names NUM (mandible grep, git grep).
  • The ( and ) rows of git grep's option table are flags, and the flags after them leave the group named ).
  • A value written (+|-)x is shown whole (mandible git add's --chmod).
  • A punctuation short option beside its long one is one option (mandible nano's -%, --stateflags and -_, --minibar).
  • A value of two plain words keeps both (mandible jq's --arg name value, --slurpfile name file).
  • An option table whose rows are wrapped in brackets, [-keystore <url>] keystore location, shows every option with its value and description (mandible jarsigner, c++filt, krb5-config).
  • -verbose[:suboptions] is one option with an optional value, not -v (mandible jarsigner).
  • A table headed by a usage operand's name lists the values of the flag that names it, with each description (mandible krb5-config's --libs and its Libraries: table).
  • A list of values grouped by label under a heading that names a flag keeps every value, the label as each one's description (mandible speedtest's -u, which lost auto-binary-bits).
  • An llvm =<empty> choice is listed as a choice named <empty>, and each =value choice keeps its description (mandible llc-18's --profile-correlate, llvm-ar-18's --format).
  • A Possible values: list of * name: text bullets is the flag's choices with their descriptions (mandible batcat's --style and --nonprintable-notation).
  • A flag-led example line under a description's one can use: stays in that description instead of opening extra rows (mandible rg's --type-add, which lost the text after its examples).
  • A bare -NUM row is the numeric option even when its description does not repeat NUM (mandible git archive's -NUM, which read as -N with value UM).
  • The [<options>] after a flag in a usage line is the option-list word, not that flag's value (mandible git diff's --no-index).
  • A single usage form's bracketed operands are kept: mandible find shows path... and expression, uconv its file ..., tcpdump its expression, pod2man input and output.
  • An operator-precedence block (find's Operators (decreasing precedence ...)) is shown in the description instead of being dropped.
  • A shell builtin's help (cd: cd [-L|[-P [-e]]] [-@] [dir]) is read as usage, so mandible cd shows the dir operand and its description paragraphs.
  • A flag that opens a paren group takes its value inside it, so git commit no longer shows a token... operand beside pathspec....
  • Operands named in only one usage form, or in a brace group, are kept (mandible git rebase gains upstream, mandible jq gains jq filter, file and strings, mandible xdg-open gains file, llvm-ar gains relpos, count and files).