-
-
Notifications
You must be signed in to change notification settings - Fork 10
feat: Reticulum third protocol — Ratspeak sidecar, MeshChat UX parity, RNode flasher/BLE/Wi-Fi, triple-protocol BLE, peer graph overhaul & repo-wide i18n (Fixes #593) #596
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
89 commits
Select commit
Hold shift + click to select a range
4c8d918
feat: add Reticulum sidecar scaffold for Phase B (#593)
rinchen dd107a3
Merge branch 'main' into 593/reticulum-sidecar-scaffold
rinchen 4fc686c
feat: complete Reticulum integration, sidecar IPC, and i18n audit
rinchen eab7a6a
chore: ignore Rust sidecar target and fix ws unused import
rinchen abd9a93
fix: resolve CodeQL findings on PR #596
rinchen 36f8cad
fix: Reticulum connection panel start-before-identity flow (#593)
rinchen e6b8102
fix: align Reticulum connection panel exit and stop controls
rinchen ab0fca7
fix: Reticulum sidecar async reads, proxy guards, and connect icon
rinchen c98ad6b
fix: checkout Ratspeak siblings for Reticulum sidecar CI builds
rinchen 86b0914
fix: Reticulum header parity, identity export, and MQTT connack errors
rinchen 0b7c2bd
fix: Reticulum log filtering, identity UX, and Nodes tab label
rinchen c498751
fix: scope log panel App/Device filters to active protocol tab
rinchen f4e22d3
feat: Reticulum unified parity — Radio tab, config import, sidecar APIs
rinchen 9821f3d
feat: add Reticulum interface delete on Radio tab
rinchen 4cb17cd
feat: add Reticulum interface edit on Radio tab
rinchen c012969
docs: Reticulum guides, IPC reference, and locale quality fixes
rinchen 5d9f955
fix: clone Ratspeak deps outside workspace in sidecar CI
rinchen ae52350
fix: require DM recipient for Reticulum chat send
rinchen 7c2baf8
fix: annotate serial port vec for Windows sidecar build
rinchen 5631650
fix(i18n): audit Reticulum and chat DM locale strings
rinchen 8399dfa
feat: add RNode firmware flasher to Reticulum Radio tab
rinchen c792c42
feat: add Reticulum RF/TCP/network transport markers in chat
rinchen 61eef0d
feat: add Reticulum Peers tab with dedicated list and detail UI
rinchen 3dab208
feat: complete Reticulum MeshChat parity roadmap (phases 0–8)
rinchen 937512e
refactor: align Reticulum with meshtastic/meshcore conventions
rinchen c32e1ef
fix: Reticulum sidecar noise, nomad tab, and channel key dedupe
rinchen 8d7d999
fix: Reticulum topology tab, collapsed radio, and chat key dedupe
rinchen 72637d0
fix: Reticulum sidecar sync, flasher keys, and identity UI
rinchen 8f08606
fix: Reticulum announce save, peer refresh, and admin tab
rinchen 09c19e9
fix: Reticulum audit — peers tab, settings merge, and hardening
rinchen ed9da5d
fix: Reticulum DMs, contacts, flasher, and sidecar egress badges
rinchen 2857d1d
fix: retry Flatpak offline pnpm install on @jsr temp-dir races
rinchen 14368bf
fix: unblock MeshCore room posts stuck behind zombie logins
rinchen 1c8d1eb
fix: hash ESP32 firmware as Latin-1 bytes for esptool MD5 verify
rinchen ebe8979
fix: restore Reticulum DM history tabs and RF badge for USB RNode
rinchen 8fdf729
chore: bump deps
rinchen f47f869
feat: Reticulum topology graph, wire sniffer, and Graph tab removal
rinchen a74f49a
fix: RNode flasher ESP32 flash, provision flow, and unified step UX
rinchen 3e4afdd
fix: dedupe Packet Sniffer virtualizer React keys
rinchen 4595fda
fix: dual-protocol BLE connect and MeshCore MQTT UI parity
rinchen 5323523
feat: Reticulum multi-hop topology and async LXMF delivery
rinchen 3bbd72d
fix: restore MeshCore and Meshtastic sidebar panels after Reticulum g…
rinchen af3aefb
fix: header status text contrast for axe color-contrast
rinchen 7d30173
feat: Nomad Network browser with Micron rendering and file downloads
rinchen 8da3aeb
fix: stabilize Sniffer scroll and Reticulum topology graph layout
rinchen 6252028
fix(renderer): stabilize Sniffer packet log scroll pinning
rinchen fca671f
fix(reticulum): enrich peer names and draw hub-to-peer topology edges
rinchen 2a162dd
fix(reticulum): footer peer count, chat DM visibility, radio panel cl…
rinchen 4421bf6
fix(reticulum): prevent proxyGet timeouts during Nomad page fetches
rinchen 464d44b
feat: live LXMF attachments, propagation sync, and voice clips
rinchen 2deb0a4
feat(reticulum): meshchat-style topology, DM fixes, sniffer scroll, p…
rinchen 258c973
fix: resolve CodeQL alert and rns-stack compile errors on PR #596
rinchen f0e20a0
fix(reticulum): restore sidecar wire packet tap for sniffer
rinchen bfc94bc
fix(reticulum): stop duplicate sniffer entries from dual event subscr…
rinchen 5fae1b7
feat: apply Reticulum topology policy to Meshtastic/MeshCore peer graph
rinchen 43495a8
fix: reduce clutter on Meshtastic/MeshCore peer communication graph
rinchen bf98d31
feat(renderer): add Sniffer pause-to-inspect and batch packet ingestion
rinchen eefe3e3
fix(renderer): stabilize SVG pan-zoom and sniffer row expansion
rinchen aa9807c
fix(renderer): restore graph clicks, align labels, and sniffer pause
rinchen d7a8cb9
feat: Reticulum mesh parity — outbox, search, UX, and diagnostics
rinchen 383a0b2
fix: surface offline Reticulum USB interfaces and stale-port alerts
rinchen d653aa4
fix: resolve rns-stack compile errors on PR #596
rinchen c8a2191
chore(i18n): prune 118 unused keys and enforce orphaned-key check
rinchen 973275b
fix: show Reticulum identity display name in main window header
rinchen 4d7ba02
fix: dual-radio Noble BLE auto-connect and connection panel UX
rinchen 566c30f
fix: serialize Reticulum sidecar start and stop reconnect storm
rinchen 7a3dce8
feat: add Reticulum BLE transport, adapter lease, and device pickers
rinchen f86c285
fix: include rns-ble in dev sidecar auto-build
rinchen 49a15e7
fix: resolve Reticulum BLE adapter conflicts and connection UI
rinchen e75b441
fix: block Reticulum BLE scan while mesh radios are configured
rinchen 2cb8397
fix: resolve Reticulum sidecar CI and CodeQL alerts
rinchen d906b02
fix: enable triple-protocol BLE coexistence across mesh stacks
rinchen a93c8e5
chore: annotate ReticulumRadioPanel silent promise catches
rinchen 02b3b11
fix: BLE RNode synthesis, interface health UI, and connect grace
rinchen 71d485f
feat: move Reticulum interfaces to Connection and rename Radio tab
rinchen d4d0f05
feat: collapse Reticulum interfaces section on Connection tab
rinchen 885198c
feat: add RNode Wi-Fi pairing and tcp:// sidecar transport
rinchen ea1aacc
fix: harden Reticulum stack from manual audit findings
rinchen 18a5c62
fix: restore Reticulum wire packet tap and resolve PR #596 findings
rinchen 66f0150
feat: add check:environment dev setup validator
rinchen fb84a29
chore: bump deps
rinchen 8bbd001
fix: Nomad page proxy timeouts and CodeQL config-read alerts
rinchen 70d3061
feat: Reticulum config audit/repair, RNode RF edit, instant tooltips
rinchen 8db414e
fix: resolve CodeQL findings on config-read tests and MQTT schedule
rinchen f9e891a
feat: replace hardcoded English UI strings with i18n across protocols
rinchen c4eaac0
fix: finish AppPanel aria-labels and InactiveProtocolNotifier i18n
rinchen 7edfa4b
fix: vendor rsReticulum packet-tap patch for rns-stack CI
rinchen 49fb2c7
fix: remove duplicate Disable on unreachable Reticulum interfaces
rinchen 811b669
feat: add propagation auto-sync setting and improve sync UX
rinchen File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,157 @@ | ||
| name: Reticulum sidecar | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| on: | ||
| workflow_dispatch: | ||
| push: | ||
| paths: | ||
| - 'reticulum-sidecar/**' | ||
| - '.github/workflows/reticulum-sidecar.yaml' | ||
|
|
||
| jobs: | ||
| build: | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - os: ubuntu-latest | ||
| target: x86_64-unknown-linux-gnu | ||
| artifact: mesh-client-reticulum-linux-x64 | ||
| - os: macos-latest | ||
| target: aarch64-apple-darwin | ||
| artifact: mesh-client-reticulum-macos-arm64 | ||
| - os: windows-latest | ||
| target: x86_64-pc-windows-msvc | ||
| artifact: mesh-client-reticulum-win-x64 | ||
| runs-on: ${{ matrix.os }} | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| # Optional rns-stack path deps must exist on disk even for the default stub build. | ||
| # checkout@v6 only allows paths under GITHUB_WORKSPACE; Cargo expects Ratspeak siblings. | ||
| - name: Clone Ratspeak stack (rsReticulum, rsLXMF) | ||
| shell: bash | ||
| run: | | ||
| git clone --depth 1 https://github.com/ratspeak/rsReticulum.git "${GITHUB_WORKSPACE}/../rsReticulum" | ||
| git clone --depth 1 https://github.com/ratspeak/rsLXMF.git "${GITHUB_WORKSPACE}/../rsLXMF" | ||
| - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 | ||
| with: | ||
| targets: ${{ matrix.target }} | ||
| - name: Build sidecar (stub) | ||
| working-directory: reticulum-sidecar | ||
| run: | | ||
| cargo test | ||
| cargo build --release --target ${{ matrix.target }} | ||
| - name: Upload artifact | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: ${{ matrix.artifact }} | ||
| path: | | ||
| reticulum-sidecar/target/${{ matrix.target }}/release/mesh-client-reticulum* | ||
| retention-days: 14 | ||
|
|
||
| build-rns-stack: | ||
| env: | ||
| RS_RETICULUM_REF: 6d2b28475321bc15c8f60796513d8878b47ed3ab | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| include: | ||
| - os: ubuntu-latest | ||
| target: x86_64-unknown-linux-gnu | ||
| artifact: mesh-client-reticulum-rns-linux-x64 | ||
| - os: macos-latest | ||
| target: aarch64-apple-darwin | ||
| artifact: mesh-client-reticulum-rns-macos-arm64 | ||
| - os: windows-latest | ||
| target: x86_64-pc-windows-msvc | ||
| artifact: mesh-client-reticulum-rns-win-x64 | ||
| runs-on: ${{ matrix.os }} | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - name: Clone Ratspeak stack (rsReticulum, rsLXMF) | ||
| shell: bash | ||
| run: | | ||
| RNS_DIR="${GITHUB_WORKSPACE}/../rsReticulum" | ||
| PATCH="${GITHUB_WORKSPACE}/reticulum-sidecar/patches/rsReticulum-packet-tap.patch" | ||
| git clone https://github.com/ratspeak/rsReticulum.git "${RNS_DIR}" | ||
| git -C "${RNS_DIR}" checkout "${RS_RETICULUM_REF}" | ||
| git -C "${RNS_DIR}" apply --check "${PATCH}" | ||
| git -C "${RNS_DIR}" apply "${PATCH}" | ||
| git clone --depth 1 https://github.com/ratspeak/rsLXMF.git "${GITHUB_WORKSPACE}/../rsLXMF" | ||
| - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 | ||
| with: | ||
| targets: ${{ matrix.target }} | ||
| - name: Install Linux BLE build deps | ||
| if: runner.os == 'Linux' | ||
| run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config | ||
| - name: Build sidecar (rns-stack) | ||
| working-directory: reticulum-sidecar | ||
| run: | | ||
| cargo test --features rns-stack,rns-ble,rns-rnode-tcp | ||
| cargo build --release --target ${{ matrix.target }} --features rns-stack,rns-ble,rns-rnode-tcp | ||
| - name: Upload rns-stack artifact | ||
| uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: ${{ matrix.artifact }} | ||
| path: | | ||
| reticulum-sidecar/target/${{ matrix.target }}/release/mesh-client-reticulum* | ||
| retention-days: 14 | ||
|
|
||
| build-windows-arm64: | ||
| permissions: | ||
| contents: read | ||
| runs-on: windows-latest | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| # Optional rns-stack path deps must exist on disk even for the default stub build. | ||
| - name: Clone Ratspeak stack (rsReticulum, rsLXMF) | ||
| shell: bash | ||
| run: | | ||
| git clone --depth 1 https://github.com/ratspeak/rsReticulum.git "${GITHUB_WORKSPACE}/../rsReticulum" | ||
| git clone --depth 1 https://github.com/ratspeak/rsLXMF.git "${GITHUB_WORKSPACE}/../rsLXMF" | ||
| - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 | ||
| with: | ||
| targets: aarch64-pc-windows-msvc | ||
| - name: Build WoA sidecar (stub) | ||
| working-directory: reticulum-sidecar | ||
| run: | | ||
| cargo test | ||
| cargo build --release --target aarch64-pc-windows-msvc | ||
| - uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: mesh-client-reticulum-win-arm64 | ||
| path: reticulum-sidecar/target/aarch64-pc-windows-msvc/release/mesh-client-reticulum.exe | ||
| retention-days: 14 | ||
|
github-advanced-security[bot] marked this conversation as resolved.
Fixed
|
||
|
|
||
| build-windows-arm64-rns-stack: | ||
| env: | ||
| RS_RETICULUM_REF: 6d2b28475321bc15c8f60796513d8878b47ed3ab | ||
| permissions: | ||
| contents: read | ||
| runs-on: windows-latest | ||
| steps: | ||
| - uses: actions/checkout@v6 | ||
| - name: Clone Ratspeak stack (rsReticulum, rsLXMF) | ||
| shell: bash | ||
| run: | | ||
| RNS_DIR="${GITHUB_WORKSPACE}/../rsReticulum" | ||
| PATCH="${GITHUB_WORKSPACE}/reticulum-sidecar/patches/rsReticulum-packet-tap.patch" | ||
| git clone https://github.com/ratspeak/rsReticulum.git "${RNS_DIR}" | ||
| git -C "${RNS_DIR}" checkout "${RS_RETICULUM_REF}" | ||
| git -C "${RNS_DIR}" apply --check "${PATCH}" | ||
| git -C "${RNS_DIR}" apply "${PATCH}" | ||
| git clone --depth 1 https://github.com/ratspeak/rsLXMF.git "${GITHUB_WORKSPACE}/../rsLXMF" | ||
| - uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 | ||
| with: | ||
| targets: aarch64-pc-windows-msvc | ||
| - name: Build WoA sidecar (rns-stack) | ||
| working-directory: reticulum-sidecar | ||
| run: | | ||
| cargo test --features rns-stack,rns-ble,rns-rnode-tcp | ||
| cargo build --release --target aarch64-pc-windows-msvc --features rns-stack,rns-ble,rns-rnode-tcp | ||
| - uses: actions/upload-artifact@v7 | ||
| with: | ||
| name: mesh-client-reticulum-rns-win-arm64 | ||
| path: reticulum-sidecar/target/aarch64-pc-windows-msvc/release/mesh-client-reticulum.exe | ||
| retention-days: 14 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.