@jupyterlab/ui-components
The
@jupyterlab/ui-components
package provides UI elements that are widely used in JupyterLab core,
and that can be reused in your own extensions.
For example, all of the icons in JupyterLab core can be reused via
LabIcon
. You can also use LabIcon
to create your own custom icons
that will be able to automatically change color to match the current
JupyterLab theme.
LabIcon
- set up and render icons
LabIcon
is the icon class used by JupyterLab, and is part of the new
icon system introduced in JupyterLab v2.0.
How JupyterLab handles icons
The @jupyterlab/ui-components package provides icons to the rest of
JupyterLab, in the form of a set of LabIcon
instances (currently about
80). All of the icons in the core JupyterLab packages are rendered using
one of these LabIcon
instances.
Using the icons in your own code
You can use any of JupyterLab icons in your own code via an import
statement. For example, to use jupyterIcon
you would first do:
import { jupyterIcon } from '@jupyterlab/ui-components';
How to render an icon into a DOM node
Icons can be added as children to any div
or span
nodes using the
icon.element(...)
method (where icon
is any instance of LabIcon
).
For example, to render the Jupyter icon you could do:
jupyterIcon.element({
container: elem,
height: '16px',
width: '16px',
marginLeft: '2px'
});
where elem
is any HTMLElement
with a div
or span
tag. As shown
in the above example, the icon can be styled by passing CSS parameters
into .element(...)
. Any valid CSS parameter can be used (one catch:
snake case params do have to be converted to camel case: instead of
foo-bar: '8px'
, you’d need to use fooBar: '8px'
.
How to render an icon as a React component
Icons can also be rendered using React. The icon.react
parameter holds
a standard React component that will display the icon on render. Like
any React component, icon.react
can be used in various ways.
For example, here is how you would add the Jupyter icon to the render
tree of another React component:
public render() {
return (
<div className="outer">
<div className="inner">
<jupyterIcon.react tag="span" right="7px" top="5px" />
"and here's a text node"
</div>
</div>
);
}
Alternatively, you can just render the icon directly into any existing
DOM node elem
by using the ReactDOM
module:
ReactDOM.render(jupyterIcon.react, elem);
If do you use ReactDOM
to render, and if the elem
node is ever
removed from the DOM, you’ll first need to clean it up:
ReactDOM.unmountComponentAtNode(elem);
This cleanup step is not a special property of LabIcon
, but is instead
needed for any React component that is rendered directly at the top
level by ReactDOM
: failure to call unmountComponentAtNode
can result
in a memory leak.
How to create your own custom LabIcon
You can create your own custom icon by constructing a new instance of
LabIcon
:
export const fooIcon = new LabIcon({
name: 'barpkg:foo',
svgstr: '<svg>...</svg>'
});
where name
should be of the form “your-pkg:icon-name”, and svgstr
is
the raw contents of your icon’s svg file.
How to create a new LabIcon
from an external svg file
Although you can copy-and-paste an svg directly into the LabIcon
constructor, the best practice is to keep the svg for each of your icons
in its own separate svg file. You will need to have an svg.d.ts
file
at the root of your project’s src
directory:
declare module '*.svg' {
const value: string;
export default value;
}
You can then import
the contents of an svg file:
import fooSvgstr from 'path-to-your/foo.svg';
export const fooIcon = new LabIcon({
name: 'barpkg:foo',
svgstr: fooSvgstr
});
Sync icon color to JupyterLab theme
Example svgs with class annotation can be found in ui-components/style/icons
You can ensure that the colors of your custom LabIcon
sync up to the
colors of the current JuptyerLab theme by adding appropriate class
annotations to each colored element of your icon's svg.
In other words, each element of your svg that a fill="..."
or a
stroke="..."
property should also have a class="jp-icon<whatever>"
property.
Available icon classes
Icon-related CSS classes are defined in ui-components/style/icons.css
All colors shown are for the standard light/dark theme, mouse over for
hex values.
jp-iconX
: contrast to theme background
- jp-icon0: #111 / #fff
- jp-icon1: #212121 / #fff
- jp-icon2: #424242 / #eee
- jp-icon3: #616161 / #bdbdbd
- jp-icon4: #757575 / #757575
Most one-color icons in JupyterLab (including the sidebar and toolbar
icons) are colored using the jp-icon3
class.
For light/dark themes, jp-icon0
corresponds to the darkest/lighest
background color, while jp-icon1
is somewhat lighter/darker, and so
forth.
jp-icon-accentX
: match to theme background
- jp-icon-accent0: #fff / #111
- jp-icon-accent1: #fff / #212121
- jp-icon-accent2: #eee / #424242
- jp-icon-accent3: #bdbdbd / #616161
- jp-icon-accent4: #757575 / #757575
For light/dark themes, jp-icon-accent0
corresponds to the
lighest/darkest background color, while jp-icon-accent1
is somewhat
darker/lighter, and so forth.
Adding classes to a one-color icon
For most simple, one-color icons, it is desirable for the icon's color
to strongly constrast with that of the application's background. You can
acheive this using one of the jp-iconX
classes.
Example: check icon
svg source:
<svg xmlns="http://www.w3.org/2000/svg" width="100" viewBox="0 0 24 24">
<path
class="jp-icon3"
fill="#616161"
d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"
/>
</svg>
rendered icon:
Adding classes to a multi-colored icon
For more complex icons, each element that needs to match the background
should be annotated with a jp-icon-accentX
class, while each element
that needs to contrast with the background should be annotated with a
jp-iconX
class.
Example: close-circle icon
svg source:
<svg xmlns="http://www.w3.org/2000/svg" width="100" viewBox="0 0 24 24">
<circle class="jp-icon3" fill="#616161" cx="12" cy="12" r="11" />
<rect
class="jp-icon-accent0"
fill="#fff"
height="18"
width="2"
x="11"
y="3"
transform="rotate(315, 12, 12)"
/>
<rect
class="jp-icon-accent0"
fill="#fff"
height="18"
width="2"
x="11"
y="3"
transform="rotate(45, 12, 12)"
/>
</svg>
rendered icon:
Background
Icon handling in Jupyterlab
Pre JupyterLab 2.0, most icons were created using the
icons-as-css-background pattern:
-
Set up the icon’s svg as a background-image
in CSS:
.jp-FooIcon {
background-image: url('path-to-your/foo.svg');
}
-
Add the icon to the DOM by constructing an otherwise empty DOM node
with the appropriate class:
const e = document.createElement('div');
e.className = 'jp-FooIcon';
document.body.append(e);
What you end up with is a single DOM node that has the “foo” icon as a
background image.
Post JupyterLab 2.0, nearly all icons in core are now created using
LabIcon
and the icons-as-inline-svg pattern:
-
Construct a new instance of LabIcon from the icon’s name and svg:
export const fooIcon = new LabIcon({
name: 'barpkg:foo',
svgstr: '<svg>...</svg>'
});
-
Add the icon to the DOM using the appropriate property of your
LabIcon instance (either LabIcon.element() to directly create a DOM
node, or LabIcon.react to get the icon as a react component):
const e = fooIcon.element();
document.body.append(e);
What you end up with is a DOM node (by default a ‘div’) that has an
inline svg node as a child.
background-image
vs inline svg
The big limitation of the old icon-as-css-background pattern is that svg
images rendered as background-image
are invisible to CSS. On the other
hand, an icon rendered as an inline svg node is fully exposed to the
CSS. This allows us to dynamically change icon styling as needed simply by
modifying our CSS. Most importantly, this allows us to recolor icons
according to Jupyterlab’s current theme.
v3.0.0
User-facing changes
Extensions can be installed without building JupyterLab with NodeJS
In JupyterLab 3.0, a new recommended way of distributing and installing
extensions as Python pip or conda packages is available. Installing such
extensions does not require rebuilding JupyterLab and does not require
having NodeJS installed. The previous way of distributing extensions as
npm packages requiring rebuilding JupyterLab is still available as well.
See the
documentation
for more details.
The JupyterLab interface supports multiple languages
JupyterLab now provides the ability to set the display language of the
user interface. See the
documentation
for more details.
A new visual debugger
JupyterLab now ships with a debugger front-end by default, available for
kernels that support the new debugging protocol. See the
documentation
for more details.
Improvements to Simple Interface mode and Mobile
The Simple Interface mode (previously Single Document Mode) is now more
streamlined. JupyterLab now supports showing the current file in use in
the browser URL bar, similar to the classic Jupyter Notebook.
Table of Contents is now in core
The popular Table of Contents extension is now part of core JupyterLab.
This core extension makes it easy to see an outline view of notebooks
and other documents.
Visual filter in file browser
The file browser now has a filter input which filters the list of files
using the same fuzzy matching as the command palette.
Property inspector moved to right sidebar
The default interface for JupyterLab now has system-wide sidebar panes
on the left side and sidebar panels that interact with a specific
document (such as the debugger or notebook property inspector) on the
right side. As always, you can move panes between the left and right
sidebars (right click on the sidebar icon, or change it in Advanced
Settings).
Command Palette
The command palette is now a floating window that appears on top of your
JupyterLab workspace. This enables users to quickly invoke a command
while keeping the sidebar closed or switching sidebar panels. The
command palette can be put back into the sidebar by adjusting the
default in Advanced Settings.
Jupyter Server
JupyterLab 3.0 now depends on Jupyter
Server, which is a new Jupyter
project based on the server portion of the classic Notebook server. See
the Migration
Guide
to migrate custom notebook configuration to Jupyter Server.
For Developers
Prebuilt Extensions
Users will typically consume prebuilt extensions, which are Python
packages with static assets built using JupyterLab
. See the updated
APOD tutorial for the workflow of creating a prebuilt extension from
scratch. For existing extensions, there is a new
python -m jupyterlab.upgrade_extension
script that can be used to
upgrade extensions. The script will update the relevant dependencies and
add the boilerplate to create the Python package. For extensions that
already contained Python packages (typically server extensions), the
files are not overwritten, and some manual copying of content is
required. See the
example,
which used this script heavily. There are two highlighted commits that
demonstrate upgrading a server extension. Prebuilt extensions are also
known as federated extensions in the changes below, since they use the
federated module capability in Webpack 5.
- Better handling of extensions that provide both prebuilt and source
extensions.
(#9489,
#9277)
- Document new page config conventions
(#9454,
#9240)
- Use stylemodule in prebuilt extensions
(#9460,
#9459)
- Update style-loader and mini-css-extract-plugin
(#9451)
- Use a more explicit stylemodule key for js css imports
(#9427,
#9423)
- Ignore source packages when building or loading jupyterlab if there
is a prebuilt package
(#9424,
#9277)
- Include federated extensions in extension manager from the api
(#9390,
#9367)
- Handle hyphens and switch to importlib in the develop script
(#9471)
- Chunk the jupyterlab and lumino modules together when building the
core application
(#9359)
- Link to the documentation in the extension manager federated dialog
(#9327)
- Federated extension script: change package name logic
(#9326,
#9320)
- Do not error if requiredversion is not provided.
(#9321)
- Reinstate extension manager
(#9317)
- Built-in extensions using federated dependencies
(#9310)
- Update upgrade script to use labextension for outputdir
(#9306)
- Require 'package' instead of 'package/' so webpack activates
sharing
(#9300)
- Enable using federated extensions in dev mode when a flag is set.
(#9286,
#9235)
- Update webpack to 5.3.1
(#9245)
- Adds package installation info to labextension list and uninstall
output
(#9244)
- Restructure federated extensions to allow for package manager
metadata
(#9239)
- List the dynamic extensions in the extension manager
(#9236,
#8804)
- Refuse to uninstall federated extensions.
(#9232,
#9230)
- Allow custom webpack config for federated extensions
(#9224,
#9175)
- Use the new webpack 5 'auto' publicpath
(#9062,
#9043)
- Bump webpack to 5.0rc1
(#9091)
- Update the upgrade script to not replace dev deps to caret
(#9090)
- Bump webpack to 5.0rc2
(#9103)
- Fix watch mode
(#9101,
#9089)
- Upgrade to webpack 5
(#9148)
- Fix watch mode
(#9146,
#9116)
- Docs: fix commands to watch
(#9163)
- Docs: update jupyter lab command in ext dev guide
(#9165,
#)
- Update release test script to also install federated extensions
(#9166,
#8818)
- Remove @types/webpack (shipped with webpack 5)
(#9167)
- Mention jupyter-packaging and cookiecutter in migration guide
(#9199)
- Install jupyter_packaging in tutorial
(#9190,
#9174)
- Handle sharing of linked packages and locally installed extensions
(#9213,
#9203)
- Clean up federated extension install and upgrade
(#8974)
- Add
--development
and --source-map
flags for building
extensions.
(#8961,
#8952) - Add extension upgrade script
(#8950,
#8870,
#8869)
- Improved handling of disabled extensions
(#8944,
#7481)
- Add development mode to lab extension build scripts
(#8918)
- Pull federated extension loading data from the webpack compilation
(#8913,
#8842)
- Update labextension build cli to include a parameter for setting the
webpack publicpath option
(#8911)
- Update apod extension tutorial
(#8905,
#8859)
- Let webpack automatically determine the required version of
dependencies
(#8875)
- Fix rebuild of federated extension and add discovery metadata to
schema
(#8874)
- Fix build issues with publicpath
(#8871)
- Split buildutils into buildutils and builder
(#8863,
#8857)
- Dynamically set public path in generated extensions according to
page config
(#8861,
#8827)
- Clean up federated extension cli
(#8855,
#46)
- Fix app example.
(#8852)
- Add lumino dependencies to buildutils so the phosphor webpack
aliasing works
(#8850,
#8822)
- Add another federated example package.
(#8847,
#5)
- Fixes for the federated example
(#8846)
- Add slash to publicpath
(#8845)
- Update watch plugin for webpack 5
(#8841,
#8705)
- Adding a mime extension to the webpack config
(#8825)
- Fix labextension build
(#8821)
- Fix boolean error
(#8819)
- CI and extension developer cleanup
(#8810)
- Adding extension to shared modules list
(#8808)
- Module federation implementation
(#8802)
- Fix examples and update webpack
(#8779,
#8767)
- Add extension building scripts
(#8772)
- Keep the existing webpack file in staging
(#8673)
- Workaround for vega build error
(#8666)
- Add missing polyfill
(#8664,
#8660)
- Add url as a polyfill dependency for apputils.
(#8659,
#8657)
- Update to webpack 5b21
(#8651)
- Fix examples and break into separate build
(#8647,
#8646)
- Add cur extension for url-loader
(#8634)
- Experiment with module federation
(#8385)
Jupyter Server
JupyterLab 3.0 uses Jupyter Server instead of the classic Notebook
server. Existing server extensions will be shimmed, but it is advised to
update extensions to use
jupyter_server.
- Update server(s), nbclassic, pytest fixtures
(#9478,
#9473)
- Add jupyter_core as a dependency
(#9251)
- Put exposeappinbrowser and quitbutton values back in page config
(#9262)
- Update favicon handling
(#9145,
#9138)
- Enable JupyterLab to run as an old notebook server extension
(#8956,
#8943)
- Fixed
static_url_prefix
, added classic notebook flags and aliases,
and bumped jupyterlab_server
dependency
(#8910) - Use favicons provided by
jupyter_server
(#8898,
#8794) - Load
app_version
next to running on jupyter_server
(#8889,
#8812) - Reinstate the labhubapp
(#8806,
#8704)
- Jupyterlab as server extension
(#7416)
Internationalization
The JupyterLab UI now supports translation.
- Cleanup tsconfig for the translation extension
(#9357)
- Add options to add prefix to strings
(#8946)
- Add a standalone translation manager to be used outside of plugins
(#8945)
- Add missing string fixes
(#8888)
- Add crowdin badge
(#8823)
- Change
optionsmap
to a an array of tuples to be able to localize
the options
(#8820) - Localize strings in jlab
(#8800)
- Add translation package
(#8681)
Visual Debugger
- Debugger-sidebar
(#9452)
- Handle multiple scopes in the debugger variables viewer
(#9346)
- Remove the ptvsd dependency from the debugger user docs
(#9344)
- Throws an error if the kernel cannot start the debugger
(#9426)
- Replace switch in debugger
(#9432,
#9354)
- Sets terminatedebuggee to false
(#9362)
- Add missing return signatures in debugger sidebar
(#9088)
- Fix invisible breakpoint in debugger
(#8908)
- Port
jupyterlab/debugger
PR #527 to JupyterLab
(#8878) - Add jupyterlab debugger to core
(#8747,
#75)
Table of Contents
- Update toc ui
(#9275)
- Add tests for the toc
(#8757,
#8558)
- Change toc to use labicon
(#8692,
#8557)
- Switch from using settings registry to a signal for notebook
collapsing behavior in toc
(#8601)
- Remove
husky
dependencies from toc
and toc-extension
(#8571) - Merge toc extension into core
(#8538)
Other
- Resolve 'restarting' state on reconnect
(#9484,
#9008)
- Upgrade typedoc
(#9483)
- Update to typescript 4.1.3
(#9476)
- Disable shut down all button if there is no running kernel or
terminal
(#9468,
#48)
- Make some dependencies optional for the code console plugin
(#9467)
- Require tornado>=6.1.0
(#9453)
- Pin to tornado>=6.1 on binder
(#9449)
- Fix some of the ui-components dependency warnings
(#9448)
- Fix browser test
(#9447)
- Support for lowercase search queries in the file browser
(#9446)
- Set the tabs menu title by default
(#9445)
- Add tests for interop between source and prebuilt extensions
(#9443,
#9333)
- Make itreepathupdater optional in file browser plugin
(#9442)
- Make ilabshell optional in the filebrowser factory plugin
(#9439)
- Reduce yarn timeout
(#9419)
- Remove unused requires for the tree-resolver plugin
(#9412)
- Update @types/react to ^17.0.0
(#9409)
- Make css dependency graph of js modules
(#9407)
- Cleanup unused python imports in examples/
(#9404)
- Clear the model and the signals upon continue response
(#9402)
- Fix scroll positions when clearing outputs
(#9400,
#9331)
- Remove initial extra _onmimetypechanged call
(#9394)
- Bump the eslint dev dependencies
(#9391)
- Reconnect to kernel on manual restart
(#9388)
- Remove the memory usage status bar item
(#9386,
#9363)
- Change user references from single-document mode to simple interface
(mode)
(#9380,
#9378)
- Reconnect to kernel on restart action
(#9371)
- Add a polyfill for path in the base webpack config
(#9368,
#9345)
- Add reconnect to kernel main menu item, and notebook implementation.
(#9356,
#9353)
- Update blueprint dependencies
(#9350)
- Target sys-prefix by default but allow you to specify user
(#9347)
- Eliminate eager sharing
(#9348,
#9343)
- Revert opening in new tab in single-document mode
(#9334,
#9323)
- Eager share only core packages and their dependencies
(#9332,
#9329)
- Changed the expression to "server unavailable or unreachable"
instead of "server not running"
(#9325)
- Increase the pause between publishing and using npm packages to 5
minutes
(#9319)
- Lint extension manager
(#9318)
- Refactor build conventions
(#9312,
#9304)
- Make ilabshell optional for the launcher extension
(#9305)
- Update binder to use conda, which allows us to install our own
nodejs.
(#9298)
- Move the single document switch to the status bar
(#9296)
- Added utf-8 encoding parameter to create process
(#9294,
#8600)
- Fix linting errors in github prs
(#9293)
- Enable mimedocument to use an optional specific renderer
(#9291)
- Pause after publishing packages to allow npm time to update their
listing
(#9288)
- Sidebar width
(#9287,
#8938)
- Mybinder.org link for people who want to test their own branches in
the developer guidelines
(#9284,
#9255)
- Remove ensure-max-old-space script
(#9282)
- Fix usage tests refusing to uninstall federated extensions
(#9281,
#9280)
- Add a new menu shell area
(#9274)
- Fix #9255
(#9273,
#9255)
- Fix theme path in jupyterlab builder
(#9272)
- Move document mode switch to separate plugin
(#9270)
- Fix styling of single-document mode switch in menu bar
(#9267)
- Make pdf viewer extension recognize pdf files
(#9266)
- Fix relative path handling in markdown images
(#9264,
#9253,
#9243)
- Add jupyterhub to page config
(#9256,
#9248)
- Update to webpack-cli 4.1.0
(#9254)
- Upgrade to react 17
(#9227)
- Extension documentation
(#9221)
- Lint fixes
(#9218)
- Update change log
(#9217)
- Update committer list
(#9215)
- Upgrade to TypeScript 4
(#8883)
- File browser filter
(#8615)
- Update yarn.lock.
(#9095)
- Handle notebook kernel in busy state on page reload
(#9077)
- Use span element to maintain ellipsis
(#9075,
#9074)
- Add codemirror singleton plugin
(#9067)
- Support token authentication for terminal websocket communication
(#9080)
- Do not special-case logic for mainareawidget.
(#9094)
- Set an icon for the inspector main area widget
(#9093)
- Fix the open tabs handling of mainareawidget icons
(#9092,
#126)
- Sort completion filtering results
(#9098,
#9048,
#9048)
- Add hover scrolling to menu, like toolbar.
(#9097)
- Add codemirror simple mode addon
(#9123)
- Create codeql-analysis.yml
(#9119)
- Create ensurevimkeymap function
(#9161)
- Increase size of docstring pop up tooltip
(#9134,
#9085)
- Add a 2.x -> 3.x migration guide
(#9162,
#9118)
- Add an offline circle icon for disconnected or unknown kernel state
(#9172)
- Include js api in sphinx docs
(#9179)
- Update rtd build
(#9182)
- Allow to substitute the default completer renderer
(#8930,
#8926)
- Update dependencies for beta
(#8921)
- Test cleanup
(#8894)
- Resize isolated iframes on content height change
(#8909,
#5696)
- Update minimum python version to python 3.6.
(#8903)
- Update yarn.lock
(#8862)
- Makes some properties and methods of class dsvmodel accessible
outside the class.
(#8849,
#8848)
- Do not use token parameters in websocket urls
(#8835,
#8813)
- Use blocked/allowed extension naming in jupyterlab
(#8799,
#8533)
- Create icon for pdfs in the filebrowser
(#8791)
- Correctly set base_url on workspace apps
(#8788)
- Pass in isessioncontextdialogs to notebookwidgetfactory
(#8778)
- Update encoding version in vega sample.
(#8766)
- Upgrade codemirror
(#8739)
- Rename the logconsole:nboutput plugin id
(#8729)
- Rename the celltags plugin id to @jupyterlab/celltags
(#8728)
- Uncaught typeerror when switching kernels
(#8727)
- Change inspector detail_level to 1
(#8725)
- Change main menu ranks to allow for application menu to l of file
(#8719)
- Handle errors in async browser_check
(#8717,
#8709)
- Add mehmet and andrew to contributors, fix last name order
(#8712)
- Updated puppeteer version to v4.0.0
(#8707)
- Update the singleton packages to include at least every package with
a 'tokens.ts' file
(#8703)
- Update link to jupyter contributing guide
(#8697,
#8682)
- Added ability to delete a document from titlebar context menu
(#8670)
- Move codemirror html tree and related css to shadow dom
(#8584)
- Support macoptionismeta option in terminal
(#8573,
#4236)
- Align output baseline with prompt
(#8561,
#8560)
- Use the same font-family for cell prompt and code
(#8553,
#8552)
- Prompt to save files before rebuild
(#8526,
#7372)
- Change json5 payload to json payload
(#8225)
- Move notebook logging plugin to notebook-extension package
(#7830)
- First pass at adding scroll to cell method
(#6818)
- Add a debugger section to the user docs and contributing guide
(#8977)
Single Document Mode and Mobile Enhancements
- Make the single document title widget work for widgets that are not
main area widgets
(#9078)
- Add border at top of single-document open menus
(#9096,
#9065)
- Implement a simple checkbox for single-document mode in the menu
bar. (#9100,
#8292)
- Followup #9100: made sdm switch pretty, accessible
(#9104)
- Improved url scheme, state, interactions for single document mode
(#8715)
- Add workspace mime handler and loading/saving workspaces manually
(#8691)
- Modify ansi color fix
(#8555,
#8554)
- Improve single document mode to address classic notebook usage cases
(#8531)
- Incrementally improve jupyterlab mobile ux
(#8456)
Benchmarks (now a separate repository)
- Move benchmarks to separate repo
(#8795)
- Fix off by one error in benchmark samples
(#8785)
- Benchmark params configurable and increase timeout
(#8786)
- Benchmarks: new erroroutputs + larger timeout + notebook defs in
subfolder
(#8783)
- Add ability to compare benchmarks
(#8737)
- Benchmark notebook loads
(#8020)
Bugfixes
- Fix lerna warning
(#9061)
- Fix doc build
(#9063,
#9060)
- Make text settings menu work
(#9066,
#9042)
- Fix lint check for the codemirror-extension package
(#9087)
- Fix the examples ci
(#9150)
- Test: cleanup eslint jest rules and files
(#9125)
- Switch to a different murmurhash2 implementation to handle unicode
characters
(#9158)
- Add more xxx to the mktemp command in release_test.sh
(#9131)
- Add setup.py and pyproject.toml to manifest.in
(#9129)
- Urlext.join can't handle colon in relative paths
(#9169,
#9159)
- Remove absolute document search pane width
(#9180,
#9178)
- Update session and kernel manager data only if there was a real
change.
(#9189,
#9133)
- Update metadata recorded to align better with jupyter protocol
(#9206)
- Fix focus issues with command palette
(#9210,
#9121)
- Update mimetype for dragging files
(#8965,
#8934)
- Fix comment explaining the extension entry point.
(#8964)
- Security docs: link to jupyter-server instead of jupyter-noteboook
(#8954)
- Fix titles in the extension development docs
(#8948)
- Fix link syntax in the apod tutorial
(#8942)
- Fix codemirror text color issue with dark jupyter theme.
(#8919,
#8792)
- Remove the extension path, not the entire extension directory, when
uninstalling an extension
(#8904)
- Header
'content-type'
should not be overwritten
(#8891,
#8890) - Make sure adding or removing a cell tag actually replaces the tag
list, so a changed signal is emitted for the cell metadata
(#8751,
#8534)
- Fix up ensure package and repo
(#8749,
#8748)
- Add comma in
extension_points.rst
to fix syntax error of code
(#8745) - Fix: Contributing Guide Link is Out of Sync
(#8665)
- Fix api docs links
(#8624,
#8616)
- Fix handling of disposed widgets after closing a panel in tutorial
(#8623)
- Fix small typos in docs for developing extensions
(#8622)
- Reload the application on manual state reset
(#8621)
- Remove superfluous page reload on workspace reset
(#8619)
- Remove superfluous console log from the application shell
(#8618)
- Fix minor typos in extension tutorial
(#8613)
- Fix minor typos in docs for extensions.
(#8551)
- Fix small typo in install docs
(#8550)
- Fix more linting errors
(#8454)
- Reconnect a websocket when a kernel is restarted.
(#8432)