Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ianthomas23/terminal
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: main
Choose a base ref
...
head repository: jupyterlite/terminal
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 17 commits
  • 30 files changed
  • 2 contributors

Commits on Mar 27, 2025

  1. Copy the full SHA
    1a0639d View commit details

Commits on May 19, 2025

  1. Rewrite as JupyterLab frontend plugin (jupyterlite#49)

    * Rewrite as JupyterLab frontend plugin
    
    * Fix deployment dependencies
    
    * Update to jupyterlab 4.4.0 and juoyterlite-core 0.6.0a6
    
    * Hard pin of jupyterlite-core 0.6.0a6
    
    * Terminal shutdown
    
    * Linting
    
    * Update ui-tests
    
    * Lint tests
    
    * Update test images
    
    * Update to jupyterlite-core 0.6.0-alpha.9
    
    * Use browsingContextId for drive access
    
    * Use latest pre-releases in CI
    
    * Separate plugin to set browsingContextId
    
    * Update to lite 0.6.0a10
    
    * Update to lite 0.6.0b0
    ianthomas23 authored May 19, 2025
    Copy the full SHA
    24a17cd View commit details
  2. Publish 0.2.0a0

    SHA256 hashes:
    
    jupyterlite-terminal-0.2.0-a0.tgz: 120ea07f74c996aa3d220a8e9dc8e51b32ef19facb279f2780b9dcd2c941606b
    
    jupyterlite_terminal-0.2.0a0-py3-none-any.whl: dbedbd289696e6275d19d919d9a3d35c2feb869adb7b51713aef3b2eee09e90f
    
    jupyterlite_terminal-0.2.0a0.tar.gz: d1924f53247cbd5bd4c5f2d956a5ad780b61c1894b54c3c363a82fcd2b8f92f0
    ianthomas23 committed May 19, 2025
    Copy the full SHA
    c30a4fd View commit details

Commits on May 29, 2025

  1. Support use of service worker to handle stdin (jupyterlite#51)

    * Update dependencies (cockle, jupyterlite, jupyterlab)
    
    * Support use of service worker to handle stdin
    
    * Update CI dependencies
    
    * Update to cockle 0.1.0-a1
    
    * Linting
    
    * Add stdin tests
    
    * Add extra waits in tests
    ianthomas23 authored May 29, 2025
    Copy the full SHA
    b53fd3b View commit details

Commits on Jun 2, 2025

  1. Update to jupyterlite 0.6.0 (jupyterlite#52)

    * Update to jupyterlite 0.6.0
    
    * Update CI workflows
    ianthomas23 authored Jun 2, 2025
    Copy the full SHA
    e797fd5 View commit details

Commits on Jun 3, 2025

  1. Copy the full SHA
    4f7230b View commit details
  2. Copy the full SHA
    aca2d3e View commit details

Commits on Jun 4, 2025

  1. Copy the full SHA
    9b840f7 View commit details
  2. Publish 0.2.0

    SHA256 hashes:
    
    jupyterlite-terminal-0.2.0.tgz: c86c21ac3ceb35f1c6d4bee9b7a06a8b68e6b49277b6f006abb03a518b5c4b4a
    
    jupyterlite_terminal-0.2.0-py3-none-any.whl: fd739e2015a6e8510b3d68d62925b7a379c8b85139df002f9e58e3cb3c0d83ff
    
    jupyterlite_terminal-0.2.0.tar.gz: e72e3257d2e4478bfa6008c109a6e166021931f3e08b662eacbd11e01e676295
    ianthomas23 committed Jun 4, 2025
    Copy the full SHA
    25c79f5 View commit details

Commits on Jun 9, 2025

  1. Bump cockle to 0.1.1 (jupyterlite#56)

    * Bunp cockle to 0.1.1
    
    * Use jupyterlite sharedPackages
    
    * Export ILiteTerminalAPIClient
    ianthomas23 authored Jun 9, 2025
    Copy the full SHA
    4a27983 View commit details
  2. Publish 0.2.1

    SHA256 hashes:
    
    jupyterlite-terminal-0.2.1.tgz: 55d9e6b051fad64d5e0ca46105d89dd5274e347497b570dda6f7cab7c34621fb
    
    jupyterlite_terminal-0.2.1-py3-none-any.whl: 1705d1eb89c9caee906f7d079d953923be467a6b7b6f60dd4d95fb2afef69690
    
    jupyterlite_terminal-0.2.1.tar.gz: 07b75ae8ef786ad866a832bb7c790d30b435eab3190ac2badcd51d61ce03e706
    ianthomas23 committed Jun 9, 2025
    Copy the full SHA
    a496e79 View commit details

Commits on Jun 10, 2025

  1. Copy the full SHA
    9b204be View commit details

Commits on Jun 13, 2025

  1. Copy the full SHA
    e9598d5 View commit details

Commits on Jun 26, 2025

  1. Add UI tests for nano and vim commands (jupyterlite#60)

    * Add UI tests for nano and vim commands
    
    * Linting
    
    * Update visual image snapshot
    ianthomas23 authored Jun 26, 2025
    Copy the full SHA
    a7a0fc3 View commit details

Commits on Jun 27, 2025

  1. Copy the full SHA
    2510c96 View commit details
  2. Update to cockle 0.1.2 (jupyterlite#61)

    * Update cockle from 0.1.1 to 0.1.2
    
    * Support registering aliases and environment variables
    
    * Manually update visual test images
    ianthomas23 authored Jun 27, 2025
    Copy the full SHA
    5c8447f View commit details
  3. Publish 0.2.2

    SHA256 hashes:
    
    jupyterlite-terminal-0.2.2.tgz: 54ebc11e531d00bd825eac3655325db4f54fc907ca2503e0cc50a1081e7a7df6
    
    jupyterlite_terminal-0.2.2-py3-none-any.whl: d754ddd2b1521a4e66ac16190d0f2b2d8a945d35535f7267b196d50ed7abb42a
    
    jupyterlite_terminal-0.2.2.tar.gz: 7f4ea204e6c8fcb77e69ec3bc1a2c27cdcef28de55f054608b48316eb8548925
    ianthomas23 committed Jun 27, 2025
    Copy the full SHA
    c3e49a8 View commit details
4 changes: 1 addition & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -106,12 +106,10 @@ jobs:
- name: Install the extension
run: |
set -eux
python -m pip install --pre "jupyterlite-core>=0.4,<0.5" "jupyterlab>=4,<5" jupyterlite_terminal*.whl
python -m pip install "jupyterlite-core>=0.6,<0.7" "jupyterlab>=4,<5" jupyterlite_terminal*.whl
- name: Micromamba needed for cockle_wasm_env
uses: mamba-org/setup-micromamba@main
with:
micromamba-version: '2.0.5-0'

- name: Install dependencies
working-directory: ui-tests
4 changes: 1 addition & 3 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -22,15 +22,13 @@ jobs:

- name: Install the dependencies
run: |
python -m pip install --pre "jupyterlite-core>=0.4,<0.5" jupyterlite-pyodide-kernel
python -m pip install "jupyterlite-core>=0.6,<0.7" jupyterlite-pyodide-kernel
# install a dev version of the terminal extension
python -m pip install .
- name: Micromamba needed for cockle_wasm_env
uses: mamba-org/setup-micromamba@main
with:
micromamba-version: '2.0.5-0'

- name: Build the JupyterLite site
working-directory: deploy
4 changes: 1 addition & 3 deletions .github/workflows/update-integration-tests.yml
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ jobs:
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1

- name: Install dependencies
run: python -m pip install -U --pre "jupyterlite-core>=0.4,<0.5" "jupyterlab>=4,<5"
run: python -m pip install -U "jupyterlite-core>=0.6,<0.7" "jupyterlab>=4,<5"

- name: Install extension
run: |
@@ -44,8 +44,6 @@ jobs:
- name: Micromamba needed for cockle_wasm_env
uses: mamba-org/setup-micromamba@main
with:
micromamba-version: '2.0.5-0'

- name: Install dependencies
working-directory: ui-tests
92 changes: 90 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -2,6 +2,96 @@

<!-- <START NEW CHANGELOG ENTRY> -->

## 0.2.2

This release adds support for the `less` command (with limitations), various enhancements to external commands (TypeScript commands that run in the main UI thread), and initial support to determine the terminal background color to identify dark mode.

([Full Changelog](https://github.com/jupyterlite/terminal/compare/v0.2.1...5c8447f9b3c8a147b829d8e83fa8145f628cc9f0))

### Enhancements made

- Update to cockle 0.1.2 [#61](https://github.com/jupyterlite/terminal/pull/61) ([@ianthomas23](https://github.com/ianthomas23))

### Bugs fixed

- Revert PR 57 [#58](https://github.com/jupyterlite/terminal/pull/58) ([@ianthomas23](https://github.com/ianthomas23))
- Disable jupyterlab's terminal-manager extension [#57](https://github.com/jupyterlite/terminal/pull/57) ([@ianthomas23](https://github.com/ianthomas23))

### Maintenance and upkeep improvements

- Add UI tests for `nano` and `vim` commands [#60](https://github.com/jupyterlite/terminal/pull/60) ([@ianthomas23](https://github.com/ianthomas23))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlite/terminal/graphs/contributors?from=2025-06-09&to=2025-06-27&type=c))

[@ianthomas23](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Aianthomas23+updated%3A2025-06-09..2025-06-27&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Ajtpio+updated%3A2025-06-09..2025-06-27&type=Issues) | [@vercel](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Avercel+updated%3A2025-06-09..2025-06-27&type=Issues)

<!-- <END NEW CHANGELOG ENTRY> -->

## 0.2.1

This is a bug fix release to fix bugs in URLs and the use of ServiceWorker for `stdin` from `cockle 0.1.1`.

([Full Changelog](https://github.com/jupyterlite/terminal/compare/v0.2.0...4a27983d45168a80eff58c4be27b606db6874088))

### Maintenance and upkeep improvements

- Bump cockle to 0.1.1 [#56](https://github.com/jupyterlite/terminal/pull/56) ([@ianthomas23](https://github.com/ianthomas23))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlite/terminal/graphs/contributors?from=2025-06-04&to=2025-06-09&type=c))

[@ianthomas23](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Aianthomas23+updated%3A2025-06-04..2025-06-09&type=Issues)

## 0.2.0

This release is a significant rewrite to work with JupyterLite 0.6.0 and to add support for using the JupyterLite ServiceWorker to provide `stdin` whilst commands are running, as an alternative to the existing SharedArrayBuffer implementation. Use of a ServiceWorker means it is no longer necessary to serve the terminal extension using cross-origin headers.

If served with cross-origin headers both the SharedArrayBuffer and ServiceWorker stdin implementations will be available, with SharedArrayBuffer used by default. The user can switch between them at runtime using the shell command `cockle-config -s`.

([Full Changelog](https://github.com/jupyterlite/terminal/compare/312424ac...9b840f74385fda59b84fe68086a11bfb51e08a3c))

### Enhancements made

- Update to cockle 0.1.0 [#55](https://github.com/jupyterlite/terminal/pull/55) ([@ianthomas23](https://github.com/ianthomas23))
- Add experimental support for registering external commands [#54](https://github.com/jupyterlite/terminal/pull/54) ([@ianthomas23](https://github.com/ianthomas23))
- Implement extension using `ITerminalAPIClient` [#53](https://github.com/jupyterlite/terminal/pull/53) ([@ianthomas23](https://github.com/ianthomas23))
- Support use of service worker to handle stdin [#51](https://github.com/jupyterlite/terminal/pull/51) ([@ianthomas23](https://github.com/ianthomas23))
- Rewrite as JupyterLab frontend plugin [#49](https://github.com/jupyterlite/terminal/pull/49) ([@ianthomas23](https://github.com/ianthomas23))
- Update to cockle 0.0.18 to support nano and sed commands [#48](https://github.com/jupyterlite/terminal/pull/48) ([@ianthomas23](https://github.com/ianthomas23))

### Maintenance and upkeep improvements

- Update to jupyterlite 0.6.0 [#52](https://github.com/jupyterlite/terminal/pull/52) ([@ianthomas23](https://github.com/ianthomas23))
- Remove micromamba pin in CI [#50](https://github.com/jupyterlite/terminal/pull/50) ([@ianthomas23](https://github.com/ianthomas23))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlite/terminal/graphs/contributors?from=2025-02-26&to=2025-06-04&type=c))

[@ianthomas23](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Aianthomas23+updated%3A2025-02-26..2025-06-04&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Ajtpio+updated%3A2025-02-26..2025-06-04&type=Issues) | [@vercel](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Avercel+updated%3A2025-02-26..2025-06-04&type=Issues)

## 0.2.0a0

([Full Changelog](https://github.com/jupyterlite/terminal/compare/v0.1.6...24a17cd549c024b9f7325c11012c92c70ba6d038))

### Enhancements made

- Rewrite as JupyterLab frontend plugin [#49](https://github.com/jupyterlite/terminal/pull/49) ([@ianthomas23](https://github.com/ianthomas23))
- Update to cockle 0.0.18 to support nano and sed commands [#48](https://github.com/jupyterlite/terminal/pull/48) ([@ianthomas23](https://github.com/ianthomas23))

### Maintenance and upkeep improvements

- Remove micromamba pin in CI [#50](https://github.com/jupyterlite/terminal/pull/50) ([@ianthomas23](https://github.com/ianthomas23))

### Contributors to this release

([GitHub contributors page for this release](https://github.com/jupyterlite/terminal/graphs/contributors?from=2025-02-26&to=2025-05-19&type=c))

[@ianthomas23](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Aianthomas23+updated%3A2025-02-26..2025-05-19&type=Issues) | [@jtpio](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Ajtpio+updated%3A2025-02-26..2025-05-19&type=Issues) | [@vercel](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Avercel+updated%3A2025-02-26..2025-05-19&type=Issues)

## 0.1.6

([Full Changelog](https://github.com/jupyterlite/terminal/compare/v0.1.5...a3ffc6b6c3c9dfdd3d4920ae7f76435f3d0bc9f3))
@@ -16,8 +106,6 @@

[@ianthomas23](https://github.com/search?q=repo%3Ajupyterlite%2Fterminal+involves%3Aianthomas23+updated%3A2025-02-05..2025-02-26&type=Issues)

<!-- <END NEW CHANGELOG ENTRY> -->

## 0.1.5

([Full Changelog](https://github.com/jupyterlite/terminal/compare/v0.1.4...02b85a5ca55ecdbe855deffafd4e3188f9f7395b))
30 changes: 14 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ A terminal for JupyterLite.

## Requirements

- JupyterLite >= 0.4.0
- JupyterLite >= 0.6.0

## Install

@@ -24,7 +24,7 @@ pip install jupyterlite-terminal
You will also need to install the JupyterLite CLI:

```bash
python -m pip install --pre jupyterlite-core
python -m pip install jupyterlite-core
```

## Usage
@@ -46,18 +46,6 @@ Then build a new JupyterLite site:
jupyter lite build
```

## Deployment

If you would like to deploy a JupyterLite site with the terminal extension, you will need to configure your server to add the `Cross-Origin-Embedder-Policy` and `Cross-Origin-Opener-Policy` headers.

As an example, this repository deploys the JupyterLite terminal to [Vercel](https://vercel.com), using the following files:

- `vercel.json`: configure the COOP / COEP server headers
- `deploy/requirements-deploy.txt`: dependencies for the JupyterLite deployment
- `deploy/deploy.sh`: script to deploy to Vercel, using micromamba to have full control on the Python versions and isolate the build in a virtual environment

For more information, have a look at the JupyterLite documentation: https://jupyterlite.readthedocs.io/

## Contributing

### Development install
@@ -97,6 +85,18 @@ jupyter lite build --contents contents

And serve it either using:

```bash
npx static-handler _output/
```

or:

```bash
jupyter lite serve
```

To enable use of SharedArrayBuffer rather than ServiceWorker for `stdin` you will have to configure your server to add the `Cross-Origin-Embedder-Policy` and `Cross-Origin-Opener-Policy` headers. Do this using either:

```bash
npx static-handler --cors --coop --coep --corp _output/
```
@@ -107,8 +107,6 @@ or:
jupyter lite serve --LiteBuildConfig.extra_http_headers=Cross-Origin-Embedder-Policy=require-corp --LiteBuildConfig.extra_http_headers=Cross-Origin-Opener-Policy=same-origin
```

The extra HTTP headers are require to ensure that `SharedArrayBuffer` is available.

### Packaging the extension

See [RELEASE](RELEASE.md)
4 changes: 2 additions & 2 deletions deploy/requirements-deploy.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
jupyterlab>=4,<5
jupyterlite-core>=0.4,<0.5
jupyterlab
jupyterlite-core
jupyterlite-pyodide-kernel
..
36 changes: 22 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@jupyterlite/terminal",
"version": "0.1.6",
"version": "0.2.2",
"description": "A terminal for JupyterLite",
"keywords": [
"jupyter",
@@ -59,19 +59,17 @@
"watch:labextension": "jupyter labextension watch ."
},
"dependencies": {
"@jupyterlab/coreutils": "^6.3.5",
"@jupyterlab/services": "^7.3.5",
"@jupyterlab/terminal": "^4.3.5",
"@jupyterlab/terminal-extension": "^4.3.5",
"@jupyterlite/cockle": "^0.0.18",
"@jupyterlite/contents": "^0.5.1",
"@jupyterlite/server": "^0.5.1",
"@jupyterlab/coreutils": "^6.4.3",
"@jupyterlab/services": "^7.4.3",
"@jupyterlite/cockle": "^0.1.2",
"@jupyterlite/contents": "^0.6.0",
"@jupyterlite/server": "^0.6.0",
"@lumino/coreutils": "^2.2.0",
"mock-socket": "^9.3.1"
},
"devDependencies": {
"@jupyterlab/builder": "^4.3.5",
"@jupyterlab/testutils": "^4.3.5",
"@jupyterlab/builder": "^4.4.3",
"@jupyterlab/testutils": "^4.4.3",
"@types/jest": "^29.2.0",
"@types/json-schema": "^7.0.11",
"@types/react": "^18.0.26",
@@ -99,6 +97,9 @@
"webpack-cli": "^5.1.4",
"yjs": "^13.5.0"
},
"resolutions": {
"parse5": "7.2.1"
},
"sideEffects": [
"style/*.css",
"style/index.js"
@@ -109,10 +110,17 @@
},
"jupyterlab": {
"extension": true,
"outputDir": "jupyterlite_terminal/labextension"
},
"jupyterlite": {
"liteExtension": true
"outputDir": "jupyterlite_terminal/labextension",
"sharedPackages": {
"@jupyterlite/contents": {
"bundled": false,
"singleton": true
},
"@jupyterlite/server": {
"bundled": false,
"singleton": true
}
}
},
"eslintIgnore": [
"node_modules",
5 changes: 3 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
name = "jupyterlite_terminal"
readme = "README.md"
license = { file = "LICENSE" }
requires-python = ">=3.8"
requires-python = ">=3.9"
classifiers = [
"Framework :: Jupyter",
"Framework :: Jupyter :: JupyterLab",
@@ -16,13 +16,14 @@ classifiers = [
"License :: OSI Approved :: BSD License",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
]
dependencies = [
"jupyterlite-core>=0.6,<0.7"
]
dynamic = ["version", "description", "authors", "urls", "keywords"]

Loading