* 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.
In a notebook setting being able to delete and add cells makes it
virtually impossible to correctly guess what the next input
prompt number should be. We now follow the convention that our
prompts look like "In [ ]:" before execution.
In this mode, a new cell is not created after the current cell
is run. Once the cell is run, the current input is cleared, so
it acts just like the terminal.
* Extra enter on FF is fixed by hooking into CodeMirror's
onKeyEvent hook. We now have CodeMirror ignore shift-enter
completely as we handle it ourselves.
* The cell execution logic in notebook.js has been refactored and
the Run All/Selected buttons have been hooked up.