-
Notifications
You must be signed in to change notification settings - Fork 4
feat: Remove Jupyter bindings. #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -7,12 +7,6 @@ | |||||
| "author": { | ||||||
| "name": "Deepnote" | ||||||
| }, | ||||||
| "extensionPack": [ | ||||||
| "ms-toolsai.jupyter-keymap", | ||||||
| "ms-toolsai.jupyter-renderers", | ||||||
| "ms-toolsai.vscode-jupyter-slideshow", | ||||||
| "ms-toolsai.vscode-jupyter-cell-tags" | ||||||
| ], | ||||||
| "license": "MIT", | ||||||
| "homepage": "https://github.com/deepnote/vscode-deepnote", | ||||||
| "repository": { | ||||||
|
|
@@ -54,16 +48,12 @@ | |||||
| "Visualization" | ||||||
| ], | ||||||
| "activationEvents": [ | ||||||
| "onLanguage:jupyter", | ||||||
| "onLanguage:python", | ||||||
| "onLanguageModelTool:configure_notebook", | ||||||
| "onLanguageModelTool:notebook_install_packages", | ||||||
| "onLanguageModelTool:notebook_list_packages", | ||||||
| "onNotebook:deepnote", | ||||||
| "onNotebook:interactive", | ||||||
| "onNotebook:jupyter-notebook", | ||||||
| "onWebviewPanel:jupyter-variables", | ||||||
| "onWebviewPanel:jupyter" | ||||||
| "onNotebook:interactive" | ||||||
| ], | ||||||
| "main": "./dist/extension.node.proxy.js", | ||||||
| "browser": "./dist/extension.web.bundle.js", | ||||||
|
|
@@ -75,179 +65,11 @@ | |||||
| } | ||||||
| }, | ||||||
| "contributes": { | ||||||
| "walkthroughs": [ | ||||||
| { | ||||||
| "id": "jupyterWelcome", | ||||||
| "title": "%contributes.walkthroughs.jupyterWelcome.title%", | ||||||
| "description": "%contributes.walkthroughs.jupyterWelcome.description%", | ||||||
| "when": "workspacePlatform != webworker", | ||||||
| "steps": [ | ||||||
| { | ||||||
| "id": "ipynb.newUntitledIpynb", | ||||||
| "title": "%contributes.walkthroughs.jupyterWelcome.steps.ipynb.newUntitledIpynb.title%", | ||||||
| "description": "%contributes.walkthroughs.jupyterWelcome.steps.ipynb.newUntitledIpynb.description%", | ||||||
| "media": { | ||||||
| "svg": "resources/walkthroughs/opennotebook.svg", | ||||||
| "altText": "%contributes.walkthroughs.jupyterWelcome.steps.ipynb.newUntitledIpynb.media.altText%" | ||||||
| }, | ||||||
| "completionEvents": [ | ||||||
| "onCommand:ipynb.newUntitledIpynb", | ||||||
| "onCommand:jupyter.createnewinteractive", | ||||||
| "onCommand:workbench.action.files.openFolder", | ||||||
| "onCommand:workbench.action.files.openFileFolder" | ||||||
| ] | ||||||
| }, | ||||||
| { | ||||||
| "id": "jupyter.selectKernel", | ||||||
| "title": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.selectKernel.title%", | ||||||
| "description": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.selectKernel.description%", | ||||||
| "media": { | ||||||
| "svg": "resources/walkthroughs/kernel.svg", | ||||||
| "altText": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.selectKernel.media.altText%" | ||||||
| }, | ||||||
| "completionEvents": [ | ||||||
| "onCommand:notebook.selectKernel" | ||||||
| ] | ||||||
| }, | ||||||
| { | ||||||
| "id": "jupyter.exploreAndDebug", | ||||||
| "title": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.exploreAndDebug.title%", | ||||||
| "description": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.exploreAndDebug.description%", | ||||||
| "media": { | ||||||
| "svg": "resources/walkthroughs/data.svg", | ||||||
| "altText": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.exploreAndDebug.media.altText%" | ||||||
| } | ||||||
| }, | ||||||
| { | ||||||
| "id": "jupyter.dataScienceLearnMore", | ||||||
| "title": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.dataScienceLearnMore.title%", | ||||||
| "description": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.dataScienceLearnMore.description%", | ||||||
| "media": { | ||||||
| "svg": "resources/walkthroughs/learnmore.svg", | ||||||
| "altText": "%contributes.walkthroughs.jupyterWelcome.steps.jupyter.dataScienceLearnMore.media.altText%" | ||||||
| } | ||||||
| } | ||||||
| ] | ||||||
| } | ||||||
| ], | ||||||
| "keybindings": [ | ||||||
| { | ||||||
| "command": "jupyter.execSelectionInteractive", | ||||||
| "key": "shift+enter", | ||||||
| "when": "editorTextFocus && editorLangId == python && !findInputFocussed && !replaceInputFocussed && jupyter.ownsSelection && !notebookEditorFocused && !isCompositeNotebook" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runcurrentcelladvance", | ||||||
| "key": "shift+enter", | ||||||
| "when": "editorTextFocus && !editorHasSelection && jupyter.hascodecells && !notebookEditorFocused && !isCompositeNotebook" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runcurrentcell", | ||||||
| "key": "ctrl+enter", | ||||||
| "when": "editorTextFocus && !editorHasSelection && jupyter.hascodecells && !notebookEditorFocused && !isCompositeNotebook" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runcurrentcellandaddbelow", | ||||||
| "key": "alt+enter", | ||||||
| "when": "editorTextFocus && !editorHasSelection && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "key": "escape", | ||||||
| "when": "isCompositeNotebook && !editorHoverVisible && !suggestWidgetVisible && !isComposing && !inSnippetMode && !exceptionWidgetVisible && !selectionAnchorSet && !LinkedEditingInputVisible && !renameInputVisible && !editorHasSelection && !accessibilityHelpWidgetVisible && !breakpointWidgetVisible && !findWidgetVisible && !markersNavigationVisible && !parameterHintsVisible && !editorHasMultipleSelections && !notificationToastsVisible && !notebookEditorFocused && !inlineChatVisible", | ||||||
| "command": "interactive.input.clear" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.insertCellBelowPosition", | ||||||
| "key": "ctrl+; s", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.insertCellBelow", | ||||||
| "key": "ctrl+; b", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.insertCellAbove", | ||||||
| "key": "ctrl+; a", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.deleteCells", | ||||||
| "key": "ctrl+; x", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.extendSelectionByCellAbove", | ||||||
| "key": "ctrl+alt+shift+[", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.extendSelectionByCellBelow", | ||||||
| "key": "ctrl+alt+shift+]", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.moveCellsUp", | ||||||
| "key": "ctrl+; u", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.moveCellsDown", | ||||||
| "key": "ctrl+; d", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.changeCellToMarkdown", | ||||||
| "key": "ctrl+; m", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.changeCellToCode", | ||||||
| "key": "ctrl+; c", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.gotoNextCellInFile", | ||||||
| "key": "ctrl+alt+]", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.gotoPrevCellInFile", | ||||||
| "key": "ctrl+alt+[", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.selectCellContents", | ||||||
| "key": "ctrl+alt+\\", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.selectCell", | ||||||
| "key": "ctrl+alt+shift+\\", | ||||||
| "when": "editorTextFocus && jupyter.hascodecells && !notebookEditorFocused" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.refreshDataViewer", | ||||||
| "key": "ctrl+r", | ||||||
| "mac": "cmd+r", | ||||||
| "when": "jupyter.dataViewerActive" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runAndDebugCell", | ||||||
| "key": "ctrl+alt+shift+enter", | ||||||
| "mac": "ctrl+shift+enter" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runByLine", | ||||||
| "key": "f10" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runByLineNext", | ||||||
| "key": "f10" | ||||||
| }, | ||||||
| { | ||||||
| "command": "jupyter.runByLineStop", | ||||||
| "key": "ctrl+enter" | ||||||
| } | ||||||
| ], | ||||||
| "commands": [ | ||||||
|
|
@@ -1414,7 +1236,7 @@ | |||||
| }, | ||||||
| "configuration": { | ||||||
| "type": "object", | ||||||
| "title": "Jupyter", | ||||||
| "title": "Deepnote", | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Verification agent 🧩 Analysis chainConfig title says “Deepnote” but all keys are jupyter. — confusing.* Either revert the title or migrate/alias settings to deepnote.* (with code reading both). Rebrand without key migration misleads users and docs. - "title": "Deepnote",
+ "title": "Jupyter",🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Locating package.json files (excluding node_modules)..."
mapfile -t files < <(find . -type f -name package.json -not -path "*/node_modules/*" 2>/dev/null || true)
if [ ${#files[@]} -eq 0 ]; then
echo "No package.json found."
exit 0
fi
for f in "${files[@]}"; do
echo
echo "==== $f ===="
echo "-- Lines around 1230-1245 (if file long enough) --"
sed -n '1225,1250p' "$f" || true
echo
echo "-- Any 'title' entries matching Deepnote or Jupyter --"
grep -nE '"title"[[:space:]]*:[[:space:]]*"(Deepnote|Jupyter)"' "$f" || echo "none"
echo
echo "-- Keys containing 'jupyter.' --"
grep -nE '"jupyter\.' "$f" || echo "none"
echo
echo "-- Keys containing 'deepnote.' --"
grep -nE '"deepnote\.' "$f" || echo "none"
doneLength of output: 112 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "Locating package.json files (excluding node_modules)..."
files=$(find . -type f -name package.json -not -path "*/node_modules/*" 2>/dev/null || true)
if [ -z "$files" ]; then
echo "No package.json found."
exit 0
fi
for f in $files; do
echo
echo "==== $f ===="
echo "-- Lines 1225-1250 (or whole file if shorter) --"
total_lines=$(wc -l < "$f" || echo 0)
if [ "$total_lines" -ge 1250 ]; then
sed -n '1225,1250p' "$f" || true
else
sed -n '1,2000p' "$f" || true
fi
echo
echo "-- 'title' entries matching Deepnote or Jupyter --"
grep -nE '"title"[[:space:]]*:[[:space:]]*"(Deepnote|Jupyter)"' "$f" || echo "none"
echo
echo "-- Keys containing 'jupyter.' --"
grep -nE '"jupyter\.' "$f" || echo "none"
echo
echo "-- Keys containing 'deepnote.' --"
grep -nE '"deepnote\.' "$f" || echo "none"
doneLength of output: 23270 Config title is "Deepnote" but settings use jupyter. — revert title or migrate/alias keys.* - "title": "Deepnote",
+ "title": "Jupyter",📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||
| "properties": { | ||||||
| "jupyter.experiments.enabled": { | ||||||
| "type": "boolean", | ||||||
|
|
@@ -1972,13 +1794,6 @@ | |||||
| } | ||||||
| ], | ||||||
| "notebookPreload": [ | ||||||
| { | ||||||
| "type": "jupyter-notebook", | ||||||
| "localResourceRoots": [ | ||||||
| "./temp" | ||||||
| ], | ||||||
| "entrypoint": "./dist/webviews/webview-side/ipywidgetsKernel/ipywidgetsKernel.js" | ||||||
| }, | ||||||
| { | ||||||
| "type": "deepnote", | ||||||
| "localResourceRoots": [ | ||||||
|
|
@@ -1994,36 +1809,13 @@ | |||||
| "entrypoint": "./dist/webviews/webview-side/ipywidgetsKernel/ipywidgetsKernel.js" | ||||||
| } | ||||||
| ], | ||||||
| "notebookRenderer": [ | ||||||
| { | ||||||
| "id": "jupyter-ipywidget-renderer", | ||||||
| "entrypoint": "./dist/webviews/webview-side/ipywidgetsRenderer/ipywidgetsRenderer.js", | ||||||
| "displayName": "%jupyter.notebookRenderer.IPyWidget.displayName%", | ||||||
| "mimeTypes": [ | ||||||
| "application/vnd.jupyter.widget-view+json" | ||||||
| ], | ||||||
| "requiresMessaging": "always" | ||||||
| } | ||||||
| ], | ||||||
| "viewsContainers": { | ||||||
| "activitybar": [ | ||||||
| { | ||||||
| "id": "jupyter", | ||||||
| "title": "Jupyter", | ||||||
| "icon": "$(notebook)" | ||||||
| }, | ||||||
| { | ||||||
| "id": "deepnote", | ||||||
| "title": "Deepnote", | ||||||
| "icon": "resources/DnDeepnoteLineLogo.svg" | ||||||
| } | ||||||
| ], | ||||||
| "panel": [ | ||||||
| { | ||||||
| "id": "jupyter-variables", | ||||||
| "title": "Jupyter", | ||||||
| "icon": "$(notebook)" | ||||||
| } | ||||||
| ] | ||||||
| }, | ||||||
| "views": { | ||||||
|
|
||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Activation events trimmed, but Jupyter surface still contributed.
You removed Jupyter activation triggers, yet the extension still contributes hundreds of Jupyter commands/menus/views. This leaves dead UI, unnecessary payload, and risk of unresolved contexts. Either drop these contributions or hard‑gate them behind a feature flag set to false.
Apply at least these removals as a start:
@@ "views": { - "jupyter-variables": [ - { - "type": "webview", - "id": "jupyterViewVariables", - "name": "Jupyter Variables", - "when": "jupyter.hasNativeNotebookOrInteractiveWindowOpen" - } - ], "deepnote": [@@ "debuggers": [ - { - "type": "Python Kernel Debug Adapter", - "label": "%jupyter.debuggers.kernel%" - }, - { - "type": "Python Interactive Window Debug Adapter", - "label": "%jupyter.debuggers.interactive%" - } + // (remove entire block if not supporting Jupyter debugging) ],🏁 Script executed:
Length of output: 135
🏁 Script executed:
Length of output: 35767
Remove or gate leftover Jupyter contributions in package.json
activationEvents no longer include Jupyter triggers, but package.json still contributes Jupyter commands, views and debug adapters — remove these contributions or hard‑gate them behind a disabled feature flag to avoid dead UI and unresolved enablement contexts.
File: package.json (root) — remove or gate at least the following entries:
@@ "views": { - "jupyter-variables": [ - { - "type": "webview", - "id": "jupyterViewVariables", - "name": "Jupyter Variables", - "when": "jupyter.hasNativeNotebookOrInteractiveWindowOpen" - } - ], "deepnote": [@@ "debuggers": [ - { - "type": "Python Kernel Debug Adapter", - "label": "%jupyter.debuggers.kernel%" - }, - { - "type": "Python Interactive Window Debug Adapter", - "label": "%jupyter.debuggers.interactive%" - } + // (remove entire block if not supporting Jupyter debugging) ],🤖 Prompt for AI Agents