- Add
--recordtoclick-extra screenshot, running the command under a pseudo-terminal and writing an animated SVG of every screen it draws, paced by--rows,--hold,--blankand--speed, and backed by the newrecord_and_render(). - Draw the invocation above a capture as a shell prompt;
--promptoverrides or hides it, and--closing-promptdraws the prompt the shell returns to once the command exits. - Draw a terminal cursor on a capture with
--cursorand--blink, orrender_svg(cursor=…), blinking or steady, in the--presetterminal's own shape. - Open a recorded animation by typing its command line out, with
--typing,--submitand the newtype_line(). - Add
:screenshot-cursor:,:screenshot-blink:,:screenshot-prompt:,:screenshot-typing:,:screenshot-submit:and:screenshot-closing-prompt:to theclick:rundirective. - Animated captures now take
hold="auto"(and:screenshot-hold: auto), pausing the loop on the final screen for as long as its line count asks; a:screenshot-record:block defaults to it. --validate-confignow accepts every location--configaccepts: a folder, a glob pattern, or anhttp/httpsURL, on top of a file path.- Read
*.jwccconfiguration files with theJSON5parser, which already accepts the comments and trailing commas JWCC adds to JSON. - Group the default options into
Configuration,Output,LoggingandIntrospectionsections, drawn after a command's own options in every render. - Add
ExtraOptionGroup, an option group drawn after the ones Click Extra injects, ordered among them by itspriority. - Align the columns of every option group by default, with
align_option_groupsnow set toTrue. - Render the
--configand--validate-configvalues as aLOCATIONmetavar, replacingCONFIG_PATHandFILE. - Show the
--configdefault as the folder it searches, instead of the glob of every format the install enables. Passshow_file_patterns=Trueto keep advertising them. - Render the
--table-formatvalue as aFORMATmetavar, replacing the list of its fifty accepted values on the help screen. - Add a
choiceskey to each option of the--help-format jsonexport, and list the accepted values under an option whose metavar hides them in themanandmarkdownrenders. - Match a configuration key against a parameter name whatever its case, so
Foo-BarandFOO_BARboth reach thefoo_barparameter. Addscanonical_param_name(). - Report an unmatched argfile declaration under the name Click would derive from it, so
--Unknown-Optionis namedunknown_option. - Disable the
SQLITEconfiguration format on a Python whosesqlite3bindings are missing, like FreeBSD's, instead of breaking every CLI at import time. - Fix
record_commandmangling a multi-byte glyph split across two pty reads into a replacement character. - Fix a drawn prompt dropping the quotes around an argument or environment value holding a space, so a captured command line pastes back as the command it pictures.
- Fix a capture inheriting
TERM_PROGRAMfrom the terminal it is taken from, which drew an emoji-bearing table wider on one machine than another. - Fix recorded screens dropping every line the command ended with
\r\n, the form a pseudo-terminal substitutes for each newline. - Fix a printed CLI trace raising on a captured character the output encoding refuses, which failed the run instead of the command under test.
- Fix a failing invocation leaving
--no-colorpinned process-wide, which stripped color from every later command run in the same process. - Stop
{env_info}resolving the host's name, which stalled every--verbosity DEBUGrun for as long as the machine's reverse DNS took to answer. - Fix an argument declared with a plain
click.argument(help=...)drawing a blankPositional argumentsentry on the help screen, while every other render carried its text. - Fix a deprecated command showing Cloup's
(Deprecated)prefix and dropping the reason string: it now carries Click's own(DEPRECATED: reason)marker in every render. - Fix a
MulticallGroupand aVersionOptionfailing to copy on Python 3.10 with Click 8.4, which raisedValueError: <object object> is not a valid Sentinel. - Paint the
(DEPRECATED)label with thedeprecatedtheme slot in--treeand the--paramshelp column, as the help screen already does. - Fix
--help-format carapacedescribing an option that computes its own help, like-vand-q, with an empty string. - List a subcommand's aliases in the man page, the Markdown document and the JSON export, which named only its primary spelling. Each JSON entry gains an
aliasesarray. - Carry an argument's help into the completion spec, under the
documentationblock Carapace reserves for operands. - Mark a hidden option with Carapace's
&modifier and a required one with!, which the spec carried as indistinguishable from listed and optional ones. - Paint each value of a choice operand in
--treewith thechoicetheme slot, the way the help screen paints it. - Draw a required
{green|ripe}choice metavar on the help screen the way the optional[green|ripe]form is already drawn. - Reorganize the documentation sidebar into eight topical sections, grouping the documentation tooling together and splitting
DevelopmentintoContributing,API referenceandProject. - Split the configuration documentation into five pages, and move the
python:*andmatrixSphinx directives to a page of their own. - Fix the dead API documentation links to the capture, theme, Carapace and
--help-formatpages. - Fix the documentation cross-references that did not jump to their section when a page is read on GitHub.
- Repoint the install page at GitHub's current artifact attestations guide.
- Document how to search a platformdirs folder layout, by passing a computed pattern to
--config's default. - Lead the
wrapdocumentation with the--paramsintrospection example, its terminal capture and theuvxone-liner that produces it. - Pin
--no-prefixon thegit diffscreenshot, so the picture no longer depends on thediff.noprefixsetting of whoever builds the documentation.
Full changelog: v9.0.0...v9.1.0