@jupyterlab/services
Advanced tools
Changelog
See the JupyterLab 0.33.0 milestone on GitHub for the full list of pull requests and issues closed.
In JupyterLab 0.33, we removed the "Beta" label to better signal that JupyterLab is ready for users to use on a daily basis. The extension developer API is still being stabilized. See the release blog post for details. (#4898, #4920)
We added new workspace support, which enables you to have multiple saved
layouts, including in different browser windows. See the
workspace documentation
for more details.
(#4502,
#4708,
#4088,
#4041
#3673,
#4780)
Ctrl/Cmd Shift '
) to toggle between the previously active tabs in
the main area.
(#4296)collapsed
, scrolled
, jupyter.source_hidden
and
jupyter.outputs_hidden
notebook cell metadata when opening.
collapsed
and jupyter.outputs_hidden
are redundant and the
initial collapsed state is the union of both of them. When the state
is persisted, if an output is collapsed, both will be written with
the value true
, and if it is not, both will not be written.
(#3981)Ctrl/Cmd Shift S
.
(#4560)Ctrl/Cmd Shift Enter
.
(#4558)Enter
or
Shift Enter
as a Console setting.
(#4054)"Notebook" added to the command palette to open a new notebook. (#4812)
"Run Selected Text or Current Line in Console" added to the command
palette to run the selected text or current line from a notebook in
a console. A default keyboard shortcut for this command is not yet
provided, but can be added by users with the
notebook:run-in-console
command. To add a keyboard shortcut
Ctrl G
for this command, use the "Settings" | "Advanced Settings
Editor" menu item to open the "Keyboard Shortcuts" advanced
settings, and add the following JSON in the shortcut JSON object in
the User Overrides pane (adjust the actual keyboard shortcut if you
wish).
(#3453,
#4206,
#4330)
{
"command": "notebook:run-in-console",
"keys": ["Ctrl G"],
"selector": ".jp-Notebook.jp-mod-editMode"
}
The command palette now renders labels, toggled state, and keyboard shortcuts in a more consistent and correct way. (#4533, #4510)
kbd
, sup
, and sub
.
(#4618).tsv
file extension as tab-separated
files.
(#4684)anyMessage
signal for observing any message a kernel sends
or receives.
(#4437)addGroup
now
returns an IDisposable
which can be used to remove the group.
removeGroup
has been removed.
(#4890)Launcher
now uses commands from the application
CommandRegistry
to launch new activities. Extension authors that
add items to the launcher will need to update them to use commands.
(#4757)addToBottomArea
function in the
application, allowing extension authors to add bottom panel items
like status bars.
(#4752)jupyterlab_server
and make
them available in @jupyterlab/services
.
(#4841)IInstanceTracker
which tracks them. Include the token
IMimeDocumentTracker
in your plugin to access this. The
IInstanceTracker
interface has also gained convenience functions
find
and filter
to simplify iterating over instances.
(#4762)getNotebookVersion
is added to the PageConfig
object.
(#4224)kernelChanged
signal now contains both the old kernel
and the new kernel to make it easy to unregister things from the old
kernel.
(#4834)connectTo
functions for connecting to kernels and sessions are
now synchronous (returning a connection immediately rather than a
promise). The DefaultSession clone
and update
methods are also
synchronous now.
(#4725)anyMessage
signal
is emitted synchronously when a message is received before
asynchronous message handling, and the iopubMessage
and
unhandledMessage
signals are emitted during asynchronous message
handling. These changes mean that the comm onMsg
and onClose
handlers and the kernel future onReply
, onIOPub
, and onStdin
handlers, as well as the comm target and message hook handlers, may
be asynchronous and return promises.
(#4697)removeCommTarget
and removeMessageHook
, instead of using
disposables. The corresponding registerCommTarget
and
registerMessageHook
functions now return nothing.
(#4697)connectToComm
function is synchronous, and now returns
the comm rather than a promise to the comm.
(#4697)KernelFutureHandler
class expectShell
constructor argument
is renamed to expectReply
.
(#4697)done
returned promise now resolves to undefined
if there is no reply message.
(#4697)IDisplayDataMsg
is updated to have the optional transient
key, and a new IUpdateDisplayDataMsg
type was added for update
display messages.
(#4697)uuid
function from @jupyterlab/coreutils
is removed. Instead
import UUID
from @phosphor/coreutils
and use UUID.uuid4()
.
(#4604)MainAreaWidget
class which provides a content area
(.content
) and a toolbar (.toolbar
), consistent focus handling
and activation behavior, and a spinner displayed until the given
reveal
promise is resolved. Document widgets, like the notebook
and text editor and other documents opened from the document
manager, implement the IDocumentWidget
interface (instead of
DocumentRegistry.IReadyWidget
), which builds on MainAreaWidget
and adds a .context
attribute for the document context and makes
dirty handling consistent. Extension authors may consider inheriting
from the MainAreaWidget
or DocumentWidget
class for consistency.
Several effects from these changes are noted below.
(#3499,
#4453)
.notebook
attribute is renamed to
.content
..content
of a DocumentWidget
, so
the top-level editor widget has a toolbar and the editor itself
is widget.content.editor
rather than just widget.editor
.MimeContent
widget embedded inside of a
DocumentWidget
now.revealed
promise which resolves when the widget has been revealed (i.e.,
the spinner has been removed). This should be used instead of
the ready
promise.Changes in the JupyterLab code infrastructure include:
esModuleInterop
flag to enable more natural imports from
non-es2015 JavaScript modules. With the update to ES2015 output,
code generated from async/await syntax became much more manageable,
so we have started to use async/await liberally throughout the
codebase, especially in tests. Because we use Typedoc for API
documentation, we still use syntax compatible with TypeScript 2.7
where Typedoc is used. Extension authors may have some minor
compatibility updates to make. If you are writing an extension in
TypeScript, we recommend updating to TypeScript 2.9 and targeting
ES2015 output as well.
(#4462,
#4675,
#4714,
#4797)jupyterlab_server
.
(#4696)IDrive
s.
(#4613)require.ensure
in vega4-extension
to lazily load
vega-embed
and its dependencies on first render.
(#4706)Changelog
This is the second in the JupyterLab Beta series of releases. It contains many enhancements, bugfixes, and refinements, including:
@jupyterlab/services
is now at version
2.0!)
([#4115](https://github.com/jupyterlab/jupyterlab/pull/4115)).Changelog
/tree
handler and Copy Shareable Link
to file listing
right click menu:
https://github.com/jupyterlab/jupyterlab/pull/3396Changelog
jupyter labextension install
is now the recommended way to install
a local directory. Local directories are considered linked to the
application. cf https://github.com/jupyterlab/jupyterlab/pull/3182--core-mode
and --dev-mode
are now semantically different.
--core-mode
is a version of JupyterLab using released JavaScript
packages and is what we ship in the Python package. --dev-mode
is
for unreleased JavaScript and shows the red banner at the top of the
page. https://github.com/jupyterlab/jupyterlab/pull/3270Changelog
This release generally focuses on developer and extension author enhancements and general bug fixes.
name
-> id
and new naming
convention).
#3078jupyter lab --watch
mode for extension authors.
#3077Changelog
Changelog