April 2020
See the [JupyterLab
2.0.2](https://github.com/jupyterlab/jupyterlab/milestone/50?closed=1)
milestone on GitHub for the full list of pull requests and issues
closed.
- Fix cell execution when recording timing
([8057](https://github.com/jupyterlab/jupyterlab/pull/8057),
[8056](https://github.com/jupyterlab/jupyterlab/issues/8056))
- Fix font settings for the editor
([8004](https://github.com/jupyterlab/jupyterlab/pull/8004),
[7910](https://github.com/jupyterlab/jupyterlab/issues/7910))
- Avoid redundant checkpoint calls on loading a notebook
([7926](https://github.com/jupyterlab/jupyterlab/pull/7926),
[7889](https://github.com/jupyterlab/jupyterlab/issues/7889))
- For developers: make kernel `IFuture.done` typings more correct by
not including `undefined`
([8032](https://github.com/jupyterlab/jupyterlab/pull/8032))
[v2.0.0](https://github.com/jupyterlab/jupyterlab/releases)
February 2020
Here are some highlights for this release. See the [JupyterLab
2.0](https://github.com/jupyterlab/jupyterlab/milestone/36?closed=1)
milestone on GitHub for the full list of pull requests and issues
closed.
User-facing changes
- New user interface for notebook cell tags
([7407](https://github.com/jupyterlab/jupyterlab/pull/7407),
[7786](https://github.com/jupyterlab/jupyterlab/pull/7786))
<img alt="Notebook cell tags in the left sidebar next to an open notebook." src="https://raw.githubusercontent.com/jupyterlab/jupyterlab/3.1.x/docs/source/getting_started/changelog_celltags.png" class="jp-screenshot">
- File info display when hovering on a file in the file browser
([7485](https://github.com/jupyterlab/jupyterlab/pull/7485),
[7352](https://github.com/jupyterlab/jupyterlab/issues/7352))
<img alt="The file browser with a tooltip describing a notebook's info like the name, size, and kernel." src="https://raw.githubusercontent.com/jupyterlab/jupyterlab/3.1.x/docs/source/getting_started/changelog_fileinfo.png" class="jp-screenshot">
- Support for searching outputs in notebooks
([7258](https://github.com/jupyterlab/jupyterlab/pull/7258))
<img alt="A notebook with multiple cells and the cell output searching in the upper right." src="https://raw.githubusercontent.com/jupyterlab/jupyterlab/3.1.x/docs/source/getting_started/changelog_searchoutput.png" class="jp-screenshot">
- `Ctrl Shift .` and `Ctrl Shift ,` shortcuts move focus to the next
and previous tab bar in the main area, respectively
([7673](https://github.com/jupyterlab/jupyterlab/pull/7673))
- `Shift Home` and `Shift End` shortcuts in a notebook select all
cells from the current cell to the top or bottom of a notebook,
respectively
([7177](https://github.com/jupyterlab/jupyterlab/pull/7177))
- Explicit \"No Kernel\" button in the kernel selection dialog for new
notebooks
([7647](https://github.com/jupyterlab/jupyterlab/pull/7647))
- Notebook `recordTiming` advanced setting to control whether
execution timing information is stored in notebook files
([7578](https://github.com/jupyterlab/jupyterlab/pull/7578))
- \"Select current running or last run cell\" command added (requires
notebook `recordTiming` advanced setting to be set to true)
([7551](https://github.com/jupyterlab/jupyterlab/pull/7551))
- Codemirror `lineWiseCopyCut` advanced setting to control the
behavior of the copy/cut keyboard shortcuts when there is no
selection
([7842](https://github.com/jupyterlab/jupyterlab/pull/7842))
- Refreshed the command palette and property inspector sidebar icons
and user interfaces
([7577](https://github.com/jupyterlab/jupyterlab/pull/7577),
[7038](https://github.com/jupyterlab/jupyterlab/issues/7038),
[7733](https://github.com/jupyterlab/jupyterlab/pull/7733),
[7732](https://github.com/jupyterlab/jupyterlab/issues/7732),
[7718](https://github.com/jupyterlab/jupyterlab/pull/7718),
[7686](https://github.com/jupyterlab/jupyterlab/issues/7686))
- \"New File\" and \"New Markdown File\" items in file browser context
menu ([7483](https://github.com/jupyterlab/jupyterlab/pull/7483),
[4280](https://github.com/jupyterlab/jupyterlab/issues/4280))
- \"Download\" item in File menu
([7480](https://github.com/jupyterlab/jupyterlab/pull/7480))
- \"Restart Kernel and Run up to Selected Cell\" item in notebook
Kernel menu
([7789](https://github.com/jupyterlab/jupyterlab/pull/7789),
[6746](https://github.com/jupyterlab/jupyterlab/issues/6746))
- In extension manager, the \"enable\" button is now only shown for
installed extensions
([7482](https://github.com/jupyterlab/jupyterlab/pull/7482))
- Dialogs can now be closed by clicking outside of them
([7885](https://github.com/jupyterlab/jupyterlab/pull/7885),
[3784](https://github.com/jupyterlab/jupyterlab/issues/3784))
- `documentsearch:startWithReplace` command to open the document find
overlay with replace. There is not currently a default keyboard
shortcut for this, but one can be assigned as a custom keyboard
shortcut in Advanced Settings.
([7725](https://github.com/jupyterlab/jupyterlab/pull/7725))
- `` added to the CSV Viewer delimiter options
([7367](https://github.com/jupyterlab/jupyterlab/pull/7367),
[6324](https://github.com/jupyterlab/jupyterlab/issues/6324))
- The JSON viewer now only displays structure hints for arrays and
empty objects for a more streamlined feel
([7227](https://github.com/jupyterlab/jupyterlab/pull/7227))
- Optional platform-aware keyboard shortcut fields `linuxKeys`,
`macKeys`, and `winKeys` in keyboard shortcut definitions
([7589](https://github.com/jupyterlab/jupyterlab/pull/7589))
js
{
command: "application:toggle-mode",
selector: "body",
linuxKeys: ["Ctrl Shift M"], // only linux
macKeys: ["Cmd Shift Z"], // only mac
winKeys: ["Ctrl Shift B"], // only windows
keys: ["Accel Shift U"] // default shortcut
}
- Added options for `jupyter lab clean` to clean specific parts of the
build, such as `--extensions`, `--settings`, `--static`, and `--all`
([7583](https://github.com/jupyterlab/jupyterlab/pull/7583),
[6734](https://github.com/jupyterlab/jupyterlab/pull/6734))
- Removed the vega 4 and vega-lite 2 renderers (vega 5 and vega-lite 4
is included in JupyterLab by default). These legacy renderers may be
available via custom extensions
([7650](https://github.com/jupyterlab/jupyterlab/pull/7650),
[7523](https://github.com/jupyterlab/jupyterlab/issues/7523),
[7658](https://github.com/jupyterlab/jupyterlab/pull/7658))
- JupyterHub users should use the `c.Spawner.default_url = '/lab'`
setting instead of the deprecated and now removed `labhubapp`
([7724](https://github.com/jupyterlab/jupyterlab/pull/7724))
For developers
See `extension_migration` for help in
migrating extensions to JupyterLab 2.0.
Backward incompatible changes
- Switch from `phosphor` to `lumino` dependencies.
([7582](https://github.com/jupyterlab/jupyterlab/pull/7582),
[7534](https://github.com/jupyterlab/jupyterlab/issues/7534),
[7763](https://github.com/jupyterlab/jupyterlab/pull/7763),
[7762](https://github.com/jupyterlab/jupyterlab/issues/7762),
[7595](https://github.com/jupyterlab/jupyterlab/pull/7595))
- Factor out the `settingsregistry` and `statedb` packages from
coreutils
([7681](https://github.com/jupyterlab/jupyterlab/pull/7681),
[7615](https://github.com/jupyterlab/jupyterlab/issues/7615))
- Rework services architecture (sessions, kernels, terminals). Among
these changes, `ClientSession` is renamed to `SessionContext` and
the `IKernelConnection.connectToComm` method is replaced with
`IKernelConnection.createComm` and `IKernelConnection.hasComm`
methods.
([7252](https://github.com/jupyterlab/jupyterlab/pull/7252),
[7674](https://github.com/jupyterlab/jupyterlab/pull/7674),
[7820](https://github.com/jupyterlab/jupyterlab/pull/7820),
[7694](https://github.com/jupyterlab/jupyterlab/pull/7694),
[7690](https://github.com/jupyterlab/jupyterlab/issues/7690),
[7682](https://github.com/jupyterlab/jupyterlab/pull/7682))
- Upgrade to TypeScript 3.7
([7522](https://github.com/jupyterlab/jupyterlab/pull/7522))
- Remove `polling` from coreutils in favor for `lumino/polling`
([7617](https://github.com/jupyterlab/jupyterlab/pull/7617))
- TypeScript strict null checking in core packages
([7657](https://github.com/jupyterlab/jupyterlab/pull/7657),
[7607](https://github.com/jupyterlab/jupyterlab/pull/7607))
- Update state database list method to query based on namespace match.
([7742](https://github.com/jupyterlab/jupyterlab/pull/7742),
[7257](https://github.com/jupyterlab/jupyterlab/issues/7257))
- Address code todo items and deprecations for 2.0
([7720](https://github.com/jupyterlab/jupyterlab/pull/7720),
[7724](https://github.com/jupyterlab/jupyterlab/pull/7724))
- Update Console panel tracker widgets
([7705](https://github.com/jupyterlab/jupyterlab/pull/7705),
[7726](https://github.com/jupyterlab/jupyterlab/issues/7726),
[7648](https://github.com/jupyterlab/jupyterlab/issues/7648),
[7645](https://github.com/jupyterlab/jupyterlab/pull/7645))
- Update contribution guide to require node v12+
([7479](https://github.com/jupyterlab/jupyterlab/pull/7479))
- New API for the `Running` sidebar extension
([6895](https://github.com/jupyterlab/jupyterlab/pull/6895),
[6876](https://github.com/jupyterlab/jupyterlab/issues/6876))
- Clean up handling of icons under unified LabIcon (
[7192](https://github.com/jupyterlab/jupyterlab/pull/7192)
[7700](https://github.com/jupyterlab/jupyterlab/pull/7700),
[7765](https://github.com/jupyterlab/jupyterlab/issues/7765),
[7767](https://github.com/jupyterlab/jupyterlab/pull/7767),
[7800](https://github.com/jupyterlab/jupyterlab/pull/7800),
[7846](https://github.com/jupyterlab/jupyterlab/pull/7846),
[7859](https://github.com/jupyterlab/jupyterlab/issues/7859),
[7864](https://github.com/jupyterlab/jupyterlab/pull/7864),
[7886](https://github.com/jupyterlab/jupyterlab/pull/7886))
Other changes
- New property inspector used to display the properties of the
currently selected main area widget
([7665](https://github.com/jupyterlab/jupyterlab/pull/7665),
[7664](https://github.com/jupyterlab/jupyterlab/issues/7664),
[7718](https://github.com/jupyterlab/jupyterlab/pull/7718),
[7686](https://github.com/jupyterlab/jupyterlab/issues/7686))
- Allow metadata for launcher items
([7654](https://github.com/jupyterlab/jupyterlab/pull/7654),
[7652](https://github.com/jupyterlab/jupyterlab/issues/7652))
- Allow default file browser to restore manually.
([7695](https://github.com/jupyterlab/jupyterlab/pull/7695),
[4009](https://github.com/jupyterlab/jupyterlab/issues/4009))
- Upgrade bundled yarn to 1.21.1
([7691](https://github.com/jupyterlab/jupyterlab/pull/7691),
[7692](https://github.com/jupyterlab/jupyterlab/issues/7692))
- Make session dialogs configurable
([7618](https://github.com/jupyterlab/jupyterlab/pull/7618),
[7616](https://github.com/jupyterlab/jupyterlab/issues/7616))
- Support transient editor configs
([7611](https://github.com/jupyterlab/jupyterlab/pull/7611),
[7295](https://github.com/jupyterlab/jupyterlab/issues/7295))
- Optionally force new browser tab
([7603](https://github.com/jupyterlab/jupyterlab/pull/7603),
[7602](https://github.com/jupyterlab/jupyterlab/issues/7602))
- Update core dependencies (e.g., `codemirror`, `xterm.js`,
`markdown`, `fontawesome`, etc.)
([7590](https://github.com/jupyterlab/jupyterlab/pull/7590),
[7194](https://github.com/jupyterlab/jupyterlab/issues/7194),
[7326](https://github.com/jupyterlab/jupyterlab/pull/7326),
[6479](https://github.com/jupyterlab/jupyterlab/issues/6479),
[7769](https://github.com/jupyterlab/jupyterlab/pull/7769))
- Add storybook to `ui-components`
([7588](https://github.com/jupyterlab/jupyterlab/pull/7588),
[6799](https://github.com/jupyterlab/jupyterlab/issues/6799))
- Add explicit documentation encouraging people to re-use lab
components
([7543](https://github.com/jupyterlab/jupyterlab/pull/7543))
- Enable TypeScript sourcemaps for debugging locally installed
labextensions
([7541](https://github.com/jupyterlab/jupyterlab/pull/7541))
- Add `UseSignal` example to the docs
([7519](https://github.com/jupyterlab/jupyterlab/pull/7519))
- Add `env` prop to kernel options
([7499](https://github.com/jupyterlab/jupyterlab/pull/7499))
- Add kernelspec metadata
([7229](https://github.com/jupyterlab/jupyterlab/pull/7229),
[7228](https://github.com/jupyterlab/jupyterlab/issues/7228))
- Allow different mimetypes for the clipboard data
([7202](https://github.com/jupyterlab/jupyterlab/pull/7202))
- Add password dialog to apputils
([7855](https://github.com/jupyterlab/jupyterlab/pull/7855))
- Alias phosphor packages to lumino to allow a deprecation period for
phosphor
([7893](https://github.com/jupyterlab/jupyterlab/pull/7893))
- Match react version in ui-components peerdependencies
([7794](https://github.com/jupyterlab/jupyterlab/pull/7794))
- Fix lint-staged for both win and mac
([7784](https://github.com/jupyterlab/jupyterlab/pull/7784))
- Update websocket workaround for node environments
([7780](https://github.com/jupyterlab/jupyterlab/pull/7780),
[6934](https://github.com/jupyterlab/jupyterlab/pull/6934))
- Fix handling of linked extensions
([7728](https://github.com/jupyterlab/jupyterlab/pull/7728),
[6738](https://github.com/jupyterlab/jupyterlab/issues/6738))
- Fix extension compatibility checks for prereleases and extensions
supporting multiple major versions of JupyterLab
([7723](https://github.com/jupyterlab/jupyterlab/pull/7723),
[7241](https://github.com/jupyterlab/jupyterlab/issues/7241),
[7919](https://github.com/jupyterlab/jupyterlab/pull/7919))
- Teach update-dependency about more range specifiers and make it
adopt the current range for any tag
([7709](https://github.com/jupyterlab/jupyterlab/pull/7709))
- Add support for giving a rank to items in the top area
([7278](https://github.com/jupyterlab/jupyterlab/pull/7278))
- Apply all options to the initial JupyterLab application instance
([7251](https://github.com/jupyterlab/jupyterlab/pull/7251))
Bugfixes
- \"Copy Shareable Link\" in the file browser context menu now
properly works in JupyterHub
([7906](https://github.com/jupyterlab/jupyterlab/pull/7906))
- Update Mathjax CDN in the cell and console examples
([7680](https://github.com/jupyterlab/jupyterlab/pull/7680))
- Revert ensure-max-old-space now that Node 12+ has better default
memory ceilings
([7677](https://github.com/jupyterlab/jupyterlab/pull/7677),
[7675](https://github.com/jupyterlab/jupyterlab/issues/7675))
- Resolve race condition between default file browser and tree urls.
([7676](https://github.com/jupyterlab/jupyterlab/pull/7676),
[4009](https://github.com/jupyterlab/jupyterlab/issues/4009))
- Fix handling of code editor refresh
([7672](https://github.com/jupyterlab/jupyterlab/pull/7672),
[7671](https://github.com/jupyterlab/jupyterlab/issues/7671))
- Start new notebooks in edit mode
([7666](https://github.com/jupyterlab/jupyterlab/pull/7666),
[6731](https://github.com/jupyterlab/jupyterlab/issues/6731))
- Use consistent versions of React
([7661](https://github.com/jupyterlab/jupyterlab/pull/7661),
[7655](https://github.com/jupyterlab/jupyterlab/issues/7655))
- Add scrollbar styles to nbconvert-css
([7653](https://github.com/jupyterlab/jupyterlab/pull/7653))
- Close output views when corresponding notebooks are closed
([7633](https://github.com/jupyterlab/jupyterlab/pull/7633),
[7301](https://github.com/jupyterlab/jupyterlab/issues/7301))
- Fixed incorrect white background for new command palette icon
([7609](https://github.com/jupyterlab/jupyterlab/pull/7609),
[7577](https://github.com/jupyterlab/jupyterlab/issues/7577))
- Block fetching the settings for a plugin that is disabled
([7147](https://github.com/jupyterlab/jupyterlab/pull/7147))
- When timing metadata changes, ensure signal fires
([7576](https://github.com/jupyterlab/jupyterlab/pull/7576))
- Prevent memory leaks in Vega renderer
([7564](https://github.com/jupyterlab/jupyterlab/pull/7564))
- Handle cell execution cancellation when cell is disposed
([7555](https://github.com/jupyterlab/jupyterlab/pull/7555),
[7554](https://github.com/jupyterlab/jupyterlab/issues/7554))
- Fix dropdown option style issue on Windows
([7513](https://github.com/jupyterlab/jupyterlab/pull/7513))
- Make sure label is linked to a control when checking for element
type ([7458](https://github.com/jupyterlab/jupyterlab/pull/7458))
- Refine log console message UX
([7448](https://github.com/jupyterlab/jupyterlab/pull/7448),
[7444](https://github.com/jupyterlab/jupyterlab/issues/7444),
[7443](https://github.com/jupyterlab/jupyterlab/issues/7443))
- Fix multicursor backspacing
([7401](https://github.com/jupyterlab/jupyterlab/pull/7401),
[7205](https://github.com/jupyterlab/jupyterlab/issues/7205))
- Reset log display and count when non-notebook tab gets activated
([7334](https://github.com/jupyterlab/jupyterlab/pull/7334),
[7325](https://github.com/jupyterlab/jupyterlab/issues/7325))
- Fix Safari multiple tabs by working around a Safari bug.
([7316](https://github.com/jupyterlab/jupyterlab/pull/7316),
[6921](https://github.com/jupyterlab/jupyterlab/issues/6921))
- Skip custom click behavior on links when the download attribute is
set ([7311](https://github.com/jupyterlab/jupyterlab/pull/7311),
[5443](https://github.com/jupyterlab/jupyterlab/issues/5443))
- Fix context menu hit test to deal with SVG nodes.
([7242](https://github.com/jupyterlab/jupyterlab/pull/7242),
[7224](https://github.com/jupyterlab/jupyterlab/issues/7224))
- Fix overwriting of target attribute of anchors rendered by
`IPython.display`
([7215](https://github.com/jupyterlab/jupyterlab/pull/7215),
[6827](https://github.com/jupyterlab/jupyterlab/issues/6827))
- Fix file browser location in tree view
([7155](https://github.com/jupyterlab/jupyterlab/pull/7155))
- Stop too many fetch calls in docmanager-extension
([7879](https://github.com/jupyterlab/jupyterlab/pull/7879),
[7874](https://github.com/jupyterlab/jupyterlab/pull/7874))
- Ensures that `Shift Tab` dedent shortcut works correctly in the file
editor
([7865](https://github.com/jupyterlab/jupyterlab/pull/7865))
- Fix unexpected jump to last search result when using documentsearch
([7835](https://github.com/jupyterlab/jupyterlab/pull/7835))
- Fixed refresh issue for html viewer
([7824](https://github.com/jupyterlab/jupyterlab/pull/7824),
[7552](https://github.com/jupyterlab/jupyterlab/pull/7552))
- Fix for center-aligned images with IPython.display.image
([7798](https://github.com/jupyterlab/jupyterlab/pull/7798))
- Changes to setting editor should trigger application dirty state
([7774](https://github.com/jupyterlab/jupyterlab/pull/7774),
[7757](https://github.com/jupyterlab/jupyterlab/issues/7757))
- Move vega from \"devdependencies\" to \"dependencies\"
([7699](https://github.com/jupyterlab/jupyterlab/pull/7699),
[7689](https://github.com/jupyterlab/jupyterlab/issues/7689))
- Restore default file browser manually.
([7695](https://github.com/jupyterlab/jupyterlab/pull/7695),
[4009](https://github.com/jupyterlab/jupyterlab/issues/4009))
- Use default `app_dir` when `app_dir` is `''`
([7268](https://github.com/jupyterlab/jupyterlab/pull/7268),
[7264](https://github.com/jupyterlab/jupyterlab/issues/7264))