-
Notifications
You must be signed in to change notification settings - Fork 0
Getting started
Pillbug is composed of 3 tabs: Config, Code, and Review. You can switch between tabs using the navbar on the top right.
Config is where you can log in, install nodepacks, and decide what pages you will edit, either by manually typing out a list, or by using the generator functionality.
Logging in / creating a BotPassword
Currently, Pillbug only supports BotPasswords as a login method, however OAuth is planned for future updates. To obtain a BotPassword, visit Special:BotPasswords on the MediaWiki instance you'll use Pillbug on. (Remember to also set the Wiki origin to that). For example, to create a BotPassword on English Wikipedia, I would go to https://en.wikipedia.org/wiki/Special:BotPasswords, type in a name in the "Create a new bot password" prompt, and give it the "High-volume (bot) access," "Edit existing pages," and optionally the "Edit protected pages" grants.

The page queue is the queue of pages to "work" on, i.e. the pages that will be processed by the code in the Code tab and be reviewed in the Review tab. It can either be manually created, or generated using the queue generator.
Queue generation relies on the Action API, and as such you need to be logged in. Results are capped at about 5,000 titles per generation; extra matches are truncated.
Pick one source with the radio on the left, fill its fields, optionally set Namespace, then press Generate. That replaces the current queue with the generated titles (you can still edit the textarea afterward and press Set queue).
Members of a category (title like Category:Example; Category: is added if missing).
- pages - normal pages in the category
- subcategories - subcategory pages. By default, even when filtered for the Category namespace, subcategories are excluded.
- files - file pages in the category. By default, even when filtered for the File namespace, files are excluded.
Select at least one of those types.
Pages that link to a given title.
- wikilinks - pages that link to the target, see also Help:Links
- transclusions - pages that transclude the target
-
file usage - pages that use the file (target is treated as
File:...if needed)
There is also redirect filtering.
- both - redirects and non-redirects
- redirects - only redirect pages
- non-redirects - only non-redirects
When using wikilinks, Include links to redirects controls whether to also follow through redirects of the target.
Titles starting with a given string.
-
Strict prefix search (on) - uses the all-pages list API for an exact prefix per selected namespace (good for precise searches, like
User:Example/). - Strict prefix search (off) - uses prefix search (more "search-box" style matching across the selected namespaces).
Outgoing wikilinks to existing pages from a page. Namespace filters which linked namespaces are kept.
Full wiki search. See the CirrusSearch help page.
The Namespace list filters queue generator results to the namespaces you select. Click to toggle; selected namespaces stay highlighted.
At the top of the queue generator is the process ahead? toggle. Pillbug will always fetch upcoming pages in the queue and run the skip graph, with process ahead? enabled, it will also run the process graph, meaning that reviewing edits will be slightly faster in some cases.
Nodepacks are installable bundles of graph nodes (extra building blocks for the Code tab), beyond Pillbug's defaults. Packs are typically installed once per browser; as they persist across reloads. After installing, switch to Code to place the new nodes in the process/skip graphs. If a pack fails to load, the Config column will show an error. A template nodepack is available here.
The Code tab holds two nodish graphs that run on each page from the page queue: the skip graph and the process graph. Both receive the same inputs for a page; they differ in what they return and when they run.
NodeViewer controls
| Input | Action |
|---|---|
Escape |
Close add-node menu, if open |
Escape |
Go up one composite level, if in a composite |
Escape |
Clear selection, if nodes are selected |
Escape |
Reset pan and zoom to default, if nothing else applies |
Ctrl+C / Cmd+C
|
Copy selected nodes (and wires between them) relative to cursor |
Ctrl+V / Cmd+V
|
Paste clipboard at cursor, preserving relative layout |
Delete / Backspace
|
Delete selected nodes (boundary Input/Output nodes are excluded) |
Keyboard shortcuts are ignored while focus is in an input, textarea, or select.
| Input | Action |
|---|---|
| Scroll wheel | Zoom in/out toward cursor (25%–200%) |
| Middle button + drag | Pan the canvas |
| Left click on empty canvas | Clear selection and close add-node menu |
| Left drag on empty canvas | Marquee (box) select nodes |
| Right click on empty canvas | Open add-node menu at cursor |
| Right drag | Slice/cut wires crossed by the drag path |
| Input | Action |
|---|---|
| Left click on node body | Select node |
Shift + left click on node |
Add/remove node from selection |
| Left click on node in a multi-selection | Keep group selected (for dragging) |
| Left drag on node header | Move selected node(s) |
| Double-click composite node header | Go into composite |
| Left drag on port socket | Start a wire; release on a compatible port to connect |
| Input | Action |
|---|---|
| Type in search | Filter node types |
↑ / ↓
|
Move highlight in list |
Enter |
Add highlighted node at menu position |
Escape |
Close menu |
| Input | Action |
|---|---|
| Up button | Go up one level (esc also works) |
Shared inputs:
| Port | Type | Notes |
|---|---|---|
| Title | title | The page's title - note that this is not a string, and thus may need to be converted to one using the "Title to String" node. |
| Content | string | The current page's wikitext. |
When reviewing, Pillbug evaluates pages in this order:
- Skip graph - if it decides to skip, the process graph is not run for that page.
- Process graph - otherwise, transform the wikitext and (if it actually changed) show the edit in Review.
| Port | Type | Notes |
|---|---|---|
| Skip | boolean | Whether to skip or not. |
| The Skip graph is entirely optional; however with complicated process graphs, it can significantly speed up reviewing. Most of the filtering should already have been done during queue generation, however for hard-to-filter-for edge cases, e.g. if an article uses a template but not the specific parameter needing to be replaced, the skip graph will be useful. |
If Skip is true, processing for that page will be aborted, removing it from the queue and logging it as skipped. Errors in the skip graph (node failures, type errors, etc.) are treated as a hard failure for that page: the page is dropped from the queue and an error is surfaced (prefixed like Skip graph: …). They are not shown as a normal "skip."
| Port | Type | Notes |
|---|---|---|
| ContentAfter | string | The contents of the page, presumably after modifications. |
The process graph is the edit itself, building a new wikitext string from the title and current content. After a run:
| Result | Behavior |
|---|---|
ContentAfter equals Content |
No-op. Treated like an automatic skip for queue purposes (no review UI for that page). |
ContentAfter differs |
The page is offered in Review as a diff (before = Content, after = ContentAfter) for Save / Skip / etc. |
ContentAfter missing or not a string |
Error: Process graph did not return ContentAfter string - page dropped from the queue in a batch, same class of failure as other graph errors. |
| Node / runtime errors | Prefixed Process graph: ...; page dropped from the queue in a batch. |
Wire the graph so a string always reaches ContentAfter on paths you care about. An empty or incomplete graph that never produces ContentAfter will error rather than "do nothing."