Azrael's Mods Guides

Modwright

Requests: bugs and features

The ? button (top right, always visible) offers Keyboard shortcuts and Send a request, which opens a short form. Pick what the request is: Report a bug or Suggest a feature, then give a one-line summary and what part of the tool it is about (windows, uploading, or SteamCMD and login). The form adds your Modwright version, then opens a pre-filled new issue in Linear (team AZR) in your browser. Nothing is created until you press Create in Linear, and you can edit or delete anything first. Copy text instead copies the text. Only people signed in to the Linear workspace can create the issue, so if you share the program, change TeamKey / NewIssueUrl in RequestForm.cs to your own (or tell people to use Copy text instead and send it to you).

Sending requests from inside the app (maintainer setup)

Builds that carry a Linear key send requests straight from the app, with no browser or login. The key is baked in at build time and never committed:

  • GitHub builds (CI and releases) read the repository secrets LINEAR_CREATE_API_KEY (a Linear personal API key restricted to Create issues in one dedicated team) and LINEAR_TEAM_UUID (that team's ID).
  • Optional routing: the secrets PROJECTID (a Linear project ID) and LABELIDS (label IDs, separated by commas) pick the project and the labels every request gets. LABELMAP adds one label for the kind of request and one for the area, as Name=label ID pairs separated by commas, using the names Bug, Feature, UI, Upload and SteamCMD (any left out just add no label). Without these, requests go into the team alone.
  • Local builds read the same names from a git-ignored request.key file in the project folder, one NAME=value per line. Environment variables with those names win over the file.

If Linear refuses the project or labels, for example because one was removed, the request is filed into the team alone instead, so it is never lost.

To check the secrets after setting or rotating them, run Actions > Linear key check > Run workflow. It files one test request into the project exactly as the app would and fails if the key, team or routing is wrong; delete the test issue afterwards.

The key is stored masked, but anyone with the exe could still extract it. Keep its scope that narrow and revoke it if it is abused. A build without a key opens a pre-filled issue instead; the build log says which (Linear request key: baked in or none found).

From the README on GitHub.