diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index bd8cc14..17d557c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -13,7 +13,41 @@ concurrency:
cancel-in-progress: true
jobs:
+ # Decides whether the push or PR touches the app. Docs, the website and other non-build
+ # files are listed below; anything else counts as a project file.
+ changes:
+ runs-on: ubuntu-latest
+ timeout-minutes: 5
+ permissions:
+ contents: read
+ pull-requests: read
+ outputs:
+ app: ${{ steps.filter.outputs.app }}
+ steps:
+ - uses: actions/checkout@v7
+
+ - uses: dorny/paths-filter@v4
+ id: filter
+ with:
+ predicate-quantifier: some-with-excludes
+ filters: |
+ app:
+ - '**'
+ - '!**/*.md'
+ - '!docs/**'
+ - '!site/**'
+ - '!LICENSE'
+ - '!.github/ISSUE_TEMPLATE/**'
+ - '!.github/DISCUSSION_TEMPLATE/**'
+ - '!.github/workflows/pages.yml'
+ - '!.github/workflows/claude.yml'
+ - '!.github/workflows/claude-code-review.yml'
+
+ # The ruleset on main requires this check. When nothing in the app changed it is skipped,
+ # and a skipped job still counts as passed.
build:
+ needs: changes
+ if: needs.changes.outputs.app == 'true'
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
diff --git a/AGENTS.md b/AGENTS.md
index c4fadf4..e5b289c 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -79,7 +79,7 @@ adb logcat -s MeshAnd MeshAnd/SDK
- `v*` tags: only admins may create, move or delete them.
- The repo admin (the owner's account, which this agent pushes with) bypasses both, so direct pushes to `main` and release tags still work. GitHub notes the bypass.
- Never force-push `main`.
-- **CI:** `.github/workflows/ci.yml` runs tests, lint and a debug build on pushes to `main` and on PRs.
+- **CI:** `.github/workflows/ci.yml` runs tests, lint and a debug build on pushes to `main` and on PRs that change project files. A `changes` job (`dorny/paths-filter`) skips `build` when only Markdown, `docs/`, `site/`, `LICENSE`, issue/discussion templates or the Pages/Claude workflows changed; a skipped `build` still satisfies the ruleset's required check. Add new non-build paths to its exclude list.
- **Release notes:** `CHANGELOG.md`, one `## Use OsmAnd as usual
under OsmAnd → Menu → Configure screen.
From then on, MeshAnd reconnects to your radio by itself. When you open it,
- it tells you about new versions; install the new APK over the old one and your radio and
- settings are kept. Every release is signed with the same key and comes with a
- .sha256 file. Prefer automatic updates? Add the GitHub repository to
- Obtainium.
From then on, MeshAnd reconnects to your radio by itself. It also keeps
+ itself up to date: when you open it and a new version is out, it shows a Download
+ button (you can switch this off in Settings → About). Install the new APK over the
+ old one and your radio and settings are kept. Every release is signed with the same key and
+ comes with a .sha256 file.
MeshAnd is an independent project, not affiliated with or endorsed by Meshtastic or OsmAnd. - Meshtastic® is a registered trademark of Meshtastic LLC.
+MeshAnd is an independent project, not affiliated with or endorsed by Meshtastic or OsmAnd.