From d6b2f7c8f746586f9909a2ce7cd1b011658fe3e0 Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:36:37 -0600 Subject: [PATCH 1/7] docs(README): cleanup --- README.md | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/README.md b/README.md index 8c7eb26..70f6377 100644 --- a/README.md +++ b/README.md @@ -174,29 +174,6 @@ MeshChatX can be configured via command-line arguments or environment variables. | `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Data directory | | `--public-dir` | `MESHCHAT_PUBLIC_DIR` | - | Frontend files path | -## GPG Verification - -To ensure the security and authenticity of this project, all commits and releases are GPG signed. You can verify the signatures of the commits using the following steps: - -### 1. Import the Developer's Public Key - -Fetch the public key from the Gitea instance and import it into your GPG keyring: - -```bash -# Replace YOUR_TOKEN if the instance requires authentication -curl -s "https://git.quad4.io/api/v1/users/Ivan/gpg_keys" | jq -r '.[0].public_key' | gpg --import -``` - -### 2. Verify Commits - -Once the key is imported, you can verify the commits in your local clone: - -```bash -# Show signatures for the last 10 commits -git log --show-signature -n 10 -``` - -You should see "Good signature from Ivan " with the Key ID `1E0B37EE76428197`. ## Development @@ -212,14 +189,6 @@ We use [Task](https://taskfile.dev/) for automation. | `task test:cov` | Run tests with coverage reports | | `task build` | Build frontend and backend | -## TODO - -- [ ] RNS hot reload fix -- [ ] Offline Reticulum documentation tool -- [ ] Spam filter (based on keywords) -- [ ] TAK tool/integration -- [ ] RNS Tunnel - tunnel regular services over RNS -- [ ] RNS Filesync - P2P file sync ## Credits From f46248490fe32428bf7e7d3bf8e50e8e1e9229ea Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:36:53 -0600 Subject: [PATCH 2/7] feat(TODO): create todo --- TODO.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 TODO.md diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..7587b84 --- /dev/null +++ b/TODO.md @@ -0,0 +1,6 @@ +- [ ] RNS hot reload fix +- [ ] Offline Reticulum documentation tool +- [ ] Spam filter (based on keywords) +- [ ] TAK tool/integration +- [ ] RNS Tunnel - tunnel regular services over RNS +- [ ] RNS Filesync - P2P file sync \ No newline at end of file From 3d7924dce62b532e5115404e2947bdd29a3977c3 Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:38:35 -0600 Subject: [PATCH 3/7] chore(TODO): update tasks with progress and add new items --- TODO.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index 7587b84..c4ac446 100644 --- a/TODO.md +++ b/TODO.md @@ -1,6 +1,7 @@ -- [ ] RNS hot reload fix -- [ ] Offline Reticulum documentation tool -- [ ] Spam filter (based on keywords) -- [ ] TAK tool/integration -- [ ] RNS Tunnel - tunnel regular services over RNS -- [ ] RNS Filesync - P2P file sync \ No newline at end of file +- [ ] RNS hot reload - partially done +- [ ] Spam filter (based on keywords) - partially done +- [ ] RNS Tunnel - tunnel regular internet services over RNS +- [ ] RNS Filesync - P2P file sync over RNS + +## Maybe +- [ ] TAK tool/integration (maybe) From 282fe4ca6a62a377b3f5102f3303b23d6da22672 Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:51:33 -0600 Subject: [PATCH 4/7] docs(README): update with upcoming v4 release information --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 70f6377..8bab5ac 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # Reticulum MeshChatX +[![CI](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/ci.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/ci.yml) +[![Tests](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/tests.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/tests.yml) +[![Build](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/build.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/build.yml) +[![Docker](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/docker.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/docker.yml) + A [Reticulum MeshChat](https://github.com/liamcottle/reticulum-meshchat) fork from the future. From 6fbf9a3068f38bc5b3b2a329455c4daa1b7f6f45 Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:51:44 -0600 Subject: [PATCH 5/7] docs(README): fix --- README.md | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8bab5ac..93ac59b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Reticulum MeshChatX +> [!IMPORTANT] +> v4 coming soon with release builds for Linux and Windows. As well as updated container images and wheel packages. + [![CI](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/ci.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/ci.yml) [![Tests](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/tests.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/tests.yml) [![Build](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/build.yml/badge.svg?branch=master)](https://git.quad4.io/RNS-Things/MeshChatX/actions/workflows/build.yml) @@ -18,9 +21,12 @@ This project is separate from the original Reticulum MeshChat project, and is no To provide everything you need for Reticulum, LXMF, and LXST in one beautiful and feature-rich application. -- Desktop app +- Desktop app (Linux, Windows, macOS) - Self-host on your server easily with or without containers - Mobile app (one can dream) +- Reliable, "secure", fast and easy to use. + +Note on macOS: You will need to manually build or use containers since I do not have a macOS machine or runner. ## Quick Start (Docker - Recommended) @@ -43,7 +49,7 @@ docker run -d \ docker compose up -d ``` -Check [releases](https://git.quad4.io/RNS-Things/MeshChatX/releases) for pre-built binaries (AppImage, DEB, EXE) if you prefer standalone apps. +Check [releases](https://git.quad4.io/RNS-Things/MeshChatX/releases) for pre-built binaries (AppImage, DEB, EXE) if you prefer standalone apps. (coming soon) ## Major Features @@ -51,11 +57,11 @@ Check [releases](https://git.quad4.io/RNS-Things/MeshChatX/releases) for pre-bui - **Multi-Identity**: Switch between multiple Reticulum identities seamlessly. - **Modern UI/UX**: A completely redesigned, intuitive interface. - **Integrated Maps**: OpenLayers with MBTiles support for offline maps. -- **Security**: Built-in authentication, automatic HTTPS, and CORS protection. +- **Security**: Read more about it in the [Security](#security) section. - **Offline Docs**: Access Reticulum documentation without an internet connection. -- **Powerful Tools**: Includes RNStatus, RNProbe, RNCP, Micron Editor, Paper Message Generator and a Translator. -- **Page Archiving**: Built-in crawler and browser for archived pages. -- **Blocklist**: Block LXMF users, Telephony, and NomadNet Nodes. +- **Expanded Tools**: Includes RNStatus, RNProbe, RNCP, Micron Editor, Paper Message Generator and a Translator. +- **Page Archiving**: Built-in crawler and browser for archived pages offline. +- **Banishment**: Banish LXMF users, Telephony, and NomadNet Nodes. (and unbanish them) - **i18n**: Support for English, German, and Russian. ## Screenshots @@ -195,7 +201,22 @@ We use [Task](https://taskfile.dev/) for automation. | `task build` | Build frontend and backend | +## Security + +- ASAR Integrity (Electron 39) +- Integrity checks on all files (frontend and backend) +- HTTPS by default (automated locally generated certs) +- 3-layer CORS protection (loading.html, python backend server, electron main.js) +- Updated dependencies and daily scanning (OSV) +- Container image scanning (Trivy) +- SBOM for dependency observability and tracking (soon) +- Extensive testing and fuzzing. +- Rootless docker images (soon) +- Pinned actions and container images (supply chain security and deterministic builds) + ## Credits - [Liam Cottle](https://github.com/liamcottle) - Original Reticulum MeshChat - [RFnexus](https://github.com/RFnexus) - [micron-parser-js](https://github.com/RFnexus/micron-parser-js) +- [Marqvist](https://github.com/markqvist) - Reticulum + From 4aea5c09f33b6c4d2dd56a1fd4127a3339f2d19e Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:54:55 -0600 Subject: [PATCH 6/7] docs(README): update task commands --- README.md | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 93ac59b..717509e 100644 --- a/README.md +++ b/README.md @@ -190,23 +190,43 @@ MeshChatX can be configured via command-line arguments or environment variables. We use [Task](https://taskfile.dev/) for automation. -| Task | Description | -| :-------------- | :---------------------------------- | -| `task install` | Install all dependencies | -| `task run` | Run the application | -| `task lint` | Run all linters (Python & Frontend) | -| `task format` | Format all code (Python & Frontend) | -| `task test` | Run all tests | -| `task test:cov` | Run tests with coverage reports | -| `task build` | Build frontend and backend | +| Task | Description | +| :---------------------- | :--------------------------------------------- | +| `task install` | Install all dependencies | +| `task run` | Run the application | +| `task dev` | Run the application in development mode | +| `task lint` | Run all linters (Python & Frontend) | +| `task lint-python` | Lint Python code only | +| `task lint-frontend` | Lint frontend code only | +| `task format` | Format all code (Python & Frontend) | +| `task format-python` | Format Python code only | +| `task format-frontend` | Format frontend code only | +| `task test` | Run all tests | +| `task test:cov` | Run tests with coverage reports | +| `task test-python` | Run Python tests only | +| `task test-frontend` | Run frontend tests only | +| `task build` | Build frontend and backend | +| `task build-frontend` | Build only the frontend | +| `task wheel` | Build Python wheel package | +| `task compile` | Compile Python code to check for syntax errors | +| `task build-docker` | Build Docker image using buildx | +| `task run-docker` | Run Docker container using docker-compose | +| `task build-appimage` | Build Linux AppImage | +| `task build-exe` | Build Windows portable executable | +| `task build-electron-linux` | Build Linux Electron app | +| `task build-electron-windows` | Build Windows Electron apps | +| `task android-prepare` | Prepare Android build | +| `task android-build` | Build Android APK | +| `task build-flatpak` | Build Flatpak package | +| `task clean` | Clean build artifacts and dependencies | ## Security -- ASAR Integrity (Electron 39) -- Integrity checks on all files (frontend and backend) +- [ASAR Integrity](https://www.electronjs.org/docs/latest/tutorial/asar-integrity) (Electron 39) +- Built-in automatic integrity checks on all files (frontend and backend) - HTTPS by default (automated locally generated certs) -- 3-layer CORS protection (loading.html, python backend server, electron main.js) +- 3-layer redundant CORS protection (loading.html, python backend server, electron main.js) - Updated dependencies and daily scanning (OSV) - Container image scanning (Trivy) - SBOM for dependency observability and tracking (soon) @@ -218,5 +238,5 @@ We use [Task](https://taskfile.dev/) for automation. - [Liam Cottle](https://github.com/liamcottle) - Original Reticulum MeshChat - [RFnexus](https://github.com/RFnexus) - [micron-parser-js](https://github.com/RFnexus/micron-parser-js) -- [Marqvist](https://github.com/markqvist) - Reticulum +- [Marqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST From 978d917e895b7ceb29f013140f239a62865823db Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Sat, 3 Jan 2026 16:55:01 -0600 Subject: [PATCH 7/7] chore(TODO): add new tasks --- TODO.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO.md b/TODO.md index c4ac446..c567502 100644 --- a/TODO.md +++ b/TODO.md @@ -2,6 +2,8 @@ - [ ] Spam filter (based on keywords) - partially done - [ ] RNS Tunnel - tunnel regular internet services over RNS - [ ] RNS Filesync - P2P file sync over RNS +- [ ] Rootless docker images +- [ ] SBOM action ## Maybe - [ ] TAK tool/integration (maybe)