Design system Compose (kotlin/functions/ui, modulo Gradle `fn.compose:ui`):
- FnTokens + FnTheme con la paleta heredada al hex de cpp/DESIGN_SYSTEM.md
(Mantine v9 dark + indigo), identica a la web @fn_library y a las apps C++.
- 26 componentes Compose (Layout/Display/Inputs/Feedback/Data/Charts) +
FnTheme + FnTokens registrados en el registry (28 entradas kind=component
lang=kt domain=ui), descubribles via fn_search. Habilitan init_kotlin_app.
Recuperacion: el commit cb6d9e6 habia anadido `kotlin/functions/ui/` al
.gitignore, por eso el design system nunca se versiono y se perdio del working
tree. Des-ignorado; el .gitignore interno del modulo ya excluye
build/.gradle/local.properties. La gallery (apps/gallery_kt) se recupero del
sub-repo Gitea y sus 27 componentes se reconstruyeron con su MainActivity como
contrato exacto.
Toolbelt Android Linux-first (antes asumia WSL2 + Windows):
- adb_wsl 1.1.0, android_emulator_start 1.1.0, android_emulator_list 1.1.0:
resuelven adb/emulator nativos del SDK ($ANDROID_HOME), .exe solo fallback WSL2.
- android_emulator_start: fix `timeout adb_run wait-for-device` (timeout no puede
ejecutar una funcion del shell; ahora invoca el binario $ADB directamente).
- install_android_sdk 1.0.1: fix licencias bajo pipefail (SIGPIPE de `yes`) +
trap EXIT con variable unbound.
- docs/capabilities/android.md regenerado Linux-first + seccion design system.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.2 KiB
name, kind, lang, domain, version, purity, signature, description, tags, params, output, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | params | output | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| adb_wsl | function | bash | infra | 1.1.0 | impure | source adb_wsl.sh [ADB=<path>] [ANDROID_HOME=<sdk_root>] | Wrapper sourceable para resolver e invocar adb. Linux-first: usa el adb nativo del Android SDK ($ANDROID_HOME) o del PATH; fallback a adb.exe solo si detecta WSL2. Expone adb_run, adb_devices, adb_pick_serial, adb_s, adb_wait_boot. |
|
|
Source-able shell helpers: adb_run, adb_devices, adb_pick_serial, adb_s, adb_wait_boot, adb_wsl_to_win. Resuelve y fija la env var ADB al binario adb disponible. | false | error_go_core | false | bash/functions/infra/adb_wsl.sh |
Cuando usarla
Sourcéala como capa base de cualquier script que hable con un device o emulador Android via adb. Es la dependencia comun de todo el toolbelt android del registry (android_screenshot, android_input_*, android_logcat, android_app_*, android_push/pull). En Linux nativo resuelve el adb del SDK automaticamente; no hace falta configurar nada si ANDROID_HOME esta exportado (o adb esta en el PATH).
Ejemplo
# Linux nativo: con el SDK instalado y ANDROID_HOME exportado, resuelve solo.
source ~/android-sdk/env.sh
source bash/functions/infra/adb_wsl.sh
adb_devices
# List of devices attached
# emulator-5554 device
# Fijar binario adb explicito (override)
ADB=/opt/android/platform-tools/adb source bash/functions/infra/adb_wsl.sh
# Smoke test
bash bash/functions/infra/adb_wsl.sh --self-test
# Android Debug Bridge version 1.0.41
Funciones expuestas
adb_run "<args...>"
Ejecuta $ADB con los argumentos dados. Retorna el exit code de adb.
adb_run shell ls /sdcard/
adb_run install app.apk
adb_devices
Alias de adb_run devices. Lista dispositivos/emuladores conectados.
adb_pick_serial [--serial <S>] [...]
Resuelve el serial a usar (multi-device). Lee --serial X de los args y setea los globals ADB_PICK_SERIAL y ADB_PICK_REST. Si no se pasa, autoselecciona el primer device/emulador conectado.
adb_pick_serial "$@" || { echo "no device" >&2; exit 3; }
serial="$ADB_PICK_SERIAL"; set -- "${ADB_PICK_REST[@]}"
adb_s <serial> <args...>
Atajo de adb_run -s <serial> <args...> para multi-device.
adb_wait_boot [timeout_s]
Espera a que el emulador/dispositivo complete el boot (sys.boot_completed = 1). Polling cada 3s. Retorna 0 si bootó, 1 si timeout (default 120s).
adb_wsl_to_win <path_wsl>
Legacy WSL: convierte path WSL→Windows con wslpath -w. En Linux nativo (sin wslpath) devuelve el path tal cual.
Gotchas
- Linux-first. El default ya NO es Windows. Resolucion:
$ADB→$ANDROID_HOME/platform-tools/adb→adbdel PATH → (solo si/proc/versionindica WSL2)adb.exe. En un PC Linux con el SDK instalado funciona sin configurar nada. - Necesita el SDK o adb en PATH. Si no encuentra adb aborta con mensaje a stderr. Instala con
fn run install_android_sdk_bash_infray exportaANDROID_HOME(osource ~/android-sdk/env.sh). ADBse resuelve una sola vez al sourcing. Cambiar el SDK despues requiere re-sourcear.- Sourcéala con bash, no zsh. Los consumidores usan
${BASH_SOURCE[0]}para localizar este archivo; ejecutarlos conbash <file>(nozsh/sourcedesde zsh) resuelve el path correctamente.
Capability growth log
- v1.1.0 (2026-06-03) — Linux-first: la resolucion de adb ahora prioriza el adb nativo del SDK (
$ANDROID_HOME/platform-tools/adb) y del PATH; el adb.exe de Windows queda como fallback legacy solo bajo WSL2. Se elimina el default hardcodeado/mnt/c/Users/lucas/.... Todo el toolbelt android (~20 funciones) pasa a funcionar en Linux nativo sin preexportarADB.