Compare commits

..
Author SHA1 Message Date
Luke Gustafson 2b309e9582 release-2.9.2 (#1566)
* fix: stop full database rewrites on every plugin db call

* fix: restore release video link in 2.9.2 notes

* fix: use TERMIX_PAT in workflows
2026-10-05 20:24:46 -05:00
LukeGus 40df00bd95 chore: point cli install to @termix-ssh/cli 2026-10-05 18:14:46 -05:00
LukeGus 6c342f3957 chore: sync Crowdin translations 2026-10-05 06:28:23 +00:00
LukeGus c019f4a9c9 chore: bump Homebrew cask to 2.9.1 2026-10-04 21:35:12 +00:00
690 changed files with 5425 additions and 5170 deletions

No files matched your search

+3 -3
View File
@@ -35,7 +35,7 @@ jobs:
- name: Resolve newest dev branch and compute beta version
id: dev
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
REFS=$(gh api "repos/${{ github.repository }}/branches" --paginate -q '.[].name')
if DEV_BRANCH=$(printf '%s\n' "$REFS" | node scripts/latest-dev-branch.cjs 2>/dev/null); then
@@ -110,7 +110,7 @@ jobs:
- name: Resolve previous beta commit
id: prev
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
SHA="${{ needs.prep.outputs.sha }}"
PREV_SHA=$(gh release view beta --repo ${{ github.repository }} --json targetCommitish -q .targetCommitish 2>/dev/null || true)
@@ -165,7 +165,7 @@ jobs:
- name: Create or update rolling beta release
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
TAG="beta"
TITLE="Beta (rolling) - ${{ needs.prep.outputs.beta_version }}"
+1 -1
View File
@@ -31,7 +31,7 @@ jobs:
with:
ref: ${{ steps.branch.outputs.name }}
fetch-depth: 0
token: ${{ secrets.GHCR_TOKEN }}
token: ${{ secrets.TERMIX_PAT }}
- name: Setup Node.js
uses: actions/setup-node@v7
+2 -2
View File
@@ -21,7 +21,7 @@ jobs:
- name: Resolve newest dev branch
id: dev
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
REFS=$(gh api "repos/${{ github.repository }}/branches" --paginate -q '.[].name')
# The helper exits non-zero when no dev-X.Y.Z branch exists; treat that
@@ -37,7 +37,7 @@ jobs:
- name: Retarget and merge Dependabot PRs
if: ${{ steps.dev.outputs.branch != '' }}
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
DEV_BRANCH: ${{ steps.dev.outputs.branch }}
REPO: ${{ github.repository }}
run: |
+1 -1
View File
@@ -100,7 +100,7 @@ jobs:
with:
registry: ghcr.io
username: lukegus
password: ${{ secrets.GHCR_TOKEN }}
password: ${{ secrets.TERMIX_PAT }}
- name: Login to Docker Hub (prod and beta only)
if: ${{ (inputs.build_type == 'Production' || inputs.build_type == 'Beta') && !inputs.dry_run }}
+13 -13
View File
@@ -89,7 +89,7 @@ jobs:
with:
ref: ${{ needs.prep.outputs.dev_branch }}
fetch-depth: 0
token: ${{ secrets.GHCR_TOKEN }}
token: ${{ secrets.TERMIX_PAT }}
- name: Setup Node.js
uses: actions/setup-node@v7
@@ -153,7 +153,7 @@ jobs:
with:
ref: ${{ needs.prep.outputs.dev_branch }}
fetch-depth: 0
token: ${{ secrets.GHCR_TOKEN }}
token: ${{ secrets.TERMIX_PAT }}
- name: Setup Node.js
uses: actions/setup-node@v7
@@ -171,7 +171,7 @@ jobs:
- name: Clean up stale Crowdin git integration branch
continue-on-error: true
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
PR_NUMBER=$(gh pr list --repo ${{ github.repository }} --head i18n_translate --state open --json number -q '.[0].number' || true)
if [ -n "$PR_NUMBER" ]; then
@@ -254,7 +254,7 @@ jobs:
- name: Open and squash-merge PR to main
id: merge
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
DEV_BRANCH="${{ needs.prep.outputs.dev_branch }}"
TITLE="release-${{ needs.prep.outputs.version }}"
@@ -325,7 +325,7 @@ jobs:
- name: Clear existing release artifacts (overwrite mode)
if: ${{ inputs.mode == 'Overwrite release' }}
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
TAG="${{ needs.prep.outputs.release_tag }}"
if ! gh release view "$TAG" --repo ${{ github.repository }} >/dev/null 2>&1; then
@@ -348,7 +348,7 @@ jobs:
- name: Create or update GitHub release
if: ${{ inputs.mode != 'Overwrite release' }}
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
TAG="${{ needs.prep.outputs.release_tag }}"
TITLE="release-${{ needs.prep.outputs.version }}"
@@ -391,7 +391,7 @@ jobs:
with:
ref: main
fetch-depth: 1
token: ${{ secrets.GHCR_TOKEN }}
token: ${{ secrets.TERMIX_PAT }}
- name: Bump and commit Homebrew cask
env:
@@ -452,7 +452,7 @@ jobs:
repository: Termix-SSH/Docs
ref: main
fetch-depth: 0
token: ${{ secrets.GHCR_TOKEN }}
token: ${{ secrets.TERMIX_PAT }}
path: docs-repo
- name: Create docs release branch
@@ -499,7 +499,7 @@ jobs:
if: ${{ inputs.mode != 'Dry run' }}
working-directory: docs-repo
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
BRANCH="dev-${{ needs.prep.outputs.version }}"
if ! git ls-remote --exit-code origin "refs/heads/$BRANCH" >/dev/null 2>&1; then
@@ -567,14 +567,14 @@ jobs:
- name: Delete dev branch in Termix
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
git push https://x-access-token:${{ secrets.GHCR_TOKEN }}@github.com/${{ github.repository }}.git \
git push https://x-access-token:${{ secrets.TERMIX_PAT }}@github.com/${{ github.repository }}.git \
--delete "${{ needs.prep.outputs.dev_branch }}" || true
- name: Delete dev branch in Docs
env:
GH_TOKEN: ${{ secrets.GHCR_TOKEN }}
GH_TOKEN: ${{ secrets.TERMIX_PAT }}
run: |
git push https://x-access-token:${{ secrets.GHCR_TOKEN }}@github.com/Termix-SSH/Docs.git \
git push https://x-access-token:${{ secrets.TERMIX_PAT }}@github.com/Termix-SSH/Docs.git \
--delete "dev-${{ needs.prep.outputs.version }}" || true
+2 -2
View File
@@ -1,6 +1,6 @@
cask "termix" do
version "2.9.0"
sha256 "db37ee3eaf76b6a30d04dec064a516c3e02ffc5a14d7c1627178c0de230374e9"
version "2.9.1"
sha256 "6d8847e18508314db8ed4380c63bf0dd31437102a288b8e861879c92ba25a254"
url "https://github.com/Termix-SSH/Termix/releases/download/release-#{version}-tag/termix_macos_universal_dmg.dmg"
name "Termix"
+2 -2
View File
@@ -215,7 +215,7 @@ Save a set of tabs with their split layout and reopen the whole thing in one cli
<td width="50%" valign="top">
**Command Line Interface:**
A `termix` CLI for your shell and your scripts. Open terminals, run a command on one host or a whole fleet, move files over SFTP, and manage hosts, snippets, and credentials. Install with `npm install -g @termix-cli/cli` or grab a standalone binary. See the [CLI docs](https://docs.termix.site/cli).
A `termix` CLI for your shell and your scripts. Open terminals, run a command on one host or a whole fleet, move files over SFTP, and manage hosts, snippets, and credentials. Install with `npm install -g @termix-ssh/cli` or grab a standalone binary. See the [CLI docs](https://docs.termix.site/cli).
</td>
</tr>
@@ -350,7 +350,7 @@ networks:
Termix also has a CLI, so you can manage your servers from a terminal and use Termix in your own scripts.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+6 -38
View File
@@ -1,6 +1,6 @@
<!-- SUMMARY -->
A patch for 2.9.0 that fixes OIDC sign-in after upgrading, Docker and Host Metrics logins, memory and CPU use, file downloads, tmux sessions, user data export and more. Also adds predefined host tags.
An urgent patch for 2.9.1 that fixes the server writing huge amounts of data to disk, which could add up to 100 GB every few hours. Update as soon as you can.
<!-- /SUMMARY -->
@@ -12,47 +12,15 @@ https://youtu.be/lngaePO96tM
<!-- UPDATE_LOG -->
- Added predefined host tags that admins can set, with suggestions in the host editor
- Kept compact host row actions on the same line as the host name
- Added a reload button when a sign-in verification method fails to load
- Admins can now merge a duplicate SSO account made by 2.9.0 back into the original account
- Hosts behind the same jump hosts now share one connection for status checks
- Simplified host status to just online or offline, removing the "last login failed" state
- Host status now updates every 15 seconds without a page refresh, and status checks run every 30 seconds by default
- Completed the Simplified Chinese translation
- Documented cookie and API key sign-in in the API docs
- Background database saves now happen at most once every 30 seconds, so disk writes no longer grow with the number of hosts
- Plugin database and storage reads are now logged to the audit log once per start instead of on every read
- On first start, 2.9.2 clears the plugin read entries that 2.9.1 piled up in the audit log
<!-- /UPDATE_LOG -->
<!-- BUG_FIXES -->
- OIDC accounts from 2.8 not being able to sign in, or getting a new empty account, after upgrading
- Downloading a file in the file manager turning the whole screen black
- tmux sessions not resuming and new sessions being created instead
- Connections through two or more jump hosts failing
- Docker and Host Metrics failing to sign in while the terminal worked
- Fleets, Proxmox and automations not getting the host sudo password
- Server running out of memory on start and when importing hosts
- High CPU use after the app was first opened
- User data export freezing the server
- 1Password and other secret references being rejected as SSH keys
- Slow file deletes in the file manager
- Mac App Store app failing to start its local server
- Snippets failing to sync on older databases
- GitHub sign in failing
- RDP showing scrollbars and jittering near the edges
- Status checks triggering Fail2Ban bans while a session was open
- Too many database writes from session activity
- Host editor tabs being hidden when they did not fit
- SSH host keys being accepted without a check when the host was missing from the database
- Host status only updating after a full page refresh
- Every host showing offline right after signing in
- Host status flipping between online and offline on refresh or after one dropped packet
- Hosts showing "last login failed" when they connected fine
- Hosts behind a jump host staying offline after the jump connection dropped
- Host status being wiped in the desktop app when the host list failed to load
- Tunnels, remote desktop logins and other host settings missing from shared hosts in the desktop app
- SSO and LDAP provider dialogs overflowing the screen and using mismatched toggles
- Plugin audit log entries failing to save when no user was signed in
- The server rewriting its whole database to disk many times a second, causing very high disk writes (up to 100 GB every few hours) on 2.9.1
- The audit log filling up with plugin entries and pushing out real ones
<!-- /BUG_FIXES -->
+2 -2
View File
@@ -229,7 +229,7 @@ RDP وVNC وTelnet داخل المتصفح، في علامات تبويب وشا
<td width="50%" valign="top">
**سطر الأوامر:**
أداة `termix` لسطر الأوامر تعمل في الطرفية وفي سكربتاتك. افتح الطرفيات، ونفّذ أمرًا على مضيف واحد أو على أسطول كامل، وانقل الملفات عبر SFTP، وأدر المضيفات والمقتطفات وبيانات الدخول. ثبّتها عبر `npm install -g @termix-cli/cli` أو استخدم ملفًا تنفيذيًا مستقلًا. راجع [وثائق سطر الأوامر](https://docs.termix.site/cli).
أداة `termix` لسطر الأوامر تعمل في الطرفية وفي سكربتاتك. افتح الطرفيات، ونفّذ أمرًا على مضيف واحد أو على أسطول كامل، وانقل الملفات عبر SFTP، وأدر المضيفات والمقتطفات وبيانات الدخول. ثبّتها عبر `npm install -g @termix-ssh/cli` أو استخدم ملفًا تنفيذيًا مستقلًا. راجع [وثائق سطر الأوامر](https://docs.termix.site/cli).
</td>
</tr>
@@ -355,7 +355,7 @@ networks:
يوفر Termix أيضًا أداة سطر أوامر، لتدير خوادمك من الطرفية وتستخدم Termix داخل سكربتاتك.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Termix 是一个免费、开源、自托管的服务器管理平台。它把 SSH
<td width="50%" valign="top">
**命令行工具:**
`termix` 命令行工具,可用于你的终端和脚本。打开终端、在单台主机或整个机群上执行命令、通过 SFTP 传输文件,以及管理主机、代码片段和凭据。用 `npm install -g @termix-cli/cli` 安装,或者直接下载独立的可执行文件。详见 [CLI 文档](https://docs.termix.site/cli)。
`termix` 命令行工具,可用于你的终端和脚本。打开终端、在单台主机或整个机群上执行命令、通过 SFTP 传输文件,以及管理主机、代码片段和凭据。用 `npm install -g @termix-ssh/cli` 安装,或者直接下载独立的可执行文件。详见 [CLI 文档](https://docs.termix.site/cli)。
</td>
</tr>
@@ -349,7 +349,7 @@ networks:
Termix 还提供命令行工具,让你可以在终端里管理服务器,也可以把 Termix 用在自己的脚本中。
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Speichere eine Reihe von Tabs samt Aufteilung und öffne alles mit einem Klick w
<td width="50%" valign="top">
**Kommandozeile:**
Ein `termix`-CLI für deine Shell und deine Skripte. Terminals öffnen, einen Befehl auf einem Host oder einer ganzen Flotte ausführen, Dateien per SFTP verschieben und Hosts, Snippets und Zugangsdaten verwalten. Installiere es mit `npm install -g @termix-cli/cli` oder nimm eine eigenständige Binärdatei. Siehe die [CLI-Dokumentation](https://docs.termix.site/cli).
Ein `termix`-CLI für deine Shell und deine Skripte. Terminals öffnen, einen Befehl auf einem Host oder einer ganzen Flotte ausführen, Dateien per SFTP verschieben und Hosts, Snippets und Zugangsdaten verwalten. Installiere es mit `npm install -g @termix-ssh/cli` oder nimm eine eigenständige Binärdatei. Siehe die [CLI-Dokumentation](https://docs.termix.site/cli).
</td>
</tr>
@@ -350,7 +350,7 @@ networks:
Termix hat auch ein CLI, damit du deine Server vom Terminal aus verwalten und Termix in eigenen Skripten nutzen kannst.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Guarda un conjunto de pestañas con su distribución dividida y reábrelo entero
<td width="50%" valign="top">
**Línea de comandos:**
Un CLI `termix` para tu shell y tus scripts. Abre terminales, ejecuta un comando en un host o en una flota entera, mueve archivos por SFTP y gestiona hosts, fragmentos y credenciales. Instálalo con `npm install -g @termix-cli/cli` o coge un binario independiente. Consulta la [documentación del CLI](https://docs.termix.site/cli).
Un CLI `termix` para tu shell y tus scripts. Abre terminales, ejecuta un comando en un host o en una flota entera, mueve archivos por SFTP y gestiona hosts, fragmentos y credenciales. Instálalo con `npm install -g @termix-ssh/cli` o coge un binario independiente. Consulta la [documentación del CLI](https://docs.termix.site/cli).
</td>
</tr>
@@ -350,7 +350,7 @@ networks:
Termix también tiene un CLI, para que gestiones tus servidores desde un terminal y uses Termix en tus propios scripts.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Enregistrez un ensemble d'onglets avec leur disposition en écran divisé et rou
<td width="50%" valign="top">
**Ligne de commande:**
Un CLI `termix` pour votre shell et vos scripts. Ouvrez des terminaux, lancez une commande sur un hôte ou une flotte entière, déplacez des fichiers en SFTP et gérez hôtes, extraits et identifiants. Installez-le avec `npm install -g @termix-cli/cli` ou récupérez un binaire autonome. Voir la [documentation du CLI](https://docs.termix.site/cli).
Un CLI `termix` pour votre shell et vos scripts. Ouvrez des terminaux, lancez une commande sur un hôte ou une flotte entière, déplacez des fichiers en SFTP et gérez hôtes, extraits et identifiants. Installez-le avec `npm install -g @termix-ssh/cli` ou récupérez un binaire autonome. Voir la [documentation du CLI](https://docs.termix.site/cli).
</td>
</tr>
@@ -348,7 +348,7 @@ networks:
Termix propose aussi un CLI, pour gérer vos serveurs depuis un terminal et utiliser Termix dans vos propres scripts.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -229,7 +229,7 @@ CPU, मेमोरी और डिस्क जैसी होस्ट म
<td width="50%" valign="top">
**कमांड लाइन:**
आपके शेल और स्क्रिप्ट के लिए `termix` CLI। टर्मिनल खोलें, किसी एक होस्ट या पूरे फ़्लीट पर कमांड चलाएँ, SFTP से फ़ाइलें भेजें, और होस्ट, स्निपेट व क्रेडेंशियल संभालें। `npm install -g @termix-cli/cli` से इंस्टॉल करें या अलग बाइनरी लें। [CLI दस्तावेज़](https://docs.termix.site/cli) देखें।
आपके शेल और स्क्रिप्ट के लिए `termix` CLI। टर्मिनल खोलें, किसी एक होस्ट या पूरे फ़्लीट पर कमांड चलाएँ, SFTP से फ़ाइलें भेजें, और होस्ट, स्निपेट व क्रेडेंशियल संभालें। `npm install -g @termix-ssh/cli` से इंस्टॉल करें या अलग बाइनरी लें। [CLI दस्तावेज़](https://docs.termix.site/cli) देखें।
</td>
</tr>
@@ -355,7 +355,7 @@ networks:
Termix में CLI भी है, ताकि आप टर्मिनल से अपने सर्वर संभाल सकें और Termix को अपनी स्क्रिप्ट में इस्तेमाल कर सकें।
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Salva un insieme di schede con la loro disposizione divisa e riapri tutto con un
<td width="50%" valign="top">
**Riga di comando:**
Una CLI `termix` per la tua shell e i tuoi script. Apri terminali, esegui un comando su un host o su un'intera flotta, sposta file via SFTP e gestisci host, frammenti e credenziali. Installala con `npm install -g @termix-cli/cli` oppure prendi un binario autonomo. Vedi la [documentazione della CLI](https://docs.termix.site/cli).
Una CLI `termix` per la tua shell e i tuoi script. Apri terminali, esegui un comando su un host o su un'intera flotta, sposta file via SFTP e gestisci host, frammenti e credenziali. Installala con `npm install -g @termix-ssh/cli` oppure prendi un binario autonomo. Vedi la [documentazione della CLI](https://docs.termix.site/cli).
</td>
</tr>
@@ -350,7 +350,7 @@ networks:
Termix ha anche una CLI, così puoi gestire i tuoi server dal terminale e usare Termix nei tuoi script.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Proxmox のインスタンスからそのままホストを取り込めます。
<td width="50%" valign="top">
**コマンドラインツール:**
シェルやスクリプトから使える `termix` CLI です。ターミナルを開き、ホスト 1 台またはフリート全体でコマンドを実行し、SFTP でファイルを移動し、ホストやスニペット、認証情報を管理できます。`npm install -g @termix-cli/cli` で入れるか、単体のバイナリを使ってください。詳しくは [CLI ドキュメント](https://docs.termix.site/cli)をご覧ください。
シェルやスクリプトから使える `termix` CLI です。ターミナルを開き、ホスト 1 台またはフリート全体でコマンドを実行し、SFTP でファイルを移動し、ホストやスニペット、認証情報を管理できます。`npm install -g @termix-ssh/cli` で入れるか、単体のバイナリを使ってください。詳しくは [CLI ドキュメント](https://docs.termix.site/cli)をご覧ください。
</td>
</tr>
@@ -350,7 +350,7 @@ networks:
Termix には CLI もあるので、ターミナルからサーバーを管理したり、自分のスクリプトに組み込んだりできます。
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Proxmox 인스턴스에서 호스트를 바로 가져오고, 노드와 게스트
<td width="50%" valign="top">
**명령줄 도구:**
셸과 스크립트에서 쓰는 `termix` CLI입니다. 터미널을 열고, 호스트 하나나 플릿 전체에서 명령을 실행하고, SFTP로 파일을 옮기고, 호스트와 스니펫, 자격 증명을 관리할 수 있습니다. `npm install -g @termix-cli/cli`로 설치하거나 단독 실행 파일을 받으면 됩니다. [CLI 문서](https://docs.termix.site/cli)를 참고하세요.
셸과 스크립트에서 쓰는 `termix` CLI입니다. 터미널을 열고, 호스트 하나나 플릿 전체에서 명령을 실행하고, SFTP로 파일을 옮기고, 호스트와 스니펫, 자격 증명을 관리할 수 있습니다. `npm install -g @termix-ssh/cli`로 설치하거나 단독 실행 파일을 받으면 됩니다. [CLI 문서](https://docs.termix.site/cli)를 참고하세요.
</td>
</tr>
@@ -348,7 +348,7 @@ networks:
Termix에는 CLI도 있어서 터미널에서 서버를 관리하거나 Termix를 자기 스크립트에 넣어 쓸 수 있습니다.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Salva um conjunto de abas com a divisão da tela e reabre tudo com um clique. O
<td width="50%" valign="top">
**Linha de comando:**
Um CLI `termix` para o teu shell e os teus scripts. Abre terminais, roda um comando num host ou numa frota inteira, move arquivos por SFTP e gerencia hosts, trechos e credenciais. Instala com `npm install -g @termix-cli/cli` ou pega um binário independente. Vê a [documentação do CLI](https://docs.termix.site/cli).
Um CLI `termix` para o teu shell e os teus scripts. Abre terminais, roda um comando num host ou numa frota inteira, move arquivos por SFTP e gerencia hosts, trechos e credenciais. Instala com `npm install -g @termix-ssh/cli` ou pega um binário independente. Vê a [documentação do CLI](https://docs.termix.site/cli).
</td>
</tr>
@@ -346,7 +346,7 @@ networks:
O Termix também tem um CLI, para gerenciares os teus servidores pelo terminal e usares o Termix nos teus próprios scripts.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ RDP, VNC и Telnet прямо в браузере, во вкладках и с
<td width="50%" valign="top">
**Командная строка:**
CLI `termix` для вашей оболочки и ваших скриптов. Открывайте терминалы, выполняйте команду на одном хосте или на целом флоте, перемещайте файлы по SFTP и управляйте хостами, сниппетами и учётными данными. Установите через `npm install -g @termix-cli/cli` или возьмите отдельный исполняемый файл. Смотрите [документацию CLI](https://docs.termix.site/cli).
CLI `termix` для вашей оболочки и ваших скриптов. Открывайте терминалы, выполняйте команду на одном хосте или на целом флоте, перемещайте файлы по SFTP и управляйте хостами, сниппетами и учётными данными. Установите через `npm install -g @termix-ssh/cli` или возьмите отдельный исполняемый файл. Смотрите [документацию CLI](https://docs.termix.site/cli).
</td>
</tr>
@@ -346,7 +346,7 @@ networks:
У Termix есть и CLI, так что серверами можно управлять из терминала и использовать Termix в своих скриптах.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Bir sekme grubunu bölünmüş düzeniyle birlikte kaydedin ve hepsini tek tıkl
<td width="50%" valign="top">
**Komut satırı arayüzü:**
Kabuğunuz ve betikleriniz için bir `termix` CLI'ı. Terminal açın, tek bir sunucuda veya tüm filoda komut çalıştırın, SFTP ile dosya taşıyın ve sunucuları, parçacıkları ve kimlik bilgilerini yönetin. `npm install -g @termix-cli/cli` ile kurun ya da bağımsız bir çalıştırılabilir dosya edinin. [CLI belgelerine](https://docs.termix.site/cli) bakın.
Kabuğunuz ve betikleriniz için bir `termix` CLI'ı. Terminal açın, tek bir sunucuda veya tüm filoda komut çalıştırın, SFTP ile dosya taşıyın ve sunucuları, parçacıkları ve kimlik bilgilerini yönetin. `npm install -g @termix-ssh/cli` ile kurun ya da bağımsız bir çalıştırılabilir dosya edinin. [CLI belgelerine](https://docs.termix.site/cli) bakın.
</td>
</tr>
@@ -346,7 +346,7 @@ networks:
Termix'in bir CLI'ı da var; sunucularınızı terminalden yönetebilir ve Termix'i kendi betiklerinizde kullanabilirsiniz.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -215,7 +215,7 @@ Lưu một bộ thẻ cùng cách chia màn hình rồi mở lại toàn bộ ch
<td width="50%" valign="top">
**Dòng lệnh:**
Công cụ `termix` cho shell và các script của bạn. Mở terminal, chạy một lệnh trên một máy chủ hoặc cả một nhóm, chuyển tệp qua SFTP, và quản lý máy chủ, đoạn lệnh và thông tin đăng nhập. Cài bằng `npm install -g @termix-cli/cli` hoặc tải bản chạy độc lập. Xem [tài liệu CLI](https://docs.termix.site/cli).
Công cụ `termix` cho shell và các script của bạn. Mở terminal, chạy một lệnh trên một máy chủ hoặc cả một nhóm, chuyển tệp qua SFTP, và quản lý máy chủ, đoạn lệnh và thông tin đăng nhập. Cài bằng `npm install -g @termix-ssh/cli` hoặc tải bản chạy độc lập. Xem [tài liệu CLI](https://docs.termix.site/cli).
</td>
</tr>
@@ -346,7 +346,7 @@ networks:
Termix cũng có CLI, để bạn quản lý máy chủ từ terminal và dùng Termix trong script của mình.
```bash
npm install -g @termix-cli/cli
npm install -g @termix-ssh/cli
termix login --url https://termix.example.com
termix ssh 1
```
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "termix",
"version": "2.9.1",
"version": "2.9.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "termix",
"version": "2.9.1",
"version": "2.9.2",
"hasInstallScript": true,
"workspaces": [
"packages/*",
+1 -1
View File
@@ -5,7 +5,7 @@
"packages/*",
"plugins/*"
],
"version": "2.9.1",
"version": "2.9.2",
"description": "Self-hosted SSH and remote desktop management.",
"author": "Karmaa",
"main": "electron/main.cjs",
@@ -56,6 +56,6 @@
"issued": "Sertifikaat uitgereik en geïnstalleer"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-sertifikate"
}
}
@@ -56,6 +56,6 @@
"issued": "تم إصدار الشهادة وتركيبها"
},
"plugin": {
"name": "ACME Certificates"
"name": "شهادات ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Сертификат издаден и инсталиран"
},
"plugin": {
"name": "ACME Certificates"
"name": "Сертификати на ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "সার্টিফিকেট ইস্যু এবং ইনস্টল করা হয়েছে"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME সার্টিফিকেট"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificat emès i instal·lat"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificats ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certifikát vydán a nainstalován"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certifikáty ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certifikat udstedt og installeret"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-certifikater"
}
}
@@ -56,6 +56,6 @@
"issued": "Zertifikat ausgestellt und installiert"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-Zertifikate"
}
}
@@ -56,6 +56,6 @@
"issued": "Έκδοση και εγκατάσταση πιστοποιητικού"
},
"plugin": {
"name": "ACME Certificates"
"name": "Πιστοποιητικά ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificado emitido e instalado"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificados ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Sertifikaatti myönnetty ja asennettu"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-sertifikaatit"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificat délivré et installé"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificats ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "תעודה הונפקה והותקנה"
},
"plugin": {
"name": "ACME Certificates"
"name": "תעודות ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "प्रमाणपत्र जारी और स्थापित किया गया"
},
"plugin": {
"name": "ACME Certificates"
"name": "एसीएमई प्रमाणपत्र"
}
}
@@ -56,6 +56,6 @@
"issued": "Tanúsítvány kiállítva és telepítve"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME tanúsítványok"
}
}
@@ -56,6 +56,6 @@
"issued": "Sertifikat telah diterbitkan dan dipasang."
},
"plugin": {
"name": "ACME Certificates"
"name": "Sertifikat ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificato rilasciato e installato"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificati ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "証明書が発行され、インストールされました。"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME認定証"
}
}
@@ -56,6 +56,6 @@
"issued": "인증서가 발급 및 설치되었습니다."
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME 인증서"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificaat afgegeven en geïnstalleerd"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-certificaten"
}
}
@@ -56,6 +56,6 @@
"issued": "Sertifikat utstedt og installert"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-sertifikater"
}
}
@@ -56,6 +56,6 @@
"issued": "Certyfikat wydany i zainstalowany"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certyfikaty ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificado emitido e instalado."
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificados ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificado emitido e instalado."
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificados ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Certificat emis și instalat"
},
"plugin": {
"name": "ACME Certificates"
"name": "Certificate ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Сертификат выдан и установлен."
},
"plugin": {
"name": "ACME Certificates"
"name": "Сертификаты ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Сертификат издат и инсталиран"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME сертификати"
}
}
@@ -56,6 +56,6 @@
"issued": "Certifikat utfärdat och installerat"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME-certifikat"
}
}
@@ -56,6 +56,6 @@
"issued": "ออกและติดตั้งใบรับรองแล้ว"
},
"plugin": {
"name": "ACME Certificates"
"name": "ใบรับรอง ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Sertifika düzenlendi ve kuruldu."
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME Sertifikaları"
}
}
@@ -56,6 +56,6 @@
"issued": "Сертифікат видано та встановлено"
},
"plugin": {
"name": "ACME Certificates"
"name": "Сертифікати ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "Giấy chứng nhận đã được cấp và cài đặt"
},
"plugin": {
"name": "ACME Certificates"
"name": "Chứng chỉ ACME"
}
}
@@ -56,6 +56,6 @@
"issued": "证书已颁发并安装"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME证书"
}
}
@@ -56,6 +56,6 @@
"issued": "證書已頒發並安裝"
},
"plugin": {
"name": "ACME Certificates"
"name": "ACME證書"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Bekyk dokumente"
},
"plugin": {
"name": "AI Assistant"
"name": "KI-assistent"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "عرض المستندات"
},
"plugin": {
"name": "AI Assistant"
"name": "مساعد الذكاء الاصطناعي"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Преглед на документи"
},
"plugin": {
"name": "AI Assistant"
"name": "Асистент с изкуствен интелект"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "নথি দেখুন"
},
"plugin": {
"name": "AI Assistant"
"name": "এআই সহকারী"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Veure documents"
},
"plugin": {
"name": "AI Assistant"
"name": "Assistent d'IA"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Zobrazit dokumenty"
},
"plugin": {
"name": "AI Assistant"
"name": "Asistent umělé inteligence"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Se dokumenter"
},
"plugin": {
"name": "AI Assistant"
"name": "AI-assistent"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Dokumentation anzeigen"
},
"plugin": {
"name": "AI Assistant"
"name": "KI-Assistent"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Προβολή εγγράφων"
},
"plugin": {
"name": "AI Assistant"
"name": "Βοηθός Τεχνητής Νοημοσύνης"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Ver documentación"
},
"plugin": {
"name": "AI Assistant"
"name": "Asistente de IA"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Näytä dokumentit"
},
"plugin": {
"name": "AI Assistant"
"name": "Tekoälyavustaja"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Voir la documentation"
},
"plugin": {
"name": "AI Assistant"
"name": "Assistant IA"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "הצג מסמכים"
},
"plugin": {
"name": "AI Assistant"
"name": "עוזר בינה מלאכותית"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "दस्तावेज़ देखें"
},
"plugin": {
"name": "AI Assistant"
"name": "एआई सहायक"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Dokumentumok megtekintése"
},
"plugin": {
"name": "AI Assistant"
"name": "MI asszisztens"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Lihat dokumen"
},
"plugin": {
"name": "AI Assistant"
"name": "Asisten AI"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Visualizza documentazione"
},
"plugin": {
"name": "AI Assistant"
"name": "Assistente AI"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "ドキュメントを表示"
},
"plugin": {
"name": "AI Assistant"
"name": "AIアシスタント"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "문서 보기"
},
"plugin": {
"name": "AI Assistant"
"name": "AI 어시스턴트"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Documenten bekijken"
},
"plugin": {
"name": "AI Assistant"
"name": "AI-assistent"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Vis dokumenter"
},
"plugin": {
"name": "AI Assistant"
"name": "AI-assistent"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Zobacz dokumentację"
},
"plugin": {
"name": "AI Assistant"
"name": "Asystent AI"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Documentação"
},
"plugin": {
"name": "AI Assistant"
"name": "Assistente de IA"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Ver documentação"
},
"plugin": {
"name": "AI Assistant"
"name": "Assistente de IA"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Vizualizați documentele"
},
"plugin": {
"name": "AI Assistant"
"name": "Asistent AI"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Документация"
},
"plugin": {
"name": "AI Assistant"
"name": "ИИ-помощник"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Прикажи документе"
},
"plugin": {
"name": "AI Assistant"
"name": "АИ асистент"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Visa dokument"
},
"plugin": {
"name": "AI Assistant"
"name": "AI-assistent"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "ดูเอกสาร"
},
"plugin": {
"name": "AI Assistant"
"name": "ผู้ช่วย AI"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Dokümanları görüntüle"
},
"plugin": {
"name": "AI Assistant"
"name": "Yapay Zeka Asistanı"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Переглянути документи"
},
"plugin": {
"name": "AI Assistant"
"name": "Помічник зі штучним інтелектом"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "Xem tài liệu"
},
"plugin": {
"name": "AI Assistant"
"name": "Trợ lý AI"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "查看文档"
},
"plugin": {
"name": "AI Assistant"
"name": "人工智能助手"
}
}
+1 -1
View File
@@ -117,6 +117,6 @@
"docsLink": "檢視文件"
},
"plugin": {
"name": "AI Assistant"
"name": "人工智慧助手"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "Laai tans..."
},
"plugin": {
"name": "Alerts"
"name": "Waarskuwings"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "جارٍ التحميل..."
},
"plugin": {
"name": "Alerts"
"name": "التنبيهات"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "Зареждане..."
},
"plugin": {
"name": "Alerts"
"name": "Сигнали"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "লোড হচ্ছে..."
},
"plugin": {
"name": "Alerts"
"name": "সতর্কতা"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "S'està carregant..."
},
"plugin": {
"name": "Alerts"
"name": "Alertes"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "Načítání..."
},
"plugin": {
"name": "Alerts"
"name": "Upozornění"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "Indlæser..."
},
"plugin": {
"name": "Alerts"
"name": "Advarsler"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "Laden..."
},
"plugin": {
"name": "Alerts"
"name": "Alarme"
}
}
+1 -1
View File
@@ -170,6 +170,6 @@
"loading": "Φόρτωση..."
},
"plugin": {
"name": "Alerts"
"name": "Ειδοποιήσεις"
}
}
Loaded 100 of 690 files, more files were not shown because too many files have changed in this diff. Show more