docs: publish channels: main

This commit is contained in:
github-actions[bot] committed 2026-09-29 12:12:42 +00:00
1 parent a3f8c4957d
commit 215b4f47fd
6 files changed
+32 -26

No files matched your search

File diff suppressed because one or more lines are too long.
File diff suppressed because one or more lines are too long.
File diff suppressed because one or more lines are too long.
+4 -3
View File
@@ -10,6 +10,7 @@
│ ├── connections/
│ ├── map/
│ ├── map-maplibre/
│ ├── map-terrain/
│ ├── node/
│ ├── settings/
│ ├── firmware/
@@ -52,11 +53,11 @@
├── specs/ # Feature specifications
└── .github/workflows/ # CI/CD workflows
</code></pre></div></div> <h2 id="namespacing-convention"> <a href="#namespacing-convention" class="anchor-heading" aria-labelledby="namespacing-convention"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Namespacing Convention </h2> <p>All Kotlin packages follow the pattern:</p> <div class="language-text highlighter-rouge"><div class="highlight"><pre class="highlight"><code>org.meshtastic.{layer}.{module}.{subpackage}
</code></pre></div></div> <p>Examples:</p> <ul> <li><code class="language-plaintext highlighter-rouge">org.meshtastic.core.navigation</code> — core navigation module</li> <li><code class="language-plaintext highlighter-rouge">org.meshtastic.feature.docs.ui</code> — docs feature UI package</li> <li><code class="language-plaintext highlighter-rouge">org.meshtastic.app.di</code> — app DI configuration</li> </ul> <h2 id="build-system"> <a href="#build-system" class="anchor-heading" aria-labelledby="build-system"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Build System </h2> <h3 id="gradle-kotlin-dsl"> <a href="#gradle-kotlin-dsl" class="anchor-heading" aria-labelledby="gradle-kotlin-dsl"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Gradle Kotlin DSL </h3> <p>All build files use Kotlin DSL (<code class="language-plaintext highlighter-rouge">.gradle.kts</code>). Configuration:</p> <ul> <li><strong>Version catalog:</strong> <code class="language-plaintext highlighter-rouge">gradle/libs.versions.toml</code></li> <li><strong>Convention plugins:</strong> <code class="language-plaintext highlighter-rouge">build-logic/convention/</code></li> <li><strong>Settings:</strong> <code class="language-plaintext highlighter-rouge">settings.gradle.kts</code></li> </ul> <h3 id="convention-plugins"> <a href="#convention-plugins" class="anchor-heading" aria-labelledby="convention-plugins"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Convention Plugins </h3> <p>Located in <code class="language-plaintext highlighter-rouge">build-logic/convention/src/main/kotlin/</code>. The full set is registered in <code class="language-plaintext highlighter-rouge">build-logic/convention/build.gradle.kts</code>; these are the ones a module build applies most often:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Plugin</th> <th>Purpose</th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.feature</code></td> <td>Standard feature module setup</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.library</code></td> <td>Shared KMP library module</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.library.compose</code></td> <td>KMP library that also ships Compose UI</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.jvm.android</code></td> <td>JVM + Android target configuration</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.koin</code></td> <td>Koin Annotations + K2 compiler plugin</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kotlinx.serialization</code></td> <td>Serialization plugin setup</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.android.room</code></td> <td>Room KMP setup and schema location</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.android.screenshot</code></td> <td>Compose Preview screenshot testing</td> </tr> </tbody> </table></div> <p>The rest cover the application and library variants, lint, detekt, spotless, Dokka, Kover, AboutLibraries, analytics, secrets, the docs tasks and the root aggregate — read the <code class="language-plaintext highlighter-rouge">register(…)</code> block rather than assuming a plugin does or does not exist.</p> <h3 id="build-variants-android"> <a href="#build-variants-android" class="anchor-heading" aria-labelledby="build-variants-android"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Build Variants (Android) </h3> <div class="table-wrapper"><table> <thead> <tr> <th>Flavor</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">google</code></td> <td>Google Play distribution; includes proprietary APIs</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">fdroid</code></td> <td>F-Droid distribution; FOSS-only dependencies</td> </tr> </tbody> </table></div> <h3 id="key-gradle-tasks"> <a href="#key-gradle-tasks" class="anchor-heading" aria-labelledby="key-gradle-tasks"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Key Gradle Tasks </h3> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Compile check across all KMP targets</span>
</code></pre></div></div> <p>Examples:</p> <ul> <li><code class="language-plaintext highlighter-rouge">org.meshtastic.core.navigation</code> — core navigation module</li> <li><code class="language-plaintext highlighter-rouge">org.meshtastic.feature.docs.ui</code> — docs feature UI package</li> <li><code class="language-plaintext highlighter-rouge">org.meshtastic.app.di</code> — app DI configuration</li> </ul> <h2 id="build-system"> <a href="#build-system" class="anchor-heading" aria-labelledby="build-system"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Build System </h2> <h3 id="gradle-kotlin-dsl"> <a href="#gradle-kotlin-dsl" class="anchor-heading" aria-labelledby="gradle-kotlin-dsl"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Gradle Kotlin DSL </h3> <p>All build files use Kotlin DSL (<code class="language-plaintext highlighter-rouge">.gradle.kts</code>). Configuration:</p> <ul> <li><strong>Version catalog:</strong> <code class="language-plaintext highlighter-rouge">gradle/libs.versions.toml</code></li> <li><strong>Convention plugins:</strong> <code class="language-plaintext highlighter-rouge">build-logic/convention/</code></li> <li><strong>Settings:</strong> <code class="language-plaintext highlighter-rouge">settings.gradle.kts</code></li> </ul> <h3 id="convention-plugins"> <a href="#convention-plugins" class="anchor-heading" aria-labelledby="convention-plugins"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Convention Plugins </h3> <p>Located in <code class="language-plaintext highlighter-rouge">build-logic/convention/src/main/kotlin/</code>. The full set is registered in <code class="language-plaintext highlighter-rouge">build-logic/convention/build.gradle.kts</code>; these are the ones a module build applies most often:</p> <div class="table-wrapper"><table> <thead> <tr> <th>Plugin</th> <th>Purpose</th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.feature</code></td> <td>Standard feature module setup</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.library</code></td> <td>Shared KMP library module</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.library.compose</code></td> <td>KMP library that also ships Compose UI</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kmp.jvm.android</code></td> <td>Adds the <code class="language-plaintext highlighter-rouge">jvmAndroidMain</code> source set shared by the Android and desktop JVM targets</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.koin</code></td> <td>Koin Annotations + K2 compiler plugin</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.kotlinx.serialization</code></td> <td>Serialization plugin setup</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.android.room</code></td> <td>Room KMP setup and schema location</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">meshtastic.android.screenshot</code></td> <td>Compose Preview screenshot testing</td> </tr> </tbody> </table></div> <p>The rest cover the application and library variants, lint, detekt, spotless, Dokka, Kover, AboutLibraries, analytics, secrets, the docs tasks and the root aggregate — read the <code class="language-plaintext highlighter-rouge">register(…)</code> block rather than assuming a plugin does or does not exist.</p> <h3 id="build-variants-android"> <a href="#build-variants-android" class="anchor-heading" aria-labelledby="build-variants-android"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Build Variants (Android) </h3> <div class="table-wrapper"><table> <thead> <tr> <th>Flavor</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code class="language-plaintext highlighter-rouge">google</code></td> <td>Google Play distribution; includes proprietary APIs</td> </tr> <tr> <td><code class="language-plaintext highlighter-rouge">fdroid</code></td> <td>F-Droid distribution; FOSS-only dependencies</td> </tr> </tbody> </table></div> <h3 id="key-gradle-tasks"> <a href="#key-gradle-tasks" class="anchor-heading" aria-labelledby="key-gradle-tasks"><svg viewBox="0 0 16 16" aria-hidden="true"><use xlink:href="#svg-link"></use></svg></a> Key Gradle Tasks </h3> <div class="language-shell highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c"># Compile check of every KMP module for JVM and iosSimulatorArm64 (excludes :desktopApp)</span>
./gradlew kmpSmokeCompile
<span class="c"># Run all tests</span>
./gradlew allTests
<span class="c"># Run all tests: allTests covers KMP modules, test covers Android/JVM-only modules; run both</span>
./gradlew <span class="nb">test </span>allTests
<span class="c"># Code quality</span>
./gradlew spotlessCheck detekt
File diff suppressed because one or more lines are too long.
File diff suppressed because one or more lines are too long.