From cbad754f5d9dd4ecf6c497781c8b88ea629ad701 Mon Sep 17 00:00:00 2001 From: LucDeCaf Date: Tue, 11 Aug 2026 16:25:40 +0200 Subject: [PATCH 1/4] Docs website + build and publish workflows --- .github/workflows/build-docs.yml | 25 ++++++++++++ .github/workflows/deploy-docs.yml | 52 ++++++++++++++++++++++++ Directory.build.props | 3 +- docs/.config/dotnet-tools.json | 13 ++++++ docs/.gitignore | 3 ++ docs/README.md | 30 ++++++++++++++ docs/docfx.json | 63 ++++++++++++++++++++++++++++++ docs/filter.yml | 5 +++ docs/images/powersync.png | Bin 0 -> 54518 bytes docs/index.html | 15 +++++++ docs/template/public/main.css | 5 +++ docs/toc.yml | 2 + 12 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-docs.yml create mode 100644 .github/workflows/deploy-docs.yml create mode 100644 docs/.config/dotnet-tools.json create mode 100644 docs/.gitignore create mode 100644 docs/README.md create mode 100644 docs/docfx.json create mode 100644 docs/filter.yml create mode 100644 docs/images/powersync.png create mode 100644 docs/index.html create mode 100644 docs/template/public/main.css create mode 100644 docs/toc.yml diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 00000000..aaa5d7d5 --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,25 @@ +name: Build Docs + +on: push + +jobs: + build: + name: Build Docs + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v6 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0" + + - name: Restore docfx + working-directory: docs + run: dotnet tool restore + + - name: Build Docs + working-directory: docs + run: dotnet docfx docfx.json --warningsAsErrors diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml new file mode 100644 index 00000000..3116ee94 --- /dev/null +++ b/.github/workflows/deploy-docs.yml @@ -0,0 +1,52 @@ +name: Deploy Docs to GitHub Pages + +on: workflow_dispatch + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + build: + name: Build Docs + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v6 + + - name: Setup .NET SDK + uses: actions/setup-dotnet@v5 + with: + dotnet-version: "8.0" + + - name: Restore docfx + working-directory: docs + run: dotnet tool restore + + - name: Build Docs + working-directory: docs + run: dotnet docfx docfx.json --warningsAsErrors + + - name: Upload Pages Artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./docs/_site + + deploy: + name: Deploy to GitHub Pages + runs-on: ubuntu-latest + needs: build + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/Directory.build.props b/Directory.build.props index bcdc24ac..fe14bb0e 100644 --- a/Directory.build.props +++ b/Directory.build.props @@ -2,8 +2,9 @@ $(MSBuildWarningsAsMessages);NETSDK1202 + true - \ No newline at end of file + diff --git a/docs/.config/dotnet-tools.json b/docs/.config/dotnet-tools.json new file mode 100644 index 00000000..12ab7ac1 --- /dev/null +++ b/docs/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "docfx": { + "version": "2.78.5", + "commands": [ + "docfx" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/docs/.gitignore b/docs/.gitignore new file mode 100644 index 00000000..d568c5c2 --- /dev/null +++ b/docs/.gitignore @@ -0,0 +1,3 @@ +api/ +_site/ +obj/ diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..74e25b9b --- /dev/null +++ b/docs/README.md @@ -0,0 +1,30 @@ +# API Reference Docs + +API documentation website for the PowerSync .NET SDK, generated via `docfx`. + +## Building locally + +1. Install `docfx`: + +`docfx` is installed as a local .NET tool. + +```bash +cd docs +dotnet tool restore +``` + +2. Build and serve on `http://localhost:8080`: + +```bash +dotnet tool restore +dotnet docfx docfx.json --serve +``` + +## Publishing + +- `.github/workflows/build-docs.yml`: Builds the site on every push. +- `.github/workflows/deploy-docs.yml`: Builds and publishes the site on push to `main`. + +## Notes + +Projects are built with only the `net8.0` target present (see the `properties` field in `docfx.json`) so that the MAUI workloads and the native `powersync-sqlite-core` binaries are not required to build the docs. diff --git a/docs/docfx.json b/docs/docfx.json new file mode 100644 index 00000000..4c7aee77 --- /dev/null +++ b/docs/docfx.json @@ -0,0 +1,63 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", + "metadata": [ + { + "src": [ + { + "src": "../PowerSync", + "files": [ + "PowerSync.Common/PowerSync.Common.csproj", + "PowerSync.Maui/PowerSync.Maui.csproj" + ] + } + ], + "dest": "api", + "filter": "filter.yml", + "properties": { + "TargetFramework": "net8.0", + "TargetFrameworks": "net8.0" + }, + "namespaceLayout": "nested", + "memberLayout": "separatePages", + "enumSortOrder": "declaringOrder", + "outputFormat": "mref" + } + ], + "build": { + "content": [ + { + "files": ["**/*.{md,yml}"], + "exclude": [ + "_site/**", + "obj/**", + "template/**", + "README.md", + "filter.yml" + ] + } + ], + "resource": [ + { + "files": ["index.html", "images/**"] + } + ], + "output": "_site", + "template": ["default", "modern", "template"], + "globalMetadata": { + "_appName": "PowerSync .NET", + "_appTitle": "PowerSync .NET SDK", + "_appFaviconPath": "images/powersync.png", + "_appLogoPath": "images/powersync.png", + "_appFooter": "PowerSync .NET SDK · PowerSync Docs", + "_enableSearch": true, + "_disableContribution": false, + "_gitContribute": { + "repo": "https://github.com/powersync-ja/powersync-dotnet", + "branch": "main", + "apiSpecFolder": "docs" + }, + "pdf": false + }, + "postProcessors": ["ExtractSearchIndex"] + } +} diff --git a/docs/filter.yml b/docs/filter.yml new file mode 100644 index 00000000..257f884c --- /dev/null +++ b/docs/filter.yml @@ -0,0 +1,5 @@ +apiRules: + # Ignore the `build/ApiDefinition.cs` file in PowerSync.Maui (required to build for Apple targets) + - exclude: + uidRegex: ^PowerSync\.Maui\.build$ + type: Namespace diff --git a/docs/images/powersync.png b/docs/images/powersync.png new file mode 100644 index 0000000000000000000000000000000000000000..8d7111c85f1fbd0e8dec9aca120a69f30c994ff5 GIT binary patch literal 54518 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 k|NH+E_ + + + + PowerSync .NET API Reference + + + + + +

Redirecting to the PowerSync .NET API reference.

+ + diff --git a/docs/template/public/main.css b/docs/template/public/main.css new file mode 100644 index 00000000..316cb046 --- /dev/null +++ b/docs/template/public/main.css @@ -0,0 +1,5 @@ +img#logo { + height: 28px; + width: auto; + margin-right: 0.5rem; +} diff --git a/docs/toc.yml b/docs/toc.yml new file mode 100644 index 00000000..8c52d26d --- /dev/null +++ b/docs/toc.yml @@ -0,0 +1,2 @@ +- name: API Reference + uid: PowerSync From 4b520a05f33bf65aaf91b1140909a499f4a75e2c Mon Sep 17 00:00:00 2001 From: LucDeCaf Date: Tue, 11 Aug 2026 16:51:32 +0200 Subject: [PATCH 2/4] Fix workflow --- .github/workflows/build-docs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index aaa5d7d5..1d7d8d10 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -16,6 +16,10 @@ jobs: with: dotnet-version: "8.0" + - name: Restore WASM workload + working-directory: docs + run: dotnet workload restore + - name: Restore docfx working-directory: docs run: dotnet tool restore From 1abd49ec70a76deb74ac9f69964c206c789d9730 Mon Sep 17 00:00:00 2001 From: LucDeCaf Date: Tue, 11 Aug 2026 17:09:48 +0200 Subject: [PATCH 3/4] Fix workflow: Part 2 --- .github/workflows/build-docs.yml | 17 +++++++++++------ .github/workflows/deploy-docs.yml | 13 +++++++++++-- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 1d7d8d10..caafbdd0 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -14,16 +14,21 @@ jobs: - name: Setup .NET SDK uses: actions/setup-dotnet@v5 with: - dotnet-version: "8.0" - - - name: Restore WASM workload - working-directory: docs - run: dotnet workload restore + global-json-file: global.json - name: Restore docfx working-directory: docs run: dotnet tool restore + - name: Restore Projects + run: | + dotnet restore PowerSync/PowerSync.Common/PowerSync.Common.csproj -p:TargetFrameworks=net8.0 + dotnet restore PowerSync/PowerSync.Maui/PowerSync.Maui.csproj -p:TargetFrameworks=net8.0 + + - name: Generate API Metadata + working-directory: docs + run: dotnet docfx metadata docfx.json --warningsAsErrors --noRestore + - name: Build Docs working-directory: docs - run: dotnet docfx docfx.json --warningsAsErrors + run: dotnet docfx build docfx.json --warningsAsErrors diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index 3116ee94..2a4db78b 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -23,15 +23,24 @@ jobs: - name: Setup .NET SDK uses: actions/setup-dotnet@v5 with: - dotnet-version: "8.0" + global-json-file: global.json - name: Restore docfx working-directory: docs run: dotnet tool restore + - name: Restore Projects + run: | + dotnet restore PowerSync/PowerSync.Common/PowerSync.Common.csproj -p:TargetFrameworks=net8.0 + dotnet restore PowerSync/PowerSync.Maui/PowerSync.Maui.csproj -p:TargetFrameworks=net8.0 + + - name: Generate API Metadata + working-directory: docs + run: dotnet docfx metadata docfx.json --warningsAsErrors --noRestore + - name: Build Docs working-directory: docs - run: dotnet docfx docfx.json --warningsAsErrors + run: dotnet docfx build docfx.json --warningsAsErrors - name: Upload Pages Artifact uses: actions/upload-pages-artifact@v3 From bfb5a6924ab2b0f89f158fa80cece0fc696d54eb Mon Sep 17 00:00:00 2001 From: Luc de Cafmeyer Date: Tue, 11 Aug 2026 17:13:27 +0200 Subject: [PATCH 4/4] Potential fix for pull request finding 'CodeQL / Workflow does not contain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/build-docs.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index caafbdd0..2e801bda 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -2,6 +2,9 @@ name: Build Docs on: push +permissions: + contents: read + jobs: build: name: Build Docs