diff --git a/.gitea/workflows/publish-pages.yml b/.gitea/workflows/publish-pages.yml
index 31f13cf..69ec4c6 100644
--- a/.gitea/workflows/publish-pages.yml
+++ b/.gitea/workflows/publish-pages.yml
@@ -8,6 +8,8 @@ on:
jobs:
publish:
runs-on: ubuntu-latest
+ container:
+ image: node:22-bookworm
env:
R2_ENDPOINT: https://${{ secrets.F40_PAGES_R2_ACCOUNT_ID }}.r2.cloudflarestorage.com
R2_ACCOUNT_ID: ${{ secrets.F40_PAGES_R2_ACCOUNT_ID }}
@@ -21,10 +23,6 @@ jobs:
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-node@v4
- with:
- node-version: 22
-
- name: Resolve settings
run: |
SITE_NAME="${SITE_NAME_OVERRIDE:-${GITHUB_REPOSITORY##*/}}"
diff --git a/README.md b/README.md
index 2d0a2d6..47c4fbd 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,12 @@ The player supports two projection modes:
## How to use it
Build the player first, then host the generated `vr180player/` directory on your CDN and include the module script. The script automatically loads its matching CSS file from the same folder, and it imports its helper modules with relative module paths.
+Current F40 Pages CDN entrypoint:
+
+```html
+
+```
+
```html
-
+
```
A page can contain any number of launchers. Each launcher represents one SBS media item. A launcher click goes straight into immersive WebXR when `immersive-vr` is supported. When immersive WebXR is unavailable, the same click opens a modal with the left-eye fallback view.
@@ -96,6 +102,8 @@ When the page loads, the script binds every `[data-vr-web-launcher]` on the page
## Demo
Run `npm run build`, then open `test-pages/index.html` through a local web server. The test hub has three options: a local file picker for browser-selected image/video media, one bundled SBS flat 3D image, and one bundled SBS VR180 image.
+The deployed test app is expected at `https://pages.f-40.com/VR-Web-Player/` once the F40 Pages workflow has published a release.
+
For local experimentation, run:
```sh