From c439c5315bc92387bf99b969dae13d3f33a89cab Mon Sep 17 00:00:00 2001 From: Bas Nijholt Date: Mon, 12 Jan 2026 10:43:19 -0800 Subject: [PATCH] Integrate webapp (simulator) into docs workflow - Merge deploy-webapp.yml into docs.yml workflow - Build simulator and place at /simulator/ subdirectory - Update docs links to use relative paths to simulator - Remove separate deploy-webapp.yml to avoid conflicts The combined workflow now: 1. Builds docs with zensical 2. Builds webapp with shinylive 3. Copies webapp to site/simulator/ 4. Deploys everything to GitHub Pages Simulator will be at adaptive-lighting.nijho.lt/simulator/ --- .github/workflows/deploy-webapp.yml | 63 ----------------------------- .github/workflows/docs.yml | 25 +++++++++++- docs/advanced/brightness-modes.md | 2 +- docs/index.md | 4 +- docs/see-also.md | 2 +- 5 files changed, 27 insertions(+), 69 deletions(-) delete mode 100644 .github/workflows/deploy-webapp.yml diff --git a/.github/workflows/deploy-webapp.yml b/.github/workflows/deploy-webapp.yml deleted file mode 100644 index 0a76e3ac..00000000 --- a/.github/workflows/deploy-webapp.yml +++ /dev/null @@ -1,63 +0,0 @@ -# Simple workflow for deploying WebAssembly app to GitHub Pages -name: Deploy WebAssembly app to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - # Single deploy job since we're just deploying - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v6 - - - name: Set Up Python - uses: actions/setup-python@v6 - with: - python-version: 3.14.2 - - - name: Install Dependencies - run: | - pip install -r webapp/requirements.txt - pip install shinylive - - - name: Build the WebAssembly app - run: | - set -ex - cp custom_components/adaptive_lighting/color_and_brightness.py webapp/color_and_brightness.py - sed -i 's/homeassistant.util.color/homeassistant_util_color/g' "webapp/color_and_brightness.py" - shinylive export webapp site - - - name: Setup Pages - uses: actions/configure-pages@v5 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v4 - with: - # Upload the 'site' directory, where your app has been built - path: "site" - - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2c8d6475..c6817c8b 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -10,12 +10,15 @@ on: - 'custom_components/adaptive_lighting/_docs_helpers.py' - 'custom_components/adaptive_lighting/docs_gen.py' - 'custom_components/adaptive_lighting/const.py' + - 'custom_components/adaptive_lighting/color_and_brightness.py' + - 'webapp/**' - '.github/workflows/docs.yml' pull_request: paths: - 'docs/**' - 'README.md' - 'zensical.toml' + - 'webapp/**' workflow_dispatch: permissions: @@ -42,18 +45,22 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v4 - - name: Install dependencies + - name: Install documentation dependencies run: | uv pip install --system zensical markdown-code-runner uv pip install --system pandas voluptuous homeassistant + - name: Install webapp dependencies + run: | + uv pip install --system -r webapp/requirements.txt + uv pip install --system shinylive + - name: Set up PYTHONPATH run: | echo "PYTHONPATH=$GITHUB_WORKSPACE/custom_components:$GITHUB_WORKSPACE" >> $GITHUB_ENV - name: Run markdown-code-runner on docs run: | - # Process all markdown files with CODE blocks for f in docs/*.md docs/**/*.md; do if [ -f "$f" ]; then echo "Processing $f..." @@ -64,6 +71,20 @@ jobs: - name: Build documentation run: zensical build + - name: Build webapp (simulator) + run: | + set -ex + cp custom_components/adaptive_lighting/color_and_brightness.py webapp/color_and_brightness.py + sed -i 's/homeassistant.util.color/homeassistant_util_color/g' "webapp/color_and_brightness.py" + shinylive export webapp webapp-site + + - name: Integrate webapp into docs + run: | + # Copy webapp into docs site at /simulator/ + mkdir -p site/simulator + cp -r webapp-site/* site/simulator/ + echo "Webapp integrated at site/simulator/" + - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: diff --git a/docs/advanced/brightness-modes.md b/docs/advanced/brightness-modes.md index 2398f762..01b26069 100644 --- a/docs/advanced/brightness-modes.md +++ b/docs/advanced/brightness-modes.md @@ -118,7 +118,7 @@ These graphs were generated using the values calculated by the Adaptive Lighting The best way to understand brightness modes is to experiment with the interactive simulator:
- + 🌞 Try the Simulator 🌛
diff --git a/docs/index.md b/docs/index.md index 438ec350..23dae6c8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,7 +18,7 @@ hide: Install via HACS - + Try the Simulator @@ -82,7 +82,7 @@ Adaptive Lighting provides four switches for each configuration (using "living_r Visualize how Adaptive Lighting will work with your settings using the interactive simulator:
- + 🌞 Adaptive Lighting Simulator 🌛
diff --git a/docs/see-also.md b/docs/see-also.md index 0f817626..babfc6ea 100644 --- a/docs/see-also.md +++ b/docs/see-also.md @@ -28,7 +28,7 @@ Resources, tutorials, and related projects for Adaptive Lighting. Visualize how different settings affect your lighting throughout the day:
- + 🌞 Open the Simulator 🌛