All four /api/gadgets/hotcat/* endpoints are gated by the requireAuth middleware, which on production wikis requires admin rights (sysop/bureaucrat/editinterface). However, only installation actually needs that: checking whether the gadget is installed reads two public MediaWiki: pages unauthenticated, the uncategorized-articles list is a public query, and the preference check reads the user's own options with their own OAuth token. As a result, a non-admin on a production wiki gets 403s on the whole task — even though the categorization steps themselves only edit articles.
Additionally, a non-admin who reaches the install step and clicks Install just gets a raw "Failed to install" error with no explanation.
Proposed fix: - Move the three read endpoints (/status, /preference, /uncategorized) to a logged-in-only check; keep the admin gate (with its test-wiki bypass) on POST /install, which MediaWiki enforces server-side anyway.
- In the install step, when the gadget isn't installed and the user can't install it, show a warning banner ("Administrator rights needed", suggesting they ask a wiki admin) and disable the Install button, mirroring the server's gate including the test-wiki bypass.
- (Same patch also replaces the step's 🧩/⚡ emoji with Codex icons — cdxIconPuzzle, cdxIconDownload — per the design-token adoption.)