ryan.mcgee 44e8755bfc Fix LLM confirm button doing nothing when WebGPU unavailable
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.
2026-05-26 10:58:31 -05:00
2026-05-26 13:21:23 +00:00

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

  1. Update league_name and league_end_date in website/config.toml
  2. Re-run the scraper with the new league's wiki URL:
    python scripts/scrape_tasks.py --url https://oldschool.runescape.wiki/w/<LeagueName>/Tasks
    
  3. Commit the updated tasks.json

License

GPL-3.0 — see LICENSE.

S
Description
No description provided
Readme AGPL-3.0
299 KiB
Languages
JavaScript 49.2%
CSS 28.9%
HTML 11.7%
Python 10.2%