Extracts information from parkrun event result pages for inclusion in reports.
It is not a run report generator, but it helps you write a weekly parkrun event report — milestones, first-timers, personal bests, volunteers, and community facts — as soon as the results page loads.
I wrote it while volunteering as a Run Director at Brimbank parkrun, to celebrate our community on the Facebook page, and shared it so other events can use it too. Install it as a browser extension, or use the userscript or bookmarklet (including on Safari / iOS).
- Install Eventuate from Firefox Add-ons, the Chrome Web Store, or Edge Add-ons (Safari and iOS: use the userscript or bookmarklet instead).
- Open a parkrun latest results page, for example https://www.parkrun.com.au/timboon/results/latestresults/.
- Read the Eventuate summary inserted above the results table — ready to paste into your event report. Drafts use given names only, keeping reports simple.
Eventuate detects your browser language (English and German today) and lets you switch with the flag buttons on the output. Preference is remembered across sessions.
- Project site and install options: https://www.johnsy.com/eventuate/
- Bugs and questions: GitHub Issues
Maintained by Pete Johns (@johnsyweb).
Maintained. Started as a personal afternoon project for Brimbank parkrun, then
grown with TypeScript, tests, and automated releases. Current version is in
package.json; history is in CHANGELOG.md.
This project uses mise for tools and tasks, and aube for Node dependencies (paranoid mode).
curl https://mise.run | sh # if you do not already have mise
mise install # tools from mise.toml
mise trust # first time only
mise run setup # install dependencies
mise run test # lint + unit tests
mise tasks # list available tasksGit hooks are managed by hk and installed with
mise install. Bypass for one command with HK=0 git commit.
Useful tasks:
| Task | Description |
|---|---|
mise run build |
Extension, userscript, and bookmarklet |
mise run watch |
Rebuild bundles while developing |
mise run server |
Run the extension in Firefox |
mise run package |
Package Firefox and Chromium zips |
mise run docs:serve |
Jekyll docs at localhost:4000/eventuate/ |
mise run cibuild |
Full CI checks locally (lint, tests, build, audit, Lighthouse) |
mise run build writes artefacts that are not checked into git:
- Userscript:
docs/eventuate.user.js - Bookmarklet:
docs/bookmarklet/index.md
CI publishes those on GitHub Pages and GitHub Releases.
Tool versions live only in mise.toml. Dependency security
overrides and build-script approvals live in
aube-workspace.yaml.
Load a temporary add-on from source: open
about:debugging#/runtime/this-firefox in Firefox, choose Load Temporary
Add-on…, and select manifest.json from this repo.
Bug reports and pull requests are welcome on GitHub. See
CONTRIBUTING.md for semantic commit conventions. To add a
language, copy src/translations/en.ts, translate it, register it in
src/translations/index.ts, and open a PR (use Australian English spelling in
English strings).
Everyone interacting in this project is expected to follow the code of conduct.
Releases are automated with semantic-release on pushes to
main. The pipeline analyses commits, updates CHANGELOG.md, creates a GitHub
release, attaches Firefox and Chromium zips plus the userscript and bookmarklet
page, then publishes to AMO, the Chrome Web Store, and Edge
Add-ons in parallel (one store failing does not block the others). Store
listing screenshots stay manual.
To re-publish the latest (or a chosen) GitHub Release to any store: Actions →
Publish stores → Run workflow, pick amo / chrome / edge / all, and
optionally a version tag.
Chrome Web Store credentials (service account JSON + publisher ID):
./script/setup-chrome-webstore-auth.shEdge Add-ons credentials (Partner Center product GUID + Publish API key):
./script/setup-edge-addons-auth.shEdge API keys expire after about 72 days (Microsoft offers no programmatic renewal). The wizard records the expiry date; a weekly workflow opens a GitHub issue when rotation is due — re-run the wizard to roll the key.
Dry-run locally:
GITHUB_TOKEN=your-token mise run release:dry-runVersion bumps follow conventional commits: fix: → patch, feat: → minor,
BREAKING CHANGE: → major.
See .github/SECURITY.md for how to report
vulnerabilities. Package management uses aube with
paranoid settings in aube-workspace.yaml. Automated
updates use Renovate via
johnsyweb/renovate-config;
membership is managed in
johnsyweb/github-infra. See
ADR 0002. For a local
within-range bump: mise run update-deps. Renovate PRs are verified by
aube-lock (./script/cibuild); human PRs use the parallel CI/CD jobs.
mise run cibuild includes ./script/audit.
Available under the MIT License.
