Revision history for Perinci-CmdLine-Classic

1.65    2016-01-21 (PERLANCAR)

	- Bump prereq version Test::Perinci::CmdLine -> 1.33.


1.64    2016-01-20 (PERLANCAR)

	- No functional changes.

	- Bump prereq version to force updates: Test::Perinci::CmdLine 1.32,
          Perinci::Sub::Wrapper 0.80.


1.63    2016-01-19 (PERLANCAR)

	- No functional changes.

	- Bump prereq version to force update: Log::Any::App to 0.52
	  [RT#110234].


1.62    2016-01-14 (PERLANCAR)

	- Tweak how utf8 enabling is determined.

	- Bump prereq version Log::Any::IfLOG to 0.07.


1.61    2015-12-09 (PERLANCAR)

	- No functional changes.

	- Bump prereq version Perinci::CmdLine::Base 1.33 -> 1.42.

	- Bump prereq version Test::Perinci::CmdLine 1.25 -> 1.31 [CT].


1.60    2015-10-20 (PERLANCAR)

	- No functional changes.

	- To reduce deps, make indenting of columns in --help --verbose
	  optional, so we don't have to deps require (only recommends) on
	  Data::Unixish.


1.59    2015-09-29 (PERLANCAR)

        - [Bugfix] Fix --naked-res.

        - Adjust to Test::Perinci::CmdLine 1.25.


1.58    2015-09-18 (PERLANCAR)

	- Add result_naked common option like in Perinci::CmdLine::Lite.


1.57    2015-09-15 (PERLANCAR)

	- [ux] Prefix error message with program name.


1.56    2015-09-03 (PERLANCAR)

	- No functional changes.

	- [dist] Move spec prereqs from RuntimeRequires to
	  DevelopRecommends to reduce deps but still allow indicating spec
	  requirement.


1.55    2015-08-18 (PERLANCAR)

	- No functional changes.

	- Switch from Log::Any to Log::Any::IfLOG.


1.54    2015-07-15 (PERLANCAR)

	- Show dynamic generator modules' (x.dynamic_generator_modules)
	  version in --version.


1.53    2015-07-08 (PERLANCAR)

        - Adjust to Perinci::CmdLine::Base 1.21 (add skip_format attribute).

        - Update Rinci result metadata attributes interpreted by this module:
          x.perinci.cmdline._skip_format -> cmdline.skip_format.


1.52    2015-06-30 (PERLANCAR)

	- Adjust to Perinci::CmdLine::Base 1.17 (extra_urls_for_version).


1.51    2015-06-11 (PERLANCAR)

	- No functional changes.

        - Use Test::Perinci::CmdLine test suite.


1.50    2015-04-11 (PERLANCAR)

	- Add common option: --no-env like in PC:Lite.


1.49    2015-04-09 (PERLANCAR)

	- [Removed feature] Remove bin/peri-func-usage because it's not
          maintained and I'm not using it.

	- Adjust to Perinci::CmdLine::Base 1.06 (renamed run_* methods to
          action_*).


1.48    2015-03-22 (PERLANCAR)

	- No functional changes.

	- [doc] Add more attractive Synopsis, link to tutorial blog series.


1.47    2015-03-10 (PERLANCAR)

	- Change result metadata 'result_format_options' ->
	  'cmdline.format_options'.


1.46    2015-02-26 (PERLANCAR)

	- [Bugfix] Pass subcommands hash to Perinci::CmdLine::Help even
	  though subcommands list is dynamic (coderef).


1.45    2015-02-06 (PERLANCAR)

        - Rename module/dist from Perinci::CmdLine to Perinci::CmdLine::Classic
          to allow us to refer to it more clearly.

        - Enable --json unconditionally, but remove --yaml and --perl so we are
          more like ::Lite.


1.44    2015-01-11 (PERLANCAR)

	- No functional changes.

	- Adjust to Perinci::CmdLine::Base 0.74+ (old profile syntax in IOD
	  section name no longer supported) [CT].


1.43    2015-01-07 (PERLANCAR)

	- Update old code (_err is no more) and change help hook interface
	  (now pass $r).


1.42    2015-01-03 (PERLANCAR)

        - No functional changes.

        - Remove unneeded dep [RT#101270].

1.41    2014-12-19 (PERLANCAR)

        - No functional changes.

        - Adjust to new pericmd-base (0.68, refactored common bits of default
          common_opts to ::Base to reduce code duplication).


1.40    2014-12-11 (PERLANCAR)

        - No functional changes.

        - Use new name of renamed modules: SHARYANTO::Role::ColorTheme ->
          Color::Theme::Role::ANSI, SHARYANTO::Role::TermAttrs ->
          Term::App::Role::Attrs.


1.39    2014-12-02 (PERLANCAR)

	- No functional changes.

	- Switch Perinci::Sub::To::{CLIOptSpec,CLIDocData}.


1.38    2014-11-21 (PERLANCAR)

        - Use Perinci::Sub::To::CLIOptSpec to avoid code duplication and produce
          nicer list of options for displaying in --help.

        - Tweak --help output.

        [REMOVED FEATURES]

        - Like in Perinci::CmdLine::Lite, now only provide --no-config instead
          of also --noconfig.


1.37    2014-11-09 (PERLANCAR)

	- [Incompatible change] Rename attribute 'log_any_app' to 'log' for
	  compatibility with Perinci::CmdLine::Lite, old name is still
	  provided for backward compatibility reason but will be removed in
	  the future.

	- Document about x.hint.result_binary.


1.36    2014-10-24 (PERLANCAR)

	- Update dep version (has better binary result/arg support).

	- Format binary result as-is (no newline/send to
	  Perinci::Result::Format) when format is text.


1.35    2014-10-24 (PERLANCAR)

	- Default utf8 to off if outputting binary data.

	- Add attribute: riap_version (and bump Riap client deps with
	  versions which already support riap_version).

	- Typo: unimplemented status is 501, not 502.


1.34    2014-10-14 (PERLANCAR)

	- No functional changes.

	- Include more screenshots.


1.33    2014-10-14 (PERLANCAR)

	- No functional changes.

	- Include screenshots.


1.32    2014-10-03 (PERLANCAR)

	- Avoid error when completing (no use_utf8 method).


1.31    2014-09-16 (PERLANCAR)

	- No functional changes.

        - Move page/stream output functionality to Perinci::CmdLine::Base.


1.30    2014-09-11 (PERLANCAR)

	- Add support for cmdline_src=stdin_line and is_password (Rinci
	  1.1.53).


1.29     2014-09-05 (PERLANCAR)

         - [Bugfix] Forgot another json decode which should've been encode.


1.28     2014-09-04 (PERLANCAR)

         - [Bugfix] Fix bug in displaying 'in' schema property in help.


1.27     2014-09-04 (PERLANCAR)

         - [Bugfix] Fix bugs that caused App::riap to die.


1.26     2014-09-03 (PERLANCAR)

         - No functional changes.

         - Update to Perinci::CmdLine::Base 0.26.


1.25     2014-09-02 (SHARYANTO)

         - [Bugfix] Help on subcommand produced main help (some old code has not
           been adjusted).


1.24     2014-08-27 (SHARYANTO)

         - No functional changes.

         - [Internal] Move cmdline_src handling functionality to
           Perinci::CmdLine::Base.


1.23     2014-08-26 (SHARYANTO)

         - No functional changes.

         - Use Perinci::CmdLine::Base 0.22 (change of configuration profile
           syntax).


1.22     2014-08-26 (SHARYANTO)

         - No functional changes.

         - Update translations (id, fr).

         - Fix tests so non-English locale can pass too [CT].


1.21     2014-08-25 (SHARYANTO)

         [ENHANCEMENTS]

         - Add support for reading configuration file.


1.20     2014-08-24 (SHARYANTO)

         - [Bug fix] Edit to make tx-related actions (--undo, --redo, --history,
           etc) work.


1.19     2014-08-23 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Replace result metadata cmdline.display_result with cmdline.result.

         [ENHANCEMENTS]

         - Add result metadata cmdline.skip_format.


1.18     2014-08-22 (SHARYANTO)

         - [Bugfix] Try to init attributes in BUILD again (previously this is
           moved to hook_before_run because of some weirdness that makes
           accessing attribute from role not work in inner block of BUILD).


1.17     2014-08-22 (SHARYANTO)

         [REMOVED FEATURES]

         - Remove scripts strip-result-env-* (users can use 'jq' or other tools
           to do this).

         - Move script peri-run to Perinci-CmdLine-Any.

         - Remove --action (see note in the Incompatible Changes section about
           the change in the way command-line options are parsed).

         - Move examples/ to Perinci-CmdLine-Examples, to help reduce
           dependencies.

         [INCOMPATIBLE CHANGES]

         - To reduce confusion and make things simpler, change the way
           command-line options are parsed. Argument options which happen to
           clash with common options (e.g. --help, --version) are now renamed to
           --help-arg (or --help-arg2 and so on) so no options clash with each
           other. Thus, --action is no longer needed.

         [INTERNAL]

         - Refactoring: split some functionality to Perinci::CmdLine::Base (in
           separate dist) for creating Perinci::CmdLine::Lite, a lightweight
           alternative that doesn't use Moo, Perinci::Access, nor
           Perinci::Result::Format. There are now Perinci-CmdLine and
           Perinci-CmdLine-Lite distributions.

         - Refactoring: run() and run_*() now returns enveloped response instead
           of int. All output is now returned as string by run_*() instead of
           printed directly (except for streaming output).

         - Refactoring: No long uses internal attributes like
           $self->{_subcommand}. Instead, now a per-request (per-run())
           stash/hash $r is passed around. This is not unlike the technique used
           in Apache handlers and Data::Sah. It's cleaner because the
           per-request state is isolated from the object itself.

         - Refactoring: help-generating methods now separated into a separate
           role (Perinci::CmdLine::Role::Help), just to be more organized.

         [DOCUMENTATION]

         - Split some documentation (FAQ) from Perinci::CmdLine to
           Perinci::CmdLine::Manual and split to Perinci-CmdLine-Base so it can
           be installed without requiring too many dependencies.

         - Write examples Perinci::CmdLine::Manual::Examples.


1.16     2014-07-03 (SHARYANTO)

         [REMOVED FEATURES]

         - Split Perinci::CmdLine::Easy to its own dist.

         [ENHANCEMENTS]

         - Tidy up run() so it can safely be called multiple times.

         - Support for Perinci::CmdLine::Server.


1.15     2014-07-02 (SHARYANTO)

         - No functional changes.

         - Adjust to Perinci::Sub::Complete 0.53.


1.14     2014-07-02 (SHARYANTO)

         - No functional changes.

         - Adjust to Complete::Util 0.12.


1.13     2014-06-29 (SHARYANTO)

         - No functional changes.

         - Increase prereq version: Perinci::Sub::Complete 0.50, to allow
           completion routines to return hashref as well as arrayref.


1.12     2014-06-29 (SHARYANTO)

         - No functional changes.

         - Adjust to new completion modules.


1.11     2014-06-20 (SHARYANTO)

         [ENHANCEMENTS]

         - Adjust to Perinci::Sub::Complete 0.40 (no longer need to do
           'complete_arg_val' Riap request on our own).

         - Add --pass-cmdline-object to peri-run.

         [BUG FIXES]

         - A couple of bug fixes.


1.10     2014-05-17 (SHARYANTO)

         - [ux] Default to 80 (and not wider) column width when displaying
           --help --verbose, unless user sets COLUMNS.

         - Replace File::Slurp with File::Slurp::Tiny.


1.09     2014-04-30 (SHARYANTO)

         - No functional changes.

         - Adjust to Perinci::Access::Perl 0.66 (no longer has
           'extra_wrapper_args').


1.08     2014-04-16 (SHARYANTO)

         - Show release date in --version.


1.07     2014-04-16 (SHARYANTO)

         - Send argv to server when parsing argv on the client side returns 501
           (see Perinci::Sub::GetArgs::Argv for more details on this error).
           This feature currently does not work with transaction and dry-run.
           Also, the server side must have a recent Perinci::Access::Perl (0.64)
           which supports accepting 'argv' request key for its 'call' action.


1.06     2014-04-04 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - [refactor/internal] Rename action 'subcommand' to 'call' because it's
           less confusing and more appropriate. Since --action is
           underdocumented, this should break very few users.


1.05     2014-04-02 (SHARYANTO)

         - Consult Perinci::Sub::Property::* on unknown properties when
           generating help. This allows displaying help for result/table or
           result/object Rinci function metadata property. See corresponding
           Perinci::Sub::Property::result::{table,object} module for more
           details.


1.04     2014-04-01 (SHARYANTO)

         - Add common options: --json, --yaml, --perl. But only when user says
           'use Perinci::CmdLine 1.04'.


1.03     2014-03-29 (SHARYANTO)

         - Bugfix: Don't print 'missing foo arg' when on --help, --history, etc.


1.02     2014-02-26 (SHARYANTO)

         - No functional changes.

         - Adjust to Progress::Any 0.13 and
           Progress::Any::Output::TermProgressBarColor 0.08.


1.01     2014-01-21 (SHARYANTO)

         [BUG FIXES]

         - A couple of fixes in parsing cmdline options for argument with
           cmdline_src 'stdin_or_files': avoid printing 'missing arg X' when
           getting argument value from STDIN, and parse '--arg F1' properly (it
           used to get from STDIN instead of F1).


1.00     2013-12-18 (SHARYANTO)

         - No, there's nothing special about the version number.

         - Skip setlocale() at the start of program, as Locale::TextDomain
           (Locale::Messages) already reads from LANG/LANGUAGE. Programs
           requiring setlocale() can do it themselves.


0.99     2013-12-13 (SHARYANTO)

         - No functional changes. Mark more strings as translateable using
           Locale::TextDomain.


0.98     2013-12-13 (SHARYANTO)

         - No functional changes. Use Locale::TextDomain::UTF8.


0.97     2013-12-13 (SHARYANTO)

         - No functional changes. Switch from Locale::Maketext to
           Locale::TextDomain.


0.96     2013-11-26 (SHARYANTO)

         - Slightly reduce completion overhead.

         - Bugfix: Skip non-shell src examples.


0.95     2013-11-08 (SHARYANTO)

         [ENHANCEMENTS]

         - Fix behavior of 'cmdline_src': now supports 'file' (Rinci 1.1.41),
           'stdin_or_files' now correctly reads from files specified in cmdline
           argument, now supports giving lines to function argument of type
           'array'.


0.94     2013-10-04 (SHARYANTO)

         [ENHANCEMENTS]

         - Display src examples (Rinci 1.1.39).

         [ETC]

         - Adjust to Perinci::Access::Perl 0.53+ (remove disk caching options).

         - Adjust to Perinci::Sub::Complete (replaces Perinci::BashComplete).


0.93     2013-10-04 (SHARYANTO)

         - No functional changes. Force version of SHARYANTO::Role::ColorTheme
           so color_theme_class_prefix can be overriden by subclasses.


0.92     2013-10-03 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Change common option: --list (-l) to --subcommands to make it more
           obvious.

         [ENHANCEMENTS]

         - Reduce startup overhead by caching wrapping result
           (Perinci::Access::Perl 0.50 supports disk_cache option).

         - More tweaks on --help (as well as --subcommands output).

         - Observe PERINCI_CMDLINE_COLOR_THEME.

         - Colorize error messages, help, and --subcommands output.

         [DOCUMENTATION]

         - Document how utf8 output and logging output is turned on/off.

         - Add French translation. More translations welcome.

         - Show list of (popular) subcommands in help message.


0.91     2013-10-02 (SHARYANTO)

         - This release focuses on making help message prettier: colors,
           sorting, some tweaks/fixes. Details below. Formatting is now done
           using Text::ANSITable. Producing help now causes a slight noticeable
           delay (like 0.3-0.4s) on my PC/laptop, but since it is not annoying
           enough or invoked frequently enough on a daily basis, it'll do for
           now.

         [ENHANCEMENTS]

         - Generate colored help message, yay.

         - Provide two versions of help: compact and verbose (--help --verbose).
           The purpose of compact help is to be short and rarely exceed one
           screen: it only displays usage, examples, and list of options (no
           documentation on each option). The normal help is now the verbose
           help.

         - Show examples in help message.

         - Show function description in verbose help message.

         - Don't show 'name - summary' line in help message if summary is not
           specified.

         - To save a bit of screen space, don't list --help and --version in
           compact help message, since they are already obvious from the usage
           section.

         - Observe 'x.perinci.cmdline.negative_summary' Rinci metadata
           attribute. If there is a bool option with default=1 (e.g. --public,
           with summary 'Only show public items') the help message now displays
           '--nopublic' since --public is implicit. The summary should
           accordingly be the negative summary (e.g. 'Only show private items').
           This can now be put in said attribute. It can also be localized (e.g.
           'x.perinci.cmdline.negative_summary.alt.lang.id_ID').

         - Add examples/demo-help which contains various options to show how
           --help and '--help --verbose' would display it.

         - For "simple" actions like 'help', 'list', 'version', logging is
           turned off by default to reduce startup overhead. However, you can
           still turn on logging via LOG=1.


0.90     2013-09-23 (SHARYANTO)

         - Add 'args' subcommand specification to prefill function arguments
           when calling (useful for function that serves multiple subcommands).

         - Show positional arguments in usage message.


0.89     2013-09-20 (SHARYANTO)

         - No functional changes. Force upgrade of deps to show previous error
           (Rinci 1.1.38).


0.88     2013-09-11 (SHARYANTO)

         - No functional changes. Demote Perinci::Tx::Manager from
           RuntimeRequires to RuntimeRecommends because not all applications use
           it and it currently does not install on Windows (some deps like
           File::Lock, which deps on Data::Structure::Util, does not build).

         - Now builds on Windows, yay.


0.87     2013-09-08 (SHARYANTO)

         [REMOVED FEATURES]

         - Remove 'dash_to_underscore' option because it is currently rather
           confusing. If you specify subcommands using underscores, -l will list
           the underscored version but tab completion is using the dashed
           version. To simplify stuffs, now no transformation is done.

         [BUG FIXES]

         - Forgot to pass 'pa' argument to Perinci::BashComplete function.


0.86     2013-09-08 (SHARYANTO)

         - Update to Rinci 1.1.36 (entity_version -> entity_v).

         - Replace Perinci::Access::InProcess with ::Perl and ::Schemeless.


0.85     2013-08-15 (SHARYANTO)

         [BUG FIXES]

         - No functional changes. Add missing dependencies to Perinci::To::Text
           [CT].


0.84     2013-08-11 (SHARYANTO)

         [BUG FIXES]

         - Forgot to update method name which caused '--help' and the
           peri-func-usage to not work properly.


0.83     2013-07-26 (SHARYANTO)

         - No functional changes. Adjust to new SHARYANTO::Role::Doc::Section
           0.53.


0.82     2013-07-26 (SHARYANTO)

         [ENHANCEMENTS]

         - Allow disabling paging, when cmdline.page_result result metadata is
           active, using PAGER=0.

         - Column width now observes the COLUMNS environment.

         - Add command line script: peri-func-usage to display usage text for
           any Riap function.


0.81     2013-07-26 (SHARYANTO)

         - Change options display in usage text to be more compact (remove blank
           line after --foo line, but indent the options summary/description
           text more deeply).

         - Add FAQ item about modifying the common options.

         - Mark dev version as 'dev' in --help.


0.80     2013-07-06 (SHARYANTO)

         - Add 'use experimental "smartmatch"' for 5.18+.

         - Handle error when COLOR=0.


0.79     2013-05-18 (SHARYANTO)

         - Use Progress::Any::Output::TermProgressBarColor to replace
           Progress::Any::Output::TermProgress.


0.78     2013-05-10 (SHARYANTO)

         - Text in common_opt (category, usage, summary) is now not required to
           be translateable.

         - Update 'id' translation.


0.77     2013-05-10 (SHARYANTO)

         [BUG FIXES]

         - Setting --format-options didn't work.


0.76     2013-05-10 (SHARYANTO)

         [ENHANCEMENTS]

         - Common options are now modularized instead of hardcoded. You can now
           delete/rename/add common options like --help, --version, etc. See
           documentation for the 'common_opts' attribute.

         [REMOVED FEATURES]

         - Remove 'extra_opts' attribute because they are now supported via
           'common_opts'.


0.75     2013-05-04 (SHARYANTO)

         - Observe PROGRESS environment (can be set to 0 to disable progress
           display).

         - binmode(STDOUT, ":utf8") (TODO: option to opt out from this).


0.74     2013-04-16 (SHARYANTO)

         - No functional changes. Avoid perl undef warning.


0.73     2013-04-15 (SHARYANTO)

         - Provide format_row().


0.72     2013-04-14 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - format_and_display_result() is split to format_result() and
           display_result() (should not be a problem because it's not yet
           documented).

         [ENHANCEMENTS]

         - Support streaming output (function needs to set result metadata
           is_stream => 1 and result needs to be glob/IO::Handle/array/tied
           array, format needs to be text).

         - Observe 'x.perinci.cmdline.default_format' metadata attribute.


0.71     2013-04-05 (SHARYANTO)

         - No functional changes. Workaround problem which causes non-pretty
           text tables to be displayed by default.


0.70     2013-04-05 (SHARYANTO)

         - Add no_getopt_compat Getopt::Long::Configure to disregard "+" as
           option starter.


0.69     2013-03-15 (SHARYANTO)

         - Add 'pa_args' attribute to pass to Perinci::Access (and in turn to
           Perinci::Access::HTTP::Client), e.g. HTTP basic auth information.

         - Several small tweaks.


0.68     2013-01-09 (SHARYANTO)

         - Add workaround for formatter that modifies STDOUT's binmode setting.


0.67     2012-10-29 (SHARYANTO)

         - No functional changes. Fix dependencies.


0.66     2012-10-24 (SHARYANTO)

         - Display progress indicator for function which uses it (see
           Perinci::Access::InProcess 0.36+). For an example of this, see
           Git::Bunch 0.24, function sync_bunch().

         - Show Perinci::CmdLine's version in --version.


0.65     2012-09-06 (SHARYANTO)

         - Remove example script bin/symlink-u due to circular dependency
           [RT#79482].


0.64     2012-09-04 (SHARYANTO)

         - Automatically set verbose when --dry-run.


0.63     2012-08-29 (SHARYANTO)

         - Allow transactional function to be passed --dry-run.


0.62     2012-08-28 (SHARYANTO)

         - Allow setting exit code via result metadata key 'cmdline.exit_code'.


0.61     2012-08-08 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Change how array of scalars is parsed, now not as JSON/YAML but using
           repeated options (--foo 1 --foo 2) a la traditional Getopt::Long.

         - Turn on per-argument explicit JSON and YAML parsing, using
           --ARGNAME-json and --ARGNAME-yaml, to make it possible to enter undefs,
           empty arrays, etc.


0.60     2012-08-01 (SHARYANTO)

         - Rename demo script 'u-symlink' to 'symlink-u'.

         - Show cmdline_aliases in help message.


0.59     2012-07-27 (SHARYANTO)

         - Tweak: run_history(): Do not format date/time, let
           Data::Format::Pretty::Console do it for us

         - Fix: --verbose, --quiet, et al didn't work before.


0.58     2012-07-26 (SHARYANTO)

         - Allow setting undo => 0 in subcommand, to disable undo/transaction
           for that subcommand.


0.57     2012-07-26 (SHARYANTO)

         - Add 'extra_opts' attribute.


0.56     2012-07-25 (SHARYANTO)

         - No functional changes. Increase dep version
           Data::Format::Pretty::Console 0.16.


0.55     2012-07-23 (SHARYANTO)

         - Support 'cmdline_src' arg spec key (Rinci 1.1.20+).


0.54     2012-07-19 (SHARYANTO)

         - No functional changes. Add dependencies to
           Perinci::Access::TCP::{Server,Client} for convenience. Requires
           Perinci::Sub::GetArgs::Argv 0.18 which supports parsing nonscalar
           arguments as JSON as well as YAML, also for convenience.


0.53     2012-07-12 (SHARYANTO)

         [ENHANCEMENTS]

         - Add 'default_subcommand' attribute. If set, subcommand name will be
           taken from this instead of first command-line argument. To access
           other subcommands, users will need to give --cmd command-line option.

         - Common options --list will only be added if there are subcommands
           defined.

         [BUG FIXES]

         - A couple of fixes to tab completion and perl undef warnings.

         [OTHER]

         - Example script 'symlink-with-undo' renamed to 'u-symlink' (to make it
           consistent with the upcoming 'u-trash' script; see
           File::Trash::Undoable).


0.52     2012-06-26 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Remove options --yaml, --json, --text, --text-pretty, --text-simple;
           use --format for now. This is to reduce the possibility of collision
           with function argument options (especially things like --text are
           common as function arguments). In general Perinci::CmdLine should
           introduce as few command-line options as possible to avoid
           collisions.

         [FIXES]

         - Fix typo that cause list of known result formats to be empty in error
           message when passed --format=BOGUS


0.51     2012-06-22 (SHARYANTO)

         [ENHANCEMENTS]

         - Don't use transactions when dry run, so transaction list is not full
           with dry run calls.


0.50     2012-06-22 (SHARYANTO)

         [ENHANCEMENTS]

         - Interpret --dry-run (or environment DRY_RUN=1) and pass -dry_run=>1
           to functions that have the dry_run feature.

         - Don't treat 304 status as error (still return exit code 0).


0.49     2012-06-22 (SHARYANTO)

         [ENHANCEMENTS]

         - Implement undo (--undo, --redo, --history, --clear-history).


0.48     2012-06-15 (SHARYANTO)

         [ENHANCEMENTS]

         - Add module: Perinci::CmdLine::Easy


0.47     2012-04-03 (SHARYANTO)

         [FIXES]

         - Better handle case when common options like --help, --list, --version
           clash with function arguments with the same name. Now the behavior is
           to invoke common action (like help, version), unless
           --action=subcommand is specified, where it will set function
           arguments instead. Note that this is a non-issue when none of the
           function arguments happen to have names of 'help', 'list', 'version',
           etc.


0.46     2012-03-30 (SHARYANTO)

         - No functional changes. Fix typo.


0.45     2012-03-30 (SHARYANTO)

         [REFACTORING]

         - Split formatting to Perinci::Result::Format (in Perinci dist).

         [INCOMPATIBLE CHANGE]

         - Rename --pretty (-p) and --nopretty (-P) to --text-pretty and
           --text-simple.


0.44     2012-03-29 (SHARYANTO)

         [ENHANCEMENTS]

         - Make it easy to add more output formats: added --format and formats()
           attribute.

         [INCOMPATIBLE CHANGE]

         - --json now outputs compact JSON instead of pretty ones. To
           pretty-print the output one can pipe it to a formatter program.

         [FIXES]

         - Bash completion: list of common options was incomplete (but we still
           can't complete common option's value like --format <tab>).


0.43     2012-03-23 (SHARYANTO)

         [ENHANCEMENTS]

         - Show default argument value in --help message.


0.42     2012-03-16 (SHARYANTO)

         [ENHANCEMENTS]

         - Localized/translatable messages. English and Indonesian included.

         - Read environment variable PERINCI_CMDLINE_PROGRAM_NAME.

         - peri-run: Accept --subcommand (-s) to specify subcommands.

         - Allow choosing PAGER via result metadata key 'cmdline.pager'.


0.41     2012-03-08 (SHARYANTO)

         [BUG FIXES]

         - Fix do not empty envelope when 'cmdline.display_result' is false.


0.40     2012-03-08 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Observe function result metadata: 'cmdline.display_result' (no longer
           observe 'cmdline.result_importance').

         [ENHANCEMENTS]

         - Observe function result metadata: 'cmdline.page_result' to send
           result to PAGER.


0.39     2012-03-03 (SHARYANTO)

         [ENHANCEMENTS]

         - Add short options for --yaml (-y), --json (-j), --pretty (-p),
           and --nopretty (-P).

         - Observe function result metadata: 'cmdline.result_importance' (if set
           to 'low', won't display result).

         [FIXES]

         - Common options (like --yaml, --help, -l) now won't override options
           for function arguments of the same name.

         [REMOVED]

         - Remove support for PHP serialization output (will be re-added later
           via --format, which can use any Data::Format::Pretty::* module).


0.38     2012-02-23 (SHARYANTO)

         - Rename distribution from Sub-Spec-CmdLine to Perinci-CmdLine. Now
           Rinci/Riap-based (transparent remote access). Refactor into OO. Some
           features missing for now. Tests not updated yet.


0.37     2012-01-20 (SHARYANTO)

         - No functional changes. Mark deprecation.


0.36     2011-08-25 (SHARYANTO)

         - No functional changes. gen_usage() split to its own dist:
           Sub-Spec-To-Text. Update to Sub::Spec 0.15.


0.35     2011-08-11 (SHARYANTO)

         - Uses Data::Format::Pretty for result formatting. JSON output is now
           pretty-printed by default.


0.34     2011-08-03 (SHARYANTO)

         - No functional changes. Fixed test script to adjust to new
           Object::BlankStr [CT]. Updated dependencies.


0.33     2011-07-26 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - Refactoring: move parse_argv() to
           Sub::Spec::GetArgs::Argv::get_args_from_argv().

         [ENHANCEMENTS]

         - Localize Getopt::Long::Configure() effect.


0.32     2011-07-10 (SHARYANTO)

         [BUG FIXES]

         - runpm: fix -I.


0.31     2011-07-10 (SHARYANTO)

         [ENHANCEMENTS]

         - bin/runpm: add --help (-h) and -I (--library) options.

         - run(): add dash_to_underscore option to allow subcommands using
           dashes instead of underscores.


0.30     2011-06-05 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - To reduce the trap of implicit YAML parsing, parsing is only done for
           nonscalar arguments.


0.29     2011-06-01 (SHARYANTO)

         - No functional changes.

         [ETC]

         - Update to latest version of Sub::Spec::Runner.


0.28     2011-04-14 (SHARYANTO)

         [BUG FIXES]

         - Remove extra name line in usage message.


0.27     2011-04-14 (SHARYANTO)

         [ENHANCEMENTS]

         - run(): For convenience, allow general options (e.g. --version,
           --help, --json, etc) to be specified after subcommand name, if it
           doesn't collide with spec arg

         [ETC]

         - Replace Clone::Any with Data::Clone (Clone::Any fallbacks to Storable
           which doesn't support storing Regexp, so tests will fail if Clone is
           not available).


0.26     2011-03-04 (SHARYANTO)

         - Require Sub::Spec::Runner 0.09.


0.25     2011-02-28 (SHARYANTO)

         - On non-success response from sub, print output (error message) even
           if spec enables cmdline_suppress_output.


0.24     2011-02-28 (SHARYANTO)

         - Now based on Sub::Spec::Runner for dependency checking before run.


0.23     2011-02-23 (SHARYANTO)

         - Fix dependency (Sub::Spec version).

         - Don't add error message when Getopt::Long already prints to stderr.


0.22     2011-02-22 (SHARYANTO)

         - Use Sub::Spec::Utils.


0.21     2011-02-21 (SHARYANTO)

         - Add some more documentation.

         - Requires recent versions of Test::More & Sub::Spec::BashComplete.


0.20     2011-02-18 (SHARYANTO)

         - Escape completion output since BashComplete now doesn't.

         - Added some doc.


0.19     2011-02-18 (SHARYANTO)

         - Provide runpm script.


0.18     2011-02-18 (SHARYANTO)

         - run(): More fixes for completion.

         - spec: cmdline_aliases is renamed to arg_aliases.

         - Fix test [CT].


0.17     2011-02-17 (SHARYANTO)

         - run(): Fixed stupid parenthesis bug.


0.16     2011-02-17 (SHARYANTO)

         - run(): A couple more fixes for bash completion.

         - parse_argv(): Also add --nofoo for bool cmdline_aliases.


0.15     2011-02-17 (SHARYANTO)

         - Yet more fixes for bash completion.

         - Fixed: parse_argv(): do not convert all remaining $argv to YAML so
           they can be reused (e.g. parse_argv'd) again

         - run(): add option 'custom_completer' to pass to
           Sub::Spec::BashComplete.


0.14     2011-02-17 (SHARYANTO)

         - Fixes for bash completion.


0.13     2011-02-17 (SHARYANTO)

         [INCOMPATIBLE CHANGES]

         - run(): rename 'require' argument to 'load'.

         [IMPROVEMENTS]

         - parse_argv(): Respect arg spec: 'cmdline_aliases' for specifying
           option aliases.

         - run(): Allow 'subcommands' argument to be coderef.

         - run(): Pass more info (arguments) to coderef 'help' argument.

         - run(): Add option 'allow_unknown_args' for non-strict argv parsing.

         - gen_usage(): Add option: 'options_name'.


0.12     2011-02-16 (SHARYANTO)

         - Fixes for bash completion.

         - Add arguments to run(): help, spec, run, per-subcommand category.

         - Other bug fixes.


0.11     2011-02-16 (SHARYANTO)

         - Add support for bash completion (requires Sub::Spec::BashComplete).


0.10     2011-02-16 (SHARYANTO)

         - Add strict=>0 option in parse_argv(), for use by
           Sub::Spec::BashComplete.

         - Some small refactoring.


0.09     2011-02-15 (SHARYANTO)

         - Add --version.


0.08     2011-02-15 (SHARYANTO)

         - Fixes for subcommands support.

         - Respect spec clause: cmdline_suppress_output.


0.07     2011-02-11 (SHARYANTO)

         - Formatting fix: missing newline in error message.


0.06     2011-02-11 (SHARYANTO)

         - Add 'cmd' option to gen_usage().

         - Formatting tweaks.


0.05     2011-02-11 (SHARYANTO)

         - Remove 'required_args'.


0.04     2011-02-10 (SHARYANTO)

         - Formatting fixes.


0.03     2011-02-10 (SHARYANTO)

         - Formatting tweaks.

         - Fix schema clause ('in', not 'choices').


0.02     2011-02-09 (SHARYANTO)

         - Incompatible change: rename arg_order to arg_pos.

         - Documentation.


0.01     2011-02-09 (SHARYANTO)

         - First release.
