diff --git a/lang/README.de.md b/lang/README.de.md index a37ba6a3..b6e97059 100644 --- a/lang/README.de.md +++ b/lang/README.de.md @@ -31,7 +31,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Electron 41.x (mit Node-24-Laufzeit) - `.whl`-Pakete mit Webserver und eingebauten Frontend-Assets fuer mehr Deploy-Optionen - i18n -- PNPM und Poetry fuer Abhaengigkeiten +- PNPM und UV fuer Abhaengigkeiten > [!WARNING] > MeshChatX garantiert keine Datenkompatibilitaet mit aelteren Reticulum-MeshChat-Versionen. Erstellen Sie vor Migration oder Tests eine Datensicherung. @@ -44,7 +44,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Python `>=3.11` (aus `pyproject.toml`) - Node.js `>=24` (aus `package.json`, Feld `engines`) - pnpm `11.1.2` (aus `package.json`, Feld `packageManager`) -- Poetry (verwendet in `Taskfile.yml` und CI-Workflows) +- UV (verwendet in `Taskfile.yml` und CI-Workflows) **Browser Versions Required:** @@ -180,13 +180,13 @@ Hinweise zu den Installationsbefehlen: - `verify-store-integrity=true` ist auch in der projektweiten `pnpm-workspace.yaml` gesetzt; die explizite `pnpm config set`-Zeile haertet zusaetzlich die Benutzerkonfiguration. - Lifecycle-Skripte (`preinstall`/`postinstall`) sind in pnpm v11+ standardmaessig blockiert. Nur die unter `allowBuilds` in `pnpm-workspace.yaml` aufgefuehrten Pakete duerfen Installationsskripte ausfuehren (aktuell `electron`, `electron-winstaller`, `esbuild`). - `uv lock --check` schlaegt frueh fehl, wenn `uv.lock` nicht mit `pyproject.toml` synchron ist; `uv sync --group dev` aufloest danach nur aus der Lockdatei. -- Fuer eine strikte Lockfile-Installation (ohne implizite Lock-Aktualisierung) Poetry mit `pip install "uv==0.11.15"` pinnen, passend zur CI-Version. +- Fuer eine strikte Lockfile-Installation (ohne implizite Lock-Aktualisierung) UV mit `pip install "uv==0.11.15"` pinnen, passend zur CI-Version. Wenn Sie absichtlich Abhaengigkeiten aktualisieren wollen, fuehren Sie `pnpm update` / `uv lock` 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: +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, UV, Hinweise zu USB-Seriell) finden Sie in: - [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md) @@ -234,7 +234,7 @@ task dist:fe:rpm ## Container-Build (Wheel, AppImage, deb, rpm) -`Dockerfile.build` fuehrt die gleichen Schritte wie die CI aus (Poetry, pnpm, `task`, APT-Paketabhaengigkeiten). Ausgelegt auf **linux/amd64** (NodeSource amd64, Task amd64). Standardziel ist alles; per Build-Arg ueberschreibbar. +`Dockerfile.build` fuehrt die gleichen Schritte wie die CI aus (uv, pnpm, `task`, APT-Paketabhaengigkeiten). Ausgelegt auf **linux/amd64** (NodeSource amd64, Task amd64). Standardziel ist alles; per Build-Arg ueberschreibbar. Werte fuer `MESHCHATX_BUILD_TARGETS`: `all` (Standard), `wheel` oder `electron` (AppImage + deb fuer x64 und arm64, RPM best-effort, kein wheel). @@ -333,16 +333,16 @@ task test:all task build:all ``` -`Makefile`-Kurzformen: +`Makefile`-Ziele sind duenne Wrapper, die an `task` delegieren (gleiche Befehle wie oben): -| Befehl | Beschreibung | -| -------------- | --------------------------------------------- | -| `make install` | pnpm- und Poetry-Abhaengigkeiten installieren | -| `make run` | MeshChatX ueber Poetry starten | -| `make build` | Frontend bauen | -| `make lint` | eslint und ruff ausfuehren | -| `make test` | Frontend- und Backend-Tests | -| `make clean` | Build-Artefakte und node_modules entfernen | +| Befehl | Delegiert an | Beschreibung | +| -------------- | --------------- | --------------------------------------------------------- | +| `make install` | `task install` | pnpm- und UV-Abhaengigkeiten installieren | +| `make run` | `task run` | MeshChatX ueber UV starten | +| `make build` | `task build` | Frontend- und Backend-Artefakte bauen | +| `make lint` | `task lint:all` | ESLint, vue-tsc, knip, Ruff und basedpyright | +| `make test` | `task test:all` | Frontend- und Backend-Tests | +| `make clean` | `task clean` | Build-Artefakte und node_modules entfernen | ## Versionierung diff --git a/lang/README.it.md b/lang/README.it.md index 6cee8552..13be340e 100644 --- a/lang/README.it.md +++ b/lang/README.it.md @@ -31,7 +31,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - 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 +- PNPM e UV 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. @@ -44,7 +44,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Python `>=3.11` (da `pyproject.toml`) - Node.js `>=24` (da `package.json`, campo `engines`) - pnpm `11.1.2` (da `package.json`, campo `packageManager`) -- Poetry (utilizzato in `Taskfile.yml` e nei workflow CI) +- UV (utilizzato in `Taskfile.yml` e nei workflow CI) **Browser Versions Required:** @@ -180,13 +180,13 @@ Note sui comandi di installazione: - `verify-store-integrity=true` e' impostato anche nel `pnpm-workspace.yaml` 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 v11+. Solo i pacchetti elencati in `allowBuilds` di `pnpm-workspace.yaml` possono eseguire script di installazione (attualmente `electron`, `electron-winstaller`, `esbuild`). - `uv lock --check` fallisce subito se `uv.lock` non e' allineato con `pyproject.toml`; `uv sync --group dev` risolve poi solo dal lockfile. -- Per un'installazione Poetry strettamente basata sul lockfile (senza refresh implicito), fissa Poetry con `pip install "uv==0.11.15"`, in linea con la CI. +- Per un'installazione UV strettamente basata sul lockfile (senza refresh implicito), fissa UV con `pip install "uv==0.11.15"`, in linea con la CI. Se vuoi aggiornare intenzionalmente le dipendenze, esegui `pnpm update` / `uv lock` 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: +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, UV, note sulla seriale USB) sono in: - [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md) @@ -234,7 +234,7 @@ task dist:fe:rpm ## Build container (wheel, AppImage, deb, rpm) -`Dockerfile.build` esegue le stesse fasi usate in CI (Poetry, pnpm, `task`, dipendenze APT). Orientato a **linux/amd64** (tarball NodeSource amd64, Task amd64). Il target predefinito e completo; si puo sovrascrivere con un build-arg. +`Dockerfile.build` esegue le stesse fasi usate in CI (uv, pnpm, `task`, dipendenze APT). Orientato a **linux/amd64** (tarball NodeSource amd64, Task amd64). Il target predefinito e completo; si puo sovrascrivere con un build-arg. Valori per `MESHCHATX_BUILD_TARGETS`: `all` (default), `wheel` o `electron` (AppImage + deb per x64 e arm64, RPM se possibile, senza wheel). @@ -333,16 +333,16 @@ task test:all task build:all ``` -Scorciatoie `Makefile`: +I target `Makefile` sono wrapper sottili che delegano a `task` (stessi comandi di sopra): -| Comando | Descrizione | -| -------------- | ----------------------------------------- | -| `make install` | Installa dipendenze pnpm e UV | -| `make run` | Esegue MeshChatX tramite UV | -| `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 | +| Comando | Delega a | Descrizione | +| -------------- | --------------- | ----------------------------------------------------- | +| `make install` | `task install` | Installa dipendenze pnpm e UV | +| `make run` | `task run` | Esegue MeshChatX tramite UV | +| `make build` | `task build` | Compila artefatti frontend e backend | +| `make lint` | `task lint:all` | ESLint, vue-tsc, knip, Ruff e basedpyright | +| `make test` | `task test:all` | Test frontend e backend | +| `make clean` | `task clean` | Rimuove artefatti di build e node_modules | ## Versionamento diff --git a/lang/README.ja.md b/lang/README.ja.md index 81342b3c..fa53e661 100644 --- a/lang/README.ja.md +++ b/lang/README.ja.md @@ -31,7 +31,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Electron 41.x(同梱 Node 24 ランタイム) - Web サーバーと同梱フロントエンドを含む `.whl` によりデプロイの選択肢を拡張 - i18n -- 依存関係管理に PNPM と Poetry +- 依存関係管理に PNPM と UV > [!WARNING] > MeshChatX は旧バージョンの Reticulum MeshChat とのデータ互換性を保証しません。マイグレーションやテスト前にデータをバックアップしてください。 @@ -44,7 +44,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Python `>=3.11`(`pyproject.toml` より) - Node.js `>=24`(`package.json` の `engines`) - pnpm `11.1.2`(`package.json` の `packageManager`) -- Poetry(`Taskfile.yml` および CI ワークフローで使用) +- UV(`Taskfile.yml` および CI ワークフローで使用) **Browser Versions Required:** @@ -180,13 +180,13 @@ uv run python -m meshchatx.meshchat --headless --host 127.0.0.1 - `verify-store-integrity=true` はプロジェクトの `pnpm-workspace.yaml` にも設定されています。上記の `pnpm config set` の行はユーザー設定側も明示的に固めるためのものです。 - pnpm v11 以降、ライフサイクルスクリプト (`preinstall`/`postinstall`) はデフォルトでブロックされます。インストールスクリプトを実行できるのは `pnpm-workspace.yaml` の `allowBuilds` に列挙されたパッケージ(現在 `electron`、`electron-winstaller`、`esbuild`)だけです。 - `uv lock --check` は `uv.lock` と `pyproject.toml` が同期していない場合に即時失敗します。その後の `uv sync --group dev` はロックファイルからのみ解決します。 -- 厳密にロックファイルだけで Poetry をインストールしたい場合は、CI と揃えるために `pip install "uv==0.11.15"` で Poetry バージョンを固定してください。 +- 厳密にロックファイルだけで UV をインストールしたい場合は、CI と揃えるために `pip install "uv==0.11.15"` で UV バージョンを固定してください。 意図的に依存を更新する場合は、`pnpm update` / `uv lock` を専用コミットで実行し、push 前にロックファイルの diff を必ず確認してください。 ## サンドボックスで実行(Linux) -ネイティブの `meshchatx`(エイリアス: `meshchat`)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ **Firejail** または **Bubblewrap**(`bwrap`)を使えます。詳しい例(pip/pipx、Poetry、USB シリアルの注意)は次を参照: +ネイティブの `meshchatx`(エイリアス: `meshchat`)をファイルシステムをより隔離した状態で動かすには、Reticulum と Web UI 向けの通常のネットワークアクセスを保ちつつ **Firejail** または **Bubblewrap**(`bwrap`)を使えます。詳しい例(pip/pipx、UV、USB シリアルの注意)は次を参照: - [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md) @@ -234,7 +234,7 @@ task dist:fe:rpm ## コンテナビルド(wheel、AppImage、deb、rpm) -`Dockerfile.build` は CI と同じ手順(Poetry、pnpm、`task`、APT 依存)を実行します。**linux/amd64** 向け(NodeSource の amd64 tarball、Task の amd64 バイナリ)。デフォルトは全ターゲット。build-arg で上書き可能。 +`Dockerfile.build` は CI と同じ手順(uv、pnpm、`task`、APT 依存)を実行します。**linux/amd64** 向け(NodeSource の amd64 tarball、Task の amd64 バイナリ)。デフォルトは全ターゲット。build-arg で上書き可能。 `MESHCHATX_BUILD_TARGETS` の値: `all`(既定)、`wheel`、または `electron`(x64 / arm64 の AppImage + deb、RPM はベストエフォート、wheel なし)。 @@ -333,16 +333,16 @@ task test:all task build:all ``` -`Makefile` のショートカット: +`Makefile` のターゲットは `task` に委譲する薄いラッパーです(上記と同じコマンド): -| コマンド | 説明 | -| -------------- | ------------------------------------ | -| `make install` | pnpm と UV の依存関係をインストール | -| `make run` | UV 経由で MeshChatX を実行 | -| `make build` | フロントエンドをビルド | -| `make lint` | eslint と ruff を実行 | -| `make test` | フロントエンドとバックエンドのテスト | -| `make clean` | ビルド成果物と node_modules を削除 | +| コマンド | 委譲先 | 説明 | +| -------------- | --------------- | ------------------------------------------------------ | +| `make install` | `task install` | pnpm と UV の依存関係をインストール | +| `make run` | `task run` | UV 経由で MeshChatX を実行 | +| `make build` | `task build` | フロントエンドとバックエンドの成果物をビルド | +| `make lint` | `task lint:all` | ESLint、vue-tsc、knip、Ruff、basedpyright | +| `make test` | `task test:all` | フロントエンドとバックエンドのテスト | +| `make clean` | `task clean` | ビルド成果物と node_modules を削除 | ## バージョン管理 diff --git a/lang/README.ru.md b/lang/README.ru.md index 2e603402..b41f1485 100644 --- a/lang/README.ru.md +++ b/lang/README.ru.md @@ -31,7 +31,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Electron 41.x (встроенная среда Node 24) - Колёса `.whl` с веб-сервером и встроенным фронтендом для разных сценариев развёртывания - i18n -- PNPM и Poetry для зависимостей +- PNPM и UV для зависимостей > [!WARNING] > MeshChatX не гарантирует совместимость данных со старыми версиями Reticulum MeshChat. Сделайте резервную копию перед миграцией или тестированием. @@ -44,7 +44,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Python `>=3.11` (из `pyproject.toml`) - Node.js `>=24` (из `package.json`, поле `engines`) - pnpm `11.1.2` (из `package.json`, поле `packageManager`) -- Poetry (используется в `Taskfile.yml` и CI) +- UV (используется в `Taskfile.yml` и CI) **Browser Versions Required:** @@ -180,13 +180,13 @@ uv run python -m meshchatx.meshchat --headless --host 127.0.0.1 - `verify-store-integrity=true` уже задан в `pnpm-workspace.yaml` проекта; явный `pnpm config set` дополнительно ужесточает пользовательскую конфигурацию. - Lifecycle-скрипты (`preinstall`/`postinstall`) по умолчанию заблокированы в pnpm v11+. Скрипты установки могут запускать только пакеты из `allowBuilds` в `pnpm-workspace.yaml` (сейчас `electron`, `electron-winstaller`, `esbuild`). - `uv lock --check` сразу падает, если `uv.lock` не синхронизирован с `pyproject.toml`; затем `uv sync --group dev` ставит зависимости только из lock-файла. -- Для строгой установки Poetry только из lock-файла зафиксируйте версию Poetry через `pip install "uv==0.11.15"`, как это делает CI. +- Для строгой установки только из lock-файла зафиксируйте UV через `pip install "uv==0.11.15"`, как это делает CI. Если вы намеренно хотите обновить зависимости, выполните `pnpm update` / `uv lock` отдельным коммитом и проверьте diff lock-файлов до пуша. ## Запуск в песочнице (Linux) -Чтобы запускать нативный `meshchatx` (псевдоним: `meshchat`) с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, Poetry, USB-serial) в: +Чтобы запускать нативный `meshchatx` (псевдоним: `meshchat`) с дополнительной изоляцией файловой системы, можно использовать **Firejail** или **Bubblewrap** (`bwrap`), сохраняя обычный сетевой доступ для Reticulum и веб-интерфейса. Полные примеры (pip/pipx, UV, USB-serial) в: - [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md) @@ -234,7 +234,7 @@ task dist:fe:rpm ## Сборка в контейнере (wheel, AppImage, deb, rpm) -`Dockerfile.build` выполняет те же шаги, что и CI (Poetry, pnpm, `task`, пакетные зависимости APT). Ориентирован на **linux/amd64** (NodeSource amd64, Task amd64). Цель по умолчанию: всё; её можно переопределить build-arg. +`Dockerfile.build` выполняет те же шаги, что и CI (uv, pnpm, `task`, пакетные зависимости APT). Ориентирован на **linux/amd64** (NodeSource amd64, Task amd64). Цель по умолчанию: всё; её можно переопределить build-arg. Для `MESHCHATX_BUILD_TARGETS` доступны: `all` (по умолчанию), `wheel` или `electron` (AppImage + deb для x64 и arm64, RPM по возможности, без wheel). @@ -333,16 +333,16 @@ task test:all task build:all ``` -Сокращения `Makefile`: +Цели `Makefile` — тонкие обёртки, делегирующие в `task` (те же команды, что выше): -| Команда | Описание | -| -------------- | --------------------------------------- | -| `make install` | Установить зависимости pnpm и UV | -| `make run` | Запуск MeshChatX через UV | -| `make build` | Сборка фронтенда | -| `make lint` | eslint и ruff | -| `make test` | Тесты фронтенда и бэкенда | -| `make clean` | Удалить артефакты сборки и node_modules | +| Команда | Делегирует в | Описание | +| -------------- | --------------- | ----------------------------------------------------- | +| `make install` | `task install` | Установить зависимости pnpm и UV | +| `make run` | `task run` | Запуск MeshChatX через UV | +| `make build` | `task build` | Сборка артефактов фронтенда и бэкенда | +| `make lint` | `task lint:all` | ESLint, vue-tsc, knip, Ruff и basedpyright | +| `make test` | `task test:all` | Тесты фронтенда и бэкенда | +| `make clean` | `task clean` | Удалить артефакты сборки и node_modules | ## Версионирование diff --git a/lang/README.zh.md b/lang/README.zh.md index 85e0daf1..ae11cb33 100644 --- a/lang/README.zh.md +++ b/lang/README.zh.md @@ -31,7 +31,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - 使用 Electron 41.x(内置 Node 24 运行时) - `.whl` 内置 Web 服务器与前端资源,便于多种部署方式 - i18n -- 使用 PNPM 与 Poetry 管理依赖 +- 使用 PNPM 与 UV 管理依赖 > [!WARNING] > MeshChatX 不保证与旧版 Reticulum MeshChat 的数据兼容。迁移或测试前请备份数据。 @@ -44,7 +44,7 @@ MeshChatX NomadNet Node: `c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu` - Python `>=3.11`(来自 `pyproject.toml`) - Node.js `>=24`(来自 `package.json` 的 `engines`) - pnpm `11.1.2`(来自 `package.json` 的 `packageManager`) -- Poetry(用于 `Taskfile.yml` 与 CI 工作流) +- UV(用于 `Taskfile.yml` 与 CI 工作流) **Browser Versions Required:** @@ -180,13 +180,13 @@ uv run python -m meshchatx.meshchat --headless --host 127.0.0.1 - `verify-store-integrity=true` 已在项目的 `pnpm-workspace.yaml` 中设置;显式的 `pnpm config set` 行同时加固用户级配置。 - pnpm v11+ 默认禁用所有生命周期脚本(`preinstall`/`postinstall`)。仅 `pnpm-workspace.yaml` 中 `allowBuilds` 列出的包允许执行安装脚本(当前为 `electron`、`electron-winstaller`、`esbuild`)。 - `uv lock --check` 会在 `uv.lock` 与 `pyproject.toml` 不同步时立即失败;随后的 `uv sync --group dev` 只会从 lock 文件解析依赖。 -- 若需严格按 lock 文件安装 Poetry 依赖(不进行隐式刷新),用 `pip install "uv==0.11.15"` 固定 Poetry 版本,与 CI 保持一致。 +- 若需严格按 lock 文件安装 UV(不进行隐式刷新),用 `pip install "uv==0.11.15"` 固定 UV 版本,与 CI 保持一致。 如果确有意愿更新依赖,请在独立提交中运行 `pnpm update` / `uv lock`,并在推送前审查生成的 lock 文件 diff。 ## 在沙盒中运行(Linux) -若要在额外隔离文件系统的情况下运行原生 `meshchatx`(别名:`meshchat`),可使用 **Firejail** 或 **Bubblewrap**(`bwrap`),同时保留 Reticulum 与 Web 界面所需的网络访问。完整示例(pip/pipx、Poetry、USB 串口说明)见: +若要在额外隔离文件系统的情况下运行原生 `meshchatx`(别名:`meshchat`),可使用 **Firejail** 或 **Bubblewrap**(`bwrap`),同时保留 Reticulum 与 Web 界面所需的网络访问。完整示例(pip/pipx、UV、USB 串口说明)见: - [`docs/meshchatx_linux_sandbox.md`](../docs/meshchatx_linux_sandbox.md) @@ -234,7 +234,7 @@ task dist:fe:rpm ## 容器构建(wheel、AppImage、deb、rpm) -`Dockerfile.build` 执行与 CI 相同的步骤(Poetry、pnpm、`task`、APT 等)。面向 **linux/amd64**(NodeSource amd64 压缩包、Task amd64 二进制)。默认目标为全部;可用 build 参数覆盖。 +`Dockerfile.build` 执行与 CI 相同的步骤(uv、pnpm、`task`、APT 等)。面向 **linux/amd64**(NodeSource amd64 压缩包、Task amd64 二进制)。默认目标为全部;可用 build 参数覆盖。 `MESHCHATX_BUILD_TARGETS` 可选:`all`(默认)、`wheel` 或 `electron`(x64 与 arm64 的 AppImage + deb、尽力构建 RPM、不含 wheel)。 @@ -333,16 +333,16 @@ task test:all task build:all ``` -`Makefile` 快捷方式: +`Makefile` 目标为委托给 `task` 的薄封装(与上文命令相同): -| 命令 | 说明 | -| -------------- | --------------------------- | -| `make install` | 安装 pnpm 与 UV 依赖 | -| `make run` | 通过 UV 运行 MeshChatX | -| `make build` | 构建前端 | -| `make lint` | 运行 eslint 与 ruff | -| `make test` | 运行前端与后端测试 | -| `make clean` | 移除构建产物与 node_modules | +| 命令 | 委托至 | 说明 | +| -------------- | --------------- | ----------------------------------------- | +| `make install` | `task install` | 安装 pnpm 与 UV 依赖 | +| `make run` | `task run` | 通过 UV 运行 MeshChatX | +| `make build` | `task build` | 构建前端与后端产物 | +| `make lint` | `task lint:all` | ESLint、vue-tsc、knip、Ruff 与 basedpyright | +| `make test` | `task test:all` | 运行前端与后端测试 | +| `make clean` | `task clean` | 移除构建产物与 node_modules | ## 版本管理