44e8755bfc9f56c90d9ec98ac9d9873c6578b0b1
initLLMUI() was returning early before registering the confirm/cancel listeners when hasWebGPU() was false, but task rendering happens after initLLMUI() so the How To buttons still appeared clickable. Moved the WebGPU gate into requestGuide() and the confirm handler so listeners are always registered and the user gets a clear error message instead.
Leagues Task Fixer
A static website for tracking Old School RuneScape Leagues task completion. Built with Zola.
Features
- 1592 tasks for the Demonic Pacts League, scraped from the OSRS Wiki
- Filter by difficulty, area, and completion status
- Search by task name or description
- Completion status persisted in browser
localStorage - Live countdown to league end
- Import task completions from a RuneLite JSON export
- Export completion state as JSON (compatible with tasks-tracker-plugin format)
Project Structure
OSRS-Task-Fixer/
├── scripts/
│ ├── scrape_tasks.py # Scrapes task data from the OSRS Wiki
│ └── requirements.txt
└── website/ # Zola site
├── config.toml # Site config (league name, end date)
├── content/
├── templates/
└── static/
├── data/tasks.json # Generated task data (committed)
├── css/style.css
└── js/tracker.js
Development
Prerequisites: Zola and Python 3.10+
# Serve locally with live reload
cd website
zola serve
# Build static output to website/public/
cd website
zola build
Updating Task Data
Re-run the scraper whenever task data changes on the wiki:
pip install -r scripts/requirements.txt
python scripts/scrape_tasks.py
The updated website/static/data/tasks.json can then be committed.
RuneLite Import
Export your task completions from RuneLite using either:
Then click Import RuneLite on the site and select the exported .json file.
Updating for a New League
- Update
league_nameandleague_end_dateinwebsite/config.toml - Re-run the scraper with the new league's wiki URL:
python scripts/scrape_tasks.py --url https://oldschool.runescape.wiki/w/<LeagueName>/Tasks - Commit the updated
tasks.json
License
GPL-3.0 — see LICENSE.
Languages
JavaScript
49.2%
CSS
28.9%
HTML
11.7%
Python
10.2%