Native macOS and iOS clients for Crumble and the Swift package they share.
flowchart LR
Contract["bot contract\n(apfelkern/Contract)"] --> Apfelkern["apfelkern\nGenerated client, models, delivery & BotAvatar"]
Apfelkern --> macOS["macos\nCrumble for macOS"]
Apfelkern --> iOS["ios\nCrumble for iOS & iPadOS"]
| Directory | Contents |
|---|---|
apfelkern |
Shared Swift package: generated OpenAPI/SSE client, domain models, delivery state, and BotAvatar (avatars on Open Bot Avatar). |
macos |
Crumble for macOS (SwiftUI package). |
ios |
Crumble for iOS and iPadOS (Xcode project). |
Both apps depend on ../apfelkern by path, so shared changes build and test with both apps in the same pull request.
Workflows in .github/workflows run only when their directory or apfelkern changes:
apfelkern.yml: verifies the generated client, builds, tests, and lintsapfelkern.macos.yml: runsswift testandswiftlintfor the macOS app.ios.yml: builds the unsigned iOS app and test targets and runsswiftlint(simulator tests run locally).
The canonical glossary is bot/GLOSSARY.md.
Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only). Third-party components retain their respective licenses.