chore: rework plugin readmes, json changelogs and standalone repo setup

This commit is contained in:
LukeGus committed 2026-10-04 21:25:16 -05:00
1 parent a8f383d2b3
commit 29a946d02e
500 files changed
+6729 -1250

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+26
View File
@@ -0,0 +1,26 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "Certificates from Let's Encrypt or any ACME directory"
},
{
"type": "added",
"text": "HTTP challenge on port 80, or a Cloudflare DNS challenge when port 80 is closed"
},
{
"type": "added",
"text": "Renews before the certificate expires"
},
{
"type": "added",
"text": "Swaps in the new certificate without a restart"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Gets the HTTPS certificate Termix serves from Let's Encrypt or another ACME provider and renews it before it expires. Supports the HTTP challenge and the Cloudflare DNS challenge.
+27
View File
@@ -0,0 +1,27 @@
# Contributing to ACME Certificates
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Settings
### Admin
- **Renew automatically:** checks twice a day and renews when there is no certificate, it is self-signed, it does not cover the domain, or it expires within 30 days
- **Domain:** the public domain name the certificate covers
- **Email:** the contact email for the ACME account
- **Certificate authority:** Let's Encrypt, Let's Encrypt staging, or a custom ACME directory
- **ACME directory URL:** only for a custom authority, and must be https
- **Challenge type:** HTTP or DNS (Cloudflare)
- **Cloudflare API token:** used by the DNS challenge, stored encrypted
## Permissions
- `acme-ssl.manage`: see the certificate status and request a new certificate. Only admins have it by default.
+27 -30
View File
@@ -1,41 +1,38 @@
# ACME Certificates
<div align="center">
Gets and renews the Termix HTTPS certificate from Let's Encrypt or another ACME provider.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>ACME Certificates</h1>
<p>Free HTTPS certificates for your Termix server, renewed for you</p>
</div>
<br />
## Overview
ACME Certificates gets the HTTPS certificate Termix serves from Let's Encrypt or any other ACME provider and keeps it renewed.
<br />
## Features
- Gets a certificate from Let's Encrypt, Let's Encrypt staging or any ACME directory URL.
- Checks twice a day and renews when there is no certificate, the current one is self-signed, it does not cover the domain or it expires within 30 days.
- Swaps in the new certificate without a restart.
- Shows the current certificate and the last attempt, with a button to request one now.
- Certificates from Let's Encrypt or any ACME directory
- HTTP challenge on port 80, or a Cloudflare DNS challenge when port 80 is closed
- Renews before the certificate expires
- Swaps in the new certificate without a restart
## Setup
<br />
Pick a challenge type:
## Support
- HTTP: the provider fetches `http://<domain>/.well-known/acme-challenge/...`, so port 80 must reach Termix.
- DNS (Cloudflare): needs a Cloudflare API token with Zone:DNS:Edit. Works when port 80 is closed.
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
If you turn this plugin off, Termix keeps serving the current certificate but nothing renews it. Admin Settings > HTTPS certificate warns you before it expires. Uploading your own certificate is still done there.
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
## Settings
<br />
### Admin
## License
- Renew automatically: turn automatic renewal on or off.
- Domain and Email: the domain to cover and the contact email for the provider.
- Certificate authority: Let's Encrypt, Let's Encrypt staging or a custom ACME directory URL.
- Challenge type: HTTP or DNS (Cloudflare).
- Cloudflare API token: used by the DNS challenge. Stored encrypted.
## Permissions
- `acme-ssl.manage`: Manage ACME certificates. Only admins have it by default.
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+3 -3
View File
@@ -2,16 +2,16 @@
"id": "acme-ssl",
"name": "ACME Certificates",
"version": "1.0.0",
"description": "Gets and renews the Termix HTTPS certificate from Let's Encrypt or another ACME provider.",
"description": "Gets the Termix HTTPS certificate from Let's Encrypt or any ACME provider and renews it for you.",
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Access & Security",
"icon": "Lock",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,19 +7,27 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"acme-client": "^5.4.0"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@testing-library/dom": "^10.4.2",
"@testing-library/react": "^16.3.3",
"@types/node": "^26.2.0",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -27,5 +35,10 @@
"express": "^5.2.1",
"react": "^19.2.8",
"sonner": "^2.0.8"
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+38
View File
@@ -0,0 +1,38 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "Ask about your hosts, snippets, fleets, alerts, automations and more"
},
{
"type": "added",
"text": "Proposes changes instead of making them, and nothing runs until you approve it"
},
{
"type": "added",
"text": "Can run safe read-only commands like `df` and `uptime` if you allow it"
},
{
"type": "added",
"text": "Ask about a host right from its terminal"
},
{
"type": "added",
"text": "Works with Ollama, Anthropic, OpenAI, Google Gemini and any OpenAI compatible endpoint"
},
{
"type": "added",
"text": "AI Agents: run Pi, OpenCode, Claude Code or Codex on an SSH host using one of your Termix providers, with tool approvals, queued messages, attachments, Git diffs and worktrees"
},
{
"type": "added",
"text": "One-click install of the selected agent and Node.js, and a button to set up SSH loopback forwarding"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Adds an AI assistant that can read your hosts, snippets, fleets, alerts and automations and suggest changes for you to approve. Works with Ollama, Anthropic, OpenAI, Google Gemini and any OpenAI compatible provider.
+37
View File
@@ -0,0 +1,37 @@
# Contributing to AI Assistant
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Settings
### Admin
- **AI assistant:** let users turn the assistant on. While this is off it is hidden and blocked for everyone
- **Allowed private AI hosts:** hosts on your private network a provider may point at, such as a self-hosted Ollama
### User
- **Enable the AI assistant:** turn the assistant on for yourself
- **Allow read-only diagnostic commands:** let the assistant run safe commands without asking
- **Providers:** your AI providers, models and API keys
### Host
- **Enable AI Assistant:** let the assistant help in this host's terminal. Off by default
## Permissions
- `ai.use`: use the assistant. Admins and users have it by default.
- `ai.manage_providers`: add, edit and remove AI providers and their API keys. Admins and users have it by default.
- `ai.apply_proposals`: let the assistant carry out the changes it suggests. Admins and users have it by default.
- `ai.services.use`: let other features call the assistant for you. Admins and users have it by default.
- `ai.secrets.share`: let other features use the stored API key without seeing it. Admins and users have it by default.
- `ai.agents`: run coding agents on SSH hosts. Only admins have it by default.
+37 -39
View File
@@ -1,50 +1,48 @@
# AI Assistant
<div align="center">
An AI assistant that can read your hosts, snippets, fleets, alerts and automations, and suggest changes for you to approve.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>AI Assistant</h1>
<p>An optional AI assistant that knows your servers</p>
</div>
<br />
## Overview
AI Assistant is a chat that can read your Termix setup and propose changes for you to approve. It can also run coding agents on your SSH hosts.
<br />
## Features
- Chat with an assistant that can read your hosts, snippets, fleets, alerts, automations, workspaces, network graph and homepage.
- The assistant suggests changes, and nothing is applied until you approve it.
- Can run read-only diagnostic commands on a host if you allow it.
- Open the assistant from the terminal toolbar with the current session as context.
- Works with Ollama, Anthropic, OpenAI, Google Gemini and any OpenAI compatible provider.
- Ask about your hosts, snippets, fleets, alerts, automations and more
- Proposes changes instead of making them, and nothing runs until you approve it
- Can run safe read-only commands like `df` and `uptime` if you allow it
- Ask about a host right from its terminal
- Works with Ollama, Anthropic, OpenAI, Google Gemini and any OpenAI compatible endpoint
- Run Pi, OpenCode, Claude Code or Codex as a coding agent on an SSH host, using your own provider
## Settings
### Admin
- AI assistant: let users turn the assistant on. While this is off it is hidden for everyone.
- Allowed private AI hosts: hosts on your private network a provider may point at, such as a self-hosted Ollama.
### User
- Enable the AI assistant: turn the assistant on for yourself.
- Allow read-only diagnostic commands: let the assistant run safe commands on your hosts.
- Providers: the AI providers, models and API keys you use.
### Host
- Enable AI Assistant: allow the assistant to work with this host.
## Permissions
- `ai.use`: Open the assistant and ask it things. Admins and users have it by default.
- `ai.manage_providers`: Add, edit and remove AI providers and their API keys. Admins and users have it by default.
- `ai.apply_proposals`: Let the assistant carry out the changes it suggests. Admins and users have it by default.
- `ai.services.use`: Let other features call the assistant for you. Admins and users have it by default.
- `ai.secrets.share`: Let other features use the stored AI API key without seeing it. Admins and users have it by default.
<br />
## Services
Uses from other plugins:
Uses from other plugins, each one optional:
- `workspaces.saved`, `network-topology.graph`, `snippets.access`, `fleets.access`, `terminal.history`, `automations.access` and `homepage.items` to read your data. Each one is optional.
- `workspaces.saved`, `network-topology.graph`, `snippets.access`, `fleets.access`, `terminal.history`, `automations.access` and `homepage.items` to read your data
## Development
<br />
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
## Support
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
<br />
## License
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+3 -3
View File
@@ -2,16 +2,16 @@
"id": "ai",
"name": "AI Assistant",
"version": "1.0.0",
"description": "An AI assistant that can read your hosts, snippets, fleets, alerts and automations, and suggest changes for you to approve.",
"description": "An optional AI assistant that reads your setup and proposes changes for you to approve.",
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Productivity",
"icon": "Sparkles",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,7 +7,10 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.120.0",
@@ -16,6 +19,8 @@
"remark-gfm": "^4.0.1"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@testing-library/dom": "^10.4.2",
"@testing-library/react": "^16.3.3",
@@ -23,7 +28,10 @@
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"better-sqlite3": "^13.0.3",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -33,5 +41,10 @@
"react": "^19.2.8",
"sonner": "^2.0.8",
"ssh2": "^1.17.0"
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+30
View File
@@ -0,0 +1,30 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "One inbox for alerts from every part of Termix"
},
{
"type": "added",
"text": "Popups for new alerts"
},
{
"type": "added",
"text": "Send alerts to Discord, ntfy, email or a webhook"
},
{
"type": "added",
"text": "Rules that pick which alerts go where"
},
{
"type": "added",
"text": "Optional news from the Termix team, like security notices and releases"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Adds one inbox for every alert in Termix. Alerts can also be sent to webhooks, ntfy, Discord and email, with delivery rules to pick what goes where.
+27
View File
@@ -0,0 +1,27 @@
# Contributing to Alerts
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Settings
### Admin
- **Termix announcements:** show news from the Termix team in everyone's inbox
- **Keep alerts for (days):** older alerts are removed from every inbox
- **SMTP server, port, TLS, username, password and from address:** needed for email channels. Leave the server empty to turn email off
### User
- **Alert popups:** all alerts, warnings and critical, critical only, or none
## Permissions
- `alerts.use`: get alerts in the inbox and send them to your own channels. Admins and users have it by default.
+28 -28
View File
@@ -1,39 +1,39 @@
# Alerts
<div align="center">
One inbox for every alert, with delivery to webhooks, ntfy, Discord and email.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>Alerts</h1>
<p>One inbox for every alert in Termix</p>
</div>
<br />
## Overview
Alerts is the inbox every Termix alert lands in, with delivery to Discord, ntfy, email or a webhook.
<br />
## Features
- One inbox for alerts from every part of Termix.
- Popups for new alerts, filtered by severity.
- Channels that send alerts to webhooks, ntfy, Discord and email.
- Delivery rules that pick which alerts go to which channel.
- Optional news from the Termix team, like security notices and new releases.
- One inbox for alerts from every part of Termix
- Popups for new alerts
- Send alerts to Discord, ntfy, email or a webhook
- Rules that pick which alerts go where
- Optional news from the Termix team, like security notices and releases
## Settings
<br />
### Admin
## Support
- Termix announcements: show news from the Termix team in everyone's inbox.
- Keep alerts for (days): older alerts are removed from every inbox.
- SMTP server, port, TLS, username, password and from address: needed for email channels. Leave the server empty to turn email off.
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
### User
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
- Alert popups: all alerts, warnings and critical, critical only, or none.
<br />
## Permissions
## License
- `alerts.use`: Get alerts in the inbox and send them to your own channels. Admins and users have it by default.
## For plugin authors
Send an alert from any plugin with `ctx.notify.send()`. This plugin stores it and delivers it. Do not build a separate notification system into a plugin.
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+3 -3
View File
@@ -2,16 +2,16 @@
"id": "alerts",
"name": "Alerts",
"version": "1.0.0",
"description": "One inbox for every alert, with delivery to webhooks, ntfy, Discord and email.",
"description": "One inbox for every alert in Termix, with delivery to webhooks, ntfy, Discord and email.",
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Monitoring",
"icon": "Bell",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,13 +7,18 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"lucide-react": "^1.33.0",
"nodemailer": "^10.0.10"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@testing-library/dom": "^10.4.2",
"@testing-library/react": "^16.3.3",
@@ -21,7 +26,10 @@
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"better-sqlite3": "^13.0.3",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -30,5 +38,10 @@
"express": "^5.2.1",
"react": "^19.2.8",
"sonner": "^2.0.8"
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+34
View File
@@ -0,0 +1,34 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "Triggers for metrics, hosts going up or down, health checks, schedules, container events and webhooks"
},
{
"type": "added",
"text": "Steps that run commands and snippets, control containers and tunnels, wake hosts, call URLs and send alerts"
},
{
"type": "added",
"text": "Conditions, waits and variables for more complex flows"
},
{
"type": "added",
"text": "Run on one host, a fleet or every host"
},
{
"type": "added",
"text": "Test runs and a history of every run"
},
{
"type": "added",
"text": "Maintenance windows that pause automations while you work on a host"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Runs actions on your hosts on a schedule or when something happens, like a host going down, a metric crossing a limit, a container event or an incoming webhook. Each automation is a list of steps, such as running a command, sending an alert or calling a URL.
+19
View File
@@ -0,0 +1,19 @@
# Contributing to Automations
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Permissions
- `automations.view`: see automations and their runs. Admins and users have it by default.
- `automations.create`: create automations. Admins and users have it by default.
- `automations.edit`: change automations. Admins and users have it by default.
- `automations.delete`: delete automations. Admins and users have it by default.
- `automations.run`: run automations by hand. Admins and users have it by default.
+33 -31
View File
@@ -1,51 +1,53 @@
# Automations
<div align="center">
Run actions on your hosts on a schedule or when something happens, like a host going down or a metric crossing a limit.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>Automations</h1>
<p>Make your servers react on their own</p>
</div>
<br />
## Overview
Automations runs steps on your hosts when something happens, like cleaning up a disk when it fills or restarting a container when it stops.
<br />
## Features
- Triggers: a schedule, a host going up or down, a metric crossing a limit, a health check change, a container event, a Termix event or an incoming webhook.
- Steps: send an alert, call a URL, run a snippet or command, control a container or tunnel, wake a host, wait, set a variable, branch with if / otherwise, run another automation or stop.
- Run an automation on the host that triggered it or on any host or fleet you pick.
- See the output and errors of each step for every run.
- Triggers for metrics, hosts going up or down, health checks, schedules, container events and webhooks
- Steps that run commands and snippets, control containers and tunnels, wake hosts, call URLs and send alerts
- Conditions, waits and variables for more complex flows
- Run on one host, a fleet or every host
- Test runs and a history of every run
- Maintenance windows that pause automations while you work on a host
## Permissions
- `automations.view`: See automations and their runs. Admins and users have it by default.
- `automations.create`: Create automations. Admins and users have it by default.
- `automations.edit`: Change automations. Admins and users have it by default.
- `automations.delete`: Delete automations. Admins and users have it by default.
- `automations.run`: Run automations by hand. Admins and users have it by default.
<br />
## Services
Provides to other plugins:
- `automations.access`: list and run automations.
- `automations.access`: list and run automations
Uses from other plugins:
- `snippets.access` for the run snippet step. Required.
- `fleets.access`, `tunnels.access`, `docker.containers`, `docker.events`, `host-metrics.viewers` and `wake-on-lan.send` for their steps and triggers. Each one is optional.
- `snippets.access` for the run snippet step. Required
- `fleets.access`, `tunnels.access`, `docker.containers`, `docker.events`, `host-metrics.viewers` and `wake-on-lan.send` for their steps and triggers. Each one is optional
## Development
<br />
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
## Support
## Host maintenance
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
Open **Maintenance** from a saved host's actions. Its owner can start maintenance now, record a reason and estimated duration, or add a one-time, weekly or monthly schedule. Viewing requires `automations.view`; changes require `automations.edit`. Active maintenance appears as a host badge. The Automations plugin must remain enabled for maintenance scheduling and suppression to operate.
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
Schedules use UTC, including through daylight-saving changes. A monthly schedule for a day missing from a month skips that month. Up to 20 plans per host are stored; remove completed one-time plans when no longer needed. Planned windows cannot overlap (touching endpoints are allowed), and recurring conflicts are checked over the Gregorian calendar cycle. Removing a plan cancels future occurrences, not maintenance already in progress.
<br />
The estimated completion time is informational. Maintenance **only ends when its owner explicitly ends it**. If work overruns into another scheduled window, the host stays in maintenance and the estimate extends to the later planned end. After server downtime, due plans are caught up without briefly exposing an outage between maintenance windows. Each plan's next occurrence and the active state survive restarts.
## License
While active, maintenance suppresses new host-status, health-check, metric-threshold, container-event and tunnel-disconnection automation runs for that host. This pauses the entire triggered automation, including any remediation steps. Monitoring continues to report the real status; observed status/health baselines still advance and metric dwell windows are reset. Manual runs, schedules, webhooks, security login events and runs already in progress continue normally. Maintenance does not globally silence alerts from unrelated plugins.
An optional overdue reminder uses the estimate plus a configurable grace period (20 minutes by default). It only sends after core has observed the host offline at or after that deadline; an unknown, online or older cached status does not qualify. Enable host status checks to supply those observations. Reminders use the Alerts hub and category `automations.maintenance_overdue`, which can be routed through the user's notification rules. A successful reminder is remembered across restarts; an extended estimate permits another reminder for the new deadline. No reminder automatically ends maintenance.
Maintenance rows reference their owner and host with cascading deletion. SQLite, PostgreSQL and MySQL migrations add only the new maintenance table.
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+3 -3
View File
@@ -2,16 +2,16 @@
"id": "automations",
"name": "Automations",
"version": "1.0.0",
"description": "Run actions on your hosts on a schedule or when something happens, like a host going down or a metric crossing a limit.",
"description": "Run steps on your hosts on a schedule or when something happens, like a host going down or a metric crossing a limit.",
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Infrastructure",
"icon": "Workflow",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,12 +7,17 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"lucide-react": "^1.33.0"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@testing-library/dom": "^10.4.2",
"@testing-library/react": "^16.3.3",
@@ -20,7 +25,10 @@
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"better-sqlite3": "^13.0.3",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -30,5 +38,10 @@
"react": "^19.2.8",
"sonner": "^2.0.8",
"ssh2": "^1.17.0"
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+30
View File
@@ -0,0 +1,30 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "Start, stop, restart, pause and remove containers"
},
{
"type": "added",
"text": "Live CPU, memory, network and disk stats"
},
{
"type": "added",
"text": "Read and download container logs"
},
{
"type": "added",
"text": "Open a shell inside a container"
},
{
"type": "added",
"text": "Works with Docker and Podman"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Manages Docker and Podman containers over SSH. List, inspect, start, stop and remove containers, read their logs and open a console inside them.
+22
View File
@@ -0,0 +1,22 @@
# Contributing to Docker
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Settings
### Host
- **Enable Docker:** show the Docker tab for this host
- **Container Runtime:** Docker or Podman
## Permissions
- `docker.use`: open the Docker manager and container consoles on hosts with Docker turned on. Admins and users have it by default.
+36 -25
View File
@@ -1,37 +1,48 @@
# Docker
<div align="center">
Manage Docker and Podman containers over SSH, with logs and a container console.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>Docker</h1>
<p>Manage Docker and Podman containers on your hosts</p>
</div>
<br />
## Overview
Docker manages the containers running on your hosts over SSH. It is not meant to replace Portainer or Dockge, just to handle the containers you already have.
<br />
## Features
- List, inspect, start, stop, restart, pause and remove containers.
- Read and download container logs.
- Open an interactive console inside a container.
- Works with Docker or Podman.
- Adds a Docker widget to the homepage.
- Start, stop, restart, pause and remove containers
- Live CPU, memory, network and disk stats
- Read and download container logs
- Open a shell inside a container
- Works with Docker and Podman
## Settings
### Host
- Enable Docker: show the Docker tab for this host.
- Container Runtime: Docker or Podman.
## Permissions
- `docker.use`: Use Docker. Admins and users have it by default.
<br />
## Services
Provides to other plugins:
- `docker.containers`: list containers and start, stop, restart, pause, unpause or remove them.
- `docker.events`: get notified when a container starts, exits, restarts or turns unhealthy.
- `docker.containers`: list containers and start, stop, restart, pause, unpause or remove them
- `docker.events`: get notified when a container starts, exits, restarts or turns unhealthy
## Development
<br />
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
## Support
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
<br />
## License
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+3 -3
View File
@@ -2,16 +2,16 @@
"id": "docker",
"name": "Docker",
"version": "1.0.0",
"description": "Manage Docker and Podman containers over SSH, with logs and a container console.",
"description": "Manage Docker and Podman containers on your hosts over SSH, with logs, stats and a console.",
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Infrastructure",
"icon": "Box",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,7 +7,10 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"@xterm/addon-clipboard": "^0.2.0",
@@ -18,13 +21,18 @@
"react-xtermjs": "^1.0.10"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@testing-library/dom": "^10.4.2",
"@testing-library/react": "^16.3.3",
"@types/node": "^26.2.0",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -44,5 +52,10 @@
"react-xtermjs": {
"@xterm/xterm": "$@xterm/xterm"
}
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+34
View File
@@ -0,0 +1,34 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "Browse, upload, download, rename, move and delete files, with sudo support"
},
{
"type": "added",
"text": "Edit files in a built-in code editor"
},
{
"type": "added",
"text": "Preview images, PDFs, audio and video"
},
{
"type": "added",
"text": "A trash you can restore deleted files from"
},
{
"type": "added",
"text": "Copy files between two hosts, with the fastest route picked for you and an integrity check"
},
{
"type": "added",
"text": "A side by side local and remote view in the desktop app"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Browse, edit and transfer files over SFTP. Includes a code editor, a trash you can restore from, bookmarks and transfers between two hosts.
+28
View File
@@ -0,0 +1,28 @@
# Contributing to File Manager
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Settings
### User
- **Simultaneous File Transfers:** how many uploads and downloads run at once
- **Confirm before moving files to trash:** ask before a delete. Permanent deletes always ask
### Host
- **Enable File Manager:** show the file manager for this host
- **Default Path:** the folder to open first
- **SCP Legacy Mode:** use SCP for hosts without a working SFTP server
## Permissions
- `file-manager.use`: browse, edit and transfer files. Admins and users have it by default.
+36 -26
View File
@@ -1,38 +1,48 @@
# File Manager
<div align="center">
Browse, edit and transfer files over SFTP, including between two hosts.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>File Manager</h1>
<p>Browse, edit and move files on your servers over SFTP</p>
</div>
<br />
## Overview
File Manager lets you work with the files on your hosts over SFTP, and copy files straight from one server to another.
<br />
## Features
- Browse, upload, download, rename, move and delete files over SFTP.
- Edit files in a built-in code editor.
- Transfer files between two hosts in the SFTP tab.
- Restore deleted files from the trash until they are cleaned up.
- Save bookmarks to folders you use often.
- Browse local files in the desktop app.
- Browse, upload, download, rename, move and delete files, with sudo support
- Edit files in a built-in code editor
- Preview images, PDFs, audio and video
- A trash you can restore deleted files from
- Copy files between two hosts, with the fastest route picked for you and an integrity check
- A side by side local and remote view in the desktop app
## Settings
### Host
- Enable File Manager: show the file manager for this host.
- Default Path: the folder to open first.
- SCP Legacy Mode: use SCP for hosts without a working SFTP server.
## Permissions
- `file-manager.use`: Browse, edit and transfer files. Admins and users have it by default.
<br />
## Services
Provides to other plugins:
- `files.sftp`: read and write files on a host.
- `files.sftp`: read and write files on a host
## Development
<br />
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
## Support
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
<br />
## License
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+3 -3
View File
@@ -2,16 +2,16 @@
"id": "file-manager",
"name": "File Manager",
"version": "1.0.0",
"description": "Browse, edit and transfer files over SFTP, including between two hosts.",
"description": "Browse, edit and move files over SFTP, including straight from one server to another.",
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Files & Transfer",
"icon": "FolderSearch",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,7 +7,10 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"@codemirror/autocomplete": "^6.20.3",
@@ -33,6 +36,8 @@
"remark-gfm": "^4.0.1"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@testing-library/dom": "^10.4.2",
"@testing-library/jest-dom": "^7.0.1",
@@ -42,7 +47,10 @@
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"better-sqlite3": "^13.0.3",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -57,5 +65,10 @@
"react-i18next": "^17.0.14",
"sonner": "^2.0.8",
"ssh2": "^1.17.0"
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
+34
View File
@@ -0,0 +1,34 @@
# Overview
_Short summary of what this PR does_
- [ ] Added: ...
- [ ] Updated: ...
- [ ] Removed: ...
- [ ] Fixed: ...
# Changes Made
_Detailed explanation of changes (if needed)_
- ...
# Related Issues
_Link any issues this PR addresses_
- Closes #ISSUE_NUMBER
- Related to #ISSUE_NUMBER
# Screenshots / Demos
_(Optional: add before/after screenshots, GIFs, or console output)_
# Checklist
- [ ] Code follows project style guidelines
- [ ] Supports mobile and desktop UI/app (if applicable)
- [ ] Added the change to `CHANGELOG.json`
- [ ] `npm run test`, `npm run typecheck` and `npm run validate` pass
- [ ] I have read `CONTRIBUTING.md`
- [ ] This is not a translation request. See [docs](https://docs.termix.site/translations)
+9
View File
@@ -0,0 +1,9 @@
node_modules
dist
coverage
*.log
.env
*.tmxplug
*.tmxplug.sig
termix-plugin-signing.key
.termix-tables-*
+1
View File
@@ -0,0 +1 @@
npx --no -- commitlint --edit "$1"
+1
View File
@@ -0,0 +1 @@
npx lint-staged
+4
View File
@@ -0,0 +1,4 @@
dist
coverage
node_modules
package-lock.json
+9
View File
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": false,
"tabWidth": 2,
"trailingComma": "all",
"printWidth": 80,
"arrowParens": "always",
"endOfLine": "lf"
}
+34
View File
@@ -0,0 +1,34 @@
{
"$schema": "https://raw.githubusercontent.com/Termix-SSH/Termix/main/packages/plugin-sdk/schema/changelog.schema.json",
"releases": [
{
"version": "1.0.0",
"changes": [
{
"type": "added",
"text": "Group hosts by hand or with tag rules, so new hosts join on their own"
},
{
"type": "added",
"text": "Run one command on every host and see each result"
},
{
"type": "added",
"text": "Install, remove or upgrade packages across the fleet"
},
{
"type": "added",
"text": "Push and pull files on every host"
},
{
"type": "added",
"text": "Collect an inventory of OS, kernel, architecture and uptime"
},
{
"type": "added",
"text": "Share a fleet with users or roles"
}
]
}
]
}
-7
View File
@@ -1,7 +0,0 @@
# Changelog
## 1.0.0
First release, bundled with Termix 2.9.0.
Groups hosts into fleets, either by hand or by tag. Run commands, package actions and file transfers on every host in a fleet at once, and see an inventory of its hosts.
+17
View File
@@ -0,0 +1,17 @@
# Contributing to Fleets
## Development
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
npm run validate # check manifest.json
npm run format # format the code with Prettier
```
## Permissions
- `fleets.view`: see fleets, their hosts and their inventory. Admins and users have it by default.
- `fleets.manage`: create, edit, delete and share fleets. Admins and users have it by default.
- `fleets.execute`: run commands, package actions and file transfers on a fleet. Admins and users have it by default.
+36 -20
View File
@@ -1,32 +1,48 @@
# Fleets
<div align="center">
Group hosts into fleets and run commands, package actions and file transfers on all of them at once.
<img src="https://raw.githubusercontent.com/Termix-SSH/Termix/main/public/icon.svg" width="120" height="120" alt="Termix Logo" />
<h1>Fleets</h1>
<p>Run commands and actions across many hosts at once</p>
</div>
<br />
## Overview
Fleets groups your hosts so you can act on all of them together.
<br />
## Features
- Group hosts into fleets by hand or by tag. Hosts with a matching tag join on their own.
- Run a command on every host in a fleet at once and see each result.
- Run package actions, like updates, across a fleet.
- Transfer files to and from every host in a fleet.
- See an inventory of the hosts in a fleet.
- Share fleets with other users or roles.
- Group hosts by hand or with tag rules, so new hosts join on their own
- Run one command on every host and see each result
- Install, remove or upgrade packages across the fleet
- Push and pull files on every host
- Collect an inventory of OS, kernel, architecture and uptime
- Share a fleet with users or roles
## Permissions
- `fleets.view`: See fleets, their hosts and inventory. Admins and users have it by default.
- `fleets.manage`: Create, edit, delete and share fleets. Admins and users have it by default.
- `fleets.execute`: Run commands, package actions and file transfers on a fleet. Admins and users have it by default.
<br />
## Services
Provides to other plugins:
- `fleets.access`: list fleets and run actions on them.
- `fleets.access`: list fleets and run actions on them
## Development
<br />
```bash
npm run build # build into dist/
npm run test # run this plugin's tests
npm run typecheck # type-check this plugin
```
## Support
To report a bug or request a feature, open a [support ticket](https://github.com/Termix-SSH/Support/issues/new/choose). You need to be logged in to GitHub. Please be as detailed as possible, preferably in English.
For discussions and questions, join the [Discord](https://discord.gg/jVQGdvHDrf) server.
<br />
## License
Distributed under the Apache License Version 2.0. See [LICENSE](https://github.com/Termix-SSH/Termix/blob/main/LICENSE) for more information.
+2 -2
View File
@@ -6,12 +6,12 @@
"author": {
"name": "Termix"
},
"license": "MIT",
"license": "Apache-2.0",
"repository": "https://github.com/Termix-SSH/Termix",
"category": "Infrastructure",
"icon": "Boxes",
"engine": {
"termix": ">=2.9.0",
"termix": ">=26.10.0",
"api": "1"
},
"capabilities": [
+14 -1
View File
@@ -7,7 +7,10 @@
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
"validate": "termix-plugin validate",
"format": "prettier --write .",
"format:check": "prettier --check .",
"prepare": "husky || true"
},
"dependencies": {
"clsx": "^2.1.1",
@@ -16,12 +19,17 @@
"tailwind-merge": "^3.5.0"
},
"devDependencies": {
"@commitlint/cli": "^21.2.2",
"@commitlint/config-conventional": "^21.2.0",
"@termix/plugin-sdk": "^1.0.0",
"@types/node": "^26.2.0",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"better-sqlite3": "^13.0.3",
"husky": "^9.1.7",
"jsdom": "^30.0.1",
"lint-staged": "^17.2.0",
"prettier": "3.9.9",
"vitest": "^4.1.11"
},
"peerDependencies": {
@@ -32,5 +40,10 @@
"react": "^19.2.8",
"sonner": "^2.0.8",
"ssh2": "^1.17.0"
},
"lint-staged": {
"*.{ts,tsx,js,jsx,mjs,cjs,json,css,md}": [
"prettier --write"
]
}
}
+21
View File
@@ -0,0 +1,21 @@
{
"extends": ["@commitlint/config-conventional"],
"rules": {
"type-enum": [
2,
"always",
[
"feat",
"fix",
"docs",
"style",
"refactor",
"perf",
"test",
"chore",
"revert"
]
],
"subject-case": [0]
}
}
+1
View File
@@ -0,0 +1 @@
custom: https://donate.termix.site/
Loaded 100 of 500 files, more files were not shown because too many files have changed in this diff. Show more