Commit Graph

55 Commits

Author SHA1 Message Date
茂之钳 04e5056aaa chore: local-build branch - simplified gradle for Android Studio
- Remove benchmark module
- Use AGP 8.7.3 + Kotlin 2.0.21 (stable)
- Remove ktlint plugin
- Simplify app/build.gradle.kts (remove flavor, sourceSet overrides)
- Update version catalog with compatible library versions
2026-05-25 13:54:02 +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
茂之钳 81bf9e1f50 feat(ssh): full terminal UI with arrow keys/Tab/Ctrl keypad
- SshTerminalManager: SSH connection, shell I/O, ANSI parsing
- SshTerminalScreen: terminal output with keyboard toolbar
  - Arrow keys ▲▼◀▶ (ANSI cursor codes)
  - Tab, Esc, Del, Home, End, PgUp, PgDn
  - Ctrl+C, Ctrl+D, Ctrl+Z
  - Keyboard toolbar collapsible
- SshHost: standalone composable with connect dialog lifecycle
- JSch 0.1.55 dependency
- DevicesScreen, DiagnosticsScreen, NotificationsScreen
- TergentTheme, TergentTokens placeholder
2026-05-23 07:23:47 +00:00
茂之钳 a72b01e142 feat(ssh): add SSH terminal functionality (JSch)
- SshTerminalManager: SSH connection lifecycle, shell I/O, ANSI-aware line parsing
- SshTerminalScreen: Compose UI with terminal output, input bar, connect dialog
- Added JSch 0.1.55 dependency to gradle (libs.versions.toml + build.gradle.kts)
2026-05-23 07:19:05 +00:00
茂之钳 8cdf48ab95 docs: add SVG page mockups (9 screens) for Figma/Pixso import
- 01-onboarding.svg  (引导页)
- 02-connect.svg     (连接页)
- 03-chat.svg        (聊天页)
- 04-settings.svg    (设置页)
- 05-voice.svg       (语音页)
- 06-canvas.svg      (画布页)
- 07-devices.svg     (节点管理)
- 08-notifications.svg (通知历史)
- 09-diagnostics.svg (连接诊断)

配色: Spec Dark mode tokens (#111827 bg, #5B8CFF primary)
图标: SVG path vectors (Remix-style), fully editable in Figma/Pixso
2026-05-23 05:22:15 +00:00