The markdown parsing is broken/disabled for release notes. Sorry about that, I'm chasing the source of a crash that's been bringing this website down for the last couple of days.
### Enhancements
- Usage/help output for commands which contain flags will now contain the short flag, for example, `-v, --verbose`.
[#71](https://github.com/kylef/Commander/issues/71)
### Bug Fixes
- Fixed ordering of flags in the "Unknown Arguments" help output of a command. Flags have previously been stored in an un orderered set and thus upon printing them back out their order was not persisted and a flag part such as `-user` can be printed as `-usre`.
[#78](https://github.com/kylef/Commander/issues/78)
### Breaking
- Support for Swift < 4.2 has been removed.
### Enhancements
- Added syntax for using array as a type with `Argument` instead of using `VariadicArgument`:
```swift
command(Argument<[String]>("names")) { names in }
```
- Added support for optional arguments and options, for example:
```swift
command(Argument<String?>("name")) { name in }
command(Option<String?>("name", default: nil)) { name in }
```
- Added support for using `--` to signal that subsequent values should be treated as arguments instead of options.
[Tamas Lustyik](https://github.com/lvsti)
- Output of `--help` for group commands will now sort the commands in alphabetical order.
[Cameron Mc Gorian](https://github.com/sbarow)
### Bug Fixes
- Showing default values for custom `ArgumentConvertible` types are now supported in the `--help` output of commands.
- Only print errors in red if the output terminal supports ANSI colour codes.
[#58](https://github.com/kylef/Commander/pull/58)
- `ArgumentParser.isEmpty` will now return empty for empty arguments.
### Enhancements
- Consolidate the argument descriptors:
- All Option-related types now have a validator.
- All Option-related types now have a flag parameter.
- All constructors have the same constructor arguments order. [#35](https://github.com/kylef/Commander/issues/35)
### Bug Fixes
- Restores compatibility with Linux.
### Bug Fixes
- The Swift Package now contains the Commander library product.
Switches to Swift 4.0.
### Bug Fixes
- Better detection of ANSI support in output tty.
[#43](https://github.com/kylef/Commander/issues/43)
### Enhancements
- `VariadicArgument` now supports an optional validator.
- Adds support for variadic options, allowing the user to repeat options to
provide additional values.
[#37](https://github.com/kylef/Commander/issues/37)
- Argument descriptions are now printed in command help.
[#33](https://github.com/kylef/Commander/issues/33)
- Default option and flag default values will now be shown in help output.
Only default option types of String and Int are currently supported in help output.
[#34](https://github.com/kylef/Commander/issues/34)
### Bug Fixes
- `VaradicArgument` has been renamed to `VariadicArgument`.
### Bug Fixes
- Fix a potential crash when `UsageError` is thrown on Linux.
- `--help` output now wraps arguments in diamonds `<>`.
##### Enhancements
- Commander can now run on Linux.
##### Enhancements
- Commander can now be installed with SPM (Swift Package Manager).
##### Bug Fixes
- Fix an issue where shifting flags don't shift the flag itself. This caused one-charter options to become broken.
[#16](https://github.com/kylef/Commander/issues/16)
##### Enhancements
- Convenience commands can now throw
- You can now supply a `falseName` and `falseFlag` when creating flags.
``` swift
Flag("verbose", flag: "v", disabledName": "no-verbose", disabledFlag: "x")
```
- You can supply your own `unknownCommand`helper within a group.
- Arguments can now have a description.
- Support for variadic arguments.
#### Bug Fixes
- When invoking a command using a described argument, the argument will know throw an error when the argument is missing.
- Errors are now thrown when a described command receives unknown flags or arguments.