Commit Graph
664 Commits
Author SHA1 Message Date
Kaede Akino 97248d17f2 Improve mobile SFTP navigation and layout 2026-09-12 10:38:01 +08:00
Kaede Akino fcba944911 Add TFI workspace rename and directory handoff 2026-09-12 10:38:00 +08:00
Kaede Akino ef49664e87 Float Termind Pro purchase actions 2026-09-12 10:38:00 +08:00
Kaede Akino c999cb8fae Fix History swipe delete styling 2026-09-12 10:37:40 +08:00
Kaede Akino 9f1f64de2b Restore system card context menu preview 2026-09-12 10:37:40 +08:00
Kaede Akino 08d6bcbbf1 Compact iOS terminal snippet previews 2026-09-12 10:37:40 +08:00
Kaede Akino 62fc5032ac Refine mobile terminal list presentation 2026-09-12 10:37:39 +08:00
Kaede Akino fe9dc6e20f Add paste button to mobile terminal keyboard 2026-09-12 10:37:39 +08:00
Kaede Akino 591be6909e Refine macOS host chooser interactions 2026-09-12 10:37:38 +08:00
Kaede Akino 64d0183e03 Add mobile terminal snippet and history lists 2026-09-12 10:37:38 +08:00
Kaede Akino ce40a2af11 Fix Live Activity icon alignment 2026-09-12 10:36:23 +08:00
Kaede Akino 6527bdfb50 Restrict ListViewKit to native list workloads 2026-09-12 10:36:22 +08:00
Kaede Akino 2d5aec9dbc Add mobile terminal text selection 2026-09-12 10:36:22 +08:00
Kaede Akino adec407a13 Use native MCP settings navigation 2026-09-12 10:36:22 +08:00
Kaede Akino 14bde784ac Reuse mobile host picker for metrics 2026-09-12 10:36:21 +08:00
Kaede Akino 4c68a01c48 Share cross-platform session and presentation logic 2026-09-12 10:36:15 +08:00
Kaede Akino 5eefc33cb0 Refactor TFI for project structure 2026-09-12 01:21:51 +08:00
Kaede Akino 1efcbe9063 Bulk 2026-09-11 23:39:34 +08:00
Kaede Akino 7bbfeb79e2 Bulk iOS 2026-09-11 21:07:44 +08:00
Kaede Akino 1b835a5df4 Continue iOS port with shared settings and Metrics 2026-09-11 15:12:37 +08:00
Kaede Akino c2958a05b3 Add iOS workspaces and shared feature services
Share Vault, persistence, SSH/SFTP, forwarding, and SwiftUI components across platforms. Add mobile editors, terminal input, standalone Assistant, Metrics navigation, transfers, and a unified Live Activity with host system icons.

Validation: 35 iOS tests and 100 focused macOS tests pass; formatting and zh-Hans checks pass. The full macOS run reports 14 issues in the documented timing, Keychain, and popover suites. Remaining Assistant tool and CloudKit work is tracked in Memory/MOBILE_ROLLOUT.md.
2026-09-11 13:47:16 +08:00
Kaede Akino 66890792b8 Split macOS and iOS targets into shared frameworks 2026-09-11 10:59:38 +08:00
Kaede Akino 6b3be99f48 Fix screenshot 2026-09-11 02:02:04 +08:00
Kaede Akino e11ed85831 Bump to 1.6.0 2026-09-11 01:04:42 +08:00
Kaede Akino e7d5df45b8 Refine SSH import form and remove unused translations 2026-09-11 01:02:37 +08:00
Kaede Akino 656b0f20d0 Add App Store review link and automatic invitations 2026-09-11 00:46:59 +08:00
Kaede Akino 2290ca18e0 Align SSH import storage picker with Keychain 2026-09-11 00:25:37 +08:00
Kaede Akino cea1020bff Remove low-value test assertions 2026-09-11 00:25:32 +08:00
Kaede Akino bf8be6647b Rename network speed labels and refresh product screenshots 2026-09-11 00:19:27 +08:00
Kaede Akino afa77ae16a Add Known Hosts manager and SSH folder import 2026-09-11 00:00:38 +08:00
Kaede Akino f0fdcf4ddb Sync Vault and settings across devices 2026-09-10 23:15:25 +08:00
Kaede Akino 526f8bdf07 Add get_metrics tool for Agent and MCP 2026-09-10 22:20:57 +08:00
Kaede Akino 3e0479f573 Refresh focused screenshots and showcase server metrics 2026-09-10 22:03:09 +08:00
Kaede Akino c0c63a0063 Refresh app icons and website branding 2026-09-10 21:17:27 +08:00
Kaede Akino 7caf70f5eb Add server metrics and menu bar monitoring 2026-09-10 20:47:35 +08:00
Kaede Akino e4f3e21615 Fix model role localization and skill wording 2026-09-09 20:58:52 +08:00
Kaede Akino e2490285c9 Remove unused Show Recents setting 2026-09-09 20:46:57 +08:00
Kaede Akino 8cdb3cbd44 Bump to 1.5.4(5) 2026-09-09 17:52:22 +08:00
Kaede Akino 6b240594b9 Add MCP client setup command previews and copy buttons 2026-09-09 17:36:36 +08:00
Kaede Akino 2afc70a285 Normalize fetched model types with AgentKit 0.6.0 2026-09-09 17:14:19 +08:00
Kaede Akino d2f3a80d8d Fix localization 2026-09-09 17:02:03 +08:00
Kaede Akino 58d2842a9e Fix zsh integration 2026-09-09 12:33:32 +08:00
Kaede Akino d8b12d98af Add theme selector 2026-09-09 11:47:18 +08:00
Kaede Akino 6a912cc5d0 Fix App Icon 2026-09-09 11:34:51 +08:00
Kaede Akino 3511bf963a Refactor free trial 2026-09-09 01:20:42 +08:00
Kaede Akino dd30b19391 Fix apple speech crash 2026-09-06 19:31:45 +08:00
Kaede Akino 9153b36390 Update model catalog 2026-09-06 11:59:26 +08:00
Kaede Akino f61a2cfc95 Bump to 1.4.2 2026-09-04 11:34:35 +08:00
Kaede AkinoandClaude Opus 5 ea3aae9b52 Address a provider by one URL and one API type
The API Type picker named three vendors — OpenAI, Anthropic, Google — for
four wire protocols, so `.openAI` carried a Responses toggle to express the
fourth. Each kind also carried a default base URL, which the editor printed
as the Base URL placeholder, so `api.openai.com` was on screen for anyone
who had added a provider and typed nothing, and a provider with a key but no
address quietly resolved to a vendor endpoint nobody had named.

The picker now names the protocol: Automatic, Chat Completions, Responses,
Messages, generateContent. Automatic reads the protocol off the URL's own
suffix and falls back to Chat Completions when nothing matches, which is
what an endpoint that does not name itself is almost always serving.

Base URL and API Path collapse into one field. Splitting them made "does the
base URL include /v1" a question the user had to answer, and it is the
question every client of this shape gets wrong. Paste whatever the gateway's
documentation printed, at whatever depth it printed it; the two captions
underneath say what that produced — Full URL is read from the same value the
request is built from, and the line under it names the body shape, which is
how Automatic explains its own answer and how an explicit pick that
disagrees with the URL stops being a silent surprise. An explicit pick moves
the format, never the address: the person who pasted it keeps it.

Vertex AI goes with the vendor names. It stays in AgentKit, which is an
independent package and does not carry this app's constraints, but nothing
here drives it any more — the editor's project, location and service-account
import are gone, along with five persisted columns and their Keychain path.

`ProviderEndpoint` holds the two things the editor owns, the typed URL and
the picked type, because neither survives a round trip through the composed
result: a URL ending in /messages looks the same whether it was typed or
appended, and Automatic looks the same as picking the format it resolved to.
`AIConfigurationModel.setEndpoint` is the only writer of the derived
`inferenceURL`, `baseURL` and `apiFormat`.

Old rows fold back to the address they used to resolve to rather than to
Automatic, so a provider that worked before the change points at the same
place after it. That fold needs the pre-V12 columns, which is why `kind`,
`baseURL`, `apiPath` and `usesResponsesAPI` are still declared, and it needs
V11 frozen: every VersionedSchema in the plan points at live model types, so
editing a persisted model rewrites what the old version *means* and leaves
an installed store recording a version the plan no longer contains. That is
a refusal to open, not a migration. `TermindSchemaV11Models` is what gives
V11 to V12 two sides — any future attribute change needs the same freeze.

Requires AgentKit 0.5.0, where `ModelAPIFormat` replaces `ModelProviderKind`
and a provider carries `inferenceURL` and `baseURL` instead of a kind, a
base and a path.

Verified with the full test suite (994 tests, including the new
ProviderEndpointTests), swift-format lint --strict,
Scripts/check-zh-localization.sh, npm run build, and a launch of the app
against an existing V11 store.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-04 11:33:34 +08:00
Kaede Akino 9bd4ac3029 Bump to 1.4.1 2026-09-03 15:19:10 +08:00