diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 5f69a4d6..cc1f1f0e 100644 --- a/.github/FUNDING.yml +++ b/.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/ diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index 71431e8f..52843436 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.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 \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..7356cbc7 --- /dev/null +++ b/.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. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 7ffbad7a..0110f061 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.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 \ No newline at end of file +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 diff --git a/.github/ISSUE_TEMPLATE/question.yaml b/.github/ISSUE_TEMPLATE/question.yaml index 0021f6bd..b6021251 100644 --- a/.github/ISSUE_TEMPLATE/question.yaml +++ b/.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 diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 00000000..d4ae693a --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,63 @@ +## Summary + + + +## Why + + + +## 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? + + + +## Screenshots / recordings + + + +## 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. diff --git a/.github/pull_request_template.yml b/.github/pull_request_template.yml deleted file mode 100644 index c7eb8e78..00000000 --- a/.github/pull_request_template.yml +++ /dev/null @@ -1,20 +0,0 @@ -## What is the pull request? - - - -## Which part of the application is affected by the change? - -- [ ] Frontend -- [ ] Backend - -## Type of Changes - -- [ ] Bug fix -- [ ] New feature -- [ ] Refactoring -- [ ] Other - -## Screenshots - - - \ No newline at end of file