Compare commits

..
35 Commits
Author SHA1 Message Date
LukeGus 9be85c3da8 chore: sdk 1.0.19 for the panel bar layout 2026-10-20 12:35:00 -05:00
LukeGus ea50dc349a feat: per host layout for the terminal panel bar 2026-10-20 11:52:22 -05:00
LukeGus d8c686177b fix: draw the title bar in the sidebar color 2026-10-20 11:21:32 -05:00
LukeGus d068daa4ea chore: changelog for the themed title bar 2026-10-20 11:15:33 -05:00
Giovanny Aranda e7d6d481df feat: themed title bar for the desktop app (#1690) 2026-10-20 11:14:54 -05:00
LukeGus 368a8eb415 chore: update translations 2026-10-20 15:23:38 +00:00
LukeGus 6377798d45 feat: client cert on the sync link types (sdk 1.0.18) 2026-10-19 23:27:58 -05:00
LukeGus af87d09273 fix: ship sharp binaries for Windows arm64 builds 2026-10-19 22:03:56 -05:00
LukeGus da3f0c7836 fix: keep text primary keys in the plugin data export 2026-10-19 22:03:25 -05:00
LukeGus 737e7cd7f7 fix: changelog for desktop link fix 2026-10-19 22:02:54 -05:00
SirHephaistos a699feb4e2 fix: detect the desktop link window by Electron's default user agent
Fixes #1675
2026-10-19 22:02:46 -05:00
LukeGus b22b3679e4 feat: native web view for plugins in the desktop app 2026-10-19 21:57:48 -05:00
LukeGus 895488d400 feat: mTLS client certificates for desktop server links 2026-10-19 21:54:19 -05:00
LukeGus 802b3003d5 feat: add companion panels beside host tabs 2026-10-19 21:46:02 -05:00
LukeGus 3b3fd7f135 feat: support FIDO2 security keys through ssh agent 2026-10-19 19:55:35 -05:00
LukeGus 901a235de4 feat: ssh transport providers, core ssh relay and plugin folders api 2026-10-19 19:20:32 -05:00
LukeGus 3caf6cca62 fix: show the linked account's name and admin flag in the app (#1580) 2026-10-19 17:20:32 -05:00
LukeGus e284c95891 fix: add a neutral linked desktop hook for plugins (#1580) 2026-10-19 17:07:07 -05:00
LukeGus b0f2213b15 feat: move the sync screens and wizard out of core into the plugin (#1580) 2026-10-19 16:42:29 -05:00
LukeGus ee0d1a5d8e chore: add sync to the plugin table 2026-10-19 16:07:43 -05:00
LukeGus 25816084aa feat: sync moves to a plugin, desktop gets multiple accounts (#1580, #1654) 2026-10-19 16:06:08 -05:00
LukeGus 87cc80b291 feat: api key socket tickets so a master can open remote sessions (#1654) 2026-10-19 16:06:04 -05:00
LukeGus 89222bed85 chore: add login security to the plugin table 2026-10-19 12:48:54 -05:00
LukeGus ad46f42ab1 feat: login policy hook for plugins and optional https redirect (#1584) 2026-10-19 12:47:47 -05:00
LukeGus 34a9c77114 chore: add hosts config to the plugin table 2026-10-19 12:07:55 -05:00
LukeGus 2c785fe35b feat: host lock api so a plugin can load hosts from a config file (#1581) 2026-10-19 12:02:05 -05:00
LukeGus 1cdbfc674c feat: move desktop, status, import, audit and branding features into plugins 2026-10-18 21:17:54 -05:00
LukeGus 9d93fb0893 feat: plugin filters by type, paged browse, hide plugins needing newer termix 2026-10-18 20:00:47 -05:00
LukeGus 556f0406aa chore: drop example plugin links from the plugin guide 2026-10-18 19:35:35 -05:00
LukeGus 0589465e4e chore: add classic layout and themes to the readme 2026-10-18 19:22:30 -05:00
LukeGus ec3cc9cf18 fix: home tab, layout switch and missing layout fallbacks for looks 2026-10-18 19:08:50 -05:00
LukeGus 4c235bb23f fix: plugin tests and type checks work with a linked sdk 2026-10-18 19:08:36 -05:00
LukeGus b414b85746 feat: move color themes into a bundled themes plugin 2026-10-18 17:56:34 -05:00
LukeGus d049588f7f feat: move the classic layout into its own bundled plugin 2026-10-18 17:25:59 -05:00
LukeGus 86161d66e2 feat: shell controller, TabStage, layout and theme plugins with repair view 2026-10-18 16:37:36 -05:00
10 changed files with 35 additions and 92 deletions

No files matched your search

-6
View File
@@ -1,11 +1,5 @@
# Changelog
## 26.10.4
### Fixed
- Pin classic layout plugin (fixes proxmox install)
## 26.10.3
### Added
+2 -2
View File
@@ -1,6 +1,6 @@
cask "termix" do
version "26.10.3"
sha256 "a0c9db16f144c1e2be6ce2f4ead9268a010d12e0d0608feb34976750661a2239"
version "26.10.2"
sha256 "9df1850b5f75a3c0a1b3876847d46b7b4ff993aa1e50da55f4c88819308ba223"
url "https://github.com/Termix-SSH/Termix/releases/download/v#{version}/termix_macos_universal_dmg.dmg"
name "Termix"
+27 -69
View File
@@ -9,8 +9,8 @@
{
"id": "ai",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-AI/releases/download/v1.2.0/ai-1.2.0.tmxplug",
"sha256": "3b486133af78ae5168e6f5b8a4c71f3db3403cfdae537ed1ca8d6cc16035d8dd"
"url": "https://github.com/Termix-SSH/Plugin-AI/releases/download/v1.1.0/ai-1.1.0.tmxplug",
"sha256": "71dda6940d62c9eede7821bbac21e99443fbc08728a47759f215e2416f1d162f"
},
{
"id": "alerts",
@@ -22,43 +22,31 @@
"consent": false
}
},
{
"id": "audit-tools",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Audit-Tools/releases/download/v1.0.0/audit-tools-1.0.0.tmxplug",
"sha256": "131479c294d692b1c0ed4d6cec273730a3a67a28ecd44825ffd36bade9aa863b"
},
{
"id": "automations",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Automations/releases/download/v1.0.3/automations-1.0.3.tmxplug",
"sha256": "b5e5b39a053010b72ad1ba03ea6bb05afbbb2b789a86e0e98634d9ada543d02d"
"url": "https://github.com/Termix-SSH/Plugin-Automations/releases/download/v1.0.2/automations-1.0.2.tmxplug",
"sha256": "674eb04276b4a0c77c794b30647f8680218a78de8d52b73e99ec900cc1b3fdb3"
},
{
"id": "classic-layout",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Classic-Layout/releases/download/v1.0.1/classic-layout-1.0.1.tmxplug",
"sha256": "6b2d9acd77ef4b33fa0761c1aea7ed3c6171c325ee8febcedff94b5b2bc7be34",
"url": "https://github.com/Termix-SSH/Plugin-Classic-Layout/releases/download/v1.0.0/classic-layout-1.0.0.tmxplug",
"sha256": "3a51cc9a4c966478f2ebfd58dbbe025ff0ebe8bbdcd3ba73156151e555f62dec",
"defaultLook": true
},
{
"id": "classic-themes",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Classic-Themes/releases/download/v1.0.0/classic-themes-1.0.0.tmxplug",
"sha256": "919283f95701d41727c826637a7d349bd6a646abd61f9ac9017149bd0bee782c",
"sha256": "17561e569811476ea4e1f7cdf8d9afbe33edf061bd09f6b05699b44968da41ad",
"defaultLook": true
},
{
"id": "credential-tools",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Credential-Tools/releases/download/v1.0.0/credential-tools-1.0.0.tmxplug",
"sha256": "413eff710b5c832a2575a890bbab1c90d28ea55f10cd7a7b94b851d51dd77dce"
},
{
"id": "docker",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Docker/releases/download/v1.1.0/docker-1.1.0.tmxplug",
"sha256": "da32dfbe9d4cffec5d80c4a1037a79e7591a3d16c50f882db6a146322a50c2b7",
"url": "https://github.com/Termix-SSH/Plugin-Docker/releases/download/v1.0.2/docker-1.0.2.tmxplug",
"sha256": "0e1c722682faac6a027fd9b01e6910eb53ce5acb13332c6c8d8868554f3701ab",
"onboarding": {
"recommended": true,
"consent": false
@@ -67,8 +55,8 @@
{
"id": "file-manager",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-File-Manager/releases/download/v1.1.0/file-manager-1.1.0.tmxplug",
"sha256": "807e9ffa80d6054a5911522721a555e0daa3e50f6edffdebe97efe7c91aea7a2",
"url": "https://github.com/Termix-SSH/Plugin-File-Manager/releases/download/v1.0.3/file-manager-1.0.3.tmxplug",
"sha256": "250e9779a6b1caf11721f1ee2baf76655ae6e52d963e894d8db84eb9677cf0b3",
"onboarding": {
"recommended": true,
"consent": false
@@ -83,49 +71,25 @@
{
"id": "homepage",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Homepage/releases/download/v1.1.0/homepage-1.1.0.tmxplug",
"sha256": "5a9d5d2cc337fcee5590ea957e35ddeea5a71596aeb59410bf1420065b9b5b00"
"url": "https://github.com/Termix-SSH/Plugin-Homepage/releases/download/v1.0.2/homepage-1.0.2.tmxplug",
"sha256": "88cdea8ba8f458fcf124e7ab97e3d419896d8d22ffa9a372af34f1818872975b"
},
{
"id": "host-metrics",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Host-Metrics/releases/download/v1.1.0/host-metrics-1.1.0.tmxplug",
"sha256": "4f1d422ec1d0565c79f94fa814ee0864d556d7367793b11035e68239e49e297f",
"url": "https://github.com/Termix-SSH/Plugin-Host-Metrics/releases/download/v1.0.3/host-metrics-1.0.3.tmxplug",
"sha256": "8f6022568349fc4318d509781bdb9d5b40973c010a9e27f720eed6baf68b881e",
"onboarding": {
"recommended": true,
"consent": false
}
},
{
"id": "host-status",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Host-Status/releases/download/v1.0.0/host-status-1.0.0.tmxplug",
"sha256": "1ba62577dc7373a2a2787bab7efdb89b544a30a8003b1de91ce51f372fc4f170"
},
{
"id": "hosts-config",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Hosts-Config/releases/download/v1.0.0/hosts-config-1.0.0.tmxplug",
"sha256": "60a2b2a6d9ba13bad12a511c93af70a30a10fbc560066b6419acf533d806a3ad"
},
{
"id": "import-export",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Import-Export/releases/download/v1.0.0/import-export-1.0.0.tmxplug",
"sha256": "6670b6c147e81eed0ddfd249f9a7c9564f1ab50e45f2771161d2e30c47f6fd58"
},
{
"id": "ldap",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-LDAP/releases/download/v1.0.2/ldap-1.0.2.tmxplug",
"sha256": "9ef269ad281f1c68cea53e0d43ccb7a5d4f949f11b30b22eac3d01047b20eb03"
},
{
"id": "login-security",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Login-Security/releases/download/v1.0.0/login-security-1.0.0.tmxplug",
"sha256": "b21dff5722e72a02022d563ef27130e8b56a53e273f1668fade4ec7d030374aa"
},
{
"id": "network-topology",
"source": "tmxplug",
@@ -147,8 +111,8 @@
{
"id": "remote-desktop",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Remote-Desktop/releases/download/v1.2.0/remote-desktop-1.2.0.tmxplug",
"sha256": "0de40896bfeb4b1a702c3ce815355b7b7b0bb4bfe424f33e905bb5a0209d02f6",
"url": "https://github.com/Termix-SSH/Plugin-Remote-Desktop/releases/download/v1.1.0/remote-desktop-1.1.0.tmxplug",
"sha256": "6f74f1d26f91a43b2d2203417d744211f366c335d5fff7bed34bfce33874dd01",
"onboarding": {
"recommended": true,
"consent": false
@@ -195,8 +159,8 @@
{
"id": "ssh-terminal",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-SSH-Terminal/releases/download/v1.1.0/ssh-terminal-1.1.0.tmxplug",
"sha256": "dacdbadb3c6a0d7014b1de4f62b499f80abf358c7799a6e6326674660b055e4a",
"url": "https://github.com/Termix-SSH/Plugin-SSH-Terminal/releases/download/v1.0.3/ssh-terminal-1.0.3.tmxplug",
"sha256": "bc288bd843e37b64bcda7462d175039147b75dc6de8866769e4a938036a9d023",
"onboarding": {
"recommended": true,
"consent": false
@@ -219,12 +183,6 @@
"url": "https://github.com/Termix-SSH/Plugin-Step-CA/releases/download/v1.0.2/step-ca-1.0.2.tmxplug",
"sha256": "685b644fe44c2d3fa007baee16e8ea8a7d5204f039ebc8aa65e8093ad93adf8a"
},
{
"id": "sync",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Sync/releases/download/v1.0.0/sync-1.0.0.tmxplug",
"sha256": "12ced05523f7c1a9151b5e680726bd31f53888e8bb0047d7bd12a2570ea168bf"
},
{
"id": "tailscale",
"source": "tmxplug",
@@ -250,8 +208,8 @@
{
"id": "tmux-monitor",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Tmux-Monitor/releases/download/v1.0.4/tmux-monitor-1.0.4.tmxplug",
"sha256": "42b8a2284e68a321c1736984f5c641b1857c87c6a65ce8cf694c6bc946de2444"
"url": "https://github.com/Termix-SSH/Plugin-Tmux-Monitor/releases/download/v1.0.3/tmux-monitor-1.0.3.tmxplug",
"sha256": "f152d64f433d3f1de7c3fdf172e752ea7e333909f0fdda77336a6b8dddb9f242"
},
{
"id": "totp",
@@ -266,8 +224,8 @@
{
"id": "tunnels",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Tunnels/releases/download/v1.1.0/tunnels-1.1.0.tmxplug",
"sha256": "b1e4f1b6dd2bbd15a9a240ae1c1d381111c3609258c8946d19493a83f861ea1e",
"url": "https://github.com/Termix-SSH/Plugin-Tunnels/releases/download/v1.0.3/tunnels-1.0.3.tmxplug",
"sha256": "d0de9e59ccc9e1a0f2817dd1ec9951021f2d7e89304894bb1e8cefd65aebff0b",
"onboarding": {
"recommended": true,
"consent": false
@@ -294,14 +252,14 @@
{
"id": "web-endpoint",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-Web-Endpoint/releases/download/v1.0.3/web-endpoint-1.0.3.tmxplug",
"sha256": "014cbf23c82cab20e485bc4f4c9b8baa779aee9bb3ed644b41f22a9b1be95687"
"url": "https://github.com/Termix-SSH/Plugin-Web-Endpoint/releases/download/v1.0.2/web-endpoint-1.0.2.tmxplug",
"sha256": "0326edb1052d1debd083004c2dd1711d21a902cfacb55ce74d1a8856a5122477"
},
{
"id": "webauthn",
"source": "tmxplug",
"url": "https://github.com/Termix-SSH/Plugin-WebAuthn/releases/download/v1.1.0/webauthn-1.1.0.tmxplug",
"sha256": "83a61a530db0273f9fef2080d6aa027a82ef8374fb4e0f158a8559a2770299de",
"url": "https://github.com/Termix-SSH/Plugin-WebAuthn/releases/download/v1.0.2/webauthn-1.0.2.tmxplug",
"sha256": "8269f6e407897332648c8526b65383c4db071ea782bf1e58aa7c7c00627f3f4b",
"onboarding": {
"recommended": true,
"consent": false
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "termix",
"version": "26.10.4",
"version": "26.10.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "termix",
"version": "26.10.4",
"version": "26.10.3",
"hasInstallScript": true,
"workspaces": [
"packages/*"
+1 -1
View File
@@ -4,7 +4,7 @@
"workspaces": [
"packages/*"
],
"version": "26.10.4",
"version": "26.10.3",
"description": "Self-hosted, plugin-based server management.",
"author": "Karmaa",
"main": "electron/main.cjs",
-2
View File
@@ -21,8 +21,6 @@ const packages = [
"@img/sharp-win32-x64",
].map((name) => `${name}@${sharpPackage.optionalDependencies[name]}`);
// A .cmd file only starts through a shell on current Node.
execFileSync("npm.cmd", ["install", "--force", "--no-save", ...packages], {
stdio: "inherit",
shell: true,
});
+3 -6
View File
@@ -56,10 +56,7 @@ import type { PluginTableDefinition } from "@termix-ssh/plugin-sdk/db";
import * as syncRegistry from "./sync-registry.js";
import { provideSync } from "../sync/provider.js";
import { createSyncHost } from "../sync/host.js";
import type {
PluginSync,
PluginSyncHost,
} from "@termix-ssh/plugin-sdk/backend";
import type { PluginSyncHost } from "@termix-ssh/plugin-sdk/backend";
import {
needsExplicitPersist,
resolveDatabaseDialect,
@@ -196,7 +193,7 @@ export function createPluginContext(
): PluginContext {
const pluginId = manifest.id;
let syncHost: PluginSyncHost | undefined;
const syncApi: PluginSync = {
const syncApi: PluginContext["sync"] = {
registerEntity: (entity) => {
const dispose = syncRegistry.registerEntity(pluginId, entity);
handle.bag.add(dispose, `sync entity ${entity.type}`);
@@ -212,7 +209,7 @@ export function createPluginContext(
remove();
};
},
} as PluginSync;
} as PluginContext["sync"];
// Not enumerable, so tools that walk the context do not trip the check.
Object.defineProperty(syncApi, "host", {
enumerable: false,
-1
View File
@@ -1050,7 +1050,6 @@
"interfaceFontLabel": "Fon Antara Muka",
"interfaceFontDescription": "Menukar fon antara muka aplikasi. Profil terminal mengekalkan tetapan fon mereka sendiri.",
"accentColorLabel": "Warna Aksen",
"apiKeyCount_one": "{{count}} kunci",
"colorPickerTooltip": "Buka pemilih warna",
"themeSystem": "Sistem",
"themeLight": "Terang",
-1
View File
@@ -1003,7 +1003,6 @@
"hostCount_other": "{{count}} máy chủ"
},
"admin": {
"usersCount_one": "{{count}} người dùng",
"rolesCount_one": "vai trò {{count}}",
"apiKeysCount_one": "{{count}} khóa",
"sessionsActive_one": "còn {{count}} phiên đang hoạt động",
-2
View File
@@ -944,7 +944,6 @@
"dashboardTab.stable": "7ce3adafad3e",
"dashboardTab.onlineCount": "95d81e3c41e5",
"dashboardTab.hostCount": "4279c8d92ede",
"admin.usersCount_one": "e085f3c4a7e3",
"admin.rolesCount_one": "78d7eff0d4b9",
"admin.apiKeysCount_one": "88a9751309dc",
"admin.sessionsActive_one": "8eaf4563b05d",
@@ -979,7 +978,6 @@
"newUi.sidebar.userProfile.interfaceFontLabel": "7f587ba745fd",
"newUi.sidebar.userProfile.interfaceFontDescription": "8bfbcb4bfa23",
"newUi.sidebar.userProfile.accentColorLabel": "2bef525f9fb9",
"newUi.sidebar.userProfile.apiKeyCount_one": "88a9751309dc",
"newUi.sidebar.userProfile.colorPickerTooltip": "402f95aeba34",
"newUi.sidebar.userProfile.themeSystem": "bc0792d8dc81",
"newUi.sidebar.userProfile.themeLight": "a36ef8aba229",