ci: switch to official gh-pages action
diff --git a/.github/workflows/web-demo.yml b/.github/workflows/web-demo.yml
index 19b87b4..c1f1683 100644
--- a/.github/workflows/web-demo.yml
+++ b/.github/workflows/web-demo.yml
@@ -6,9 +6,15 @@
       - main
 
 jobs:
-  rustfmt:
+  release-web:
+    permissions:
+      contents: read
+      pages: write
+      id-token: write
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
     runs-on: ubuntu-latest
-    name: cargo fmt
     steps:
       - uses: actions/checkout@v4
 
@@ -51,9 +57,14 @@
             </html>
           EOF
 
-      # TODO: Once actions/upload-pages-artifact is stable, we can switch to actions/deploy-pages
-      - name: deploy
-        uses: peaceiris/actions-gh-pages@v3
+      - name: Setup Pages
+        uses: actions/configure-pages@v4
+
+      - name: Upload artifact
+        uses: actions/upload-pages-artifact@v3
         with:
-          github_token: ${{ secrets.GITHUB_TOKEN }}
-          publish_dir: ./public
+          path: './public'
+
+      - name: Deploy to GitHub Pages
+        id: deployment
+        uses: actions/deploy-pages@v4