Commit Graph
108 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 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 Akino e89954982a fix(ssh): preserve authentication failures across fallback 2026-10-14 13:05:46 +08:00
Kaede AkinoandClaude Code 975358f98a refactor: remove redundant code and over-defensive branches
Consolidate code that existed twice and drop code nothing reaches.

- SSH: hoist the duplicated ASCII hex-nibble decoder out of
  RemoteCharsetConverter and SSHPTYChannel into SSHWireEncoding.hexDigit.
- Transcript: AgentToolDetail.Tint shares BatchTint's vocabulary, so the
  byte-identical detailColor map now delegates to batchColor.
- Commerce: replace ProPaywallState's unreachable default branch and its
  `preconditionFailure("Handled above")` with an exhaustive switch the
  compiler can prove complete.
- Strings: delete the unreferenced Workspace.closePaneAction (the live help
  text uses closePane) and its orphan catalog entry.
- Drop the unused SwiftData and UniformTypeIdentifiers imports.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-08 11:01:27 +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 ad2bf28790 refactor: remove obsolete application paths and adapters
Remove the transfer forwarding adapter, borrowed SFTP channel scheduling,
legacy assistant send entry points, unreachable Telnet password state,
unused Tailscale APIs, and unused host deletion impact projections.
Migrate behavioral tests to current paths and cover SFTP passphrase saving.

Validation: Swift formatting and shared-copy/localization checks passed.
The macOS test run reported failures in ConnectionStatusIconLayoutTests
and AgentRuntimeTests; investigation and iOS validation remain pending.
2026-10-04 22:10:09 +08:00
Kaede Akino 9b5ae755ca fix(ssh): retire PTY resources before releasing the worker 2026-10-04 21:26:41 +08:00
Kaede Akino 72ea5ae355 fix(tailscale)!: use data protection keychain storage
Update TailscaleKit to 1.0.2, align the state namespace with the app identifier, and verify scoped cleanup in signed macOS and iOS app hosts.

BREAKING CHANGE: Existing legacy Tailscale Keychain state is not migrated. Sign in again to create device-local Data Protection Keychain state.
2026-10-04 18:39:23 +08:00
Kaede Akino 7edd948843 fix(ssh): restore leading space in Bash integration command 2026-10-04 17:21:02 +08:00
Kaede Akino 981106f687 fix(assistant): align markdown and command rendering with upstream 2026-10-04 11:11:50 +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 aa5a92c352 feat: remove persistence connection and SFTP history 2026-10-03 04:18:14 +08:00
Kaede Akino 6eafa29369 feat: add Pro Tailscale SSH and SFTP integration 2026-10-03 03:12:12 +08:00
Kaede Akino beea076810 fix(assistant): correct terminal tool targeting and presentation 2026-10-02 19:58:09 +08:00
Kaede Akino 3708a7c54f refactor: remove obsolete code and redundant tests
Remove legacy Commerce types, unused helpers, duplicate SFTP progress code, and 28 unreferenced strings. Drop fixture-only tests and arbitrary screenshot size assertions while retaining behavioral coverage.

Validation: 2,592 macOS tests, 40 focused macOS tests, and 53 iOS tests passed. Swift formatting, AppStrings, and Chinese localization checks passed.
2026-10-02 17:50:47 +08:00
Kaede Akino 82d871c4fe refactor: separate feature policies and UI workflows
Move connection policy out of ProAccess, keep terminal uploads with their
session, and share question interaction and highlight editing operations.
Consolidate CPU usage and settings snapshot handling, and remove obsolete
terminal selection, theme helpers, and hard-coded latest-schema assertions.

Fix draining connection-pool recovery and stale pane upload bindings. Keep
screenshot matrices opt-in and retain behavioral migration coverage.

Validation: 2468 macOS tests passed serially, 31 iOS tests passed, and both
SSH forwarding regressions passed against the local OpenSSH fixture.
Both app builds, Swift formatting, AppStrings, and Chinese localization
checks passed. Parallel test runs still exhibit intermittent timeouts.
2026-10-02 16:40:27 +08:00
Kaede Akino 75a10fbbd0 feat(pro): gate multi-connection acceleration without changing saved settings 2026-10-02 15:32:35 +08:00
Kaede Akino d4323176ed feat(terminal): make uploads free and add native upload menus 2026-10-02 08:27:20 +08:00
Kaede Akino 7084145c47 feat(assistant): remove todo tool and task list UI 2026-09-30 14:12:16 +08:00
Kaede Akino a1736d0cd7 fix(ssh): distinguish external security key storage 2026-09-29 11:11:39 +08:00
Kaede Akino ddcb5d64e4 chore: remove copyright comments 2026-09-29 00:19:25 +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 4d6e4481c0 feat(mcp): add OAuth and 2025-03-26 compatibility
Integrate AgentKit 0.18.1 with native authorization on macOS and iOS, device-local OAuth credentials, V43 configuration persistence, and Assistant authorization prompts.

Add HTTPS callback metadata, keep native callbacks safe across actor boundaries, and distinguish authorization setup failures from cancellation. Extend the external MCP server to negotiate 2025-03-26.
2026-09-28 12:36:32 +08:00
Kaede Akino c1ae0dc0a2 feat(assistant): add cross-chat agent collaboration
Add host-owned chat creation, model discovery, messaging, reading, and waiting with durable delivery receipts. Keep tool presentation compact, mark agent-authored messages, and prevent edits that would remove tool activity.

Adopt the signed AgentKit 0.16.0 release in the package requirement, resolved revision, and submodule.
2026-09-27 19:08:29 +08:00
Kaede Akino b6ff9fd7d1 feat(assistant): add terminal pane reading tools 2026-09-27 13:00:15 +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 b3d3de5913 fix: prevent rendering and SSH teardown crashes 2026-09-26 08:44:55 +08:00
Kaede Akino 40058781f9 feat(transfers): streamline actions and delete finished records 2026-09-26 01:57:46 +08:00
Kaede Akino 41f1a97cf9 Bypass charset encode errors 2026-09-23 20:18:40 +08:00
Kaede Akino c1239e9106 Make tools presentation better 2026-09-23 19:09:39 +08:00
Kaede Akino 68c137dafc Merge parallel lifecycle fixes
# Conflicts:
#	FrameworkTests/AgentReplayPersistenceTests.swift
#	FrameworkTests/AgentSteeringTests.swift
#	FrameworkTests/AssistantExecutionControllerTests.swift
#	Frameworks/TermindApplication/Agent/AssistantExecutionController.swift
#	Frameworks/TermindApplication/Agent/ConversationModel.swift
#	TFI/Application/Agent/MobileAssistantModel.swift
#	TFITests/MobileAssistantTests.swift
#	TFM/App/AppModel.swift
#	openwiki/.claims/architecture/desktop-ui.json
#	openwiki/.claims/architecture/engineering-invariants.json
#	openwiki/.claims/architecture/mobile-ui.json
#	openwiki/.claims/architecture/module-map.json
#	openwiki/.claims/architecture/native-app-directories.json
#	openwiki/.claims/architecture/platform-runtime.json
#	openwiki/.claims/architecture/shared-module-directories.json
#	openwiki/.claims/architecture/supporting-system-directories.json
#	openwiki/.claims/architecture/system-boundaries.json
#	openwiki/.claims/concepts/agent-runtime-and-assistant.json
#	openwiki/.claims/concepts/commerce-localization-and-product-surfaces.json
#	openwiki/.claims/concepts/persistence-and-secrets.json
#	openwiki/.claims/concepts/remote-services-and-forwarding.json
#	openwiki/.claims/concepts/ssh-multiplexing-and-scheduling.json
#	openwiki/.claims/concepts/ui-design-principles.json
#	openwiki/.claims/integrations/mcp-server-and-bridge.json
#	openwiki/.claims/operations/build-test-and-release.json
#	openwiki/.claims/operations/cloudkit-release-readiness.json
#	openwiki/.claims/operations/storefront-commerce-release.json
#	openwiki/.claims/quickstart.json
#	openwiki/.claims/testing/behavioral-boundaries-and-fixtures.json
#	openwiki/.claims/workflows/settings-and-cloud-sync.json
#	openwiki/.claims/workflows/ssh-session-lifecycle.json
#	openwiki/.last-update.json
#	openwiki/.page-manifest.json
#	openwiki/architecture/desktop-ui.md
#	openwiki/architecture/engineering-invariants.md
#	openwiki/architecture/mobile-ui.md
#	openwiki/architecture/module-map.md
#	openwiki/architecture/native-app-directories.md
#	openwiki/architecture/platform-runtime.md
#	openwiki/architecture/shared-module-directories.md
#	openwiki/architecture/supporting-system-directories.md
#	openwiki/architecture/system-boundaries.md
#	openwiki/concepts/agent-runtime-and-assistant.md
#	openwiki/concepts/commerce-localization-and-product-surfaces.md
#	openwiki/concepts/persistence-and-secrets.md
#	openwiki/concepts/remote-services-and-forwarding.md
#	openwiki/concepts/ssh-multiplexing-and-scheduling.md
#	openwiki/concepts/ui-design-principles.md
#	openwiki/integrations/mcp-server-and-bridge.md
#	openwiki/operations/build-test-and-release.md
#	openwiki/operations/cloudkit-release-readiness.md
#	openwiki/operations/storefront-commerce-release.md
#	openwiki/quickstart.md
#	openwiki/testing/behavioral-boundaries-and-fixtures.md
#	openwiki/workflows/settings-and-cloud-sync.md
#	openwiki/workflows/ssh-session-lifecycle.md
2026-09-23 18:33:57 +08:00
Kaede Akino 4817bbc5f0 Remove charset alert 2026-09-23 18:08:31 +08:00
Kaede Akino a7d0d6a355 Clarify agent tool availability contracts 2026-09-23 18:08:12 +08:00
Kaede Akino 70c41b9225 Make Agent connection waits cancellation-aware 2026-09-23 17:00:43 +08:00
Kaede Akino f79c4905d0 Clarify agent tool availability contracts 2026-09-23 09:33:15 +08:00
Kaede Akino a2d781014e Fix Bash prompt command history capture 2026-09-22 14:24:18 +08:00
Kaede Akino fce93864c6 refactor: match SSH authorized host key 2026-09-22 07:20:10 +08:00
Kaede Akino 762e6b1b57 Remove Host Key Changed 2026-09-22 01:28:47 +08:00
Kaede Akino f0aeb33a8a Add URL Scheme 2026-09-21 23:54:01 +08:00
Kaede Akino cdba5aa44b Disable forwarding when SSH is off 2026-09-21 21:24: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 2918b32af3 Add Host PTY environment variables 2026-09-21 16:48:54 +08:00
Kaede Akino 7bce4291b1 Refine SSH command presentation 2026-09-21 16:48:53 +08:00
Kaede Akino a68c1da089 Add Shell integration logging 2026-09-21 16:48:52 +08:00
Kaede Akino 9cfe2005d6 request_user_secret use zeroize 2026-09-21 10:42:05 +08:00