No description
Find a file
jima 9c980bbea7 Session lifecycle: fix service death on unbind, ProxyJump ID, quick-connect history
Critical fixes:
- ensureStarted() counteracts previous stopSelf() before creating any session,
  preventing service destruction when Activity unbinds (screen off, Home, task switch)
- onTaskRemoved() re-starts service to survive swipe-from-recents
- Auto-reconnect no longer removes session from map (prevents empty-map window)
- Auto-reconnect clones password CharArray before disconnect zeroes the original
- checkStopSelf() now includes SFTP sessions in the empty check

ProxyJump fix:
- onConnect callback now passes savedConnectionId directly instead of re-looking
  up by host/port/username (LIMIT 1 picked wrong duplicate connection)
- Threaded through ConnectionListScreen → NavGraph → MainActivity → MainViewModel

UX improvements:
- Quick-connect history (pro): stores 100 entries with timestamps, shows 20 in
  dropdown with relative dates, X to remove, dismiss on focus loss
- Disconnect snackbar suppressed for active session (user already sees the bar)
- DisconnectedBar: muted dark background with teal/grey buttons instead of
  red/green/blue Christmas lights
- Session auto-switch works for Idle state (ProxyJump sessions start in Idle
  during jump chain build)

Refactoring:
- SshConnectionHelper extracted: shared auth lookup, TOFU, session factory
  (eliminates duplication between connectSSH, buildJumpChain, openSftpSession)
- Remove redundant stopForeground call from updateNotification

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 16:33:45 +02:00
app
docs
gradle
lib-ssh
lib-terminal-keyboard
lib-terminal-view
lib-vault-crypto
scripts
.gitignore
build.gradle.kts
gradle.properties
gradlew
gradlew.bat
settings.gradle.kts