* Previously, when a kernel died due to an external cause, the
notebook/kernel mapping was not removed, so the kernel would
be resused even though it was dead.
* The heartbeat now properly removes the notebook/kernel mapping.
* Both the header and parent_header have a date field that cannot
be json serialized. This field is just removed for now, but
in the future, we will covert the date to a ISO8601 field.
* Better error handling around this code has also been added
to prevent the server from crashing due to malformed messages.
* Full kernel heartbeating is working.
* Connections between the notebook and server and now created
a new each time there is a WebSocket connection. Each channel is
also handled separately. This dramatically simplifies the
server code and makes for a more scalable system.
compact.
* Reduced padding between cells from 15px to 5px.
* Prompt width is now dynamic to grow/shrink as the prompt number
increases in width.
* Reduced padding between input and output from 15px to 5px.
* ipython_notebook_config.py is now created and staged.
* New certfile/keyfile config=True attributes for enabling SSL/TLS.
* Examples of usage added.
* New handling for --ip=*
* Aliases added.
* Old routers were not being shutdown and removed.
* We were incorrectly associating the new kernel with the notebook
(we were using the *old* kernel_id for this).
* General clean ups in the kernel manager.
* The .py notebook reader now uses that ast module to split
a plain python file into blocks. These blocks become cells in
the notebook.
* Proper mime types are used for xml (application/xml), json
(application/json) and python (application/x-python).
* Other fixes to file uploading.