mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-08-29 18:31:33 +00:00
release-2.6.0 (#1085)
* fix: general bug fixes * fix: general qol additions * ci(deps): bump actions/setup-node in the github-actions group (#1068) Bumps the github-actions group with 1 update: [actions/setup-node](https://github.com/actions/setup-node). Updates `actions/setup-node` from 6 to 7 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: github-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps-dev): bump the dev-patch-updates group with 28 updates (#1069) Bumps the dev-patch-updates group with 28 updates: | Package | From | To | | --- | --- | --- | | [@biomejs/biome](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome) | `2.5.2` | `2.5.4` | | [@codemirror/view](https://github.com/codemirror/view) | `6.43.5` | `6.43.6` | | [@radix-ui/react-accordion](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/accordion) | `1.2.15` | `1.2.17` | | [@radix-ui/react-alert-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/alert-dialog) | `1.1.18` | `1.1.20` | | [@radix-ui/react-checkbox](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/checkbox) | `1.3.6` | `1.3.8` | | [@radix-ui/react-dialog](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dialog) | `1.1.18` | `1.1.20` | | [@radix-ui/react-dropdown-menu](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/dropdown-menu) | `2.1.19` | `2.1.21` | | [@radix-ui/react-label](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/label) | `2.1.11` | `2.1.12` | | [@radix-ui/react-popover](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/popover) | `1.1.18` | `1.1.20` | | [@radix-ui/react-progress](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/progress) | `1.1.11` | `1.1.13` | | [@radix-ui/react-scroll-area](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/scroll-area) | `1.2.13` | `1.2.15` | | [@radix-ui/react-select](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/select) | `2.3.2` | `2.3.4` | | [@radix-ui/react-separator](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/separator) | `1.1.11` | `1.1.12` | | [@radix-ui/react-slider](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/slider) | `1.4.2` | `1.4.4` | | [@radix-ui/react-switch](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/switch) | `1.3.2` | `1.3.4` | | [@radix-ui/react-tabs](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tabs) | `1.1.16` | `1.1.18` | | [@radix-ui/react-tooltip](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/tooltip) | `1.2.11` | `1.2.13` | | [@tailwindcss/vite](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-vite) | `4.3.2` | `4.3.3` | | [@uiw/codemirror-extensions-langs](https://github.com/uiwjs/react-codemirror) | `4.25.10` | `4.25.11` | | [@uiw/codemirror-theme-github](https://github.com/uiwjs/react-codemirror) | `4.25.10` | `4.25.11` | | [@uiw/react-codemirror](https://github.com/uiwjs/react-codemirror) | `4.25.10` | `4.25.11` | | [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.1.9` | `4.1.10` | | [@vitest/ui](https://github.com/vitest-dev/vitest/tree/HEAD/packages/ui) | `4.1.9` | `4.1.10` | | [i18next](https://github.com/i18next/i18next) | `26.3.4` | `26.3.6` | | [radix-ui](https://github.com/radix-ui/primitives/tree/HEAD/packages/react/radix-ui) | `1.6.1` | `1.6.3` | | [react-i18next](https://github.com/i18next/react-i18next) | `17.0.8` | `17.0.10` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.3.2` | `4.3.3` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.1.9` | `4.1.10` | Updates `@biomejs/biome` from 2.5.2 to 2.5.4 - [Release notes](https://github.com/biomejs/biome/releases) - [Changelog](https://github.com/biomejs/biome/blob/main/packages/@biomejs/biome/CHANGELOG.md) - [Commits](https://github.com/biomejs/biome/commits/@biomejs/biome@2.5.4/packages/@biomejs/biome) Updates `@codemirror/view` from 6.43.5 to 6.43.6 - [Changelog](https://github.com/codemirror/view/blob/main/CHANGELOG.md) - [Commits](https://github.com/codemirror/view/commits) Updates `@radix-ui/react-accordion` from 1.2.15 to 1.2.17 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/accordion/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/accordion) Updates `@radix-ui/react-alert-dialog` from 1.1.18 to 1.1.20 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/alert-dialog/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/alert-dialog) Updates `@radix-ui/react-checkbox` from 1.3.6 to 1.3.8 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/checkbox/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/checkbox) Updates `@radix-ui/react-dialog` from 1.1.18 to 1.1.20 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dialog/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dialog) Updates `@radix-ui/react-dropdown-menu` from 2.1.19 to 2.1.21 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/dropdown-menu/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/dropdown-menu) Updates `@radix-ui/react-label` from 2.1.11 to 2.1.12 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/label/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/label) Updates `@radix-ui/react-popover` from 1.1.18 to 1.1.20 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/popover/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/popover) Updates `@radix-ui/react-progress` from 1.1.11 to 1.1.13 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/progress/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/progress) Updates `@radix-ui/react-scroll-area` from 1.2.13 to 1.2.15 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/scroll-area/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/scroll-area) Updates `@radix-ui/react-select` from 2.3.2 to 2.3.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/select/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/select) Updates `@radix-ui/react-separator` from 1.1.11 to 1.1.12 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/separator/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/separator) Updates `@radix-ui/react-slider` from 1.4.2 to 1.4.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/slider/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/slider) Updates `@radix-ui/react-switch` from 1.3.2 to 1.3.4 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/switch/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/switch) Updates `@radix-ui/react-tabs` from 1.1.16 to 1.1.18 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tabs/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tabs) Updates `@radix-ui/react-tooltip` from 1.2.11 to 1.2.13 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/tooltip/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/tooltip) Updates `@tailwindcss/vite` from 4.3.2 to 4.3.3 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/@tailwindcss-vite) Updates `@uiw/codemirror-extensions-langs` from 4.25.10 to 4.25.11 - [Release notes](https://github.com/uiwjs/react-codemirror/releases) - [Commits](https://github.com/uiwjs/react-codemirror/compare/v4.25.10...v4.25.11) Updates `@uiw/codemirror-theme-github` from 4.25.10 to 4.25.11 - [Release notes](https://github.com/uiwjs/react-codemirror/releases) - [Commits](https://github.com/uiwjs/react-codemirror/compare/v4.25.10...v4.25.11) Updates `@uiw/react-codemirror` from 4.25.10 to 4.25.11 - [Release notes](https://github.com/uiwjs/react-codemirror/releases) - [Commits](https://github.com/uiwjs/react-codemirror/compare/v4.25.10...v4.25.11) Updates `@vitest/coverage-v8` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/coverage-v8) Updates `@vitest/ui` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/ui) Updates `i18next` from 26.3.4 to 26.3.6 - [Release notes](https://github.com/i18next/i18next/releases) - [Changelog](https://github.com/i18next/i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/i18next/compare/v26.3.4...v26.3.6) Updates `radix-ui` from 1.6.1 to 1.6.3 - [Changelog](https://github.com/radix-ui/primitives/blob/main/packages/react/radix-ui/CHANGELOG.md) - [Commits](https://github.com/radix-ui/primitives/commits/HEAD/packages/react/radix-ui) Updates `react-i18next` from 17.0.8 to 17.0.10 - [Changelog](https://github.com/i18next/react-i18next/blob/master/CHANGELOG.md) - [Commits](https://github.com/i18next/react-i18next/compare/v17.0.8...v17.0.10) Updates `tailwindcss` from 4.3.2 to 4.3.3 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.3.3/packages/tailwindcss) Updates `vitest` from 4.1.9 to 4.1.10 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Changelog](https://github.com/vitest-dev/vitest/blob/main/docs/releases.md) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.1.10/packages/vitest) --- updated-dependencies: - dependency-name: "@biomejs/biome" dependency-version: 2.5.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@codemirror/view" dependency-version: 6.43.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-accordion" dependency-version: 1.2.17 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-alert-dialog" dependency-version: 1.1.20 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-checkbox" dependency-version: 1.3.8 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-dialog" dependency-version: 1.1.20 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-dropdown-menu" dependency-version: 2.1.21 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-label" dependency-version: 2.1.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-popover" dependency-version: 1.1.20 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-progress" dependency-version: 1.1.13 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-scroll-area" dependency-version: 1.2.15 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-select" dependency-version: 2.3.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-separator" dependency-version: 1.1.12 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-slider" dependency-version: 1.4.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-switch" dependency-version: 1.3.4 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-tabs" dependency-version: 1.1.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@radix-ui/react-tooltip" dependency-version: 1.2.13 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@tailwindcss/vite" dependency-version: 4.3.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@uiw/codemirror-extensions-langs" dependency-version: 4.25.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@uiw/codemirror-theme-github" dependency-version: 4.25.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@uiw/react-codemirror" dependency-version: 4.25.11 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@vitest/coverage-v8" dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: "@vitest/ui" dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: i18next dependency-version: 26.3.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: radix-ui dependency-version: 1.6.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: react-i18next dependency-version: 17.0.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: tailwindcss dependency-version: 4.3.3 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates - dependency-name: vitest dependency-version: 4.1.10 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: dev-patch-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump ws in the prod-patch-updates group (#1071) Bumps the prod-patch-updates group with 1 update: [ws](https://github.com/websockets/ws). Updates `ws` from 8.21.0 to 8.21.1 - [Release notes](https://github.com/websockets/ws/releases) - [Commits](https://github.com/websockets/ws/compare/8.21.0...8.21.1) --- updated-dependencies: - dependency-name: ws dependency-version: 8.21.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: prod-patch-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * chore(deps): bump the major-updates group with 2 updates (#1072) Bumps the major-updates group with 2 updates: [nanoid](https://github.com/ai/nanoid) and [typescript](https://github.com/microsoft/TypeScript). Updates `nanoid` from 5.1.16 to 6.0.0 - [Release notes](https://github.com/ai/nanoid/releases) - [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md) - [Commits](https://github.com/ai/nanoid/compare/5.1.16...6.0.0) Updates `typescript` from 6.0.3 to 7.0.2 - [Release notes](https://github.com/microsoft/TypeScript/releases) - [Commits](https://github.com/microsoft/TypeScript/commits) --- updated-dependencies: - dependency-name: nanoid dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: major-updates - dependency-name: typescript dependency-version: 7.0.2 dependency-type: direct:development update-type: version-update:semver-major dependency-group: major-updates ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * fix: general qol additions and new analytics/telemetrics feature * fix: incorrect version sent to posthog * feat: add multiplayer/shared sessions for terminal and guacd * feat: rework Electron desktop app to run standalone-first with optional two-way sync to a remote Termix server * Fix Guacamole tab visibility lifecycle (#1074) Co-authored-by: default-student <default-student@github.com> Co-authored-by: Luke Gustafson <88517757+LukeGus@users.noreply.github.com> * fix(alerts): send channel config as object payload instead of JSON string (#1075) * fix tmux-monitor tailscale issue (#1076) * Initial plan * fix(tmux-monitor): explicitly handle tailscale auth in PanePreview hostConfig For Tailscale-auth hosts the pane-preview attach path was building the Terminal hostConfig with only the generic spread of host fields. This could omit or mismap auth-critical details and trigger a plain TCP/SSH reachability path that doesn't work with Tailscale-only SSH endpoints. The fix branches on `host.authType === "tailscale"` and: - Carries `authType: "tailscale"` explicitly so the backend always selects the Tailscale-aware PTY path regardless of how the host object evolves. - Derives `port` from `host.sshPort ?? host.port` so Tailscale SSH endpoints on a non-default SSH port are reached correctly. - Leaves all non-tailscale auth types on the unchanged code path. Reattach (bumping instanceId + attachNonce) continues to work because terminalHostConfig is recomputed on every render with the latest instanceIdRef.current value. * refactor(tmux-monitor): simplify tailscale port logic with extracted variable Address code review feedback: extract resolvedPort into a local variable to avoid the duplicated `host.sshPort ?? host.port` expression that was assigned to both `port` and `sshPort`. Restructure as an if/else block instead of an IIFE for readability. * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * chore: run prettier * chore: update beta release text * fix: cant update credential of an RDP host * feat: add custom key shortcuts * feat: add support for MFA over SSH * fix: Invalid websocket frame causing code 10006 crash triggering restart loop * fix(net): correct SSRF blocklist false-positive blocking all outbound IPv4 (#1079) * fix: correct IPv4-mapped-IPv6 blocklist entry blocking all outbound IPv4 ::ffff:0:0/96 in the IPv6 blocklist matches every IPv4 address once mapped, since Node's BlockList compares addresses in their mapped form internally regardless of the declared family. This caused safeOutboundFetch to reject all IPv4-resolved destinations as private, breaking outbound requests (e.g. ntfy/webhook notifications) whenever DNS resolved to IPv4. Replaced with individual mapped ranges mirroring the existing IPv4 blocklist. * test: cover isBlockedAddress and link the Node BlockList citation Exports isBlockedAddress so its family-crossing behavior around IPv4-mapped-IPv6 addresses can actually be asserted, instead of relying on manual container debugging to notice a regression. Also swaps the prior "Node's BlockList compares addresses in mapped form" comment for one citing the documented example in the Node docs (https://nodejs.org/api/net.html#class-netblocklist), since that behavior isn't otherwise obvious from the addSubnet/check call sites. Related: Termix-SSH/Support#1024 * refactor: derive IPv6 mirror from IPv4 list, split DNS error messages Two follow-ups from review: - The IPv6 blocklist previously hand-duplicated each IPv4 range as its IPv4-mapped-IPv6 equivalent. Nothing enforced the two stayed in sync, which is exactly how the original bug (a mismatched ::ffff:0:0/96 entry blocking all IPv4) was introduced in the first place. Now derived from a single blockedIpv4Ranges list in one loop. - The connect.lookup hook threw the same "Private destinations are not allowed" for both an empty DNS result and an actually-blocked address. An empty result is a resolution failure, not a privacy decision, and conflating the two is the same kind of opaque-error problem that made this bug slow to diagnose in production. Split into distinct messages. Also extracted the lookup hook itself (createDnsLookupHook) so it can be unit-tested against a fake resolver directly, instead of only through a real fetch()/Agent call — the bug lived entirely in this callback, and undici wraps any error thrown here as a generic "fetch failed" TypeError, which is why isolating it matters for testability. --------- Co-authored-by: brennanneoh <497569+brennanneoh@users.noreply.github.com> * fix(ssh): do not offer chacha20-poly1305 without the native ssh2 binding (#1081) The availability probe treated a working OpenSSL "chacha20" cipher as proof that chacha20-poly1305@openssh.com is usable. It is not: ssh2 pure-JS chacha20-poly1305 corrupts the transport, so the peer aborts the KEX ("incomplete message [preauth]") and the connection times out. Easy to hit on jump-host connections whose target sshd negotiates chacha20-poly1305 first. Only trust the native binding (sshcrypto.node); otherwise leave the cipher disabled so filterCiphers() drops it and AES-GCM is negotiated instead. Co-authored-by: XtraLarge <> * fix: add Swiss German server layout (#1078) * chore: update release notes * feat: continue improving desktop app 2-way sync with logic fixes and a migration dialog * fix: dekstop app showing auth form without syncing * feat: create desktop auto sessions for existing setups * feat: add electron backend killing * fix: electron login and session related bugs and updated readme for v2.6.0 * chore: finalize release notes * fix: click to expand hosts including extra bottom margin * fix: desktop auth modal failing to log users in * fix: desktop app failing to sync * fix: reverse proxy causing sync error * chore: lint, format, and bump version to 2.6.0 * chore: sync Crowdin translations for 2.6.0 --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: L.H. <117188168+default-student@users.noreply.github.com> Co-authored-by: default-student <default-student@github.com> Co-authored-by: Brad Baker <xyzulu@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Brennan Neoh <brennanneoh@users.noreply.github.com> Co-authored-by: brennanneoh <497569+brennanneoh@users.noreply.github.com> Co-authored-by: XtraLarge <eMail@WilliWerres.de> Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
This commit is contained in:
co-authored by
XtraLarge <>
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
L.H.
default-student
Brad Baker
copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Copilot Autofix powered by AI
Brennan Neoh
brennanneoh
XtraLarge
ZacharyZcR
parent
cf3e2cb499
commit
1a26628a48
@@ -389,6 +389,45 @@
|
||||
"noSavedServers": "Brak zapisanych serwerów",
|
||||
"removeServer": "Usunąć"
|
||||
},
|
||||
"migrationNotice": {
|
||||
"title": "Termix Desktop działa teraz autonomicznie",
|
||||
"body1": "Ta aplikacja łączyła się bezpośrednio z serwerem Termix. Została przeprojektowana tak, aby działać w pełni samodzielnie, przechowując hosty i dane uwierzytelniające lokalnie, dzięki czemu działa w trybie offline. Dwukierunkowa synchronizacja z samodzielnie hostowanym serwerem Termix jest teraz opcjonalna.",
|
||||
"body2": "Twoje obecne hosty i dane uwierzytelniające są nadal na {{url}}. Włącz synchronizację zdalną i ponownie połącz się z tym serwerem, aby je przywrócić i zapewnić synchronizację w przyszłości.",
|
||||
"dismiss": "Nie teraz",
|
||||
"setUpSync": "Skonfiguruj synchronizację zdalną"
|
||||
},
|
||||
"remoteSync": {
|
||||
"title": "Zdalna synchronizacja",
|
||||
"description": "Opcjonalnie połącz tę aplikację desktopową z samodzielnie hostowanym serwerem Termix, aby synchronizować hosty, dane uwierzytelniające i fragmenty kodu na różnych urządzeniach. Aplikacja zawsze działa w pełni offline, niezależnie od tego, czy masz połączenie z siecią, czy nie.",
|
||||
"notConnected": "Nie połączony",
|
||||
"connected": "Połączony",
|
||||
"connectedTo": "Połączono z {{url}}",
|
||||
"lastSynced": "Ostatnia synchronizacja {{time}}",
|
||||
"neverSynced": "Nigdy nie zsynchronizowane",
|
||||
"syncError": "Błąd synchronizacji: {{message}}",
|
||||
"needsReauth": "Logowanie wygasło",
|
||||
"connectButton": "Połącz się z serwerem",
|
||||
"disconnectButton": "Odłączyć",
|
||||
"syncNowButton": "Synchronizuj teraz",
|
||||
"syncing": "Synchronizacja...",
|
||||
"serverUrl": "Adres URL serwera",
|
||||
"enterServerUrl": "Proszę podać adres URL serwera",
|
||||
"mustIncludeProtocol": "Adres URL serwera musi zaczynać się od http:// lub https://",
|
||||
"connectionTestFailed": "Nie można nawiązać połączenia z serwerem Termix pod tym adresem URL",
|
||||
"allowInvalidCertificate": "Zezwól na nieprawidłowy certyfikat",
|
||||
"allowInvalidCertificateDesc": "Używaj tylko w przypadku zaufanych serwerów hostowanych samodzielnie, z certyfikatami podpisanymi samodzielnie lub opartymi na adresie IP.",
|
||||
"savedServers": "Zapisane serwery",
|
||||
"removeServer": "Usunąć",
|
||||
"continueButton": "Kontynuować",
|
||||
"cancelButton": "Anulować",
|
||||
"signInTitle": "Zaloguj się do {{url}}",
|
||||
"originTitle": "Pochodzenie połączenia",
|
||||
"originDescription": "Wybierz domyślne źródło połączeń SSH. Można to zmienić dla każdego hosta.",
|
||||
"originLocal": "To urządzenie (sieć lokalna)",
|
||||
"originRemote": "Serwer zdalny",
|
||||
"bannerReconnect": "Na nowo połączyć",
|
||||
"bannerMessage": "Zdalna synchronizacja wymaga ponownego uwierzytelnienia"
|
||||
},
|
||||
"versionCheck": {
|
||||
"error": "Błąd sprawdzania wersji",
|
||||
"checkFailed": "Nie udało się sprawdzić dostępności aktualizacji",
|
||||
@@ -602,6 +641,7 @@
|
||||
"overrideCredentialUsername": "Zastąp nazwę użytkownika poświadczeń",
|
||||
"overrideCredentialUsernameDesc": "Użyj nazwy użytkownika określonej powyżej zamiast nazwy użytkownika podanej w poświadczeniu",
|
||||
"oidcUsernameHint": "Użyj $oidc.preferred_username, aby zastąpić swoją nazwę logowania OIDC.",
|
||||
"tailscaleUsernameHint": "Musi to być użytkownik systemu Unix, któremu Twoja tożsamość Tailscale została przypisana na liście kontroli dostępu SSH sieci tailnet, niekoniecznie musi to być użytkownik root.",
|
||||
"jumpHostChain": "Łańcuch hosta skoku",
|
||||
"portKnocking": "Port Knocking",
|
||||
"addKnock": "Dodaj port",
|
||||
@@ -650,6 +690,11 @@
|
||||
"delayAfterMs": "Opóźnienie po (ms)",
|
||||
"useSocks5Proxy": "Użyj serwera proxy SOCKS5",
|
||||
"useSocks5ProxyDesc": "Przekieruj połączenie przez serwer proxy",
|
||||
"connectionOrigin": "Pochodzenie połączenia",
|
||||
"connectionOriginDesc": "Skąd pochodzi połączenie SSH tego hosta. Zastępuje domyślne globalne ustawienie aplikacji na komputerze.",
|
||||
"connectionOriginDefault": "Użyj domyślnego",
|
||||
"connectionOriginLocal": "To urządzenie (sieć lokalna)",
|
||||
"connectionOriginRemote": "Serwer zdalny",
|
||||
"proxyHost": "Host proxy",
|
||||
"proxyPort": "Port proxy",
|
||||
"proxyUsername": "Nazwa użytkownika proxy",
|
||||
@@ -762,6 +807,14 @@
|
||||
"customThemeBrightCyan": "Jasny cyjan",
|
||||
"customThemeBrightWhite": "Jasna biel",
|
||||
"customThemeResetTooltip": "Przywróć ustawienia domyślne",
|
||||
"savedThemesLabel": "Zapisane motywy",
|
||||
"saveAsGlobalTheme": "Zapisz jako motyw globalny",
|
||||
"saveGlobalThemeNamePrompt": "Wprowadź nazwę tego motywu",
|
||||
"saveGlobalThemeSuccess": "Motyw zapisany",
|
||||
"saveGlobalThemeError": "Nie udało się zapisać motywu",
|
||||
"applyGlobalThemeTooltip": "Zastosuj ten motyw",
|
||||
"deleteGlobalThemeTooltip": "Usuń ten motyw",
|
||||
"noSavedThemes": "Brak zapisanych motywów",
|
||||
"syntaxHighlightingLabel": "Podświetlanie składni",
|
||||
"syntaxHighlightingDesc": "Kolorowanie danych wyjściowych terminala (błędy, ścieżki, adresy IP, znaczniki czasu)",
|
||||
"syntaxHighlightingCategories": "Podświetl kategorie",
|
||||
@@ -791,6 +844,8 @@
|
||||
"enableAutoTmuxDesc": "Automatyczne uruchamianie lub dołączanie do sesji tmux",
|
||||
"enableSessionLogging": "Rejestrowanie sesji",
|
||||
"enableSessionLoggingDesc": "Rejestruj dane wyjściowe sesji terminalowej w celu późniejszego przejrzenia",
|
||||
"allowSessionSharing": "Zezwól na udostępnianie sesji",
|
||||
"allowSessionSharingDesc": "Zezwól na udostępnianie sesji na żywo na tym hoście za pośrednictwem łącza lub innym użytkownikom",
|
||||
"enableCommandHistory": "Historia dowodzenia",
|
||||
"enableCommandHistoryDesc": "Rejestruj polecenia uruchamiane w tym terminalu w celu historii i automatycznego uzupełniania",
|
||||
"linkClickBehaviorLabel": "Zachowanie kliknięcia linku",
|
||||
@@ -895,6 +950,7 @@
|
||||
"proxmoxResultImported": "{{count}} zaimportowano",
|
||||
"proxmoxResultUpdated": "{{count}} zaktualizowano",
|
||||
"proxmoxResultFailed": "{{count}} nie powiodło się",
|
||||
"proxmoxResultSkippedNoIp": "{{count}} pominięto (nie znaleziono adresu IP)",
|
||||
"proxmoxImportComplete": "Zakończono importowanie Proxmox: {{summary}}",
|
||||
"proxmoxDiscoveryFailed": "Odkrycie nie powiodło się",
|
||||
"proxmoxImportFailed": "Import nie powiódł się",
|
||||
@@ -961,6 +1017,9 @@
|
||||
"failedToSaveCredential": "Nie udało się zapisać danych uwierzytelniających",
|
||||
"credentialNameRequired": "Proszę podać nazwę poświadczenia",
|
||||
"credentialAuthRequired": "Dodaj hasło, klucz SSH lub oba",
|
||||
"createCredentialFromHostBtn": "Utwórz poświadczenia",
|
||||
"createCredentialFromHostTitle": "Utwórz poświadczenia z hosta",
|
||||
"createCredentialFromHostDesc": "Utwórz wpis danych uwierzytelniających, który można wielokrotnie wykorzystywać i udostępniać, wstępnie wypełniony bieżącą nazwą użytkownika, hasłem i/lub kluczem SSH tego hosta.",
|
||||
"backToHosts": "Powrót do Gospodarzy",
|
||||
"backToCredentials": "Powrót do danych uwierzytelniających",
|
||||
"pinned": "Przypięte",
|
||||
@@ -1000,6 +1059,9 @@
|
||||
"folderNestingHint": "Użyj / do oddzielenia poziomów i utworzenia zagnieżdżonych folderów.",
|
||||
"folderColor": "Kolor",
|
||||
"folderIcon": "Ikona",
|
||||
"folderCredential": "Mandat",
|
||||
"folderCredentialNone": "Brak przypisanych danych uwierzytelniających",
|
||||
"folderCredentialHint": "Hosty w tym folderze korzystające z uwierzytelniania „Zapisane dane uwierzytelniające” bez wybrania własnych danych uwierzytelniających odziedziczą to dane.",
|
||||
"folderPreview": "Zapowiedź",
|
||||
"folderNameFallback": "Folder bez tytułu",
|
||||
"createFolderButton": "Utwórz folder",
|
||||
@@ -1181,6 +1243,10 @@
|
||||
"filterTagsGroup": "Tagi",
|
||||
"shareHost": "Udostępnij hosta",
|
||||
"shareHostTitle": "Udostępnij: {{name}}",
|
||||
"shareFolder": "Udostępnij folder",
|
||||
"shareFolderTitle": "Udostępnij folder: {{name}}",
|
||||
"folderSharedSuccessfully": "Udostępniono {{count}} hostów w folderze",
|
||||
"failedToShareFolder": "Nie udało się udostępnić folderu",
|
||||
"sharing": {
|
||||
"loadError": "Nie udało się załadować udostępnianych danych. Spróbuj ponownie.",
|
||||
"shareWithSection": "Podziel się z",
|
||||
@@ -1221,6 +1287,7 @@
|
||||
"shareWithCount": "Udostępnij ({{count}})",
|
||||
"currentAccess": "Aktualny dostęp",
|
||||
"noAccessEntries": "Ten host nie został jeszcze udostępniony",
|
||||
"folderShareSummary": "Udostępniono {{shared}} z {{total}} hostów w tym folderze",
|
||||
"grantedBy": "Przyznane przez",
|
||||
"expires": "Wygasa",
|
||||
"expired": "Wygasły",
|
||||
@@ -1242,6 +1309,8 @@
|
||||
"authMethod": "Metoda uwierzytelniania",
|
||||
"authTypeDirect": "Bezpośredni",
|
||||
"authTypeCredential": "Mandat",
|
||||
"authTypeNone": "Nic",
|
||||
"authTypeNoneDesc": "Żadne dane uwierzytelniające nie są przechowywane. Przy każdym połączeniu zostaniesz poproszony o podanie nazwy użytkownika i hasła; dane te nie zostaną zapisane.",
|
||||
"selectCredential": "Wybierz dane uwierzytelniające...",
|
||||
"connectionSettings": "Ustawienia połączenia",
|
||||
"displaySettings": "Ustawienia wyświetlania",
|
||||
@@ -1259,6 +1328,7 @@
|
||||
"rdpPort": "Port RDP",
|
||||
"username": "Nazwa użytkownika",
|
||||
"password": "Hasło",
|
||||
"passwordSaved": "Hasło zapisane, wpisz, aby zmienić",
|
||||
"domain": "Domena",
|
||||
"securityMode": "Tryb bezpieczeństwa",
|
||||
"colorDepth": "Głębia koloru",
|
||||
@@ -1424,7 +1494,60 @@
|
||||
"expiresIn": "Wygasa za {{duration}}",
|
||||
"search": "Wyszukaj połączenia...",
|
||||
"noSearchResults": "Brak połączeń odpowiadających Twojemu wyszukiwaniu",
|
||||
"rename": "Zmień nazwę sesji"
|
||||
"rename": "Zmień nazwę sesji",
|
||||
"sectionSharedWithMe": "Udostępniono mi",
|
||||
"sharedBy": "Udostępnione przez {{username}}",
|
||||
"join": "Dołączyć",
|
||||
"sharedSessionLabel": "{{hostName}} (udostępnione)"
|
||||
},
|
||||
"sessionSharing": {
|
||||
"guestView": {
|
||||
"loading": "Łączenie z sesją współdzieloną...",
|
||||
"linkInvalid": "Ten link do udostępniania jest nieprawidłowy, wygasł lub został odwołany",
|
||||
"rateLimited": "Zbyt wiele prób, spróbuj ponownie za chwilę",
|
||||
"sessionEnded": "Ta sesja dobiegła końca",
|
||||
"readOnlyBadge": "Tylko do podglądu"
|
||||
},
|
||||
"modalTitle": "Udostępnij sesję",
|
||||
"shareButton": "Udział",
|
||||
"notReadyToShare": "Sesja nie jest jeszcze gotowa do udostępnienia",
|
||||
"modeTab": {
|
||||
"link": "Połączyć",
|
||||
"user": "Użytkownik"
|
||||
},
|
||||
"linkModeDescription": "Każdy mający ten link może dołączyć, nie jest wymagane założenie konta.",
|
||||
"userModeDescription": "Udostępnij dane konkretnemu użytkownikowi, który ma już dostęp do tego hosta. Jeśli jeszcze nie ma dostępu, najpierw udostępnij mu hosta lub skorzystaj z linku. Po udostępnieniu sesja pojawi się na jego karcie Połączenia.",
|
||||
"permissionLevel": {
|
||||
"label": "Poziom uprawnień",
|
||||
"readOnly": "Tylko do odczytu",
|
||||
"readOnlyDescription": "Można oglądać sesję na żywo, ale nie można pisać ani brać udziału w interakcji.",
|
||||
"readWrite": "Odczyt-zapis",
|
||||
"readWriteDescription": "Może pisać i uczestniczyć w sesji tak samo jak właściciel."
|
||||
},
|
||||
"expiryLabel": "Wygaśnięcie łącza",
|
||||
"createLinkButton": "Utwórz link",
|
||||
"createShareButton": "Udostępnij użytkownikowi",
|
||||
"searchUsersPlaceholder": "Wyszukaj użytkowników...",
|
||||
"noUsersFound": "Nie znaleziono użytkowników",
|
||||
"linkCreated": "Udostępnij link utworzony",
|
||||
"linkCopied": "Link skopiowany do schowka",
|
||||
"copyLink": "Kopiuj link",
|
||||
"shareCreated": "Sesja udostępniona. Pojawi się na karcie Połączenia.",
|
||||
"shareFailed": "Nie udało się utworzyć udziału",
|
||||
"userLacksHostAccess": "Ten użytkownik nie ma jeszcze dostępu do tego hosta. Udostępnij mu najpierw hosta lub skorzystaj z linku.",
|
||||
"activeShares": "Aktywne akcje",
|
||||
"noActiveShares": "Brak aktywnych akcji w tej sesji",
|
||||
"revoke": "Unieważnić",
|
||||
"revokeConfirmTitle": "Cofnąć to udostępnienie?",
|
||||
"revokeConfirmDescription": "Każda osoba korzystająca z tego udziału natychmiast utraci do niego dostęp.",
|
||||
"revoked": "Udostępnij odwołano",
|
||||
"revokeFailed": "Nie udało się odwołać udostępniania",
|
||||
"joinCount": "{{count}} dołącz",
|
||||
"joinCount_other": "{{count}} łączy",
|
||||
"expiresAt": "Wygasa {{date}}",
|
||||
"linkShareBadge": "Połączyć",
|
||||
"userShareBadge": "Użytkownik: {{username}}",
|
||||
"loadSharesFailed": "Nie udało się załadować aktywnych udziałów"
|
||||
},
|
||||
"guacamole": {
|
||||
"connecting": "Łączenie z sesją {{type}}...",
|
||||
@@ -1436,6 +1559,9 @@
|
||||
"reconnect": "Na nowo połączyć",
|
||||
"retry": "Spróbować ponownie",
|
||||
"guacdUnavailable": "Usługa pulpitu zdalnego (guacd) jest niedostępna. Upewnij się, że usługa guacd jest uruchomiona, dostępna i poprawnie skonfigurowana w ustawieniach administratora.",
|
||||
"credentialPromptTitle": "Wprowadź dane uwierzytelniające RDP",
|
||||
"credentialPromptDescription": "Ten host jest skonfigurowany tak, aby prosić o dane uwierzytelniające podczas łączenia. Są one używane tylko w tej sesji i nie są zapisywane.",
|
||||
"connect": "Łączyć",
|
||||
"ctrlAltDel": "Ctrl+Alt+Del",
|
||||
"toolbar": {
|
||||
"ctrlAltDel": "Ctrl+Alt+Del",
|
||||
@@ -1461,7 +1587,9 @@
|
||||
"reconnect": "Ponowne połączenie sesji",
|
||||
"collapse": "Zwiń pasek narzędzi",
|
||||
"expand": "Rozwiń pasek narzędzi",
|
||||
"dragHandle": "Przeciągnij, aby zmienić położenie"
|
||||
"dragHandle": "Przeciągnij, aby zmienić położenie",
|
||||
"switchToTrackpad": "Przełącz na tryb gładzika (przeciągnij, aby przesunąć kursor, dotknij, aby kliknąć)",
|
||||
"switchToTouch": "Przełącz na tryb dotykowy (dotknij bezpośrednio miejsca, w którym chcesz kliknąć)"
|
||||
}
|
||||
},
|
||||
"terminal": {
|
||||
@@ -1508,6 +1636,11 @@
|
||||
"totpRequired": "Wymagane uwierzytelnianie dwuskładnikowe",
|
||||
"totpCodeLabel": "Kod weryfikacyjny",
|
||||
"totpVerify": "Zweryfikować",
|
||||
"mfaPromptRequired": "Wymagane uwierzytelnienie",
|
||||
"mfaPushRequired": "Wymagane uwierzytelnianie push",
|
||||
"mfaMenuPlaceholder": "Wprowadź swoją odpowiedź",
|
||||
"mfaWaitingApproval": "Oczekiwanie na zatwierdzenie na Twoim urządzeniu...",
|
||||
"mfaSendRequest": "Wyślij prośbę",
|
||||
"warpgateAuthRequired": "Wymagane uwierzytelnienie Warpgate",
|
||||
"warpgateSecurityKey": "Klucz bezpieczeństwa",
|
||||
"warpgateAuthUrl": "Adres URL uwierzytelniania",
|
||||
@@ -2277,7 +2410,8 @@
|
||||
"resetCodeRateLimited": "Ograniczenie szybkości: Zbyt wiele prób weryfikacji. Spróbuj ponownie później.",
|
||||
"resetCodeRateLimitedWithTime": "Ograniczenie szybkości: Zbyt wiele prób weryfikacji. Odczekaj {{time}} sekund przed ponowną próbą.",
|
||||
"authTokenSaveFailed": "Nie udało się zapisać tokenu uwierzytelniającego",
|
||||
"failedToLoadServer": "Nie udało się załadować serwera"
|
||||
"failedToLoadServer": "Nie udało się załadować serwera",
|
||||
"remoteServerRequired": "Wymagany jest serwer zdalny. Połącz się z serwerem zdalnym w Ustawieniach, aby korzystać z tego typu połączenia."
|
||||
},
|
||||
"messages": {
|
||||
"registrationDisabled": "Rejestracja nowych kont jest obecnie wyłączona przez administratora. Zaloguj się lub skontaktuj się z administratorem.",
|
||||
@@ -2644,6 +2778,17 @@
|
||||
"sslSaveFailed": "Nie udało się zapisać ustawień SSL",
|
||||
"sslRequiresDomain": "Wymagane są domena i adres e-mail",
|
||||
"sslInfoNote": "Po wystawieniu certyfikatu włącz SSL w zmiennych środowiskowych (ENABLE_SSL=true) i uruchom ponownie Termix.",
|
||||
"sslManualOption": "Instrukcja (przesyłanie certyfikatu)",
|
||||
"sslManualCert": "Certyfikat (PEM)",
|
||||
"sslManualCertPlaceholder": "-----ROZPOCZĄTEK CERTYFIKATU-----",
|
||||
"sslManualKey": "Klucz prywatny (PEM)",
|
||||
"sslManualKeyPlaceholder": "-----POCZĄTEK KLUCZA PRYWATNEGO-----",
|
||||
"sslManualDesc": "Wklej istniejący certyfikat i klucz prywatny, łącznie z pełnym łańcuchem, jeśli jest wymagany przez urząd certyfikacji.",
|
||||
"sslManualUpload": "Prześlij i zainstaluj certyfikat",
|
||||
"sslManualUploadLoading": "Przesyłanie certyfikatu...",
|
||||
"sslManualUploadSuccess": "Certyfikat został pomyślnie przesłany i zainstalowany",
|
||||
"sslManualUploadFailed": "Nie udało się przesłać certyfikatu",
|
||||
"sslManualRequiresFields": "Wymagany jest certyfikat i klucz prywatny",
|
||||
"auditLogTotal": "{{total}} całkowita liczba wpisów",
|
||||
"auditLogEmpty": "Nie znaleziono wpisów w dzienniku audytu",
|
||||
"auditLogSuccess": "Sukces",
|
||||
@@ -2672,6 +2817,12 @@
|
||||
"commandHistoryEnabled": "Historia dowodzenia",
|
||||
"commandHistoryEnabledDesc": "Zezwól na rejestrowanie historii poleceń. Po wyłączeniu historia nie jest zapisywana, niezależnie od ustawień hosta.",
|
||||
"updateCommandHistoryFailed": "Nie udało się zaktualizować ustawień historii poleceń",
|
||||
"analyticsEnabled": "Udostępnij anonimowe statystyki użytkowania",
|
||||
"analyticsEnabledDesc": "Wysyła anonimowe, codzienne zestawienie użytkowników, hostów i wykorzystania funkcji, aby pomóc w ulepszaniu Termix. Nie zawiera ono żadnych danych osobowych ani szczegółów połączenia.",
|
||||
"updateAnalyticsFailed": "Nie udało się zaktualizować ustawień analityki",
|
||||
"sessionSharingGloballyEnabled": "Zezwól na udostępnianie sesji",
|
||||
"sessionSharingGloballyEnabledDesc": "Zezwalaj na udostępnianie sesji terminala na żywo, RDP, VNC i Telnet w obrębie instancji. Po wyłączeniu zastępuje wszystkie przełączniki udostępniania dla poszczególnych hostów.",
|
||||
"updateSessionSharingFailed": "Nie udało się zaktualizować ustawień udostępniania sesji",
|
||||
"sessionTimeout": "Przekroczenie limitu czasu sesji",
|
||||
"hours": "godziny",
|
||||
"sessionTimeoutRange": "Min. 1 godz. · Maks. 720 godz.",
|
||||
@@ -3119,6 +3270,47 @@
|
||||
"executionSuccess": "Sukces",
|
||||
"executionFailed": "Przegrany"
|
||||
},
|
||||
"keybindings": {
|
||||
"title": "Skróty klawiaturowe",
|
||||
"description": "Dostosuj skróty klawiaturowe do kopiowania, wklejania i sterowania w terminalu lub powiąż klawisze, aby wysłać tekst lub uruchomić fragment kodu.",
|
||||
"defaultsHeading": "Wbudowane skróty",
|
||||
"customHeading": "Niestandardowe skróty",
|
||||
"addBinding": "Dodaj skrót",
|
||||
"addBindingTitle": "Dodaj skrót",
|
||||
"editBindingTitle": "Edytuj skrót",
|
||||
"loading": "Załadunek...",
|
||||
"noCustomBindings": "Brak niestandardowych skrótów",
|
||||
"defaultBadge": "Domyślny",
|
||||
"customizedBadge": "Dostosowane",
|
||||
"customize": "Dostosuj",
|
||||
"resetToDefault": "Przywróć ustawienia domyślne",
|
||||
"resetAllToDefaults": "Przywróć ustawienia domyślne",
|
||||
"close": "Zamknąć",
|
||||
"cancel": "Anulować",
|
||||
"saveBinding": "Zapisz skrót",
|
||||
"saveError": "Nie udało się zapisać skrótów klawiaturowych",
|
||||
"pressKeysToRecord": "Kombinacja klawiszy",
|
||||
"pressKeysPlaceholder": "Kliknij i naciśnij klawisze",
|
||||
"recording": "Naciśnij klawisze...",
|
||||
"comboRequiredError": "Najpierw naciśnij kombinację klawiszy",
|
||||
"textRequiredError": "Wprowadź tekst do wysłania",
|
||||
"controlCodeRequiredError": "Wprowadź pojedynczą literę kodu kontrolnego",
|
||||
"snippetRequiredError": "Wybierz fragment",
|
||||
"conflictWarning": "Ta kombinacja jest już przypisana do {{combo}}. Zapis spowoduje, że oba zapłoną.",
|
||||
"actionLabel": "Działanie",
|
||||
"actionCopy": "Kopiuj wybór",
|
||||
"actionPaste": "Pasta",
|
||||
"actionSendControlCode": "Wyślij sygnał Ctrl+litera",
|
||||
"actionSendText": "Wyślij tekst",
|
||||
"actionRunSnippet": "Uruchom istniejący fragment kodu",
|
||||
"controlCodeLabel": "List",
|
||||
"textLabel": "Tekst do wysłania",
|
||||
"appendEnterLabel": "Naciśnij Enter po wysłaniu",
|
||||
"snippetLabel": "Skrawek",
|
||||
"selectSnippetPlaceholder": "Wybierz fragment",
|
||||
"orphanedSnippetWarning": "fragment nie znaleziony",
|
||||
"clipboardPermissionNote": "Przy pierwszym użyciu w niektórych przeglądarkach może zostać wyświetlony monit o zezwolenie na dostęp do schowka."
|
||||
},
|
||||
"userProfile": {
|
||||
"donateTitle": "Utrzymajmy Termix przy życiu",
|
||||
"donateDescription": "Termix jest darmowy, hostowany samodzielnie i tworzony przez zaledwie kilka osób w wolnym czasie. Jeśli zaoszczędziłeś czas lub pieniądze, darowizna w kryptowalutach pomoże Ci go utrzymać.",
|
||||
@@ -3134,6 +3326,7 @@
|
||||
"sectionAppearance": "Wygląd",
|
||||
"sectionSecurity": "Bezpieczeństwo",
|
||||
"sectionApiKeys": "Klucze API",
|
||||
"sectionData": "Dane",
|
||||
"sectionC2sTunnels": "Tunele C2S",
|
||||
"usernameLabel": "Nazwa użytkownika",
|
||||
"roleLabel": "Rola",
|
||||
@@ -3162,6 +3355,9 @@
|
||||
"settingsTerminal": "Terminal",
|
||||
"commandAutocomplete": "Automatyczne uzupełnianie poleceń",
|
||||
"commandAutocompleteDesc": "Pokaż autouzupełnianie podczas pisania",
|
||||
"keyboardShortcuts": "Skróty klawiaturowe",
|
||||
"keyboardShortcutsDescription": "Dostosuj skróty poleceń i kopiowania w terminalu",
|
||||
"manageShortcuts": "Zarządzać",
|
||||
"terminalLinkBehavior": "Kliknij łącze terminala",
|
||||
"terminalLinkBehaviorDesc": "Domyślne zachowanie po kliknięciu linków w terminalu",
|
||||
"historyTracking": "Śledzenie historii",
|
||||
@@ -3228,6 +3424,22 @@
|
||||
"apiKeyUsageHint": "Dołącz swój klucz do",
|
||||
"apiKeyUsageHintHeader": "chodnikowiec.",
|
||||
"apiKeyPermissionsHint": "Klucze dziedziczą uprawnienia użytkownika, który je stworzył.",
|
||||
"exportData": "Eksportuj moje dane",
|
||||
"exportDataDesc": "Pobierz kopię zapasową hostów, danych uwierzytelniających i ustawień, aby przenieść ją na inne urządzenie",
|
||||
"export": "Eksport",
|
||||
"exporting": "Eksportowanie...",
|
||||
"importData": "Importuj moje dane",
|
||||
"importDataDesc": "Przywróć hosty, poświadczenia i ustawienia z pliku kopii zapasowej .sqlite",
|
||||
"importDataSelected": "Wybrano: {{name}}",
|
||||
"selectFile": "Wybierz plik",
|
||||
"changeFile": "Zmiana",
|
||||
"import": "Import",
|
||||
"importing": "Importowanie...",
|
||||
"exportSuccess": "Dane zostały pomyślnie wyeksportowane",
|
||||
"exportFailed": "Eksport danych nie powiódł się",
|
||||
"importSelectFile": "Proszę najpierw wybrać plik",
|
||||
"importCompleted": "Import zakończony: zaimportowano {{total}} elementów, pominięto {{skipped}}",
|
||||
"importFailed": "Nieudany import: {{error}}",
|
||||
"roleUser": "Użytkownik",
|
||||
"authMethodDual": "Podwójna autoryzacja",
|
||||
"authMethodOidc": "OIDC",
|
||||
@@ -3379,6 +3591,7 @@
|
||||
"pageUp": "PgUp",
|
||||
"pageDown": "PgDn",
|
||||
"delete": "Del",
|
||||
"paste": "Pasta",
|
||||
"editQuickKeys": "Edytuj szybkie klawisze",
|
||||
"quickKeysTitle": "Szybkie klawisze",
|
||||
"quickKeysDesc": "Kliknij ×, aby usunąć. Obsługuje maksymalnie 8 znaków.",
|
||||
|
||||
Reference in New Issue
Block a user