${escape(clip.title)}
+ + +${escape(clip.description)}
+Step-by-step transcript
- ${clip.cues.map(cue => `
- ${escape(cue.text)} `).join('')}
diff --git a/.github/workflows/demos.yml b/.github/workflows/demos.yml new file mode 100644 index 0000000..7ab8e38 --- /dev/null +++ b/.github/workflows/demos.yml @@ -0,0 +1,30 @@ +name: Generate interaction demos + +on: + workflow_dispatch: + +permissions: + contents: read + +jobs: + record: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-node@v7 + with: + node-version: '24' + cache: 'npm' + - run: npm ci + - run: npx playwright install --with-deps chromium + - name: Install VP9 encoder + run: sudo apt-get update && sudo apt-get install -y ffmpeg + - name: Record and verify demos + run: npm run demos + - uses: actions/upload-artifact@v7 + if: always() + with: + name: varri-interaction-demos + path: output/playwright/ + retention-days: 14 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e299833..8eba680 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -30,6 +30,7 @@ jobs: run: | npm run test:architecture npm run test:ci + npm run demos:check-published - name: Verify installed package contents run: npm run test:package @@ -45,6 +46,9 @@ jobs: npm run test:pages npm run test:visual + - name: Record and verify interaction demos + run: npm run demos + - name: Upload browser diagnostics if: failure() uses: actions/upload-artifact@v7 diff --git a/README.html b/README.html index 58aa491..8de1a6c 100644 --- a/README.html +++ b/README.html @@ -5,6 +5,7 @@
${escape(clip.description)}
+Short recordings of the real viewer. Press Play to watch a clip.
+${cards} + +Rerendering clears temporary node positions and undo history. SVG and PNG exports preserve the layout without selection outlines. Share links preserve text-label positions only.
diff --git a/src/ui/components/profile-panel.js b/src/ui/components/profile-panel.js index 3fe3f04..b7d70af 100644 --- a/src/ui/components/profile-panel.js +++ b/src/ui/components/profile-panel.js @@ -1,4 +1,5 @@ import { viewerComponent } from './context.js'; +import VideoHelp from './video-help.js'; export default viewerComponent('profile-panel', `