chore: remove maintenance submodules

This commit is contained in:
Kaede Akino committed 2026-10-19 10:53:42 +08:00
1 parent 11e6c7ca1c
commit eb4568c20e
5 files changed
+4 -35

No files matched your search

-11
View File
@@ -1,14 +1,3 @@
[submodule "AgentKit"]
path = AgentKit
url = https://github.com/AkinoKaede/AgentKit.git
[submodule "libssh2-spm"]
path = libssh2-spm
url = https://github.com/AkinoKaede/libssh2-spm.git
branch = termind
[submodule "libtailscale-spm"]
path = libtailscale-spm
url = https://github.com/AkinoKaede/libtailscale-spm.git
branch = main
[submodule "com.akinokaede.termind"]
path = com.akinokaede.termind
url = https://github.com/AkinoKaede/com.akinokaede.termind.git
+4 -21
View File
@@ -20,9 +20,7 @@ and screenshot tooling stay in the main repository; see
Commit and push asset changes via SSH before updating the main repository's gitlink;
keep the public HTTPS clone URL in `.gitmodules`.
The agent runtime is `AgentKit`, a separate open-source package developed in the repository-root `AgentKit/` maintenance submodule and consumed as a versioned remote SPM dependency on `github.com/AkinoKaede/AgentKit`, pinned in `Package.resolved`. It owns the loop, the approval gate, the provider adapters, the MCP client, and the built-in tools that know nothing about hosts. Termind owns the SSH/SFTP tools and registers them through `TermindAgentTools`. Never add SSH, SFTP, UI, or the name Termind to that package.
Xcode builds the pinned tag, not the maintenance submodule working tree, so an uncommitted change in `AgentKit/` is invisible to the app. A change that spans both sides takes three steps: make and test the package change, tag and push a release from `AgentKit/`, then bump `minimumVersion` in `project.pbxproj` and re-resolve so `Package.resolved` records the new revision. Update the `AgentKit` maintenance gitlink to the released revision and commit it with both dependency files and the app-side change that needs them.
AgentKit, libssh2-spm, and libtailscale-spm are remote SPM dependencies, not Termind submodules. Xcode consumes the versions pinned in `Package.resolved`; keep the project requirements and resolved pins aligned when updating dependencies. Termind owns the SSH/SFTP tools and registers them through `TermindAgentTools`.
Ghostty is consumed directly from `Lakr233/libghostty-spm` as a remote SPM
dependency with an up-to-next-major version requirement. `Package.resolved`
@@ -31,20 +29,6 @@ submodule. Keep the project requirement and resolved pin aligned when updating.
The package exposes separate iOS `touchMenuItems(for:)` and
`touchSelectionMenuItems(for:)` hooks; grouping and localization belong to Termind.
`libssh2-spm/` is the maintenance checkout of `AkinoKaede/libssh2-spm`,
tracking `termind`. Xcode consumes its remote exact-version package.
`Vendor/libssh2` is a clean submodule of official `libssh2/libssh2`; its gitlink
pins native source. CI exports it into ignored `.build/patched-native`, applies
numbered `Patches/libssh2/` patches, and publishes a checksummed XCFramework.
Never commit full native snapshots or generated patched source files. The
handwritten `Source/Exports.swift` re-exports the binary under the existing
`CSSH2` API. Update the submodule or patches, run `python3 Script/test-source.py` and
native CMake/CTest, then dispatch the package's Release XCFramework workflow.
It builds and tests the Apple platform matrix, publishes the binary, and commits
the manifest URL/checksum and package tag. Update the Termind maintenance gitlink,
Xcode exact version and `Package.resolved` together after release. Keep the
external-signature API and its native regression tests.
## Architecture Records
Treat `openwiki/` as durable just-in-time engineering context. Start with `openwiki/quickstart.md` before changing dependencies, navigation ownership, state lifetimes, persistence, agent execution, permissions, secret handling, or release operations, then follow its topic-specific page to current source and tests. Source code and tests remain authoritative. Refresh invalidated OpenWiki content through the OpenWiki lifecycle and keep `ArchitectureBoundaryTests` aligned; do not maintain a parallel refactoring log.
@@ -53,9 +37,8 @@ Treat `openwiki/` as durable just-in-time engineering context. Start with `openw
- `xcodebuild -project Termind.xcodeproj -scheme TFM -destination 'platform=macOS' -onlyUsePackageVersionsFromResolvedFile build` builds the app, the MCP bridge, and AgentKit. Keep the flag: resolving without it silently bumps pinned dependencies.
- `xcodebuild -project Termind.xcodeproj -scheme TFI -destination 'generic/platform=iOS Simulator' -onlyUsePackageVersionsFromResolvedFile build` builds the mobile app and shared frameworks. Run its tests with an available iPhone or iPad simulator destination.
- `cd AgentKit && swift build && swift test` builds and tests the agent package on its own.
- `xcodebuild -project Termind.xcodeproj -scheme TFM -destination 'platform=macOS' -onlyUsePackageVersionsFromResolvedFile test` runs the default macOS and shared Swift tests. Tests that show windows or take focus are opt-in.
- `xcrun swift-format lint --strict --recursive Frameworks TFM TFI FrameworkTests TFMTests TFITests TermindMCPBridge` checks Swift formatting. AgentKit passes the same command over `Sources Tests` and must keep passing it.
- `xcrun swift-format lint --strict --recursive Frameworks TFM TFI FrameworkTests TFMTests TFITests TermindMCPBridge` checks Swift formatting.
- `cd com.akinokaede.termind && npm ci && npm run dev` installs locked web dependencies and starts Astro locally.
- `cd com.akinokaede.termind && npm run build` type-checks and emits the production site to `com.akinokaede.termind/dist/`.
@@ -93,11 +76,11 @@ and shared modules before removing a key. After editing a catalog, run
and formatting without changing translations. `Scripts/check-localization.py`
also runs the normalizer in read-only `--check` mode. Do not use `jq -S` or a
generic JSON formatter on these files: their whitespace differs from Xcode's.
The normalizer defaults to the two app catalogs and does not touch AgentKit.
The normalizer defaults to the two app catalogs.
Keep `STRING_CATALOG_GENERATE_SYMBOLS = NO`: `AppStrings` owns the Swift API,
and generating symbols for every manual English key introduces naming collisions.
Put user-facing app text in `Frameworks/Resources/Localizable.xcstrings` and bundle metadata in `InfoPlist.xcstrings`. Text owned by the agent runtime lives in `AgentKit/Localizations/Localizable.xcstrings`; after editing it run `AgentKit/Scripts/build-localizations.sh`, because `swift build` copies resources verbatim instead of compiling string catalogs. New or changed English strings require finished `zh-Hans` and `zh-Hant` translations in the same commit. Preserve placeholders and Chinese punctuation conventions. Before committing, run `Scripts/check-localization.py` (requires `jq`); it rejects invalid catalogs, missing or unfinished translations, and spacing errors. Run `AppLanguageTests` for localization behavior changes.
Put user-facing app text in `Frameworks/Resources/Localizable.xcstrings` and bundle metadata in `InfoPlist.xcstrings`. New or changed English strings require finished `zh-Hans` and `zh-Hant` translations in the same commit. Preserve placeholders and Chinese punctuation conventions. Before committing, run `Scripts/check-localization.py` (requires `jq`); it rejects invalid catalogs, missing or unfinished translations, and spacing errors. Run `AppLanguageTests` for localization behavior changes.
## Commit & Pull Request Guidelines
Submodule AgentKit deleted from 75910ae4b9.
Submodule libssh2-spm deleted from 7ca39b8bca.