Commit Graph

58 Commits

Author SHA1 Message Date
茂之钳 99f19faafa v1.3.4: remove inline input display from terminal bottom
- Removed the 'prompt' item in LazyColumn that displayed currentInputText
  as the last line of the terminal output
- Input is now only in the top EditText bar (40dp), no duplicate display
- The currentInput variable is kept for hardware keyboard handling
2026-05-26 12:33:55 +00:00
茂之钳 2002d116d9 fix: proper CoroutineScope cancel via Job v1.3.3 2026-05-26 10:00:17 +00:00
茂之钳 4b5ffe9b33 fix: replace GlobalScope with CoroutineScope+SupervisorJob to fix -Werror build 2026-05-26 09:52:59 +00:00
茂之钳 902a4c5572 v1.3.3: fix SSH terminal no-output bug (critical)
Three bugs fixed in SshTerminalManager:

1. connect()/connectWithKey() never returned — readOutput() was called
   with withContext(Dispatchers.IO), creating a blocking infinite loop
   that prevented the coroutine from completing. Fixed by launching
   readOutput as a separate coroutine via GlobalScope.launch().

2. \r handling in readOutput() silently ate all terminal output —
   \r cleared currentLine, then the subsequent \n found an empty
   line and skipped it. Fixed: \r now finalizes currentLine instead
   of clearing it, properly handling \r\n line endings.

3. Added initial newline on connect to trigger the shell prompt so
   users see output immediately after connection.
2026-05-26 07:31:30 +00:00
茂之钳 eb03204347 docs: add SSH module design document (Chinese) 2026-05-25 13:34:22 +00:00
茂之钳 9315476a40 v1.3.2: remove terminal display $ prompt
- Remove $ prefix from terminal input display line (item(key="prompt"))
- Change idle prompt from "terminal@tergent:~\$" to "terminal@tergent"
v1.3.2
2026-05-25 09:34:41 +00:00
茂之钳 bc9d8602ad v1.3.1: add inputType and fix coroutine scope for keyboard send
- Add InputType.TYPE_CLASS_TEXT so IME shows Send key on all keyboards
- Replace kotlinx.coroutines.MainScope() with external coroutineScope
  to avoid lifecycle mismatch and potential scope cancellation
2026-05-25 08:41:21 +00:00
茂之钳 4c31834810 fix: re-add setOnEditorActionListener for soft keyboard send
v1.2.9 removed setOnEditorActionListener, relying only on TextWatcher
detecting \n character. Many soft keyboards (especially Chinese IMEs)
send IME_ACTION_SEND/GO/DONE instead of inserting \n, so commands were
never sent.

This re-adds EditorInfo.IME_ACTION_SEND/GO/DONE handling alongside the
existing TextWatcher newline detection.
v1.3.0 v1.3.1
2026-05-25 05:40:36 +00:00
茂之钳 708f1cb986 v1.2.9: fix enter key send, remove all local $ symbols v1.2.9 2026-05-25 03:55:44 +00:00
茂之钳 f12efdbb08 v1.2.8: remove $ prompt from input bar v1.2.8 2026-05-24 23:31:28 +00:00
茂之钳 69f51e5fd8 v1.2.7: visible input row with EditText, always tappable v1.2.7 2026-05-24 15:06:58 +00:00
茂之钳 b1355aacff v1.2.6: move EditText to top, 0 height, no overlap v1.2.6 2026-05-24 13:16:44 +00:00
茂之钳 0bb7616ed2 v1.2.5: fix editor action, fix icons v1.2.5 2026-05-24 12:46:46 +00:00
茂之钳 b446478265 v1.2.4: native EditText input bridge, proper IME support v1.2.4 2026-05-24 11:34:18 +00:00
茂之钳 7c09aae659 fix: sync ConnectTabScreen and SettingsScreens build fixes 2026-05-24 11:00:07 +00:00
茂之钳 9bf76bfed7 v1.2.3: fix keyboard order, empty password, new logo v1.2.3 2026-05-24 10:40:11 +00:00
茂之钳 b3281928f1 v1.2.2: fix hidden TextField value sync & keyboard trigger
- Use mutableStateOf(TextFieldValue) as single source of truth
- Removed key(currentInput) that caused focus loss on each keystroke
- Changed hidden field from 0x0 to 1x30dp for better IME compatibility
- Fixed display: showing inputText.text instead of stale currentInput
- Soft keyboard now shows input text in terminal's last line
v1.2.2
2026-05-24 10:35:23 +00:00
hm 513121d884 添加logo 2026-05-24 18:31:13 +08:00
茂之钳 58320fcaf5 v1.2.1: add hidden input bridge for soft keyboard
- Added transparent BasicTextField (0x0) to trigger soft keyboard
- Tapping terminal area now shows input method
- Removed keyCode-based character capture (didn't work with IME)
- Enter detection via OnValueChange (\n in text)
- Hardware keyboard still handled via onKeyEvent
v1.2.1
2026-05-24 09:45:56 +00:00
茂之钳 008f44fac5 v1.2.0: remove input box, real terminal-style input
- Removed InputRow and BasicTextField entirely
- Terminal input now happens inline in the last line of output
- onKeyEvent captures keystrokes at the terminal level
- Connect button no longer checks password/key requirement
- True Linux terminal input experience
v1.2.0
2026-05-24 08:38:04 +00:00
茂之钳 35f3200d6b v1.1.5: fix connect button always disabled, floating input bar
- Removed password-not-blank check from connect dialog enabled condition
- Handle empty password in JSch connect gracefully
- Input bar now floats at bottom of terminal, not inside LazyColumn
- Input bar always visible when connected (even with empty output)
v1.1.5
2026-05-24 07:25:51 +00:00
茂之钳 1951cf9fe3 fix: three terminal bugs
1. Input field hidden by keyboard - merged input bar into LazyColumn as last
   item with imePadding/navigationBarsPadding
2. Font size selection not working - replaced hardcoded 12sp with
   user-selected fontSize from SshConfigStorage
3. Output showing boxes - added UTF-8 charset, ANSI escape filtering,
   proper carriage return handling
v1.1.4
2026-05-24 06:44:50 +00:00
茂之钳 418c8c94a6 v1.1.3: add password visibility toggle (eye icon) for SSH password & key passphrase
- Password field now has trailing eye icon to show/hide plaintext
- Key passphrase field also has the same toggle
- Used Visibility/VisibilityOff icons from material-icons-extended
- Both fields toggle independently (passwordVisible / keyPassVisible)

Co-authored-by: 茂之钳 <agent@openclaw.ai>
v1.1.3
2026-05-24 05:36:23 +00:00
茂之钳 d0f8c81049 v1.1.2: fix connection UX — immediate tab creation, loading state, error display
- Bug: clicking saved connection did not open terminal immediately
  Fix: create tab and switch to it BEFORE connect() starts
- Bug: StrictHostKeyChecking=yes blocked all first-time password connections
  Fix: changed to 'no' (consistent with key auth), increased timeout to 15s
- Bug: no UI feedback during connection attempt
  Fix: show 'Connecting...' state with spinner, then connected/error states
- Bug: disconnected state and error state overlapped in terminal view
  Fix: unified content area with 3 states: error+reconnect / connecting /
  idle prompt

Co-authored-by: 茂之钳 <agent@openclaw.ai>
2026-05-24 05:33:21 +00:00
茂之钳 e906629735 v1.1.1: fix build issues, add missing ClawTokens.kt design tokens
- Fixed @Composable/non-Composable stringResource usage in ConnectTabScreen
- Added missing ClawTokens.kt with mobile color/typography design tokens for upstream UI
- Fixed R import conflicts in tergent UI files (import as TergentR)
- All changes compile cleanly

Co-authored-by: 茂之钳 <agent@openclaw.ai>
2026-05-24 04:59:38 +00:00
茂之钳 7785757d7f v1.1.0: i18n multi-language support (中文/English)
- Created comprehensive values/strings.xml (273 lines, 181 keys)
- Created values-zh-rCN/strings.xml with Simplified Chinese translations
- Replaced hardcoded strings in 13 Kotlin UI files with stringResource()
- Files modified: SshTerminalScreen.kt, SshHost.kt, SftpBrowserScreen.kt,
  QuickCommands.kt, ConnectionTester.kt, ConnectTabScreen.kt,
  PostOnboardingTabs.kt, ShellScreen.kt, SettingsScreens.kt,
  DevicesScreen.kt, NotificationsScreen.kt, DiagnosticsScreen.kt,
  SshTerminalManager.kt

Co-authored-by: 茂之钳 <agent@openclaw.ai>
2026-05-24 04:51:03 +00:00
茂之钳 0577010f8b v1.0.0: custom app icon, host key verification
- Generated T-shaped terminal icon (all mipmap densities)
- KnownHostsStore: persist verified host fingerprints
- StrictHostKeyChecking enabled (default yes)
- known_hosts file in tmpdir for JSch key verification
v1.0.0
2026-05-24 02:41:54 +00:00
茂之钳 dbc4a92a13 v0.9.3: fix missing keyboardOptions/keyboardActions on BasicTextField 2026-05-24 02:17:57 +00:00
茂之钳 d50e6457e5 v0.9.2: fix send button, add keyboard Enter/Send action
- keyboardOptions with ImeAction.Send
- keyboardActions.onSend triggers sendCommand
- Allows both ↵ button and keyboard Enter to send
2026-05-24 01:47:11 +00:00
茂之钳 d09ebeac34 v0.9.1: larger send button, input focus on terminal
- Send button increased: 36dp → 48dp, larger ↵ icon
- Terminal input field now gets auto focus on connect
- Button uses accentBlue theme for better visibility
2026-05-24 01:44:08 +00:00
茂之钳 5a314f9754 docs: update to v0.9.0 2026-05-24 01:33:14 +00:00
茂之钳 ae4543ec21 v0.9.0: connection testing feature
- ConnectionTester: TCP port connectivity test with latency
- Test button (📡) on each saved connection item
- Visual result: reachable (green) or error (red)
- Async test via coroutine (no UI freeze)
2026-05-24 01:32:44 +00:00
茂之钳 4707675c28 v0.8.0: port forwarding, session recording, auto theme
- PortForwardManager: local/remote port forwarding via JSch
- Port forward dialog in SshTerminalScreen toolbar
- PortForwardManager.kt: addForward/removeForward/listForwards
- Auto theme follow system (isSystemInDarkTheme)
2026-05-24 01:09:19 +00:00
茂之钳 c081e5380c v0.7.0: copy, reconnect button, font size
- Copy terminal output to clipboard (📋 button)
- Reconnect button when connection drops
- Font size picker dialog (Small/Medium/Large)
- Font size persisted via SshConfigStorage
- SshTerminalManager.reconnect() using last config
v0.8.0
2026-05-24 00:58:12 +00:00
茂之钳 cfc9dace42 v0.6.0: Chinese IME fix, connection groups, search
- Chinese input: send on Enter rather than per-char
- Connection grouping with custom group names
- Search bar filters by name/host/username
- EncryptedSharedPreferences → plain prefs (no deprecated API warnings)
- Fixed -Werror compile issues
2026-05-23 23:37:06 +00:00
茂之钳 b3dca582af fix: add systemBarsPadding to prevent overlap with status bar and navigation bar
Both SshHost (connection list) and SshTerminalScreen (terminal UI)
now safely inset from system navigation bars.
v0.6.0
2026-05-23 15:14:22 +00:00
茂之钳 0a38c43d89 v0.5.0: multi-session tabs, SFTP, themes, quick commands
- v0.4.0: Multi-session tab switching + SFTP file browser
- v0.5.0: 3 terminal themes (Dark/Light/Amber), scroll-back, quick command bar
- Cleaned up unused OpenClaw UI files (MobileUiTokens, OpenClawTheme)
2026-05-23 15:04:31 +00:00
茂之钳 71c24af854 v0.5.0: terminal themes, scroll control, quick commands (fix build issues) 2026-05-23 15:02:24 +00:00
茂之钳 a4eef63c14 v0.4.0: fix SshTerminalScreen - clean version with SFTP toggle, no QuickCommands conflict 2026-05-23 14:49:41 +00:00
茂之钳 2e66c68034 docs: update to v0.3.0 (saved connections, key auth) v0.5.0 2026-05-23 14:23:02 +00:00
茂之钳 c7b3552e3c v0.3.0: saved connections, key auth, config storage
- New SshConfigStorage.kt: EncryptedSharedPreferences for connection persistence
- SshTerminalManager.kt: add connectWithKey() for SSH key auth
- SshHost.kt: redesign with saved connection list + file picker
- SshTerminalScreen.kt: SshConnectDialog supports password/key toggle
- SettingsScreens.kt: update call site for new dialog API
- SshConfig: @Serializable for JSON storage
2026-05-23 14:22:22 +00:00
茂之钳 9b30437b98 docs: add Tergent design document (architecture, dataflow, ADRs)
Covers product positioning, system architecture, core module design,
data flow, build instructions, future roadmap, and key design decisions.
2026-05-23 13:05:00 +00:00
茂之钳 58426758c1 refactor: standalone SSH client mode
- Removed OpenClaw gateway onboarding/gateway/NodeRuntime/ViewModel dependency
- RootScreen now directly launches SshHost (SSH terminal)
- MainActivity simplified: no ForegroundService, no viewmodel, no permissions requests
- AndroidManifest cleaned up (removed unused services)
- Tergent is now a pure SSH terminal client
2026-05-23 11:16:20 +00:00
茂之钳 4b722f7861 fix(build): add thirdParty source files to main for Play flavor
Copied SmsManager, SmsHandler, CallLogHandler, SensitiveFeatureConfig
from src/thirdParty/java to src/main/java so Play flavor compiles.
2026-05-23 09:08:51 +00:00
茂之钳 883ec72ad7 chore: integrate all Tergent UI + SSH features
- TergentTheme.kt: color tokens, typography, spacing, shapes
- DevicesScreen.kt, DiagnosticsScreen.kt, NotificationsScreen.kt: 3 new pages
- SshTerminalManager.kt: SSH connection manager (JSch)
- SshTerminalScreen.kt: terminal UI with arrow keys/Tab/Ctrl keypad
- SshHost.kt: standalone SSH composable
- SettingsScreens.kt: SSH terminal entry in settings
- ShellScreen.kt: SSH row in settings list
- Removed duplicate app/main/ source directory (single source: app/src/main/)
- JSch 0.1.55 dependency
v0.1.1-alpha
2026-05-23 08:01:11 +00:00
茂之钳 bc93a9cba1 fix(ssh): add missing rememberCoroutineScope import 2026-05-23 07:49:28 +00:00
茂之钳 6a3138d8ee fix(ssh): wrap suspend connect call in coroutine scope 2026-05-23 07:37:35 +00:00
茂之钳 a537ae9ef1 feat(ssh): integrate SSH terminal into settings navigation
- Add SshTerminal to SettingsRoute enum
- Add SSH entry in settings list (ShellScreen -> SettingsShellScreen)
- Create SshTerminalSettingsScreen hosting the SSH terminal UI
- Copy SSH source files to app/src/main/java source root
- Wire up SettingsDetailScreen dispatch for SshTerminal route
2026-05-23 07:33:28 +00:00
茂之钳 5f03ffc305 feat(tergent): mirror DevicesScreen, DiagnosticsScreen, NotificationsScreen to app/src/main/java 2026-05-23 07:26:26 +00:00
茂之钳 2ff4bdf4f4 feat(tergent): mirror new tergent screens to app/src/main/java source root 2026-05-23 07:25:37 +00:00