Commit Graph
51 Commits
Author SHA1 Message Date
Kaede Akino 9738605dd3 feat(terminal): add Mosh and Eternal Terminal transports
Add SSH-authenticated transports with independent settings, protocol-aware menus and snippets, and tmux session persistence.

Restore eligible iOS workspaces from encrypted transport checkpoints without adding a macOS recovery entry. Include schema migrations and regression coverage.
2026-10-16 08:36:56 +08:00
Kaede Akino 59bcfd92ee feat(hosts): add selectable macOS and Windows icons 2026-10-16 02:03:09 +08:00
Kaede Akino 8e3f1128da feat(sessions): add tmux persistence and terminal context tracking
Add extensible remote session backends, safe ownership and restore handling, and pane-scoped shell integration over the existing SSH connection.

Keep iOS workspaces in memory and rebuild expired Activity targets on demand. Integrate session selection into Connection Journey with consistent controls, cancellation behavior, and localized counts.
2026-10-16 01:04:12 +08:00
Kaede AkinoandCopilot b33c03a62d refactor: remove unused declarations, overloads, and parameters
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-05 23:49:46 +08:00
Kaede Akino 996ea85196 fix(tailscale)!: scope host identities and defer saved logout
Derive groupScopedV2 host UUIDs from the group, MagicDNS suffix and stable
node ID. Remove experimental identity compatibility and Tailnet conflict
handling, and hide unavailable Metrics hosts while retaining configuration.

Keep saved enrollments active until Save. Retire unsaved login candidates
on Logout or Discard, including repeated replacement logins, while preserving
the original enrollment. Use the same behavior in New and Edit forms.

Validation: 94 focused tests, iOS Simulator build, Swift formatting and
AppStrings/Chinese localization checks passed. The default suite still has
9 failures in untouched notification, agent and key export tests.

BREAKING CHANGE: Tailscale only accepts groupScopedV2 identities. Remove
old Tailscale test data before using this build; no ID migration is provided.
2026-10-03 16:58:40 +08:00
Kaede Akino 661c448ba2 fix(tailscale): separate login from group editor save 2026-10-03 15:51:48 +08:00
Kaede Akino 37b0de899f feat(keychain): add single-host export and deferred public keys 2026-10-03 13:48:19 +08:00
Kaede Akino 1ab7ed3da3 feat: isolate tailscale connections and harden history
Bind independent Tailnet connections to group IDs while preserving legacy host identities through the V3 sync format. Persist profile cleanup retries, isolate test storage, and reject stale dialers after re-enrollment.

Recover quarantined sync records safely, refresh metrics compatibility, fix multiline shell history, and remove obsolete mobile history gates. Pin libtailscale-spm to 1.0.1 alongside its submodule revision.

Validation: default macOS suites (2679 tests), targeted iOS suites (26 tests), strict Swift formatting, shared AppStrings checks, and Chinese localization checks passed. Both subagent reviews approved.
2026-10-03 09:46:09 +08:00
Kaede Akino 191740a3c7 refine: tailscale UI 2026-10-03 04:47:32 +08:00
Kaede Akino 6eafa29369 feat: add Pro Tailscale SSH and SFTP integration 2026-10-03 03:12:12 +08:00
Kaede Akino a1736d0cd7 fix(ssh): distinguish external security key storage 2026-09-29 11:11:39 +08:00
Kaede Akino 565ef17d87 refactor(ssh): share key workflows and wire encoding 2026-09-29 00:05:32 +08:00
Kaede Akino 816a6ff121 feat(ssh): support hardware security key authentication
Add native security key registration, reference import, and signing on macOS and iOS. Store references in Vault metadata and route authentication through connection, Assistant, MCP, and agent forwarding flows.

Preserve signing cancellation and actionable authentication errors for security keys and Secure Enclave. Pin the released libssh2 forks as nested submodules and refresh package resolution.
2026-09-28 23:37:49 +08:00
Kaede Akino ac645aa7b7 feat(ssh): forward vault keys to remote sessions 2026-09-28 20:04:07 +08:00
Kaede Akino b58c8beb5e fix(ssh): restore saved passphrases and authentication saving 2026-09-28 18:37:21 +08:00
Kaede Akino d30388381a fix(ssh): avoid unnecessary quotes around login addresses 2026-09-28 01:08:00 +08:00
Kaede Akino 755e1bdf27 refactor(notifications): share delivery and isolate routing lifecycles 2026-09-27 16:30:01 +08:00
Kaede Akino 6140bc3ebe fix(connections): show mobile Vault status for selected workspace 2026-09-27 16:13:02 +08:00
Kaede Akino 6d8bd1dd6b feat(notifications): unify assistant terminal and transfer alerts 2026-09-27 15:30:58 +08:00
Kaede Akino 80f08b089f refactor: share transfer presentation and polish workspace actions
Centralize transfer state and presentation rules, extract the macOS transfer center, and preserve remote home metadata for compact iOS transfer paths.

Correct the shared Close Others action and extend transfer regression coverage.
2026-09-26 12:05:26 +08:00
Kaede Akino 40058781f9 feat(transfers): streamline actions and delete finished records 2026-09-26 01:57:46 +08:00
Kaede Akino 5e75c9dfcd refactor: connection history sync 2026-09-24 14:49:31 +08:00
Kaede Akino b9c9b6808d Replace Identity usage time with modification time 2026-09-22 19:18:48 +08:00
Kaede Akino 762e6b1b57 Remove Host Key Changed 2026-09-22 01:28:47 +08:00
Kaede Akino 759c1d8f7b Add Telnet 2026-09-21 21:09:11 +08:00
Kaede Akino fa734f1e1c Add charset 2026-09-21 18:30:39 +08:00
Kaede Akino 8a9793eadb Add Host startup snippets 2026-09-21 16:48:50 +08:00
Kaede Akino b69881eb41 Add host-owned custom identities 2026-09-21 16:48:50 +08:00
Kaede Akino 4ae95df1f7 Add proxy identity choose UI 2026-09-21 09:13:28 +08:00
Kaede Akino 45922ea5e5 Disallow edit missing key or identity 2026-09-21 08:38:30 +08:00
Kaede Akino 56b79a6662 Disallow move key from iCloud to Device 2026-09-21 02:14:07 +08:00
Kaede Akino 7252149c3f Hosts & Snippets collapes in Memory 2026-09-20 21:01:33 +08:00
Kaede Akino 3db8cdbf85 Harden one-shot SSH secret handling 2026-09-20 20:33:18 +08:00
Kaede Akino cb106ba15d Clear SSH secrets after each connection attempt 2026-09-20 20:33:17 +08:00
Kaede Akino 5f519eaa6c Keep additional SSH credentials reference-only 2026-09-20 20:31:50 +08:00
Kaede Akino 2c6ee51e45 Add multi-connection port forwarding 2026-09-20 09:48:29 +08:00
Kaede Akino b3b3f9cd9c Keep copied SSH commands readable 2026-09-19 18:45:49 +08:00
Kaede Akino 509484ae4c Parse ssh command 2026-09-19 11:06:07 +08:00
Kaede Akino eaa95b98b1 Unified generate name strategies 2026-09-18 23:57:26 +08:00
Kaede Akino 61cde4cd40 Refactor Port Forwarding 2026-09-18 23:37:57 +08:00
Kaede Akino ec0f685cfe Add SSH keyboard-interactive authentication across connection flows 2026-09-18 14:22:11 +08:00
Kaede Akino d0ce28a87d Add synced Workspace templates 2026-09-16 11:56:04 +08:00
Kaede Akino 71d92a384f Refine Identity sync 2026-09-15 23:24:37 +08:00
Kaede Akino 9e1426393a Fix identities last used time 2026-09-15 13:23:37 +08:00
Kaede Akino 0793acea67 Support SDK 27.0 2026-09-14 19:31:55 +08:00
Kaede Akino 93c6438e75 Allow immediate port forwarding toggles 2026-09-12 17:09:07 +08:00
Kaede Akino 9b04003012 Keep SSH host-key approval on one connection 2026-09-12 15:33:26 +08:00
Kaede Akino 352be589c8 Persist port forwarding enabled state 2026-09-12 10:38:01 +08:00
Kaede Akino 01ca95e95f Show Snippet edit times on iOS cards 2026-09-12 10:38:01 +08:00
Kaede Akino 4c68a01c48 Share cross-platform session and presentation logic 2026-09-12 10:36:15 +08:00