Releases: jamditis/keyjawn
v1.3.0 - Google Play launch, iOS beta
What's new
KeyJawn lite is now on Google Play
The lite version is available on the Google Play Store. CI automatically publishes new releases to the internal testing track. No more manual APK uploads. The full version stays on the website via Stripe — Play Store gets lite only.
iOS beta is live on TestFlight
The iOS version is a standalone terminal app, not just a keyboard extension. It includes a built-in SSH client (SwiftTerm + SwiftNIO SSH via Citadel) so you can connect directly to your servers without another app. A companion keyboard extension adds Esc, Tab, Ctrl, arrows, and slash commands to any iOS app.
Features in the iOS beta:
- Host management: add servers by hostname, port, username, and optional host key pinning
- SSH terminal with full PTY support (xterm-256color, resize-aware)
- Password auth or Ed25519 key auth (key stored in Keychain, public key shown in Settings → SSH keys)
- Keyboard extension: QWERTY + extra row with Esc, Tab, Ctrl, arrows, clipboard, slash command panel
- Settings: SSH keys, haptic feedback, autocorrect, theme (dark/light/OLED/terminal)
TestFlight invite coming soon. App Store launch pending final review completion.
Social media automation worker
Autonomous marketing agent (worker/) monitors Twitter, Bluesky, and Product Hunt for relevant conversations, curates content from RSS/YouTube/News, and routes engagement opportunities through Telegram for approval before posting. Not user-facing but keeps updates coming.
Downloads
| File | Description |
|---|---|
app-lite-release.apk |
Free version (sideload) |
app-lite-release.aab |
Free version (Play Store bundle) |
| Full version | Available via keyjawn.amditis.tech ($4, one-time) |
Full changelog: v1.2.1...v1.3.0
v1.2.1 - Fix keyboard hiding in terminal apps
What's new
Fix keyboard hiding when opening pickers in terminal apps
Terminal emulators like Termius, Termux, and ConnectBot aggressively manage their IME connection. When the custom key picker or menu panel opened, the overlay ScrollView would steal focus from the keyboard's input path. The terminal app interpreted this as the IME going inactive and dismissed it. Once hidden, there was no way to bring the keyboard back without switching apps.
The fix blocks focus on overlay panels (menu and clipboard) so they never pull focus away from the IME, and dismisses any open panels when the system hides the keyboard window. Touch events (tapping picker options, dragging the bottom padding slider) still work normally.
Downloads
| File | Description |
|---|---|
app-lite-release.apk |
Free version (GitHub) |
| Full version | Available via keyjawn.amditis.tech ($4, includes all features) |
Full changelog: v1.2.0...v1.2.1
v1.2.0 - Adjustable keyboard position and themed settings
What's new
Adjustable bottom padding
A slider in the menu panel (0-64dp) lets you position the keyboard wherever works for your phone. If you use gesture navigation and the keyboard sits too low, slide it up. If the old hardcoded padding was pushing it too high, set it to zero. Replaces the one-size-fits-all gesture nav padding from v1.0.2.
Theme-aware settings page
The settings activity now follows your chosen keyboard theme instead of always being dark. Sections are grouped into rounded cards with dividers between them, headers label each group, and buttons are styled with accent colors. Touch targets are larger (52dp rows). Switching themes in the picker updates the settings page colors immediately.
Expanded test coverage
17 new unit tests covering bottom padding preferences, menu panel slider behavior, settings layout structure, and theme color application across all four themes. Total: 262 tests.
Downloads
| File | Description |
|---|---|
app-lite-release.apk |
Free version (GitHub) |
| Full version | Available via keyjawn.amditis.tech ($4, includes all features) |
Full changelog: v1.1.0...v1.2.0
v1.1.0 - Key UX improvements
What's new
Key press preview
A small bubble appears above each key when you tap it, showing the character with a bounce animation. Works on all letter, number, and symbol keys across every layer. Fades out when you release.
Wider spacebar
The period key is removed from the bottom row and the spacebar is widened from 3.5x to 4.5x weight. Period is still available on the symbols layer and as a quick key option.
Configurable extra row
The three left slots in the extra row (ESC, Tab, Ctrl by default) are now customizable. Long-press any of them to open a picker, or configure them in Settings. Options include system keys (Home, End, PgUp, PgDn, Insert, Delete) and text characters (|, ~, `, ). Ctrl keeps its three-state behavior regardless of which slot it occupies.
Expanded quick key
The quick key picker now offers 24 terminal characters (/, ., ,, ?, !, --, ', ", :, ;, |, ~, `, , @, #, $, _, &, -, +, =, ^, %) plus a custom text option (up to 8 characters). Also configurable in Settings.
Key mapping moved to long-press pickers and Settings
Key mapping configuration moved from the menu panel to long-press pickers on the keys themselves and a dedicated section in the Settings activity.
Downloads
| File | Description |
|---|---|
app-lite-release.apk |
Free version (GitHub) |
| Full version | Available via keyjawn.amditis.tech ($4, includes all features) |
Full changelog: v1.0.2...v1.1.0
v1.0.2 - Gesture nav support, lint, and test coverage
What's new
Gesture navigation support
The keyboard now detects phones using gesture navigation (the swipe bar instead of 3-button nav) and adds bottom padding so keys don't overlap with the system IME icons. Includes a fallback for API 30+ where insets may not fire in the IME window context. No change on 3-button nav devices.
Android Lint in CI
Lint now runs on every build and PR for both flavors. NewApi and MissingPermission are fatal — if someone accidentally calls an API without a version guard or forgets a permission declaration, the build fails. A baseline file captures existing warnings so they don't block development.
Expanded test coverage
57 new unit tests across 5 test files:
- AltKeyMappings — accented character mappings, number-to-symbol shifts, uppercase derivation
- ThemeManager — persistence, distinct colors per theme, OLED pure black, invalid theme fallback
- ExtraRowManager — ctrl state wiring, esc/tab key event dispatch, layout button existence
- NumberRowManager — digit sends, long-press shifted symbols
- MenuPanel — show/hide/toggle, list population, lite flavor upgrade tooltip
Total test count: 214 (up from 157).
Downloads
| File | Description |
|---|---|
app-lite-release.apk |
Free version (GitHub) |
| Full version | Available via keyjawn.amditis.tech ($4, includes all features) |
Full changelog: v1.0.1...v1.0.2
v1.0.1 - Bug fixes for feature gating and downloads
What's fixed
Feature gating now uses build flavor, not billing state
Settings features (themes, clipboard pinning, tooltip toggle) are now correctly gated on BuildConfig.FLAVOR == "full" instead of checking billing state. This means free/full feature boundaries are enforced at build time — no false feature availability.
R2 download URLs include Content-Disposition header
Presigned download URLs from the store now include a Content-Disposition: attachment header, so browsers download the APK file directly instead of trying to render it.
Downloads
| File | Description |
|---|---|
app-lite-release.apk |
Free version (GitHub) |
| Full version | Available via keyjawn.amditis.tech ($4, includes all features) |
Full Changelog: v1.0.0...v1.0.1
v1.0.0 - Menu panel, clipboard pinning, free feature expansion
What's new
Menu panel
The upload button now opens a menu panel overlay with quick access to:
- SCP upload (full version)
- Theme picker (full version)
- Settings
- Toggle switches for haptic feedback, autocorrect, and tooltips
Clipboard pinning (full version)
Pin frequently used clipboard items so they persist across sessions. Pinned items stay at the top of the clipboard panel. Up to 15 pins, 30 history items.
Inline panels
Clipboard history and menu now render as inline overlays within the keyboard, replacing the old floating popup windows. Smoother UX, better visual integration.
Tooltip system
All toast messages replaced with inline tooltip hints that temporarily replace the extra row. Dismisses automatically after 1.5s. Can be disabled in settings (full version).
More features now free
Voice input, clipboard history, slash commands (built-in sets), swipe gestures, and per-app autocorrect are now included in the free version.
Full version now includes
SCP upload, color themes (4 presets), clipboard pinning, custom slash command sets, tooltip toggle, and the menu panel's advanced options.
Downloads
| File | Description | Size |
|---|---|---|
app-full-release.apk |
Full version (all features) | 4.1 MB |
app-lite-release.apk |
Free version | 2.9 MB |
Install: adb install app-full-release.apk or open the APK on your Android device.
v0.1.1 - Security hardening
Security and bug fixes
Bug fixes
- Shift key text duplication -- typing while shift was active could cause mass text duplication. Fixed by deferring the layer switch after character commit.
Security hardening
- TOFU host key verification -- SSH connections now use trust-on-first-use: new host keys are accepted and stored, but changed keys (possible MITM) are rejected.
- Command injection prevention -- replaced shell
execfor remote directory creation with SFTP channel. Remote paths are now shell-escaped. - Disabled Android backup --
android:allowBackup="false"prevents SSH credentials from leaking into cloud backups.
Improvements
- Password auth for SSH hosts -- you can now configure password-based SSH authentication in addition to key-based auth.
- Correct image file extensions -- uploaded images now preserve their actual format (JPEG, WebP, GIF) instead of always using
.png.
Downloads
- keyjawn-full -- SCP upload, themes, custom commands, all features
- keyjawn-lite -- no network permissions, no SCP
v0.1.0 -- first release
KeyJawn v0.1.0
A custom Android keyboard for terminal and AI CLI usage. Built for people who SSH into servers from their phones to use Claude Code, OpenClaw, Gemini CLI, and other AI tools.
Downloads
| File | Package | Description |
|---|---|---|
keyjawn-full-v0.1.0.apk |
com.keyjawn |
Full version with all features. Same as the Google Play build. |
keyjawn-lite-v0.1.0.apk |
com.keyjawn.lite |
Lite sideload build. Free features only, no network permissions. |
What's included
Free (both versions)
- QWERTY keyboard with three layers (lowercase, uppercase, symbols)
- Two symbol pages with Samsung/Gboard-style layout
- Terminal key row: Esc, Tab, Ctrl (three-state toggle), arrow keys
- Number row with long-press shifted symbols
- Alt character popups on long-press
- Configurable quick key (bottom row, defaults to
/) - Color-coded extra row keys
- Shift / caps lock with visual state indicator
- Haptic feedback (toggleable in settings)
- Comma and period flanking the spacebar
- No ads. No tracking. Ever.
Premium ($3.99 one-time in-app purchase, full version only)
- Voice input with streaming transcription
- Clipboard history manager
- SCP image upload to remote SSH servers
- Multi-host SSH management with encrypted credentials (AES-256)
- Slash command shortcuts for LLM CLIs
- Custom slash command sets
- Keyboard color themes (Dark, Light, OLED black, Terminal)
- Swipe gestures (delete word, space, layer switching)
- Per-app autocorrect toggle
Install
- Download the APK above (or install from Google Play)
- Open the APK on your phone, or install via ADB:
adb install keyjawn-full-v0.1.0.apk - Go to Settings > System > Languages & input > On-screen keyboard
- Enable KeyJawn
- Set KeyJawn as your default keyboard
Requirements
- Android 8.0+ (API 26)
- Full version requires INTERNET, READ_MEDIA_IMAGES, and RECORD_AUDIO permissions
- Lite version requires RECORD_AUDIO only
