@jupyterlab/services
Advanced tools
Changelog
See the JupyterLab 0.35.0 milestone on GitHub for the full list of pull requests and issues closed.
enabled
metadata.
(#5401,
#1312)%20
.
(#5383,
#5340,
#5153)jupyter lab clean
on Windows.
(#5400,
#5397)jupyter lab build
on NFS.
(#5237,
#5233)jupyterlab_server
instead of
jupyterlab_launcher
and fix the app example.
(#5316)Changelog
See the JupyterLab 0.34.0 milestone on GitHub for the full list of pull requests and issues closed.
|
) character as a CSV delimiter option.File
menu.Notebooks, consoles, and text files now have access to completions for local tokens. If a text file has a running kernel associated with its path (as happens with an attached console), it also gets completions and tooltips from that kernel. (#5049)
The FileBrowser
widget has a new constructor option
refreshInterval
, allowing the creator to customize how often the
widget polls the storage backend. This can be useful to prevent
rate-limiting in certain contexts.
(#5048)
The application shell now gets a pair of CSS data attributes indicating the current theme, and whether it is light or dark. Extension authors can write CSS rules targeting these to have their extension UI elements respond to the application theme. For instance, to write a rule targeting whether the theme is overall light or dark, you can use
[data-theme-light='true'] your-ui-class {
background-color: white;
}
[data-theme-light='false'] your-ui-class {
background-color: black;
}
The theme name can also be targeted by writing CSS rules for
data-theme-name
.
(#5078)
The IThemeManager
interface now exposes a signal for
themeChanged
, allowing extension authors to react to changes in
the theme. Theme extensions must also provide a new boolean property
isLight
, declaring whether they are broadly light colored. This
data allows third-party extensions to react better to the active
application theme.
(#5078)
Added a patch to update the uploads
for each FileBrowserModel
instantly whenever a file upload errors. Previously, the upload that
erred was only being removed from uploads upon an update. This would
allow the status bar component and other extensions that use the
FileBrowserModel
to be more precise.
(#5077)
Cell IDs are now passed in the shell message as part of the cell metadata when a cell is executed. This helps in developing reactive kernels. (#5033)
The IDs of all deleted cells since the last run cell are now passed
as part of the cell metadata on execution. The IDs of deleted cells
since the last run cell are stored as deletedCells
in
NotebookModel
. This helps in developing reactive kernels.
(#5037)
The ToolbarButton
in apputils
has been refactored with an API
change and now uses a React component ToolbarButtonComponent
to
render its children. It is now a div
with a single button
child,
which in turn as two span
elements for an icon and text label.
Extensions that were using the className
options should rename it
as iconClassName
. The className
options still exists, but it
used as the CSS class on the button
element itself. The API
changes were done to accommodate styling changes to the button.
(#5117)
The Toolbar.createFromCommand
function has been replaced by a
dedicated ToolbarButton
subclass called CommandToolbarButton
,
that wraps a similarly named React component.
(#5117)
The design and styling of the right and left sidebars tabs has been
improved to address
#5054. We are
now using icons to render tabs for the extensions we ship with
JupyterLab and extension authors are encouraged to do the same (text
labels still work). Icon based tabs can be used by removing
widget.caption
and adding
widget.iconClass = '<youriconclass> jp-SideBar-tabIcon';
.
(#5117)
The style of buttons in JupyterLab has been updated to a borderless design. (#5117)
A new series of helper CSS classes for stying SVG-based icons at
different sizes has been added: jp-Icon
, jp-Icon-16
,
jp-Icon-18
, jp-Icon-20
.
The rank of the default sidebar widget has been updated. The main
change is giving the extension manager a rank of 1000
so that it
appears at the end of the default items.
Python 3.5+ is now required to use JupyterLab. Python 2 kernels can still be run within JupyterLab. (#5119)
JupyterLab now uses yarn 1.9.4
(aliased as jlpm
), which now
allows uses to use Node 10+.
(#5121)
Clean up handling of baseUrl
and wsURL
for PageConfig
and
ServerConnection
.
(#5111)
|
) character as a CSV delimiter option.
(#5112)Open From Path...
to top level File
menu.
(#5108)saveState
signal to the document context object.
(#5096)deprecated
are no longer shown in the
extension manager.
(#5058)In
and Out
text from cell prompts. Shrunk the prompt
width from 90px to 64px. In the light theme, set the prompt colors
of executed console cells to active prompt colors and reduced their
opacity to 0.5. In the dark theme, set the prompt colors of executed
console cells to active prompt colors and set their opacity to 1.
(#5097 and
#5130)npmjs.com
.
(#5075)running
panel now shows the running sessions at startup.
(#5118)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)).