diff --git a/README.md b/README.md index 5694254..60b725d 100644 --- a/README.md +++ b/README.md @@ -131,13 +131,25 @@ Use this when developing or when you need a local custom build. git clone https://git.quad4.io/RNS-Things/MeshChatX.git cd MeshChatX corepack enable -pnpm install -pip install poetry +pnpm config set verify-store-integrity true +pnpm install --frozen-lockfile +pip install "poetry==2.1.1" +poetry check --lock poetry install pnpm run build-frontend poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1 ``` +Notes on the install commands above: + +- `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. +- `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. +- 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`, `protobufjs`). +- `poetry check --lock` fails fast if `poetry.lock` is out of sync with `pyproject.toml`; `poetry install` then resolves only from the lockfile. +- For a strict lockfile-only Poetry install (no implicit lockfile refresh), pin Poetry with `pip install "poetry==2.1.1"` to match what CI uses. + +If you intentionally want to update dependencies, run `pnpm update` / `poetry update` in a dedicated commit and review the resulting lockfile diff before pushing. + ## Run sandboxed (Linux) 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: diff --git a/lang/README.de.md b/lang/README.de.md index 2ae113e..a83a217 100644 --- a/lang/README.de.md +++ b/lang/README.de.md @@ -131,13 +131,25 @@ Fuer Entwicklung oder lokale Custom-Builds. git clone https://git.quad4.io/RNS-Things/MeshChatX.git cd MeshChatX corepack enable -pnpm install -pip install poetry +pnpm config set verify-store-integrity true +pnpm install --frozen-lockfile +pip install "poetry==2.1.1" +poetry check --lock poetry install pnpm run build-frontend poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1 ``` +Hinweise zu den Installationsbefehlen: + +- `pnpm install --frozen-lockfile` verweigert Aenderungen an `pnpm-lock.yaml` und schlaegt fehl, wenn die Lockdatei nicht zu `package.json` passt. Damit wird verhindert, dass eine unerwartete Upstream-Version still eingespielt wird. +- `verify-store-integrity=true` ist auch in der projektweiten `.npmrc` gesetzt; die explizite `pnpm config set`-Zeile haertet zusaetzlich die Benutzerkonfiguration. +- Lifecycle-Skripte (`preinstall`/`postinstall`) sind in pnpm v10+ standardmaessig blockiert. Nur die unter `pnpm.onlyBuiltDependencies` in `package.json` aufgefuehrten Pakete duerfen Installationsskripte ausfuehren (aktuell `electron`, `electron-winstaller`, `esbuild`, `protobufjs`). +- `poetry check --lock` schlaegt frueh fehl, wenn `poetry.lock` nicht mit `pyproject.toml` synchron ist; `poetry install` aufloest danach nur aus der Lockdatei. +- Fuer eine strikte Lockfile-Installation (ohne implizite Lock-Aktualisierung) Poetry mit `pip install "poetry==2.1.1"` pinnen, passend zur CI-Version. + +Wenn Sie absichtlich Abhaengigkeiten aktualisieren wollen, fuehren Sie `pnpm update` / `poetry update` in einem dedizierten Commit aus und pruefen Sie das resultierende Lockdatei-Diff vor dem Push. + ## Sandboxing (Linux) Um das native `meshchatx`-Programm (Alias: `meshchat`) mit zusaetzlicher Dateisystem-Isolation auszufuehren, koennen Sie **Firejail** oder **Bubblewrap** (`bwrap`) nutzen, bei weiterhin normalem Netzwerkzugriff fuer Reticulum und die Web-Oberflaeche. Vollstaendige Beispiele (pip/pipx, Poetry, Hinweise zu USB-Seriell) finden Sie in: diff --git a/lang/README.it.md b/lang/README.it.md index d4eb3a4..710d87a 100644 --- a/lang/README.it.md +++ b/lang/README.it.md @@ -131,13 +131,25 @@ Per sviluppo o build locali personalizzate. git clone https://git.quad4.io/RNS-Things/MeshChatX.git cd MeshChatX corepack enable -pnpm install -pip install poetry +pnpm config set verify-store-integrity true +pnpm install --frozen-lockfile +pip install "poetry==2.1.1" +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.1.1"`, 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: diff --git a/lang/README.ja.md b/lang/README.ja.md index fcd0716..a8f0f53 100644 --- a/lang/README.ja.md +++ b/lang/README.ja.md @@ -131,13 +131,25 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl git clone https://git.quad4.io/RNS-Things/MeshChatX.git cd MeshChatX corepack enable -pnpm install -pip install poetry +pnpm config set verify-store-integrity true +pnpm install --frozen-lockfile +pip install "poetry==2.1.1" +poetry check --lock poetry install pnpm run build-frontend poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1 ``` +上記インストールコマンドに関する補足: + +- `pnpm install --frozen-lockfile` は `pnpm-lock.yaml` の更新を拒否し、ロックファイルが `package.json` と一致しない場合は失敗します。これにより、想定外の上流バージョンが暗黙的にインストールされるのを防げます。 +- `verify-store-integrity=true` はプロジェクトの `.npmrc` にも設定されています。上記の `pnpm config set` の行はユーザー設定側も明示的に固めるためのものです。 +- pnpm v10 以降、ライフサイクルスクリプト (`preinstall`/`postinstall`) はデフォルトでブロックされます。インストールスクリプトを実行できるのは `package.json` の `pnpm.onlyBuiltDependencies` に列挙されたパッケージ (現在は `electron`、`electron-winstaller`、`esbuild`、`protobufjs`) だけです。 +- `poetry check --lock` は `poetry.lock` と `pyproject.toml` が同期していない場合に即時失敗します。その後の `poetry install` はロックファイルからのみ解決します。 +- 厳密にロックファイルだけで Poetry をインストールしたい場合は、CI と揃えるために `pip install "poetry==2.1.1"` で Poetry バージョンを固定してください。 + +意図的に依存を更新する場合は、`pnpm update` / `poetry update` を専用コミットで実行し、push 前にロックファイルの diff を必ず確認してください。 + ## サンドボックスで実行(Linux) ネイティブの `meshchatx`(エイリアス: `meshchat`)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ **Firejail** または **Bubblewrap**(`bwrap`)を使えます。詳しい例(pip/pipx、Poetry、USB シリアルの注意)は次を参照: diff --git a/lang/README.ru.md b/lang/README.ru.md index b0ca0b0..233192e 100644 --- a/lang/README.ru.md +++ b/lang/README.ru.md @@ -131,13 +131,25 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl git clone https://git.quad4.io/RNS-Things/MeshChatX.git cd MeshChatX corepack enable -pnpm install -pip install poetry +pnpm config set verify-store-integrity true +pnpm install --frozen-lockfile +pip install "poetry==2.1.1" +poetry check --lock poetry install pnpm run build-frontend poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1 ``` +Пояснения к командам установки: + +- `pnpm install --frozen-lockfile` запрещает обновление `pnpm-lock.yaml` и завершится с ошибкой, если lock-файл не соответствует `package.json`. Это исключает скрытую установку неожиданной upstream-версии. +- `verify-store-integrity=true` уже задан в `.npmrc` проекта; явный `pnpm config set` дополнительно ужесточает пользовательскую конфигурацию. +- Lifecycle-скрипты (`preinstall`/`postinstall`) по умолчанию заблокированы в pnpm v10+. Скрипты установки могут запускать только пакеты из `pnpm.onlyBuiltDependencies` в `package.json` (сейчас это `electron`, `electron-winstaller`, `esbuild`, `protobufjs`). +- `poetry check --lock` сразу падает, если `poetry.lock` не синхронизирован с `pyproject.toml`; затем `poetry install` ставит зависимости только из lock-файла. +- Для строгой установки Poetry только из lock-файла зафиксируйте версию Poetry через `pip install "poetry==2.1.1"`, как это делает CI. + +Если вы намеренно хотите обновить зависимости, выполните `pnpm update` / `poetry update` отдельным коммитом и проверьте diff lock-файлов до пуша. + ## Запуск в песочнице (Linux) Чтобы запускать нативный `meshchatx` (псевдоним: `meshchat`) с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, Poetry, USB-serial) в: diff --git a/lang/README.zh.md b/lang/README.zh.md index bb91dd2..2020e3a 100644 --- a/lang/README.zh.md +++ b/lang/README.zh.md @@ -131,13 +131,25 @@ pipx install ./reticulum_meshchatx-*-py3-none-any.whl git clone https://git.quad4.io/RNS-Things/MeshChatX.git cd MeshChatX corepack enable -pnpm install -pip install poetry +pnpm config set verify-store-integrity true +pnpm install --frozen-lockfile +pip install "poetry==2.1.1" +poetry check --lock poetry install pnpm run build-frontend poetry run python -m meshchatx.meshchat --headless --host 127.0.0.1 ``` +关于上述安装命令的说明: + +- `pnpm install --frozen-lockfile` 禁止更新 `pnpm-lock.yaml`,若 lockfile 与 `package.json` 不一致则直接失败。这能阻止意外的上游版本被静默安装。 +- `verify-store-integrity=true` 已在项目的 `.npmrc` 中设置;显式的 `pnpm config set` 行同时加固用户级配置。 +- pnpm v10+ 默认禁用所有生命周期脚本(`preinstall`/`postinstall`)。仅 `package.json` 中 `pnpm.onlyBuiltDependencies` 列出的包允许执行安装脚本(当前为 `electron`、`electron-winstaller`、`esbuild`、`protobufjs`)。 +- `poetry check --lock` 会在 `poetry.lock` 与 `pyproject.toml` 不同步时立即失败;随后的 `poetry install` 只会从 lock 文件解析依赖。 +- 若需严格按 lock 文件安装 Poetry 依赖(不进行隐式刷新),用 `pip install "poetry==2.1.1"` 固定 Poetry 版本,与 CI 保持一致。 + +如果确有意愿更新依赖,请在独立提交中运行 `pnpm update` / `poetry update`,并在推送前审查生成的 lock 文件 diff。 + ## 在沙盒中运行(Linux) 若要在额外隔离文件系统的情况下运行原生 `meshchatx`(别名:`meshchat`),可使用 **Firejail** 或 **Bubblewrap**(`bwrap`),同时保留 Reticulum 与 Web 界面所需的网络访问。完整示例(pip/pipx、Poetry、USB 串口说明)见: