From e0bc66c167df535b688e7f62e9023ec15b3e4f0b Mon Sep 17 00:00:00 2001 From: tapframe <85391825+tapframe@users.noreply.github.com> Date: Fri, 6 Mar 2026 20:56:45 +0530 Subject: [PATCH] added Issue and PR templates --- .github/ISSUE_TEMPLATE/bug_report.yml | 217 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 8 + .github/ISSUE_TEMPLATE/feature_request.yml | 78 ++++++++ .github/PULL_REQUEST_TEMPLATE.md | 43 ++++ CONTRIBUTING.md | 80 ++++++++ 5 files changed, 426 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 00000000..b33a6b5f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,217 @@ +name: Bug report +description: Report a reproducible bug (one per issue). +title: "[Bug]: " +labels: + - bug +body: + - type: markdown + attributes: + value: | + Thanks for reporting a bug. + + If we can reproduce it, we can usually fix it. This form is just to get the basics in one place. + + - type: markdown + attributes: + value: | + ## Quick checks + + - type: checkboxes + id: checks + attributes: + label: Pre-flight checks + options: + - label: I searched existing issues and this is not a duplicate. + required: true + - label: I can reproduce this on the latest release or latest main build. + required: false + - label: This issue is limited to a single bug (not multiple unrelated problems). + required: true + + - type: markdown + attributes: + value: | + ## Version & device + + - type: input + id: app_version + attributes: + label: App version / OTA update ID + description: Release version, commit hash, or OTA update ID. You can find your OTA update ID in Settings > App updates > Current version (hold to copy). + placeholder: "e.g. 1.2.3, main@abc1234, or an OTA ID" + validations: + required: true + + - type: dropdown + id: install_method + attributes: + label: Install method + options: + - GitHub Release APK / IPA + - Expo Go + - Built from source + - Other (please describe below) + validations: + required: true + + - type: dropdown + id: platform + attributes: + label: Platform + options: + - Android phone/tablet + - iOS (iPhone/iPad) + - Android emulator + - iOS Simulator + - Other (please describe below) + validations: + required: true + + - type: input + id: device_model + attributes: + label: Device model + description: "Example: iPhone 15 Pro, Pixel 8, Galaxy S23 Ultra, iPad Pro, etc." + placeholder: "e.g. iPhone 15 Pro" + validations: + required: true + + - type: input + id: os_version + attributes: + label: OS version + placeholder: "e.g. Android 14, iOS 17.2" + validations: + required: true + + - type: dropdown + id: player_mode + attributes: + label: Player mode + description: If you are using an external player, most playback issues must be reported to that player instead. + options: + - Internal player (iOS: KSPlayer) + - Internal player (Android: ExoPlayer) + - Internal player (Android: MPV) + - External player + - Ask every time + - Not sure + validations: + required: true + + - type: markdown + attributes: + value: | + ## What happened? + + - type: dropdown + id: area + attributes: + label: Area (tag) + description: Pick the closest match. It helps triage. + options: + - Playback (start/stop/buffering) + - Streams / Sources (selection, loading, errors) + - Next Episode / Auto-play + - Watch Progress (resume, watched state, history) + - Subtitles (styling, sync) + - Audio tracks + - UI / Layout / Animations + - Settings + - Sync (Trakt / SIMKL / remote) + - Downloads + - Other + validations: + required: true + + - type: textarea + id: steps + attributes: + label: Steps to reproduce + description: Exact steps. If it depends on specific content, describe it (movie/series, season/episode, source/addon name) without sharing private links. + placeholder: | + 1. Open ... + 2. Navigate to ... + 3. Press ... + 4. Observe ... + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected behavior + placeholder: "What you expected to happen." + validations: + required: true + + - type: textarea + id: actual + attributes: + label: Actual behavior + placeholder: "What actually happened (include any on-screen error text/codes)." + validations: + required: true + + - type: dropdown + id: frequency + attributes: + label: Frequency + options: + - Always + - Often (more than 50%) + - Sometimes + - Rarely + - Once + validations: + required: true + + - type: dropdown + id: regression + attributes: + label: Did this work before? + options: + - Not sure + - Yes, it used to work + - No, it never worked + validations: + required: true + + - type: markdown + attributes: + value: | + ## Extra context (optional) + + - type: textarea + id: media_details + attributes: + label: Media details (optional) + description: Only include what you can safely share. + placeholder: | + - Content type: series/movie + - Season/Episode: S1E2 + - Stream/source: (addon name / source label) + - Video format: (if known) + validations: + required: false + + - type: textarea + id: logs + attributes: + label: Logs (optional but helpful) + description: | + Not required, but super helpful for playback/crash issues. + If you can, include a short snippet from Metro bundler, Xcode, or `adb logcat`. + render: shell + placeholder: | + adb logcat -d | tail -n 300 + validations: + required: false + + - type: textarea + id: extra + attributes: + label: Anything else? (optional) + description: Screenshots/recordings, related issues, workarounds, etc. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 00000000..80724f85 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Downloads / Releases + url: https://github.com/tapframe/NuvioMobile/releases + about: Grab the latest GitHub Release APK/IPA here. + - name: Documentation + url: https://github.com/tapframe/NuvioMobile/blob/main/README.md + about: Read the README for setup and usage details. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 00000000..e359e5bb --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,78 @@ +name: Feature request +description: Suggest an improvement or new feature. +title: "[Feature]: " +labels: + - enhancement +body: + - type: markdown + attributes: + value: | + One feature request per issue, please. The more real-world your use case is, the easier it is to evaluate. + + Feature requests are reviewed as product proposals first. + Please do not open a pull request for a new feature, major UX change, or broad cosmetic update unless a maintainer has explicitly approved it first. + Unapproved feature PRs will usually be closed. + + - type: dropdown + id: area + attributes: + label: Area (tag) + options: + - Playback + - Streams / Sources + - Next Episode / Auto-play + - Watch Progress + - Subtitles + - Audio + - UI / Layout / Animations + - Settings + - Sync (Trakt / SIMKL / remote) + - Downloads + - Other + validations: + required: true + + - type: textarea + id: problem + attributes: + label: Problem statement + description: What problem are you trying to solve? + placeholder: "I want to be able to..." + validations: + required: true + + - type: textarea + id: proposed + attributes: + label: Proposed solution + description: What would you like the app to do? + validations: + required: true + + - type: dropdown + id: contribution_plan + attributes: + label: Are you planning to implement this yourself? + description: Major features are usually implemented in-house unless approved first. + options: + - No, this is only a proposal + - Maybe, but only if approved first + - Yes, but I understand implementation still needs maintainer approval + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered (optional) + description: Any workarounds or other approaches you considered. + validations: + required: false + + - type: textarea + id: extra + attributes: + label: Additional context (optional) + description: Mockups, examples from other apps, etc. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000..163ac398 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,43 @@ +## Summary + + + +## PR type + + +- Bug fix +- Small maintenance improvement +- Docs fix +- Approved larger change (link approval below) + +## Why + + + +## Policy check + + +- [ ] This PR is not cosmetic only. +- [ ] This PR does not add a new major feature without prior approval. +- [ ] This PR is small in scope and focused on one problem. +- [ ] If this is a larger or directional change, I linked the issue where it was approved. + + + +## Testing + + +- [ ] iOS tested +- [ ] Android tested + +## Screenshots / Video (UI changes only) + + + +## Breaking changes + + + +## Linked issues + + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..59c7d56e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,80 @@ +# Contributing + +Thanks for helping improve NuvioMobile. + +## PR policy + +Pull requests are currently intended for: + +- Reproducible bug fixes +- Small stability improvements +- Minor maintenance work +- Small documentation fixes that improve accuracy + +Pull requests are generally **not** accepted for: + +- New major features +- Product direction changes +- Large UX / UI redesigns +- Cosmetic-only changes +- Refactors without a clear user-facing or maintenance benefit + +For feature ideas and bigger changes, please open an issue first. Feature implementation is usually kept in-house unless it has been discussed and explicitly approved beforehand. + +## Where to ask questions + +- Use **Issues** for bugs, feature requests, setup help, and general support. + +## Bug reports (rules) + +To keep issues fixable, bug reports should include: + +- App version or OTA update ID (Settings > App updates > Current version, hold to copy) +- Platform + device model + OS version (Android/iOS) +- Install method (release APK/IPA / Expo Go / built from source) +- Steps to reproduce (exact steps) +- Expected vs actual behavior +- Frequency (always/sometimes/once) + +Logs are **optional**, but they help a lot for playback/crash issues. + +### How to capture logs (optional) + +If you can, reproduce the issue once, then attach a short log snippet from around the time it happened: + +For Android: +```sh +adb logcat -d | tail -n 300 +``` +For iOS/Metro: +```sh +# Copy from your Metro bundler output or Xcode console +``` + +If the issue is a crash, also include any stack trace shown by Android Studio, Xcode, or `adb logcat`. + +## Feature requests (rules) + +Please include: + +- The problem you are solving (use case) +- Your proposed solution +- Alternatives considered (if any) + +Opening a feature request does **not** mean a pull request will be accepted for it. If the feature affects product scope, UX direction, or adds a significant new surface area, do not start implementation unless a maintainer explicitly approves it first. + +## Before opening a PR + +Please make sure your PR is all of the following: + +- Small in scope +- Focused on one problem +- Clearly aligned with the current direction of the project +- Not cosmetic-only +- Not a new major feature unless it was discussed and approved first + +PRs that do not fit this policy will usually be closed without merge so review time can stay focused on bugs, regressions, and small improvements. + +## One issue per problem + +Please open separate issues for separate bugs/features. It makes tracking, fixing, and closing issues much faster.