No description
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> |
||
|---|---|---|
| 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 | ||