diff --git a/.github/workflows/models_issue_triage.yml b/.github/workflows/models_issue_triage.yml index 87756b616..89576d445 100644 --- a/.github/workflows/models_issue_triage.yml +++ b/.github/workflows/models_issue_triage.yml @@ -14,7 +14,7 @@ concurrency: jobs: triage: - if: ${{ github.repository == 'meshtastic/firmware' && github.event.issue.user.type != 'Bot' }} + if: ${{ github.repository == 'meshtastic/Meshtastic-Android' && github.event.issue.user.type != 'Bot' }} runs-on: ubuntu-24.04-arm steps: # ───────────────────────────────────────────────────────────────────────── @@ -98,20 +98,20 @@ jobs: continue-on-error: true with: prompt: | - Analyze this GitHub issue for completeness and determine if it needs labels. + Analyze this GitHub issue for the Meshtastic Android app and determine if it needs labels. - If this looks like a bug on the device/firmware (crash, reboot, lockup, radio issues, GPS issues, display issues, power/sleep issues), request device logs and explain how to get them: + If this looks like a bug in the Android app (crash, ANR, UI glitch, connection failure, Bluetooth issues, notification problems, map issues), request app logs and explain how to get them: - Web Flasher logs: - - Go to https://flasher.meshtastic.org - - Connect the device via USB and click Connect - - Open the device console/log output, reproduce the problem, then copy/download and attach/paste the logs + Android app debug logs: + - Open the Meshtastic app, go to Settings > Debug > Save Logs + - Reproduce the problem, then share/attach the exported log file - Meshtastic CLI logs: - - Run: meshtastic --port --noproto - - Reproduce the problem, then copy/paste the terminal output + Android logcat (if app logs are insufficient): + - Connect phone via USB with USB debugging enabled + - Run: adb logcat -s Meshtastic:* *:E + - Reproduce the problem, then copy/paste the relevant output - Also request key context if missing: device model/variant, firmware version, region, steps to reproduce, expected vs actual. + Also request key context if missing: Android version, phone model, app version, Meshtastic device model, firmware version, connection type (BLE/USB/TCP), steps to reproduce, expected vs actual. Respond ONLY with JSON: { @@ -120,7 +120,7 @@ jobs: "label": "needs-logs" | "needs-info" | "none" } - Use "needs-logs" if this is a device bug AND no logs are attached. + Use "needs-logs" if this is an app bug AND no logs are attached. Use "needs-info" if basic info like firmware version or steps to reproduce are missing. Use "none" if the issue is complete or is a feature request. diff --git a/.github/workflows/models_pr_triage.yml b/.github/workflows/models_pr_triage.yml index af1b04037..b81dedbdc 100644 --- a/.github/workflows/models_pr_triage.yml +++ b/.github/workflows/models_pr_triage.yml @@ -15,7 +15,7 @@ concurrency: jobs: triage: - if: ${{ github.repository == 'meshtastic/firmware' && github.event.pull_request.user.type != 'Bot' }} + if: ${{ github.repository == 'meshtastic/Meshtastic-Android' && github.event.pull_request.user.type != 'Bot' }} runs-on: ubuntu-24.04-arm steps: # ───────────────────────────────────────────────────────────────────────── @@ -26,8 +26,8 @@ jobs: id: check-labels with: script: | - const skipLabels = new Set(['automation']); - const typeLabels = new Set(['bugfix', 'hardware-support', 'enhancement', 'dependencies', 'submodules', 'github_actions', 'trunk', 'cleanup']); + const skipLabels = new Set(['automation', 'release']); + const typeLabels = new Set(['bugfix', 'enhancement', 'dependencies', 'repo', 'refactor']); const prLabels = context.payload.pull_request.labels.map(l => l.name); const shouldSkipAll = prLabels.some(l => skipLabels.has(l)); @@ -87,7 +87,7 @@ jobs: core.setOutput('is_spam', 'true'); # ───────────────────────────────────────────────────────────────────────── - # Step 3: Auto-label PR type (bugfix/hardware-support/enhancement) + # Step 3: Auto-label PR type (bugfix/enhancement/refactor) # ───────────────────────────────────────────────────────────────────────── - name: Classify PR for labeling if: steps.check-labels.outputs.skip_all != 'true' && steps.check-labels.outputs.has_type_label != 'true' && (steps.quality.outputs.response == 'ok' || steps.quality.outputs.response == '') @@ -97,13 +97,13 @@ jobs: with: max-tokens: 30 prompt: | - Classify this pull request into exactly one category. + Classify this pull request for the Meshtastic Android app into exactly one category. - Return exactly one of: bugfix, hardware-support, enhancement + Return exactly one of: bugfix, enhancement, refactor Use bugfix if it fixes a bug, crash, or incorrect behavior. - Use hardware-support if it adds or improves support for a specific hardware device/variant. - Use enhancement if it adds a new feature, improves performance, or refactors code. + Use enhancement if it adds a new feature, improves performance, or adds new functionality. + Use refactor if it restructures code without changing behavior, cleans up code, or improves architecture. Title: ${{ github.event.pull_request.title }} Body: ${{ github.event.pull_request.body }} @@ -120,8 +120,8 @@ jobs: const label = (process.env.TYPE_LABEL || '').trim().toLowerCase(); const labelMeta = { 'bugfix': { color: 'd73a4a', description: 'Bug fix' }, - 'hardware-support': { color: '0e8a16', description: 'Hardware support addition or improvement' }, 'enhancement': { color: 'a2eeef', description: 'New feature or enhancement' }, + 'refactor': { color: 'c5def5', description: 'Code restructuring without behavior change' }, }; const meta = labelMeta[label]; if (!meta) return; diff --git a/.github/workflows/moderate.yml b/.github/workflows/moderate.yml index 81eff6b59..4b8f94bfa 100644 --- a/.github/workflows/moderate.yml +++ b/.github/workflows/moderate.yml @@ -9,6 +9,7 @@ on: jobs: spam-detection: + if: github.repository == 'meshtastic/Meshtastic-Android' runs-on: ubuntu-24.04-arm permissions: issues: write diff --git a/.github/workflows/pull-request-target.yml b/.github/workflows/pull-request-target.yml index e03f9eb25..8ec0f2259 100644 --- a/.github/workflows/pull-request-target.yml +++ b/.github/workflows/pull-request-target.yml @@ -48,12 +48,16 @@ jobs: if (labels.size > 0) { const labelArray = [...labels]; core.info(`Applying labels: ${labelArray.join(', ')}`); - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.payload.pull_request.number, - labels: labelArray, - }); + try { + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.payload.pull_request.number, + labels: labelArray, + }); + } catch (e) { + core.warning(`Could not apply labels (rate limited?): ${e.message}`); + } } else { core.info('No labels matched for this PR.'); } diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 1b9ee1fd6..f1ae45660 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -20,7 +20,7 @@ jobs: uses: actions/stale@v10.2.0 with: days-before-stale: 30 - stale-issue-message: This issue hasn not had any comment or update in the last 30 days. If it is still relevant, please post update comments. If no comments are made, this issue will be closed in 7 days. + stale-issue-message: This issue has not had any comment or update in the last 30 days. If it is still relevant, please post update comments. If no comments are made, this issue will be closed in 7 days. exempt-issue-labels: 'has sponsor,needs sponsor,help wanted,backlog,security issue,l10n,dependencies' exempt-pr-labels: 'has sponsor,needs sponsor,help wanted,backlog,security issue,l10n,dependencies' operations-per-run: 100