mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-05-31 10:14:15 +00:00
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.
This commit is contained in:
parent
1f90d2a6ee
commit
b196f481a8
7 changed files with 366 additions and 94 deletions
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
|
|
@ -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
|
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||||
polar: # Replace with a single Polar username
|
polar: # Replace with a single Polar username
|
||||||
buy_me_a_coffee: mhsanaei
|
buy_me_a_coffee: mhsanaei
|
||||||
custom: https://nowpayments.io/donation/hsanaei
|
custom: https://donate.sanaei.dev/
|
||||||
|
|
|
||||||
141
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
141
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
|
|
@ -1,77 +1,164 @@
|
||||||
name: Bug report
|
name: Bug report
|
||||||
description: Create a report to help us improve
|
description: Report something that is broken or behaving unexpectedly
|
||||||
title: "Bug report"
|
title: "[Bug]: "
|
||||||
labels: ["bug"]
|
labels: ["bug", "needs triage"]
|
||||||
|
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
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
|
- type: textarea
|
||||||
id: what-happened
|
id: what-happened
|
||||||
attributes:
|
attributes:
|
||||||
label: Describe the bug
|
label: Describe the bug
|
||||||
description: A clear and concise description of what the bug is.
|
description: A clear and concise description of what went wrong.
|
||||||
placeholder: My problem is...
|
placeholder: When I … the panel does … but I expected it to …
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: how-repeat-problem
|
id: how-repeat-problem
|
||||||
attributes:
|
attributes:
|
||||||
label: How to repeat the problem?
|
label: How to reproduce the problem
|
||||||
description: Sequence of actions that allow you to reproduce the bug
|
description: Numbered steps starting from a clean state. The clearer the steps, the faster the fix.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
1. Open `Inbounds` page
|
1. Open the `Inbounds` page
|
||||||
2. ...
|
2. Create a new VLESS inbound with …
|
||||||
|
3. Click `Save`
|
||||||
|
4. Observe …
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: expected-action
|
id: expected-action
|
||||||
attributes:
|
attributes:
|
||||||
label: Expected action
|
label: Expected behavior
|
||||||
description: What's going to happen
|
placeholder: I expected the panel to …
|
||||||
placeholder: Must be...
|
|
||||||
validations:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: received-action
|
id: received-action
|
||||||
attributes:
|
attributes:
|
||||||
label: Received action
|
label: Actual behavior
|
||||||
description: What's really happening
|
placeholder: Instead, the panel …
|
||||||
placeholder: It's actually happening...
|
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:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: xui-version
|
id: xui-version
|
||||||
attributes:
|
attributes:
|
||||||
label: 3x-ui Version
|
label: 3x-ui version
|
||||||
description: Which version of 3x-ui are you using?
|
description: Shown at the top of the panel sidebar.
|
||||||
placeholder: 2.X.X
|
placeholder: 3.1.0
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
- type: input
|
- type: input
|
||||||
id: xray-version
|
id: xray-version
|
||||||
attributes:
|
attributes:
|
||||||
label: Xray-core Version
|
label: Xray-core version
|
||||||
description: Which version of Xray-core are you using?
|
description: Visible on the `Xray Settings` page.
|
||||||
placeholder: 2.X.X
|
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:
|
validations:
|
||||||
required: false
|
required: false
|
||||||
|
|
||||||
- type: checkboxes
|
- type: checkboxes
|
||||||
id: checklist
|
id: checklist
|
||||||
attributes:
|
attributes:
|
||||||
label: Checklist
|
label: Before submitting
|
||||||
description: Please check all the checkboxes
|
|
||||||
options:
|
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
|
required: true
|
||||||
- label: This bug report is new and no one has reported it before me.
|
|
||||||
required: true
|
|
||||||
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
|
|
@ -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.
|
||||||
141
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
141
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
|
|
@ -1,39 +1,102 @@
|
||||||
name: Feature request
|
name: Feature request
|
||||||
description: Suggest an idea for this project
|
description: Suggest an idea or improvement for 3x-ui
|
||||||
title: "Feature request"
|
title: "[Feature]: "
|
||||||
labels: ["enhancement"]
|
labels: ["enhancement", "needs triage"]
|
||||||
|
|
||||||
body:
|
body:
|
||||||
- type: textarea
|
- type: markdown
|
||||||
id: is-related-problem
|
attributes:
|
||||||
attributes:
|
value: |
|
||||||
label: Is your feature request related to a problem?
|
Thanks for taking the time to suggest a feature. Please **search
|
||||||
description: A clear and concise description of what the problem is.
|
[existing issues](../issues?q=is%3Aissue)** first — duplicates will be closed.
|
||||||
placeholder: I'm always frustrated when...
|
|
||||||
validations:
|
- type: textarea
|
||||||
required: true
|
id: is-related-problem
|
||||||
|
attributes:
|
||||||
- type: textarea
|
label: Is your feature request related to a problem?
|
||||||
id: solution
|
description: A clear and concise description of the problem you're hitting today.
|
||||||
attributes:
|
placeholder: I'm always frustrated when …
|
||||||
label: Describe the solution you'd like
|
validations:
|
||||||
description: A clear and concise description of what you want to happen.
|
required: true
|
||||||
validations:
|
|
||||||
required: true
|
- type: textarea
|
||||||
|
id: solution
|
||||||
- type: textarea
|
attributes:
|
||||||
id: alternatives
|
label: Describe the solution you'd like
|
||||||
attributes:
|
description: |
|
||||||
label: Describe alternatives you've considered
|
What should the panel do? Be specific — UI placement, API shape,
|
||||||
description: A clear and concise description of any alternative solutions or features you've considered.
|
config keys, expected behavior under edge cases.
|
||||||
validations:
|
placeholder: |
|
||||||
required: false
|
On the Inbounds page, add a button that …
|
||||||
|
The backend should expose a new endpoint at …
|
||||||
- type: checkboxes
|
validations:
|
||||||
id: checklist
|
required: true
|
||||||
attributes:
|
|
||||||
label: Checklist
|
- type: textarea
|
||||||
description: Please check all the checkboxes
|
id: alternatives
|
||||||
options:
|
attributes:
|
||||||
- label: This feature report is written entirely in English.
|
label: Alternatives you've considered
|
||||||
required: true
|
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
|
||||||
|
|
|
||||||
82
.github/ISSUE_TEMPLATE/question.yaml
vendored
82
.github/ISSUE_TEMPLATE/question.yaml
vendored
|
|
@ -1,22 +1,90 @@
|
||||||
name: Question
|
name: Question
|
||||||
description: Describe this issue template's purpose here.
|
description: Ask how to do something with 3x-ui
|
||||||
title: "Question"
|
title: "[Question]: "
|
||||||
labels: ["question"]
|
labels: ["question"]
|
||||||
|
|
||||||
body:
|
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
|
- type: textarea
|
||||||
id: question
|
id: question
|
||||||
attributes:
|
attributes:
|
||||||
label: Question
|
label: What are you trying to do?
|
||||||
placeholder: I have a question, ..., how can I solve it?
|
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:
|
validations:
|
||||||
required: true
|
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
|
- type: checkboxes
|
||||||
id: checklist
|
id: checklist
|
||||||
attributes:
|
attributes:
|
||||||
label: Checklist
|
label: Before submitting
|
||||||
description: Please check all the checkboxes
|
|
||||||
options:
|
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
|
required: true
|
||||||
|
|
|
||||||
63
.github/pull_request_template.md
vendored
Normal file
63
.github/pull_request_template.md
vendored
Normal file
|
|
@ -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.
|
||||||
20
.github/pull_request_template.yml
vendored
20
.github/pull_request_template.yml
vendored
|
|
@ -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. -->
|
|
||||||
Loading…
Reference in a new issue