<commit_before>News for homectl
================

:toc:

Version 0.3.0
-------------

Not Yet Released

.Incompatible Changes

* The `homectl` command has been completely rewritten in Python, and the command
  name has been shortened to `hc`.  The old `homectl` shell script still exists,
  to aid existing users in upgrading.

* The `~/.homectl` directory is now a Homebrew-style tree of symlinks to
  individual files in enabled packages.  Enabled packages are now tracked in an
  `enabled-pkgs` file, rather than as a directory of symlinks.  To upgrade your
  existing deployment and setup, run:

------------------------------------------------------------------------------
$ homectl refresh
$ rehash                       # if needed by your shell

$ hc upgrade
$ hc init ~/your-home-setup    # this is not destructive, don't worry :)
------------------------------------------------------------------------------

.New Features

* The new Python implementation is much faster.

* Homectl now understands different machine and OS types, via the notion of
  *systems*.  See link:doc/customization.asciidoc[] for more details.

* `hc upgrade` performs most of the manual labor required to convert a homectl
  0.2 setup and deployment to a homectl 0.3 setup and deployment.

* `hc path` discovers where homectl files live, and computes updated
  environment variables such as `$PATH`.

* `hc files` searches for files within hook dirs in your packages, similar to
  how `find $hook_dirs -path ...` works.

* `loader-emacs.hcpkg` loads Emacs packages directly from the new
  `emacs-startup` hook.  It uses `(require)` to ensure package dependencies are
  respected.

* More documentation, especially on how to create your own packages.

.Deprecations

* `loader-emacs.hcpkg`: The previous method of running `emacs.el` files during
  startup is now deprecated.  Place startup packages in the `emacs-startup`
  hookdir instead.  The old behavior will be removed in homectl 0.4.

* `homectl find` (or `hc find`, as it's now called) has been deprecated in favor
  of `hc files`.

* `loader-bash` and `loader-zsh`: The previous mechanism of sourcing `shell.*`
  and `env.*` files during shell startup is deprecated and will be removed in
  homectl 0.4.  Instead, place your `*.sh`, `*.bash`, or `*.zsh` files in the `shell-env` and `shell-rc` hook directories, respectively.

.Bugs Fixed

* `loader-emacs.hcpkg` now unconditionally refreshes the `package.el` package
  list if it needs to install a missing package.  This ensures the package list
  is always available.

.Bugs Introduced

* Probably a few, since this is a rewrite.  Hopefully the new unit tests caught
  most of them. :)

Version 0.2.0
-------------

Released on: 22-Jul-2013

.Incompatible Changes

* `homectl enable` and `homectl disable` now take package paths instead of just
  the basename.  This allows you to have multiple packages in different
  directories with the same name, and it makes enabling/disabling packages more
  convenient since you can use Tab-completion.

* `homectl list` now shows the full path to each enabled package, so you know
  exactly what is enabled and where it lives.
<commit_msg>doc: Note when hc find will be removed<commit_after>News for homectl
================

:toc:

Version 0.3.0
-------------

Not Yet Released

.Incompatible Changes

* The `homectl` command has been completely rewritten in Python, and the command
  name has been shortened to `hc`.  The old `homectl` shell script still exists,
  to aid existing users in upgrading.

* The `~/.homectl` directory is now a Homebrew-style tree of symlinks to
  individual files in enabled packages.  Enabled packages are now tracked in an
  `enabled-pkgs` file, rather than as a directory of symlinks.  To upgrade your
  existing deployment and setup, run:

------------------------------------------------------------------------------
$ homectl refresh
$ rehash                       # if needed by your shell

$ hc upgrade
$ hc init ~/your-home-setup    # this is not destructive, don't worry :)
------------------------------------------------------------------------------

.New Features

* The new Python implementation is much faster.

* Homectl now understands different machine and OS types, via the notion of
  *systems*.  See link:doc/customization.asciidoc[] for more details.

* `hc upgrade` performs most of the manual labor required to convert a homectl
  0.2 setup and deployment to a homectl 0.3 setup and deployment.

* `hc path` discovers where homectl files live, and computes updated
  environment variables such as `$PATH`.

* `hc files` searches for files within hook dirs in your packages, similar to
  how `find $hook_dirs -path ...` works.

* `loader-emacs.hcpkg` loads Emacs packages directly from the new
  `emacs-startup` hook.  It uses `(require)` to ensure package dependencies are
  respected.

* More documentation, especially on how to create your own packages.

.Deprecations

* `loader-emacs.hcpkg`: The previous method of running `emacs.el` files during
  startup is now deprecated.  Place startup packages in the `emacs-startup`
  hookdir instead.  The old behavior will be removed in homectl 0.4.

* `homectl find` (or `hc find`, as it's now called) has been deprecated in favor
  of `hc files`.  `hc find` will be removed in homectl 0.4.

* `loader-bash` and `loader-zsh`: The previous mechanism of sourcing `shell.*`
  and `env.*` files during shell startup is deprecated and will be removed in
  homectl 0.4.  Instead, place your `*.sh`, `*.bash`, or `*.zsh` files in the `shell-env` and `shell-rc` hook directories, respectively.

.Bugs Fixed

* `loader-emacs.hcpkg` now unconditionally refreshes the `package.el` package
  list if it needs to install a missing package.  This ensures the package list
  is always available.

.Bugs Introduced

* Probably a few, since this is a rewrite.  Hopefully the new unit tests caught
  most of them. :)

Version 0.2.0
-------------

Released on: 22-Jul-2013

.Incompatible Changes

* `homectl enable` and `homectl disable` now take package paths instead of just
  the basename.  This allows you to have multiple packages in different
  directories with the same name, and it makes enabling/disabling packages more
  convenient since you can use Tab-completion.

* `homectl list` now shows the full path to each enabled package, so you know
  exactly what is enabled and where it lives.

{'fraction_non_alphanumeric': 0.1289670192906036, 'fraction_numerical': 0.006533914125700062, 'mean_word_length': 2.898726500909642, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4281217', 'n_tokens_mistral': 1786, 'n_tokens_neox': 1724, 'n_words': 847}