Android APK: all-features jsh, biometric unlock, and touch mux window selector #92

Open
opened 2026-09-21 20:10:34 -04:00 by ober · 0 comments
Owner

Request

Build a standalone Android APK for jsh with a polished, phone-friendly interface that is easier to work with than Termux. It must run the real local shell with all features, without requiring Termux or a remote shell.

Required behavior

  • make features-all followed by make android builds an installable APK; document its exact path, prerequisites, installation, and signing. Preserve a documented target for the existing raw Android executable.
  • Provide a responsive terminal, working soft keyboard/IME, scrolling, selection/copy/paste, and accessible touch controls for common terminal keys. Preserve running sessions across rotation and normal background/foreground transitions.
  • Make ,unlock simple on the phone: use Android system biometrics to unlock the encrypted jsh embed after explicit enrollment with the existing passphrase. An Unlock button and typed ,unlock use the same secure flow. Cancellation/failure stays locked; keep passphrase recovery for unavailable/invalidated biometrics. Do not store plaintext passphrases or turn authentication into an unconditional unlock bypass.
  • At the top, show a tappable window selector with the active ,mux window number and label. Open a scrollable dropdown containing every window's number and label; tap a row to jump immediately to that existing window. Reflect create, close, rename, and shell-side window switches without stale selections.
  • Android app logic must be typed Jerboa compiled through jerboa-android under its full-kotlin.md plan. Extend that compiler/DSL when necessary. Never embed Kotlin/Java source text in .ss files.

Completion evidence

Build and install the APK on a physical arm64 Android phone without Termux. Exercise every enabled feature or record explicit Android platform limits without silently disabling features. Demonstrate biometric success/cancel/failure/recovery, terminal input and lifecycle behavior, and selecting/renaming/closing mux windows while the dropdown is open. Add automated regression coverage and reproducible build/install instructions.

Implementation handoff attached: android-apk-handoff.md. It contains commit-pinned file/function/line anchors, new-file contracts, ordered steps, and acceptance tests. This issue requests implementation; the documentation pull request will not close it.

## Request Build a standalone Android APK for jsh with a polished, phone-friendly interface that is easier to work with than Termux. It must run the real local shell with **all features**, without requiring Termux or a remote shell. ## Required behavior - `make features-all` followed by `make android` builds an installable APK; document its exact path, prerequisites, installation, and signing. Preserve a documented target for the existing raw Android executable. - Provide a responsive terminal, working soft keyboard/IME, scrolling, selection/copy/paste, and accessible touch controls for common terminal keys. Preserve running sessions across rotation and normal background/foreground transitions. - Make `,unlock` simple on the phone: use Android system biometrics to unlock the encrypted jsh embed after explicit enrollment with the existing passphrase. An Unlock button and typed `,unlock` use the same secure flow. Cancellation/failure stays locked; keep passphrase recovery for unavailable/invalidated biometrics. Do not store plaintext passphrases or turn authentication into an unconditional unlock bypass. - At the top, show a tappable window selector with the active `,mux` window number and label. Open a scrollable dropdown containing every window's number and label; tap a row to jump immediately to that existing window. Reflect create, close, rename, and shell-side window switches without stale selections. - Android app logic must be typed Jerboa compiled through `jerboa-android` under its `full-kotlin.md` plan. Extend that compiler/DSL when necessary. Never embed Kotlin/Java source text in `.ss` files. ## Completion evidence Build and install the APK on a physical arm64 Android phone without Termux. Exercise every enabled feature or record explicit Android platform limits without silently disabling features. Demonstrate biometric success/cancel/failure/recovery, terminal input and lifecycle behavior, and selecting/renaming/closing mux windows while the dropdown is open. Add automated regression coverage and reproducible build/install instructions. Implementation handoff attached: [android-apk-handoff.md](https://git.jerboa.sh/attachments/20d37161-3e8f-4e7c-8df3-ed91b7a45d1a). It contains commit-pinned file/function/line anchors, new-file contracts, ordered steps, and acceptance tests. This issue requests implementation; the documentation pull request will not close it.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ober/jerboa-shell#92
No description provided.