What's New in v1.1.8
This release ships a fully-featured in-app terminal — inline images, modern escape-sequence support, ligatures, and a top-sheet Quick Settings panel with custom font and theme import — and resolves two long-standing stability bugs (Pixel 10 SIGILL, orphan VM after uninstall).
Terminal — image protocols
- Sixel:
chafa,lsix,img2sixel, lazygit thumbnails, and any tool that emits DCS-Sixel now render inline. Fixed two parser bugs in the upstream fork along the way (the barePa;Pb;Pcqintro and the missing$/-flush triggers). - iTerm2 (OSC 1337):
imgcatand friends just work. - Kitty graphics protocol (
a=T,f=100,t=d,m=0/1,c=,r=): multi-chunk PNG support, used by yazi/lf preview panes andkitty +kitten icat.
Terminal — modern features
- DECSET 2026 synchronized output: the emulator advertises and honors atomic-frame mode, so btop / nvim / lazygit no longer flicker during partial redraws.
- OSC 8 hyperlinks: tap-to-open URLs from
git,gh,lazygit, etc. - HarfBuzz ligatures:
'liga' on, 'calt' onis enabled on the Paint, so JetBrains Mono / FiraCode / Cascadia render===,=>,!=,->as fused glyphs. - XTVERSION (
CSI > 0 q): emulator answers\eP>|Podroid <ver>\e\so Neovim ≥0.10 and other modern apps detect the terminal correctly. COLORTERM=truecoloris now exported from/etc/profile.dinside the VM, so apps detect 24-bit color support without manual configuration.
Quick Settings — minimal top-sheet rewrite
- Drops down from the header in one tap, height-capped so the extra-keys row stays visible in landscape.
- Three-column grid per section: 4 visible swatches + More (full picker with search) + + Add (import).
- Continuous font-size slider, compact toggles for haptics and extra keys.
- Custom fonts:
+ Addopens the system file chooser (SAF). Drop in any.ttfor.otf; long-press a custom font to remove. No file-manager permission gymnastics required. - Custom themes: paste a terminalcolors.com URL and the app fetches the Alacritty TOML, parses it, and adds it to the picker.
Fixes
- Pixel 10 SIGILL on launch: QEMU's coroutine layer used Bionic's
sigsetjmp/siglongjmp, which fail PAC AUTH on ARMv9.2 (Tensor G6) when Downloads sharing is enabled. Replaced with a PAC-free aarch64 asm shim (libqemujmp.a) linked intocoroutine-ucontext.c. - Orphan VM after uninstall / OOM kill: a tiny native launcher (
libpodroid-launcher.so) now wraps QEMU and setsPR_SET_PDEATHSIG = SIGKILLbeforeexecv. The VM dies with the app instead of reparenting to PID 1 and continuing to consume RAM until reboot. Verified on Android 12 (rooted) and Android 16 (unrooted). - Update prompt regression:
1.1.x-debugno longer compares as older than1.1.x, so the in-app update banner stops nagging on every launch. - Cursor flicker on keyboard slide: removed a redundant
forceUpdateSizeFromViewcall that was racing withtv.updateSize()and triggering two SIGWINCH resizes per keyboard animation. - Cursor flicker on extra-keys toggle: cached the last applied font size so flipping CTRL/ALT no longer re-pushes
setTextSize+updateSizeon every recomposition. - dmesg cleanup: 9p
msizelowered to virtio's actual cap (512000); deprecated kernelelevator=cmdline replaced with per-device sysfs writes inpodroid-bootstrap.
Performance (TCG, no KVM)
-cpu max,sve=off: SVE's variable-length vector instructions are expensive to translate and effectively unused by Node, Podman, and most container workloads. Dropping them speeds general guest workloads.tb-size=512: bigger translation-block cache helps JIT-heavy guests like V8/Node.
Internals
- The terminal layer now lives as two local Gradle subprojects (
terminal-emulator,terminal-view) vendored fromMatanZ/termux-app:sixel4, instead of a JitPack AAR. We can patch the parser in-tree. - 64 KB PTY buffers, deduplicated
MSG_NEW_INPUT, and a hoistedRectFreduce wakeups and GC pressure on image-heavy frames.
Installation
Important: Delete any older Podroid app versions before installing.
- Uninstall the existing Podroid app completely
- Download and install the new APK
- You may need to allow installation from unknown sources
Note: This is a debug build as per project convention.