Repository navigation
4.3.0 (October 13, 2026) #1770
tleonhardt
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Overview
This release primarily fixes a number of subtle bugs related to piping
cmd2command output to shell commands. It also removes theexperimentaltag from the@with_annotateddecorator feature.Details
@with_annotatedis no longer experimental. It was introduced as an experimental feature in4.0.0 and is now a fully supported way to define a command's arguments, alongside
@with_argparser. This covers the decorator and its supporting API incmd2.annotated,including
Argument,Option,Group, andArgumentBlock.Annotated Argument Processing.
less(
help -v | less) now runs that program as the terminal's foreground job, as a shell pipelinedoes. It had run in a separate session that never received the terminal, so Ctrl-Z and
fgdid not suspend and resume it together with cmd2. The program now owns the terminal as it
starts, so a pager can set its terminal modes, and Ctrl-C and Ctrl-Z reach the whole pipeline.
Pipes started from a worker thread, or whose output does not go to the terminal, such as one
nested in a command whose own output is piped, still run in their own session
shellcommand piped to an interactive program, such asshell git log | less, now joinsthe pipeline's job, so both processes receive Ctrl-C and Ctrl-Z
more(
help -v | more), a regression in 4.2.4. Pipes are written as UTF-8, but console programsdecode their input with the console's code page. While a pipe or the pager runs, cmd2 now sets
the console to UTF-8 (code page 65001, as
chcp 65001does) and restores its code pagesafterward, so console programs and UTF-8 tools such as
rgboth read the output correctlyhelp >) fails, later commands' output isno longer written to the temporary file that held it
or
$SHELLnames a program that cannot run, both ends of the pipe are now closed rather thanleft open
"command not found", is no longer lost when cmd2 captures the output, as in a pyscript
This discussion was created from the release 4.3.0 (October 13, 2026).
All reactions