feat: night-shift roadmap — guide+skill, streamable HTTP, cell-order sync, terminal interrupt #148
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| push: | |
| branches: | |
| - main | |
| tags: | |
| - "v*.*.*" | |
| workflow_call: # Allow this workflow to be called by other workflows | |
| jobs: | |
| validate: | |
| name: Validate | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Verify package.json and package-lock.json are in sync | |
| run: | | |
| npm ci --dry-run | |
| lint: | |
| name: Lint | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run type checking | |
| run: npm run check-types | |
| - name: Run linting | |
| run: npm run lint | |
| - name: Check formatting | |
| run: npm run format:check | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - name: Setup Julia | |
| uses: julia-actions/setup-julia@v2 | |
| with: | |
| version: "1.12" | |
| - name: Cache Julia packages | |
| uses: julia-actions/cache@v2 | |
| - name: Install Pluto.jl | |
| run: julia -e 'using Pkg; Pkg.add("Pluto")' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run unit tests | |
| run: npm run test:unit | |
| test-integration: | |
| name: Integration Test | |
| runs-on: ubuntu-latest | |
| needs: validate | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run VSCode integration tests | |
| run: xvfb-run -a npm test | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| needs: [validate, lint, test] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v5 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v5 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Build extension | |
| run: npm run package | |
| - name: Get VSIX filename | |
| id: vsix_file | |
| run: | | |
| VSIX_FILE=$(ls *.vsix | head -n 1) | |
| echo "filename=$VSIX_FILE" >> $GITHUB_OUTPUT | |
| echo "Built VSIX file: $VSIX_FILE" | |
| - name: Upload VSIX as artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: vsix-package | |
| path: ${{ steps.vsix_file.outputs.filename }} | |
| retention-days: 90 |