Resting week
I have a little injury so will be taking it easier this week. I am doing a lot more stretching and some yoga. I will aim for a hilly ride on Saturday morning (but not too early).
My mood is very low this week and finding it hard to get motivated. Focused on small tasks to start improving my mood again.
My mood wasn't helped by muscle strain around my hip and shoulder. After several hours of yoga my muscle pain is starting to ease and my legs feel pretty good. My shoulders are still very stiff after lots of stretching though.
- Yoga Morning Fresh a good all-round yoga session
- Tension relief for Cyclists excellent for stretching muscles
- Full Body Strength routine for Cyclists more challenging workout that builds up a sweat quite quickly
Practicalliλ︎
I have used Material for MkDocs for my blog websites and Zensical has not yet added the blog feature. So whilst I am using zensical serve for Practicalli books, I still need to use a Python Venv and mkdocs serve for blog sites.
Output of install Python Venv package
Once the python3.13-venv package was installed then the Makefile tasks manage the rest:
make python-venvto create a Python virtual environment in~/.local/venv/make mkdos-installto install Material for MkDocs and its dependenciesmake docsto build the website and serve locally
Output of Material for MkDocs Install
❯ make mkdocs-install
-- Install Material for MkDocs -----------
source ~/.local/venv/bin/activate && pip install mkdocs-material mkdocs-callouts mkdocs-glightbox mkdocs-git-revision-date-localized-plugin mkdocs-redirects mkdocs-rss-plugin pillow cairosvg --upgrade
Collecting mkdocs-material
Downloading mkdocs_material-9.7.6-py3-none-any.whl.metadata (19 kB)
Collecting mkdocs-callouts
Downloading mkdocs_callouts-1.16.0-py3-none-any.whl.metadata (4.7 kB)
Collecting mkdocs-glightbox
Downloading mkdocs_glightbox-0.5.2-py3-none-any.whl.metadata (7.4 kB)
Collecting mkdocs-git-revision-date-localized-plugin
Downloading mkdocs_git_revision_date_localized_plugin-1.5.1-py3-none-any.whl.metadata (5.8 kB)
Collecting mkdocs-redirects
Downloading mkdocs_redirects-1.2.3-py3-none-any.whl.metadata (5.3 kB)
Collecting mkdocs-rss-plugin
Downloading mkdocs_rss_plugin-1.17.9-py3-none-any.whl.metadata (8.1 kB)
Collecting pillow
Downloading pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (8.8 kB)
Collecting cairosvg
Downloading cairosvg-2.9.0-py3-none-any.whl.metadata (2.7 kB)
Collecting babel>=2.10 (from mkdocs-material)
Downloading babel-2.18.0-py3-none-any.whl.metadata (2.2 kB)
Collecting backrefs>=5.7.post1 (from mkdocs-material)
Downloading backrefs-6.2-py313-none-any.whl.metadata (3.0 kB)
Collecting colorama>=0.4 (from mkdocs-material)
Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB)
Collecting jinja2>=3.1 (from mkdocs-material)
Downloading jinja2-3.1.6-py3-none-any.whl.metadata (2.9 kB)
Collecting markdown>=3.2 (from mkdocs-material)
Downloading markdown-3.10.2-py3-none-any.whl.metadata (5.1 kB)
Collecting mkdocs-material-extensions>=1.3 (from mkdocs-material)
Downloading mkdocs_material_extensions-1.3.1-py3-none-any.whl.metadata (6.9 kB)
Collecting mkdocs<2,>=1.6 (from mkdocs-material)
Downloading mkdocs-1.6.1-py3-none-any.whl.metadata (6.0 kB)
Collecting paginate>=0.5 (from mkdocs-material)
Downloading paginate-0.5.7-py2.py3-none-any.whl.metadata (11 kB)
Collecting pygments>=2.16 (from mkdocs-material)
Downloading pygments-2.19.2-py3-none-any.whl.metadata (2.5 kB)
Collecting pymdown-extensions>=10.2 (from mkdocs-material)
Downloading pymdown_extensions-10.21-py3-none-any.whl.metadata (3.1 kB)
Collecting requests>=2.30 (from mkdocs-material)
Downloading requests-2.33.0-py3-none-any.whl.metadata (5.1 kB)
Collecting click>=7.0 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading click-8.3.1-py3-none-any.whl.metadata (2.6 kB)
Collecting ghp-import>=1.0 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading ghp_import-2.1.0-py3-none-any.whl.metadata (7.2 kB)
Collecting markupsafe>=2.0.1 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.7 kB)
Collecting mergedeep>=1.3.4 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading mergedeep-1.3.4-py3-none-any.whl.metadata (4.3 kB)
Collecting mkdocs-get-deps>=0.2.0 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading mkdocs_get_deps-0.2.2-py3-none-any.whl.metadata (4.0 kB)
Collecting packaging>=20.5 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading packaging-26.0-py3-none-any.whl.metadata (3.3 kB)
Collecting pathspec>=0.11.1 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading pathspec-1.0.4-py3-none-any.whl.metadata (13 kB)
Collecting pyyaml-env-tag>=0.1 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading pyyaml_env_tag-1.1-py3-none-any.whl.metadata (5.5 kB)
Collecting pyyaml>=5.1 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (2.4 kB)
Collecting watchdog>=2.0 (from mkdocs<2,>=1.6->mkdocs-material)
Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl.metadata (44 kB)
Collecting selectolax>=0.3.29 (from mkdocs-glightbox)
Downloading selectolax-0.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (8.2 kB)
Collecting gitpython>=3.1.44 (from mkdocs-git-revision-date-localized-plugin)
Downloading gitpython-3.1.46-py3-none-any.whl.metadata (13 kB)
Collecting properdocs>=1.6.5 (from mkdocs-redirects)
Downloading properdocs-1.6.7-py3-none-any.whl.metadata (4.8 kB)
Collecting CacheControl<1,>=0.14.3 (from CacheControl[filecache]<1,>=0.14.3->mkdocs-rss-plugin)
Downloading cachecontrol-0.14.4-py3-none-any.whl.metadata (3.1 kB)
Collecting msgpack<2.0.0,>=0.5.2 (from CacheControl<1,>=0.14.3->CacheControl[filecache]<1,>=0.14.3->mkdocs-rss-plugin)
Downloading msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (8.1 kB)
Collecting filelock>=3.8.0 (from CacheControl[filecache]<1,>=0.14.3->mkdocs-rss-plugin)
Downloading filelock-3.25.2-py3-none-any.whl.metadata (2.0 kB)
Collecting gitdb<5,>=4.0.1 (from gitpython>=3.1.44->mkdocs-git-revision-date-localized-plugin)
Downloading gitdb-4.0.12-py3-none-any.whl.metadata (1.2 kB)
Collecting smmap<6,>=3.0.1 (from gitdb<5,>=4.0.1->gitpython>=3.1.44->mkdocs-git-revision-date-localized-plugin)
Downloading smmap-5.0.3-py3-none-any.whl.metadata (4.6 kB)
Collecting charset_normalizer<4,>=2 (from requests>=2.30->mkdocs-material)
Downloading charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata (40 kB)
Collecting idna<4,>=2.5 (from requests>=2.30->mkdocs-material)
Downloading idna-3.11-py3-none-any.whl.metadata (8.4 kB)
Collecting urllib3<3,>=1.26 (from requests>=2.30->mkdocs-material)
Downloading urllib3-2.6.3-py3-none-any.whl.metadata (6.9 kB)
Collecting certifi>=2023.5.7 (from requests>=2.30->mkdocs-material)
Downloading certifi-2026.2.25-py3-none-any.whl.metadata (2.5 kB)
Collecting cairocffi (from cairosvg)
Downloading cairocffi-1.7.1-py3-none-any.whl.metadata (3.3 kB)
Collecting cssselect2 (from cairosvg)
Downloading cssselect2-0.9.0-py3-none-any.whl.metadata (2.9 kB)
Collecting defusedxml (from cairosvg)
Downloading defusedxml-0.7.1-py2.py3-none-any.whl.metadata (32 kB)
Collecting tinycss2 (from cairosvg)
Downloading tinycss2-1.5.1-py3-none-any.whl.metadata (3.0 kB)
Collecting python-dateutil>=2.8.1 (from ghp-import>=1.0->mkdocs<2,>=1.6->mkdocs-material)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting platformdirs>=2.2.0 (from mkdocs-get-deps>=0.2.0->mkdocs<2,>=1.6->mkdocs-material)
Downloading platformdirs-4.9.4-py3-none-any.whl.metadata (4.7 kB)
Collecting six>=1.5 (from python-dateutil>=2.8.1->ghp-import>=1.0->mkdocs<2,>=1.6->mkdocs-material)
Downloading six-1.17.0-py2.py3-none-any.whl.metadata (1.7 kB)
Collecting cffi>=1.1.0 (from cairocffi->cairosvg)
Downloading cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.6 kB)
Collecting pycparser (from cffi>=1.1.0->cairocffi->cairosvg)
Downloading pycparser-3.0-py3-none-any.whl.metadata (8.2 kB)
Collecting webencodings (from cssselect2->cairosvg)
Downloading webencodings-0.5.1-py2.py3-none-any.whl.metadata (2.1 kB)
Downloading mkdocs_material-9.7.6-py3-none-any.whl (9.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 9.3/9.3 MB 11.8 MB/s eta 0:00:00
Downloading mkdocs-1.6.1-py3-none-any.whl (3.9 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.9/3.9 MB 13.6 MB/s eta 0:00:00
Downloading mkdocs_callouts-1.16.0-py3-none-any.whl (8.6 kB)
Downloading mkdocs_glightbox-0.5.2-py3-none-any.whl (26 kB)
Downloading mkdocs_git_revision_date_localized_plugin-1.5.1-py3-none-any.whl (26 kB)
Downloading mkdocs_redirects-1.2.3-py3-none-any.whl (6.2 kB)
Downloading mkdocs_rss_plugin-1.17.9-py3-none-any.whl (31 kB)
Downloading cachecontrol-0.14.4-py3-none-any.whl (22 kB)
Downloading gitpython-3.1.46-py3-none-any.whl (208 kB)
Downloading gitdb-4.0.12-py3-none-any.whl (62 kB)
Downloading msgpack-1.1.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (424 kB)
Downloading requests-2.33.0-py3-none-any.whl (65 kB)
Downloading charset_normalizer-3.4.6-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (206 kB)
Downloading idna-3.11-py3-none-any.whl (71 kB)
Downloading smmap-5.0.3-py3-none-any.whl (24 kB)
Downloading urllib3-2.6.3-py3-none-any.whl (131 kB)
Downloading pillow-12.1.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (7.0 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.0/7.0 MB 13.8 MB/s eta 0:00:00
Downloading cairosvg-2.9.0-py3-none-any.whl (45 kB)
Downloading babel-2.18.0-py3-none-any.whl (10.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.2/10.2 MB 11.3 MB/s eta 0:00:00
Downloading backrefs-6.2-py313-none-any.whl (400 kB)
Downloading certifi-2026.2.25-py3-none-any.whl (153 kB)
Downloading click-8.3.1-py3-none-any.whl (108 kB)
Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Downloading filelock-3.25.2-py3-none-any.whl (26 kB)
Downloading ghp_import-2.1.0-py3-none-any.whl (11 kB)
Downloading jinja2-3.1.6-py3-none-any.whl (134 kB)
Downloading markdown-3.10.2-py3-none-any.whl (108 kB)
Downloading markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (22 kB)
Downloading mergedeep-1.3.4-py3-none-any.whl (6.4 kB)
Downloading mkdocs_get_deps-0.2.2-py3-none-any.whl (9.6 kB)
Downloading mkdocs_material_extensions-1.3.1-py3-none-any.whl (8.7 kB)
Downloading packaging-26.0-py3-none-any.whl (74 kB)
Downloading paginate-0.5.7-py2.py3-none-any.whl (13 kB)
Downloading pathspec-1.0.4-py3-none-any.whl (55 kB)
Downloading platformdirs-4.9.4-py3-none-any.whl (21 kB)
Downloading properdocs-1.6.7-py3-none-any.whl (225 kB)
Downloading pygments-2.19.2-py3-none-any.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 10.5 MB/s eta 0:00:00
Downloading pymdown_extensions-10.21-py3-none-any.whl (268 kB)
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
Downloading pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (801 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 801.6/801.6 kB 9.1 MB/s eta 0:00:00
Downloading pyyaml_env_tag-1.1-py3-none-any.whl (4.7 kB)
Downloading selectolax-0.4.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (2.3 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3/2.3 MB 11.6 MB/s eta 0:00:00
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Downloading watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl (79 kB)
Downloading cairocffi-1.7.1-py3-none-any.whl (75 kB)
Downloading cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (219 kB)
Downloading cssselect2-0.9.0-py3-none-any.whl (15 kB)
Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
Downloading pycparser-3.0-py3-none-any.whl (48 kB)
Downloading tinycss2-1.5.1-py3-none-any.whl (28 kB)
Downloading webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
Installing collected packages: webencodings, paginate, watchdog, urllib3, tinycss2, smmap, six, selectolax, pyyaml, pygments, pycparser, platformdirs, pillow, pathspec, packaging, msgpack, mkdocs-material-extensions, mergedeep, markupsafe, markdown, idna, filelock, defusedxml, colorama, click, charset_normalizer, certifi, backrefs, babel, requests, pyyaml-env-tag, python-dateutil, pymdown-extensions, mkdocs-glightbox, mkdocs-get-deps, jinja2, gitdb, cssselect2, cffi, gitpython, ghp-import, cairocffi, CacheControl, properdocs, mkdocs, cairosvg, mkdocs-rss-plugin, mkdocs-redirects, mkdocs-material, mkdocs-git-revision-date-localized-plugin, mkdocs-callouts
Successfully installed CacheControl-0.14.4 babel-2.18.0 backrefs-6.2 cairocffi-1.7.1 cairosvg-2.9.0 certifi-2026.2.25 cffi-2.0.0 charset_normalizer-3.4.6 click-8.3.1 colorama-0.4.6 cssselect2-0.9.0 defusedxml-0.7.1 filelock-3.25.2 ghp-import-2.1.0 gitdb-4.0.12 gitpython-3.1.46 idna-3.11 jinja2-3.1.6 markdown-3.10.2 markupsafe-3.0.3 mergedeep-1.3.4 mkdocs-1.6.1 mkdocs-callouts-1.16.0 mkdocs-get-deps-0.2.2 mkdocs-git-revision-date-localized-plugin-1.5.1 mkdocs-glightbox-0.5.2 mkdocs-material-9.7.6 mkdocs-material-extensions-1.3.1 mkdocs-redirects-1.2.3 mkdocs-rss-plugin-1.17.9 msgpack-1.1.2 packaging-26.0 paginate-0.5.7 pathspec-1.0.4 pillow-12.1.1 platformdirs-4.9.4 properdocs-1.6.7 pycparser-3.0 pygments-2.19.2 pymdown-extensions-10.21 python-dateutil-2.9.0.post0 pyyaml-6.0.3 pyyaml-env-tag-1.1 requests-2.33.0 selectolax-0.4.7 six-1.17.0 smmap-5.0.3 tinycss2-1.5.1 urllib3-2.6.3 watchdog-6.0.0 webencodings-0.5.1
Mkdocs v2 warning when running Material for MkDocs
❯ make docs
-- MkDocs Local Server -------------------
source ~/.local/venv/bin/activate && mkdocs serve --dev-addr localhost:7777
│ ⚠ Warning from the Material for MkDocs team
│
│ MkDocs 2.0, the underlying framework of Material for MkDocs,
│ will introduce backward-incompatible changes, including:
│
│ × All plugins will stop working – the plugin system has been removed
│ × All theme overrides will break – the theming system has been rewritten
│ × No migration path exists – existing projects cannot be upgraded
│ × Closed contribution model – community members can't report bugs
│ × Currently unlicensed – unsuitable for production use
│
│ Our full analysis:
│
│ https://squidfunk.github.io/mkdocs-material/blog/2026/02/18/mkdocs-2.0/
Debian Linuxλ︎
One of my computers had Debian Linux installed before my post-install script was created. That computer was missing the openssh-sftp-server package, so I was unable to use sftp to connect to other computers to copy or move files.
I've added openssh-client, openssh-sftp-server and openssh-server to the list of post-install packages.
Once the sftp server package is installed, that service is added to the OpenSSH server. To be usable, the computer should be rebooted or the OpenSSH server service daemon restarted.
NOTE: before systemd, OpenSSH server would be a service that could be restarted with the command
sudo service sshd restart
GitHubλ︎
I received a notification from GitHub that a workflow would be disabled soon. GitHub automatically disables workflows after 80 days of inactivity on a repository.
Looking at the workflow history, it has always failed when run as a scheduled job. I updated the Full of Stars workflow to fix an issue with the incorrect GitHub account name being used.
Another email was a login alert stating there was a successful login from Kiev, Ukraine. This was not me, so initially I was concerned. I nearly clicked the link, but then thought how could there be a login to GitHub when there is 2-Factor authentication (and a decent password).
As I was reading the email on my mobile device, I switched to my Linux desktop so I could see the address of the link. It was obviously a face link as was the email address that had been used to send me the alert.
The fake email was reported for phishing to Google Mail team.
Starred Repositoriesλ︎
practicalli-johnny/omg-its-full-of-stars is a repository that shows which GitHub repositories my account has given a star too.
It uses stargazer project to automatically updates the README.md file with a table of stared repositories by the practicalli-johnny GitHub account.
I created a GitHub Workflow to automatically update the README.md file at 02:42 ever day, using the GitHub workflow schedule, defining a cron job.
Initially I tested the workflow manually, by including a workflow_dispatch trigger. This shows a Run workflow button when viewing the workflow (under Actions section of the website).
Unfortunatley the GitHub workflow script had a bug that I didnt spot.
The workflow script uses the rverst/stargazer action with variables, the github-user determining the GitHub user account to check for stars.
${{ github.actor }} was used to get the username of the person running the workflow. This returns practicalli-johnny when run manually via the Run workflow button, as its triggered by that user.
When the workflow is run from a schedule cron trigger, the ${{ github.actor }} value is github-actions.
When searching for github-actions as a user, the stargazer action fails and states the user is not recognised.
I could simply hard-code the value of github-user to the desired GitHub account name.
Looking through the GitHub Variables, the GITHUB_REPOSITORY_OWNER will return the GitHub user name of the owner of the repository, in this case practicalli-johnny.
The workflow was updated to use GITHUB_REPOSITORY_OWNER as the github-user value.
- name: Create star list
id: stargazer
uses: rverst/stargazer@v1.2.6
with:
# When run manually, github.actor variable will be the current user
# When run from cron, github.actor variable is `github-actions`
# github-user: ${{ github.actor }}
github-user: ${{ github.repository_owner }} # Extract current repo owner name
github-token: ${{ secrets.GITHUB_TOKEN }}
list-file: "README.md"
format: table
with-back-to-top: true
Another manual run of the workflow was carried out successfully.
I have to wait until tomorrow for the schedule to run to ensure this approach works with the GitHub schedule trigger.
Node.js 24 new default versionλ︎
GitHub action workflows will use Node.js from 26 April 2026.
I saw this notice as the ad-m/github-push-action@v1 action is using Node.js version 20 and when I ran the Full of Stars workflow, GitHub displayed a warning on the build.
The build did work, but I thought it prudent to see if I could fix the action or find an alternative.
stefanzweifel/git-auto-commit-action is a regularly maintained GitHub action and also simplifies the original GitHub workflow script.
The commented lines are replaced by a one-line call to git-auto-commit-action.
# This workflow builds a list of your starred repositories
name: Full Of Stars
on:
# Manually trigger workflow
workflow_dispatch:
# Daily schedule
schedule:
- cron: '42 2 * * *'
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v6
# Generate the list
- name: Create star list
id: stargazer
uses: rverst/stargazer@v1.2.6
with:
# When run manually, github.actor variable will be the current user
# When run from cron, github.actor variable is `github-actions`
# github-user: ${{ github.actor }}
github-user: ${{ github.repository_owner }} # Extract current repo owner name
github-token: ${{ secrets.GITHUB_TOKEN }}
list-file: "README.md"
format: table
with-back-to-top: true
# Commit the changes
# - name: Commit files
# run: |
# git config --local user.email "actions@noreply.github.com"
# git config --local user.name "github-actions[bot]"
# git add .
# git commit -m "Update list of starred repositories on GitHub"
# Push the changes
# - name: Push
# uses: ad-m/github-push-action@v1
# with:
# github_token: ${{ secrets.GITHUB_TOKEN }}
# branch: ${{ github.ref }}
# Commit all changed files back to the repository
- uses: stefanzweifel/git-auto-commit-action@v7
Using a manual trigger of the workflow, a new commit was pushed to the repository that successfully updated the README.md file with the latest star information.
Deprecation of Node 20 on GitHub Actions runners
Thank you.
