feat(keyboard): ship AI hint carousel, home library cards, and clipboard polish
Rotate AI idle suggestions with optional remote packs, move history/dictionary onto self-sizing Home preview cards, harden clipboard capture/prompting, and simplify keyboard chrome by dropping most liquid-glass shadows.
This commit is contained in:
+19
-11
@@ -1,6 +1,10 @@
|
||||
# Contributing to OSGKeyboard
|
||||
|
||||
Thanks for your interest! OSGKeyboard is a small, opinionated iOS app. We welcome bug reports, feature ideas, and pull requests — please read this guide first.
|
||||
Thanks for your interest! OSGKeyboard is a Swift 6 app for iOS/iPadOS 26+ and macOS 15+. We welcome bug reports, feature ideas, and pull requests — please read this guide first.
|
||||
|
||||
## License
|
||||
|
||||
OSGKeyboard is source available, not open source. By contributing, you agree to the contribution terms in [`LICENSE`](LICENSE). The license permits personal, non-commercial local builds but does not permit unauthorized redistribution or public derivative versions.
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
@@ -10,7 +14,7 @@ This project follows the [Contributor Covenant](https://www.contributor-covenant
|
||||
|
||||
Open an issue using the **Bug report** template. Please include:
|
||||
|
||||
- iOS version + device model
|
||||
- OS version + device model (iPhone, iPad, or Apple-silicon Mac)
|
||||
- Xcode version (run `xcodebuild -version`)
|
||||
- Steps to reproduce
|
||||
- Relevant logs (Console.app filtered to `OSGKeyboard`)
|
||||
@@ -29,8 +33,9 @@ Open an issue using the **Feature request** template. Briefly describe:
|
||||
2. **Generate the project locally:**
|
||||
```bash
|
||||
brew install xcodegen swiftlint
|
||||
xcodegen generate # or: ./Scripts/generate-xcodeproj.sh
|
||||
./Scripts/generate-xcodeproj.sh
|
||||
```
|
||||
Building requires macOS with Xcode 26. `project.yml` is the project source of truth.
|
||||
3. **Code style.** SwiftLint config lives in `.swiftlint.yml` — keep it green. We use Swift 6 strict concurrency, no `Sendable` shims where avoidable.
|
||||
4. **Tests.** Add XCTest coverage under `OSGKeyboardTests/` (or Ext/Mac targets) for any non-trivial logic, and register the class in **exactly one** group in `Tests/suite-manifest.json`. See [`docs/TESTING.md`](docs/TESTING.md).
|
||||
5. **Build & test before pushing:**
|
||||
@@ -44,14 +49,17 @@ Open an issue using the **Feature request** template. Briefly describe:
|
||||
## Project structure
|
||||
|
||||
```
|
||||
OSGKeyboard/ Main iOS app target
|
||||
OSGKeyboardExt/ Custom Keyboard Extension target
|
||||
OSGKeyboardShared/ Framework shared by app + extension
|
||||
OSGKeyboardTests/ XCTest unit tests (host / shared)
|
||||
OSGKeyboard/ Main iOS/iPadOS app target and host resources
|
||||
OSGKeyboardExt/ Custom Keyboard Extension target
|
||||
OSGKeyboardShared/ Lightweight app/extension shared framework
|
||||
OSGKeyboardHostSupport/ Host-only ASR, cloud, CLM, charts, and StoreKit
|
||||
OSGKeyboardMac/ macOS menu-bar app; Qwen3 MLX local ASR
|
||||
OSGKeyboardTests/ XCTest unit tests (host / shared)
|
||||
OSGKeyboardExtTests/ Keyboard / typing XCTest
|
||||
Tests/ Suite manifest (grouped presets — see docs/TESTING.md)
|
||||
project.yml XcodeGen project definition (source of truth)
|
||||
.github/workflows/ CI
|
||||
OSGKeyboardMacTests/ Mac XCTest
|
||||
Tests/ Suite manifest (grouped presets — see docs/TESTING.md)
|
||||
project.yml XcodeGen definition; version/build source of truth
|
||||
.github/workflows/ CI
|
||||
```
|
||||
|
||||
## Adding a new LLM provider
|
||||
@@ -68,4 +76,4 @@ The simplest contribution: add a preset to `OSGKeyboardShared/Models/LLMProvider
|
||||
|
||||
## Releasing
|
||||
|
||||
Maintainers cut releases from `main` via GitHub Releases. The release tag follows `vX.Y.Z`. CHANGELOG.md is updated as part of the release PR.
|
||||
Maintainers cut releases from `main`. The marketing version and monotonic build number live in `project.yml`; `CHANGELOG.md` is updated as part of the release PR. Do not infer the current Mac binary version from the historical download URL in the README.
|
||||
|
||||
Reference in New Issue
Block a user