Size a parkrun finish funnel so Finish Tokens can be handed out in order during busy finish periods.
Visit johnsy.com/finish-funnel/ or install the userscript directly:
npm run build:userscriptInstall dist/finish-funnel.user.js in Tampermonkey, Userscripts, or Violentmonkey.
On a parkrun event results page, click Analyse finish funnel to inject the Finish Funnel panel and Finish funnel column.
Requires mise with aube and hk (see mise.toml).
mise run setup
aube run dev # landing page at http://localhost:5173
aube run build # landing page + userscript bundle for deploy
aube run build:userscript
aube test
mise run checkGit hooks are managed by hk; mise run setup runs hk install --mise.
The web build is a static landing page at johnsy.com/finish-funnel/ with install instructions, beta status, and privacy information — styled like the parkrun Userscripts microsite. Install URL:
https://raw.githubusercontent.com/johnsyweb/finish-funnel/refs/heads/main/finish-funnel.user.js
Regenerate the reference screenshot after UI changes (requires a local build first):
aube run build:userscript
aube run screenshotBundled results fixtures in public/fixtures/ support tests and can be regenerated with aube run build:fixtures after fetching results HTML from parkrun.
- Finisher arrivals from published times (per-second, spread within each second)
- Unknown finishers estimated from neighbours
- Discrete token handover (default 15 tokens/min active volunteer); Finish Tokens volunteers rotate on token supply batch exhaustion
- Site constraints drive model recommendation; Layout pre-filled for simulation and manual tweaks
- Multi-lane layout, queue depth chart, batch markers, and per-finisher queue detail in the Finish funnel column
See CONTEXT.md for domain language.
GitHub Actions runs lint, typecheck, format check, tests, and build on every push and pull request to main. Merges to main also:
- deploy the landing page (
dist/) to GitHub Pages at/finish-funnel/ - sync
finish-funnel.user.jsto the repository root for raw GitHub install URLs
Enable GitHub Pages in the repository settings (source: GitHub Actions). Point www.johnsy.com/finish-funnel/ at the Pages deployment when ready.