====================
 Envisage CHANGELOG
====================

Version 4.9.1
=============

Released: 2020-02-13

This is a bugfix release aimed at ensuring compatibility with the
upcoming Traits 6.0.0 release.

Fixes
-----

- Fix tests that fail against Traits 6.0.0 due to the removal
  of double nesting in list events. (#255)
- Replace a comment mention of ``AdaptedTo`` with ``Supports``. (#253)
- Remove dependence on ``clean_filename`` from Traits. (#252)
- Replace a use of the deprecated ``DictStrAny`` trait with
  ``Dict(Str, Any)``. (#250)


Version 4.9.0
=============

Released: 2019-11-19

This is a minor feature release with a small handful of fixes, and a single
new feature to make the ``IPythonKernelPlugin`` easier to use for applications.

Features
--------

- Add an option to allow the ``InternalIPKernel`` to initialise its kernel at
  kernel creation time. At some point in the future, this will become the
  default behaviour. (#227)

Fixes
-----

- Replace a use of the deprecated ``adapts`` function with
  ``register_factory``. (#234)
- In the ``IPKernelApp``, correctly restore the original state of
  ``IPython.utils.io.std*`` streams even if those streams didn't exist
  originally. (#232)
- Remove duplicate copyright header from autogenerated version file. (#220)

Tests
-----

- Remove a ``print`` call from a unit test. (#240)
- Add unit tests for the ``envisage.ui.single_project`` adapters. (#235)
- Add unit tests to check that ``InternalIPKernel`` doesn't affect
  ``sys.path``. (#233)
- Fix the test suite not to write to the user's ``~/.ipython`` directory.
  (#231)
- Fix the test suite not to write to the user's ``~/.enthought`` directory.
  (#230)
- Remove an unused import and a useless ``tearDown`` method in the
  ``IPythonKernel`` tests. (#223)
- Fix ``DeprecationWarning``s from uses of long-deprecated ``TestCase``
  methods. (#222)
- Add test eggs for Python 3.8. (#214)

Build
-----

- Rename changelog extension from ``.txt`` to ``.rst``. (#238)
- Update EDM version used in Travis CI and Appveyor. (#236)
- Add ``mock`` to test dependencies on Python 2. (#229)
- Fix status badges in ``README``. (#216)


Version 4.8.0
=============

Released: 2019-09-13

The main focus of this feature release is the ``IPythonKernelPlugin``, which
has been updated to work with the latest IPython-related packages from PyPI,
and is now much more careful about releasing resources allocated.

Also in this release, a number of outdated, incomplete or otherwise
nonfunctional pieces of code were removed.

Features
--------

- Improved ``repr`` for ``ExtensionPoint`` objects. (#142)

Changes
-------

- Drop support for Python versions older than 2.7 and Python 3 versions older
  than Python 3.5. (#139)
- The ``IPythonKernelPlugin`` now releases all allocated resources (threads,
  file descriptors, etc.) and undoes global state changes at plugin ``stop``
  time. (#188)
- Suppress the Ctrl-C message printed by the IPython kernel at start time.
  (#182)
- Add license headers to all files, and make license header statements
  consistent. (#192)

Fixes
-----

- Use a fixed pickle protocol when saving task layout state, to avoid
  cross-Python-version difficulties. (#179)
- Fix deprecation warnings from use of ``Logger.warn``. (#178)
- Fix some Python 3 syntax errors in example scripts. (#171)

Removals
--------

- Remove the unsupported and incomplete ``UpdateCheckerPlugin``. (#199)
- Remove the ``plugin.debug`` empty submodule. (#195)
- Remove the old ``IPythonShell`` plugin, which was based on pre-IPython 1.0.
  (#173)
- Remove the non-functional ``RefreshCodePlugin``. (#202)
- Remove ``project_runnable``, which was never functional. (#169)
- Remove outdated debugging fallback from the ``ExtensionPoint`` source. (#167)
- Remove ``FBIPlugin``. (#166)
- Remove the ``remote_editor`` plugins. (#137)

Documentation
-------------

- Add docstrings for tasks plugin extension points. (#181)
- Fix incorrect documentation for ``always_use_default_layout``. (#177)
- Spell "Pyface" correctly. (#176)
- NumPyDoc style fixes. (#168)
- Add API documentation, with corresponding build infrastructure. (#165)
- Fix invalid syntax in Tetris example. (#158)
- Use the Enthought Sphinx Theme for documentation. (#157)

Tests
-----

- Remove dependency on the ``nose`` package, and rename test modules. All
  tests can now be discovered and run using ``unittest``. (#200, #194)

Build
-----

- Revise version-handling mechanisms and other minor details
  in ``setup.py`` script. (#197, #190)
- Remove unused and outdated ``tox.ini`` file. (#201)
- Update ``etstool.py`` to work with a non-EDM bootstrap environment on
  Windows. (#203)
- Test against other ETS packages from source, using Travis CI cron jobs.
  (#162)
- Fix deprecated pieces in Travis CI configuration. (#160, #159)
- Update EDM version used, and clean up and simplify Travis CI and
  Appveyor configurations. (#152)
- Usability improvements to ``etstool.py``. (#145, #148)


Version 4.7.2
=============

Released: 03 May 2019

Fixes
-----

* Fix some broken imports and name errors in the ``envisage.developer``
  package. (#130)
* Add missing test data to support running tests on Python 3.7. (#136)
* Fix reversed interpretation of the
  ``TasksApplication.always_use_default_layout`` when creating task windows.
  (#144)
* In the ``InternalIPKernel`` plugin, restore original standard streams
  (``stdout``, ``stdin``, ``stderr``) at plugin stop time. (#146)
* In the ``InternalIPKernel`` plugin, fix ``ResourceWarnings`` from
  unclosed pipes attached to qt consoles. (#147)


Version 4.7.1
=============

Released : 31 January 2019

Changes
-------

* Replace use of deprecated ``HasTraits.set`` method (#118)

Fixes
-----

* Fix IPython GUI kernel issue when used with ipykernel 4.7.0 (#123)
* Fix infinite recursion issue when harvesting extension methods (#121)


Version 4.7.0
=============

Changes
-------

* Update CI setup and include ``ipykernel`` in devenv (#105, #111, #114)
* Use ``--gui`` rather than ``--matplotlib`` when starting IPython kernel (#101)
* Downgrade level of a logging message (#95)

Fixes
-----

* Fix old-style relative import (#109)
* Fix attractors example (#103)
* Stop the IOPubThread as part of IPython kernel shutdown (#100)
* Fix Sphinx conf to be able to build docs again (#91)
* Fix deprecated IPython import (#92)
* Fix task layout serialization under Python 3 (#90)


Version 4.6.0
=============

This is an incremental release, mainly consisting of bug fixes.  The most
significant change is the support for IPython >= 4 in the IPython plugin.

Thanks to @corranwebster, @dpinte, @itziakos, @jonathanrocher, @kamalx,
@rahulporuri, @robmcmullen, @sjagoe

Enhancements
------------

* IPython kernel plugin now supports IPython >= 4 (#82)
* Remove usage of deprecated IPython QtConsole API (#80)
* Defer selection of toolkit and avoid creating GUI applications as side-effects as
  much as possible (#77, #76)

Fixes
-----

* Fixes for tests under Python 3.5 (#86)
* Work around for issue with Traits in Python 3 (#78)
* Replace uses of ‘file’ and ‘execfile’ (#75)
* Fix MOTD_Using_Eggs example (#66)
* Fix broken and outdated links in documentation (#72)
* Fix link to docs from README (#70)
* Fix degenerate case where window is created with no layout (#44)


Version 4.5.1
=============

Enhancements
------------

* Add tox for testing package install (#67)

Fixes
-----

* Include missing test files in the package data (#67)
* Include missing test cases for Python 3.4 (#67)


Version 4.5.0
=============

New features
------------

* IPythonKernelPlugin for Tasks: run an IPython kernel within the
  envisage app and expose it as a service (#54).
* Envisage now supports Python 3.4 (#61).

Enhancements
------------

* Allow loading plugins from an egg basket even when some eggs are
  invalid (#40, #46).
* Add a simple ``GUIApplication`` to bootstrap basic plugin-driven
  applications (#34).
* Split the IPython kernel and IPython menu action into two separate
  plugins for flexibility (#57).

Fixes
-----

* Use new Traits interfaces and adaptation implementation (#37).
* Envisage now configures the logger with a ``NullHandler`` to avoid
  spurios unconfigured logger warnings (#45).
* Envisage no longer swallows exceptions in plugin startup (#50).
* Various fixes to continuous integration configuration (#47, #60).


Version 4.4.0
=============

The major component of this feature is to work with the new
``traits.adaptation`` mechanism in place of the deprecated
``traits.protocols``, maintaining compatibility with ``traits`` version
4.4.0.

This release also adds a new method to retrieve a service that is
required by the application and provides documentation and test updates.


New features
------------

* Added a simple GUIApplication class (673c8f6)
* Added a method to get a required service (94dfdea)

Enhancements
------------

* Updated to use the new traits.adaptation functionality (34fa5e6)

Fixes
-----

* Updated links to point to github instead of svn codebase (87cdb87)
* Fixed test cases and added to Travis-CI (6c11d9f)
