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) andLINEAR_TEAM_UUID(that team's ID). - Optional routing: the secrets
PROJECTID(a Linear project ID) andLABELIDS(label IDs, separated by commas) pick the project and the labels every request gets.LABELMAPadds one label for the kind of request and one for the area, asName=label IDpairs separated by commas, using the namesBug,Feature,UI,UploadandSteamCMD(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.keyfile in the project folder, oneNAME=valueper 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.