diff --git a/.github/workflows/star-history.yml b/.github/workflows/star-history.yml
new file mode 100644
index 00000000..2e976c3a
--- /dev/null
+++ b/.github/workflows/star-history.yml
@@ -0,0 +1,49 @@
+name: refresh star history
+
+# Regenerates docs/star-history.svg from the GitHub API and commits it when it
+# has actually changed.
+#
+# We self-host this chart rather than embedding star-history.com or
+# starchart.cc: the former refuses these repos outright ("GitHub restricted
+# starred-data access for openstrap/edge") and the latter rate-limits anonymous
+# callers, so both render as broken images some of the time. Self-hosting also
+# means the landing page makes no third-party request, which matters for a
+# project whose pitch is that your data stays on your device.
+
+on:
+ schedule:
+ - cron: '17 4 * * 1' # Mondays, 04:17 UTC — off the hour to dodge the rush
+ workflow_dispatch:
+
+# Unlike the test workflow, this one has to write: it commits the regenerated
+# SVG. Nothing else in it needs elevated access.
+permissions:
+ contents: write
+
+concurrency:
+ group: star-history
+ cancel-in-progress: false
+
+jobs:
+ refresh:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Regenerate the chart
+ env:
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ run: python3 tool/gen_star_history.py
+
+ - name: Commit if it changed
+ run: |
+ set -euo pipefail
+ if git diff --quiet -- docs/star-history.svg; then
+ echo "No change in star history — nothing to commit."
+ exit 0
+ fi
+ git config user.name "github-actions[bot]"
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
+ git add docs/star-history.svg
+ git commit -m "chore: refresh star history chart"
+ git push
diff --git a/README.md b/README.md
index b0a61526..5a64c2d4 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,9 @@ An app that makes a WHOOP 4.0 useful without a WHOOP subscription. Connects to t
[](LICENSE)
[](https://testflight.apple.com/join/2BVSwq65)
[](https://github.com/OpenStrap/edge/releases/latest)
+[](https://github.com/OpenStrap/edge/releases)
+[](https://github.com/OpenStrap/edge/stargazers)
+[](DONATE.md)
> Not affiliated with WHOOP. Not a clone of their app or their scores — see below.
@@ -24,6 +27,33 @@ band at a time.
Prefer to sideload the unsigned IPA instead of using TestFlight? That still
works — see [`guides/IOS_SIDELOAD.md`](guides/IOS_SIDELOAD.md).
+---
+
+
+
+### ☕ Like it? Help keep it going.
+
+**No subscription, no paywall, no company behind this.**
+If OpenStrap gave your band a second life, a small tip genuinely helps.
+
+**Bitcoin**
+
+`bc1qvtcch38dcwp967ar764uu6eetw7tf907844wfq`
+
+**EVM** — Ethereum · Base · Arbitrum · Optimism · Polygon
+
+`0x8310C89393366b7eBCD47ABa82e1dfB5ECeFFbD9`
+
+[**What donations actually pay for →**](DONATE.md)
+
+*Nothing is gated behind paying, and nothing ever will be.
+Bug reports from real bands are worth more than money — there's only one
+person's physiology in the test data otherwise.*
+
+
+
+---
+
## What made me build this app
My subscription lapsed and a perfectly good sensor turned into a bracelet. The hardware
@@ -197,9 +227,36 @@ implementing.
Security problems shouldn't go in a public issue — see [SECURITY.md](SECURITY.md) for
private reporting.
+## Contributors
+
+Every one of these people made the app better — mostly by using it on a real
+wrist and reporting what came out wrong.
+
+
+
+
+
+The most useful contribution isn't necessarily code. There's one person's
+physiology in the test data, so a bug report from a different body on a
+different band is worth a great deal — see
+[`CONTRIBUTING.md`](CONTRIBUTING.md).
+
+## Star history
+
+
+
+That cliff in mid-July is [Hackaday](https://hackaday.com/2026/07/15/making-a-locked-down-wearable-work-without-a-subscription/)
+and [Adafruit](https://blog.adafruit.com/2026/07/15/openstrap-edge-makes-a-whoop-4-0-band-useful-without-a-subscription)
+covering it on the same day.
+
+Generated from the GitHub API and refreshed weekly
+([workflow](.github/workflows/star-history.yml)) rather than embedded from
+star-history.com or starchart.cc — the first refuses these repos outright, the
+second rate-limits, and neither should be making a request from a page about
+keeping your data to yourself.
+
## Support the work
-Free, MIT, no company behind it. If it gave your band a second life:
-[**DONATE.md**](DONATE.md) has BTC and EVM addresses. Bug reports from real bands are
-worth more than money, though — there's only one person's physiology in the test data
-otherwise.
+Free, MIT, no company behind it. If it gave your band a second life,
+[**DONATE.md**](DONATE.md) has the BTC and EVM addresses and explains what they
+actually pay for. Bug reports from real bands are worth more than money, though.
diff --git a/docs/index.html b/docs/index.html
index 29c1fb39..831a443f 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -19,6 +19,7 @@
Edge
@@ -147,22 +148,47 @@
How it’s put together
-
-
Support the work
-
- Free, MIT licensed, no company behind it. Bug reports from real bands are worth
- more than money — but if you’d like to chip in:
-
-
-
BTC
-
bc1qvtcch38dcwp967ar764uu6eetw7tf907844wfq
-
EVM
-
0x8310C89393366b7eBCD47ABa82e1dfB5ECeFFbD9
-
+
+
Where it’s got to
+
- Nothing is gated behind paying, and nothing ever will be.
+ The cliff in mid-July is Hackaday and Adafruit covering it on the same day.
+ Chart generated from the GitHub API and served from this site, rather than
+ embedded from star-history.com or starchart.cc — there is no analytics or
+ third-party service on this page. (The screenshots above load from GitHub, which
+ also hosts it.)
+
+
+
+
☕ Like it? Help keep it going.
+
+ No subscription, no paywall, no company behind this. If OpenStrap gave your
+ band a second life, a small tip genuinely helps.
+
+ Tap an address to select it. What this actually pays for: the Apple Developer
+ membership that keeps the TestFlight build alive, a second band to get
+ WHOOP 5 support tested, and coffee.
+ More →
+
+
+ Nothing is gated behind paying, and nothing ever will be.
+ Bug reports from real bands are worth more than money — there’s only
+ one person’s physiology in the test data otherwise.
+