Files
MeshChatX/lang/README.it.md
T

16 KiB

Reticulum MeshChatX

English | Deutsch | Русский | 中文 | 日本語

Un fork ampiamente modificato e ricco di funzionalita di Reticulum MeshChat di Liam Cottle.

Questo progetto e indipendente dal progetto originale Reticulum MeshChat e non e affiliato ad esso.

Modifiche importanti rispetto a Reticulum MeshChat

  • Usa LXST
  • Peewee ORM sostituito con SQL diretto
  • Axios sostituito con fetch nativo
  • Electron 41.x (runtime Node 24 incluso)
  • Wheel .whl con web server e asset frontend integrati per piu opzioni di deploy
  • i18n
  • PNPM e Poetry per le dipendenze

Warning

MeshChatX non garantisce la compatibilita dei dati con le versioni precedenti di Reticulum MeshChat. Eseguire un backup prima della migrazione o dei test.

Warning

I sistemi legacy non sono ancora completamente supportati. Requisiti minimi attuali: Python >=3.11 e Node >=24 (Electron 41 allinea a Node 24; engines in package.json e la CI seguono la stessa linea).

Requisiti

  • Python >=3.11 (da pyproject.toml)
  • Node.js >=24 (da package.json, campo engines)
  • pnpm 10.33.0 (da package.json, campo packageManager)
  • Poetry (utilizzato in Taskfile.yml e nei workflow CI)
task install
task lint:all
task test:all
task build:all

Metodi di installazione

Scegli il metodo in base all'ambiente e al formato del pacchetto.

Metodo Include frontend Architetture Ideale per
Immagine Docker Si linux/amd64, linux/arm64 Avvio rapido su server Linux
Python wheel (.whl) Si Qualsiasi architettura supportata da Python Installazione headless/web-server senza build Node
Linux AppImage Si x64, arm64 Uso desktop portatile
Pacchetto Debian (.deb) Si x64, arm64 Installazione Debian/Ubuntu
Pacchetto RPM (.rpm) Si Dipende dal CI Fedora/RHEL/openSUSE
Da sorgente Compilato localmente Architettura host Sviluppo e build personalizzati

Note:

  • Il workflow di release compila esplicitamente Linux x64 e arm64 AppImage + DEB.
  • RPM viene anche tentato e caricato quando prodotto con successo.

Avvio rapido: Docker

docker compose up -d

Il file compose predefinito mappa:

  • 127.0.0.1:8000 sull'host -> porta 8000 del container
  • ./meshchat-config -> /config per la persistenza

In caso di errori di permessi:

sudo chown -R 1000:1000 ./meshchat-config

Installazione da artefatti di release

1) Linux AppImage (x64/arm64)

  1. Scaricare ReticulumMeshChatX-v<versione>-linux-<arch>.AppImage dalle release.
  2. Rendere eseguibile e avviare:
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage

2) Debian/Ubuntu .deb (x64/arm64)

  1. Scaricare ReticulumMeshChatX-v<versione>-linux-<arch>.deb.
  2. Installare:
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb

3) Sistemi RPM

  1. Scaricare ReticulumMeshChatX-v<versione>-linux-<arch>.rpm se presente nella release.
  2. Installare:
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm

4) Python wheel (.whl)

I wheel delle release includono gli asset web compilati.

pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless

pipx e supportato:

pipx install ./reticulum_meshchatx-*-py3-none-any.whl

Esecuzione da sorgente (modalita web server)

Per sviluppo o build locali personalizzate.

git clone https://git.quad4.io/RNS-Things/MeshChatX.git
cd MeshChatX
corepack enable
pnpm config set verify-store-integrity true
pnpm install --frozen-lockfile
pip install "poetry==2.3.4"
poetry check --lock
poetry install
pnpm run build-frontend
poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1

Note sui comandi di installazione:

  • pnpm install --frozen-lockfile rifiuta di aggiornare pnpm-lock.yaml e fallisce se il lockfile non corrisponde a package.json. Cosi' si evita che una versione upstream inattesa venga installata silenziosamente.
  • verify-store-integrity=true e' impostato anche nel .npmrc del progetto; la riga esplicita pnpm config set rafforza inoltre la configurazione utente.
  • Gli script di lifecycle (preinstall/postinstall) sono bloccati di default in pnpm v10+. Solo i pacchetti elencati in pnpm.onlyBuiltDependencies di package.json possono eseguire script di installazione (attualmente electron, electron-winstaller, esbuild, protobufjs).
  • poetry check --lock fallisce subito se poetry.lock non e' allineato con pyproject.toml; poetry install risolve poi solo dal lockfile.
  • Per un'installazione Poetry strettamente basata sul lockfile (senza refresh implicito), fissa Poetry con pip install "poetry==2.3.4", in linea con la CI.

Se vuoi aggiornare intenzionalmente le dipendenze, esegui pnpm update / poetry update in un commit dedicato e rivedi il diff del lockfile prima del push.

Esecuzione in sandbox (Linux)

Per eseguire il binario nativo meshchatx (alias: meshchat) con isolamento aggiuntivo del filesystem, puoi usare Firejail o Bubblewrap (bwrap) mantenendo l'accesso di rete normale per Reticulum e l'interfaccia web. Esempi completi (pip/pipx, Poetry, note sulla seriale USB) sono in:

La stessa pagina compare nell'elenco Documentazione in-app (documentazione MeshChatX) quando viene servita dai file meshchatx-docs inclusi o sincronizzati.

Desktop Linux: font emoji

Il selettore emoji mostra gli emoji Unicode standard usando i font di sistema (Electron/Chromium). Se compaiono quadrati vuoti ("tofu"), installate un pacchetto emoji a colori e riavviate l'app.

Famiglia (esempi) Pacchetto
Arch Linux, Artix, Manjaro noto-fonts-emoji (sudo pacman -S noto-fonts-emoji)
Debian, Ubuntu fonts-noto-color-emoji (sudo apt install fonts-noto-color-emoji)
Fedora google-noto-emoji-color-fonts

Dopo l'installazione, eseguite fc-cache -fv se i glifi non compaiono fino al prossimo accesso. Opzionale: noto-fonts per una copertura simboli più ampia su installazioni minime.

Compilazione pacchetti desktop da sorgente

Gli script sono definiti in package.json e Taskfile.yml.

Linux x64 AppImage + DEB

pnpm run dist:linux-x64

Linux arm64 AppImage + DEB

pnpm run dist:linux-arm64

RPM

pnpm run dist:rpm

Oppure tramite Task:

task dist:fe:rpm

Supporto architetture

  • Immagine Docker: amd64, arm64
  • Linux AppImage: x64, arm64
  • Linux DEB: x64, arm64
  • Windows: x64, arm64 (script di build disponibili)
  • macOS: script di build disponibili (arm64, universal) per ambienti di build locali
  • Android: APK nativi — arm64-v8a, x86_64, universale

Android

MeshChatX supporta build APK Android native (non solo Termux).

Build APK da sorgente

Dalla root del repository:

# 1) Build delle wheel Chaquopy usate da android/app/build.gradle
bash scripts/build-android-wheels-local.sh

# 2) Build degli APK slim predefiniti (universal: un APK per flavor e tipo di build)
cd android
./gradlew --no-daemon :app:assembleSlimDebug :app:assembleSlimRelease

Gli output dipendono dai product flavors slim / full (dimensione dell'albero Python) e dall imballaggio ABI universal (predefinito) o split (vedi android/app/build.gradle).

Con -PmeshchatxAbiPackaging=universal (predefinito), un solo APK contiene tutti gli ABI selezionati.

Debug (android/app/build/outputs/apk/slim/debug/):

  • app-slim-debug.apk

Release (android/app/build/outputs/apk/slim/release/):

  • app-slim-release-unsigned.apk

Per il bundle Python completo: :app:assembleFullDebug o :app:assembleFullRelease.

Note:

  • Gli output release sono non firmati di default se non configurate le firme.
  • Per una sola build, ad esempio: :app:assembleSlimDebug o :app:assembleSlimRelease.
  • ABI: -PmeshchatxAbis o MESHCHATX_ABIS; imballaggio: -PmeshchatxAbiPackaging o MESHCHATX_ABI_PACKAGING.
  • Albero meshchatx/ per Chaquopy: slim in src/slim/python/, full in src/full/python/. Dettagli in android/README.md.

Documentazione aggiuntiva:

Configurazione

Argomento Variabile d'ambiente Predefinito Descrizione
--host MESHCHAT_HOST 127.0.0.1 Indirizzo di bind del web server
--port MESHCHAT_PORT 8000 Porta del web server
--no-https MESHCHAT_NO_HTTPS false Disattiva HTTPS
--ssl-cert / --ssl-key MESHCHAT_SSL_CERT / MESHCHAT_SSL_KEY (nessuno) Percorsi PEM certificato e chiave; impostare entrambi. Sostituisce i certificati auto-generati sotto l'identita nella directory ssl/.
--rns-log-level MESHCHAT_RNS_LOG_LEVEL (nessuno) Livello di log Reticulum (RNS): none, critical, error, warning, notice, verbose, debug, extreme o numerico. La CLI ha priorita sulla variabile d'ambiente se entrambe sono impostate.
--headless MESHCHAT_HEADLESS false Non aprire il browser automaticamente
--auth MESHCHAT_AUTH false Attiva autenticazione base
--storage-dir MESHCHAT_STORAGE_DIR ./storage Directory dei dati
--public-dir MESHCHAT_PUBLIC_DIR auto/bundle Directory dei file frontend (per installazioni senza asset inclusi)

Branch

Branch Scopo
master Release stabili. Solo codice pronto per la produzione.
dev Sviluppo attivo. Potrebbe contenere modifiche instabili o incomplete.

Sviluppo

Attivita comuni da Taskfile.yml:

task install
task lint:all
task test:all
task build:all

Scorciatoie Makefile:

Comando Descrizione
make install Installa dipendenze pnpm e poetry
make run Esegue MeshChatX tramite poetry
make build Compila il frontend
make lint Esegue eslint e ruff
make test Test frontend e backend
make clean Rimuove artefatti di build e node_modules

Versioning

Versione attuale nel repository: 4.5.1.

  • La fonte della versione JavaScript/Electron e package.json.
  • meshchatx/src/version.py e sincronizzato da package.json con:
pnpm run version:sync

Per release coerenti, allineare i campi di versione dove richiesto (package.json, pyproject.toml, meshchatx/__init__.py).

Sicurezza

  • SECURITY.md
  • Controlli di integrita integrati e HTTPS/WSS predefiniti nell'app
  • CI e release in .github/workflows/; su Gitea solo .gitea/workflows/github-release-sync.yml per il sync delle release su GitHub (vedi SECURITY.md)

Aggiungere una lingua

Il rilevamento della lingua locale è automatico. Aggiungi un nuovo file in meshchatx/src/frontend/locales/ (ad esempio xx.json) con le stesse chiavi di en.json e un campo in cima _languageName per l'etichetta nel selettore lingue. Puoi copiare en.json e tradurre tutto a mano; la generazione automatica è opzionale e non è mai obbligatoria.

Correzioni e traduzioni umane sono benvenute. Miglioramenti a un file esistente o un file interamente tradotto a mano possono essere inviati con una pull request o una segnalazione sul repository sorgente o sul mirror GitHub.

Opzionale: bozza con Argos Translate -- Se vuoi una prima bozza generata da en.json, puoi usare scripts/argos_translate.py. Gestisce la formattazione e aiuta a proteggere le variabili di interpolazione (come {count}).

# Installa argostranslate se non l'hai già fatto
pip install argostranslate

# Esegui lo script di traduzione
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name "Nome della tua lingua"

Dopo una passata automatica, fai verificare grammatica, contesto e tono a un LLM o a un revisore umano (es. formale vs informale).

Verifica la parità delle chiavi con: pnpm test -- tests/frontend/i18n.test.js --run

Non sono necessarie altre modifiche al codice. L'app, il selettore della lingua e i test scoprono le lingue dalla cartella meshchatx/src/frontend/locales/ durante la compilazione.

Crediti

Licenza

Le parti di proprieta del progetto sono rilasciate sotto 0BSD. Le parti originali upstream derivate da MeshChat restano sotto MIT. Per testo completo e note, vedi ../LICENSE.