6 Commits

Author SHA1 Message Date
2a75f886e4 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.
2026-08-31 00:20:04 +07:00
1040b19448 perbaikan dari gemini 2026-08-31 00:10:34 +07:00
0d3038f9a9 Logcat: catat exception SSH asli saat koneksi gagal
Tambah Log.e(TAG, ..., e) di catch untuk menampilkan stacktrace / pesan
error sebenarnya (ConnectException, AuthFailException, UnknownHost, dll)
di logcat. Memudahkan diagnosa 'koneksi gagal setelah N percobaan'.
2026-08-30 23:51:13 +07:00
3cbb626d4a Fix error 'could not load known_host' saat koneksi
Di Android tidak ada file known_hosts di path JVM default, sehingga sshj
loadKnownHosts() melempar peringatan 'could not load known_host'. Karena v1
pakai PromiscuousVerifier (accept-all) dengan TODO known_host pinning di backlog,
loadKnownHosts() tidak berguna dan dihapus. Auth password tetap jalan.
2026-08-30 23:34:25 +07:00
e9ded3d17a List profil: swipe-kiri hapus (dengan konfirmasi), swipe-kanan edit
- ItemTouchHelper: swipe kiri -> dialog konfirmasi hapus profil (+kredensial)
- Swipe kanan -> buka ProfileEditorActivity untuk edit
- Item kembali ke posisi semula setelah swipe (hapus menunggu konfirmasi,
  edit pindah ke layar editor)
- ConnectActivity refactor: callback onEdit, helper openEditor(profileId)
2026-08-30 23:27:44 +07:00
c0c6dab473 SSH Mobile Client Android v1.0: terminal interaktif + SSH engine + profil tersimpan
- SSH 2.x via sshj, PTY xterm-256color interaktif
- Terminal emulator self-contained (model + parser ANSI + custom View):
  16/256/TrueColor, cursor, clear, scrollback, seleksi+copas, pinch-zoom
- SSH engine: auth password/private-key, reconnect dengan backoff, keep-alive 60s
- Profil server tersimpan dengan kredensial terenkripsi (EncryptedSharedPreferences)
- UI: daftar profil, editor profil, layar terminal + keyboard khusus + toolbar
- 6 tema terminal build-in + font monospace
- Build terverifikasi: assembleDebug SUCCESS, lintDebug 0 error (APK 11MB)
2026-08-30 14:56:46 +07:00