reticulum-meshchatx 4.6.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- reticulum_meshchatx-4.6.0/LICENSE +39 -0
- reticulum_meshchatx-4.6.0/MANIFEST.in +14 -0
- reticulum_meshchatx-4.6.0/PKG-INFO +450 -0
- reticulum_meshchatx-4.6.0/README.md +414 -0
- reticulum_meshchatx-4.6.0/meshchatx/__init__.py +6 -0
- reticulum_meshchatx-4.6.0/meshchatx/android_push_bridge.py +177 -0
- reticulum_meshchatx-4.6.0/meshchatx/meshchat.py +17344 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/AboutPage-BjANd4Jq.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/AboutPage-CZvsULr6.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/AddInterfacePage-COv4ALsh.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/AddInterfacePage-Y2ovK7hH.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ArchivesPage-Bus0ARzo.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ArchivesPage-C0aflyuK.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/AuthPage-WlZktw6K.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/BlockedPage-SwUXrcLt.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/BotsPage-BKnOfPRW.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/BotsPage-Ca0uq92A.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/CallPage-CE_X9csN.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/CallPage-DYVFBwuB.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ContactsPage-BYodpSNz.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ContactsPage-Cuyt0MkI.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/DebugLogsPage-Bo8TE-Yd.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/DebugLogsPage-EpW9oAxp.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/DocsPage-BTBI2ipZ.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/DocsPage-VTKfy8iT.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ForwarderPage-Cx5Bu8vB.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/IdentitiesPage-CMqQu2d2.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/IdentitiesPage-CZfp41I1.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/InterfacesPage-B80j69Uv.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/InterfacesPage-Tx1JSVcL.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/LicensesPage-BwHJchlt.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/LicensesPage-NZQX31ZP.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/MapPage-C8o4cuVD.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/MapPage-T_QGWvwA.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/MessagesPage-BcvSuHIG.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/MessagesPage-wq7zIMi4.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/MicronEditorPage-BaLSahx0.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/MicronEditorPage-CLh05wGL.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/NetworkVisualiserPage-EUyNyxEW.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/NetworkVisualiserPage-mjtD8QYr.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/NomadNetworkPage-B-FoKNx-.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/NomadNetworkPage-DbXjrf1N.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/PageNodesPage-BCvuq4TL.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/PaperMessagePage-0FbemC5Y.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/PaperMessagePage-DcC7BW_g.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/PingPage-Bvg6AZPg.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ProfileIconPage-BRwwsafB.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/PropagationNodesPage-CgP_Gvgg.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNCPPage-gZGz4AJL.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNGitExplorerPage-73aIOcxe.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNPathPage-BijlIekz.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNPathPage-Dw_g4K8g.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNPathTracePage-lTsIwtkZ.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNProbePage-DM2CP_7-.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNStatusPage-DiyqUped.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNodeFlasherPage-BEYCRl-y.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RNodeFlasherPage-DQsPM90B.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RepositoryServerPage-D8rf11i1.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ReticulumConfigEditorPage-Bsmd7pvt.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/RobotoMonoNerdFont-Regular-DyU2aSNn.ttf +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/SettingsPage-DupQKToK.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/SettingsPage-xXGVTEJX.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/SieveFiltersPage-Bw2B_q_D.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/SieveFiltersPage-F8qfYQgo.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ToolsPage-CUZ51FVR.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/ToolsPage-WbzcSPpd.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/TranslatorPage-vZY6AYkl.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/app-DO9NOU6D.js +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/app-c-gV-8rg.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/data-BF1r6TM-.json +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/logo-chat-bubble.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/logo.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/network-visualiser/interface_connected.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/network-visualiser/interface_disconnected.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/network-visualiser/server.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/network-visualiser/server_1hop.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/network-visualiser/user.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/network-visualiser/user_1hop.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/images/reticulum_logo_512.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/c2dec.js +4144 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/c2dec.wasm +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/c2enc.js +4144 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/c2enc.wasm +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/codec2-lib.js +131 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/codec2-microphone-recorder.js +219 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/index.html +117 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/integrity.json +15 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/processor.js +54 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/sox.js +5801 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/sox.wasm +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/codec2-emscripten/wav-encoder.js +43 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/tailwindcss/tailwind-v3.4.3-forms-v0.5.7.js +19477 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/js/telephone-pcm-capture.worklet.js +23 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/logo-DZE3PCxd.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/materialdesignicons-webfont-B7mPwVP_.ttf +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/materialdesignicons-webfont-CSr8KVlo.eot +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/materialdesignicons-webfont-Dp5v-WZN.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/materialdesignicons-webfont-PXm3-2wK.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-400-italic-CMQj_TQM.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-400-italic-Dm4hr-Ag.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-400-normal-BDYvNhAR.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-400-normal-CHP_ranX.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-700-normal-D8UNalU-.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-700-normal-DYZmzPmX.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-ext-400-italic-C9NI8UaU.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-ext-400-italic-DqW_YkPk.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-ext-400-normal-BjDhGU6t.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-ext-400-normal-d9FrwbiD.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-ext-700-normal-D83T7awq.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-cyrillic-ext-700-normal-OK-fZO_i.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-devanagari-400-italic-BpEXw0fu.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-devanagari-400-italic-aza5nvbj.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-devanagari-400-normal-C3FccbrF.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-devanagari-400-normal-g9fsM2jL.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-devanagari-700-normal-CT12sGlc.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-devanagari-700-normal-DVs0dmkg.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-400-italic-Cw158ua2.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-400-italic-Ds3lC5jm.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-400-normal-Be2BcUUc.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-400-normal-DCESwnT1.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-700-normal-DDNJsN3F.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-700-normal-x3kNWF-0.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-ext-400-italic-D9i0Od8_.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-ext-400-italic-DlxXzGt2.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-ext-400-normal-L11LEhi4.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-ext-400-normal-i2oSBwXz.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-ext-700-normal-BOmIwFkq.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-greek-ext-700-normal-Dq1WA5-1.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-400-italic-4m5KtZ19.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-400-italic-D8X3Awh8.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-400-normal-BTkUljjl.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-400-normal-DPpKfCgK.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-700-normal-CrvTEWhy.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-700-normal-ZyrKABVF.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-ext-400-italic-BXXaecLH.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-ext-400-italic-C3uzHanu.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-ext-400-normal-CNh9dRW_.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-ext-400-normal-CVf-LbaS.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-ext-700-normal-BypTtJma.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-latin-ext-700-normal-CgsG9aVh.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-vietnamese-400-italic-Dotu2pZp.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-vietnamese-400-italic-da8J1rYs.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-vietnamese-400-normal-C3Al4sv4.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-vietnamese-400-normal-D2wP-Vm-.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-vietnamese-700-normal-1GL2JyGE.woff +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/noto-sans-vietnamese-700-normal-DayJ0F-f.woff2 +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/proto/audio_call.proto +31 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/rolldown-runtime-CX9428sy.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/shared-async-CusJBeER.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/shared-async-DpP3TJB9.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-compressor-DLDT3RcQ.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-mdi-CVzDigSe.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-micron-BOVjVrM9.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-micron-CT2SZDEQ.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-other-CqUaw2NB.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-other-TR3-bYXm.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-vis-BblZmEt3.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-vis-BkZRDAOB.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-vue-BHgjMCp6.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-vue-router-cDL0gM8h.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-vuetify-Bb4JqUcu.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/assets/vendor-vuetify-DL5GiwZN.css +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/favicons/favicon-512x512.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/index.html +103 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/manifest.json +17 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/meshchatx-docs/meshchatx.md +164 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/meshchatx-docs/meshchatx_linux_sandbox.md +164 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/meshchatx-docs/meshchatx_on_android_with_termux.md +87 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/meshchatx-docs/meshchatx_on_raspberry_pi.md +233 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/meshchatx-docs/nomadmesh_pages.md +46 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/repository-server-index.html +137 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/CNAME +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_de.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_es.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_jp.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_nl.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_pl.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_pt-br.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_tr.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_uk.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/connect_zh-cn.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_de.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_es.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_jp.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_nl.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_pl.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_pt-br.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_tr.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_uk.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/credits_zh-cn.html +39 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto.html +39 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_de.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_es.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_jp.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_nl.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_pl.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_pt-br.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_tr.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_uk.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/crypto_zh-cn.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/css/water.css +1710 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_de.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_es.html +20 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_jp.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_nl.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_pl.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_pt-br.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_tr.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_uk.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/docs_zh-cn.html +19 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_de.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_es.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_jp.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_nl.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_pl.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_pt-br.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_tr.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_uk.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/donate_zh-cn.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/gfx/reticulum_logo_512.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_de.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_es.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_jp.html +32 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_nl.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_pl.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_pt-br.html +32 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_tr.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_uk.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/hardware_zh-cn.html +33 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_de.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_es.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_jp.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_nl.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_pl.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_pt-br.html +38 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_tr.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_uk.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/index_zh-cn.html +37 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license-de.html +35 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_de.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_es.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_jp.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_nl.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_pl.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_pt-br.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_tr.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_uk.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/license_zh-cn.html +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_heltec32.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_heltec32v20.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_heltec32v30.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_heltec32v4.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_opencomxl.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_rak4631.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_rak4631.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_rnode.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_rnodev2.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_rnodev2.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_t114.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_t3s3.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_t3s3.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_t3v10.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_t3v20.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_t3v21.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_tbeam.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_tbeam_supreme.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_tbeam_supreme.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_tdeck.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_tdeck.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/board_techo.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/columba.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/if_mode_graph_b.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/lxst_phone.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/meshchat_1.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/meshchatx.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/nomadnet_3.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/radio_is5ac.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/radio_rblhg5.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/rbrowser.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/retibbs.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/rnphone.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_images/sideband_devices.webp +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/examples.rst.txt +142 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/forhumans.rst.txt +4 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/gettingstartedfast.rst.txt +731 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/hardware.rst.txt +375 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/index.rst.txt +46 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/interfaces.rst.txt +1404 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/license.rst.txt +36 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/networks.rst.txt +350 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/reference.rst.txt +214 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/software.rst.txt +355 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/support.rst.txt +60 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/understanding.rst.txt +1011 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/using.rst.txt +1760 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/whatis.rst.txt +203 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_sources/zen.rst.txt +453 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/_sphinx_javascript_frameworks_compat.js +134 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/basic.css +906 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/check-solid.svg +4 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/clipboard.min.js +7 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/copy-button.svg +5 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/copybutton.css +94 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/copybutton.js +248 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/copybutton_funcs.js +73 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/custom.css +20 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/debug.css +69 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/doctools.js +149 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/documentation_options.js +13 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/file.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/jquery-3.6.0.js +10881 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/jquery.js +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/language_data.js +192 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/minus.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/plus.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/pygments.css +250 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/rns_logo_512.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/scripts/furo-extensions.js +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/scripts/furo.js +3 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/scripts/furo.js.LICENSE.txt +7 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/scripts/furo.js.map +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/searchtools.js +635 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/skeleton.css +296 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/sphinx_highlight.js +154 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/styles/furo-extensions.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/styles/furo-extensions.css.map +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/styles/furo.css +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/styles/furo.css.map +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/underscore-1.13.1.js +2042 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/_static/underscore.js +6 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/examples.html +3673 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/forhumans.html +304 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/genindex.html +846 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/gettingstartedfast.html +976 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/hardware.html +684 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/index.html +643 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/interfaces.html +1694 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/license.html +353 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/networks.html +672 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/objects.inv +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/reference.html +2482 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/search.html +315 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/searchindex.js +1 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/software.html +543 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/support.html +391 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/understanding.html +1346 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/using.html +1828 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/whatis.html +513 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/manual/zen.html +685 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start.html +59 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_de.html +58 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_es.html +64 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_jp.html +57 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_nl.html +57 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_pl.html +58 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_pt-br.html +56 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_tr.html +58 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_uk.html +57 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/start_zh-cn.html +57 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/zen.html +229 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/reticulum-docs-bundled/current/zenofreticulum.html +243 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/LICENSE +21 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/README.md +86 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/index.html +2263 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/crypto-js@3.9.1-1/core.js +756 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/crypto-js@3.9.1-1/md5.js +256 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/esptool-js@0.4.5/bundle.js +4565 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/integrity.json +12 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/nrf52_dfu_flasher.js +409 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/rnode.js +868 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/tailwindcss/tailwind-v3.4.3-forms-v0.5.7.js +19477 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/js/zip.min.js +2965 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/rnode-flasher/reticulum_logo_512.png +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/robots.txt +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/service-worker.js +2 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/vendor/micron-parser-go/integrity.json +5 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/vendor/micron-parser-go/micron-parser-go.wasm +0 -0
- reticulum_meshchatx-4.6.0/meshchatx/public/vendor/micron-parser-go/wasm_exec.js +575 -0
- reticulum_meshchatx-4.6.0/meshchatx/repository_http_standalone.py +61 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/__init__.py +31 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/__init__.py +3 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/announce_handler.py +29 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/announce_manager.py +222 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/archiver_manager.py +62 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/async_utils.py +83 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/audio_codec.py +385 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/auto_propagation_manager.py +178 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/bot_handler.py +578 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/bot_process.py +139 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/bot_templates.py +294 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/colour_utils.py +11 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/community_interfaces.py +117 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/community_interfaces_directory.py +241 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/config_manager.py +585 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/data/THIRD_PARTY_NOTICES.txt +2760 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/data/community_interfaces.json +321 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/data/licenses_frontend.json +5324 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/__init__.py +568 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/access_attempts.py +233 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/announces.py +221 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/config.py +42 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/contacts.py +139 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/crash_history.py +67 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/debug_logs.py +100 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/gifs.py +260 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/map_drawings.py +51 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/messages.py +623 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/misc.py +342 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/provider.py +194 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/ringtones.py +77 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/schema.py +1275 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/sticker_packs.py +225 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/stickers.py +401 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/telemetry.py +108 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/telephone.py +123 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/database/voicemails.py +85 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/docs_manager.py +700 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/forwarding_manager.py +165 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/gif_utils.py +186 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/http_url_guard.py +111 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/identity_context.py +657 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/identity_manager.py +256 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/integrity_manager.py +281 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/interface_config_parser.py +99 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/interface_editor.py +85 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/interface_port_check.py +124 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/interfaces/WebsocketClientInterface.py +137 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/interfaces/WebsocketServerInterface.py +164 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/interfaces/__init__.py +3 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/legacy_migrator.py +182 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/licenses_collector.py +538 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/local_message_retention.py +70 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/lxmf_message_fields.py +27 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/lxmf_sieve.py +215 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/lxmf_utils.py +624 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/map_manager.py +391 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/markdown_renderer.py +225 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/meshchat_utils.py +262 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/message_handler.py +168 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/nomadnet_downloader.py +349 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/nomadnet_utils.py +64 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/page_node.py +435 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/page_node_manager.py +142 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/persistent_log_handler.py +279 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/recovery/__init__.py +6 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/recovery/crash_recovery.py +877 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/recovery/health_monitor.py +157 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/repository_server_manager.py +710 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/reticulum_pathfinding.py +150 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/ringtone_manager.py +45 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/rncp_handler.py +553 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/rngit_tool.py +331 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/rnpath_handler.py +141 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/rnpath_trace_handler.py +105 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/rnprobe_handler.py +196 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/rnstatus_handler.py +304 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/sideband_commands.py +5 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/sticker_pack_utils.py +146 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/sticker_utils.py +682 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/telemetry_utils.py +118 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/telephone_manager.py +523 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/translator_handler.py +576 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/voicemail_manager.py +570 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/backend/web_audio_bridge.py +251 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/env_utils.py +12 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/path_utils.py +74 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/ssl_self_signed.py +82 -0
- reticulum_meshchatx-4.6.0/meshchatx/src/version.py +6 -0
- reticulum_meshchatx-4.6.0/pyproject.toml +129 -0
- reticulum_meshchatx-4.6.0/reticulum_meshchatx.egg-info/PKG-INFO +450 -0
- reticulum_meshchatx-4.6.0/reticulum_meshchatx.egg-info/SOURCES.txt +593 -0
- reticulum_meshchatx-4.6.0/reticulum_meshchatx.egg-info/dependency_links.txt +1 -0
- reticulum_meshchatx-4.6.0/reticulum_meshchatx.egg-info/entry_points.txt +5 -0
- reticulum_meshchatx-4.6.0/reticulum_meshchatx.egg-info/requires.txt +17 -0
- reticulum_meshchatx-4.6.0/reticulum_meshchatx.egg-info/top_level.txt +2 -0
- reticulum_meshchatx-4.6.0/setup.cfg +4 -0
- reticulum_meshchatx-4.6.0/tests/test_android_meshchat_wrapper.py +64 -0
- reticulum_meshchatx-4.6.0/tests/test_android_push_bridge.py +367 -0
- reticulum_meshchatx-4.6.0/tests/test_meshchatx_package_version.py +10 -0
- reticulum_meshchatx-4.6.0/vendor/README.txt +8 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.dockerignore +10 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/bearer.yml +30 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/build-docs.yml +200 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/build-test.yml +27 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/docker.yml +64 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/publish.yml +74 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/scan.yml +26 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitea/workflows/test.yml +44 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.gitignore +43 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/.pypirc.example +8 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/CHANGELOG.md +572 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/CONTRIBUTING.md +42 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/LICENSE +12 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/Makefile +143 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/README.md +294 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/SECURITY.md +9 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/TODO.md +4 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/Taskfile.yml +218 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docker/Dockerfile +24 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docker/Dockerfile.Build +22 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docker/docker-compose.yml +14 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/.dockerignore +7 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/.gitignore +29 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/Dockerfile +30 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/Dockerfile.prod +42 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/Makefile +46 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/README.md +87 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/docker-compose.prod.yml +66 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/api-reference.mo +0 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/api-reference.po +535 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/creating-bots.mo +0 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/creating-bots.po +537 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/index.mo +0 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/index.po +64 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/quick-start.mo +0 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/locales/ru/LC_MESSAGES/quick-start.po +220 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/make.bat +35 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/nginx.conf +86 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/poetry.lock +609 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/pyproject.toml +29 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/source/_templates/header-buttons.html +7 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/source/api-reference.rst +492 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/source/conf.py +42 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/source/creating-bots.rst +582 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/source/index.rst +26 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/docs/source/quick-start.rst +127 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/__init__.py +59 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/__version__.py +17 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/attachments.py +128 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/cli.py +738 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/cogs_core.py +187 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/colors.py +230 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/commands.py +162 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/config.py +108 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/core.py +1296 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/events.py +176 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/help.py +163 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/middleware.py +114 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/moderation.py +145 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/nlp.py +255 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/permissions.py +202 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/scheduler.py +194 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/signatures.py +300 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/storage.py +590 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/templates/__init__.py +11 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/templates/cog_test_bot.py +94 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/templates/echo_bot.py +91 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/templates/note_bot.py +137 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/templates/reminder_bot.py +128 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/transport.py +219 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/lxmfy/validation.py +297 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/poetry.lock +1234 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/pyproject.toml +55 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/scripts/osv_scan.sh +38 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/__init__.py +1 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/conftest.py +179 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/pytest.ini +17 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_chaos.py +136 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_cli.py +441 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_client.py +379 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_core.py +354 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_e2e.py +445 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_external_cogs.py +198 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_fsm_config.py +89 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_fuzzing.py +26 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_middleware.py +33 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_parsing.py +78 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_permissions.py +84 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_security.py +101 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_signatures.py +86 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_storage.py +63 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_hypothesis_validation.py +50 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_integration.py +301 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_leaks.py +101 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_links.py +70 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_minimal_crash.py +10 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_nlp.py +65 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_nlp_manifolds.py +112 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_nlp_robustness.py +89 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_performance.py +232 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_propagation.py +503 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_real_world_e2e.py +148 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_realistic_external_cogs.py +172 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_recursive_cogs.py +52 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_reliability.py +130 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_robustness_nlp.py +64 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_signatures.py +443 -0
- reticulum_meshchatx-4.6.0/vendor/lxmfy/tests/test_smoke.py +51 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
BSD Zero Clause License (0BSD)
|
|
2
|
+
|
|
3
|
+
Copyright (C) 2026 Quad4 (modifications and additions only;
|
|
4
|
+
upstream Reticulum MeshChat portions remain under the MIT notice below)
|
|
5
|
+
|
|
6
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
7
|
+
purpose with or without fee is hereby granted.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
10
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
11
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
12
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
13
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
14
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
15
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
16
|
+
|
|
17
|
+
-------------------------------------------------------------------------
|
|
18
|
+
This project is a derivative of Reticulum MeshChat by Liam Cottle.
|
|
19
|
+
The original portions are subject to the following notice:
|
|
20
|
+
|
|
21
|
+
Copyright (c) 2024 Liam Cottle
|
|
22
|
+
|
|
23
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
24
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
25
|
+
in the Software without restriction, including without limitation the rights
|
|
26
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
27
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
28
|
+
furnished to do so, subject to the following conditions:
|
|
29
|
+
|
|
30
|
+
The above copyright notice and this permission notice shall be included in all
|
|
31
|
+
copies or substantial portions of the Software.
|
|
32
|
+
|
|
33
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
34
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
35
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
36
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
37
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
38
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
39
|
+
SOFTWARE.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
graft vendor
|
|
2
|
+
recursive-include meshchatx/public *
|
|
3
|
+
recursive-exclude meshchatx/public/repository-server-bundled *
|
|
4
|
+
recursive-include meshchatx/src/backend *
|
|
5
|
+
include meshchatx/src/version.py
|
|
6
|
+
include meshchatx/src/__init__.py
|
|
7
|
+
include meshchatx/meshchat.py
|
|
8
|
+
include meshchatx/__init__.py
|
|
9
|
+
|
|
10
|
+
exclude meshchatx/src/frontend
|
|
11
|
+
recursive-exclude meshchatx/src/frontend *
|
|
12
|
+
recursive-exclude * __pycache__
|
|
13
|
+
recursive-exclude * *.py[co]
|
|
14
|
+
|
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: reticulum-meshchatx
|
|
3
|
+
Version: 4.6.0
|
|
4
|
+
Summary: A simple mesh network communications app powered by the Reticulum Network Stack
|
|
5
|
+
Author: Quad4
|
|
6
|
+
License-Expression: 0BSD AND MIT
|
|
7
|
+
Project-URL: Homepage, https://git.quad4.io/RNS-Things/MeshChatX
|
|
8
|
+
Keywords: reticulum,meshchat,meshchatx,lxmf,rns
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Intended Audience :: Other Audience
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Communications
|
|
16
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
17
|
+
Requires-Python: >=3.11
|
|
18
|
+
Description-Content-Type: text/markdown
|
|
19
|
+
License-File: LICENSE
|
|
20
|
+
Requires-Dist: aiohttp>=3.13.3
|
|
21
|
+
Requires-Dist: lxmf>=0.9.6
|
|
22
|
+
Requires-Dist: psutil>=7.2.2
|
|
23
|
+
Requires-Dist: bleak==3.0.1
|
|
24
|
+
Requires-Dist: rns>=1.2.1
|
|
25
|
+
Requires-Dist: websockets>=16.0
|
|
26
|
+
Requires-Dist: bcrypt<6.0.0,>=5.0.0
|
|
27
|
+
Requires-Dist: aiohttp-session<3.0.0,>=2.12.1
|
|
28
|
+
Requires-Dist: cryptography<47.0.0,>=46.0.7
|
|
29
|
+
Requires-Dist: pycparser>=3.0
|
|
30
|
+
Requires-Dist: audioop-lts>=0.2.2; python_version >= "3.13"
|
|
31
|
+
Requires-Dist: ply<4.0,>=3.11
|
|
32
|
+
Requires-Dist: lxst>=0.4.6
|
|
33
|
+
Requires-Dist: jaraco.context>=6.1.1
|
|
34
|
+
Requires-Dist: miniaudio<2.0,>=1.70
|
|
35
|
+
Dynamic: license-file
|
|
36
|
+
|
|
37
|
+
# Reticulum MeshChatX
|
|
38
|
+
|
|
39
|
+
[Русский](lang/README.ru.md) | [Deutsch](lang/README.de.md) | [Italiano](lang/README.it.md) | [中文](lang/README.zh.md) | [日本語](lang/README.ja.md)
|
|
40
|
+
|
|
41
|
+
A extensively modified and feature-rich fork of [Reticulum MeshChat](https://github.com/liamcottle/reticulum-meshchat) by Liam Cottle.
|
|
42
|
+
|
|
43
|
+
This project is independent from the original Reticulum MeshChat project and is not affiliated with it.
|
|
44
|
+
|
|
45
|
+
- Website: [meshchatx.com](https://meshchatx.com)
|
|
46
|
+
- Source: [git.quad4.io/RNS-Things/MeshChatX](https://git.quad4.io/RNS-Things/MeshChatX)
|
|
47
|
+
- Official GitHub Mirror: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
|
|
48
|
+
- Releases: [github.com/Quad4-Software/MeshChatX](https://github.com/Quad4-Software/MeshChatX)
|
|
49
|
+
- Changelog: [`CHANGELOG.md`](CHANGELOG.md)
|
|
50
|
+
- Donate: [`donate.md`](donate.md) ([Donation](#donation))
|
|
51
|
+
|
|
52
|
+
<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>
|
|
53
|
+
|
|
54
|
+
rngit: `git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
|
|
55
|
+
|
|
56
|
+
NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
|
|
57
|
+
|
|
58
|
+
## Important Changes from Reticulum MeshChat
|
|
59
|
+
|
|
60
|
+
- Uses LXST for calls
|
|
61
|
+
- Replaced Peewee ORM with raw SQL.
|
|
62
|
+
- Replaced Axios with native fetch.
|
|
63
|
+
- Uses Electron 41.x (bundled Node 24 runtime).
|
|
64
|
+
- .whls ships with webserver and built-in frontend assets for more deployment options.
|
|
65
|
+
- i18n
|
|
66
|
+
- PNPM and Poetry for dependency management.
|
|
67
|
+
|
|
68
|
+
> [!WARNING]
|
|
69
|
+
> MeshChatX is not guaranteed to be wire/data compatible with older Reticulum MeshChat releases. Back up data before migration/testing.
|
|
70
|
+
|
|
71
|
+
> [!WARNING]
|
|
72
|
+
> Legacy systems are not supported yet. Current baseline is Python `>=3.11` and Node `>=24` (Electron 41 aligns with Node 24; `package.json` `engines` and CI use the same line).
|
|
73
|
+
|
|
74
|
+
## Requirements
|
|
75
|
+
|
|
76
|
+
- Python `>=3.11` (from `pyproject.toml`)
|
|
77
|
+
- Node.js `>=24` (from `package.json` `engines`)
|
|
78
|
+
- pnpm `10.33.0` (from `package.json` `packageManager`)
|
|
79
|
+
- Poetry (used by `Taskfile.yml` and CI workflows)
|
|
80
|
+
|
|
81
|
+
**Browser Versions Required:**
|
|
82
|
+
|
|
83
|
+
Safari 16.4 or later, Chrome 111 or later, Firefox 128 or later (bundled web UI).
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
task install
|
|
87
|
+
task lint:all
|
|
88
|
+
task test:all
|
|
89
|
+
task build:all
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## Install Methods
|
|
93
|
+
|
|
94
|
+
Use the method that matches your environment and packaging preference.
|
|
95
|
+
|
|
96
|
+
| Method | Includes frontend assets | Architectures | Best for |
|
|
97
|
+
| ----------------------- | ------------------------ | ------------------------------------------ | ---------------------------------------------- |
|
|
98
|
+
| Docker image | Yes | `linux/amd64`, `linux/arm64` | Fastest setup on Linux servers/hosts |
|
|
99
|
+
| Python wheel (`.whl`) | Yes | Any Python-supported architecture | Headless/web-server install without Node build |
|
|
100
|
+
| Linux AppImage | Yes | `x64`, `arm64` | Portable desktop use |
|
|
101
|
+
| Debian package (`.deb`) | Yes | `x64`, `arm64` | Debian/Ubuntu installs |
|
|
102
|
+
| RPM package (`.rpm`) | Yes | CI-runner dependent for published artifact | Fedora/RHEL/openSUSE style systems |
|
|
103
|
+
| From source | Built locally | Host architecture | Development and custom builds |
|
|
104
|
+
|
|
105
|
+
Notes:
|
|
106
|
+
|
|
107
|
+
- GitHub Actions builds tagged releases (Linux wheel/AppImage/deb/rpm, Windows, macOS, Flatpak, Android APKs when the tag is on `dev` or `master`, SLSA, draft release) in one run via `.github/workflows/build-release.yml`; the container image via `.github/workflows/docker.yml`. Branch and PR Android CI stays in `.github/workflows/android-build.yml`.
|
|
108
|
+
- Linux `x64` and `arm64` AppImage + DEB are built on GitHub; RPM is attempted and uploaded when produced.
|
|
109
|
+
|
|
110
|
+
## Docker
|
|
111
|
+
|
|
112
|
+
- **Docker Hub:** `quad4io/meshchatx`
|
|
113
|
+
- **GHCR:** `ghcr.io/quad4-software/meshchatx`
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
docker compose up -d
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
docker run -d --name reticulum-meshchatx \
|
|
121
|
+
--restart unless-stopped \
|
|
122
|
+
--security-opt no-new-privileges:true \
|
|
123
|
+
-p 127.0.0.1:8000:8000 \
|
|
124
|
+
-v meshchatx-config:/config \
|
|
125
|
+
ghcr.io/quad4-software/meshchatx:latest
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
You can substitute `quad4io/meshchatx:latest` for the image if you prefer Docker Hub.
|
|
129
|
+
|
|
130
|
+
Default compose file maps:
|
|
131
|
+
|
|
132
|
+
- `127.0.0.1:8000` on host -> container port `8000`
|
|
133
|
+
- Docker **named volume** `meshchatx-config` -> `/config` for persistence (works with the image `meshchat` user, UID 1000, without bind-mount permission fixes)
|
|
134
|
+
|
|
135
|
+
**Optional: bind mount a host directory instead**
|
|
136
|
+
|
|
137
|
+
If you want data under a host path (for example `./meshchat-config`), replace the volume line with `-v "$(pwd)/meshchat-config:/config"` (Compose: change the service `volumes` entry to that bind path). The container runs as **UID 1000**; the host directory must be writable by that uid (typical fix: `sudo chown -R 1000:1000 ./meshchat-config`). If the directory is empty on first run, create it first so Docker does not create it as root-only.
|
|
138
|
+
|
|
139
|
+
**Inspect or reset the named volume**
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
docker volume inspect meshchatx-config
|
|
143
|
+
# remove container and delete persisted data (destructive)
|
|
144
|
+
docker rm -f reticulum-meshchatx
|
|
145
|
+
docker volume rm meshchatx-config
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Install from Release Artifacts
|
|
149
|
+
|
|
150
|
+
### 1) Linux AppImage (x64/arm64)
|
|
151
|
+
|
|
152
|
+
1. Download `ReticulumMeshChatX-v<version>-linux-<arch>.AppImage` from releases.
|
|
153
|
+
2. Make it executable and run:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
|
|
157
|
+
./ReticulumMeshChatX-v*-linux-*.AppImage
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### 2) Debian/Ubuntu `.deb` (x64/arm64)
|
|
161
|
+
|
|
162
|
+
1. Download `ReticulumMeshChatX-v<version>-linux-<arch>.deb`.
|
|
163
|
+
2. Install:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### 3) RPM-based systems
|
|
170
|
+
|
|
171
|
+
1. Download `ReticulumMeshChatX-v<version>-linux-<arch>.rpm` if present in the release.
|
|
172
|
+
2. Install with your distro tool:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 4) Python wheel (`.whl`)
|
|
179
|
+
|
|
180
|
+
Release wheels include the built web assets.
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
pip install ./reticulum_meshchatx-*-py3-none-any.whl
|
|
184
|
+
meshchatx --headless
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`pipx` is also supported:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Run from Source (Web Server Mode)
|
|
194
|
+
|
|
195
|
+
Use this when developing or when you need a local custom build.
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
git clone https://git.quad4.io/RNS-Things/MeshChatX.git
|
|
199
|
+
cd MeshChatX
|
|
200
|
+
corepack enable
|
|
201
|
+
pnpm config set verify-store-integrity true
|
|
202
|
+
pnpm install --frozen-lockfile
|
|
203
|
+
pip install "poetry==2.3.4"
|
|
204
|
+
poetry check --lock
|
|
205
|
+
poetry install
|
|
206
|
+
pnpm run build-frontend
|
|
207
|
+
poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Notes on the install commands above:
|
|
211
|
+
|
|
212
|
+
- `pnpm install --frozen-lockfile` refuses to update `pnpm-lock.yaml` and fails if the lockfile does not match `package.json`. This is what blocks an unexpected upstream version from being silently pulled in.
|
|
213
|
+
- `verify-store-integrity=true` is also set in the project `.npmrc`; the explicit `pnpm config set` line above just hardens the user-level config too.
|
|
214
|
+
- Lifecycle scripts (`preinstall`/`postinstall`) are blocked by default in pnpm v10+. Only the packages listed under `pnpm.onlyBuiltDependencies` in `package.json` are allowed to run install scripts (currently `electron`, `electron-winstaller`, `esbuild`).
|
|
215
|
+
- `poetry check --lock` fails fast if `poetry.lock` is out of sync with `pyproject.toml`; `poetry install` then resolves only from the lockfile.
|
|
216
|
+
- For a strict lockfile-only Poetry install (no implicit lockfile refresh), pin Poetry with `pip install "poetry==2.3.4"` to match what CI uses.
|
|
217
|
+
|
|
218
|
+
If you intentionally want to update dependencies, run `pnpm update` / `poetry update` in a dedicated commit and review the resulting lockfile diff before pushing.
|
|
219
|
+
|
|
220
|
+
## Run sandboxed (Linux)
|
|
221
|
+
|
|
222
|
+
To run the native `meshchatx` binary (alias: `meshchat`) with extra filesystem isolation, you can use **Firejail** or **Bubblewrap** (`bwrap`) while keeping normal network access for Reticulum and the web UI. Full examples (pip/pipx, Poetry, USB serial notes) are in:
|
|
223
|
+
|
|
224
|
+
- [`docs/meshchatx_linux_sandbox.md`](docs/meshchatx_linux_sandbox.md)
|
|
225
|
+
|
|
226
|
+
The same page appears in the in-app **Documentation** list (MeshChatX docs) when served from the bundled or synced `meshchatx-docs` files.
|
|
227
|
+
|
|
228
|
+
## Linux desktop: emoji fonts
|
|
229
|
+
|
|
230
|
+
The emoji picker renders standard Unicode emoji using your system fonts (Electron/Chromium). If emoji show as empty squares (“tofu”), install a color emoji package and restart the app.
|
|
231
|
+
|
|
232
|
+
| Family (examples) | Package |
|
|
233
|
+
| -------------------------- | -------------------------------------------------------------------- |
|
|
234
|
+
| Arch Linux, Artix, Manjaro | `noto-fonts-emoji` (`sudo pacman -S noto-fonts-emoji`) |
|
|
235
|
+
| Debian, Ubuntu | `fonts-noto-color-emoji` (`sudo apt install fonts-noto-color-emoji`) |
|
|
236
|
+
| Fedora | `google-noto-emoji-color-fonts` |
|
|
237
|
+
|
|
238
|
+
After installing, run `fc-cache -fv` if glyphs still fail until the next login. Optional: `noto-fonts` for broader symbol coverage on minimal installs.
|
|
239
|
+
|
|
240
|
+
## Windows desktop: microphone (Electron, Windows 10 / 11)
|
|
241
|
+
|
|
242
|
+
Calls and voice attachments use the microphone through Chromium inside the desktop app. If the UI shows no access or **getUserMedia** fails, check **Windows privacy** first (this is a frequent cause for “classic” Win32 apps, including Electron):
|
|
243
|
+
|
|
244
|
+
1. Press **Win + R**, paste **`ms-settings:privacy-microphone`**, press Enter.
|
|
245
|
+
2. Turn **Microphone access** on.
|
|
246
|
+
3. Enable **Let desktop apps access your microphone** (wording may vary slightly by Windows version).
|
|
247
|
+
4. Ensure MeshChatX is not denied under **Choose which apps can access your microphone** if that list appears.
|
|
248
|
+
|
|
249
|
+
Also confirm the app is not muted in **Settings → System → Sound** and that a working input device is selected.
|
|
250
|
+
|
|
251
|
+
## Build Desktop Packages from Source
|
|
252
|
+
|
|
253
|
+
These scripts are defined in `package.json` and `Taskfile.yml`.
|
|
254
|
+
|
|
255
|
+
### Linux x64 AppImage + DEB
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
pnpm run dist:linux-x64
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Linux arm64 AppImage + DEB
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
pnpm run dist:linux-arm64
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### RPM
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
pnpm run dist:rpm
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Or through Task:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
task dist:fe:rpm
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## Container build (wheel, AppImage, deb, rpm)
|
|
280
|
+
|
|
281
|
+
`Dockerfile.build` runs the same shell-driven steps CI uses (Poetry, pnpm, `task`, packaging APT deps). It is oriented toward **linux/amd64** (NodeSource amd64 tarball, Task amd64 binary). Default target is everything; override with a build arg.
|
|
282
|
+
|
|
283
|
+
Targets for `MESHCHATX_BUILD_TARGETS`: `all` (default), `wheel`, or `electron` (AppImage + deb for x64 and arm64, best-effort RPM, no wheel).
|
|
284
|
+
|
|
285
|
+
Build:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
docker build -f Dockerfile.build -t meshchatx-build:local .
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
Build only a wheel:
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
docker build -f Dockerfile.build --build-arg MESHCHATX_BUILD_TARGETS=wheel -t meshchatx-build:wheel .
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Copy `/artifacts` from the finished image to the host:
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
cid=$(docker create meshchatx-build:local)
|
|
301
|
+
docker cp "${cid}:/artifacts" ./meshchatx-artifacts
|
|
302
|
+
docker rm "${cid}"
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Architecture Support Summary
|
|
306
|
+
|
|
307
|
+
- Docker image: `amd64`, `arm64`
|
|
308
|
+
- Linux AppImage: `x64`, `arm64`
|
|
309
|
+
- Linux DEB: `x64`, `arm64`
|
|
310
|
+
- Windows: `x64`, `arm64` (build scripts available)
|
|
311
|
+
- macOS: build scripts available (`arm64`, `universal`) for local build environments
|
|
312
|
+
- Android: universal APK only (see [`android/README.md`](android/README.md))
|
|
313
|
+
|
|
314
|
+
## Android
|
|
315
|
+
|
|
316
|
+
MeshChatX supports native Android APK builds (not only Termux).
|
|
317
|
+
|
|
318
|
+
### Build APKs from source
|
|
319
|
+
|
|
320
|
+
From repo root:
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
# 1) Build Chaquopy wheels used by android/app/build.gradle
|
|
324
|
+
bash scripts/build-android-wheels-local.sh
|
|
325
|
+
|
|
326
|
+
# 2) Build universal APKs (one debug + one release per run; see android/README.md)
|
|
327
|
+
cd android
|
|
328
|
+
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
There is a **single** Android variant. Gradle syncs the full `meshchatx/` tree into `app/src/main/python/meshchatx/`, including the offline repository wheel bundle. Published and documented builds use **universal** packaging only: one debug APK and one release APK per run, each containing the native ABIs configured in `android/app/build.gradle`.
|
|
332
|
+
|
|
333
|
+
- Debug: `android/app/build/outputs/apk/debug/app-debug.apk`
|
|
334
|
+
- Release: `android/app/build/outputs/apk/release/app-release-unsigned.apk`
|
|
335
|
+
|
|
336
|
+
Notes:
|
|
337
|
+
|
|
338
|
+
- Release outputs are unsigned by default unless you configure signing (`scripts/sign-android-apks.sh`).
|
|
339
|
+
- Native ABIs embedded in the universal APK follow `android/app/build.gradle` (including `armeabi-v7a` when enabled). Building wheels for `armeabi-v7a` needs an Android SDK on `ANDROID_HOME` (see `android/README.md`).
|
|
340
|
+
- If repo root `dist/reticulum_meshchatx-*.whl` exists (for example from `python -m build --wheel -o dist .`), bundled repository refresh prefers that wheel over PyPI for the MeshChatX package. CI builds that wheel before the Android Gradle step.
|
|
341
|
+
|
|
342
|
+
Additional docs:
|
|
343
|
+
|
|
344
|
+
- [`docs/meshchatx_on_android_with_termux.md`](docs/meshchatx_on_android_with_termux.md)
|
|
345
|
+
- [`android/README.md`](android/README.md)
|
|
346
|
+
|
|
347
|
+
## Configuration
|
|
348
|
+
|
|
349
|
+
MeshChatX supports both CLI args and env vars.
|
|
350
|
+
|
|
351
|
+
| Argument | Environment Variable | Default | Description |
|
|
352
|
+
| -------------------------- | ---------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
353
|
+
| `--host` | `MESHCHAT_HOST` | `127.0.0.1` | Web server bind address |
|
|
354
|
+
| `--port` | `MESHCHAT_PORT` | `8000` | Web server port |
|
|
355
|
+
| `--no-https` | `MESHCHAT_NO_HTTPS` | `false` | Disable HTTPS |
|
|
356
|
+
| `--ssl-cert` / `--ssl-key` | `MESHCHAT_SSL_CERT` / `MESHCHAT_SSL_KEY` | (none) | PEM certificate and private key paths; both must be set together. Overrides auto-generated certs under the identity `ssl/` directory. |
|
|
357
|
+
| `--rns-log-level` | `MESHCHAT_RNS_LOG_LEVEL` | (none) | Reticulum (RNS) stack log level: `none`, `critical`, `error`, `warning`, `notice`, `verbose`, `debug`, `extreme`, or a numeric level. CLI overrides env when both are set. |
|
|
358
|
+
| `--headless` | `MESHCHAT_HEADLESS` | `false` | Do not auto-launch browser |
|
|
359
|
+
| `--auth` | `MESHCHAT_AUTH` | `false` | Enable basic auth |
|
|
360
|
+
| `--storage-dir` | `MESHCHAT_STORAGE_DIR` | `./storage` | Data directory |
|
|
361
|
+
| `--public-dir` | `MESHCHAT_PUBLIC_DIR` | auto/bundled | Frontend files directory (needed for source installs without bundled assets) |
|
|
362
|
+
|
|
363
|
+
## Branches
|
|
364
|
+
|
|
365
|
+
| Branch | Purpose |
|
|
366
|
+
| -------- | --------------------------------------------------------------- |
|
|
367
|
+
| `master` | Stable releases. Production-ready code only. |
|
|
368
|
+
| `dev` | Active development. May contain breaking or incomplete changes. |
|
|
369
|
+
|
|
370
|
+
## Development
|
|
371
|
+
|
|
372
|
+
Common tasks from `Taskfile.yml`:
|
|
373
|
+
|
|
374
|
+
```bash
|
|
375
|
+
task install
|
|
376
|
+
task lint:all
|
|
377
|
+
task test:all
|
|
378
|
+
task build:all
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
`Makefile` shortcuts are also available:
|
|
382
|
+
|
|
383
|
+
| Command | Description |
|
|
384
|
+
| -------------- | --------------------------------------- |
|
|
385
|
+
| `make install` | Install pnpm and poetry dependencies |
|
|
386
|
+
| `make run` | Run MeshChatX via poetry |
|
|
387
|
+
| `make build` | Build frontend |
|
|
388
|
+
| `make lint` | Run eslint and ruff |
|
|
389
|
+
| `make test` | Run frontend and backend tests |
|
|
390
|
+
| `make clean` | Remove build artifacts and node_modules |
|
|
391
|
+
|
|
392
|
+
## Versioning
|
|
393
|
+
|
|
394
|
+
Current version in this repo is `4.6.0`.
|
|
395
|
+
|
|
396
|
+
- **`package.json`** `version` is the only value you edit for a release bump.
|
|
397
|
+
- Run **`pnpm run version:sync`** (also run at the start of **`pnpm run build`**) to propagate that version into **`pyproject.toml`**, **`meshchatx/src/version.py`**, **`THIRD_PARTY_NOTICES.txt`** (product line), **README** / **lang/README.\*** “current version” lines, **`docs/meshchatx_on_raspberry_pi.md`** pipx example, and **`packaging/arch/PKGBUILD`** helpers.
|
|
398
|
+
- **`meshchatx.__version__`** is read from **`meshchatx/src/version.py`** without importing **`meshchatx.src`**, so a plain `import meshchatx` stays lightweight.
|
|
399
|
+
- **Changelog** entries stay manual when you cut a release.
|
|
400
|
+
|
|
401
|
+
## Security
|
|
402
|
+
|
|
403
|
+
Security and integrity details:
|
|
404
|
+
|
|
405
|
+
- [`SECURITY.md`](SECURITY.md)
|
|
406
|
+
- [`LEGAL.md`](LEGAL.md)
|
|
407
|
+
- Built-in integrity checks and HTTPS/WSS defaults in app runtime.
|
|
408
|
+
- CI and release builds on GitHub Actions.
|
|
409
|
+
|
|
410
|
+
## Adding a Language
|
|
411
|
+
|
|
412
|
+
My workflow: ArgosTranslate -> Local LLM (Qwen 3 + Gemma 4)
|
|
413
|
+
|
|
414
|
+
People are then welcome to submit fixes to me via LXMF or wherever you can contact me.
|
|
415
|
+
|
|
416
|
+
Locale discovery is automatic. Add a new file under `meshchatx/src/frontend/locales/` (for example `xx.json`) with the same keys as `en.json` and a top-level `_languageName` string for the label shown in the language selector. You can copy `en.json` and translate every value by hand; **machine-assisted generation is optional** and never required.
|
|
417
|
+
|
|
418
|
+
**Optional: Argos Translate bootstrap** -- If you want a machine-generated first draft from `en.json`, you can use `scripts/argos_translate.py`. It handles formatting, color output, and helps protect interpolation variables (like `{count}`) from accidental edits.
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# Install argostranslate if you haven't already
|
|
422
|
+
pipx install argostranslate
|
|
423
|
+
|
|
424
|
+
# Run the translation script
|
|
425
|
+
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name "Your Language Name"
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
After any machine-assisted pass, have an LLM or a human reviewer verify grammar, context, and tone (for example formal vs informal).
|
|
429
|
+
|
|
430
|
+
Run `pnpm test -- tests/frontend/i18n.test.js --run` to verify key parity with `en.json`.
|
|
431
|
+
|
|
432
|
+
No other code changes are required. The app, language selector, and tests all discover locales from the `meshchatx/src/frontend/locales/` directory at build time.
|
|
433
|
+
|
|
434
|
+
## Donation
|
|
435
|
+
|
|
436
|
+
Donations are voluntary. They help fund time and effort to develop this app.
|
|
437
|
+
|
|
438
|
+
**Ways to give:** [`donate.md`](donate.md) (Monero, Ko-Fi, Buy Me a Coffee).
|
|
439
|
+
|
|
440
|
+
## Credits
|
|
441
|
+
|
|
442
|
+
- [Liam Cottle](https://github.com/liamcottle) - Original Reticulum MeshChat
|
|
443
|
+
- [RFnexus](https://github.com/RFnexus) - micron parser JavaScript work
|
|
444
|
+
- [markqvist](https://github.com/markqvist) - Reticulum, LXMF, LXST
|
|
445
|
+
|
|
446
|
+
## License
|
|
447
|
+
|
|
448
|
+
Project-owned portions are licensed under 0BSD.
|
|
449
|
+
Original upstream portions from Reticulum MeshChat remain under MIT.
|
|
450
|
+
See [`LICENSE`](LICENSE) for full text and notices.
|