name: Release Build on: push: tags: - 'v*.*.*' workflow_dispatch: inputs: version: description: 'Version number (e.g., 1.0.0)' required: true type: string jobs: release: runs-on: ubuntu-latest permissions: contents: write steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: gradle - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build release APK run: ./gradlew assembleRelease --no-daemon - name: Sign APK if: env.KEYSTORE_FILE != '' env: KEYSTORE_FILE: ${{ secrets.KEYSTORE_FILE }} KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} KEY_ALIAS: ${{ secrets.KEY_ALIAS }} KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} run: | echo "Signing would happen here with keystore" # Actual signing requires keystore setup - name: Get version id: version run: | if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then echo "VERSION=${{ inputs.version }}" >> $GITHUB_OUTPUT else echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT fi - name: Create Release uses: softprops/action-gh-release@v1 with: name: OmniKey v${{ steps.version.outputs.VERSION }} tag_name: v${{ steps.version.outputs.VERSION }} draft: false prerelease: true generate_release_notes: true body: | ## OmniKey v${{ steps.version.outputs.VERSION }} ### ⚠️ Pre-Release Notice This is a **backend-only release**. The keyboard service and all engines are functional, but the UI layer (KeyboardView, Settings screens) is not yet implemented. ### What's Included - ✅ Complete InputMethodService implementation - ✅ 11 specialized engines (Prediction, Swipe, Code, Writer, etc.) - ✅ 50+ user preferences with DataStore - ✅ 9 Room database entities - ✅ ML Kit integration - ✅ 10 built-in themes - ✅ Full gesture system ### What's Missing - ❌ KeyboardView rendering - ❌ Settings UI screens - ❌ Theme editor - ❌ Emoji picker ### For Developers This release is perfect for: - Learning Android keyboard architecture - Contributing UI implementation - Forking for custom keyboards - Studying production Kotlin code See `IMPLEMENTATION_STATUS.md` for details. ### Installation 1. Download `omnikey-release.apk` 2. Install on Android device 3. Enable in Settings → System → Languages & Input 4. Currently shows blank keyboard (UI not implemented) ### Next Release - [ ] KeyboardView implementation - [ ] Basic settings UI - [ ] Theme selector - [ ] Clipboard UI files: | app/build/outputs/apk/release/*.apk README.md FEATURES.md IMPLEMENTATION_STATUS.md - name: Upload to Play Store (Future) if: false run: | echo "Play Store upload would happen here" # Requires Play Store API setup