diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml
index d7ae215..922c0d3 100644
--- a/.github/workflows/pages.yml
+++ b/.github/workflows/pages.yml
@@ -3,23 +3,38 @@ name: Dokka publication
 on:
   push:
     branches: [ main ]
+  workflow_dispatch:
+
+permissions:
+  contents: read
+  pages: write
+  id-token: write
 
 jobs:
-  build:
+  deploy:
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
     runs-on: ubuntu-latest
-    timeout-minutes: 40
     steps:
-      - uses: actions/checkout@v4.1.7
+      - name: Checkout
+        uses: actions/checkout@v4
       - name: Set up JDK 17
-        uses: actions/setup-java@v4.2.1
+        uses: actions/setup-java@v4
         with:
           java-version: 17
           distribution: liberica
       - name: execute build
-        uses: gradle/gradle-build-action@v3.4.2
+        uses: gradle/gradle-build-action@v3
         with:
           arguments: dokkaHtmlMultiModule
-      - uses: JamesIves/github-pages-deploy-action@4.6.1
+      - name: Setup Pages
+        uses: actions/configure-pages@v5
+      - name: Upload artifact
+        uses: actions/upload-pages-artifact@v3
         with:
-          branch: gh-pages
-          folder: build/dokka/htmlMultiModule
+          # Upload entire repository
+          path: 'build/dokka/htmlMultiModule'
+      - name: Deploy to GitHub Pages
+        id: deployment
+        uses: actions/deploy-pages@v4