From 411d5a16bfc17df9168efda0a2a1f21087f34aa9 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 17:54:53 +0000 Subject: [PATCH 01/12] feat: add cspell configuration and CI spell-check --- .github/workflows/build.yml | 13 +++++++++++ cspell.json | 45 +++++++++++++++++++++++++++++++++++++ package.json | 3 +++ 3 files changed, 61 insertions(+) create mode 100644 cspell.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 146472b..8b582e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -169,3 +169,16 @@ jobs: - uses: actions/checkout@v4 - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 + + spell-check: + name: Spell Check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Run spell check + run: jlpm run spell-check diff --git a/cspell.json b/cspell.json new file mode 100644 index 0000000..24256ea --- /dev/null +++ b/cspell.json @@ -0,0 +1,45 @@ +{ + "version": "0.2", + "ignorePaths": [ + "node_modules", + "package-lock.json", + "yarn.lock", + "dist", + "lib", + "build", + "coverage", + ".vscode", + ".git", + "*.min.js", + "*.min.css", + "*.map", + "jupyterlab_deepnote/labextension" + ], + "language": "en", + "overrides": [ + { + "filename": "**/*.md", + "words": [ + "deepnote", + "jupyter", + "jupyterlab", + "ipynb", + "labextension", + "jlpm", + "pnpm", + "monorepo" + ] + } + ], + "words": [ + "deepnote", + "jupyter", + "jupyterlab", + "ipynb", + "labextension", + "jlpm", + "pnpm", + "monorepo" + ], + "useGitignore": true +} diff --git a/package.json b/package.json index bb47bba..7b60110 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,8 @@ "stylelint": "jlpm stylelint:check --fix", "stylelint:check": "stylelint --cache \"style/**/*.css\"", "test": "jest --coverage", + "spell-check": "cspell \"**/*.{md,txt,json,js,ts,tsx,jsx,yml,yaml}\"", + "spell-check:fix": "cspell \"**/*.{md,txt,json,js,ts,tsx,jsx,yml,yaml}\" --no-exit-code --show-suggestions", "watch": "run-p watch:src watch:labextension", "watch:src": "tsc -w --sourceMap", "watch:labextension": "jupyter labextension watch ." @@ -70,6 +72,7 @@ "zod": "^4.1.11" }, "devDependencies": { + "cspell": "9.2.1", "@jupyterlab/builder": "^4.0.0", "@jupyterlab/testutils": "^4.0.0", "@types/jest": "^29.2.0", From 7fc76491801f3e12ee55ff74a710b26926294892 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 18:37:22 +0000 Subject: [PATCH 02/12] fix: add jlpm install step to spell-check CI job --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b582e7..dfacc93 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -180,5 +180,10 @@ jobs: - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Install dependencies + run: jlpm + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Run spell check run: jlpm run spell-check From 9ac36f791f9977bb226b8ef1f26156b37f5e03d3 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 18:54:05 +0000 Subject: [PATCH 03/12] fix: revert incorrect build.yml changes - Base Setup doesn't provide jlpm The previous commit attempted to add a 'Install dependencies' step using jlpm, but jlpm is not available after Base Setup alone. The correct fix requires updating yarn.lock locally with the cspell dependency, which is blocked by missing GITHUB_TOKEN in the development environment. This commit reverts the incorrect build.yml changes. The spell-check job still needs yarn.lock to be updated with the cspell@9.2.1 dependency. --- .github/workflows/build.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dfacc93..8b582e7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -180,10 +180,5 @@ jobs: - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - name: Install dependencies - run: jlpm - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Run spell check run: jlpm run spell-check From 56e855d092b459ffad76486fcdef3dd0234aa4e6 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 12:20:22 +0000 Subject: [PATCH 04/12] fix: move spell check from build.yml to ci.yaml as separate CI workflow --- .github/workflows/build.yml | 13 ------------- .github/workflows/ci.yaml | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 13 deletions(-) create mode 100644 .github/workflows/ci.yaml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b582e7..146472b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -169,16 +169,3 @@ jobs: - uses: actions/checkout@v4 - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 - - spell-check: - name: Spell Check - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Base Setup - uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - - - name: Run spell check - run: jlpm run spell-check diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 0000000..7bdbe83 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,27 @@ +name: CI + +on: + push: + branches: main + pull_request: + branches: '*' + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + spell-check: + name: Spell Check + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Base Setup + uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + + - name: Run spell check + run: jlpm run spell-check + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 7939ed12862e127830bb5873a569262031e0f005 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 12:54:51 +0000 Subject: [PATCH 05/12] fix: add jlpm install step before spell-check in CI The spell-check job was failing with 'jlpm: command not found' because the Base Setup action provides the jlpm binary but doesn't install node_modules. This adds the missing install step with GITHUB_TOKEN. --- .github/workflows/ci.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 7bdbe83..3e4e72c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,6 +21,11 @@ jobs: - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Install dependencies + run: jlpm install + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Run spell check run: jlpm run spell-check env: From ad6b89f5a20ff760b236fb9bb08a8cf4ee367f5d Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:18:04 +0000 Subject: [PATCH 06/12] fix: use jlpm instead of jlpm install in CI spell-check job The jlpm command without arguments automatically runs yarn install. This matches the pattern used in build.yml and fixes the 'jlpm: command not found' error. --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3e4e72c..eea3b44 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -22,7 +22,7 @@ jobs: uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 - name: Install dependencies - run: jlpm install + run: jlpm env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From c53c4d38da446fd9b963459cba607791029c978f Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 13:33:01 +0000 Subject: [PATCH 07/12] fix: install jupyterlab to provide jlpm command in spell-check CI The Base Setup action provides Python and yarn but not jlpm. Installing jupyterlab via pip provides the jlpm command, following the pattern used in build.yml. --- .github/workflows/ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index eea3b44..c4c67b7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -21,6 +21,9 @@ jobs: - name: Base Setup uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 + - name: Install JupyterLab + run: python -m pip install -U "jupyterlab>=4.0.0,<5" + - name: Install dependencies run: jlpm env: From ad66d27426352307e957d2657ca560198602e036 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 15:43:21 +0000 Subject: [PATCH 08/12] fix: use npx cspell instead of adding to devDependencies - Avoids yarn.lock sync issue that causes CI failure - npx downloads cspell on-the-fly without requiring it in package.json - Fixes 'YN0028: The lockfile would have been modified' error --- .github/workflows/ci.yaml | 4 +--- package.json | 3 --- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c4c67b7..6ea8063 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -30,6 +30,4 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Run spell check - run: jlpm run spell-check - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: npx cspell@9.2.1 "**/*.{md,txt,json,js,ts,tsx,jsx,yml,yaml}" diff --git a/package.json b/package.json index 7b60110..bb47bba 100644 --- a/package.json +++ b/package.json @@ -53,8 +53,6 @@ "stylelint": "jlpm stylelint:check --fix", "stylelint:check": "stylelint --cache \"style/**/*.css\"", "test": "jest --coverage", - "spell-check": "cspell \"**/*.{md,txt,json,js,ts,tsx,jsx,yml,yaml}\"", - "spell-check:fix": "cspell \"**/*.{md,txt,json,js,ts,tsx,jsx,yml,yaml}\" --no-exit-code --show-suggestions", "watch": "run-p watch:src watch:labextension", "watch:src": "tsc -w --sourceMap", "watch:labextension": "jupyter labextension watch ." @@ -72,7 +70,6 @@ "zod": "^4.1.11" }, "devDependencies": { - "cspell": "9.2.1", "@jupyterlab/builder": "^4.0.0", "@jupyterlab/testutils": "^4.0.0", "@types/jest": "^29.2.0", From da16028e92793e585071639e842ba159d9fa5ac1 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:00:46 +0000 Subject: [PATCH 09/12] fix: add JupyterLab technical terms to cspell dictionary Add 22 technical terms found in spell check CI logs: - JupyterLab packages: apputils, coreutils, settingregistry, lumino, testutils - Notebook formats: nbformat, ipynb - Build tools: jlpm, pyproject, sdist, bdist, lintcache, stylelintcache, csstree - Test tools: pytest, Pytest, codegen - Library names: chakra, ydoc - Config: jpserver, venv, labextensions - Author names: Jakubowski, rseidelsohn --- cspell.json | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/cspell.json b/cspell.json index 24256ea..90a11a7 100644 --- a/cspell.json +++ b/cspell.json @@ -32,14 +32,36 @@ } ], "words": [ + "apputils", + "bdist", + "chakra", + "codegen", + "coreutils", + "csstree", "deepnote", + "ipynb", + "Jakubowski", + "jlpm", + "jpserver", "jupyter", "jupyterlab", - "ipynb", "labextension", - "jlpm", + "labextensions", + "lintcache", + "lumino", + "monorepo", + "nbformat", "pnpm", - "monorepo" + "pyproject", + "Pytest", + "pytest", + "rseidelsohn", + "sdist", + "settingregistry", + "stylelintcache", + "testutils", + "venv", + "ydoc" ], "useGitignore": true } From 86dd994f13557d21cb908710adcb4f085d634005 Mon Sep 17 00:00:00 2001 From: James Hobbs <15235276+jamesbhobbs@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:42:31 +0100 Subject: [PATCH 10/12] chore: cr feedback Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- .github/workflows/ci.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6ea8063..11afce7 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -13,6 +13,9 @@ concurrency: jobs: spell-check: name: Spell Check + permissions: + contents: read + timeout-minutes: 10 runs-on: ubuntu-latest steps: - name: Checkout From a26287f155729f246a1088b8baa2776d61da2723 Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:45:19 +0000 Subject: [PATCH 11/12] fix: add --frozen-lockfile flag to jlpm install in CI Ensures dependencies are installed exactly as specified in yarn.lock without modifications during CI runs. --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 11afce7..bbe99aa 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -28,7 +28,7 @@ jobs: run: python -m pip install -U "jupyterlab>=4.0.0,<5" - name: Install dependencies - run: jlpm + run: jlpm install --frozen-lockfile env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 4d98acd18059205f57dd13bd860102003f04803a Mon Sep 17 00:00:00 2001 From: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:48:37 +0000 Subject: [PATCH 12/12] fix: remove unnecessary dependencies install step from spell check The spell check uses npx cspell which doesn't require project dependencies to be installed. The jlpm install step was causing authentication failures when trying to fetch @deepnote/blocks. --- .github/workflows/ci.yaml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index bbe99aa..9f4fe45 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -27,10 +27,5 @@ jobs: - name: Install JupyterLab run: python -m pip install -U "jupyterlab>=4.0.0,<5" - - name: Install dependencies - run: jlpm install --frozen-lockfile - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Run spell check run: npx cspell@9.2.1 "**/*.{md,txt,json,js,ts,tsx,jsx,yml,yaml}"