From d1c139e8c32f256f6f32e35beddccd83ef24e33a Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 9 Nov 2026 15:39:41 +0000 Subject: [PATCH] Actions: move to the versions that run on Node 24 GitHub's runners run every action on Node 24 and warn about actions built for Node 20. checkout v4 -> v7 in the four workflows; in the simulator and Teensy workflows setup-node v4 -> v7, upload-artifact v4 -> v7, upload-pages-artifact v3 -> v5, deploy-pages v4 -> v5. The inputs used are unchanged. arduino/setup-arduino-cli@v2 stays (no Node 24 release), with a comment about its warning. Simulator README: note and changelog. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01VKEBDFYMW2fYcrvsHhj83s --- .github/workflows/docs.yml | 2 +- .github/workflows/shared-code.yml | 2 +- .github/workflows/simulator.yml | 10 +++++----- .github/workflows/teensy-firmware.yml | 6 +++--- Firmware/simulator/README.md | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3599fe8..2f61bdb 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -30,7 +30,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Check the README changelogs run: python3 .github/scripts/check_changelog.py diff --git a/.github/workflows/shared-code.yml b/.github/workflows/shared-code.yml index f661cdd..ce37baa 100644 --- a/.github/workflows/shared-code.yml +++ b/.github/workflows/shared-code.yml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 5 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Compare the shared blocks of the sprayer and the seed drill programs run: python3 .github/scripts/check_shared_blocks.py diff --git a/.github/workflows/simulator.yml b/.github/workflows/simulator.yml index 59a7166..b74ef9e 100644 --- a/.github/workflows/simulator.yml +++ b/.github/workflows/simulator.yml @@ -48,12 +48,12 @@ jobs: group: simulator-build-${{ github.ref }} cancel-in-progress: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Build the simulator run: python3 Firmware/simulator/build.py _site - - uses: actions/setup-node@v4 + - uses: actions/setup-node@v7 with: node-version: 22 @@ -71,7 +71,7 @@ jobs: - name: Keep the screenshots if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: simulator-screenshots path: shots @@ -94,7 +94,7 @@ jobs: - name: Pack the site for Pages if: github.event_name != 'pull_request' - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v5 with: path: _site @@ -115,5 +115,5 @@ jobs: steps: - name: Publish on GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 # fails with "Get Pages site failed" until Pages is switched on: Settings → Pages → Source "GitHub Actions" diff --git a/.github/workflows/teensy-firmware.yml b/.github/workflows/teensy-firmware.yml index e211c33..cdf062b 100644 --- a/.github/workflows/teensy-firmware.yml +++ b/.github/workflows/teensy-firmware.yml @@ -46,7 +46,7 @@ jobs: run: shell: bash # -eo pipefail: a failed compile is not hidden by tee steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Find the newest firmware folder id: fw @@ -58,7 +58,7 @@ jobs: echo "sha=${sha::7}" >> "$GITHUB_OUTPUT" echo "Firmware folder: $dir" - - uses: arduino/setup-arduino-cli@v2 + - uses: arduino/setup-arduino-cli@v2 # built for Node 20 (no Node 24 release yet); the runner runs it on Node 24 and says so in a warning, which is harmless - name: Install Teensyduino ${{ env.TEENSYDUINO }} run: | @@ -118,7 +118,7 @@ jobs: echo '```' } >> "$GITHUB_STEP_SUMMARY" - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: ${{ steps.fw.outputs.name }}-${{ steps.fw.outputs.sha }} path: ${{ steps.fw.outputs.name }}.hex diff --git a/Firmware/simulator/README.md b/Firmware/simulator/README.md index 534a328..4c7991f 100644 --- a/Firmware/simulator/README.md +++ b/Firmware/simulator/README.md @@ -29,7 +29,7 @@ One row per day, in short; the details are in the sections of this file (the lin | Date | What changed | |---|---| -| 9 Nov 2026 | **Set up AgOpenWeb from your measures** 1.3: the turn clears the front corner, the drawbar meets the tyre, turns by headland, reasons ([the page](#set-up-agopenweb-from-your-measures)). Seed drill page: 19 sections before the program talks. Shorter start page and strip notes. | +| 9 Nov 2026 | **Set up AgOpenWeb from your measures** 1.3: the turn clears the front corner, the drawbar meets the tyre, turns by headland, reasons ([the page](#set-up-agopenweb-from-your-measures)). Seed drill page: 19 sections offline. Shorter start page and strip notes. [Action](#how-it-is-built) on Node 24. | | 8 Nov 2026 | **Set up AgOpenWeb from your measures**: a calculator that turns the tractor and implement measures into the U-turn, headland and tramline settings, with the reasons, a drawing, examples and drawbars kept off the rear tyres ([the page](#set-up-agopenweb-from-your-measures)). | | 7 Nov 2026 | The seed drill page's four tabs and Firmware tab checked, with a made-up newer `.bin` "on GitHub"; `firmware.json` lists the seed drill `.bin` once it is on `main`; the modules' names on the network ([How it is built](#how-it-is-built)). | | 4 Nov 2026 | The Teensy's clock and temperature, the receivers' and the TM171's temperatures and the XIAO's in the pretend modules' answers. | @@ -42,7 +42,7 @@ One row per day, in short; the details are in the sections of this file (the lin ## How it is built -`build.py` cuts the pages out of the newest `Firmware/vX.Y_AiO_WEB` folder, `Seeder/Seeder_ESP32` and `Sprayer/Sprayer_ESP32` exactly as the firmware serves them and puts the simulator scripts in their `` (a module page also gets its implement, `window.SIM_IMPL`). The scripts answer the page's `/api/...` requests (and the firmware upload) instead of the module, so the page's own JavaScript is not changed: what you see is the page as it is in the firmware. The GitHub Action `.github/workflows/simulator.yml` runs on every change under `Firmware/`, `Seeder/Seeder_ESP32/` or `Sprayer/Sprayer_ESP32/`, opens every tab in a browser as a check (`smoke-test.js`), and publishes the result on GitHub Pages when the change reaches `main`. A pull request only builds and checks: the simulator shows the merged firmware. +`build.py` cuts the pages out of the newest `Firmware/vX.Y_AiO_WEB` folder, `Seeder/Seeder_ESP32` and `Sprayer/Sprayer_ESP32` exactly as the firmware serves them and puts the simulator scripts in their `` (a module page also gets its implement, `window.SIM_IMPL`). The scripts answer the page's `/api/...` requests (and the firmware upload) instead of the module, so the page's own JavaScript is not changed: what you see is the page as it is in the firmware. The GitHub Action `.github/workflows/simulator.yml` runs on every change under `Firmware/`, `Seeder/Seeder_ESP32/` or `Sprayer/Sprayer_ESP32/`, opens every tab in a browser as a check (`smoke-test.js`), and publishes the result on GitHub Pages when the change reaches `main`. A pull request only builds and checks: the simulator shows the merged firmware. Since 9 Nov 2026 it uses the versions of GitHub's own actions that run on Node 24 (`checkout@v7`, `setup-node@v7`, `upload-artifact@v7`, `upload-pages-artifact@v5`, `deploy-pages@v5`): the runners now run every action on Node 24 and warn about one built for Node 20. `build.py` also writes `firmware.json` at the top of the site: the Teensy `.hex` and the two XIAO `.bin` files of the newest version folder, each with the date and time it was compiled, read from the file itself (the `__DATE__ __TIME__` text every program carries). The Teensy page and the XIAO page fetch it from `https://renatorgr.github.io/Boards/firmware.json` for **Install from GitHub**, so a new build of the same version shows as new once its file is on `main` and the site is published again. The pretend Teensy and XIAO run those same builds. It also has the sprayer module's `Sprayer/Sprayer_ESP32/Sprayer_ESP32.ino.bin` (`"sprayer"`): its version, board and build date, read from the text its `/api/status` answer starts with, for the sprayer page's **Firmware** tab; the pretend sprayer module runs that build. The same for the seed drill module's `Seeder/Seeder_ESP32/Seeder_ESP32.ino.bin` (`"seeder"`), once that file is on `main`.