mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-08-23 22:47:00 +00:00
* Add Helm and GitOps deployment setup * fix: build better-sqlite3 from source in Docker (#1267) * fix: preserve runtime SSL settings (#1268) * fix: support forwarding from the memory SSH agent (#1269) * fix: support forwarding from the memory agent * style: format memory agent test * fix: prompt for encrypted SFTP key passphrases (#1270) * fix: prompt for SFTP key passphrases * style: format SSH key utility test * fix: include host context in automation notifications (#1271) * fix: include host context in automation notifications * style: format automation notification changes * fix: reserve sidebar height for host tags (#1272) * fix: keep host action rows stable at large font sizes (#1273) * fix: honor certificate setting during server probe (#1274) * fix: package standard Linux icon sizes (#1275) * fix: avoid duplicate Docker HTTPS listener (#1276) * Fix host status without metrics collection (#1277) * fix: allow eight-digit secure auth codes (#1263) Allow TOTP prompts to accept secure auth codes longer than six digits without blocking valid authentication attempts. Generated with Codebuff 🤖 Co-authored-by: Chetan <chetan.development@gmail.com> Co-authored-by: Codebuff <noreply@codebuff.com> * Harden Helm deployment defaults * Update Helm workflow action * Exclude Helm templates from Prettier * Fix browser RDP file drops (#1279) * Fix Proxmox guest credential usernames (#1280) * Add WSL local terminal option (#1281) * refactor: split the transfer engine into focused modules (#1282) * refactor: extract SFTP promisify helpers into sftp-promisify module * refactor: extract transfer timing and rate stats into transfer-stats module * refactor: extract transfer error classes and recovery checks into transfer-errors module * refactor: extract host/path utility helpers into transfer-host-utils module * refactor: extract SFTP directory tree helpers into transfer-sftp-dir module * refactor: extract segment copy job builder into transfer-segment-copy module * refactor: extract file scan and sample helpers into transfer-scan module * refactor: move throttled progress helper into transfer-stats module * style: format transfer modules * perf: optimize tmux monitor aggregation (#1283) * fix: reserve credential tag row height (#1284) * feat: edit AI provider model settings (#1285) * fix: clarify click-to-expand host setting (#1286) * fix: allow portable imports on remote databases (#1287) * fix: allow HTTPS to share the configured port (#1288) * fix: resolve synced jump hosts on the server (#1289) * fix: make terminal clipboard shortcuts layout independent (#1290) * fix: use compatible fetch dispatcher for Tailscale (#1291) * fix: add OIDC environment recovery override (#1292) * fix: coalesce rapid mobile terminal input (#1293) * fix: coalesce rapid mobile terminal input * fix: support clean xterm patch installs * fix: resolve synced remote desktop host IDs (#1295) * feat: make the SFTP file manager path bar editable (#1294) Co-authored-by: Maxime Bonillo <257463937+dropafterfree@users.noreply.github.com> Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com> * feat: add passkey sign in to the login screen * fix: remove rounded corners from the host list search bar * fix: stop image storage settings text wrapping to one word per line * fix: prevent malformed websocket messages from crashing the server * chore: increment version * fix: remove gaps between host rows in the sidebar list Keep sub-pixel row measurements and stop wiping the size cache on hover. * fix: Failed to connect through jump hosts (#1180) https://github.com/Termix-SSH/Support/issues/1180 * feat: Progress bar for file downloads in the file manager (#1158) https://github.com/Termix-SSH/Support/issues/1158 * feat: Allow setting Silent OIDC Login via ENV var (#1174) https://github.com/Termix-SSH/Support/issues/1174 * feat: `IdentityFile` to limit the number of attempts by agents (#1165) https://github.com/Termix-SSH/Support/issues/1165 * feat: Credentials clone (#1159) https://github.com/Termix-SSH/Support/issues/1159 * chore: update release notes * docs: move helm setup guide to the docs site * fix: type errors in FilteredAgent agent identity handling * fix: remove stale better-sqlite3 prebuilds so the source build is used * fix: actually build better-sqlite3 from source so arm64 docker images work * fix: credential edit pencil in host editor and add clone action to credential list * fix: clear editingHost so the credential pencil actually opens the editor * chore: run format and lint * fix: folder drag and drop upload failing in the file manager * chore: sync Crowdin translations for 2.7.1 --------- Co-authored-by: alex-ctms <alex-ctms@users.noreply.github.com> Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com> Co-authored-by: Chetan Kumar <74929596+ckloop@users.noreply.github.com> Co-authored-by: Chetan <chetan.development@gmail.com> Co-authored-by: Codebuff <noreply@codebuff.com> Co-authored-by: ZacharyZcR <payasonorahc@protonmail.com> Co-authored-by: dropafterfree <maxime.bonillo@gmail.com> Co-authored-by: Maxime Bonillo <257463937+dropafterfree@users.noreply.github.com>
231 lines
9.4 KiB
JSON
231 lines
9.4 KiB
JSON
{
|
|
"name": "termix",
|
|
"private": true,
|
|
"version": "2.7.1",
|
|
"description": "Self-hosted SSH and remote desktop management.",
|
|
"author": "Karmaa",
|
|
"main": "electron/main.cjs",
|
|
"engines": {
|
|
"node": ">=22.12.0",
|
|
"npm": ">=11"
|
|
},
|
|
"scripts": {
|
|
"format": "prettier --write .",
|
|
"format:check": "prettier --check .",
|
|
"postinstall": "node scripts/patch-app-builder-lib.cjs && node scripts/patch-guacamole-lite.cjs && node scripts/patch-guacamole-common-js.cjs && node scripts/patch-better-sqlite3.cjs && node scripts/patch-nan.cjs && node scripts/patch-xterm-android-ime.cjs",
|
|
"prepare": "husky || true",
|
|
"prebuild": "node scripts/write-electron-build-info.cjs",
|
|
"lint": "node scripts/generate-dialect-schema.cjs --check && eslint .",
|
|
"lint:fix": "eslint --fix .",
|
|
"type-check": "tsc -b --force",
|
|
"test": "vitest run",
|
|
"verify:dialect": "tsx scripts/verify-dialects.mjs",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:coverage": "vitest run --coverage",
|
|
"dev": "vite",
|
|
"build": "vite build && tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\"",
|
|
"build:backend": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\"",
|
|
"dev:backend": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/starter.js",
|
|
"dev:docker": "docker stop termix-dev 2>nul & docker rm termix-dev 2>nul & docker build -f docker/Dockerfile -t termix:dev --no-cache . && docker run -d --name termix-dev -p 3000:3000 -p 8080:8080 -p 30001-30006:30001-30006 -v \"%cd%\\db\\data:/app/data\" termix:dev",
|
|
"dev:docker:restart": "docker stop termix-dev 2>nul & docker rm termix-dev 2>nul & docker run -d --name termix-dev -p 8080:8080 -p 30001-30006:30001-30006 -v \"%cd%\\db\\data:/app/data\" termix:dev",
|
|
"generate:openapi": "tsc -p tsconfig.node.json && node -e \"require('fs').copyFileSync('src/backend/package.json','dist/backend/package.json')\" && node ./dist/backend/backend/utils/swagger.js",
|
|
"preview": "vite preview",
|
|
"electron:dev": "concurrently \"npm run dev\" \"powershell -c \\\"Start-Sleep -Seconds 5\\\" && electron .\"",
|
|
"electron:patch-builder": "node scripts/patch-app-builder-lib.cjs",
|
|
"electron:rebuild": "electron-rebuild -f -o better-sqlite3,@serialport/bindings-cpp,node-pty",
|
|
"build:win-portable": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --win --dir",
|
|
"build:win-installer": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --win --publish=never",
|
|
"build:linux-portable": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --linux --dir",
|
|
"build:linux-appimage": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --linux AppImage",
|
|
"build:linux-targz": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --linux tar.gz",
|
|
"build:mac": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --mac --universal",
|
|
"build:mac-dev": "npm run build && npm run electron:rebuild && npm run electron:patch-builder && electron-builder --mac dir --publish=never",
|
|
"schema:generate": "node scripts/generate-dialect-schema.cjs",
|
|
"schema:check": "node scripts/generate-dialect-schema.cjs --check",
|
|
"schema:migrations": "drizzle-kit generate --config=drizzle.config.sqlite.ts && drizzle-kit generate --config=drizzle.config.pg.ts && drizzle-kit generate --config=drizzle.config.mysql.ts"
|
|
},
|
|
"dependencies": {
|
|
"@anthropic-ai/sdk": "^0.116.0",
|
|
"@simplewebauthn/browser": "^13.3.0",
|
|
"@simplewebauthn/server": "^13.3.2",
|
|
"@tanstack/react-virtual": "^3.14.9",
|
|
"@types/compression": "^1.8.1",
|
|
"@types/ldapjs": "^3.0.6",
|
|
"axios": "^1.19.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"better-sqlite3": "^13.0.2",
|
|
"body-parser": "^2.3.0",
|
|
"chalk": "^6.0.0",
|
|
"compression": "^1.8.1",
|
|
"cookie-parser": "^1.4.7",
|
|
"cors": "^2.8.6",
|
|
"dotenv": "^17.4.2",
|
|
"drizzle-orm": "^0.45.2",
|
|
"express": "^5.2.1",
|
|
"guacamole-lite": "^1.2.0",
|
|
"jose": "^6.2.8",
|
|
"js-yaml": "^5.2.3",
|
|
"jsonwebtoken": "^9.0.3",
|
|
"jszip": "^3.10.1",
|
|
"ldapjs": "^3.0.7",
|
|
"motion": "^12.43.0",
|
|
"multer": "^2.2.0",
|
|
"mysql2": "^3.23.2",
|
|
"nanoid": "^6.0.1",
|
|
"node-pty": "^1.1.0",
|
|
"pg": "^8.22.0",
|
|
"qrcode": "^1.5.4",
|
|
"serialport": "^13.0.0",
|
|
"sharp": "^0.35.3",
|
|
"socks": "^2.8.7",
|
|
"speakeasy": "^2.0.0",
|
|
"ssh2": "^1.17.0",
|
|
"undici": "^8.10.0",
|
|
"ws": "^8.21.1"
|
|
},
|
|
"devDependencies": {
|
|
"@codemirror/autocomplete": "^6.20.3",
|
|
"@codemirror/commands": "^6.10.4",
|
|
"@codemirror/search": "^6.7.1",
|
|
"@codemirror/theme-one-dark": "^6.1.3",
|
|
"@codemirror/view": "^6.43.7",
|
|
"@commitlint/cli": "^21.2.1",
|
|
"@commitlint/config-conventional": "^21.2.0",
|
|
"@deadendjs/swagger-jsdoc": "^8.1.2",
|
|
"@electron/notarize": "^3.1.1",
|
|
"@electron/rebuild": "^4.2.0",
|
|
"@eslint/js": "^10.0.1",
|
|
"@fontsource-variable/jetbrains-mono": "^5.3.0",
|
|
"@fontsource/fira-code": "^5.3.0",
|
|
"@fontsource/jetbrains-mono": "^5.3.0",
|
|
"@fontsource/source-code-pro": "^5.3.0",
|
|
"@monaco-editor/react": "^4.7.0",
|
|
"@radix-ui/react-accordion": "^1.2.20",
|
|
"@radix-ui/react-alert-dialog": "^1.1.23",
|
|
"@radix-ui/react-checkbox": "^1.3.11",
|
|
"@radix-ui/react-dialog": "^1.1.23",
|
|
"@radix-ui/react-dropdown-menu": "^2.1.24",
|
|
"@radix-ui/react-label": "^2.1.15",
|
|
"@radix-ui/react-popover": "^1.1.23",
|
|
"@radix-ui/react-progress": "^1.1.16",
|
|
"@radix-ui/react-scroll-area": "^1.2.18",
|
|
"@radix-ui/react-select": "^2.3.7",
|
|
"@radix-ui/react-separator": "^1.1.15",
|
|
"@radix-ui/react-slider": "^1.4.7",
|
|
"@radix-ui/react-slot": "^1.3.3",
|
|
"@radix-ui/react-switch": "^1.3.7",
|
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
"@radix-ui/react-tooltip": "^1.2.16",
|
|
"@tailwindcss/vite": "^4.3.3",
|
|
"@testing-library/dom": "^10.4.1",
|
|
"@testing-library/jest-dom": "^7.0.0",
|
|
"@testing-library/react": "^16.3.2",
|
|
"@testing-library/user-event": "^14.6.1",
|
|
"@types/better-sqlite3": "^9.6.0",
|
|
"@types/cookie-parser": "^1.4.10",
|
|
"@types/cors": "^2.8.19",
|
|
"@types/express": "^5.0.6",
|
|
"@types/guacamole-common-js": "^1.5.5",
|
|
"@types/js-yaml": "^4.0.9",
|
|
"@types/jsonwebtoken": "^9.0.10",
|
|
"@types/multer": "^2.2.0",
|
|
"@types/node": "^26.1.2",
|
|
"@types/pg": "^8.20.3",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/react": "^19.2.18",
|
|
"@types/react-dom": "^19.2.4",
|
|
"@types/speakeasy": "^2.0.10",
|
|
"@types/ssh2": "^1.15.5",
|
|
"@types/ws": "^8.18.1",
|
|
"@uiw/codemirror-extensions-langs": "^4.25.11",
|
|
"@uiw/codemirror-theme-github": "^4.25.11",
|
|
"@uiw/react-codemirror": "^4.25.11",
|
|
"@vitejs/plugin-react": "^6.0.5",
|
|
"@vitest/coverage-v8": "^4.1.10",
|
|
"@vitest/ui": "^4.1.10",
|
|
"@xterm/addon-clipboard": "^0.2.0",
|
|
"@xterm/addon-fit": "^0.11.0",
|
|
"@xterm/addon-search": "^0.16.0",
|
|
"@xterm/addon-unicode11": "^0.9.0",
|
|
"@xterm/addon-web-links": "^0.12.0",
|
|
"@xterm/xterm": "^6.0.0",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"cmdk": "^1.1.1",
|
|
"concurrently": "^10.0.4",
|
|
"cytoscape": "^3.34.0",
|
|
"drizzle-kit": "^0.31.10",
|
|
"electron": "^43.2.0",
|
|
"electron-builder": "^26.15.3",
|
|
"eslint": "^10.8.0",
|
|
"eslint-plugin-react-hooks": "^7.1.1",
|
|
"eslint-plugin-react-refresh": "^0.5.3",
|
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
"globals": "^17.8.0",
|
|
"guacamole-common-js": "^1.5.0",
|
|
"husky": "^9.1.7",
|
|
"i18next": "^26.3.6",
|
|
"i18next-browser-languagedetector": "^8.2.1",
|
|
"jsdom": "^30.0.1",
|
|
"lint-staged": "^17.2.0",
|
|
"lucide-react": "^1.28.0",
|
|
"prettier": "3.9.6",
|
|
"radix-ui": "^1.6.7",
|
|
"react": "^19.2.8",
|
|
"react-cytoscapejs": "^2.0.0",
|
|
"react-dom": "^19.2.8",
|
|
"react-h5-audio-player": "^3.10.2",
|
|
"react-hook-form": "^7.84.0",
|
|
"react-i18next": "^17.0.11",
|
|
"react-icons": "^5.7.0",
|
|
"react-markdown": "^10.1.0",
|
|
"react-pdf": "^10.4.1",
|
|
"react-photo-view": "^1.2.7",
|
|
"react-syntax-highlighter": "^16.1.1",
|
|
"react-xtermjs": "^1.0.10",
|
|
"remark-gfm": "^4.0.1",
|
|
"sonner": "^2.0.7",
|
|
"tailwind-merge": "^3.5.0",
|
|
"tailwindcss": "^4.2.4",
|
|
"tw-animate-css": "^1.4.0",
|
|
"typescript": "~6.0.3",
|
|
"typescript-eslint": "^8.66.0",
|
|
"vite": "^8.2.0",
|
|
"vite-plugin-svgr": "^5.2.0",
|
|
"vitest": "^4.1.10"
|
|
},
|
|
"lint-staged": {
|
|
"*.{ts,tsx}": [
|
|
"eslint --fix",
|
|
"prettier --write"
|
|
],
|
|
"*.{js,jsx}": [
|
|
"prettier --write"
|
|
],
|
|
"*.{json,css,md}": [
|
|
"prettier --write"
|
|
]
|
|
},
|
|
"overrides": {
|
|
"@electron/asar": "^4.2.0",
|
|
"@electron/get": "^5.0.0",
|
|
"dompurify": "^3.4.1",
|
|
"eslint-visitor-keys": "^4.2.1",
|
|
"prebuild-install": "npm:@mmomtchev/prebuild-install@1.0.2",
|
|
"rimraf": "file:vendor/rimraf-compat",
|
|
"brace-expansion@1": "^1.1.18",
|
|
"brace-expansion@2": "^2.1.4",
|
|
"brace-expansion@5": "^5.0.9",
|
|
"esbuild": "^0.28.1",
|
|
"fast-uri@3": "^3.1.5",
|
|
"ip-address": "^10.5.0",
|
|
"js-yaml@4": "^4.3.1",
|
|
"nanoid@3": "^3.3.18",
|
|
"postcss": "^8.5.26",
|
|
"tar": "^7.5.22",
|
|
"undici@6": "^6.28.0",
|
|
"undici@7": "^7.29.0"
|
|
}
|
|
}
|