JupyterLab v1.0.0 Release Notes

  • June 28, 2019

    ๐Ÿ‘€ See the JupyterLab 1.0.0 milestone on GitHub for the full list of pull requests and issues closed ๐Ÿš€ in 1.0.0, and other 1.0.x milestones for bugs fixed in patch releases.

    Find and Replace

    ๐Ÿ“„

    ๐Ÿ‘ We have added first class support for find and replace across ๐Ÿ‘ JupyterLab. It is currently supported in notebooks and text files and is ๐Ÿ‘ extensible for other widgets who wish to support it. (#6350, #6322, #6301, #6282, #6256, #6241, #6237, #6159, #6081, #6155, #6094, #6024, #5937, #5795, #1074)

    Status Bar

    โšก๏ธ

    We have integrated the JupyterLab Status Bar ๐Ÿ“ฆ package package into the core distribution. Extensions can add their own status to it as well (#5577, #5525 #5990, #5982, #5514, #5508, #5352).

    JupyterHub Integration

    • We now include the JupyterHub extension in core JupyterLab, so you no longer need to install @jupyterlab/hub-extension. (#6451, #6428)
    • JupyterLab now has a File > Logout menu entry when running with JupyterHub (#6087, #5966)

    ๐Ÿ–จ Printing

    ๐Ÿ–จ We now have a printing system that allows extensions to customize how ๐Ÿ–จ documents and activities are printed. (#5850, #1314)

    Other User Facing Changes

    • ๐Ÿ‘ The launcher displays longer kernel names and supports keyboard navigation (#6587)
    • Notebook outputs without any valid MimeType renderers will not be displayed, instead of displaying an error (#6559, #6216)
    • โž• Add tooltip to file browser root breadcrumb icon showing the server root, if it is available (#6552)
    • ๐Ÿ’ป Downloading a file will no longer open a new browser window (#6546)
    • ๐Ÿšš Rename the help \"Inspector\" to \"Contextual Help\" and move it to the \"Help\" menu (#6493, #6488, #6678, #6671)
    • โšก๏ธ Update many of the icons to make them more consistent (#6672, #6618, #6664, #6621)
    • โšก๏ธ Update the settings UI to remove the table view (#6654, #6622, #6653, #6623, #6646, #6642)
    • ๐Ÿ“š Replace FAQ Extension with link to JupyterLab documentation (#6628, #6608, #6625, #6610)
    • ๐Ÿ”„ Change the default keyboard shortcut for closing a tab to be Alt+w instead of Cmd/Ctrl+w to avoid conflicts with operating systems. (#6486, #6357)
    • ๐Ÿ‘‰ Show help text in Inspector window to describe you should select a function (#6476)
    • ๐Ÿ›  Fixes SVG rendering (#6469, #6295)
    • โž• Add support for dropping a tab in the tab bar area. (#6454, #5406)
    • 0๏ธโƒฃ Switch some default shortcuts to use Accel instead of Ctrl so they are more natural for Mac users (#6447, #5023)
    • โž• Add ability to tell between hover and selected command palette items (#6407, #279)
    • ๐Ÿ’ป Hide the \"Last Modified\" column when the file browser is narrow (#6406, #6093)
    • ๐Ÿ‘Œ Support copy/paste in terminal and Mac OS using Ctrl+C and Ctrl+V (#6391, #6385, #1146)
    • ๐Ÿ‘Œ Support scrolling in running kernels panel (#6383, #6371)
    • โž• Adds ability to \"Merge Selected Cells\" in the context menu in the notebook (#6375, #6318)
    • Turn On Accessibility In Xterm.js to make it more compatible for screen readers (#6359)
    • When selecting cells using the keyboard shortcuts, we now skip collapsed cells (#6356, #3233)
    • ๐Ÿ‘Œ Supporting opening .geojson files in JSON viewer (#6349)
    • ๐ŸŽ Performance fixes for text-based progress bars (#6304, #4202)
    • โž• Add support for rendering Vega 5 and Vega Lite 3 while keeping the existing Vega 4 and Vega Lite 2 renderers (#6294, #6133, #6128, #6689, #6685, #6684, #6675, #6591, #6572)
    • Drag and drop console cells into a notebook or text editor (#5585, #4847)
    • Drag and drop notebook cells into a console or text editor (#5571, #3732)
    • The extension manager search now sorts extensions by the score assigned to them by NPM instead of alphabetically (#5649)
    • ๐Ÿ”” Notify the user when a kernel is automatically restarted, for example, if crashes from an out of memory error (#6246, #4273)
    • ๐Ÿ”ฆ Expose the extension manager in a command and menu item (#6200)
    • โž• Add command to render all Markdown cells (#6029, #6017)
    • ๐Ÿ‘Œ Supports using shift to select text in output area (#6015, #4800)
    • โช Output areas that opened in new views are restored properly now on reload (#5981, #5976)
    • โž• Add support for managing notebook metadata under a new \"Advanced Tools\" section in the cell tools area. The cell and notebook metadata now always reflect the current state of the notebook (#5968, #5200)
    • Inherit terminal theme from core theme (#5964)
    • โž• Adds a built-in HTML viewer so that you can view HTML files (#5962, #5855, #2369)
    • ๐Ÿ†• New workspaces are now automatically generated when you create a new window with the same workspace name. (#5950, #5854, #5830, #5214)
    • We now add a hint to the context menu to describe how you can access the native browser menu (#5940, #4023)
    • The tabs on the left panel have changed to make them more understandable (#5920, #5269)
    • Start a new terminal when the page is refreshed and the old terminal has died (#5917)
    • โž• Add a command to open the main menus, which can be assigned to a keyboard shortcut to open and navigate menus without a mouse (#5910, #3074)
    • โšก๏ธ The contextual help now updates based on changes in the cursor from the mouse instead of just from the keyboard (#5906, #5899)
    • โšก๏ธ The launcher now updates when the kernels change on the server (#5904, #5676)
    • Retain cell auto scroll behavior even when a cell output is cleared (#5817, #4028)
    • If you link to a relative path that is not a file in a markdown cell, this will now be preserved instead of changing it to a file URL (#5814)
    • โž• Adds the ability to link to a certain row in a CSV file and have the viewer open to that row (#5727, #5720)
    • ๐ŸŽ We have improved the performance of switching to a large notebook (#5700, #4292, #2639)
    • ๐Ÿ‘ The vdom extension now supports event handling, so that you can have kernel code run in response to user interaction with the UI (#5670)
    • โž• Adds the ability to run \"Run All Code\" and \"Restart Kernel and Run All Code\" in code and markdown files (#5641, #5579)
    • We now remember what line ending a text file has when loading it, so that files with CRLF line endings will properly be saved with the same endings (#5622, #4464, #3901, #3706)
    • ๐Ÿ›  Fixes rendering of SVG elements in HTML MimeType output (#5610, #5610, #5589)
    • ๐Ÿ‘ Allow copying files by holding down Ctrl when dragging them in the file browser (#5584, #3235)
    • ๐Ÿ’ป Switch the hover modified time in the file browser to use the local format (#5567)
    • 0๏ธโƒฃ We have added a default keyboard shortcut of Ctrl Shift Q for closing and cleaning up a file (#5534, #4390)
    • โž• Adds the ability to find and go to a certain line in the CSV viewer (#5523)
    • โž• Add the ability to create new text and markdown files from the launcher and command palette (#5512, #5511)
    • ๐Ÿ’ป A \"New Folder\" option has been added to the file browser context menu (#5447)
    • The ANSI colors are now the same as those in the classic notebook (#5336, #3773)
    • Send complete statements instead of current lines when stepping through code in a cell (#6515, #6063)
    • ๐Ÿ’… Description list styles (dl, dt, dd) are improved to be consistent with the nteract project (#5682, #2399)

    Settings

    • The settings system has been rewritten (#5470, #5298) and now uses json5 as the syntax, which supports comments and other features for better human readability (#6343, #6199).
    • The keyboard shortcut system has been rewritten and now displays a list of system commands in the settings comments (#5812, #5562).

    There are new settings for many following items, including:

    • โž• Adds an option to shut down terminals and notebook kernels when they are closed (#6285, #6275)
    • Scrolling past the end of a notebooks and text editor document (#5542, #5271, #5652, #4429)
    • Text editor code folding, rulers, and active line highlighting (#5761, #4083, #5750, #4179, #5529, #5528)
    • Markdown viewer options (#5901, #3940)
    • โช Terminal scrollback and other settings (#5609, #3985)
    • The autosave interval (#5645, #5619)
    • ๐Ÿ’ป The file browser showing the current active file (#5698, #4258)
    • Custom scrollbar styling for dark themes (#6026, #4867)

    ๐Ÿ’ป Command Line Changes

    • Installing extensions will be quieter and adds a --debug to extension installing (#6567, #6499, #5986)
    • ๐Ÿ‘ We now support running JupyterLab when its application directory is a symlink (#6240, #6166)
    • โž• Add --all flag to labextension uninstall to remove all extensions (#6058, #6006)
    • โž• Adds the ability to override the base URLs from the config (#5518, #5503)
    • โšก๏ธ Updates to workspaces CLI command (#6473, #5977, #6276, #6234, #6210, #5975, #5695, #5694)

    Extension Development Changes

    • We have rewritten how extensions provide keyboard shortcuts and interact with the settings system. If you previously defined keyboard shortcuts or used the settings mechanism, you will need to update your extension (#5470, #5298)
    • ๐Ÿ”Œ We have renamed the plugin type from JupyterLabPlugin to JupyterFrontEndPlugin. The application arg is also renamed from JupyterLab to JupyterFrontEnd and some its functionality has been moved to a separate ILabShell plugin (#5845, #5919)
    • The lab shell addToMainArea, addToLeftArea, addToTopArea, addToRightArea, and addToBottomArea functions have been replaced with a single add() function that takes the area as an argument. Replace addToMainArea(widget, options) with add(widget, 'main', options), etc. (#5845)
    • ๐Ÿ“‡ Rename pageUrl to appUrl in the server connection (#6509, #6508, #6585, #6584)
    • โšก๏ธ MainAreaWidget instances now forward update requests to their content (#6586, #6571)
    • ๐Ÿšš The theme data attributes are renamed and moved to the document body element. If you are relying on these attributes in CSS to conditionally style based on the theme, you should update their names. For example data-theme-light is now data-jp-theme-light. (#6566, #6554)
    • Extensions which require CSS should no longer import their CSS files into their Javascript files. Instead, they should specify a root CSS file in the style attribute in their package.json, and JupyterLab will automatically import that CSS file. (#6533, #6530, #6395, #6390)
    • Dialog.prompt has been replaced by a number of type-specific dialogs such as InputDialog.getString, InputDialog.getBoolean, etc. (#6522, #6378, #6327, #6326)
    • 0๏ธโƒฃ When a RenderMime widget is re-rendered, the default behavior is to remove any existing content in the DOM. This can be overridden if needed. (#6513, #6505, #6497)
    • โšก๏ธ We have updated our internal TypeScript version to 3.5.1 and our compile target to ES2017. Extensions may need to upgrade their TypeScript version and target as well. (#6440, #6224)
    • โšก๏ธ We have updated the typings for some of the Kernel messages so that they better match the spec. (#6433)
    • ๐Ÿšฆ A connectionFailure signal has been added to some of the manager classes, which can be used to detect when a connection to the server is lost (#6399, #6176, #3324)
    • โž• Add rate limiting and polling utilities to coreutils to use for throttling and debouncing of API requests (#6345, #6346, #6401, #6305, #6157, #6192, #6186, #6141, #3929, #6141, #3929, #6186, #6192, #6401 ,#6305, #6157)
    • Require session when instantiating terminal widget (#6339, #5061)
    • ๐Ÿšฆ Provides a signal to see what items are opened in a directory listing (#6270, #6269)
    • Ads the ability to add widget above the main work area to a top header area (#5936)
    • โœ… Renames contextMenuFirst to contextMenuHitTest in the JupyterFrontEnd (#5932)
    • โœ‚ Removes the initialCommand arg from the terminal creation command. (#5916)
    • โž• Adds --jp-code-cursor-width0, --jp-code-cursor-width1, and --jp-code-cursor-width2 variables to the themes to support changing the cursor width if you change the font size (#5898)
    • โž• Adds the ability to insert a new item to the toolbar before or after another item (#5896, #5894)
    • โž• Adds the ability for extensions to register new CodeMirror modes (#5829)
    • We have removed the JUPYTERLAB_xxx_LOADER Webpack loaders, instead you should use the loader directly in the URL as Webpack supports it (#5709, #4406)
    • โž• Adds the ability to handle fragments for document widgets (#5630, #5599)
    • ๐Ÿ“ฆ We have added a @jupyterlab/ui-components package that contains reusable React components to be used internally and in extensions. Feel free to use this to create extension UIs with consistent styles (#5538)
    • The showErrorMessage function now lets you customize the buttons it uses (#5513)
    • We now provide helpers for using React components within JupyterLab. If you were previously using ReactElementWidget you should switch to using ReactWidget. (#5479, #5766, #6595, #6595)
    • ๐Ÿšš The share link command has been moved to its own extension so that it can be overridden (#5460, #5388)
    • Creating a new services session now requires passing a kernel model instead of a kernel instance (#6503, #6142)
    • โฌ†๏ธ We upgraded the Webpack raw file loader. The new version of the raw loader exports ES2015 modules, so this may require changes in extensions that import files using the raw loader. For example, if you did require('myfile.md') to get the content of myfile.md as a string, you now should import it using ES2015 import syntax, or use require(\'myfile.md\').default.
    • ๐Ÿ‘ Widget factories now can support custom cloning behavior from an optional source widget (#6060, #6044)
    • We have renamed the type InstanceTracker to WidgetTracker (#6569).
    • In order to add widgets to the main area (e.g. as in the old XKCD extension tutorial), the correct syntax is now app.shell.add(widget) or app.shell.add(widget, 'main'), see here.