Skip to content

feat(app): GET /api/surfaces/recent — post-grained recent surfaces #448

feat(app): GET /api/surfaces/recent — post-grained recent surfaces

feat(app): GET /api/surfaces/recent — post-grained recent surfaces #448

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: [main]
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
# One Linux job, one npm ci: lint/type/test, the release-note gate, and the
# packed-CLI smoke test. Cheap checks run first so failures surface fast; the
# pack round trip runs last. Node 22 is the documented floor and matches every
# other job — we don't matrix over 24 on PRs.
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
- run: npm install -g npm@11.17.0
- run: npm ci --ignore-scripts
- run: npm run security:audit
- run: npm run format:check
- run: npm run lint
- run: npm run typecheck
- run: npm test
- name: Release-note changeset
if: github.event_name == 'pull_request' && !startsWith(github.head_ref, 'release/')
run: |
git fetch origin main
npm run changeset:status -- --since=origin/main
- name: Pack and smoke-test the CLI
run: |
npm pack
npm install -g --ignore-scripts ./sideshow-*.tgz
sideshow help
SIDESHOW_DATA=/tmp/sideshow.json sideshow serve &
for i in $(seq 1 20); do curl -sf localhost:8228/api/sessions > /dev/null && break; sleep 0.5; done
echo '<p>ci smoke</p>' | sideshow publish - --title "CI smoke" --agent ci | tee /tmp/out.json
grep -q '"sessionId"' /tmp/out.json
sideshow demo | grep -q "Seeded 2 demo sessions"
curl -sf localhost:8228/guide > /dev/null
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
- run: npm install -g npm@11.17.0
- run: npm ci --ignore-scripts
- run: npm run security:audit
- run: npx playwright install --with-deps chromium webkit
- run: npm run test:e2e
# Windows uses entirely separate code paths in the CLI (PowerShell process
# tree walk in agentPid, cmd /c start for --open) and OS-specific path/state
# keying — none of which the Linux jobs exercise. It bills at 2x, so run it
# only on push to main, not on every PR. Keep it lean: unit tests plus a
# packed serve+publish round trip that runs the Windows agentPid walk.
windows-smoke:
if: github.event_name == 'push'
runs-on: windows-latest
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
- run: npm install -g npm@11.17.0
- run: npm ci --ignore-scripts
- run: npm run security:audit
- run: npm test
- run: npm pack
- name: Install packed CLI
shell: bash
run: npm install -g --ignore-scripts ./sideshow-*.tgz
- run: sideshow help
shell: bash
- name: Smoke-test server and publish round trip
shell: bash
run: |
SIDESHOW_DATA="$RUNNER_TEMP/sideshow.json" sideshow serve &
for i in $(seq 1 20); do curl -sf localhost:8228/api/sessions > /dev/null && break; sleep 0.5; done
echo '<p>ci smoke</p>' | sideshow publish - --title "CI smoke" --agent ci | tee "$RUNNER_TEMP/out.json"
grep -q '"sessionId"' "$RUNNER_TEMP/out.json"
curl -sf localhost:8228/guide > /dev/null