NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #590 most downloaded on PyPI
JupyterLab computational environment
Last release 10 days ago
21 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 59 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
607 releases · first in 2016
Deprecates collaborative flag #14792 (@hbcarlos)
For the user-facing changes please see the changelog in the documentation. Changes for extension developers are documented in the extension migration guide.
defaultPath option to set the default directory for file dialog #15282 (@mmichilot)processedItemsCache as a protected in CompleterModel #15025 (@krassowski)filebrowser.open and add ability to provide a factory #14983 (@fcollonval)copyAbsolutePath enabling to copy absolute path #14842 (@pauky)overrides.json not working for shortcuts #15716 (@krassowski)user level or to none (as fallback) #15678 (@krassowski)Ctrl + Enter #15638 (@krassowski)hash from jupyter-server v2.11.1+ #15577 (@Wh1isper)Tab #15571 (@krassowski)jupyter labextension watch --help #15542 (@akx)level trait for plugin/extension managers #15512 (@krassowski)FormComponent showing error indicators in all fields when using a customValidate function #15464 (@mmichilot)defaultPath, and model disposal #15463 (@mmichilot)overrides.json #15346 (@LJMP)require.resolve() #15299 (@tibdex)Shift + Enter #15288 (@krassowski)full windowed mode #15286 (@krassowski)unusedDocuments, fix culling of foreign documents #15105 (@krassowski)getMimeTypeByLanguage() #15101 (@krassowski)<select> elements in dark theme #15098 (@Rmarieta)_updateConstraints missing protected/private classifier. #15066 (@krassowski)HoverBox: adjust right when moving node to fit within window #15052 (@krassowski)shouldShowContinuousHint() #15015 (@krassowski)staging/yarn.lock #14926 (@fcollonval)serverCapabilities, provides, and updateLogging #14712 (@krassowski)context.contentsModel.content #14660 (@fcollonval)ifaxity/wait-on-action wrapper with direct wait-on use #15721 (@krassowski)pytest-tornasync to pytest-jupyter #15662 (@KiranmaiKalla)jlpm as npm client for snapshot updates #15641 (@krassowski)page.filebrowser.refresh() timeout logic #15607 (@jtpio)actions/upload-artifact@v4 and action/download-artifact@v4 #15536 (@jtpio)ipython in dependabot updates #15528 (@jtpio)pull_request_review #15523 (@jtpio)actions/labeler to v4 to fix failing CI action #15496 (@krassowski)--collaborative is used without jupyter-collaboration #15300 (@mdengler)@jupyterlab/rendermime-interfaces to 3.9.0-alpha.1 #15240 (@jtpio)@jupyter/ydoc 1.1.1 #15177 (@jtpio)| #15072 (@krassowski)getEditorIndexAt() method #15028 (@krassowski)| null to the mermaid plugin activate parameter #15003 (@jtpio)default_url configurable #14944 (@jtpio)Event.IManager interface #14770 (@trungleduc)StatusMessage which is dead code #14713 (@krassowski)jupyter labextension list compat message #14680 (@jtpio)OSTYPE check in ci_install.sh #11801 (@jtpio)level trait for plugin/extension managers #15512 (@krassowski)Notification.dismiss #15197 (@krassowski)README.md #15039 (@jtpio)--UNSAFE flag in the extension tutorial docs #15007 (@jtpio)staging/yarn.lock #14926 (@fcollonval)copyAbsolutePath enabling to copy absolute path #14842 (@pauky)good first issue label #14686 (@krassowski)jupyter labextension list compat message #14680 (@jtpio)(GitHub contributors page for this release)
@afshin | @akx | @alden-ilao | @AllanChain | @andrewfulton9 | @andrii-i | @ashna1jain | @bikash30851 | @blink1073 | @bollwyvl | @brichet | @brijsiyag | @coriegulik | @davidbrochart | @DcWire | @Deepali1211 | @DenisaCG | @dependabot | @dharmaquark | @divyansshhh | @dolevf | @DonJayamanne | @echarles | @eliaslma | @emmanuel-ferdman | @ericsnekbytes | @fcollonval | @firai | @FoSuCloud | @g547315 | @gabalafou | @GabrielaVives | @github-actions | @HaudinFlorence | @hbcarlos | @holzman | @isabela-pf | @j264415 | @jans-code | @JasonWeill | @jtpio | @jupyterlab-bot | @jupyterlab-probot | @KiranmaiKalla | @krassowski | @LJMP | @lumberbot-app | @m158261 | @mctoohey | @mdengler | @MFA-X-AI | @misterfads | @mlucool | @mmichilot | @nbowditch-einblick | @nishikantparmariam | @paolocarinci | @parmentelat | @pauky | @paulkim3151 | @phil-zxx | @pre-commit-ci | @Rmarieta | @RRosio | @Sarthug99 | @sinistersnare | @skyetim | @smacke | @SylvainCorlay | @t03857785 | @tibdex | @timkpaine | @tonyfast | @trungleduc | @welcome | @Wh1isper | @yuvipanda
One column per quarter.
Fix kernels sidepanel scrollbar #15718 (@FoSuCloud)
overrides.json not working for shortcuts #15716 (@krassowski)ifaxity/wait-on-action wrapper with direct wait-on use #15721 (@krassowski)(GitHub contributors page for this release)
@FoSuCloud | @github-actions | @JasonWeill | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @Sarthug99 | @welcome
Fix shortcut UI failing on filtering when empty command is given #15695 (@krassowski)
user level or to none (as fallback) #15678 (@krassowski)hash from jupyter-server v2.11.1+ #15577 (@Wh1isper)pytest-tornasync to pytest-jupyter #15662 (@KiranmaiKalla)(GitHub contributors page for this release)
@brichet | @dependabot | @fcollonval | @FoSuCloud | @github-actions | @j264415 | @JasonWeill | @jupyterlab-bot | @jupyterlab-probot | @KiranmaiKalla | @krassowski | @welcome | @Wh1isper
Potential authentication and CSRF tokens leak in JupyterLab (GHSA-44cc-43rp-5947)
Show toast notification for running code cell while kernel initializing #15421 (@misterfads)
Ctrl + Enter #15638 (@krassowski)Tab #15571 (@krassowski)jlpm as npm client for snapshot updates #15641 (@krassowski)page.filebrowser.refresh() timeout logic #15607 (@jtpio)(GitHub contributors page for this release)
@alden-ilao | @andrewfulton9 | @bollwyvl | @brichet | @dependabot | @fcollonval | @github-actions | @j264415 | @jtpio | @jupyterlab-probot | @krassowski | @MFA-X-AI | @misterfads | @pre-commit-ci | @welcome | @Wh1isper
Add virtual scrollbar component to windowed lists. #15533 (@afshin)
jupyter labextension watch --help #15542 (@akx)level trait for plugin/extension managers #15512 (@krassowski)FormComponent showing error indicators in all fields when using a customValidate function #15464 (@mmichilot)defaultPath, and model disposal #15463 (@mmichilot)actions/upload-artifact@v4 and action/download-artifact@v4 #15536 (@jtpio)ipython in dependabot updates #15528 (@jtpio)pull_request_review #15523 (@jtpio)actions/labeler to v4 to fix failing CI action #15496 (@krassowski)OSTYPE check in ci_install.sh #11801 (@jtpio)level trait for plugin/extension managers #15512 (@krassowski)(GitHub contributors page for this release)
@afshin | @akx | @ashna1jain | @brichet | @DcWire | @dependabot | @DonJayamanne | @fcollonval | @g547315 | @gabalafou | @GabrielaVives | @github-actions | @j264415 | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @m158261 | @mmichilot | @parmentelat | @pre-commit-ci | @t03857785 | @tonyfast | @welcome
Improve error message when deprecated --collaborative is used without jupyter-collaboration #15300 (@mdengler)
--collaborative is used without jupyter-collaboration #15300 (@mdengler)(GitHub contributors page for this release)
@andrewfulton9 | @blink1073 | @brichet | @fcollonval | @gabalafou | @github-actions | @j264415 | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @m158261 | @mdengler | @parmentelat | @RRosio | @tonyfast | @welcome
Experimental inline completer #15160 (@krassowski)
defaultPath option to set the default directory for file dialog #15282 (@mmichilot)overrides.json #15346 (@LJMP)require.resolve() #15299 (@tibdex)Shift + Enter #15288 (@krassowski)full windowed mode #15286 (@krassowski)@jupyterlab/rendermime-interfaces to 3.9.0-alpha.1 #15240 (@jtpio)(GitHub contributors page for this release)
@andrewfulton9 | @andrii-i | @blink1073 | @bollwyvl | @brichet | @DenisaCG | @dependabot | @dharmaquark | @divyansshhh | @dolevf | @eliaslma | @ericsnekbytes | @fcollonval | @firai | @github-actions | @j264415 | @jtpio | @jupyterlab-probot | @krassowski | @LJMP | @lumberbot-app | @m158261 | @mmichilot | @nbowditch-einblick | @nishikantparmariam | @parmentelat | @pauky | @paulkim3151 | @pre-commit-ci | @sinistersnare | @skyetim | @tibdex | @tonyfast | @trungleduc | @welcome
Deprecate LSP adapter getEditorIndexAt() method #15028 (@krassowski)
unusedDocuments, fix culling of foreign documents #15105 (@krassowski)processedItemsCache as a protected in CompleterModel #15025 (@krassowski)getMimeTypeByLanguage() #15101 (@krassowski)<select> elements in dark theme #15098 (@Rmarieta)_updateConstraints missing protected/private classifier. #15066 (@krassowski)HoverBox: adjust right when moving node to fit within window #15052 (@krassowski)shouldShowContinuousHint() #15015 (@krassowski)@jupyter/ydoc 1.1.1 #15177 (@jtpio)| #15072 (@krassowski)getEditorIndexAt() method #15028 (@krassowski)| null to the mermaid plugin activate parameter #15003 (@jtpio)Notification.dismiss #15197 (@krassowski)README.md #15039 (@jtpio)--UNSAFE flag in the extension tutorial docs #15007 (@jtpio)(GitHub contributors page for this release)
@afshin | @andrewfulton9 | @bikash30851 | @brichet | @Deepali1211 | @dependabot | @echarles | @fcollonval | @gabalafou | @github-actions | @HaudinFlorence | @hbcarlos | @isabela-pf | @jans-code | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @m158261 | @parmentelat | @pre-commit-ci | @Rmarieta | @smacke | @trungleduc | @welcome
Deprecates collaborative flag #14792 (@hbcarlos)
filebrowser.open and add ability to provide a factory #14983 (@fcollonval)copyAbsolutePath enabling to copy absolute path #14842 (@pauky)staging/yarn.lock #14926 (@fcollonval)serverCapabilities, provides, and updateLogging #14712 (@krassowski)context.contentsModel.content #14660 (@fcollonval)default_url configurable #14944 (@jtpio)Event.IManager interface #14770 (@trungleduc)StatusMessage which is dead code #14713 (@krassowski)jupyter labextension list compat message #14680 (@jtpio)staging/yarn.lock #14926 (@fcollonval)copyAbsolutePath enabling to copy absolute path #14842 (@pauky)good first issue label #14686 (@krassowski)jupyter labextension list compat message #14680 (@jtpio)(GitHub contributors page for this release)
@AllanChain | @andrii-i | @bollwyvl | @brichet | @brijsiyag | @coriegulik | @davidbrochart | @DenisaCG | @dependabot | @echarles | @emmanuel-ferdman | @ericsnekbytes | @fcollonval | @FoSuCloud | @g547315 | @gabalafou | @GabrielaVives | @github-actions | @hbcarlos | @holzman | @isabela-pf | @j264415 | @JasonWeill | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @mctoohey | @pauky | @pre-commit-ci | @skyetim | @SylvainCorlay | @timkpaine | @tonyfast | @trungleduc | @welcome | @yuvipanda
Fix workspaces loading #15842 (@krassowski)
overrides.json not working for shortcuts #15716 (@krassowski)ifaxity/wait-on-action wrapper with direct wait-on use #15721 (@krassowski)(GitHub contributors page for this release)
@AllanChain | @bollwyvl | @davidbrochart | @ericsnekbytes | @fcollonval | @FoSuCloud | @g547315 | @github-actions | @JasonWeill | @jtpio | @jupyterlab-probot | @kiliansinger | @krassowski | @lumberbot-app | @meeseeksmachine | @welcome
Fix jupyterlab downgrade issue on extension installation #15650 (@Sarthug99)
(GitHub contributors page for this release)
@FoSuCloud | @github-actions | @j264415 | @JasonWeill | @jupyterlab-bot | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @welcome
Potential authentication and CSRF tokens leak in JupyterLab (GHSA-44cc-43rp-5947)
(GitHub contributors page for this release)
@brichet | @fcollonval | @github-actions | @jtpio | @jupyterlab-probot | @krassowski | @meeseeksmachine | @misterfads | @welcome
Backport PR #15386: Improve scrolling to heading #15565 (@krassowski)
jupyter labextension watch --help #15542 (@akx)FormComponent showing error indicators in all fields when using a customValidate function #15464 (@mmichilot)actions/labeler to v4 to fix failing CI action #15496 (@krassowski)(GitHub contributors page for this release)
@afshin | @brichet | @davidbrochart | @echarles | @fcollonval | @g547315 | @gabalafou | @GabrielaVives | @github-actions | @j264415 | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @parmentelat | @tonyfast | @welcome | @Wh1isper
Improve cell toolbar tracker #15314 (@fcollonval)
Shift + Enter #15288 (@krassowski)overrides.json #15346 (@LJMP)@lumino/dragdrop package #15426 (@krassowski)@jupyter/ydoc 1.1.1 #15177 (@jtpio)(GitHub contributors page for this release)
@blink1073 | @brichet | @dharmaquark | @fcollonval | @gabalafou | @github-actions | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @skyetim | @tonyfast | @welcome
Expand search box horizontally when text grows long #15266 (@sinistersnare)
require.resolve() #15299 (@tibdex)(GitHub contributors page for this release)
@andrii-i | @blink1073 | @fcollonval | @github-actions | @j264415 | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @tonyfast | @welcome
Add the standard SQL mimetype #15180 (@brichet)
<select> elements in dark theme #15098 (@Rmarieta)unusedDocuments, fix culling of foreign documents #15105 (@krassowski)Notification.dismiss #15197 (@krassowski)(GitHub contributors page for this release)
@bollwyvl | @fcollonval | @github-actions | @HaudinFlorence | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @parmentelat | @welcome
Deprecate LSP adapter getEditorIndexAt() method #15028 (@krassowski)
processedItemsCache as a protected in CompleterModel #15025 (@krassowski)filebrowser.open and add ability to provide a factory #14983 (@fcollonval)getMimeTypeByLanguage() #15101 (@krassowski)_updateConstraints missing protected/private classifier. #15066 (@krassowski)HoverBox: adjust right when moving node to fit within window #15052 (@krassowski)shouldShowContinuousHint() #15015 (@krassowski)getEditorIndexAt() method #15028 (@krassowski)--UNSAFE flag in the extension tutorial docs #15007 (@jtpio)(GitHub contributors page for this release)
@afshin | @bollwyvl | @echarles | @fcollonval | @github-actions | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @tonyfast | @welcome
❗ A bug in @jupyterlab/galata has been fixed as part of #14951. It requires to bump the version you are using for integration tests to _5.0.5_. You ca
❗ A bug in @jupyterlab/galata has been fixed as part of #14951. It requires to bump the version you are using for integration tests to 5.0.5. You can achieve this by executing jlpm up "@jupyterlab/galata" in your integration tests folder.
staging/yarn.lock #14926 (@fcollonval)default_url configurable #14944 (@jtpio)staging/yarn.lock #14926 (@fcollonval)(GitHub contributors page for this release)
@fcollonval | @github-actions | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @welcome
Deprecates collaborative flag #14792 (@hbcarlos)
context.contentsModel.content #14660 (@fcollonval)Event.IManager interface #14770 (@trungleduc)(GitHub contributors page for this release)
@fcollonval | @github-actions | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @welcome
Fix incorrect CSS value for statusbar popover shadow #14789 (@krassowski)
serverCapabilities, provides, and updateLogging #14712 (@krassowski)StatusMessage which is dead code #14713 (@krassowski)jupyter labextension list compat message #14680 (@jtpio)good first issue label #14686 (@krassowski)jupyter labextension list compat message #14680 (@jtpio)(GitHub contributors page for this release)
@andrii-i | @brijsiyag | @echarles | @fcollonval | @GabrielaVives | @github-actions | @JasonWeill | @jtpio | @jupyterlab-probot | @krassowski | @lumberbot-app | @meeseeksmachine | @tonyfast | @welcome
Add support for copier 8.0.0 #14644 (@fcollonval)
(GitHub contributors page for this release)
@dependabot | @ericsnekbytes | @fcollonval | @GabrielaVives | @github-actions | @jtpio | @jupyterlab-probot | @krassowski | @pre-commit-ci | @tonyfast
Enable base numbering option #14586 (@tuncbkose)
maxHeight being equal to minHeight for HoverBox's visibility #14533 (@nishikantparmariam)sortNotebooksFirst option #14497 (@tpatel).cm-editor #14601 (@krassowski)IStatusBar optional for the notification plugin #14593 (@jtpio)@jupyterlab/celltags from the resolutions #14551 (@jtpio)main #14492 (@jtpio)main #14492 (@jtpio)(GitHub contributors page for this release)
@brijsiyag | @c3Vu | @dependabot | @fcollonval | @github-actions | @j264415 | @JasonWeill | @JeanLescutMuller | @jtpio | @jupyterlab-probot | @krassowski | @nishikantparmariam | @t03857785 | @tpatel | @tuncbkose | @welcome
Your coding agent can read these notes before it upgrades. Set up the MCP server →