diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 8c73855..ee4d84c 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -9,6 +9,7 @@ on: # / → static welcome page (web/index.html) # /slides/ → reveal.js findings deck (web/slides/) # /playground/ → the Vite IDE app (built with a matching base path) +# /jupyterlite/ → JupyterLite in-browser demo (jupyter lite build) # /sample-package/ → lesson 8's self-hosted Data Package (kept at root # so the URL hard-coded in lesson 8 stays valid) # PR previews (see pr-preview.yml) live under `/pr-preview/pr-N/` of the @@ -59,7 +60,28 @@ jobs: VITE_BASE_PATH: /tabular-data-playground/playground/ run: pnpm run build - - name: Assemble published site (welcome + slides + IDE + sample-package) + - name: Set up Python for JupyterLite build + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install JupyterLite build dependencies + working-directory: ${{ github.workspace }} + run: pip install -r jupyterlite/requirements.txt + + - name: Build JupyterLite demo (served under /jupyterlite/) + working-directory: ${{ github.workspace }}/jupyterlite + run: | + jupyter lite build \ + --output-dir _output \ + --base-url /tabular-data-playground/jupyterlite/ + + - name: Verify JupyterLite build produced output + working-directory: ${{ github.workspace }}/jupyterlite + run: | + test -d _output && test -n "$(ls -A _output)" + + - name: Assemble published site (welcome + slides + IDE + jupyterlite + sample-package) working-directory: ${{ github.workspace }} run: | set -e @@ -70,6 +92,9 @@ jobs: # IDE under /playground/ mkdir -p _site/playground cp -r app/dist/. _site/playground/ + # JupyterLite demo under /jupyterlite/ + mkdir -p _site/jupyterlite + cp -r jupyterlite/_output/. _site/jupyterlite/ # Keep the lesson-8 sample package at the gh-pages root if [ -d _site/playground/sample-package ]; then rm -rf _site/sample-package diff --git a/.github/workflows/pr-preview.yml b/.github/workflows/pr-preview.yml index ebc0b88..5e68fe3 100644 --- a/.github/workflows/pr-preview.yml +++ b/.github/workflows/pr-preview.yml @@ -6,6 +6,7 @@ name: PR Preview to GitHub Pages # /pr-preview/pr-/ → welcome page (web/index.html) # /pr-preview/pr-/slides/ → reveal.js findings deck # /pr-preview/pr-/playground/ → the Vite IDE (PR-scoped base path) +# /pr-preview/pr-/jupyterlite/ → JupyterLite demo (PR-scoped base path) # /pr-preview/pr-/sample-package/ → lesson 8's package, kept at the # preview root to mirror production # A single sticky comment (idempotent via the marker below) links to @@ -62,7 +63,27 @@ jobs: VITE_BASE_PATH: /tabular-data-playground/pr-preview/pr-${{ github.event.pull_request.number }}/playground/ run: pnpm run build - - name: Assemble preview site (welcome + slides + IDE + sample-package) + - name: Set up Python for JupyterLite build + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install JupyterLite build dependencies + run: pip install -r jupyterlite/requirements.txt + + - name: Build JupyterLite demo with PR-scoped base path + working-directory: jupyterlite + run: | + jupyter lite build \ + --output-dir _output \ + --base-url /tabular-data-playground/pr-preview/pr-${{ github.event.pull_request.number }}/jupyterlite/ + + - name: Verify JupyterLite build produced output + working-directory: jupyterlite + run: | + test -d _output && test -n "$(ls -A _output)" + + - name: Assemble preview site (welcome + slides + IDE + jupyterlite + sample-package) run: | set -e rm -rf _site @@ -70,6 +91,8 @@ jobs: cp -r web/. _site/ mkdir -p _site/playground cp -r app/dist/. _site/playground/ + mkdir -p _site/jupyterlite + cp -r jupyterlite/_output/. _site/jupyterlite/ if [ -d _site/playground/sample-package ]; then rm -rf _site/sample-package mv _site/playground/sample-package _site/sample-package @@ -103,6 +126,7 @@ jobs: `- Welcome page: ${base}`, `- Findings slides: ${base}slides/`, `- IDE: ${base}playground/`, + `- JupyterLite demo: ${base}jupyterlite/`, '', `Built from \`${sha}\`. Updates on every push to this PR; removed when the PR closes.`, ].join('\n'); diff --git a/.gitignore b/.gitignore index 5c50aa9..eb9fe29 100644 --- a/.gitignore +++ b/.gitignore @@ -145,3 +145,4 @@ vite.config.ts.timestamp-* # Claude Code local/user-specific artifacts (skills under .claude/skills/ are tracked) .claude/settings.local.json .claude/.credentials.json +.jupyterlite.doit.db diff --git a/.specify/memory/constitution.md b/.specify/memory/constitution.md index cc8d44b..bb61eb9 100644 --- a/.specify/memory/constitution.md +++ b/.specify/memory/constitution.md @@ -1,6 +1,37 @@ + +