Compare commits

..

63 Commits
7.4.x ... main

Author SHA1 Message Date
p6micgy9w 472ee5d01b ADD file via upload
3 weeks ago
p6micgy9w 42ccc58dca Add src
3 weeks ago
Amulya S e54ce8ef6d
Fix grammar in notebook documentation (#7794)
4 weeks ago
jtpio 9836de423c Publish 7.6.0a0
1 month ago
dependabot[bot] e7f5e5d50e
Bump systeminformation from 5.23.14 to 5.27.14 in /ui-tests (#7788)
1 month ago
Jeremy Tuloup f0e7469483
Update to JupyterLab `4.6.0a0` (#7787)
1 month ago
jtpio 09f0f85e63 Publish 7.5.1
1 month ago
Arjun Verma fccf56801b
Add debugger display registry (#7774)
1 month ago
Jeremy Tuloup 22183446df
Update to JupyterLab v4.5.1 (#7785)
1 month ago
Jeremy Tuloup 1003f68930
Fix link to the IPython install page (#7783)
1 month ago
Jeremy Tuloup a5c9c9399d
fix selector (#7782)
1 month ago
dependabot[bot] 18411e8532
Bump the actions group with 4 updates (#7773)
1 month ago
Jeremy Tuloup 5bb41ae47c
Fix `hatch build`, ignore links to `blog.jupyter.org` (#7780)
1 month ago
jtpio b45653f564 Publish 7.5.0
2 months ago
Jeremy Tuloup be53ec8bc9
User facing changelog for 7.5 (#7770)
2 months ago
Jeremy Tuloup 7362e529a8
Update to JupyterLab v4.5.0 (#7768)
2 months ago
Jeremy Tuloup 1f8c7cd491
Clean up references to Gitpod (#7767)
2 months ago
Jeremy Tuloup 9c6ee5d5f9
Expose the cell toolbar settings (#7766)
2 months ago
jtpio 6923a84908 Publish 7.5.0rc1
2 months ago
Jeremy Tuloup 7533ccab5e
Update to JupyterLab v4.5.0rc1 (#7764)
2 months ago
dependabot[bot] 04bd4bc6f6
Bump the actions group across 1 directory with 3 updates (#7751)
2 months ago
Jeremy Tuloup 05dad4f597
Fix link to Code of Conduct in CONTRIBUTING.md (#7758)
2 months ago
Jason Grout 165e3cdf76
Remove JupyterCon 2025 announcement banner (#7757)
2 months ago
jtpio 7a960ab236 Publish 7.5.0rc0
3 months ago
Jeremy Tuloup 18ba796a58
Update to JupyterLab v4.5.0rc0 (#7755)
3 months ago
jtpio fd9c4b4427 Publish 7.5.0b1
3 months ago
Jeremy Tuloup 7f84b95ed6
Use Node.js 24 / npm 11 to publish releases (#7749)
3 months ago
Jeremy Tuloup 0201906757
Update to JupyterLab v4.5.0b1 (#7746)
3 months ago
Michał Krassowski 37ad3c4723
Update JupyterCon 2025 announcement links (#7744)
3 months ago
jtpio 79ad725908 Publish 7.5.0b0
4 months ago
Jeremy Tuloup 828708ec26
Update to JupyterLab v4.5.0b0 (#7739)
4 months ago
Chris Holdgraf 2e88202c8f
Add JupyterCon banner and add Jupyter colors (#7727)
4 months ago
jtpio efdef40919 Publish 7.5.0a3
4 months ago
Jeremy Tuloup 254b06ca4b
Update to JupyterLab v4.5.0a4 (#7728)
4 months ago
Jeremy Tuloup 0af6834093
Revert "Pin `click<8.3` (#7729)" (#7733)
4 months ago
Jeremy Tuloup c0d3e8b4d6
Pin `click<8.3` (#7729)
4 months ago
Jeremy Tuloup 9c5a275376
Remove link to `npmjs.com` (#7730)
4 months ago
dependabot[bot] 357229deac
Bump the actions group across 1 directory with 3 updates (#7704)
5 months ago
Jeremy Tuloup 346e30dec4
Define `O` as the keyboard shortcut to toggle cell outputs (#7709)
5 months ago
Jeremy Tuloup a8a8111d59
Increase checkpoint poll interval (#7711)
5 months ago
Jeremy Tuloup 5a845dcde0
Handle file rename errors (#7710)
5 months ago
jtpio 0e4fdd1941 Publish 7.5.0a2
5 months ago
Jeremy Tuloup 3100d879bf
Update to JupyterLab v4.5.0a3 (#7703)
5 months ago
Vishnutheep B 629e63445e
Encode URI file path (#7698)
5 months ago
jtpio 8f91eddf56 Publish 7.5.0a1
5 months ago
Jeremy Tuloup f56a27c17b
Update to JupyterLab v4.5.0a2 (#7694)
5 months ago
dependabot[bot] 6caeba2b22
Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group (#7675)
6 months ago
Jeremy Tuloup a82eeba22b
Pin `httpx` (#7691)
6 months ago
Sangam Paudel b99d42fd77
Fix grammatical errors in Contributing.md (#7669)
7 months ago
dependabot[bot] df09eaeb16
Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group (#7665)
7 months ago
dependabot[bot] 026fde1b38
Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests (#7664)
7 months ago
Jeremy Tuloup 71532b9313
Update to JupyterLab v4.5.0a1 (#7656)
8 months ago
Min RK 329d55279b
Revert "CI: pin to `jupyter-core<5.8.0` on Windows (#7655)" (#7657)
8 months ago
Jeremy Tuloup 22016bb249
CI: pin to `jupyter-core<5.8.0` on Windows (#7655)
8 months ago
jchen1223 b1a5f61a24
Update CONTRIBUTING.md (#7645)
8 months ago
jtpio 1d9dbd31f8 Publish 7.5.0a0
9 months ago
Jeremy Tuloup 22e29fc419
Update to JupyterLab v4.5.0a0 (#7650)
9 months ago
dependabot[bot] b6dc5a2af2
Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group (#7637)
9 months ago
Jeremy Tuloup 0c45402e1a
Update to JupyterLab v4.4.1 (#7638)
9 months ago
Jeremy Tuloup 633fec9a5d
Run UI tests on `ubuntu-latest` (#7639)
9 months ago
Honnix ea978c685a
chore: Fix UP006 (#7633)
9 months ago
dependabot[bot] 40e1bbe464
Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group (#7632)
9 months ago
Honnix 2616caa858
fix: Update lower bound of required python to 3.9 (#7628)
9 months ago

@ -26,7 +26,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Build
uses: ./.github/actions/build-dist
@ -41,7 +41,7 @@ jobs:
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
@ -68,7 +68,7 @@ jobs:
needs:
- test
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: jupyterlab/maintainer-tools/.github/actions/report-coverage@v1
with:
fail_under: 78
@ -77,7 +77,7 @@ jobs:
name: Test Docs
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- run: |
sudo apt-get update
@ -92,7 +92,7 @@ jobs:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
with:
dependency_type: minimum
@ -106,7 +106,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
with:
dependency_type: pre
@ -138,11 +138,11 @@ jobs:
py_cmd: python
steps:
- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python }}
allow-prereleases: true
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: notebook-dist-${{ github.run_number }}
path: ./dist
@ -170,18 +170,18 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1
with:
ignore_links: 'https://playwright.dev/docs/test-cli/ https://blog.jupyter.org/the-big-split-9d7b88a031a7 https://blog.jupyter.org/jupyter-ascending-1bf5b362d97e https://mybinder.org/v2/gh/jupyter/notebook/main https://nbviewer.jupyter.org https://stackoverflow.com https://github.com/[^/]+/?$'
ignore_links: 'https://playwright.dev/docs/test-cli/ https://blog.jupyter.org/.* https://mybinder.org/v2/gh/jupyter/notebook/main https://nbviewer.jupyter.org https://stackoverflow.com https://github.com/[^/]+/?$'
ignore_glob: 'ui-tests/test/notebooks/*'
test_lint:
name: Test Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v6
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Run Linters
run: |

@ -22,14 +22,14 @@ jobs:
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Install dependencies
run: |
python -m pip install -U "jupyterlab>=4.4.0,<4.5" hatch
python -m pip install -U "jupyterlab>=4.6.0a0,<4.7" hatch
jlpm
jlpm run build
@ -69,16 +69,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Install Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.10'
architecture: 'x64'
- name: Install dependencies
run: |
python -m pip install -U "jupyterlab>=4.4.0,<4.5" pip
python -m pip install -U "jupyterlab>=4.6.0a0,<4.7" pip
jlpm
jlpm run build

@ -17,7 +17,7 @@ jobs:
timeout-minutes: 30
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- name: Check Release
@ -27,7 +27,7 @@ jobs:
version_spec: next
- name: Upload Distributions
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: notebook-jupyter-releaser-dist-${{ github.run_number }}
path: .jupyter_releaser_checkout/dist

@ -34,7 +34,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: React to the triggering comment
run: |
@ -86,7 +86,7 @@ jobs:
- name: Build
uses: ./.github/actions/build-dist
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: notebook-dist-${{ github.run_number }}
path: ./dist

@ -19,7 +19,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Build
uses: ./.github/actions/build-dist
@ -34,12 +34,12 @@ jobs:
browser: [firefox, chromium]
steps:
- name: Checkout
uses: actions/checkout@v4
uses: actions/checkout@v6
- name: Base Setup
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
name: notebook-dist-${{ github.run_number }}
path: ./dist
@ -62,7 +62,7 @@ jobs:
- name: Upload Playwright Test assets
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: notebook-${{ matrix.browser }}-test-assets
path: |
@ -70,7 +70,7 @@ jobs:
- name: Upload Playwright Test report
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: notebook-${{ matrix.browser }}-test-report
path: |
@ -87,7 +87,7 @@ jobs:
- name: Upload updated snapshots
if: failure()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
with:
name: notebook-${{ matrix.browser }}-updated-snapshots
path: ui-tests/test

@ -35,17 +35,17 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
ref: ${{ inputs.branch || 'main' }}
- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'
- name: Install Node
uses: actions/setup-node@v4
uses: actions/setup-node@v6
with:
node-version: '20.x'
@ -79,7 +79,7 @@ jobs:
jlpm
jlpm deduplicate
fi
- uses: prefix-dev/setup-pixi@v0.8.4
- uses: prefix-dev/setup-pixi@v0.9.3
with:
pixi-version: v0.41.4
manifest-path: pyproject.toml

3
.gitignore vendored

@ -145,3 +145,6 @@ notebook/templates/*.html
# pixi environments
.pixi
*.egg-info
# Temporary files used for testing
tmp/

@ -1,58 +0,0 @@
github:
prebuilds:
master: true
pullRequests: true
pullRequestsFromForks: true
addCheck: false
addComment: false
addBadge: false
addLabel: false
tasks:
- name: setup
init: |
pushd /workspace
wget -qO- https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
popd
# bootstrap activation commands for other tasks to reuse
cat <<EOT > /workspace/bin/activate-env.sh
export MAMBA_ROOT_PREFIX=/workspace/.micromamba
export MAMBA_EXE=/workspace/bin/micromamba
$(/workspace/bin/micromamba shell hook --shell=bash)
export JUPYTER_PREFER_ENV_PATH=1
export TZ=UTC
micromamba activate
EOT
source /workspace/bin/activate-env.sh
micromamba install -n base -y -c conda-forge python=3.11 nodejs=18
source /workspace/bin/activate-env.sh
python -m pip install -e ".[dev,test]" && jlpm run build && jlpm develop
gp sync-done setup
command: |
gp sync-done setup
source /workspace/bin/activate-env.sh
jupyter notebook --no-browser --ServerApp.token='' --ServerApp.allow_remote_access=True
- name: auto-activate
command: |
gp sync-await setup
source /workspace/bin/activate-env.sh
jlpm watch
- name: shell
command: |
gp sync-await setup
echo "source /workspace/bin/activate-env.sh" >> ~/.bashrc
source /workspace/bin/activate-env.sh
- name: docs
command: |
gp sync-await setup
sudo apt-get update
sudo apt install enchant-2 -y
wget https://github.com/jgm/pandoc/releases/download/2.14.2/pandoc-2.14.2-1-amd64.deb -O /tmp/pandoc.deb && sudo dpkg -i /tmp/pandoc.deb
source /workspace/bin/activate-env.sh
hatch run docs:build
hatch run docs:serve
ports:
- port: 8888

@ -45,7 +45,7 @@ repos:
files: "^notebook"
stages: [manual]
args: ["--install-types", "--non-interactive"]
additional_dependencies: ["traitlets>=5.13", "tornado", "jupyter_server>=2.10", "jupyterlab_server>=2.25", "jupyterlab>=4.4.9,<4.5"]
additional_dependencies: ["traitlets>=5.13", "tornado", "jupyter_server>=2.10", "jupyterlab_server>=2.25", "jupyterlab>=4.6.0a0,<4.7"]
- repo: https://github.com/pre-commit/pygrep-hooks
rev: 'v1.10.0'

@ -12,174 +12,398 @@ upgrading `notebook`.
Use `pip install pip --upgrade` to upgrade pip. Check pip version with
`pip --version`.
## 7.4
## 7.5
Jupyter Notebook 7.4 is based on JupyterLab 4.4, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-3-to-4-4) which lists deprecations and changes to the public API.
Jupyter Notebook 7.5 is based on JupyterLab 4.5, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-4-to-4-5) which lists deprecations and changes to the public API.
Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.4, although they may not all be supported in Notebook 7.4.
Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.5, although they may not all be supported in Notebook 7.5.
For reference you may have a look at the [JupyterLab 4.4 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-4) to learn more.
For reference you may have a look at the [JupyterLab 4.5 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-5) to learn more.
### Code console improvements
### Notebook improvements
The code console prompt can now be positioned on the top, left, or right side of the console,
in addition to the default bottom placement. The placement is persisted in the Prompt Cell
Position setting.
The default windowing mode is now `contentVisibility` which improves cell rendering and alleviates previously reported issues. The minimap can be enabled for all windowing modes and all notebooks via the `Settings` menu, or by toggling the minimap per notebook with the `View` -> `Show Minimap` option.
The console toolbar now includes buttons to:
- Execute code
- Restart the kernel
- Clear the cells
- Switch the kernel
Additional fixes improve layout containment and scrollbar behavior when working with long cells.
<img alt="The option to change console prompt position is available under the three dots button in the console toolbar, which is the last toolbar button" src="https://github.com/user-attachments/assets/11f5a82a-0dd2-439b-a520-d04c73363bfe" class="jp-screenshot">
### Debugger and console enhancements
Additional settings for console behavior have been added:
- Clear Code Content on Execute (enabled by default) When disabled, the code submitted for execution remains in the code editor, allowing for further edits.
- Hide Code Input When enabled, only the execution output is shown in the console.
- Clear Cells on Execute When enabled, only the last cell is displayed.
The debugger's evaluate dialog has been replaced with an interactive console featuring syntax highlighting and code completion. The variables panel now preserves state when switching editors. Visual improvements include highlighted selected breakpoints, improved empty line handling, and a paused indicator. Debugger panels now reference cell execution counts.
Toggling all the three new settings transforms the console into an interactive editor
resembling an ephemeral notebook with a single cell.
<img alt="Debugger panels with reference to execution counts and paused indicator as well as console evaluation"
src="https://raw.githubusercontent.com/jupyter/notebook/main/docs/source/_static/changelog_assets/7.5-debugger.webp"
class="jp-screenshot">
<img alt="Toggling all the three new settings transforms the console into a single cell" src="https://github.com/user-attachments/assets/86eb1114-0d60-4379-a370-b538717fc74f" class="jp-screenshot">
Log Console users can configure default log levels and customize toolbars.
### Settings import and export
### Terminal enhancements
Settings can now be exported to `overrides.json` from the Settings Editor,
which can be used to pre-configure defaults in deployments or to restore settings.
The terminal now includes search functionality, with search highlights that adapt to theme changes.
<img alt="The Import and Export buttons in the Settings Editor are the first two items in the toolbar panel" src="https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.4-settings-import-export.png" class="jp-screenshot">
### Media and content support
### Support for collaboration without `RTC:` drive
Built-in audio and video viewers allow direct file playback within Jupyter Notebook.
Real time collaboration in previous versions of JupyterLab and Jupyter Notebook
(which can be enabled by installing jupyter-collaboration package)
was implemented by swapping the default JupyterLab file system
drive to a collaborative drive with the `RTC:` prefix.
This approach was incompatible with multiple extensions.
JupyterLab 4.4 introduces the Content Providers API, which allows the next version of `jupyter-collaboration` to work without changing the drive prefix.
This improves compatibility with extensions that do not support arbitrary drives.
<img alt="Video file opened in a Jupyter Notebook tab"
src="https://raw.githubusercontent.com/jupyter/notebook/main/docs/source/_static/changelog_assets/7.5-media-player.webp"
class="jp-screenshot">
### Context menu opt-out
### File browser enhancements
The context menu, available under right mouse click in browsers, can now be disabled globally
by toggling the `Enable Context Menu` option available in the Command Palette,
or via the JSON Settings Editor in the Application Context Menu.
- There is a new `allowFileUploads` setting to control upload permissions.
- Menu options for creating Python, R, or Julia files are now available from the New menu.
- The "Select All" command is now available with the Ctrl + A (or Cmd + A on macOS) keyboard shortcut in the file browser.
- Breadcrumbs are now configurable through `breadcrumbsLeftItems` and `breadcrumbsRightItems` settings.
### Settings editor improvements
The `addExtraLineOnCellMerge` setting removes extra lines when merging cells, matching classic notebook behavior.
### Cell toolbar settings
The cell toolbar settings are now exposed in the Settings Editor, making it easier to customize the cell toolbar appearance and behavior.
### Keyboard shortcuts
The `O` key has been defined as the keyboard shortcut to toggle cell outputs, restoring this familiar functionality from the classic notebook.
### User interface and accessibility
Automatic theme switching between light and dark modes is now available when system synchronization is enabled. Dialog components display buttons and checkboxes on separate lines for improved readability. Terminal selections show better visibility under high-contrast themes. Keyboard navigation and status bar tab ordering have been improved.
### Breaking changes
Python 3.8 support has been dropped in this release.
<!-- <START NEW CHANGELOG ENTRY> -->
## 7.4.7
## 7.6.0a0
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.6...3f6ccf3816f0fb6fd695a978b5a369879492f339))
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.1...e7f5e5d50ea18b0b17fe8a9df674025fcc6ab5d1))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.4.9 [#7738](https://github.com/jupyter/notebook/pull/7738) ([@jtpio](https://github.com/jtpio))
- Bump systeminformation from 5.23.14 to 5.27.14 in /ui-tests [#7788](https://github.com/jupyter/notebook/pull/7788) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab `4.6.0a0` [#7787](https://github.com/jupyter/notebook/pull/7787) ([@jtpio](https://github.com/jtpio))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-26&to=2025-09-27&type=c))
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-12-16&to=2025-12-17&type=c))
[@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-26..2025-09-27&type=Issues)
@jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-12-16..2025-12-17&type=Issues))
<!-- <END NEW CHANGELOG ENTRY> -->
## 7.4.6
## 7.5.1
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0...fccf56801be0a27a3de76c00d2710a941f255b10))
### Bugs fixed
- Fix selector for the `O` keyboard shortcut [#7782](https://github.com/jupyter/notebook/pull/7782) ([@jtpio](https://github.com/jtpio), [@krassowski](https://github.com/krassowski))
- Fix missing debugger display provider in Notebook [#7774](https://github.com/jupyter/notebook/pull/7774) ([@arjxn-py](https://github.com/arjxn-py), [@jtpio](https://github.com/jtpio), [@martinRenou](https://github.com/martinRenou))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.5.1 [#7785](https://github.com/jupyter/notebook/pull/7785) ([@jtpio](https://github.com/jtpio))
- Fix link to the IPython install page [#7783](https://github.com/jupyter/notebook/pull/7783) ([@jtpio](https://github.com/jtpio))
- Fix `hatch build`, ignore links to `blog.jupyter.org` [#7780](https://github.com/jupyter/notebook/pull/7780) ([@jtpio](https://github.com/jtpio))
- Bump the actions group with 4 updates [#7773](https://github.com/jupyter/notebook/pull/7773) ([@jtpio](https://github.com/jtpio))
### Contributors to this release
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.5...0c9b0539934bbd9919f24a383e2d0ab00b75f084))
The following people contributed discussions, new ideas, code and documentation contributions, and review.
See [our definition of contributors](https://github-activity.readthedocs.io/en/latest/#how-does-this-tool-define-contributions-in-the-reports).
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-11-19&to=2025-12-16&type=c))
@arjxn-py ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aarjxn-py+updated%3A2025-11-19..2025-12-16&type=Issues)) | @jtpio ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-11-19..2025-12-16&type=Issues)) | @krassowski ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-11-19..2025-12-16&type=Issues)) | @martinRenou ([activity](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3AmartinRenou+updated%3A2025-11-19..2025-12-16&type=Issues))
## 7.5.0
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...be53ec8bc96cdbcb64b6f1c5ec39c123c087a348))
### Enhancements made
- Update to JupyterLab v4.4.8 [#7735](https://github.com/jupyter/notebook/pull/7735) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0b1 [#7746](https://github.com/jupyter/notebook/pull/7746) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0b0 [#7739](https://github.com/jupyter/notebook/pull/7739) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0a4 [#7728](https://github.com/jupyter/notebook/pull/7728) ([@jtpio](https://github.com/jtpio))
- Increase the checkpoint polling interval to 30s [#7711](https://github.com/jupyter/notebook/pull/7711) ([@jtpio](https://github.com/jtpio))
- Define `O` as the keyboard shortcut to toggle cell outputs [#7709](https://github.com/jupyter/notebook/pull/7709) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0a3 [#7703](https://github.com/jupyter/notebook/pull/7703) ([@jtpio](https://github.com/jtpio))
### Bugs fixed
- Expose the cell toolbar settings [#7766](https://github.com/jupyter/notebook/pull/7766) ([@jtpio](https://github.com/jtpio))
- Handle file rename errors [#7710](https://github.com/jupyter/notebook/pull/7710) ([@jtpio](https://github.com/jtpio))
- Fix open file with “#” in the filename [#7698](https://github.com/jupyter/notebook/pull/7698) ([@itsmevichu](https://github.com/itsmevichu))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.5.0 [#7768](https://github.com/jupyter/notebook/pull/7768) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0rc1 [#7764](https://github.com/jupyter/notebook/pull/7764) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0rc0 [#7755](https://github.com/jupyter/notebook/pull/7755) ([@jtpio](https://github.com/jtpio))
- Bump the actions group across 1 directory with 3 updates [#7751](https://github.com/jupyter/notebook/pull/7751) ([@dependabot](https://github.com/dependabot))
- Use Node.js 24 / npm 11 to publish releases [#7749](https://github.com/jupyter/notebook/pull/7749) ([@jtpio](https://github.com/jtpio))
- Revert "Pin `click<8.3`" [#7733](https://github.com/jupyter/notebook/pull/7733) ([@jtpio](https://github.com/jtpio))
- Remove link to `npmjs.com` [#7730](https://github.com/jupyter/notebook/pull/7730) ([@jtpio](https://github.com/jtpio))
- Pin `click<8.3` [#7729](https://github.com/jupyter/notebook/pull/7729) ([@jtpio](https://github.com/jtpio))
- Bump the actions group across 1 directory with 3 updates [#7704](https://github.com/jupyter/notebook/pull/7704) ([@dependabot](https://github.com/dependabot))
- Update to JupyterLab v4.5.0a2 [#7694](https://github.com/jupyter/notebook/pull/7694) ([@jtpio](https://github.com/jtpio))
- Pin `httpx` [#7691](https://github.com/jupyter/notebook/pull/7691) ([@jtpio](https://github.com/jtpio))
- Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group [#7675](https://github.com/jupyter/notebook/pull/7675) ([@dependabot](https://github.com/dependabot))
- Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group [#7665](https://github.com/jupyter/notebook/pull/7665) ([@dependabot](https://github.com/dependabot))
- Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests [#7664](https://github.com/jupyter/notebook/pull/7664) ([@dependabot](https://github.com/dependabot))
- Revert "CI: pin to `jupyter-core<5.8.0` on Windows" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk))
- Update to JupyterLab v4.5.0a1 [#7656](https://github.com/jupyter/notebook/pull/7656) ([@jtpio](https://github.com/jtpio))
- CI: pin to `jupyter-core<5.8.0` on Windows [#7655](https://github.com/jupyter/notebook/pull/7655) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0a0 [#7650](https://github.com/jupyter/notebook/pull/7650) ([@jtpio](https://github.com/jtpio))
- Run UI tests on `ubuntu-latest` [#7639](https://github.com/jupyter/notebook/pull/7639) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio))
- Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group [#7637](https://github.com/jupyter/notebook/pull/7637) ([@dependabot](https://github.com/dependabot))
- chore: Fix UP006 [#7633](https://github.com/jupyter/notebook/pull/7633) ([@honnix](https://github.com/honnix))
- Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group [#7632](https://github.com/jupyter/notebook/pull/7632) ([@dependabot](https://github.com/dependabot))
- Drop support for Python 3.8 [#7628](https://github.com/jupyter/notebook/pull/7628) ([@honnix](https://github.com/honnix))
### Documentation improvements
- User facing changelog for 7.5 [#7770](https://github.com/jupyter/notebook/pull/7770) ([@jtpio](https://github.com/jtpio))
- Clean up references to Gitpod [#7767](https://github.com/jupyter/notebook/pull/7767) ([@jtpio](https://github.com/jtpio))
- Fix link to Code of Conduct in CONTRIBUTING.md [#7758](https://github.com/jupyter/notebook/pull/7758) ([@jtpio](https://github.com/jtpio))
- Remove JupyterCon 2025 announcement banner [#7757](https://github.com/jupyter/notebook/pull/7757) ([@jasongrout](https://github.com/jasongrout))
- Update JupyterCon 2025 announcement links [#7744](https://github.com/jupyter/notebook/pull/7744) ([@krassowski](https://github.com/krassowski))
- Add JupyterCon banner and add Jupyter colors [#7727](https://github.com/jupyter/notebook/pull/7727) ([@choldgraf](https://github.com/choldgraf))
- Fix grammatical issues in Contributing.md [#7669](https://github.com/jupyter/notebook/pull/7669) ([@sangampaudel530](https://github.com/sangampaudel530))
- Fixed grammar and typos in CONTRIBUTING.md [#7645](https://github.com/jupyter/notebook/pull/7645) ([@jchen1223](https://github.com/jchen1223))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-05&to=2025-09-26&type=c))
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-11-19&type=c))
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-05..2025-09-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-05..2025-09-26&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ameeseeksmachine+updated%3A2025-08-05..2025-09-26&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-08-05..2025-09-26&type=Issues)
[@afshin](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aafshin+updated%3A2025-04-09..2025-11-19&type=Issues) | [@choldgraf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acholdgraf+updated%3A2025-04-09..2025-11-19&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-04-09..2025-11-19&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-11-19&type=Issues) | [@honnix](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahonnix+updated%3A2025-04-09..2025-11-19&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jchen1223](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajchen1223+updated%3A2025-04-09..2025-11-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-11-19&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-04-09..2025-11-19&type=Issues) | [@lumberbot-app](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Alumberbot-app+updated%3A2025-04-09..2025-11-19&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2025-04-09..2025-11-19&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-04-09..2025-11-19&type=Issues) | [@sangampaudel530](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asangampaudel530+updated%3A2025-04-09..2025-11-19&type=Issues)
## 7.4.5
## 7.5.0rc1
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.4...4cc6a9c365e47a3276da14a5f235197f19351191))
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-rc.0...7533ccab5e4adc765e57a35b1791850daf952044))
### Maintenance and upkeep improvements
- [7.4.x] Pin `httpx` [#7692](https://github.com/jupyter/notebook/pull/7692) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.4.5 [#7689](https://github.com/jupyter/notebook/pull/7689) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0rc1 [#7764](https://github.com/jupyter/notebook/pull/7764) ([@jtpio](https://github.com/jtpio))
- Bump the actions group across 1 directory with 3 updates [#7751](https://github.com/jupyter/notebook/pull/7751) ([@dependabot](https://github.com/dependabot))
### Documentation improvements
- Fix link to Code of Conduct in CONTRIBUTING.md [#7758](https://github.com/jupyter/notebook/pull/7758) ([@jtpio](https://github.com/jtpio))
- Remove JupyterCon 2025 announcement banner [#7757](https://github.com/jupyter/notebook/pull/7757) ([@jasongrout](https://github.com/jasongrout))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-06-30&to=2025-08-05&type=c))
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-11-03&to=2025-11-14&type=c))
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-06-30..2025-08-05&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-06-30..2025-08-05&type=Issues)
[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-11-03..2025-11-14&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-11-03..2025-11-14&type=Issues) | [@jasongrout](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajasongrout+updated%3A2025-11-03..2025-11-14&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-11-03..2025-11-14&type=Issues)
## 7.4.4
## 7.5.0rc0
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.3...62295ff009dda35e14117f05ca400b019713f1e3))
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-beta.1...18ba796a58402999044b7e8c4401319b76fed0ce))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.4.4 [#7671](https://github.com/jupyter/notebook/pull/7671) ([@jtpio](https://github.com/jtpio))
- Revert "CI: pin to `jupyter-core<5.8.0` on Windows" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk))
- Update to JupyterLab v4.5.0rc0 [#7755](https://github.com/jupyter/notebook/pull/7755) ([@jtpio](https://github.com/jtpio))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-05-26&to=2025-06-30&type=c))
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-10-20&to=2025-11-03&type=c))
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-05-26..2025-06-30&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-05-26..2025-06-30&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ameeseeksmachine+updated%3A2025-05-26..2025-06-30&type=Issues)
[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-10-20..2025-11-03&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-10-20..2025-11-03&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-10-20..2025-11-03&type=Issues)
## 7.4.3
## 7.5.0b1
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-beta.0...7f84b95ed6550508f9de03d27cd8c2cb84777648))
### Enhancements made
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.2...071d48a2452bfeebcb275e6b8f0f2b067708445d))
- Update to JupyterLab v4.5.0b1 [#7746](https://github.com/jupyter/notebook/pull/7746) ([@jtpio](https://github.com/jtpio))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.4.3 [#7653](https://github.com/jupyter/notebook/pull/7653) ([@jtpio](https://github.com/jtpio))
- Use Node.js 24 / npm 11 to publish releases [#7749](https://github.com/jupyter/notebook/pull/7749) ([@jtpio](https://github.com/jtpio))
### Documentation improvements
- Update JupyterCon 2025 announcement links [#7744](https://github.com/jupyter/notebook/pull/7744) ([@krassowski](https://github.com/krassowski))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-29&to=2025-10-20&type=c))
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-09-29..2025-10-20&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-29..2025-10-20&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-09-29..2025-10-20&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-09-29..2025-10-20&type=Issues)
## 7.5.0b0
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.3...828708ec26cc4d2ff9f8b725b00024481ae42d2d))
### Enhancements made
- Update to JupyterLab v4.5.0b0 [#7739](https://github.com/jupyter/notebook/pull/7739) ([@jtpio](https://github.com/jtpio))
### Documentation improvements
- Add JupyterCon banner and add Jupyter colors [#7727](https://github.com/jupyter/notebook/pull/7727) ([@choldgraf](https://github.com/choldgraf))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-05-06&to=2025-05-26&type=c))
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-09-24&to=2025-09-29&type=c))
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-05-06..2025-05-26&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-05-06..2025-05-26&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-05-06..2025-05-26&type=Issues)
[@choldgraf](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Acholdgraf+updated%3A2025-09-24..2025-09-29&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-09-24..2025-09-29&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-09-24..2025-09-29&type=Issues)
## 7.4.2
## 7.5.0a3
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.1...0d8e60f43fd8a2219ad12ca1156c17a64c7b7d5b))
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.2...254b06ca4b232a0a96ad2dddde560e41df371e57))
### Enhancements made
- Update to JupyterLab v4.5.0a4 [#7728](https://github.com/jupyter/notebook/pull/7728) ([@jtpio](https://github.com/jtpio))
- Increase the checkpoint polling interval to 30s [#7711](https://github.com/jupyter/notebook/pull/7711) ([@jtpio](https://github.com/jtpio))
- Define `O` as the keyboard shortcut to toggle cell outputs [#7709](https://github.com/jupyter/notebook/pull/7709) ([@jtpio](https://github.com/jtpio))
### Bugs fixed
- Handle file rename errors [#7710](https://github.com/jupyter/notebook/pull/7710) ([@jtpio](https://github.com/jtpio))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.4.2 [#7649](https://github.com/jupyter/notebook/pull/7649) ([@jtpio](https://github.com/jtpio))
- Revert "Pin `click<8.3`" [#7733](https://github.com/jupyter/notebook/pull/7733) ([@jtpio](https://github.com/jtpio))
- Remove link to `npmjs.com` [#7730](https://github.com/jupyter/notebook/pull/7730) ([@jtpio](https://github.com/jtpio))
- Pin `click<8.3` [#7729](https://github.com/jupyter/notebook/pull/7729) ([@jtpio](https://github.com/jtpio))
- Bump the actions group across 1 directory with 3 updates [#7704](https://github.com/jupyter/notebook/pull/7704) ([@dependabot](https://github.com/dependabot))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-23&to=2025-05-06&type=c))
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-18&to=2025-09-24&type=c))
[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-08-18..2025-09-24&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-18..2025-09-24&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-18..2025-09-24&type=Issues) | [@nkn2022](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ankn2022+updated%3A2025-08-18..2025-09-24&type=Issues)
## 7.5.0a2
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-23..2025-05-06&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-23..2025-05-06&type=Issues)
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.1...3100d879bfe09c629b4add998bd2ac408ffa2af8))
## 7.4.1
### Enhancements made
- Update to JupyterLab v4.5.0a3 [#7703](https://github.com/jupyter/notebook/pull/7703) ([@jtpio](https://github.com/jtpio))
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...cca06d9dafec94b1984d0ac91698433060b9f3f1))
### Bugs fixed
- Fix open file with “#” in the filename [#7698](https://github.com/jupyter/notebook/pull/7698) ([@itsmevichu](https://github.com/itsmevichu))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-08-11&to=2025-08-18&type=c))
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-08-11..2025-08-18&type=Issues) | [@itsmevichu](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aitsmevichu+updated%3A2025-08-11..2025-08-18&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-08-11..2025-08-18&type=Issues)
## 7.5.0a1
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.5.0-alpha.0...f56a27c17bfd85f37a27dea9512c675120571e63))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.5.0a2 [#7694](https://github.com/jupyter/notebook/pull/7694) ([@jtpio](https://github.com/jtpio))
- Pin `httpx` [#7691](https://github.com/jupyter/notebook/pull/7691) ([@jtpio](https://github.com/jtpio))
- Bump prefix-dev/setup-pixi from 0.8.10 to 0.8.11 in the actions group [#7675](https://github.com/jupyter/notebook/pull/7675) ([@dependabot](https://github.com/dependabot))
- Bump prefix-dev/setup-pixi from 0.8.8 to 0.8.10 in the actions group [#7665](https://github.com/jupyter/notebook/pull/7665) ([@dependabot](https://github.com/dependabot))
- Bump brace-expansion from 1.1.11 to 1.1.12 in /ui-tests [#7664](https://github.com/jupyter/notebook/pull/7664) ([@dependabot](https://github.com/dependabot))
- Revert "CI: pin to `jupyter-core<5.8.0` on Windows" [#7657](https://github.com/jupyter/notebook/pull/7657) ([@minrk](https://github.com/minrk))
- Update to JupyterLab v4.5.0a1 [#7656](https://github.com/jupyter/notebook/pull/7656) ([@jtpio](https://github.com/jtpio))
- CI: pin to `jupyter-core<5.8.0` on Windows [#7655](https://github.com/jupyter/notebook/pull/7655) ([@jtpio](https://github.com/jtpio))
### Documentation improvements
- Fix grammatical issues in Contributing.md [#7669](https://github.com/jupyter/notebook/pull/7669) ([@sangampaudel530](https://github.com/sangampaudel530))
- Fixed grammar and typos in CONTRIBUTING.md [#7645](https://github.com/jupyter/notebook/pull/7645) ([@jchen1223](https://github.com/jchen1223))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-05-07&to=2025-08-11&type=c))
[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-05-07..2025-08-11&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-05-07..2025-08-11&type=Issues) | [@jchen1223](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajchen1223+updated%3A2025-05-07..2025-08-11&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-05-07..2025-08-11&type=Issues) | [@krassowski](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Akrassowski+updated%3A2025-05-07..2025-08-11&type=Issues) | [@minrk](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Aminrk+updated%3A2025-05-07..2025-08-11&type=Issues) | [@sangampaudel530](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Asangampaudel530+updated%3A2025-05-07..2025-08-11&type=Issues)
## 7.5.0a0
([Full Changelog](https://github.com/jupyter/notebook/compare/@jupyter-notebook/application-extension@7.4.0...22e29fc41901ef8116670bc8a04eeb833858ff51))
### Maintenance and upkeep improvements
- Update to JupyterLab v4.5.0a0 [#7650](https://github.com/jupyter/notebook/pull/7650) ([@jtpio](https://github.com/jtpio))
- Run UI tests on `ubuntu-latest` [#7639](https://github.com/jupyter/notebook/pull/7639) ([@jtpio](https://github.com/jtpio))
- Update to JupyterLab v4.4.1 [#7638](https://github.com/jupyter/notebook/pull/7638) ([@jtpio](https://github.com/jtpio))
- Bump prefix-dev/setup-pixi from 0.8.5 to 0.8.8 in the actions group [#7637](https://github.com/jupyter/notebook/pull/7637) ([@dependabot](https://github.com/dependabot))
- chore: Fix UP006 [#7633](https://github.com/jupyter/notebook/pull/7633) ([@honnix](https://github.com/honnix))
- Bump prefix-dev/setup-pixi from 0.8.4 to 0.8.5 in the actions group [#7632](https://github.com/jupyter/notebook/pull/7632) ([@dependabot](https://github.com/dependabot))
- Drop support for Python 3.8 [#7628](https://github.com/jupyter/notebook/pull/7628) ([@honnix](https://github.com/honnix))
### Contributors to this release
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-04-23&type=c))
([GitHub contributors page for this release](https://github.com/jupyter/notebook/graphs/contributors?from=2025-04-09&to=2025-05-07&type=c))
[@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Adependabot+updated%3A2025-04-09..2025-05-07&type=Issues) | [@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-05-07&type=Issues) | [@honnix](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ahonnix+updated%3A2025-04-09..2025-05-07&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-05-07&type=Issues)
## 7.4
Jupyter Notebook 7.4 is based on JupyterLab 4.4, and includes a number of new features, bug fixes, and enhancements for extension developers. This release is compatible with extensions supporting JupyterLab 4.0. Extension authors are recommended to consult the [Extension Migration Guide](https://jupyterlab.readthedocs.io/en/latest/extension/extension_migration.html#jupyterlab-4-3-to-4-4) which lists deprecations and changes to the public API.
Below are a few highlights for this new release. Most of the new features and improvements come from the update to JupyterLab 4.4, although they may not all be supported in Notebook 7.4.
For reference you may have a look at the [JupyterLab 4.4 changelog](https://jupyterlab.readthedocs.io/en/latest/getting_started/changelog.html#v4-4) to learn more.
### Code console improvements
The code console prompt can now be positioned on the top, left, or right side of the console,
in addition to the default bottom placement. The placement is persisted in the Prompt Cell
Position setting.
The console toolbar now includes buttons to:
- Execute code
- Restart the kernel
- Clear the cells
- Switch the kernel
<img alt="The option to change console prompt position is available under the three dots button in the console toolbar, which is the last toolbar button" src="https://github.com/user-attachments/assets/11f5a82a-0dd2-439b-a520-d04c73363bfe" class="jp-screenshot">
Additional settings for console behavior have been added:
- Clear Code Content on Execute (enabled by default) When disabled, the code submitted for execution remains in the code editor, allowing for further edits.
- Hide Code Input When enabled, only the execution output is shown in the console.
- Clear Cells on Execute When enabled, only the last cell is displayed.
Toggling all the three new settings transforms the console into an interactive editor
resembling an ephemeral notebook with a single cell.
<img alt="Toggling all the three new settings transforms the console into a single cell" src="https://github.com/user-attachments/assets/86eb1114-0d60-4379-a370-b538717fc74f" class="jp-screenshot">
[@github-actions](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Agithub-actions+updated%3A2025-04-09..2025-04-23&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ajtpio+updated%3A2025-04-09..2025-04-23&type=Issues) | [@meeseeksmachine](https://github.com/search?q=repo%3Ajupyter%2Fnotebook+involves%3Ameeseeksmachine+updated%3A2025-04-09..2025-04-23&type=Issues)
### Settings import and export
Settings can now be exported to `overrides.json` from the Settings Editor,
which can be used to pre-configure defaults in deployments or to restore settings.
<img alt="The Import and Export buttons in the Settings Editor are the first two items in the toolbar panel" src="https://raw.githubusercontent.com/jupyterlab/jupyterlab/main/docs/source/getting_started/changelog_assets/4.4-settings-import-export.png" class="jp-screenshot">
### Support for collaboration without `RTC:` drive
Real time collaboration in previous versions of JupyterLab and Jupyter Notebook
(which can be enabled by installing jupyter-collaboration package)
was implemented by swapping the default JupyterLab file system
drive to a collaborative drive with the `RTC:` prefix.
This approach was incompatible with multiple extensions.
JupyterLab 4.4 introduces the Content Providers API, which allows the next version of `jupyter-collaboration` to work without changing the drive prefix.
This improves compatibility with extensions that do not support arbitrary drives.
### Context menu opt-out
The context menu, available under right mouse click in browsers, can now be disabled globally
by toggling the `Enable Context Menu` option available in the Command Palette,
or via the JSON Settings Editor in the Application Context Menu.
## 7.4.0

@ -12,7 +12,7 @@ Note: You will need NodeJS to build the extension package.
The `jlpm` command is JupyterLab's pinned version of [yarn](https://yarnpkg.com/) that is installed with JupyterLab. You may use
`yarn` or `npm` in lieu of `jlpm` below.
**Note**: we recommend using `mamba` to speed the creating of the environment.
**Note**: we recommend using `mamba` to speed up the creation of the environment.
```bash
# create a new environment
@ -77,20 +77,19 @@ according to the versions in the _package.json_ file.
However, it is sometimes useful to be able to test changes in Notebook, with dependencies (e.g. `@jupyterlab` packages) that have not yet
been published.
[yalc](https://github.com/wclr/yalc) can help use local JavaScript packages in your build of
Notebook, acting as a local package repository.
[yalc](https://github.com/wclr/yalc) can help you use local JavaScript packages when building Notebook, acting as a local package repository.
- Install yalc globally in you environment:
- Install yalc globally in your environment:
`npm install -g yalc`
- Publish you dependency package:\
- Publish your dependency package:\
`yalc publish`, from the package root directory.\
For instance, if you have are developing on _@jupyterlab/ui-components_, this command must be executed from
For instance, if you are developing on _@jupyterlab/ui-components_, this command must be executed from
_path_to_jupyterlab/packages/ui-components_.
- Depend on this local repository in Notebook:
- from the Notebook root directory:\
`yalc add your_package` : this will create a _dependencies_ entry in the main _package.json_ file.\
With the previous example, it would be `yalc add @jupyterlab/ui-components`.
- Notebook is a monerepo, so we want this dependency to be 'linked' as a resolution (for all sub-packages) instead
- Notebook is a monorepo, so we want this dependency to be 'linked' as a resolution (for all sub-packages) instead
of a dependency.\
The easiest way is to manually move the new entry in _package.json_ from _dependencies_ to _resolutions_.
- Build Notebook with the local dependency:\
@ -132,11 +131,11 @@ jlpm test
The `test` script calls the Playwright test runner. You can pass additional arguments to `playwright` by appending parameters to the command. For example to run the test in headed mode, `jlpm test --headed`.
Checkout the [Playwright Command Line Reference](https://playwright.dev/docs/test-cli/) for more information about the available command line options.
Check out the [Playwright Command Line Reference](https://playwright.dev/docs/test-cli/) for more information about the available command line options.
Running the end to end tests in headful mode will trigger something like the following:
![playwight-headed-demo](https://user-images.githubusercontent.com/591645/141274633-ca9f9c2f-eef6-430e-9228-a35827f8133d.gif)
![playwright-headed-demo](https://user-images.githubusercontent.com/591645/141274633-ca9f9c2f-eef6-430e-9228-a35827f8133d.gif)
## Tasks caching
@ -173,11 +172,11 @@ This will trigger a GitHub Action that will run the UI tests automatically and p
## Code Styling
All non-python source code is formatted using [prettier](https://prettier.io) and python source code is formatted using [black](https://github.com/psf/black)s
All non-python source code is formatted using [prettier](https://prettier.io) and python source code is formatted using [black](https://github.com/psf/black).
When code is modified and committed, all staged files will be
automatically formatted using pre-commit git hooks (with help from
[pre-commit](https://github.com/pre-commit/pre-commit). The benefit of
using a code formatters like `prettier` and `black` is that it removes the topic of
using code formatters like `prettier` and `black` is that it removes the topic of
code style from the conversation when reviewing pull requests, thereby
speeding up the review process.
@ -212,7 +211,7 @@ yourself after that.
You may also use the prettier npm script (e.g. `npm run prettier` or
`yarn prettier` or `jlpm prettier`) to format the entire code base.
We recommend installing a prettier extension for your code editor and
configuring it to format your code with a keyboard shortcut or
configuring it to format your code with a keyboard shortcut, or
automatically on save.
Some of the hooks only run on CI by default, but you can invoke them by
@ -244,6 +243,5 @@ Alternatively you can also contribute to Jupyter Notebook without setting up a l
- Run `pixi shell` in a terminal to activate the development environment
- Use the commands above for building the extension and running the tests, for example: `jlpm build`
- To start the application: `pixi run start`. A popup should appear with a button to open the Jupyter Notebook in a new browser tab. If the popup does not appear, you can navigate to the "Forwarded ports" panel to find the URL to the application.
- [Gitpod](https://gitpod.io/#https://github.com/jupyter/notebook) integration is enabled. The Gitpod config automatically builds the Jupyter Notebook application and the documentation.
- GitHubs [built-in editor](https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files) is suitable for contributing small fixes
- GitHub's [built-in editor](https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files) is suitable for contributing small fixes.
- A more advanced [github.dev](https://docs.github.com/en/codespaces/the-githubdev-web-based-editor) editor can be accessed by pressing the dot (.) key while in the Jupyter Notebook GitHub repository

@ -3,7 +3,6 @@
![Github Actions Status](https://github.com/jupyter/notebook/workflows/Build/badge.svg)
[![Documentation Status](https://readthedocs.org/projects/jupyter-notebook/badge/?version=latest)](https://jupyter-notebook.readthedocs.io/en/latest/?badge=latest)
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jupyter/notebook/main?urlpath=tree)
[![Gitpod](https://img.shields.io/badge/gitpod_editor-open-blue.svg)](https://gitpod.io/#https://github.com/jupyter/notebook)
The Jupyter notebook is a web-based notebook environment for interactive
computing.

@ -1,212 +1,210 @@
{
"name": "@jupyter-notebook/app",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"private": true,
"scripts": {
"build": "webpack",
"build:prod": "webpack --config ./webpack.prod.config.js",
"build": "rspack",
"build:prod": "rspack --config ./rspack.prod.config.js",
"clean": "rimraf build && jlpm run clean:static",
"clean:static": "rimraf -g \"../notebook/static/!(favicons)\"",
"watch": "webpack --config ./webpack.config.watch.js"
"watch": "rspack --watch --config rspack.config.js"
},
"resolutions": {
"@codemirror/state": "~6.5.2",
"@codemirror/view": "~6.38.1",
"@jupyter-notebook/application": "~7.4.7",
"@jupyter-notebook/application-extension": "~7.4.7",
"@jupyter-notebook/console-extension": "~7.4.7",
"@jupyter-notebook/docmanager-extension": "~7.4.7",
"@jupyter-notebook/documentsearch-extension": "~7.4.7",
"@jupyter-notebook/help-extension": "~7.4.7",
"@jupyter-notebook/notebook-extension": "~7.4.7",
"@jupyter-notebook/terminal-extension": "~7.4.7",
"@jupyter-notebook/tree": "~7.4.7",
"@jupyter-notebook/tree-extension": "~7.4.7",
"@jupyter-notebook/ui-components": "~7.4.7",
"@jupyter-notebook/application": "~7.6.0-alpha.0",
"@jupyter-notebook/application-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/console-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/docmanager-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/documentsearch-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/help-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/notebook-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/terminal-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/tree": "~7.6.0-alpha.0",
"@jupyter-notebook/tree-extension": "~7.6.0-alpha.0",
"@jupyter-notebook/ui-components": "~7.6.0-alpha.0",
"@jupyter/react-components": "~0.16.7",
"@jupyter/web-components": "~0.16.7",
"@jupyter/ydoc": "~3.1.0",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/application-extension": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/apputils-extension": "~4.4.9",
"@jupyterlab/attachments": "~4.4.9",
"@jupyterlab/cell-toolbar": "~4.4.9",
"@jupyterlab/cell-toolbar-extension": "~4.4.9",
"@jupyterlab/celltags-extension": "~4.4.9",
"@jupyterlab/codeeditor": "~4.4.9",
"@jupyterlab/codemirror": "~4.4.9",
"@jupyterlab/codemirror-extension": "~4.4.9",
"@jupyterlab/completer": "~4.4.9",
"@jupyterlab/completer-extension": "~4.4.9",
"@jupyterlab/console": "~4.4.9",
"@jupyterlab/console-extension": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/csvviewer-extension": "~4.4.9",
"@jupyterlab/debugger": "~4.4.9",
"@jupyterlab/debugger-extension": "~4.4.9",
"@jupyterlab/docmanager": "~4.4.9",
"@jupyterlab/docmanager-extension": "~4.4.9",
"@jupyterlab/documentsearch": "~4.4.9",
"@jupyterlab/documentsearch-extension": "~4.4.9",
"@jupyterlab/extensionmanager": "~4.4.9",
"@jupyterlab/extensionmanager-extension": "~4.4.9",
"@jupyterlab/filebrowser": "~4.4.9",
"@jupyterlab/filebrowser-extension": "~4.4.9",
"@jupyterlab/fileeditor": "~4.4.9",
"@jupyterlab/fileeditor-extension": "~4.4.9",
"@jupyterlab/help-extension": "~4.4.9",
"@jupyterlab/htmlviewer": "~4.4.9",
"@jupyterlab/htmlviewer-extension": "~4.4.9",
"@jupyterlab/hub-extension": "~4.4.9",
"@jupyterlab/imageviewer": "~4.4.9",
"@jupyterlab/imageviewer-extension": "~4.4.9",
"@jupyterlab/javascript-extension": "~4.4.9",
"@jupyterlab/json-extension": "~4.4.9",
"@jupyterlab/logconsole-extension": "~4.4.9",
"@jupyterlab/lsp": "~4.4.9",
"@jupyterlab/lsp-extension": "~4.4.9",
"@jupyterlab/mainmenu": "~4.4.9",
"@jupyterlab/mainmenu-extension": "~4.4.9",
"@jupyterlab/markdownviewer": "~4.4.9",
"@jupyterlab/markdownviewer-extension": "~4.4.9",
"@jupyterlab/markedparser-extension": "~4.4.9",
"@jupyterlab/mathjax-extension": "~4.4.9",
"@jupyterlab/mermaid": "~4.4.9",
"@jupyterlab/mermaid-extension": "~4.4.9",
"@jupyterlab/metadataform": "~4.4.9",
"@jupyterlab/metadataform-extension": "~4.4.9",
"@jupyterlab/notebook": "~4.4.9",
"@jupyterlab/notebook-extension": "~4.4.9",
"@jupyterlab/observables": "~5.4.9",
"@jupyterlab/outputarea": "~4.4.9",
"@jupyterlab/pdf-extension": "~4.4.9",
"@jupyterlab/pluginmanager-extension": "~4.4.9",
"@jupyterlab/rendermime": "~4.4.9",
"@jupyterlab/rendermime-interfaces": "~3.12.9",
"@jupyterlab/running-extension": "~4.4.9",
"@jupyterlab/services": "~7.4.9",
"@jupyterlab/services-extension": "~4.4.9",
"@jupyterlab/settingeditor": "~4.4.9",
"@jupyterlab/settingeditor-extension": "~4.4.9",
"@jupyterlab/settingregistry": "~4.4.9",
"@jupyterlab/shortcuts-extension": "~5.2.9",
"@jupyterlab/statedb": "~4.4.9",
"@jupyterlab/statusbar": "~4.4.9",
"@jupyterlab/terminal": "~4.4.9",
"@jupyterlab/terminal-extension": "~4.4.9",
"@jupyterlab/theme-dark-extension": "~4.4.9",
"@jupyterlab/theme-dark-high-contrast-extension": "~4.4.9",
"@jupyterlab/theme-light-extension": "~4.4.9",
"@jupyterlab/toc-extension": "~6.4.9",
"@jupyterlab/tooltip": "~4.4.9",
"@jupyterlab/tooltip-extension": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@jupyterlab/translation-extension": "~4.4.9",
"@jupyterlab/ui-components": "~4.4.9",
"@jupyterlab/ui-components-extension": "~4.4.9",
"@jupyterlab/vega5-extension": "~4.4.9",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/application-extension": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/apputils-extension": "~4.6.0-alpha.0",
"@jupyterlab/attachments": "~4.6.0-alpha.0",
"@jupyterlab/audio-extension": "~4.6.0-alpha.0",
"@jupyterlab/cell-toolbar": "~4.6.0-alpha.0",
"@jupyterlab/cell-toolbar-extension": "~4.6.0-alpha.0",
"@jupyterlab/celltags-extension": "~4.6.0-alpha.0",
"@jupyterlab/codeeditor": "~4.6.0-alpha.0",
"@jupyterlab/codemirror": "~4.6.0-alpha.0",
"@jupyterlab/codemirror-extension": "~4.6.0-alpha.0",
"@jupyterlab/completer": "~4.6.0-alpha.0",
"@jupyterlab/completer-extension": "~4.6.0-alpha.0",
"@jupyterlab/console": "~4.6.0-alpha.0",
"@jupyterlab/console-extension": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/csvviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/debugger": "~4.6.0-alpha.0",
"@jupyterlab/debugger-extension": "~4.6.0-alpha.0",
"@jupyterlab/docmanager": "~4.6.0-alpha.0",
"@jupyterlab/docmanager-extension": "~4.6.0-alpha.0",
"@jupyterlab/documentsearch": "~4.6.0-alpha.0",
"@jupyterlab/documentsearch-extension": "~4.6.0-alpha.0",
"@jupyterlab/extensionmanager": "~4.6.0-alpha.0",
"@jupyterlab/extensionmanager-extension": "~4.6.0-alpha.0",
"@jupyterlab/filebrowser": "~4.6.0-alpha.0",
"@jupyterlab/filebrowser-extension": "~4.6.0-alpha.0",
"@jupyterlab/fileeditor": "~4.6.0-alpha.0",
"@jupyterlab/fileeditor-extension": "~4.6.0-alpha.0",
"@jupyterlab/help-extension": "~4.6.0-alpha.0",
"@jupyterlab/htmlviewer": "~4.6.0-alpha.0",
"@jupyterlab/htmlviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/hub-extension": "~4.6.0-alpha.0",
"@jupyterlab/imageviewer": "~4.6.0-alpha.0",
"@jupyterlab/imageviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/javascript-extension": "~4.6.0-alpha.0",
"@jupyterlab/json-extension": "~4.6.0-alpha.0",
"@jupyterlab/logconsole-extension": "~4.6.0-alpha.0",
"@jupyterlab/lsp": "~4.6.0-alpha.0",
"@jupyterlab/lsp-extension": "~4.6.0-alpha.0",
"@jupyterlab/mainmenu": "~4.6.0-alpha.0",
"@jupyterlab/mainmenu-extension": "~4.6.0-alpha.0",
"@jupyterlab/markdownviewer": "~4.6.0-alpha.0",
"@jupyterlab/markdownviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/markedparser-extension": "~4.6.0-alpha.0",
"@jupyterlab/mathjax-extension": "~4.6.0-alpha.0",
"@jupyterlab/mermaid": "~4.6.0-alpha.0",
"@jupyterlab/mermaid-extension": "~4.6.0-alpha.0",
"@jupyterlab/metadataform": "~4.6.0-alpha.0",
"@jupyterlab/metadataform-extension": "~4.6.0-alpha.0",
"@jupyterlab/notebook": "~4.6.0-alpha.0",
"@jupyterlab/notebook-extension": "~4.6.0-alpha.0",
"@jupyterlab/observables": "~5.6.0-alpha.0",
"@jupyterlab/outputarea": "~4.6.0-alpha.0",
"@jupyterlab/pdf-extension": "~4.6.0-alpha.0",
"@jupyterlab/pluginmanager-extension": "~4.6.0-alpha.0",
"@jupyterlab/rendermime": "~4.6.0-alpha.0",
"@jupyterlab/rendermime-interfaces": "~3.14.0-alpha.0",
"@jupyterlab/running-extension": "~4.6.0-alpha.0",
"@jupyterlab/services": "~7.6.0-alpha.0",
"@jupyterlab/services-extension": "~4.6.0-alpha.0",
"@jupyterlab/settingeditor": "~4.6.0-alpha.0",
"@jupyterlab/settingeditor-extension": "~4.6.0-alpha.0",
"@jupyterlab/settingregistry": "~4.6.0-alpha.0",
"@jupyterlab/shortcuts-extension": "~5.4.0-alpha.0",
"@jupyterlab/statedb": "~4.6.0-alpha.0",
"@jupyterlab/statusbar": "~4.6.0-alpha.0",
"@jupyterlab/terminal": "~4.6.0-alpha.0",
"@jupyterlab/terminal-extension": "~4.6.0-alpha.0",
"@jupyterlab/theme-dark-extension": "~4.6.0-alpha.0",
"@jupyterlab/theme-dark-high-contrast-extension": "~4.6.0-alpha.0",
"@jupyterlab/theme-light-extension": "~4.6.0-alpha.0",
"@jupyterlab/toc-extension": "~6.6.0-alpha.0",
"@jupyterlab/tooltip": "~4.6.0-alpha.0",
"@jupyterlab/tooltip-extension": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"@jupyterlab/translation-extension": "~4.6.0-alpha.0",
"@jupyterlab/ui-components": "~4.6.0-alpha.0",
"@jupyterlab/ui-components-extension": "~4.6.0-alpha.0",
"@jupyterlab/vega5-extension": "~4.6.0-alpha.0",
"@jupyterlab/video-extension": "~4.6.0-alpha.0",
"@lezer/common": "~1.2.1",
"@lezer/highlight": "~1.2.0",
"@lumino/algorithm": "~2.0.3",
"@lumino/application": "~2.4.4",
"@lumino/commands": "~2.3.2",
"@lumino/coreutils": "~2.2.1",
"@lumino/disposable": "~2.1.4",
"@lumino/domutils": "~2.0.3",
"@lumino/dragdrop": "~2.1.6",
"@lumino/messaging": "~2.0.3",
"@lumino/properties": "~2.0.3",
"@lumino/signaling": "~2.1.4",
"@lumino/virtualdom": "~2.0.3",
"@lumino/widgets": "~2.7.1",
"@lumino/algorithm": "~2.0.4",
"@lumino/application": "~2.4.5",
"@lumino/commands": "~2.3.3",
"@lumino/coreutils": "~2.2.2",
"@lumino/disposable": "~2.1.5",
"@lumino/domutils": "~2.0.4",
"@lumino/dragdrop": "~2.1.7",
"@lumino/messaging": "~2.0.4",
"@lumino/properties": "~2.0.4",
"@lumino/signaling": "~2.1.5",
"@lumino/virtualdom": "~2.0.4",
"@lumino/widgets": "~2.7.2",
"react": "~18.2.0",
"react-dom": "~18.2.0",
"yjs": "~13.6.8"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyter-notebook/application-extension": "^7.4.7",
"@jupyter-notebook/console-extension": "^7.4.7",
"@jupyter-notebook/docmanager-extension": "^7.4.7",
"@jupyter-notebook/documentsearch-extension": "^7.4.7",
"@jupyter-notebook/help-extension": "^7.4.7",
"@jupyter-notebook/notebook-extension": "^7.4.7",
"@jupyter-notebook/terminal-extension": "^7.4.7",
"@jupyter-notebook/tree": "^7.4.7",
"@jupyter-notebook/tree-extension": "^7.4.7",
"@jupyter-notebook/ui-components": "^7.4.7",
"@jupyterlab/application-extension": "~4.4.9",
"@jupyterlab/apputils-extension": "~4.4.9",
"@jupyterlab/attachments": "~4.4.9",
"@jupyterlab/cell-toolbar-extension": "~4.4.9",
"@jupyterlab/celltags-extension": "~4.4.9",
"@jupyterlab/codemirror": "~4.4.9",
"@jupyterlab/codemirror-extension": "~4.4.9",
"@jupyterlab/completer-extension": "~4.4.9",
"@jupyterlab/console-extension": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/csvviewer-extension": "~4.4.9",
"@jupyterlab/debugger-extension": "~4.4.9",
"@jupyterlab/docmanager-extension": "~4.4.9",
"@jupyterlab/documentsearch-extension": "~4.4.9",
"@jupyterlab/extensionmanager-extension": "~4.4.9",
"@jupyterlab/filebrowser-extension": "~4.4.9",
"@jupyterlab/fileeditor-extension": "~4.4.9",
"@jupyterlab/help-extension": "~4.4.9",
"@jupyterlab/htmlviewer-extension": "~4.4.9",
"@jupyterlab/hub-extension": "~4.4.9",
"@jupyterlab/imageviewer-extension": "~4.4.9",
"@jupyterlab/javascript-extension": "~4.4.9",
"@jupyterlab/json-extension": "~4.4.9",
"@jupyterlab/logconsole-extension": "~4.4.9",
"@jupyterlab/lsp": "~4.4.9",
"@jupyterlab/lsp-extension": "~4.4.9",
"@jupyterlab/mainmenu-extension": "~4.4.9",
"@jupyterlab/markdownviewer-extension": "~4.4.9",
"@jupyterlab/markedparser-extension": "~4.4.9",
"@jupyterlab/mathjax-extension": "~4.4.9",
"@jupyterlab/mermaid-extension": "~4.4.9",
"@jupyterlab/metadataform-extension": "~4.4.9",
"@jupyterlab/notebook-extension": "~4.4.9",
"@jupyterlab/pdf-extension": "~4.4.9",
"@jupyterlab/pluginmanager-extension": "~4.4.9",
"@jupyterlab/running-extension": "~4.4.9",
"@jupyterlab/services-extension": "~4.4.9",
"@jupyterlab/settingeditor": "~4.4.9",
"@jupyterlab/settingeditor-extension": "~4.4.9",
"@jupyterlab/shortcuts-extension": "~5.2.9",
"@jupyterlab/terminal-extension": "~4.4.9",
"@jupyterlab/theme-dark-extension": "~4.4.9",
"@jupyterlab/theme-dark-high-contrast-extension": "~4.4.9",
"@jupyterlab/theme-light-extension": "~4.4.9",
"@jupyterlab/toc-extension": "~6.4.9",
"@jupyterlab/tooltip-extension": "~4.4.9",
"@jupyterlab/translation-extension": "~4.4.9",
"@jupyterlab/ui-components-extension": "~4.4.9",
"@jupyterlab/vega5-extension": "~4.4.9",
"@lumino/coreutils": "~2.2.1",
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyter-notebook/application-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/console-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/docmanager-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/documentsearch-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/help-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/notebook-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/terminal-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/tree": "^7.6.0-alpha.0",
"@jupyter-notebook/tree-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/ui-components": "^7.6.0-alpha.0",
"@jupyterlab/application-extension": "~4.6.0-alpha.0",
"@jupyterlab/apputils-extension": "~4.6.0-alpha.0",
"@jupyterlab/attachments": "~4.6.0-alpha.0",
"@jupyterlab/audio-extension": "~4.6.0-alpha.0",
"@jupyterlab/cell-toolbar-extension": "~4.6.0-alpha.0",
"@jupyterlab/celltags-extension": "~4.6.0-alpha.0",
"@jupyterlab/codemirror": "~4.6.0-alpha.0",
"@jupyterlab/codemirror-extension": "~4.6.0-alpha.0",
"@jupyterlab/completer-extension": "~4.6.0-alpha.0",
"@jupyterlab/console-extension": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/csvviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/debugger-extension": "~4.6.0-alpha.0",
"@jupyterlab/docmanager-extension": "~4.6.0-alpha.0",
"@jupyterlab/documentsearch-extension": "~4.6.0-alpha.0",
"@jupyterlab/extensionmanager-extension": "~4.6.0-alpha.0",
"@jupyterlab/filebrowser-extension": "~4.6.0-alpha.0",
"@jupyterlab/fileeditor-extension": "~4.6.0-alpha.0",
"@jupyterlab/help-extension": "~4.6.0-alpha.0",
"@jupyterlab/htmlviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/hub-extension": "~4.6.0-alpha.0",
"@jupyterlab/imageviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/javascript-extension": "~4.6.0-alpha.0",
"@jupyterlab/json-extension": "~4.6.0-alpha.0",
"@jupyterlab/logconsole-extension": "~4.6.0-alpha.0",
"@jupyterlab/lsp": "~4.6.0-alpha.0",
"@jupyterlab/lsp-extension": "~4.6.0-alpha.0",
"@jupyterlab/mainmenu-extension": "~4.6.0-alpha.0",
"@jupyterlab/markdownviewer-extension": "~4.6.0-alpha.0",
"@jupyterlab/markedparser-extension": "~4.6.0-alpha.0",
"@jupyterlab/mathjax-extension": "~4.6.0-alpha.0",
"@jupyterlab/mermaid-extension": "~4.6.0-alpha.0",
"@jupyterlab/metadataform-extension": "~4.6.0-alpha.0",
"@jupyterlab/notebook-extension": "~4.6.0-alpha.0",
"@jupyterlab/pdf-extension": "~4.6.0-alpha.0",
"@jupyterlab/pluginmanager-extension": "~4.6.0-alpha.0",
"@jupyterlab/running-extension": "~4.6.0-alpha.0",
"@jupyterlab/services-extension": "~4.6.0-alpha.0",
"@jupyterlab/settingeditor": "~4.6.0-alpha.0",
"@jupyterlab/settingeditor-extension": "~4.6.0-alpha.0",
"@jupyterlab/shortcuts-extension": "~5.4.0-alpha.0",
"@jupyterlab/terminal-extension": "~4.6.0-alpha.0",
"@jupyterlab/theme-dark-extension": "~4.6.0-alpha.0",
"@jupyterlab/theme-dark-high-contrast-extension": "~4.6.0-alpha.0",
"@jupyterlab/theme-light-extension": "~4.6.0-alpha.0",
"@jupyterlab/toc-extension": "~6.6.0-alpha.0",
"@jupyterlab/tooltip-extension": "~4.6.0-alpha.0",
"@jupyterlab/translation-extension": "~4.6.0-alpha.0",
"@jupyterlab/ui-components-extension": "~4.6.0-alpha.0",
"@jupyterlab/vega5-extension": "~4.6.0-alpha.0",
"@jupyterlab/video-extension": "~4.6.0-alpha.0",
"@lumino/coreutils": "~2.2.2",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"yjs": "^13.5.40"
},
"devDependencies": {
"@jupyterlab/builder": "~4.4.9",
"@jupyterlab/buildutils": "~4.4.9",
"@jupyterlab/builder": "~4.6.0-alpha.0",
"@jupyterlab/buildutils": "~4.6.0-alpha.0",
"@rspack/cli": "^1.1.8",
"@rspack/core": "^1.1.8",
"@types/rimraf": "^3.0.2",
"css-loader": "~5.0.1",
"extra-watch-webpack-plugin": "^1.0.3",
"fs-extra": "^8.1.0",
"glob": "~7.1.6",
"handlebars": "^4.7.7",
"mini-css-extract-plugin": "~0.9.0",
"rimraf": "^3.0.2",
"style-loader": "~1.0.1",
"svg-url-loader": "~6.0.0",
"watch": "~1.0.2",
"webpack": "^5.76.1",
"webpack-bundle-analyzer": "^4.8.0",
"webpack-cli": "^5.0.1",
"webpack-merge": "^5.8.0",
"whatwg-fetch": "^3.0.0"
},
@ -248,6 +246,7 @@
"@jupyterlab/apputils-extension:toolbar-registry",
"@jupyterlab/apputils-extension:utilityCommands"
],
"@jupyterlab/audio-extension": true,
"@jupyterlab/codemirror-extension": true,
"@jupyterlab/completer-extension": [
"@jupyterlab/completer-extension:base-service",
@ -285,6 +284,7 @@
"@jupyterlab/help-extension:resources"
],
"@jupyterlab/htmlviewer-extension": true,
"@jupyterlab/hub-extension": true,
"@jupyterlab/imageviewer-extension": true,
"@jupyterlab/lsp-extension": true,
"@jupyterlab/mainmenu-extension": [
@ -310,12 +310,14 @@
"@jupyterlab/theme-dark-high-contrast-extension": true,
"@jupyterlab/translation-extension": true,
"@jupyterlab/ui-components-extension": true,
"@jupyterlab/hub-extension": true
"@jupyterlab/video-extension": true
},
"/tree": {
"@jupyterlab/cell-toolbar-extension": true,
"@jupyterlab/extensionmanager-extension": true,
"@jupyterlab/filebrowser-extension": [
"@jupyterlab/filebrowser-extension:browser",
"@jupyterlab/filebrowser-extension:create-new-language-file",
"@jupyterlab/filebrowser-extension:download",
"@jupyterlab/filebrowser-extension:file-upload-status",
"@jupyterlab/filebrowser-extension:open-with",
@ -332,12 +334,15 @@
"@jupyterlab/celltags-extension": true,
"@jupyterlab/cell-toolbar-extension": true,
"@jupyterlab/debugger-extension": [
"@jupyterlab/debugger-extension:completions",
"@jupyterlab/debugger-extension:config",
"@jupyterlab/debugger-extension:debug-console",
"@jupyterlab/debugger-extension:main",
"@jupyterlab/debugger-extension:notebooks",
"@jupyterlab/debugger-extension:service",
"@jupyterlab/debugger-extension:sidebar",
"@jupyterlab/debugger-extension:sources"
"@jupyterlab/debugger-extension:sources",
"@jupyterlab/debugger-extension:display-registry"
],
"@jupyterlab/logconsole-extension": true,
"@jupyterlab/metadataform-extension": true,

@ -2,14 +2,14 @@
// Distributed under the terms of the Modified BSD License.
// Heavily inspired (and slightly tweaked) from:
// https://github.com/jupyterlab/jupyterlab/blob/master/examples/federated/core_package/webpack.config.js
// https://github.com/jupyterlab/jupyterlab/blob/master/examples/federated/core_package/rspack.config.js
const fs = require('fs-extra');
const path = require('path');
const webpack = require('webpack');
const rspack = require('@rspack/core');
const merge = require('webpack-merge').default;
const Handlebars = require('handlebars');
const { ModuleFederationPlugin } = webpack.container;
const { ModuleFederationPlugin } = rspack.container;
const BundleAnalyzerPlugin =
require('webpack-bundle-analyzer').BundleAnalyzerPlugin;
@ -94,7 +94,7 @@ const extras = Build.ensureAssets({
});
/**
* Create the webpack ``shared`` configuration
* Create the rspack ``shared`` configuration
*/
function createShared(packageData) {
// Set up module federation sharing config

@ -0,0 +1,15 @@
/*
* Copyright (c) Jupyter Development Team.
* Distributed under the terms of the Modified BSD License.
*/
const base = require('./rspack.config');
module.exports = [
{
...base[0],
bail: false,
watch: true,
},
...base.slice(1),
];

@ -4,7 +4,7 @@
*/
const merge = require('webpack-merge').default;
const config = require('./webpack.config');
const config = require('./rspack.config');
const WPPlugin = require('@jupyterlab/builder').WPPlugin;
config[0] = merge(config[0], {

@ -1,17 +0,0 @@
const base = require('./webpack.config');
const ExtraWatchWebpackPlugin = require('extra-watch-webpack-plugin');
module.exports = [
{
...base[0],
bail: false,
watch: true,
plugins: [
...base[0].plugins,
new ExtraWatchWebpackPlugin({
files: ['../packages/_metapackage/tsconfig.tsbuildinfo'],
}),
],
},
...base.slice(1),
];

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/buildutils",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"private": true,
"description": "Jupyter Notebook - Build Utilities",
"homepage": "https://github.com/jupyter/notebook",
@ -29,7 +29,7 @@
"watch": "tsc -w --listEmittedFiles"
},
"dependencies": {
"@jupyterlab/buildutils": "~4.4.9",
"@jupyterlab/buildutils": "~4.6.0-alpha.0",
"commander": "^6.2.0",
"fs-extra": "^9.1.0",
"semver": "^7.6.3",

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

@ -400,3 +400,7 @@ intersphinx_mapping = {
spelling_lang = "en_US"
spelling_word_list_filename = "spelling_wordlist.txt"
def setup(app):
app.add_css_file("https://docs.jupyter.org/en/latest/_static/jupyter.css")

@ -8,7 +8,7 @@ This is for example the case for community contributed themes such as [jupyter-t
Fortunately installing a custom theme for Notebook 7 is very easy. It is the same process as installing a regular extension.
For example let's say you want to install the [JupyterLab Night](https://github.com/martinRenou/jupyterlab-night) theme. You can do so by running the following command:
For example let's say you want to install the [JupyterLab Night](https://github.com/jupyterlab-contrib/jupyterlab-night) theme. You can do so by running the following command:
```bash
pip install jupyterlab-night

@ -45,7 +45,7 @@ notebook and its dependencies.
### Notebook documents
Notebook documents contains the inputs and outputs of a interactive session as
Notebook documents contain the inputs and outputs of an interactive session as
well as additional text that accompanies the code but is not meant for
execution. In this way, notebook files can serve as a complete computational
record of a session, interleaving executable code with explanatory text,
@ -355,7 +355,7 @@ Specific plotting library integration is a feature of the kernel.
## Installing kernels
For information on how to install a Python kernel, refer to the
[IPython install page](https://ipython.org/install.html).
[IPython install page](https://ipython.org/install).
The Jupyter wiki has a long list of [Kernels for other languages](https://github.com/jupyter/jupyter/wiki/Jupyter-kernels).
They usually come with instructions on how to make the kernel available

@ -6,7 +6,7 @@ import re
from collections import namedtuple
# Use "hatch version xx.yy.zz" to handle version changes
__version__ = "7.4.7"
__version__ = "7.6.0a0"
# PEP440 version parser
_version_regex = re.compile(

@ -39,7 +39,7 @@ from ._version import __version__
HERE = Path(__file__).parent.resolve()
Flags = t.Dict[t.Union[str, t.Tuple[str, ...]], t.Tuple[t.Union[t.Dict[str, t.Any], Config], str]]
Flags = dict[t.Union[str, tuple[str, ...]], tuple[t.Union[dict[str, t.Any], Config], str]]
app_dir = Path(get_app_dir())
version = __version__

@ -51,7 +51,7 @@
"yjs": "^13.5.40"
},
"devDependencies": {
"@jupyterlab/buildutils": "~4.4.9",
"@jupyterlab/buildutils": "~4.6.0-alpha.0",
"@typescript-eslint/eslint-plugin": "^5.55.0",
"@typescript-eslint/parser": "^5.55.0",
"eslint": "^8.36.0",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/metapackage",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"private": true,
"description": "Jupyter Notebook - Metapackage",
"homepage": "https://github.com/jupyter/notebook",
@ -20,18 +20,18 @@
"watch": "tsc -b -w --preserveWatchOutput"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyter-notebook/application-extension": "^7.4.7",
"@jupyter-notebook/console-extension": "^7.4.7",
"@jupyter-notebook/docmanager-extension": "^7.4.7",
"@jupyter-notebook/documentsearch-extension": "^7.4.7",
"@jupyter-notebook/help-extension": "^7.4.7",
"@jupyter-notebook/lab-extension": "^7.4.7",
"@jupyter-notebook/notebook-extension": "^7.4.7",
"@jupyter-notebook/terminal-extension": "^7.4.7",
"@jupyter-notebook/tree": "^7.4.7",
"@jupyter-notebook/tree-extension": "^7.4.7",
"@jupyter-notebook/ui-components": "^7.4.7"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyter-notebook/application-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/console-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/docmanager-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/documentsearch-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/help-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/lab-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/notebook-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/terminal-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/tree": "^7.6.0-alpha.0",
"@jupyter-notebook/tree-extension": "^7.6.0-alpha.0",
"@jupyter-notebook/ui-components": "^7.6.0-alpha.0"
},
"devDependencies": {
"typescript": "~5.5.4"

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/application-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Application Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,22 +38,22 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyter-notebook/ui-components": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/codeeditor": "~4.4.9",
"@jupyterlab/console": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/docmanager": "~4.4.9",
"@jupyterlab/docregistry": "~4.4.9",
"@jupyterlab/mainmenu": "~4.4.9",
"@jupyterlab/rendermime": "~4.4.9",
"@jupyterlab/settingregistry": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@lumino/coreutils": "^2.2.1",
"@lumino/disposable": "^2.1.4",
"@lumino/widgets": "^2.7.1"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyter-notebook/ui-components": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/codeeditor": "~4.6.0-alpha.0",
"@jupyterlab/console": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/docmanager": "~4.6.0-alpha.0",
"@jupyterlab/docregistry": "~4.6.0-alpha.0",
"@jupyterlab/mainmenu": "~4.6.0-alpha.0",
"@jupyterlab/rendermime": "~4.6.0-alpha.0",
"@jupyterlab/settingregistry": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"@lumino/coreutils": "^2.2.2",
"@lumino/disposable": "^2.1.5",
"@lumino/widgets": "^2.7.2"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -9,6 +9,7 @@
"title": "Customize shell widget positioning",
"description": "Overrides default widget position in the application layout",
"default": {
"Debugger Console": { "area": "down" },
"Markdown Preview": { "area": "right" },
"Plugins": { "area": "left" }
}

@ -0,0 +1,16 @@
{
"jupyter.lab.setting-icon": "notebook-ui-components:jupyter",
"jupyter.lab.setting-icon-label": "Jupyter Notebook shortcuts",
"title": "Jupyter Notebook Shortcuts",
"description": "Keyboard shortcuts for Jupyter Notebook",
"jupyter.lab.shortcuts": [
{
"args": {},
"command": "notebook:toggle-cell-outputs",
"keys": ["O"],
"selector": ".jp-Notebook.jp-mod-commandMode:not(.jp-mod-readWrite) :focus"
}
],
"additionalProperties": false,
"type": "object"
}

@ -1006,6 +1006,20 @@ const sidePanelVisibility: JupyterFrontEndPlugin<void> = {
},
};
/**
* A plugin for defining keyboard shortcuts specific to the notebook application.
*/
const shortcuts: JupyterFrontEndPlugin<void> = {
id: '@jupyter-notebook/application-extension:shortcuts',
description:
'A plugin for defining keyboard shortcuts specific to the notebook application.',
autoStart: true,
activate: (app: JupyterFrontEnd) => {
// for now this plugin is mostly useful for defining keyboard shortcuts
// specific to the notebook application
},
};
/**
* The default tree route resolver plugin.
*/
@ -1185,6 +1199,7 @@ const plugins: JupyterFrontEndPlugin<any>[] = [
rendermime,
shell,
sidePanelVisibility,
shortcuts,
splash,
status,
tabTitle,

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/application",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Application",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -42,22 +42,22 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/docregistry": "~4.4.9",
"@jupyterlab/rendermime-interfaces": "~3.12.9",
"@jupyterlab/ui-components": "~4.4.9",
"@lumino/algorithm": "^2.0.3",
"@lumino/coreutils": "^2.2.1",
"@lumino/messaging": "^2.0.3",
"@lumino/polling": "^2.1.4",
"@lumino/signaling": "^2.1.4",
"@lumino/widgets": "^2.7.1"
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/docregistry": "~4.6.0-alpha.0",
"@jupyterlab/rendermime-interfaces": "~3.14.0-alpha.0",
"@jupyterlab/ui-components": "~4.6.0-alpha.0",
"@lumino/algorithm": "^2.0.4",
"@lumino/coreutils": "^2.2.2",
"@lumino/messaging": "^2.0.4",
"@lumino/polling": "^2.1.5",
"@lumino/signaling": "^2.1.5",
"@lumino/widgets": "^2.7.2"
},
"devDependencies": {
"@babel/core": "^7.11.6",
"@babel/preset-env": "^7.12.1",
"@jupyterlab/testutils": "~4.3.2",
"@jupyterlab/testutils": "~4.6.0-alpha.0",
"@types/jest": "^29.2.5",
"jest": "^29.3.1",
"rimraf": "^3.0.2",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/console-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Console Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,11 +38,11 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/console": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@lumino/algorithm": "^2.0.3"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/console": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@lumino/algorithm": "^2.0.4"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/docmanager-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Document Manager Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,14 +38,14 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/docmanager": "~4.4.9",
"@jupyterlab/docregistry": "~4.4.9",
"@jupyterlab/services": "~7.4.9",
"@lumino/algorithm": "^2.0.3",
"@lumino/signaling": "^2.1.4"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/docmanager": "~4.6.0-alpha.0",
"@jupyterlab/docregistry": "~4.6.0-alpha.0",
"@jupyterlab/services": "~7.6.0-alpha.0",
"@lumino/algorithm": "^2.0.4",
"@lumino/signaling": "^2.1.5"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/documentsearch-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Document Search Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,10 +38,10 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/documentsearch": "~4.4.9",
"@lumino/widgets": "^2.7.1"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/documentsearch": "~4.6.0-alpha.0",
"@lumino/widgets": "^2.7.2"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/help-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Help Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,11 +38,11 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/ui-components": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/mainmenu": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@jupyter-notebook/ui-components": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/mainmenu": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/lab-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Lab Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -43,19 +43,19 @@
"watch:src": "tsc -w"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/docregistry": "~4.4.9",
"@jupyterlab/notebook": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@jupyterlab/ui-components": "~4.4.9",
"@lumino/commands": "^2.3.2",
"@lumino/disposable": "^2.1.4"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/docregistry": "~4.6.0-alpha.0",
"@jupyterlab/notebook": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"@jupyterlab/ui-components": "~4.6.0-alpha.0",
"@lumino/commands": "^2.3.3",
"@lumino/disposable": "^2.1.5"
},
"devDependencies": {
"@jupyterlab/builder": "~4.4.9",
"@jupyterlab/builder": "~4.6.0-alpha.0",
"rimraf": "^3.0.2",
"typescript": "~5.5.4"
},

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/notebook-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Notebook Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,16 +38,16 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/cells": "~4.4.9",
"@jupyterlab/docmanager": "~4.4.9",
"@jupyterlab/notebook": "~4.4.9",
"@jupyterlab/settingregistry": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@lumino/polling": "^2.1.4",
"@lumino/widgets": "^2.7.1",
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/cells": "~4.6.0-alpha.0",
"@jupyterlab/docmanager": "~4.6.0-alpha.0",
"@jupyterlab/notebook": "~4.6.0-alpha.0",
"@jupyterlab/settingregistry": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"@lumino/polling": "^2.1.5",
"@lumino/widgets": "^2.7.2",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},

@ -4,7 +4,15 @@
"jupyter.lab.toolbars": {
"TopBar": [{ "name": "checkpoint", "rank": 20 }]
},
"properties": {},
"properties": {
"checkpointPollingInterval": {
"type": "number",
"title": "Checkpoint Polling Interval (seconds)",
"description": "How often to check for checkpoints (in seconds). Set to 0 to disable polling.",
"default": 30,
"minimum": 0
}
},
"additionalProperties": false,
"type": "object"
}

@ -19,6 +19,8 @@ import { PageConfig, Text, Time, URLExt } from '@jupyterlab/coreutils';
import { IDocumentManager } from '@jupyterlab/docmanager';
import { DocumentRegistry } from '@jupyterlab/docregistry';
import { IMainMenu } from '@jupyterlab/mainmenu';
import {
@ -92,13 +94,14 @@ const checkpoints: JupyterFrontEndPlugin<void> = {
description: 'A plugin for the checkpoint indicator.',
autoStart: true,
requires: [IDocumentManager, ITranslator],
optional: [INotebookShell, IToolbarWidgetRegistry],
optional: [INotebookShell, IToolbarWidgetRegistry, ISettingRegistry],
activate: (
app: JupyterFrontEnd,
docManager: IDocumentManager,
translator: ITranslator,
notebookShell: INotebookShell | null,
toolbarRegistry: IToolbarWidgetRegistry | null
toolbarRegistry: IToolbarWidgetRegistry | null,
settingRegistry: ISettingRegistry | null
) => {
const { shell } = app;
const trans = translator.load('notebook');
@ -113,18 +116,26 @@ const checkpoints: JupyterFrontEndPlugin<void> = {
});
}
const onChange = async () => {
const getCurrent = () => {
const current = shell.currentWidget;
if (!current) {
return;
return null;
}
const context = docManager.contextForWidget(current);
if (!context) {
return null;
}
return context;
};
context?.fileChanged.disconnect(onChange);
context?.fileChanged.connect(onChange);
const checkpoints = await context?.listCheckpoints();
const updateCheckpointDisplay = async () => {
const current = getCurrent();
if (!current) {
return;
}
const checkpoints = await current.listCheckpoints();
if (!checkpoints || !checkpoints.length) {
node.textContent = '';
return;
}
const checkpoint = checkpoints[checkpoints.length - 1];
@ -134,19 +145,80 @@ const checkpoints: JupyterFrontEndPlugin<void> = {
);
};
const onSaveState = async (
sender: DocumentRegistry.IContext<DocumentRegistry.IModel>,
state: DocumentRegistry.SaveState
) => {
if (state !== 'completed') {
return;
}
// Add a small artificial delay so that the UI can pick up the newly created checkpoint.
// Since the save state signal is emitted after a file save, but not after a checkpoint has been created.
setTimeout(() => {
void updateCheckpointDisplay();
}, 500);
};
const onChange = async () => {
const context = getCurrent();
if (!context) {
return;
}
context.saveState.disconnect(onSaveState);
context.saveState.connect(onSaveState);
await updateCheckpointDisplay();
};
if (notebookShell) {
notebookShell.currentChanged.connect(onChange);
}
new Poll({
auto: true,
factory: () => onChange(),
frequency: {
interval: 2000,
backoff: false,
},
standby: 'when-hidden',
});
let checkpointPollingInterval = 30; // Default 30 seconds
let poll: Poll | null = null;
const createPoll = () => {
if (poll) {
poll.dispose();
}
if (checkpointPollingInterval > 0) {
poll = new Poll({
auto: true,
factory: () => updateCheckpointDisplay(),
frequency: {
interval: checkpointPollingInterval * 1000,
backoff: false,
},
standby: 'when-hidden',
});
}
};
const updateSettings = (settings: ISettingRegistry.ISettings): void => {
checkpointPollingInterval = settings.get('checkpointPollingInterval')
.composite as number;
createPoll();
};
if (settingRegistry) {
const loadSettings = settingRegistry.load(checkpoints.id);
Promise.all([loadSettings, app.restored])
.then(([settings]) => {
updateSettings(settings);
settings.changed.connect(updateSettings);
})
.catch((reason: Error) => {
console.error(
`Failed to load settings for ${checkpoints.id}: ${reason.message}`
);
// Fall back to creating poll with default settings
createPoll();
});
} else {
// Create poll with default settings
createPoll();
}
},
};

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/terminal-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Terminal Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,11 +38,11 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/terminal": "~4.4.9",
"@lumino/algorithm": "^2.0.3"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/terminal": "~4.6.0-alpha.0",
"@lumino/algorithm": "^2.0.4"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/tree-extension",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Tree Extension",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,23 +38,23 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyter-notebook/tree": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/docmanager": "~4.4.9",
"@jupyterlab/filebrowser": "~4.4.9",
"@jupyterlab/mainmenu": "~4.4.9",
"@jupyterlab/services": "~7.4.9",
"@jupyterlab/settingeditor": "~4.4.9",
"@jupyterlab/settingregistry": "~4.4.9",
"@jupyterlab/statedb": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@jupyterlab/ui-components": "~4.4.9",
"@lumino/algorithm": "^2.0.3",
"@lumino/commands": "^2.3.2",
"@lumino/widgets": "^2.7.1"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyter-notebook/tree": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/docmanager": "~4.6.0-alpha.0",
"@jupyterlab/filebrowser": "~4.6.0-alpha.0",
"@jupyterlab/mainmenu": "~4.6.0-alpha.0",
"@jupyterlab/services": "~7.6.0-alpha.0",
"@jupyterlab/settingeditor": "~4.6.0-alpha.0",
"@jupyterlab/settingregistry": "~4.6.0-alpha.0",
"@jupyterlab/statedb": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"@jupyterlab/ui-components": "~4.6.0-alpha.0",
"@lumino/algorithm": "^2.0.4",
"@lumino/commands": "^2.3.3",
"@lumino/widgets": "^2.7.2"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -39,8 +39,6 @@ import {
runningIcon,
} from '@jupyterlab/ui-components';
import { Signal } from '@lumino/signaling';
import { Menu, MenuBar } from '@lumino/widgets';
import { NotebookTreeWidget, INotebookTree } from '@jupyter-notebook/tree';
@ -155,28 +153,10 @@ const fileActions: JupyterFrontEndPlugin<void> = {
toolbarRegistry: IToolbarWidgetRegistry,
translator: ITranslator
) => {
// TODO: use upstream signal when available to detect selection changes
// https://github.com/jupyterlab/jupyterlab/issues/14598
const selectionChanged = new Signal<FileBrowser, void>(browser);
const methods = [
'_selectItem',
'_handleMultiSelect',
'handleFileSelect',
] as const;
methods.forEach((method: (typeof methods)[number]) => {
const original = browser['listing'][method];
browser['listing'][method] = (...args: any[]) => {
original.call(browser['listing'], ...args);
selectionChanged.emit(void 0);
};
});
browser.model.pathChanged.connect(() => {
selectionChanged.emit(void 0);
});
// Create a toolbar item that adds buttons to the file browser toolbar
// to perform actions on the files
const { commands } = app;
const { selectionChanged } = browser;
const fileActions = new FilesActionButtons({
commands,
browser,
@ -300,20 +280,22 @@ const loadPlugins: JupyterFrontEndPlugin<void> = {
app.restored.then(async () => {
const plugins = await connector.list('all');
plugins.ids.forEach(async (id: string) => {
const [extension] = id.split(':');
// load the plugin if it is built-in the notebook application explicitly
// either included as an extension or as a plugin directly
const hasPlugin = pluginsSet.has(extension) || pluginsSet.has(id);
if (!hasPlugin || isDisabled(id) || id in settingRegistry.plugins) {
return;
}
try {
await settingRegistry.load(id);
} catch (error) {
console.warn(`Settings failed to load for (${id})`, error);
}
});
await Promise.all(
plugins.ids.map(async (id: string) => {
const [extension] = id.split(':');
// load the plugin if it is built-in the notebook application explicitly
// either included as an extension or as a plugin directly
const hasPlugin = pluginsSet.has(extension) || pluginsSet.has(id);
if (!hasPlugin || isDisabled(id) || id in settingRegistry.plugins) {
return;
}
try {
await settingRegistry.load(id);
} catch (error) {
console.warn(`Settings failed to load for (${id})`, error);
}
})
);
});
},
};

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/tree",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - Tree",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -38,22 +38,22 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyter-notebook/application": "^7.4.7",
"@jupyterlab/application": "~4.4.9",
"@jupyterlab/apputils": "~4.5.9",
"@jupyterlab/coreutils": "~6.4.9",
"@jupyterlab/docmanager": "~4.4.9",
"@jupyterlab/filebrowser": "~4.4.9",
"@jupyterlab/mainmenu": "~4.4.9",
"@jupyterlab/services": "~7.4.9",
"@jupyterlab/settingregistry": "~4.4.9",
"@jupyterlab/statedb": "~4.4.9",
"@jupyterlab/translation": "~4.4.9",
"@jupyterlab/ui-components": "~4.4.9",
"@lumino/algorithm": "^2.0.3",
"@lumino/commands": "^2.3.2",
"@lumino/coreutils": "^2.2.1",
"@lumino/widgets": "^2.7.1"
"@jupyter-notebook/application": "^7.6.0-alpha.0",
"@jupyterlab/application": "~4.6.0-alpha.0",
"@jupyterlab/apputils": "~4.7.0-alpha.0",
"@jupyterlab/coreutils": "~6.6.0-alpha.0",
"@jupyterlab/docmanager": "~4.6.0-alpha.0",
"@jupyterlab/filebrowser": "~4.6.0-alpha.0",
"@jupyterlab/mainmenu": "~4.6.0-alpha.0",
"@jupyterlab/services": "~7.6.0-alpha.0",
"@jupyterlab/settingregistry": "~4.6.0-alpha.0",
"@jupyterlab/statedb": "~4.6.0-alpha.0",
"@jupyterlab/translation": "~4.6.0-alpha.0",
"@jupyterlab/ui-components": "~4.6.0-alpha.0",
"@lumino/algorithm": "^2.0.4",
"@lumino/commands": "^2.3.3",
"@lumino/coreutils": "^2.2.2",
"@lumino/widgets": "^2.7.2"
},
"devDependencies": {
"rimraf": "^3.0.2",

@ -1,6 +1,6 @@
{
"name": "@jupyter-notebook/ui-components",
"version": "7.4.7",
"version": "7.6.0-alpha.0",
"description": "Jupyter Notebook - UI components",
"homepage": "https://github.com/jupyter/notebook",
"bugs": {
@ -42,14 +42,14 @@
"watch": "tsc -b --watch"
},
"dependencies": {
"@jupyterlab/ui-components": "~4.4.9",
"@jupyterlab/ui-components": "~4.6.0-alpha.0",
"react": "^18.2.0",
"react-dom": "^18.2.0"
},
"devDependencies": {
"@babel/core": "^7.10.2",
"@babel/preset-env": "^7.10.2",
"@jupyterlab/testutils": "~4.3.2",
"@jupyterlab/testutils": "~4.6.0-alpha.0",
"@types/jest": "^29.2.5",
"babel-loader": "^8.0.6",
"jest": "^29.3.1",

44
pixi.lock generated

@ -93,9 +93,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1f/fd/ac0979ebd1b1975c266c99b96930b0a66609c3f6e5d76979ca6eb3073896/jupyterlab-4.4.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
@ -271,9 +271,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1f/fd/ac0979ebd1b1975c266c99b96930b0a66609c3f6e5d76979ca6eb3073896/jupyterlab-4.4.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
@ -449,9 +449,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1f/fd/ac0979ebd1b1975c266c99b96930b0a66609c3f6e5d76979ca6eb3073896/jupyterlab-4.4.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
@ -635,9 +635,9 @@ environments:
- pypi: https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1f/fd/ac0979ebd1b1975c266c99b96930b0a66609c3f6e5d76979ca6eb3073896/jupyterlab-4.4.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/d3/32/da7f44bcb1105d3e88a0b74ebdca50c59121d2ddf71c9e34ba47df7f3a56/keyring-25.6.0-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/2c/f0/f02e2d150d581a294efded4020094a371bbab42423fe78625ac18854d89b/lazy-object-proxy-1.10.0.tar.gz
- pypi: https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl
@ -1724,10 +1724,10 @@ packages:
- pytest-timeout ; extra == 'test'
- pytest>=7.0 ; extra == 'test'
requires_python: '>=3.8'
- pypi: https://files.pythonhosted.org/packages/1f/fd/ac0979ebd1b1975c266c99b96930b0a66609c3f6e5d76979ca6eb3073896/jupyterlab-4.4.9-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/1a/81/d5b27d91a8fbb709b6623806037f6de6b7c2543d7f03543aa5a6de9812e6/jupyterlab-4.5.0rc0-py3-none-any.whl
name: jupyterlab
version: 4.4.9
sha256: 394c902827350c017430a8370b9f40c03c098773084bc53930145c146d3d2cb2
version: 4.5.0rc0
sha256: 89a22b0587499fb7524ea1c541fab4dd2f4030b9c05284f627b9b2176e2cff1e
requires_dist:
- async-lru>=1.0.0
- httpx>=0.25.0,<1
@ -1737,7 +1737,7 @@ packages:
- jupyter-core
- jupyter-lsp>=2.0.0
- jupyter-server>=2.4.0,<3
- jupyterlab-server>=2.27.1,<3
- jupyterlab-server>=2.28.0,<3
- notebook-shim>=0.2
- packaging
- setuptools>=41.1.0
@ -1750,7 +1750,7 @@ packages:
- hatch ; extra == 'dev'
- pre-commit ; extra == 'dev'
- pytest-cov ; extra == 'dev'
- ruff==0.11.4 ; extra == 'dev'
- ruff==0.11.12 ; extra == 'dev'
- jsx-lexer ; extra == 'docs'
- myst-parser ; extra == 'docs'
- pydata-sphinx-theme>=0.13.0 ; extra == 'docs'
@ -1791,10 +1791,10 @@ packages:
version: 0.3.0
sha256: 841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780
requires_python: '>=3.8'
- pypi: https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl
- pypi: https://files.pythonhosted.org/packages/e0/07/a000fe835f76b7e1143242ab1122e6362ef1c03f23f83a045c38859c2ae0/jupyterlab_server-2.28.0-py3-none-any.whl
name: jupyterlab-server
version: 2.27.3
sha256: e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4
version: 2.28.0
sha256: e4355b148fdcf34d312bbbc80f22467d6d20460e8b8736bf235577dd18506968
requires_dist:
- babel>=2.10
- importlib-metadata>=4.8.3 ; python_full_version < '3.10'
@ -2301,12 +2301,12 @@ packages:
timestamp: 1734113054756
- pypi: .
name: notebook
version: 7.4.6
sha256: afd602e54499f86977c899694193df7df900bc05dec66318ad1eb4b228127ac5
version: 7.5.0
sha256: 7ef8c5626500483b32a57bf34d2e8a44fcaa531da6b150df0320b7755ab574ba
requires_dist:
- jupyter-server>=2.4.0,<3
- jupyterlab-server>=2.27.1,<3
- jupyterlab>=4.4.9,<4.5
- jupyterlab-server>=2.28.0,<3
- jupyterlab>=4.5.0rc0,<4.6
- notebook-shim>=0.2,<0.3
- tornado>=6.2.0
- hatch ; extra == 'dev'
@ -2320,14 +2320,14 @@ packages:
- importlib-resources>=5.0 ; python_full_version < '3.10' and extra == 'test'
- ipykernel ; extra == 'test'
- jupyter-server[test]>=2.4.0,<3 ; extra == 'test'
- jupyterlab-server[test]>=2.27.1,<3 ; extra == 'test'
- jupyterlab-server[test]>=2.28.0,<3 ; extra == 'test'
- nbval ; extra == 'test'
- pytest-console-scripts ; extra == 'test'
- pytest-timeout ; extra == 'test'
- pytest-tornasync ; extra == 'test'
- pytest>=7.0 ; extra == 'test'
- requests ; extra == 'test'
requires_python: '>=3.8'
requires_python: '>=3.9'
editable: true
- pypi: https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl
name: notebook-shim

@ -1,10 +1,8 @@
[build-system]
requires = [
"hatchling>=1.11",
"jupyterlab>=4.4.9,<4.5",
# See https://github.com/jupyter/notebook/issues/7690
# TODO: remove when https://github.com/jupyterlab/jupyterlab/pull/17746 is released
"httpx>=0.25.0,<1.0.dev1",
"hatch-jupyter-builder>=0.5",
"jupyterlab>=4.6.0a0,<4.7",
]
build-backend = "hatchling.build"
@ -13,7 +11,7 @@ name = "notebook"
description = "Jupyter Notebook - A web-based notebook environment for interactive computing"
readme = "README.md"
license = { file = "LICENSE" }
requires-python = ">=3.8"
requires-python = ">=3.9"
authors = [
{ name = "Jupyter Development Team", email = "jupyter@googlegroups.com" },
]
@ -38,8 +36,8 @@ classifiers = [
]
dependencies = [
"jupyter_server>=2.4.0,<3",
"jupyterlab>=4.4.9,<4.5",
"jupyterlab_server>=2.27.1,<3",
"jupyterlab>=4.6.0a0,<4.7",
"jupyterlab_server>=2.28.0,<3",
"notebook_shim>=0.2,<0.3",
"tornado>=6.2.0",
]
@ -64,7 +62,7 @@ test = [
"pytest-console-scripts",
"ipykernel",
"jupyter_server[test]>=2.4.0,<3",
"jupyterlab_server[test]>=2.27.1,<3",
"jupyterlab_server[test]>=2.28.0,<3",
"importlib-resources>=5.0;python_version<\"3.10\"",
]
docs = [
@ -116,6 +114,10 @@ artifacts = [
"notebook/templates",
]
include = ["/notebook"]
exclude = [
"notebook/labextension",
"notebook/schemas/@jupyter-notebook",
]
[tool.hatch.envs.docs]
features = ["docs"]
@ -180,7 +182,7 @@ version-cmd = "jlpm run release:bump --force --skip-commit"
[tool.jupyter-releaser.hooks]
before-bump-version = [
"python -m pip install -U \"jupyterlab>=4.4.9,<4.5\"",
"python -m pip install -U \"jupyterlab>=4.6.0a0,<4.7\"",
"jlpm",
"jlpm run build:utils",
"python -m pip install hatch"

1
src

@ -0,0 +1 @@
undefined

@ -15,8 +15,8 @@
"test:update": "playwright test --update-snapshots"
},
"dependencies": {
"@jupyterlab/galata": "~5.4.9",
"@playwright/test": "~1.51.0",
"@jupyterlab/galata": "~5.6.0-alpha.0",
"@playwright/test": "~1.57.0",
"rimraf": "^3.0.2"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 23 KiB

@ -223,4 +223,31 @@ test.describe('Notebook', () => {
await expect(page.locator('.jp-LogConsole')).toBeVisible();
});
test('Toggle cell outputs with the O keyboard shortcut', async ({
page,
tmpPath,
}) => {
const notebook = 'autoscroll.ipynb';
await page.contents.uploadFile(
path.resolve(__dirname, `./notebooks/${notebook}`),
`${tmpPath}/${notebook}`
);
await page.goto(`notebooks/${tmpPath}/${notebook}`);
await waitForKernelReady(page);
// run the two cells
await page.keyboard.press('Shift+Enter');
await page.keyboard.press('ControlOrMeta+Enter');
await page.keyboard.press('Escape');
await page.keyboard.press('O');
await page.waitForSelector('.jp-OutputPlaceholder', { state: 'visible' });
await page.keyboard.press('O');
await page.waitForSelector('.jp-OutputPlaceholder', { state: 'hidden' });
});
});

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 41 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save