From 9e14b1717d9b11282ab7c908f7a80f83aacff019 Mon Sep 17 00:00:00 2001 From: everestmcarthur Date: Fri, 21 Aug 2026 07:49:07 -0400 Subject: [PATCH] Add Forgejo Actions workflow (copied from .github/workflows/release.yml) --- .forgejo/workflows/release.yml | 116 +++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 .forgejo/workflows/release.yml diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml new file mode 100644 index 0000000..061fdc2 --- /dev/null +++ b/.forgejo/workflows/release.yml @@ -0,0 +1,116 @@ +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