From 84ca8080f0029fc1864b318e996c6a6d345858bc Mon Sep 17 00:00:00 2001 From: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> Date: Wed, 26 Nov 2025 19:33:15 -0600 Subject: [PATCH 1/5] Add termix.rb Cask file --- {homebrew => Casks}/termix.rb | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {homebrew => Casks}/termix.rb (100%) diff --git a/homebrew/termix.rb b/Casks/termix.rb similarity index 100% rename from homebrew/termix.rb rename to Casks/termix.rb -- 2.49.1 From 403800f42bc6a74f9ab584daabf7b6beda4dee0a Mon Sep 17 00:00:00 2001 From: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> Date: Wed, 26 Nov 2025 19:36:24 -0600 Subject: [PATCH 2/5] Update Termix to version 1.9.0 with new checksum --- Casks/termix.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Casks/termix.rb b/Casks/termix.rb index 9522fa73..6f6d0d86 100644 --- a/Casks/termix.rb +++ b/Casks/termix.rb @@ -1,8 +1,8 @@ cask "termix" do - version "VERSION_PLACEHOLDER" - sha256 "CHECKSUM_PLACEHOLDER" + version "1.9.0" + sha256 "8fedd242b3cae1ebfd0c391a36f1c246a26ecac258b02478ee8dea2f33cd6d96" - url "https://github.com/Termix-SSH/Termix/releases/download/release-#{version}-tag/termix_macos_universal_#{version}_dmg.dmg" + url "https://github.com/Termix-SSH/Termix/releases/download/release-#{version}-tag/termix_macos_universal_dmg.dmg" name "Termix" desc "Web-based server management platform with SSH terminal, tunneling, and file editing" homepage "https://github.com/Termix-SSH/Termix" -- 2.49.1 From f0647dc7c1b693f551b087e9e8d42bdc1a3eec20 Mon Sep 17 00:00:00 2001 From: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> Date: Wed, 26 Nov 2025 23:38:58 -0600 Subject: [PATCH 3/5] Update README to remove 'coming soon' notes --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0e9c10f0..80fc69e9 100644 --- a/README.md +++ b/README.md @@ -80,16 +80,16 @@ Supported Devices: - Windows (x64/ia32) - Portable - MSI Installer - - Chocolatey Package Manager (coming soon) + - Chocolatey Package Manager - Linux (x64/ia32) - Portable - AppImage - Deb - - Flatpak (coming soon) + - Flatpak - macOS (x64/ia32 on v12.0+) - - Apple App Store (coming soon) + - Apple App Store - DMG - - Homebrew (coming soon) + - Homebrew - iOS/iPadOS (v15.1+) - Apple App Store - ISO -- 2.49.1 From a06f5ad1af655d87d485f9b5665c959aa8bc0970 Mon Sep 17 00:00:00 2001 From: Denis Date: Thu, 18 Dec 2025 16:06:14 +0700 Subject: [PATCH 4/5] Notes and Expiry add --- src/backend/database/db/index.ts | 6 ++ src/backend/database/db/schema.ts | 2 + src/backend/database/routes/ssh.ts | 12 ++++ src/components/ui/textarea.tsx | 2 +- src/locales/en/translation.json | 4 ++ src/locales/ru/translation.json | 4 ++ src/types/index.ts | 4 ++ .../apps/host-manager/HostManagerEditor.tsx | 55 +++++++++++++++++++ src/ui/main-axios.ts | 4 ++ 9 files changed, 92 insertions(+), 1 deletion(-) diff --git a/src/backend/database/db/index.ts b/src/backend/database/db/index.ts index f9e1017f..d59a3a58 100644 --- a/src/backend/database/db/index.ts +++ b/src/backend/database/db/index.ts @@ -208,6 +208,8 @@ async function initializeCompleteDatabase(): Promise { force_keyboard_interactive TEXT, stats_config TEXT, terminal_config TEXT, + notes TEXT, + expiration_date TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE @@ -551,6 +553,10 @@ const migrateSchema = () => { } } + // Add new columns for notes and expiration_date + addColumnIfNotExists("ssh_data", "notes", "TEXT"); + addColumnIfNotExists("ssh_data", "expiration_date", "TEXT"); + databaseLogger.success("Schema migration completed", { operation: "schema_migration", }); diff --git a/src/backend/database/db/schema.ts b/src/backend/database/db/schema.ts index 074b4103..5e796f76 100644 --- a/src/backend/database/db/schema.ts +++ b/src/backend/database/db/schema.ts @@ -90,6 +90,8 @@ export const sshData = sqliteTable("ssh_data", { statsConfig: text("stats_config"), terminalConfig: text("terminal_config"), quickActions: text("quick_actions"), + notes: text("notes"), + expirationDate: text("expiration_date"), createdAt: text("created_at") .notNull() .default(sql`CURRENT_TIMESTAMP`), diff --git a/src/backend/database/routes/ssh.ts b/src/backend/database/routes/ssh.ts index 955135a4..a906163f 100644 --- a/src/backend/database/routes/ssh.ts +++ b/src/backend/database/routes/ssh.ts @@ -242,6 +242,8 @@ router.post( statsConfig, terminalConfig, forceKeyboardInteractive, + notes, + expirationDate, } = hostData; if ( !isNonEmptyString(userId) || @@ -284,6 +286,8 @@ router.post( statsConfig: statsConfig ? JSON.stringify(statsConfig) : null, terminalConfig: terminalConfig ? JSON.stringify(terminalConfig) : null, forceKeyboardInteractive: forceKeyboardInteractive ? "true" : "false", + notes: notes || null, + expirationDate: expirationDate || null, }; if (effectiveAuthType === "password") { @@ -464,7 +468,13 @@ router.put( statsConfig, terminalConfig, forceKeyboardInteractive, + notes, + expirationDate, } = hostData; + + // Temporary logging to debug notes and expirationDate + console.log("DEBUG - Update host data:", { notes, expirationDate }); + if ( !isNonEmptyString(userId) || !isNonEmptyString(ip) || @@ -507,6 +517,8 @@ router.put( statsConfig: statsConfig ? JSON.stringify(statsConfig) : null, terminalConfig: terminalConfig ? JSON.stringify(terminalConfig) : null, forceKeyboardInteractive: forceKeyboardInteractive ? "true" : "false", + notes: notes || null, + expirationDate: expirationDate || null, }; if (effectiveAuthType === "password") { diff --git a/src/components/ui/textarea.tsx b/src/components/ui/textarea.tsx index 6c816b16..a5c84926 100644 --- a/src/components/ui/textarea.tsx +++ b/src/components/ui/textarea.tsx @@ -9,7 +9,7 @@ const Textarea = React.forwardRef( return (