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"
]
}
}