Skip to content

Tags: abhay-byte/nativecode

Tags

v1.7.4

Toggle v1.7.4's commit message
feat(terminal): debian proot runtime + xfce chroot installer

Adds a Debian proot runtime alongside the existing Alpine one:

  * core/runtime/Distro enum (Alpine | Debian) parameterises EmbeddedRuntime
    so the same screen works for both. The Alpine rootfs is still bundled in
    assets; the Debian one is downloaded on first use by setup_debian_proot.sh
    (~25 MB from debuerreotype/dist-arm64v8/trixie/minimal/rootfs.tar.xz).

  * ShellSession auto-spawns '/bin/sh -c "exec su - flux"' for Debian so
    the terminal opens as the 'flux' user (uid 1000). setup_debian_proot.sh
    creates that user with passwd -d (empty password) and NOPASSWD sudo.

  * assets/scripts/embedded/setup_debian_proot.sh — single-shot installer
    that downloads, extracts, bind-mounts, and bootstraps the chroot via the
    app's own proot + libtalloc. Idempotent: re-runs are no-ops.

  * assets/scripts/chroot/setup_xfce_chroot.sh — focused XFCE4 installer
    for the Termux-based Debian 13 chroot (apt install xfce4 + goodies,
    user tweaks, generates /data/local/tmp/start_xfce_chroot.sh and stop_…).

  * setup_alpine_embedded.sh now uses 'apk add --no-cache --force-overwrite'
    to suppress the binutils/gcc hardlink-rename warnings on proot bind mounts.

  * New 'Debian GNU/Linux' card on the home screen; tapping it opens the
    terminal screen with distro=Debian. Mirrors the Alpine card layout.

v1.7.3

Toggle v1.7.3's commit message
fix(terminal): unique LazyColumn key — was crashing on duplicate lines

items(output, key = { it.hashCode() }) collided as soon as two
terminal lines had the same text (e.g. a duplicated prompt). Compose
threw IllegalArgumentException('Key was already used') and the app
got kicked to the launcher mid-setup. Switched to itemsIndexed with
the list index as the key — guaranteed unique.

Crash trace from d30a1726 (logcat):
  FATAL EXCEPTION: main
  java.lang.IllegalArgumentException: Key "108068241" was already
    used. If you are using LazyColumn/Row please make sure you
    provide a unique key for each item.
    at androidx.compose.ui.layout.LayoutNodeSubcompositionsState
       .subcompose

v1.7.2

Toggle v1.7.2's commit message
fix(terminal): IME padding — keyboard no longer covers the input row

windowSoftInputMode was unset (defaulting to adjustUnspecified/pan),
so the soft keyboard floated over the TextField and obscured the
bottom of the terminal. Add:

  AndroidManifest: android:windowSoftInputMode="adjustResize"
  EmbeddedRuntimeScreen Column: .imePadding()

Verified on Y5WWBMJVOZSK4HU8: keyboard is up, $ prompt + send button
remain visible above the IME, terminal output reflows above them.

v1.7.1

Toggle v1.7.1's commit message
chore: bump to v1.7.1 (versionCode 10)

v1.7

Toggle v1.7's commit message
chore: bump to v1.7 (versionCode 9)