diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..04aa87f7c --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,83 @@ +# Contributing to Meshtastic-Android + +Thank you for your interest in contributing to Meshtastic-Android! We welcome contributions from everyone. Please take a moment to review these guidelines to help us maintain a high-quality, collaborative project. + +## How to Contribute + +- **Fork the repository** and create your branch from `main` or the appropriate feature branch. +- **Make your changes** in a logical, atomic manner. +- **Test your changes** thoroughly before submitting a pull request. +- **Submit a pull request** (PR) with a clear description of your changes and the problem they solve. +- If you are addressing an existing issue, please reference it in your PR (e.g., `Fixes #123`). + +## Code Style + +- Follow the [Kotlin Coding Conventions](https://kotlinlang.org/docs/coding-conventions.html) for Kotlin code. +- Use Android Studio's default formatting settings. +- Write clear, descriptive variable and function names. +- Add comments where necessary, especially for complex logic. +- Keep methods and classes focused and concise. +- Use localised strings; edit the English [`strings.xml`](app/src/main/res/values/strings.xml) file. CrowdIn will manage translations to other languages. + - For example, + + ```kotlin + // instead of hardcoding a string in your code: + Text("Settings") + + // use the localised string resource: + Text(stringResource(R.string.settings)) + ``` + +### Linting + +Meshtastic-Android uses [Detekt](https://detekt.dev/) for static code analysis and linting of Kotlin code. + +- Run `./gradlew detekt` before submitting your pull request to ensure your code passes all lint checks. +- Fix any Detekt warnings or errors reported in your code. +- It is possible to suppress warnings individually, but this should be used very sparingly. +- You can find Detekt configuration in the `config/detekt` directory. If you believe a rule should be changed or suppressed, discuss it in your PR. + +Consistent linting helps keep the codebase clean and maintainable. + +### Testing + +Meshtastic-Android uses both unit tests and instrumented UI tests to ensure code quality and reliability. + +- **Unit tests** are located in `app/src/test/java/` and should be written for all new logic where possible. +- **Instrumented tests** (including UI tests using Jetpack Compose) are located in `app/src/androidTest/java/`. For Compose UI, use the [Jetpack Compose Testing APIs](https://developer.android.com/jetpack/compose/testing). + +#### Guidelines for Testing + +- Add or update tests for any new features or bug fixes. +- Ensure all tests pass by running: + - `./gradlew test` for unit tests + - `./gradlew connectedAndroidTest` for instrumented tests +- For UI components, write Compose UI tests to verify user interactions and visual elements. See existing tests in `DebugFiltersTest.kt` for examples. +- If your change is difficult to test, explain why in your pull request. + +Comprehensive testing helps prevent regressions and ensures a stable experience for all users. + + +## Pull Requests + +- Ensure your branch is up to date with the latest `main` branch before submitting a PR. +- Provide a meaningful title and description for your PR. +- Inlude information on how to test and/or replicate if it is not obvious. +- Include screenshots or logs if your change affects the UI or user experience. +- Be responsive to feedback and make requested changes promptly. +- Squash commits if requested by a maintainer. + +## Issue Reporting + +- Search existing issues before opening a new one to avoid duplicates. +- Provide a clear and descriptive title. +- Include steps to reproduce, expected behavior, and actual behavior. +- Attach logs, screenshots, or other helpful context if applicable. + +## Community Standards + +- Be respectful and considerate in all interactions. +- The Meshtastic Android project is subject to the code of conduct for the parent project, which can be [found here:](https://meshtastic.org/docs/legal/conduct/) +- Help others by reviewing pull requests and answering questions when possible. + +Thank you for helping make Meshtastic-Android better! diff --git a/README.md b/README.md index 550b27cf7..61a7ed434 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,9 @@ This is a tool for using Android with open-source mesh radios. For more information see our webpage: [meshtastic.org](https://www.meshtastic.org). If you are looking for the the device side code, see [here](https://github.com/meshtastic/Meshtastic-device). This project is currently beta testing, if you have questions or feedback -please [Join our discussion forum](https://github.com/orgs/meshtastic/discussions). We would love to hear from -you! +please [Join our discussion forum](https://github.com/orgs/meshtastic/discussions) or the [Discord Group](https://discord.gg/meshtastic) . We would love to hear from you! + +For the latest Beta, use xxx, [Get it on F-Droid. + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> الرسائل diff --git a/app/src/main/res/values-b+sr+Latn/strings.xml b/app/src/main/res/values-b+sr+Latn/strings.xml index 92813e791..fb9797124 100644 --- a/app/src/main/res/values-b+sr+Latn/strings.xml +++ b/app/src/main/res/values-b+sr+Latn/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Поруке diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index b239ea704..fb36aa368 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Съобщения diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 8397a002e..d465b33e5 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Canal diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index 610a2aedf..c6bbb32eb 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Zprávy diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 366ee73ae..46fce15d2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Nachrichten diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index eab9c98d3..02157110d 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Μηνύματα diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 0de7b7894..8526246cf 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Mensajes diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index ae0d6eea6..6a5499112 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Kanal diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 5172c00ca..d5b321a53 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Viestit diff --git a/app/src/main/res/values-fr-rHT/strings.xml b/app/src/main/res/values-fr-rHT/strings.xml index 5ea4eac6e..d001ac148 100644 --- a/app/src/main/res/values-fr-rHT/strings.xml +++ b/app/src/main/res/values-fr-rHT/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> kanal diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 6e8b1f145..286d45e16 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Messages diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index 50376cace..64182e8bf 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Cainéal diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 8c6e08498..0526fb214 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Canle diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index e9072f823..a9ee0ac1d 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Kanal diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 5d1340e08..19e92cc48 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Üzenetek diff --git a/app/src/main/res/values-is/strings.xml b/app/src/main/res/values-is/strings.xml index 97dee0075..5a94df64d 100644 --- a/app/src/main/res/values-is/strings.xml +++ b/app/src/main/res/values-is/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Heiti rásar diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 262fc9ac5..2ede21f72 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Messaggi diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index c024c54c2..b1290c1f6 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> הודעות diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 8b2784044..2bd592d05 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> メッセージ diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index d7ded161f..8668d01e4 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> 메시지 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index 55e8542e2..fea3fc35f 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Kanalas diff --git a/app/src/main/res/values-nb/strings.xml b/app/src/main/res/values-nb/strings.xml index 77fdac596..e2ae33ee7 100644 --- a/app/src/main/res/values-nb/strings.xml +++ b/app/src/main/res/values-nb/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Kanal diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 24ede428a..400cbb023 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Berichten diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index ca88537d9..d7e598738 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Wiadomości diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 662649235..f5edfe95b 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Mensagens diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 3ec0b8c60..a8bac4a2c 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Mensagens diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index 0ed8de7dd..9d4ce2cd3 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Cheie publică neautorizată diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index cc00142cc..e28be3fd6 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Сообщения diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index 4de642d98..910584bdc 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Správy diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 4be82f4d1..4e8719429 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Kanal diff --git a/app/src/main/res/values-sq/strings.xml b/app/src/main/res/values-sq/strings.xml index b7eb7da74..3c72075be 100644 --- a/app/src/main/res/values-sq/strings.xml +++ b/app/src/main/res/values-sq/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Kanal diff --git a/app/src/main/res/values-sr/strings.xml b/app/src/main/res/values-sr/strings.xml index 0fa8bb510..2968778a2 100644 --- a/app/src/main/res/values-sr/strings.xml +++ b/app/src/main/res/values-sr/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Поруке diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index a757f64ac..4a69db54e 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Meddelanden diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d367f1ebd..1a62ee1c9 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Mesajlar diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index e0500827c..a27490de3 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> Повідомлення diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index e5e497b95..8b2a870c7 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> 消息 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index d93b8ad66..c6e32296f 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -14,6 +14,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify the english strings.xml file directly. + ~ Other languages are managed by CrowdIn --> 訊息 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cfc7d53cd..2c78a3d6c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,6 +13,9 @@ ~ ~ You should have received a copy of the GNU General Public License ~ along with this program. If not, see . + ~ + ~ NOTE: Only modify this english strings.xml file directly. + ~ Other languages are managed by CrowdIn -->