Skip to content

Commit 36d8fe1

Browse files
committed
Initial commit: meshtastic-sdk 0.1.0
Signed-off-by: James Rich <james.a.rich@gmail.com>
0 parents  commit 36d8fe1

312 files changed

Lines changed: 55422 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.editorconfig

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
trim_trailing_whitespace = true
8+
indent_style = space
9+
indent_size = 4
10+
11+
[*.{kt,kts}]
12+
indent_size = 4
13+
max_line_length = 120
14+
ij_kotlin_allow_trailing_comma = true
15+
ij_kotlin_allow_trailing_comma_on_call_site = true
16+
ij_kotlin_packages_to_use_import_on_demand = unset
17+
# ktlint
18+
ktlint_standard = enabled
19+
ktlint_standard_filename = disabled
20+
ktlint_standard_no-wildcard-imports = enabled
21+
ktlint_standard_function-naming = enabled
22+
ktlint_function_naming_ignore_when_annotated_with = Composable
23+
ktlint_experimental = disabled
24+
ktlint_code_style = intellij_idea
25+
26+
[*.{yml,yaml,json,toml}]
27+
indent_size = 2
28+
29+
[*.md]
30+
trim_trailing_whitespace = false
31+
max_line_length = off
32+
33+
[Makefile]
34+
indent_style = tab
35+
36+
[*.{sh,bash}]
37+
indent_size = 2
38+
39+
[gradle/wrapper/**]
40+
charset = unset
41+
end_of_line = unset
42+
insert_final_newline = unset
43+
trim_trailing_whitespace = unset
44+
indent_style = unset
45+
indent_size = unset

.gitattributes

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Auto detect text files and ensure LF line endings
2+
* text=auto eol=lf
3+
4+
# Binary files
5+
*.png binary
6+
*.jpg binary
7+
*.jpeg binary
8+
*.gif binary
9+
*.ico binary
10+
*.jar binary
11+
*.zip binary
12+
*.tar.gz binary
13+
*.keystore binary
14+
*.jks binary
15+
16+
# Gradle wrapper
17+
gradlew text eol=lf
18+
gradlew.bat text eol=crlf
19+
gradle/wrapper/gradle-wrapper.jar binary
20+
21+
# Generated / vendored sources should not skew GitHub language stats
22+
proto/src/protobufs/** linguist-vendored
23+
**/build/generated/** linguist-generated
24+
docs/scaffold/** linguist-documentation
25+
26+
# Diff hints
27+
*.kt diff=kotlin
28+
*.kts diff=kotlin

.githooks/pre-commit

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
repo_root="$(git rev-parse --show-toplevel)"
5+
cd "$repo_root"
6+
7+
echo "[pre-commit] Running tooling checks"
8+
bash .github/tooling/check.sh

.github/FUNDING.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Aligns with the rest of the meshtastic org. The project as a whole is
2+
# funded via GitHub Sponsors and Open Collective at the org level; this
3+
# repo does not run independent campaigns.
4+
github: [meshtastic]
5+
open_collective: meshtastic
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: Bug report
2+
description: Something isn't working as documented.
3+
title: "[bug] "
4+
labels: ["bug", "needs-triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to file a bug. Please fill in as much of the form as you can.
10+
For security issues, **do not file here** — see [`docs/security.md`](../../docs/security.md).
11+
12+
- type: input
13+
id: sdk-version
14+
attributes:
15+
label: SDK version
16+
description: e.g. `0.1.0`, `0.2.0-SNAPSHOT`, or commit SHA
17+
placeholder: "0.1.0"
18+
validations:
19+
required: true
20+
21+
- type: dropdown
22+
id: target
23+
attributes:
24+
label: Target platform
25+
multiple: true
26+
options:
27+
- Android
28+
- JVM (desktop / server)
29+
- iOS
30+
- wasmJs (browser)
31+
validations:
32+
required: true
33+
34+
- type: dropdown
35+
id: transport
36+
attributes:
37+
label: Transport in use
38+
multiple: true
39+
options:
40+
- BLE
41+
- TCP
42+
- USB Serial (Android)
43+
- Serial (JVM)
44+
- Other / N-A
45+
validations:
46+
required: true
47+
48+
- type: input
49+
id: firmware
50+
attributes:
51+
label: Device firmware version
52+
description: From `AdminApi.getMetadata()` or the device's About screen
53+
placeholder: "2.5.10.abcdef"
54+
validations:
55+
required: true
56+
57+
- type: textarea
58+
id: what-happened
59+
attributes:
60+
label: What happened?
61+
description: A clear and concise description of the bug.
62+
validations:
63+
required: true
64+
65+
- type: textarea
66+
id: expected
67+
attributes:
68+
label: What did you expect to happen?
69+
validations:
70+
required: true
71+
72+
- type: textarea
73+
id: reproduction
74+
attributes:
75+
label: Minimal reproduction
76+
description: Code snippet or `samples/cli` command. Smaller is better.
77+
render: kotlin
78+
validations:
79+
required: true
80+
81+
- type: textarea
82+
id: logs
83+
attributes:
84+
label: Logs
85+
description: |
86+
Paste relevant logs at `LogLevel.Debug`. Redact PSKs and any session tokens.
87+
Wrap in triple backticks.
88+
render: shell
89+
90+
- type: checkboxes
91+
id: terms
92+
attributes:
93+
label: Affirmations
94+
options:
95+
- label: I have searched existing issues and this isn't a duplicate.
96+
required: true
97+
- label: I have read [`docs/security.md`](../../docs/security.md) and confirmed this is not a security-sensitive issue.
98+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
blank_issues_enabled: false
2+
contact_links:
3+
- name: Security advisory
4+
url: https://github.com/meshtastic/meshtastic-sdk/security/advisories/new
5+
about: Don't file public issues for security problems. Use a private security advisory.
6+
- name: Meshtastic community
7+
url: https://meshtastic.org/docs/community/
8+
about: General Meshtastic questions belong in the community channels.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Feature request
2+
description: Suggest an addition or change.
3+
title: "[feature] "
4+
labels: ["enhancement", "needs-triage"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for the suggestion! For larger design changes, consider opening a discussion first
10+
or proposing an ADR per [`CONTRIBUTING.md`](../../CONTRIBUTING.md#adrs-architecture-decision-records).
11+
12+
- type: textarea
13+
id: problem
14+
attributes:
15+
label: Problem
16+
description: What gap or pain are you trying to solve? Who else has this need?
17+
validations:
18+
required: true
19+
20+
- type: textarea
21+
id: proposal
22+
attributes:
23+
label: Proposed solution
24+
description: |
25+
What API surface, behavior, or tooling change would solve it? Keep it concrete —
26+
ideally a snippet of the API as you'd want to use it.
27+
render: kotlin
28+
validations:
29+
required: true
30+
31+
- type: textarea
32+
id: alternatives
33+
attributes:
34+
label: Alternatives considered
35+
description: What else have you tried or thought about?
36+
37+
- type: dropdown
38+
id: scope
39+
attributes:
40+
label: Likely scope
41+
options:
42+
- "core (engine / public API)"
43+
- "transport-* (a transport module)"
44+
- "storage-* (a storage module)"
45+
- "tooling / build / CI"
46+
- "docs / spec"
47+
- "samples"
48+
- "not sure"
49+
validations:
50+
required: true
51+
52+
- type: checkboxes
53+
id: terms
54+
attributes:
55+
label: Affirmations
56+
options:
57+
- label: I have searched existing issues and discussions.
58+
required: true
59+
- label: I am willing to discuss design trade-offs before implementation.
60+
required: true

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<!--
2+
Thank you for contributing to meshtastic-sdk!
3+
Fill out the sections below. Delete any that don't apply.
4+
-->
5+
6+
## Summary
7+
8+
<!-- One or two sentences: what does this PR do? -->
9+
10+
## Type of change
11+
12+
- [ ] Bug fix (non-breaking)
13+
- [ ] New feature (non-breaking)
14+
- [ ] Breaking change (will require a SemVer-MINOR pre-1.0 / SemVer-MAJOR post-1.0 bump)
15+
- [ ] Documentation only
16+
- [ ] Infrastructure / CI / build
17+
- [ ] Proto submodule bump
18+
- [ ] ADR (Architecture Decision Record)
19+
20+
## Related issue / discussion
21+
22+
<!-- Link the issue: Fixes #123 / Refs #456. For non-trivial changes, link the design discussion. -->
23+
24+
## Affirmations
25+
26+
- [ ] All commits are signed off (DCO — `git commit -s`).
27+
- [ ] I have read [`CONTRIBUTING.md`](../CONTRIBUTING.md).
28+
- [ ] If this changes the public API, I have run `./gradlew updateKotlinAbi` and committed the regenerated `api/*.api` files.
29+
- [ ] If this changes wire behavior, I have updated [`docs/protocol.md`](../docs/protocol.md) and cited firmware / sibling-app sources for verification.
30+
- [ ] If this is a non-trivial design change, I have added or updated an ADR under [`docs/decisions/`](../docs/decisions/).
31+
- [ ] I have run `./gradlew check` locally and it passes.
32+
33+
## How was this verified?
34+
35+
<!--
36+
Describe testing — unit tests, manual device test (cite manual-tests.md test ID),
37+
emulator/simulator runs. For wire-protocol changes, list the firmware version(s)
38+
and reference clients (Android/Apple) you cross-checked against.
39+
-->
40+
41+
## Notes for reviewers
42+
43+
<!-- Anything else the reviewer should know. Tricky areas, open questions, follow-ups. -->
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Gradle Setup
2+
description: Setup Java and Gradle for KMP builds with remote cache
3+
inputs:
4+
cache_read_only:
5+
description: 'Whether Gradle cache is read-only'
6+
default: 'true'
7+
java_version:
8+
description: 'JDK version'
9+
default: '21'
10+
gradle_encryption_key:
11+
description: 'Encryption key for Gradle remote cache'
12+
required: false
13+
runs:
14+
using: composite
15+
steps:
16+
- name: Copy CI Gradle properties
17+
shell: bash
18+
run: mkdir -p ~/.gradle && cp .github/ci-gradle.properties ~/.gradle/gradle.properties
19+
20+
- name: Validate Gradle Wrapper
21+
uses: gradle/actions/wrapper-validation@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
22+
23+
- name: Set up JDK ${{ inputs.java_version }}
24+
uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # v4.7.1
25+
with:
26+
java-version: ${{ inputs.java_version }}
27+
distribution: temurin
28+
29+
- name: Setup Gradle
30+
uses: gradle/actions/setup-gradle@ac638b010cf58a27ee6c972d7336334ccaf61c96 # v4.4.1
31+
with:
32+
cache-read-only: ${{ inputs.cache_read_only }}
33+
cache-encryption-key: ${{ inputs.gradle_encryption_key }}
34+
cache-cleanup: on-success
35+
add-job-summary: always

.github/agents/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Custom Agents
2+
3+
Slim by design. Most "agents" in this repo are now skills under
4+
`.github/skills/`. Only one agent remains:
5+
6+
- **spec-guard** — full spec and architecture compliance audit before or
7+
after implementation. Use this as a heavyweight cross-cutting review;
8+
for narrower workflows pick the matching skill instead.
9+
10+
Routing matrix lives in [`AGENTS.md`](../../AGENTS.md#task--skill--agent-routing-matrix).
11+
12+
Structured reporting:
13+
14+
- Specialist agents should emit JSON compatible with `.github/tooling/agent-report.schema.json`.
15+
- Use `.github/tooling/agent-report.template.json` as a starting point.

0 commit comments

Comments
 (0)