tmuxp Changelog
===============

Here you can find the recent changes to tmuxp.

2013-10-30
----------

- [cli] fix bug where if inside tmux, loading a workspace via switch_client
  wouldn't work.
- [cli] fix bug where ``tmuxp load .`` would return an error instead of a
  notice.
- [cli] ``tmuxp freeze <filename>`` experimental
- [freeze] [tests] tmuxp now has experimental support for freezing live
  sessions.

2013-10-29
----------

- [internal] :meth:`Window.select_pane` now accepts ``-l``, ``-U``, ``-D``,
  ``-L``, ``-R``.
- [internal] [tests] support for ``automatic-rename`` option.
- [docs] 3 new :ref:`examples`, 'main-pane-height', 'automatic-rename', and
  'shorthands'.
- [cli] enhancements to prompts
- [cli] ``tmuxp import`` for teamocil and tmuxinator now has a wizard and offers
  to save in JSON or YAML format.
- [cli] [bug] [b6c2e84] Fix bug where tmuxp load w/ session already loaded would
  switch/attach even if no was entered
- [cli] when workspace loader crashes, give option to kill session, attach it or
  detach it.
- [cli] tmux 1.8  ``set-option`` / ``set-window-options`` command
  ``target-window`` fix.
- [internal] :class:`WorkspaceBuilder` now has ``.session`` attribute accessible
  publicly.
- [cli] tmux will now use :meth:`Session.switch_client` and
  :meth:`Session.attach_session` to open new sessions instead of ``os.exec``.
- [config] tmuxp now allows a new shorter form for panes. Panes can just be a
  string. See the shorthand form in the :ref:`examples` section.
- [cli] [config] support loading ``.yml``.

2013-10-28
----------

- [cli] fix ``tmuxp load .`` fixed
- [cli] fix ``tmuxp convert <file>`` fixed.
- [internal] `pep257`_ fixes.
- [internal] [tests] - :class:`Pane` now has :meth:`Pane.set_width` and
  :meth:`Pane.set_height`.
- [tests] ``./run_tests.py --tests`` now automatically prepends
  ``tmuxp.testsuite`` to names.
- [internal] :meth:`Window.tmux` and :meth:`Pane.tmux` will automatically add
  their ``{window/pane}_id`` if one isn't specific.

2013-10-27
----------

- [cli] `argcomplete`_ overhaul for CLI bash completion.
- [cli] ``tmuxp load``, ``tmuxp convert`` and ``tmuxp import`` now support
  relative and full filenames in addition to searching the config
  directory.

2013-10-26
----------

- [import] [tests] initial version of `tmuxinator`_ and `teamocil`_
  config importer. it does not support all options and it not guaranteed
  to fully convert window/pane size and state.
- [internal] :meth:`config.in_dir` supports a list of ``extensions`` for
  filetypes to search, i.e. ``['.yaml', '.json']``.
- [internal] :meth:`config.is_config_file` now supports ``extensions``
  argument as a string also.
- [cli] fix ``$ tmuxp load -l`` to work correctly alongside
  ``$ tmuxp load filename``.

2013-10-25
----------

- [cli] fix bug where ``-v`` and ``--version`` wouldn't print version.
- [cli] property handle case where no tmux server exists when
  ``attach-session`` or ``kill-session`` is used.
- [import] [tests] test fixtures and inital work for importing
  `tmuxinator`_ and `teamocil`_ configs

2013-10-24
----------

- [internal] clean out old code for ``automatic-rename`` option. it will
  be reimplemented fresh.
- [cli] check for ``oh-my-zsh`` when using ``$SHELL`` ``zsh``. Prompt if
  ``DISABLE_AUTO_TITLE`` is unset or set to ``true``.
- [cli] tmuxp can now ``$ tmuxp convert <file>`` from JSON <=> YAML, back
  and forth.
- [docs] New examples in JSON. Update the :ref:`examples` page in the
  docs.
- [dev] ``.tmuxp.json`` now exists as a config for tmuxp development and
  as an example.
- [cli] Fix bug where ``tmuxp kill-session`` would give bad output
- [cli] Fix bug in tab completion for listing sessions with no tmux server
  is active.


2013-10-23
----------

- [cli] zsh/bash/tcsh completion improvements for tab-completion options
- [cli] tmuxp ``kill-session`` with tab-completion.
- [cli] tmuxp ``attach-session`` with tab-completion. Attach session will
  ``switch-client`` for you if you are inside of of a tmux client.
- [cli] tmuxp ``load`` for loading configs.
- [tests] unit test fixes.

2013-10-21
----------

- [cli] Make 1.8 the official minimym version, give warning notice to
  upgrade tmux if out of date
- Fix regression causing unexpected build behavior due to unremoved code
  supporting old tmux versions.
- [docs] Added 2 new examples to the :ref:`examples` page.
- [docs] Examples now have graphics
- [cli] [internal] ``$ tmuxp -v`` will print the version info.

2013-10-19
----------

- [internal] tmuxp will now give warning and sys.exit() with a message if
  ``tmux`` not found in system PATH
- [internal] major internal overhaul of :class:`Server`, :class:`Session`
  , :class:`Window`, and :class:`Pane` continues.

  - :class:`Server` has @property :meth:`Server.sessions`, which is forward
    to :meth:`Server.list_sessions()` (kept to keep tmux commands in
    serendipty with api), :meth:`Server._list_sessions()` returns dict
    object from :meth:`Server.__list_sessions()` tmux command.
    :meth:`Server.__list_sessions()` exists to keep the command layered so
    it can be tested against in a matrix with travis and compatibility
    methods can be made.

  - :class:`Session` now has @proprety :meth:`Session.windows` returning a
    list of  :class:`Window` objects via :meth:`Session.list_windows()`.
    @property :meth:`Session._windows` to :meth:`Session._list_windows()`
    to return a list of dicts without making objects.

  - :class:`Window` now has @proprety :meth:`Window.panes` returning a
    list of :class:`Pane` objects via :meth:`Window.list_panes()`.
    @property :meth:`Window._panes` to :meth:`Window._list_panes()`
    to return a list of dicts without making objects.

2013-10-18
----------

- [internal] major internal overhaul of :class:`Server`, :class:`Session`,
  :class:`Window`, and :class:`Pane`. 

  - ``Session``, ``Window`` and ``Pane`` now refer to a data object
    in :class:`Server` internally and always pull the freshest data.

  - A lot of code and complexity regarding setting new data for objects
    has been reduced since objects use their unique key identifier to
    filter their objects through the windows and panes in ``Server``
    object.

  - ``Server`` object is what does the updating now.
- [project] some research into supporting legacy tmux versions. tmux 1.6
  and 1.7 support seem likely eventually if there is enough demand.
- [internal] python 3 support

2013-10-17
----------

- [docs] updated README docs with new project details, screenshots
- [dev] [docs] - new example ``.tmuxp.yaml`` file updated to include
  development workflow. Removed nodemon as the tool for checking files for
  now.
- [cli] Support for switching sessions from within tmux. In both cases
  after the the session is built and if session already exists.

2013-10-16
----------

- [cli] use :meth:`util.which()` from salt.util to find tmux binary.
- [pypi / packaging] add MANIFEST.in, fix issue where package would not
  install because missing file
- [cli] bash / zsh completion.
- [docs] New page on :ref:`orm_al`.
- [docs] Updates to :ref:`about_tmux` page.
- [docs] add vim modeline for rst to bottom of this page
- [internal] [tests] Server is now a subclass of :class:`util.TmuxObject`.
- [internal] [tests] subclasses of :class:`util.TmuxRelationalObject`,
  :class:`Server`, :class:`Session`, :class:`Window`, :class:`Pane` now
  have :meth:`util.TmuxRelationalObject.getById` (similar to `.get()`_ in
  `backbone.js`_ collection), :meth:`util.TmuxRelationalObject.where` and
  :meth:`util.TmuxRelationalObject.findWhere` (`.where()`_ and
  `.findWhere()`_ in `underscore.js`_), to easily find child objects.
- [internal] tmux object mapping has been split into
  :class:`util.TmuxMappingObject`. The mapping and the relational has been
  decoupled to allow :class:`Server` to have children while not being a
  dict-like object.
- [internal] :class:`Server`, :class:`Session`, :class:`Window`,
  :class:`Pane` now explicitly mixin subclasses.

.. _underscore.js: http://underscorejs.org/
.. _backbone.js: http://backbonejs.org/
.. _.get(): http://backbonejs.org/#Collection-get
.. _.where(): http://underscorejs.org/#where
.. _.findWhere(): http://underscorejs.org/#findWhere

2013-10-15
----------

- [docs] new theme
- [docs] initial examples, misc. updates, front page update.
- [cli] support for ``$ tmux .`` to load ``.tmuxp.{yaml/json/py}`` in current
  working directory.
- [cli] support for ``socket-name`` (``-L``) and ``socket-path``
  (``socket-path``)
- [config] [builder] Support for 1-command pane items.

  .. code-block:: yaml

      session_name: my session
      windows:
        - window_name: hi
          panes:
          - bash
          - htop
- [cli] If session name is already exists, prompt to attach.

2013-10-14
----------

- [cli] can now -l to list configs in current directory and $HOME/.tmuxp
- [cli] tmuxp can now launch configs and build sessions
- [internal] new exceptions
- [config] [tests] :meth:`config.check_consistency()` to verify and diagnose
  issues with config files.
- [cli] [tests] :meth:`cli.startup()`
- [config] [tests] :meth:`config.is_config_file()`
- [config] [tests] :meth:`config.in_dir()`
- [config] [tests] :meth:`config.in_cwd()`

2013-10-13
----------

- [cli] [tests]  :meth:`config.inline()` to produce far far better looking
  config exports and tests.
- :meth:`Pane.resize_pane()` and tests
- documentation fixes and updates
- [internal] :meth:`Session.refresh()`, :meth:`Window.refresh()`,
  :meth:`Pane.refresh()`.
- [internal] :meth:`Server.find()`, :meth:`Session.find()`,
  :meth:`Window.find()`.

2013-10-12
----------

- [tests] Test documentation updates
- [internal] [tests] Builder is now :class:`WorkspaceBuilder` + tests.
  - WorkspaceBuilder can build panes
  - WorkspaceBuilder can build windows and set options
- [internal] [tests] :meth:`Window.show_window_options()`,
  :meth:`Window.show_window_option()`, :meth:`Window.set_window_option()`
- [internal] [tests] :meth:`Session.show_options()`,
  :meth:`Session.show_option()`, :meth:`Session.set_option()`

2013-10-11
----------

- [builder] More preparation for builder / session maker utility.
- [tests] Major test runner and test suite overhaul.
- [docs] Documentation for development environment and test runner updated.
- [tests] Travis now tests against tmux 1.8 and latest source. Door open for
  future testing against python 3 and earlier tmux versions in the future.
- [internal] Quiet logger down in some areas
- [internal] __future__ imports for future python 3 compatibility 
- [internal] setup.py import __version__ via regex from tmuxp package
- [cli] move beginnings of cli to tmuxp.cli

2013-10-09
----------

- New logging module
- Removed dependency logutils
- Removed dependency sh

2013-10-08
----------

- switch to semver

initial
-------

(initial release)

- changedlog added
- sphinx documentation

# vim: set filetype=rst:

.. _tmuxinator: https://github.com/aziz/tmuxinator
.. _teamocil: https://github.com/remiprev/teamocil
.. _argcomplete: https://github.com/kislyuk/argcomplete
.. _pep257: http://www.python.org/dev/peps/pep-0257/
