# Change log summary For detailed changes from the prior release, click on the version number, and its link will bring up a GitHub listing of changes. Use `git log` on the command line for details. ## [Unreleased] 0.7 ### Added - Implement Services API [\#705](https://github.com/jupyterhub/jupyterhub/pull/705) - Add `/api/` and `/api/info` endpoints [\#675](https://github.com/jupyterhub/jupyterhub/pull/675) - Add documentation for JupyterLab, pySpark configuration, troubleshooting, and more. - Add logging of error if adding users already in database. [\#689](https://github.com/jupyterhub/jupyterhub/pull/689) - Add HubAuth class for authenticating with JupyterHub. This class can be used by any application, even outside tornado. - Add user groups. - Add `/hub/user-redirect/...` URL for redirecting users to a file on their own server. ### Changed - Always install with setuptools but not eggs (effectively require `pip install .`) [\#722](https://github.com/jupyterhub/jupyterhub/pull/722) - Updated formatting of changelog. [\#711](https://github.com/jupyterhub/jupyterhub/pull/711) - Single-user server is provided by JupyterHub package, so single-user servers depend on JupyterHub now. ### Fixed - Fix docker repository location [\#719](https://github.com/jupyterhub/jupyterhub/pull/719) - Fix swagger spec conformance and timestamp type in API spec - Various redirect-loop-causing bugs have been fixed. ### Removed - Deprecate `--no-ssl` command line option. It has no meaning and warns if used. [\#789](https://github.com/jupyterhub/jupyterhub/pull/789) - Deprecate `%U` username substitution in favor of `{username}`. [\#748](https://github.com/jupyterhub/jupyterhub/pull/748) - Removed deprecated SwarmSpawner link. [\#699](https://github.com/jupyterhub/jupyterhub/pull/699) ## 0.6 ### [0.6.1] - 2016-05-04 Bugfixes on 0.6: - statsd is an optional dependency, only needed if in use - Notice more quickly when servers have crashed - Better error pages for proxy errors - Add Stop All button to admin panel for stopping all servers at once ### [0.6.0] - 2016-04-25 - JupyterHub has moved to a new `jupyterhub` namespace on GitHub and Docker. What was `juptyer/jupyterhub` is now `jupyterhub/jupyterhub`, etc. - `jupyterhub/jupyterhub` image on DockerHub no longer loads the jupyterhub_config.py in an ONBUILD step. A new `jupyterhub/jupyterhub-onbuild` image does this - Add statsd support, via `c.JupyterHub.statsd_{host,port,prefix}` - Update to traitlets 4.1 `@default`, `@observe` APIs for traits - Allow disabling PAM sessions via `c.PAMAuthenticator.open_sessions = False`. This may be needed on SELinux-enabled systems, where our PAM session logic often does not work properly - Add `Spawner.environment` configurable, for defining extra environment variables to load for single-user servers - JupyterHub API tokens can be pregenerated and loaded via `JupyterHub.api_tokens`, a dict of `token: username`. - JupyterHub API tokens can be requested via the REST API, with a POST request to `/api/authorizations/token`. This can only be used if the Authenticator has a username and password. - Various fixes for user URLs and redirects ## [0.5] - 2016-03-07 - Single-user server must be run with Jupyter Notebook ≥ 4.0 - Require `--no-ssl` confirmation to allow the Hub to be run without SSL (e.g. behind SSL termination in nginx) - Add lengths to text fields for MySQL support - Add `Spawner.disable_user_config` for preventing user-owned configuration from modifying single-user servers. - Fixes for MySQL support. - Add ability to run each user's server on its own subdomain. Requires wildcard DNS and wildcard SSL to be feasible. Enable subdomains by setting `JupyterHub.subdomain_host = 'https://jupyterhub.domain.tld[:port]'`. - Use `127.0.0.1` for local communication instead of `localhost`, avoiding issues with DNS on some systems. - Fix race that could add users to proxy prematurely if spawning is slow. ## 0.4 ### [0.4.1] - 2016-02-03 Fix removal of `/login` page in 0.4.0, breaking some OAuth providers. ### [0.4.0] - 2016-02-01 - Add `Spawner.user_options_form` for specifying an HTML form to present to users, allowing users to influence the spawning of their own servers. - Add `Authenticator.pre_spawn_start` and `Authenticator.post_spawn_stop` hooks, so that Authenticators can do setup or teardown (e.g. passing credentials to Spawner, mounting data sources, etc.). These methods are typically used with custom Authenticator+Spawner pairs. - 0.4 will be the last JupyterHub release where single-user servers running IPython 3 is supported instead of Notebook ≥ 4.0. ## [0.3] - 2015-11-04 - No longer make the user starting the Hub an admin - start PAM sessions on login - hooks for Authenticators to fire before spawners start and after they stop, allowing deeper interaction between Spawner/Authenticator pairs. - login redirect fixes ## [0.2] - 2015-07-12 - Based on standalone traitlets instead of IPython.utils.traitlets - multiple users in admin panel - Fixes for usernames that require escaping ## 0.1 - 2015-03-07 First preview release [Unreleased]: https://github.com/jupyterhub/jupyterhub/compare/0.6.1...HEAD [0.6.1]: https://github.com/jupyterhub/jupyterhub/compare/0.6.0...0.6.1 [0.6.0]: https://github.com/jupyterhub/jupyterhub/compare/0.5.0...0.6.0 [0.5]: https://github.com/jupyterhub/jupyterhub/compare/0.4.1...0.5.0 [0.4.1]: https://github.com/jupyterhub/jupyterhub/compare/0.4.0...0.4.1 [0.4.0]: https://github.com/jupyterhub/jupyterhub/compare/0.3.0...0.4.0 [0.3]: https://github.com/jupyterhub/jupyterhub/compare/0.2.0...0.3.0 [0.2]: https://github.com/jupyterhub/jupyterhub/compare/0.1.0...0.2.0