Terminal: tampilkan soft keyboard + perbaiki scroll & newline

PROBLEM: setelah konek SSH, prompt tidak keluar & keyboard tidak muncul.

FIX (input):
- TerminalView: implementasi InputConnection (BaseInputConnection) jadi soft
  keyboard bisa muncul; onCheckIsTextEditor=true; commitText/key events
  diteruskan ke SSH session (onKeyInput). Handle hardware keyboard: Ctrl+letter
  -> ascii control, Enter/panah/PgUp/PgDn/Home/End/Esc/Tab/Del.
- TerminalController.attach(): hubungkan view.onKeyInput -> engine.write()
- TerminalActivity: requestFocus() + showKeyboard() saat 'Terhubung'.

FIX (render — bug ditemukan via unit test baru):
- TerminalModel.write('\n') kini reset cursorCol=0 (LF berperilaku seperti
  LF+CR). Sebelumnya LF tidak reset kolom sehingga baris lanjutan ditulis di
  posisi salah & scroll ganda terjadi.
- TerminalModel.scrollUp() tidak lagi mengubah cursorRow (pemanggil yang atur).
- Tambah 8+ unit test (TerminalParserTest): prompt shell, CRLF, truecolor SGR,
  erase, scroll, multiline. Semua 10 lulus.

verified: gradle :app:testDebugUnitTest BUILD SUCCESSFUL (10 tests, 0 fail);
gradle :app:assembleDebug BUILD SUCCESSFUL.
This commit is contained in:
2026-08-31 00:20:04 +07:00
parent 1040b19448
commit 2a75f886e4
6 changed files with 243 additions and 3 deletions

View File

@@ -64,4 +64,7 @@ dependencies {
// Coroutines
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.1")
// Unit tests (JVM) — TerminalModel & TerminalParser are pure Kotlin (no Android)
testImplementation("junit:junit:4.13.2")
}