Before / After
v0.8 Current shipping
claude@evo:~/kpmg$ git status
On branch main
nothing to commit, working tree clean
36dp height · bg_edit bg · 44dp min-width · heavy
v0.8 Proposed (this pass) redesign
claude@evo:~/kpmg$ git status
On branch main
nothing to commit, working tree clean
Row 1: 28dp · Row 2: 26dp · flat chip · 2px border · transparent bg
v0.9 Floating-Above-IME Variant
Keybar floats above soft keyboard (v0.9 — design-ahead) v0.9 preview
claude@evo:~/kpmg$ git commit -m "|"
↑ cursor is in input — keyboard is raised
— soft keyboard (IME) —
q
w
e
r
t
y
u
i
o
p
space
Implemented via WindowInsets.ime observer
Bar uses ViewCompat.setOnApplyWindowInsetsListener
v0.9 implementation note: Use ViewCompat.setOnApplyWindowInsetsListener on the bar container. Translate the bar up by insets.ime.bottom px. The bar floats 0dp above the IME top edge. Requires Android API 30+ (WindowInsetsAnimation) for a smooth follow animation. In v0.8, the bar stays fixed at the bottom — keyboard obscures the terminal content below it. The v0.9 float eliminates the obscure issue entirely.
CTRL / ALT Sticky Modifier States
Long-press CTRL or ALT → latches until next key new behavior
CTRL
Default
unpressed
CTRL
Tap-held
(momentary)
CTRL
Sticky
(long-press latch)
+
C
Next key
sends Ctrl+C
CTRL
Auto-releases
after 1 key
Sticky logic: Single tap = momentary (inject key while held). Long-press (400ms) = toggle sticky state. While sticky, CTRL background shows orange tint + orange border. Next character key tap injects the modified key combo and releases sticky. Long-press the latched CTRL again to manually un-latch.
Measurement Comparison
Property v0.8 Current v0.8 Proposed Change
Bar height (Row 1) 36dp + 4dp padding = 40dp total 22dp button + 3dp top + 3dp bottom = 28dp total −12dp
Row 2 (optional) 20dp button + 2dp + 2dp = 24dp total +26dp context optional
Button bg bg_edit (filled, heavy) transparent + 1px border #3E3E42 lighter
Button min-width 44dp 32dp (modifiers: 40dp touch target via padding) denser
Font size 13sp 11sp (Row 1) · 10sp (Row 2) −2sp
Button gap 4dp 2dp denser
Border radius 4dp 2dp terminal-native
CTRL/ALT sticky not implemented long-press 400ms → sticky latch → orange tint new
Separator between groups none 1px × 14dp vertical rule, color #3E3E42 new
Slide-in animation instant show/hide 220ms translateY 100%→0, cubic-bezier(0.35,0.91,0.33,0.97) new
Token Reference
Bar container bg
#2D2D2D (panel2)
Not #252526 — slightly lighter to separate from pane header
Button bg (default)
transparent
Border-only, no fill. Hover: rgba(255,255,255,0.05)
Button border
#3E3E42 (border)
1px solid, 2dp radius
Button text
#CCCCCC (text)
Monospace 11sp, font-family: system monospace → Geist Mono in v0.9
Sticky-active bg
rgba(193,95,60,0.13)
orange-tint token
Sticky-active border
#C15F3C (orange)
1px solid
Sticky-active text
#C15F3C (orange)
Same as border for coherence
Row 2 text
#858585 (muted)
Visually de-emphasized vs Row 1
Row 2 border
rgba(62,62,66,0.5)
Half-opacity border = subtle secondary row
Separator rule
#3E3E42
1px × 14dp, vertically centered in bar
Row 2 (Optional) — Verdict
Include Row 2. For terminal-heavy use (shell scripting, git operations, awk/sed), the second row saves consistent 3-tap sequences. The 26dp height is lightweight enough that it doesn't eat content. Make it user-toggleable via a long-press on the bar handle (the drag affordance at the bar's left edge) — off by default, remembered per-device. Row 2 characters: PgUp PgDn : ; * & $ # ( ) ` !