Skip to content

Commit aca7d06

Browse files
committed
Updated CHANGELOG.md in preparation for release
Also: - Updated README.md with info on a couple recent projects using cmd2
1 parent e0629a5 commit aca7d06

2 files changed

Lines changed: 38 additions & 32 deletions

File tree

CHANGELOG.md

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
1-
## 4.1.0 (TBD)
1+
## 4.1.0 (July 7, 2026)
22

3+
- Breaking Changes
4+
- Renamed the `bottom_toolbar` argument in `Cmd.__init__()` to `enable_bottom_toolbar`. It is
5+
also now strictly an `__init__` parameter and not an instance attribute.
6+
- `complete_in_thread` is now strictly an `__init__` parameter and not an instance attribute of
7+
`Cmd`.
8+
- `get_rprompt()` is now only called if the `enable_rprompt` argument in `Cmd.__init__()` is set
9+
to `True`.
10+
- Bug Fixes
11+
- Fixed type hinting so that methods decorated with `with_annotated` no longer trigger spurious
12+
mypy errors and preserve their original signature.
13+
- Fixed cmd2 bypassing NO_COLOR and allow_style when setting prompt-toolkit's color depth.
314
- Enhancements
415
- New `cmd2.Cmd` parameters
516
- **complete_in_thread**: (boolean) if `True`, then completion will run in a separate
@@ -8,12 +19,13 @@
819
- **refresh_interval**: (float) How often, in seconds, to automatically refresh the UI.
920
Defaults to 0.0. This is used for bottom toolbars and right prompts which have dynamic
1021
content needing to be refreshed at regular intervals and not just when a key is pressed.
11-
12-
- Bug Fixes
13-
- Fixed type hinting so that methods decorated with `with_annotated` no longer trigger spurious
14-
mypy errors and preserve their original signature.
15-
- Fixed cmd2 bypassing NO_COLOR and allow_style when setting prompt-toolkit's color depth.
16-
22+
- Improved
23+
[getting_started.py](https://github.com/python-cmd2/cmd2/blob/main/examples/getting_started.py)
24+
example
25+
- Shows how to properly and safely use a background thread to update the bottom toolbar with
26+
dynamic content
27+
- Demonstrates how to use the `@with_argparser` and `@with_argument_block` decorators for
28+
parsing command arguments
1729
- Experimental features
1830
- `@with_annotated` now supports `frozenset[T]` collection parameters, alongside the existing
1931
`list[T]`, `set[T]`, and `tuple[T, ...]` collection types.
@@ -57,14 +69,6 @@
5769
- A command can share an argument block with its subcommands via `cmd2_base_args` /
5870
`cmd2_parent_args` parameters, passing parent-level options down without redeclaring them.
5971

60-
- Breaking Changes
61-
- Renamed the `bottom_toolbar` argument in `Cmd.__init__()` to `enable_bottom_toolbar`. It is
62-
also now strictly an `__init__` parameter and not an instance attribute.
63-
- `complete_in_thread` is now strictly an `__init__` parameter and not an instance attribute of
64-
`Cmd`.
65-
- `get_rprompt()` is now only called if the `enable_rprompt` argument in `Cmd.__init__()` is set
66-
to `True`.
67-
6872
## 4.0.0 (June 5, 2026)
6973

7074
### Summary

README.md

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -154,23 +154,25 @@ reproduce the bug. At a minimum, please state the following:
154154

155155
## Projects using cmd2
156156

157-
| Application Name | Description | Organization or Author |
158-
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
159-
| [CephFS Shell](https://github.com/ceph/ceph) | The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store | [ceph](https://ceph.com/) |
160-
| [garak](https://github.com/NVIDIA/garak) | LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want | [NVIDIA](https://github.com/NVIDIA) |
161-
| [medusa](https://github.com/Ch0pin/medusa) | Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications | [Ch0pin](https://github.com/Ch0pin) |
162-
| [InternalBlue](https://github.com/seemoo-lab/internalblue) | Bluetooth experimentation framework for Broadcom and Cypress chips | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
163-
| [SCCMHunter](https://github.com/garrettfoster13/sccmhunter) | A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain | [Garret Foster](https://github.com/garrettfoster13) |
164-
| [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | [unipacker](https://github.com/unipacker) |
165-
| [Frankenstein](https://github.com/seemoo-lab/frankenstein) | Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
166-
| [Poseidon](https://github.com/faucetsdn/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | [Faucet SDN](https://github.com/faucetsdn) |
167-
| [DFTimewolf](https://github.com/log2timeline/dftimewolf) | A framework for orchestrating forensic collection, processing and data export | [log2timeline](https://github.com/log2timeline) |
168-
| [GAP SDK](https://github.com/GreenWaves-Technologies/gap_sdk) | SDK for Greenwaves Technologies' GAP8 IoT Application Processor | [GreenWaves Technologies](https://github.com/GreenWaves-Technologies) |
169-
| [REW Sploit](https://github.com/REW-sploit/REW-sploit) | Emulate and Dissect Metasploit Framework (MSF) and other attacks | [REW-sploit](https://github.com/REW-sploit) |
170-
| [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | [tomcatmanager](https://github.com/tomcatmanager) |
171-
| [Falcon Toolkit](https://github.com/CrowdStrike/Falcon-Toolkit) | Unleash the power of the CrowdStrike Falcon Platform at the CLI | [CrowdStrike](https://github.com/CrowdStrike) |
172-
| [EXPLIoT](https://gitlab.com/expliot_framework/expliot) | Internet of Things Security Testing and Exploitation framework | [expliot_framework](https://gitlab.com/expliot_framework/) |
173-
| [Pobshell](https://github.com/pdalloz/pobshell) | A Bash‑like shell for live Python objects: `cd`, `ls`, `cat`, `find` and _CLI piping_ for object code, str values & more | [Peter Dalloz](https://www.linkedin.com/in/pdalloz) |
157+
| Application Name | Description | Organization or Author |
158+
| --------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
159+
| [CephFS Shell](https://github.com/ceph/ceph) | The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store | [ceph](https://ceph.com/) |
160+
| [garak](https://github.com/NVIDIA/garak) | LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want | [NVIDIA](https://github.com/NVIDIA) |
161+
| [Argus](https://github.com/jasonxtn/argus) | The Ultimate Information Gathering Toolkit | [JASON13](https://github.com/jasonxtn) |
162+
| [medusa](https://github.com/Ch0pin/medusa) | Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications | [Ch0pin](https://github.com/Ch0pin) |
163+
| [InternalBlue](https://github.com/seemoo-lab/internalblue) | Bluetooth experimentation framework for Broadcom and Cypress chips | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
164+
| [SCCMHunter](https://github.com/garrettfoster13/sccmhunter) | A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain | [Garret Foster](https://github.com/garrettfoster13) |
165+
| [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | [unipacker](https://github.com/unipacker) |
166+
| [Frankenstein](https://github.com/seemoo-lab/frankenstein) | Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
167+
| [Poseidon](https://github.com/faucetsdn/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | [Faucet SDN](https://github.com/faucetsdn) |
168+
| [DFTimewolf](https://github.com/log2timeline/dftimewolf) | A framework for orchestrating forensic collection, processing and data export | [log2timeline](https://github.com/log2timeline) |
169+
| [LazyOwn](https://github.com/grisuno/LazyOwn) | The first RedTeam/APT Framework with an AI-powered C&C, featuring rootkits to conceal campaigns, undetectable malleable implants | [Grisuno](https://github.com/grisuno) |
170+
| [GAP SDK](https://github.com/GreenWaves-Technologies/gap_sdk) | SDK for Greenwaves Technologies' GAP8 IoT Application Processor | [GreenWaves Technologies](https://github.com/GreenWaves-Technologies) |
171+
| [REW Sploit](https://github.com/REW-sploit/REW-sploit) | Emulate and Dissect Metasploit Framework (MSF) and other attacks | [REW-sploit](https://github.com/REW-sploit) |
172+
| [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | [tomcatmanager](https://github.com/tomcatmanager) |
173+
| [Falcon Toolkit](https://github.com/CrowdStrike/Falcon-Toolkit) | Unleash the power of the CrowdStrike Falcon Platform at the CLI | [CrowdStrike](https://github.com/CrowdStrike) |
174+
| [EXPLIoT](https://gitlab.com/expliot_framework/expliot) | Internet of Things Security Testing and Exploitation framework | [expliot_framework](https://gitlab.com/expliot_framework/) |
175+
| [Pobshell](https://github.com/pdalloz/pobshell) | A Bash‑like shell for live Python objects: `cd`, `ls`, `cat`, `find` and _CLI piping_ for object code, str values & more | [Peter Dalloz](https://www.linkedin.com/in/pdalloz) |
174176

175177
Possibly defunct but still good examples
176178

0 commit comments

Comments
 (0)