You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: remove orphaned directories and correct stale documentation (#4267)
* chore: remove orphaned test app, tools, and dead CI scripts
These directories were orphaned when the root Amplify.xcodeproj was deleted
in 937c47e (Feb 2022) and have had no live references since. Every commit
touching them afterwards was a release bump or a repo-wide formatting sweep,
so they were costing maintenance without being built or run.
- AmplifyTestApp/: an iOS app bundle with no .xcodeproj to build it. Its only
mention anywhere was the .swiftlint.yml exclusion list. Its
awsconfiguration.json is not even valid JSON (unterminated string on the
PoolId line), confirming nothing has parsed it in years.
- AmplifyFunctionalTests/: not a target in Package.swift and not run by any
workflow; uncompiled, unrunnable test code.
- AmplifyTools/: 48 files including a nested SPM package and its own
.xcodeproj, never built by CI. Self-declared deprecated in its own README
("will be completely removed in a future release").
Also cleans up the CircleCI leftovers. There has been no .circleci/ config
since 2022, but the directory name survived:
- Deleted pre_start_simulator.sh (untouched since 2019; depends on
CircleCI-only $BASH_ENV and circleci-test-device, so it cannot work on
GitHub Actions).
- Deleted check_api_breakage.sh, superseded by
api-breaking-changes-detection.yml. It had already drifted stale: it
checked 2 modules while api-dump/ tracks 4, so a local run gave a false
pass.
- Renamed CircleciScripts/ to scripts/, keeping the one live script
(jazzy_doc_gen.sh), and updated its three workflow references.
Finally, drops two unreferenced readme-images assets and the now-dangling
.swiftlint.yml exclusions.
Verified: `swift package dump-package` succeeds, `swiftlint` reports zero
errors, and no references to the removed paths remain outside CHANGELOG.md.
* docs: correct stale versions, paths, links, and API signatures
Audited the markdown against the actual repo contents and fixed the claims
that contradict it. Each item below was verified against Package.swift, the
source, or by resolving the URL.
Version and tooling facts:
- CONTRIBUTING.md said Xcode 13.4 minimum; README.md and AGENTS.md say 16.0,
and 13.4 cannot even parse `swift-tools-version:5.9`.
- CONTRIBUTING.md specified a 100-character line limit; SwiftLint enforces 160.
- CONTRIBUTING.md's Tools section listed only Xcode, omitting the SwiftFormat
0.60.1 / SwiftLint 0.54.0 pins and Fastlane that CI actually requires.
- AGENTS.md said 19 test targets (there are 23) and "60+" workflows (70).
Wrong or dead references:
- AWS SDK for Swift linked to github.com/aws-amplify/aws-sdk-swift; the
correct org is awslabs, per Package.swift.
- Six dead CONTRIBUTING.md TOC anchors (off-by-one step links, a
"Running Cocoapods Locally" entry with no target section).
- Four legacy docs.amplify.aws /lib/...q/platform/ios URLs updated to the
paths they now redirect to.
- bug_report.yaml pointed at the old amplify-ios repo and asked Swift users
for an Amplify CLI log; LogsGuidance.md is about Xcode console output.
- ETHOS.md named a nonexistent AWSStoragePlugin (it is AWSS3StoragePlugin).
- AmplifyTests/CoreTests/README.md described an amplifyconfiguration.json
sample that is not in that directory, and predated amplify_outputs.json.
Corrected code and structure claims:
- AmplifyClients/AGENTS.md: KinesisError.unknown has three associated values,
not two; the initializer is `throws`; `record` is `@discardableResult`; the
User-Agent example double-stamped the version, which UserAgentClientEngine
already injects as lib/amplify-swift#<version>.
- AmplifyClients/AGENTS.md: added the missing AmplifyRecordCache layer (used
by Kinesis and Firehose) and corrected the integration-test layout, which
is not co-located per client.
- AmplifyPlugins/AGENTS.md: unit-test directory names vary by plugin, so the
single stated pattern was wrong for most of them. Also removed
`@visibleForTesting`, which is not a Swift attribute and has zero
occurrences in this codebase.
- Amplify/AGENTS.md: named the two actual DefaultPlugins and resolved the
contradiction about Hub needing no plugin.
- Documented that api-dump/ covers only four modules, and distinguished
api-breaking-changes-detection.yml from api_digester_check.yml.
- Documented that SwiftLint's `included:` scope excludes AmplifyClients/,
AmplifyFoundation/, and AmplifyFoundationBridge/, and that the lint
workflows do not run on pull_request.
- Added the footnote the README's visionOS "Preview*" marker was missing, and
noted visionOS is not declared in Package.swift but inherited from iOS.
- Surfaced the Amazon Pinpoint retirement notice (Oct 30, 2026) in README.md
and AmplifyPlugins/AGENTS.md; previously only the migration guide carried
it while the README still listed Analytics as GA with no caveat.
- Fixed a syntax error in both README-combine-support.md samples
(`search(for "coffee")` was missing its colon) and two LogsGuidance.md typos.
* ci: bump checkout pin on lint workflows and drop stale scheme testable
The SwiftLint and SwiftFormat workflows were the only two of 26 still pinned
to actions/checkout v3.5.3, which runs on the deprecated Node 16 runtime.
Bumped both to the v4.1.1 pin the other 24 workflows already use.
Also removed the AmplifyConnectClientIntegrationTests testable from
Amplify-Package.xcscheme. That target does not exist in Package.swift — the
integration tests live in a separate host-app project
(AmplifyClients/AmplifyConnectClient/Tests/ConnectClientHostApp) where the
scheme is named ConnectClientIntegrationTests. This was harmless only because
Amplify-Package is used for `xcodebuild build` and never `test`; it would fail
for anyone invoking the scheme's test action. Verified the scheme is still
valid XML.
-[`AmplifyPlugins/AGENTS.md`](AmplifyPlugins/AGENTS.md) — Plugin implementations: Auth, API, Storage, DataStore, etc.
16
-
-[`AmplifyClients/AGENTS.md`](AmplifyClients/AGENTS.md) — Standalone clients: Foundation, Bridge, Kinesis (new pattern)
16
+
-[`AmplifyClients/AGENTS.md`](AmplifyClients/AGENTS.md) — Standalone clients: Kinesis, Firehose, Connect, EventEnrichment, plus shared RecordCache (new pattern)
17
17
18
18
## Linting & Formatting (MUST pass)
19
19
20
-
**Always run `swiftformat` on changed files before every commit.** CI enforces both formatting and linting — PRs will fail if files are not formatted. See `.swiftlint.yml` and `.swiftformat` for full rules.
20
+
**Always run `swiftformat` on changed files before every commit.** The SwiftFormat and SwiftLint workflows run on pushes to non-default branches (not on `pull_request`), so format locally rather than relying on a PR check to catch it. See `.swiftlint.yml` and `.swiftformat` for full rules.
21
+
22
+
Note that `.swiftlint.yml` only lints `Amplify/` and `AmplifyPlugins/` — `AmplifyClients/`, `AmplifyFoundation/`, and `AmplifyFoundationBridge/` are outside SwiftLint's `included:` scope, though SwiftFormat covers the whole repo.
21
23
22
24
```bash
23
25
swiftformat <changed-files># Format changed files before committing
No period at end. One feature/bugfix per PR. Reference issues: `fixes #<issue>`.
90
92
@@ -95,7 +97,7 @@ swift test # All unit tests
95
97
swift test --filter AWSCognitoAuthPluginUnitTests # Specific target
96
98
```
97
99
98
-
-**Unit tests**: XCTest, defined in Package.swift (19 test targets)
100
+
-**Unit tests**: XCTest, defined in Package.swift (23 test targets)
99
101
-**Integration tests**: Xcode host app projects under `AmplifyPlugins/<Category>/Tests/<Category>HostApp/`
100
102
-**Conventions**: Mock via behavior protocols, use `AmplifyTestCommon` for shared utilities, `AmplifyAsyncTesting` for async helpers
101
103
-**Test documentation**: Use Given/When/Then doc comments on all test methods:
@@ -114,11 +116,11 @@ swift test --filter AWSCognitoAuthPluginUnitTests # Specific target
114
116
115
117
## Semver
116
118
117
-
New enum cases = **minor** bump. Breaking API changes = **major** (rare, needs approval). API surface tracked via `api-dump/` JSON snapshots and CI checks.
119
+
New enum cases = **minor** bump. Breaking API changes = **major** (rare, needs approval). API surface tracked via `api-dump/` JSON snapshots and CI checks, currently covering four modules only: `Amplify`, `AWSPluginsCore`, `AWSDataStorePlugin`, and `CoreMLPredictionsPlugin`.
118
120
119
121
## CI/CD
120
122
121
-
60+ GitHub Actions workflows in `.github/workflows/`: per-category unit tests (`unit_test_*.yml`), integration tests (`integ_test_*.yml`), platform builds, SwiftLint/SwiftFormat checks, API digester, CodeQL, Fortify. Releases via Fastlane.
123
+
70 GitHub Actions workflows in `.github/workflows/`: per-category unit tests (`unit_test_*.yml`), integration tests (`integ_test_*.yml`), platform builds, SwiftLint/SwiftFormat checks, API digester, CodeQL, Fortify. Releases via Fastlane.
├── DefaultPlugins/ # AWSHubPlugin and AWSUnifiedLoggingPlugin (registered automatically)
51
51
└── DevMenu/ # Developer debug menu
52
52
```
53
53
@@ -107,7 +107,7 @@ let token = Amplify.Hub.listen(to: .auth) { payload in ... }
107
107
108
108
## API Surface Stability
109
109
110
-
API dumps in `api-dump/*.json` track the public surface. Breaking changes detected by CI (`api_digester_check.yml`). New enum cases = minor bump; removing/renaming public APIs = major bump (needs approval).
110
+
API dumps in `api-dump/*.json` track the public surface of four modules (`Amplify`, `AWSPluginsCore`, `AWSDataStorePlugin`, `CoreMLPredictionsPlugin`). Breaking changes detected by CI (`api-breaking-changes-detection.yml`; `api_digester_check.yml` separately verifies the digester tool itself against the `api-dump-test/` fixtures). New enum cases = minor bump; removing/renaming public APIs = major bump (needs approval).
0 commit comments