Ivan f8b0dd18c5 refactor: clean up code and improve variable naming
- Removed unnecessary blank lines in cx_setup.py.
- Reformatted conditional checks in meshchat.py for better readability.
- Updated callback variable names in NomadnetDownloader for clarity.
- Adjusted version string formatting in version.py for consistency.
- Reordered import statements in prepare_frontend_dir.py for better organization.
2025-12-01 12:18:01 -06:00
2024-12-28 15:15:41 +00:00
2024-06-02 14:59:27 +12:00
2025-12-01 03:01:23 +00:00
2024-05-24 02:08:10 +12:00

Reticulum MeshChatX

A heavily customized fork of Reticulum MeshChat, any meaningful, stable and tested modifications will be submitted as a PR upstream.

Features of this fork

  • Custom UI/UX (actively being improved)
  • Ability to set inbound and propagation node stamps.
  • Better config parsing.
  • Cancel page fetching or file downloads
  • Block receiving messages from users.
  • Spam filter (based on keywords)
  • Multi-identity support.
  • Multi-language support
  • Offline Reticulum documentation tool
  • More tools (translate, LoRa calculator, LXMFy bots, etc.)
  • Codebase reorganization and cleanup.
  • Tests and proper CI/CD pipeline.
  • RNS hot reload
  • Backup/Import identities, messages and interfaces.
  • Full LXST support.
  • Poetry for packaging and dependency management.
  • More stats on about page.
  • Actions are pinned to full-length SHA hashes.
  • Docker images are smaller and use SHA256 hashes for the images.
  • Electron improvements (ASAR and security).
  • Latest updates for NPM and Python dependencies (bleeding edge)
  • Numerous Ruff, Deepsource, CodeQL Advanced and Bearer Linting/SAST fixes.
  • Some performance improvements.

Usage

Check releases for pre-built binaries or appimages.

Building

make install   # installs Python deps via Poetry and Node deps via npm
make build

You can run make run or make develop (a thin alias) to start the backend + frontend loop locally through poetry run meshchat.

Python packaging

The Python build is driven entirely by Poetry now. Run python3 scripts/sync_version.py or make sync-version before packaging so pyproject.toml and src/version.py match package.json. After that:

python -m poetry install
make wheel  # produces a wheel in python-dist/ that bundles the public assets

The wheel includes the frontend public/ assets, logo/, and the CLI entry point, and python-dist/ keeps the artifact separate from the Electron dist/ output.

Building in Docker

make build-docker

build-docker creates reticulum-meshchatx:local (or $(DOCKER_IMAGE) if you override it) via docker buildx. Set DOCKER_PLATFORMS to linux/amd64,linux/arm64 when you need multi-arch images, and adjust DOCKER_BUILD_FLAGS/DOCKER_BUILD_ARGS to control --load/--push.

Running with Docker Compose

make run-docker

run-docker feeds the locally-built image into docker compose -f docker-compose.yml up --remove-orphans --pull never reticulum-meshchatx. The compose file uses the MESHCHAT_IMAGE env var so you can override the target image without editing the YAML (the default still points at ghcr.io/sudo-ivan/reticulum-meshchatx:latest). Use docker compose down or Ctrl+C to stop the container.

The Electron build artifacts will still live under dist/ for releases.

Python packaging

The backend uses Poetry with pyproject.toml for dependency management and packaging. Before building, run python3 scripts/sync_version.py (or make sync-version) to ensure the generated src/version.py reflects the version from package.json that the Electron artifacts use. This keeps the CLI release metadata, wheel packages, and other bundles aligned.

Build artifact locations

Both poetry build and python -m build generate wheels inside the default dist/ directory. The make wheel shortcut wraps poetry build -f wheel and then runs python scripts/move_wheels.py to relocate the generated .whl files into python-dist/ (the layout expected by scripts/test_wheel.sh and the release automation). Use make wheel if you need the artifacts in python-dist/; poetry build or python -m build alone will leave them in dist/.

Building with Poetry

# Install dependencies
poetry install

# Build the package (wheels land in dist/)
poetry build

# Install locally for testing (consumes dist/)
pip install dist/*.whl

Building with pip (alternative)

If you prefer pip, you can build/install directly:

# Build the wheel
pip install build
python -m build

# Install locally
pip install .

cx_Freeze (for AppImage/NSIS)

The cx_setup.py script uses cx_Freeze for creating standalone executables (AppImage for Linux, NSIS for Windows). This is separate from the Poetry/pip packaging workflow.

Description
custom fork of reticulum meshchat
Readme MIT 6.3 MiB
v2.50.0 Latest
2025-12-06 05:42:44 +00:00
Languages
JavaScript 40.8%
Vue 34.4%
Python 16.9%
HTML 7.3%
CSS 0.2%
Other 0.3%