Manual verification after publishing a new release. Run on a clean environment (not your dev setup).
Remove any dev-installed extensions and kernel so the test is clean.
# Uninstall editable dev extensions from the dev venv
source .venv/bin/activate
pip uninstall hugr-perspective-viewer hugr-duckdb-explorer -y
jupyter labextension list # should NOT show @hugr-lab/*# Disable/uninstall the locally-built extension
code --uninstall-extension hugr-lab.hugr-result-renderer
# Or if using dev build, remove the output manually:
# rm -rf extensions/vscode/out/# macOS
rm -rf ~/Library/Jupyter/kernels/duckdb
# Linux
rm -rf ~/.local/share/jupyter/kernels/duckdbNote: duckdb-dev kernel is your dev setup (symlinks) — don't touch it.
curl -fsSL https://raw.githubusercontent.com/hugr-lab/duckdb-kernel/main/install.sh | bashVerify:
jupyter kernelspec list | grep duckdb
ls ~/Library/Jupyter/kernels/duckdb/ # macOS
ls ~/.local/share/jupyter/kernels/duckdb/ # LinuxExpected: duckdb-kernel binary, kernel.json, logos, static/perspective/ directory.
- Install from Marketplace: search "HUGR Result Viewer"
- Open DuckDB Explorer sidebar → click "Install / Update DuckDB Kernel"
- Verify kernel installed (notification + sidebar shows "Session" info after restart)
# Create clean test environment (separate from dev .venv)
python3 -m venv /tmp/test-duckdb-kernel
source /tmp/test-duckdb-kernel/bin/activate
# Install JupyterLab + extensions from PyPI
pip install jupyterlab
pip install hugr-perspective-viewer hugr-duckdb-explorer
# Verify extensions
jupyter labextension list # @hugr-lab/perspective-viewer, @hugr-lab/duckdb-explorer
jupyter server extension list # hugr_perspective
# Install kernel (if not already via install.sh)
curl -fsSL https://raw.githubusercontent.com/hugr-lab/duckdb-kernel/main/install.sh | bash
# Start JupyterLab
jupyter lab- Create notebook, select DuckDB kernel
-
SELECT 1→ Perspective table renders -
INSTALL spatial;→ shows "Success (X ms)" -
SELECT * FROM duckdb_extensions()→ multipart tabs work - DuckDB Explorer sidebar shows schema tree (SESSION, CATALOG sections)
- Sidebar works independently (populates after first query)
- Pin/unpin result → pin survives kernel restart
- "Open in Tab" → result opens in separate JupyterLab tab
- JSON result → tree/raw toggle works
deactivate
rm -rf /tmp/test-duckdb-kernel- Install extension from Marketplace (or
code --install-extension hugr-result-renderer.vsix) - Kernel should be available (installed via script or VS Code "Install DuckDB Kernel")
- Create
.ipynb, select DuckDB kernel -
SELECT 1→ Perspective table renders in cell output -
INSTALL spatial;→ shows "Success (X ms)" - DuckDB Explorer sidebar shows schema tree (8 sections)
- Sidebar shows "Run a query to connect" before first query (not errors)
- After first query, sidebar populates with session/catalog info
- "Open in Perspective Tab" → result opens in separate editor tab
- Map visualization works (if geometry data available)
- Save CSV/JSON/Arrow buttons work on perspective tab
If testing with hugr-kernel (separate repo):
pip install hugr-perspective-viewer hugr-duckdb-explorer-
hugr-perspective-viewerinstalls without errors - Spool proxy routes registered (
jupyter server extension list) - GraphQL query results render in Perspective viewer
- Arrow streaming through spool proxy works
Verify all artifacts present in GitHub Release:
-
duckdb-kernel-linux-amd64 -
duckdb-kernel-linux-arm64 -
duckdb-kernel-darwin-arm64 -
duckdb-kernel-windows-amd64.exe -
hugr_perspective_viewer-*.whl -
hugr_duckdb_explorer-*.whl -
hugr-result-renderer.vsix -
perspective-static.tar.gz -
kernel.json -
logo-32x32.png,logo-64x64.png -
install.sh
After testing, restore your dev setup:
# Dev venv
source .venv/bin/activate
make install-jupyterlab # re-install editable dev extensions
make install-dev # re-symlink dev kernel
# VS Code — rebuild dev extension
make build-vscode
# Reload VS Code window