Просмотр исходного кода

chore(github): overhaul issue and PR templates

Bug, feature, and question templates now collect the triage signal the
maintainers usually have to ask for (install method, OS, area, reverse
proxy, logs, version). config.yml disables blank issues and points to
Wiki / existing issues / latest release from the picker.

PR template adds Summary/Why/Type/Areas/Testing/Breaking-changes
sections and a fuller checklist (build, tests, lint, typecheck, docs).
Renamed pull_request_template.yml -> .md to match GitHub's conventional
extension; the old .yml was being read as markdown anyway.
MHSanaei 9 часов назад
Родитель
Сommit
b196f481a8

+ 1 - 1
.github/FUNDING.yml

@@ -11,4 +11,4 @@ issuehunt: # Replace with a single IssueHunt username
 lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
 polar: # Replace with a single Polar username
 buy_me_a_coffee: mhsanaei
-custom: https://nowpayments.io/donation/hsanaei
+custom: https://donate.sanaei.dev/

+ 114 - 27
.github/ISSUE_TEMPLATE/bug_report.yaml

@@ -1,77 +1,164 @@
 name: Bug report
-description: Create a report to help us improve
-title: "Bug report"
-labels: ["bug"]
+description: Report something that is broken or behaving unexpectedly
+title: "[Bug]: "
+labels: ["bug", "needs triage"]
 
 body:
   - type: markdown
     attributes:
       value: |
-        Thank you for reporting a bug! Please fill out the following information.
+        Thanks for taking the time to file a bug. A complete report helps us
+        reproduce and fix it quickly. Please **search [existing issues](../issues?q=is%3Aissue)**
+        before opening a new one — duplicates will be closed.
 
   - type: textarea
     id: what-happened
     attributes:
       label: Describe the bug
-      description: A clear and concise description of what the bug is.
-      placeholder: My problem is...
+      description: A clear and concise description of what went wrong.
+      placeholder: When I … the panel does … but I expected it to …
     validations:
       required: true
 
   - type: textarea
     id: how-repeat-problem
     attributes:
-      label: How to repeat the problem?
-      description: Sequence of actions that allow you to reproduce the bug
+      label: How to reproduce the problem
+      description: Numbered steps starting from a clean state. The clearer the steps, the faster the fix.
       placeholder: |
-        1. Open `Inbounds` page
-        2. ...
+        1. Open the `Inbounds` page
+        2. Create a new VLESS inbound with …
+        3. Click `Save`
+        4. Observe …
     validations:
       required: true
 
   - type: textarea
     id: expected-action
     attributes:
-      label: Expected action
-      description: What's going to happen
-      placeholder: Must be...
+      label: Expected behavior
+      placeholder: I expected the panel to …
     validations:
       required: false
 
   - type: textarea
     id: received-action
     attributes:
-      label: Received action
-      description: What's really happening
-      placeholder: It's actually happening...
+      label: Actual behavior
+      placeholder: Instead, the panel …
+    validations:
+      required: false
+
+  - type: textarea
+    id: logs
+    attributes:
+      label: Relevant logs
+      description: |
+        Panel logs (`journalctl -u x-ui -n 200`) and/or the browser DevTools
+        console output. **Redact** tokens, real domains, IPs, and client UUIDs.
+      render: shell
+    validations:
+      required: false
+
+  - type: textarea
+    id: screenshots
+    attributes:
+      label: Screenshots
+      description: Drag images directly into this field. Redact any sensitive data.
     validations:
       required: false
 
   - type: input
     id: xui-version
     attributes:
-      label: 3x-ui Version
-      description: Which version of 3x-ui are you using?
-      placeholder: 2.X.X
+      label: 3x-ui version
+      description: Shown at the top of the panel sidebar.
+      placeholder: 3.1.0
     validations:
       required: true
 
   - type: input
     id: xray-version
     attributes:
-      label: Xray-core Version
-      description: Which version of Xray-core are you using?
-      placeholder: 2.X.X
+      label: Xray-core version
+      description: Visible on the `Xray Settings` page.
+      placeholder: 25.x.x
+    validations:
+      required: false
+
+  - type: dropdown
+    id: install-method
+    attributes:
+      label: How did you install 3x-ui?
+      options:
+        - install.sh script
+        - Docker / Docker Compose
+        - Manual build from source
+        - Other (please describe in the bug body)
+    validations:
+      required: true
+
+  - type: input
+    id: os
+    attributes:
+      label: Operating system
+      description: Distribution and version.
+      placeholder: Ubuntu 24.04 / Debian 12 / CentOS Stream 9 …
+    validations:
+      required: true
+
+  - type: dropdown
+    id: area
+    attributes:
+      label: Which parts of the panel are affected?
+      multiple: true
+      options:
+        - Frontend (UI / panel pages)
+        - Backend (API endpoints, login, settings)
+        - Xray config generation
+        - Subscription (share links / Clash / JSON)
+        - Statistics / traffic counters
+        - Database / migrations
+        - Install / upgrade script
+        - Docker image
+        - Multi-node (sub-nodes)
+        - Telegram bot
+        - Other
+    validations:
+      required: false
+
+  - type: input
+    id: browser
+    attributes:
+      label: Browser (only if it is a UI bug)
+      placeholder: Chrome 132 / Firefox 134 / Safari 18 / mobile Chrome …
+    validations:
+      required: false
+
+  - type: dropdown
+    id: reverse-proxy
+    attributes:
+      label: Is the panel behind a reverse proxy or CDN?
+      options:
+        - "No — direct access"
+        - "Yes — Nginx"
+        - "Yes — Caddy"
+        - "Yes — Cloudflare (proxied DNS)"
+        - "Yes — Cloudflare Tunnel"
+        - "Yes — other"
     validations:
       required: false
 
   - type: checkboxes
     id: checklist
     attributes:
-      label: Checklist
-      description: Please check all the checkboxes
+      label: Before submitting
       options:
-        - label: This bug report is written entirely in English.
+        - label: I searched [existing issues](../issues?q=is%3Aissue) and this bug has not been reported.
+          required: true
+        - label: I am running the latest released version of 3x-ui (or have verified the bug still exists on it).
+          required: true
+        - label: This bug report is written in English.
+          required: true
+        - label: I have redacted any sensitive data (tokens, real domains, client UUIDs).
           required: true
-        - label: This bug report is new and no one has reported it before me.
-          required: true

+ 11 - 0
.github/ISSUE_TEMPLATE/config.yml

@@ -0,0 +1,11 @@
+blank_issues_enabled: false
+contact_links:
+  - name: 📖 Project Wiki
+    url: https://github.com/MHSanaei/3x-ui/wiki
+    about: Setup, install, configuration, and "how do I…" guides live here. Please check before opening a question.
+  - name: 🔍 Search existing issues
+    url: https://github.com/MHSanaei/3x-ui/issues?q=is%3Aissue
+    about: Your bug, feature, or question may already be tracked. Comment on the existing one rather than opening a duplicate.
+  - name: 🚀 Latest release
+    url: https://github.com/MHSanaei/3x-ui/releases/latest
+    about: Reproduce on the latest version before reporting — many bugs are already fixed in the most recent release.

+ 102 - 39
.github/ISSUE_TEMPLATE/feature_request.yaml

@@ -1,39 +1,102 @@
-name: Feature request
-description: Suggest an idea for this project
-title: "Feature request"
-labels: ["enhancement"]
-
-body:
-  - type: textarea
-    id: is-related-problem
-    attributes:
-      label: Is your feature request related to a problem?
-      description: A clear and concise description of what the problem is.
-      placeholder: I'm always frustrated when...
-    validations:
-      required: true
-
-  - type: textarea
-    id: solution
-    attributes:
-      label: Describe the solution you'd like
-      description: A clear and concise description of what you want to happen.
-    validations:
-      required: true
-
-  - type: textarea
-    id: alternatives
-    attributes:
-      label: Describe alternatives you've considered
-      description: A clear and concise description of any alternative solutions or features you've considered.
-    validations:
-      required: false
-
-  - type: checkboxes
-    id: checklist
-    attributes:
-      label: Checklist
-      description: Please check all the checkboxes
-      options:
-        - label: This feature report is written entirely in English.
-          required: true
+name: Feature request
+description: Suggest an idea or improvement for 3x-ui
+title: "[Feature]: "
+labels: ["enhancement", "needs triage"]
+
+body:
+  - type: markdown
+    attributes:
+      value: |
+        Thanks for taking the time to suggest a feature. Please **search
+        [existing issues](../issues?q=is%3Aissue)** first — duplicates will be closed.
+
+  - type: textarea
+    id: is-related-problem
+    attributes:
+      label: Is your feature request related to a problem?
+      description: A clear and concise description of the problem you're hitting today.
+      placeholder: I'm always frustrated when …
+    validations:
+      required: true
+
+  - type: textarea
+    id: solution
+    attributes:
+      label: Describe the solution you'd like
+      description: |
+        What should the panel do? Be specific — UI placement, API shape,
+        config keys, expected behavior under edge cases.
+      placeholder: |
+        On the Inbounds page, add a button that …
+        The backend should expose a new endpoint at …
+    validations:
+      required: true
+
+  - type: textarea
+    id: alternatives
+    attributes:
+      label: Alternatives you've considered
+      description: Other ways you tried to solve this, and why they fell short.
+    validations:
+      required: false
+
+  - type: textarea
+    id: use-case
+    attributes:
+      label: Concrete use case
+      description: |
+        Walk us through a real scenario where this feature would help.
+        Numbers help (e.g. "I manage 200 clients across 5 inbounds and …").
+    validations:
+      required: false
+
+  - type: textarea
+    id: mockup
+    attributes:
+      label: Mockups, screenshots, or examples
+      description: |
+        Drag images, paste config snippets, or link to similar features in
+        other tools. Helps us understand the shape of the request.
+    validations:
+      required: false
+
+  - type: dropdown
+    id: area
+    attributes:
+      label: Which parts of the panel would this affect?
+      multiple: true
+      options:
+        - Frontend (UI / panel pages)
+        - Backend (API endpoints, login, settings)
+        - Xray config generation
+        - Subscription (share links / Clash / JSON)
+        - Statistics / traffic counters
+        - Database / migrations
+        - Install / upgrade script
+        - Docker image
+        - Multi-node (sub-nodes)
+        - Telegram bot
+        - Other
+    validations:
+      required: false
+
+  - type: checkboxes
+    id: contribution
+    attributes:
+      label: Are you willing to help?
+      description: Optional — but maintainers prioritize requests with community help.
+      options:
+        - label: I'd like to implement this feature myself and open a PR.
+          required: false
+        - label: I can help test once a PR is open.
+          required: false
+
+  - type: checkboxes
+    id: checklist
+    attributes:
+      label: Before submitting
+      options:
+        - label: I searched [existing issues](../issues?q=is%3Aissue) and this feature has not been requested.
+          required: true
+        - label: This feature request is written in English.
+          required: true

+ 75 - 7
.github/ISSUE_TEMPLATE/question.yaml

@@ -1,22 +1,90 @@
 name: Question
-description: Describe this issue template's purpose here.
-title: "Question"
+description: Ask how to do something with 3x-ui
+title: "[Question]: "
 labels: ["question"]
 
 body:
+  - type: markdown
+    attributes:
+      value: |
+        Before opening a question, please:
+
+        - Read the [project Wiki](https://github.com/MHSanaei/3x-ui/wiki) —
+          most setup, install, and "how do I …" answers live there.
+        - Search [existing issues](../issues?q=is%3Aissue) — the question
+          may already have been asked.
+
+        Use this template only when you have a usage question that the docs
+        and previous issues don't answer. If you found something **broken**,
+        open a Bug report instead.
+
   - type: textarea
     id: question
     attributes:
-      label: Question
-      placeholder: I have a question, ..., how can I solve it?
+      label: What are you trying to do?
+      description: Describe the goal, not just the symptom. The clearer the goal, the better the answer.
+      placeholder: |
+        I'm trying to … so that …
+        I expected the panel to … but I'm not sure how to configure it.
+    validations:
+      required: true
+
+  - type: textarea
+    id: tried
+    attributes:
+      label: What have you already tried?
+      description: Pages of the Wiki you read, settings you toggled, commands you ran.
+      placeholder: |
+        - Read the `Reverse Proxy` page of the Wiki
+        - Tried setting `xrayBasePath` to `/proxy` — got 404
+    validations:
+      required: false
+
+  - type: input
+    id: xui-version
+    attributes:
+      label: 3x-ui version
+      description: Shown at the top of the panel sidebar.
+      placeholder: 3.1.0
+    validations:
+      required: true
+
+  - type: dropdown
+    id: install-method
+    attributes:
+      label: How did you install 3x-ui?
+      options:
+        - install.sh script
+        - Docker / Docker Compose
+        - Manual build from source
+        - Other
     validations:
       required: true
 
+  - type: input
+    id: os
+    attributes:
+      label: Operating system
+      placeholder: Ubuntu 24.04 / Debian 12 / CentOS Stream 9 …
+    validations:
+      required: false
+
+  - type: textarea
+    id: screenshots
+    attributes:
+      label: Screenshots or config snippets
+      description: Drag images or paste relevant config. Redact tokens, real domains, client UUIDs.
+    validations:
+      required: false
+
   - type: checkboxes
     id: checklist
     attributes:
-      label: Checklist
-      description: Please check all the checkboxes
+      label: Before submitting
       options:
-        - label: This question is written entirely in English.
+        - label: I read the [Wiki](https://github.com/MHSanaei/3x-ui/wiki) and searched [existing issues](../issues?q=is%3Aissue).
+          required: true
+        - label: This is a usage question, not a bug report.
+          required: true
+        - label: This question is written in English.
           required: true

+ 63 - 0
.github/pull_request_template.md

@@ -0,0 +1,63 @@
+## Summary
+
+<!-- What does this PR do? One or two sentences. -->
+
+## Why
+
+<!--
+What problem does this solve, or what use case does it enable?
+Link related issues here: "Closes #123", "Refs #456".
+-->
+
+## Type of change
+
+- [ ] Bug fix
+- [ ] New feature
+- [ ] Refactoring (no behavior change)
+- [ ] Documentation
+- [ ] Tests only
+- [ ] Build / CI / tooling
+- [ ] Other
+
+## Areas affected
+
+- [ ] Frontend (UI / panel pages)
+- [ ] Backend (API endpoints, login, settings)
+- [ ] Xray config generation
+- [ ] Subscription (share links / Clash / JSON)
+- [ ] Statistics / traffic counters
+- [ ] Database / migrations
+- [ ] Install / upgrade script
+- [ ] Docker image
+- [ ] Multi-node (sub-nodes)
+- [ ] Telegram bot
+
+## How was this tested?
+
+<!--
+Concrete steps the reviewer can repeat. For UI changes: which page,
+which actions, which browser. For backend: which endpoint, which payload,
+which response. Mention any new unit/integration tests added.
+-->
+
+## Screenshots / recordings
+
+<!-- Required for UI changes. Drag images or GIFs here. Remove if N/A. -->
+
+## Breaking changes
+
+<!--
+Does this change require existing users to update their config, run a
+migration, or change their API calls? If yes, describe the migration path.
+Write "None" if there are no breaking changes.
+-->
+
+## Checklist
+
+- [ ] I tested the change locally and confirmed the described behavior.
+- [ ] I added or updated tests for the new behavior (when applicable).
+- [ ] `go build ./...` and the test suite pass locally.
+- [ ] For frontend changes: `npm run lint`, `npm run typecheck`, and `npm run build` pass.
+- [ ] I updated the Wiki / README / API docs if user-facing behavior changed.
+- [ ] My commits follow the project's existing message style.
+- [ ] I have no unrelated changes mixed into this PR.

+ 0 - 20
.github/pull_request_template.yml

@@ -1,20 +0,0 @@
-## What is the pull request?
-
-<!-- Briefly describe the changes introduced by this pull request -->
-
-## Which part of the application is affected by the change?
-
-- [ ] Frontend
-- [ ] Backend
-
-## Type of Changes
-
-- [ ] Bug fix
-- [ ] New feature
-- [ ] Refactoring
-- [ ] Other
-
-## Screenshots
-
-<!-- Add screenshots to illustrate the changes -->
-<!-- Remove this section if it is not applicable. -->