chaos-zhu
|
cffe8630d7
|
feat(mobile): 新增 editor.* 国际化文案
|
2026-05-23 20:49:26 +08:00 |
|
chaos-zhu
|
ee6ebc1545
|
feat(mobile): 新增 TextEditorController 协调脏标记/保存/格式化
|
2026-05-23 20:45:06 +08:00 |
|
chaos-zhu
|
ac95ad0c25
|
feat(mobile): SftpSessionManager 新增 readTextFile/writeTextFile 与异常类型
|
2026-05-23 20:38:49 +08:00 |
|
chaos-zhu
|
a63c054c56
|
feat(mobile): 新增 editor_formatters JSON/YAML/XML 格式化
|
2026-05-23 20:32:57 +08:00 |
|
chaos-zhu
|
d052fc0ad7
|
feat(mobile): 新增 editor_language 按文件名识别语言与高亮
|
2026-05-23 20:28:24 +08:00 |
|
chaos-zhu
|
70fa032186
|
feat(mobile): 新增 editor_text_sniffer 二进制与 UTF-8 嗅探
|
2026-05-23 20:21:27 +08:00 |
|
chaos-zhu
|
2106dd38d7
|
feat(mobile): 新增 re_editor / yaml / xml 依赖,准备 SFTP 文本编辑器
|
2026-05-23 20:17:22 +08:00 |
|
chaos-zhu
|
2817929640
|
docs: 新增移动端 SFTP 文本编辑器实施计划
|
2026-05-23 20:12:59 +08:00 |
|
chaos-zhu
|
1811bffb7f
|
docs: design mobile SFTP text editor
Plan the in-app text editor for SFTP files: re_editor + re_highlight,
2MB+NUL gate, single-tap entry, full-screen route, JSON/YAML/XML
formatters, UTF-8 only.
|
2026-05-23 20:03:50 +08:00 |
|
chaos-zhu
|
0ab64938ae
|
feat: SFTP基础功能实现
|
2026-05-23 19:51:10 +08:00 |
|
chaos-zhu
|
c338eb3172
|
feat: SFTP连接功能
|
2026-05-23 18:44:31 +08:00 |
|
chaos-zhu
|
44b60ec5bf
|
feat: 优化Server顶部
|
2026-05-23 17:07:03 +08:00 |
|
chaos-zhu
|
ede37a131c
|
feat: 底部TabBar优化
|
2026-05-23 16:45:43 +08:00 |
|
chaos-zhu
|
8dd6c34b2c
|
feat: 优化server端抛错信息
|
2026-05-23 16:33:08 +08:00 |
|
chaos-zhu
|
9a083dc340
|
feat: web端新增优先展示密码组件
|
2026-05-23 16:28:12 +08:00 |
|
chaos-zhu
|
c13d7b83b9
|
feat: web端代理类型约束
|
2026-05-23 16:16:15 +08:00 |
|
chaos-zhu
|
2fb23ef783
|
feat: 跳板机&代理功能支持
|
2026-05-23 16:12:41 +08:00 |
|
chaos-zhu
|
0c950150d1
|
feat: include mobile ssh connection topology
|
2026-05-23 15:09:28 +08:00 |
|
chaos-zhu
|
4e84dd366a
|
docs: plan mobile native proxy support
|
2026-05-23 15:04:59 +08:00 |
|
chaos-zhu
|
eb6d572038
|
docs: design mobile native proxy support
|
2026-05-23 14:57:33 +08:00 |
|
chaos-zhu
|
5769d6bc19
|
fix: 修复密钥连接加密串为空string
|
2026-05-23 14:48:04 +08:00 |
|
chaos-zhu
|
34f10674d3
|
feat: 重构新增/编辑server页
|
2026-05-23 14:43:19 +08:00 |
|
chaos-zhu
|
1f8203eb6b
|
feat: 优化UI
|
2026-05-23 13:35:25 +08:00 |
|
chaos-zhu
|
0a1d6fabe0
|
feat: 优化Server布局
|
2026-05-21 22:51:51 +08:00 |
|
chaos-zhu
|
ca24026dc0
|
feat: 分组展示
|
2026-05-21 22:42:49 +08:00 |
|
chaos-zhu
|
169e0905c5
|
fix: server页下拉刷新
|
2026-05-20 21:59:08 +08:00 |
|
chaos-zhu
|
fbbbbd66be
|
feat: 优化UI&UE
|
2026-05-20 21:56:10 +08:00 |
|
chaos-zhu
|
0c07a9b3f2
|
feat: 无登录态跳转
|
2026-05-20 20:51:19 +08:00 |
|
chaos-zhu
|
bc0a88d919
|
feat: 多语言基建
|
2026-05-19 22:37:02 +08:00 |
|
chaos-zhu
|
88bd4cda3a
|
docs: plan mobile redesign and i18n implementation
|
2026-05-19 21:08:38 +08:00 |
|
chaos-zhu
|
fac3515aa5
|
docs: design mobile redesign and i18n
|
2026-05-19 20:56:47 +08:00 |
|
chaos-zhu
|
c845553fe5
|
feat: 左右侧菜单位置统一
|
2026-05-16 21:56:58 +08:00 |
|
chaos-zhu
|
ca4809bec7
|
feat: 重构状态管理&底部菜单
|
2026-05-16 21:17:58 +08:00 |
|
chaos-zhu
|
1c10dbf542
|
fix: pty size同步
|
2026-05-16 20:56:08 +08:00 |
|
chaos-zhu
|
05f304089d
|
feat: 优化终端快捷键输入
|
2026-05-16 20:52:15 +08:00 |
|
chaos-zhu
|
cf921e3c93
|
feat: 终端padding调整
|
2026-05-16 20:42:07 +08:00 |
|
chaos-zhu
|
48256a3e70
|
feat: 移除过期逻辑
|
2026-05-16 20:35:34 +08:00 |
|
chaos-zhu
|
a1f49a156d
|
feat: 优化列表交互
|
2026-05-16 20:32:55 +08:00 |
|
chaos-zhu
|
2fc685cd73
|
feat: 实例列表页优化
|
2026-05-16 20:28:03 +08:00 |
|
chaos-zhu
|
7b6870b8e1
|
feat: 移除list的服务器状态展示
|
2026-05-16 20:24:05 +08:00 |
|
chaos-zhu
|
772f5d6447
|
feat: 修复&优化&调整布局
|
2026-05-16 20:15:22 +08:00 |
|
chaos-zhu
|
07c67d5e6d
|
docs(mobile): 第一轮迭代设计文档
|
2026-05-16 18:37:47 +08:00 |
|
chaos-zhu
|
1131cd9355
|
feat(mobile): 补充密钥类型
|
2026-05-16 17:36:44 +08:00 |
|
chaos-zhu
|
4bb57bd6ba
|
feat(mobile): 端到端串联登录、列表与终端
* 把 LoginController 提升到 _EasyNodeAppState 字段,避免 build 期间
反复创建并丢失回调;
* 登录成功时把服务端返回的 deviceId 写入安全存储,登出时清理,
为未来调用 revoke-login 接口预留持久化;
* 服务端 mobile 控制器把 socket/terminal 的依赖改为惰性 require,
让纯单元测试不再触发 terminal-session 中的 global.logger 引用错误。
|
2026-05-16 17:30:39 +08:00 |
|
chaos-zhu
|
b3a2a53a1e
|
feat(mobile): 实现原生 SSH 终端
SshTerminalController 把 dartssh2 shell 会话和 xterm 终端绑定,
支持密码与私钥认证、stdout/stderr 转发、resize 与单独的 writeInput
通道;TerminalToolbar 提供 Esc/Tab/方向键/Ctrl-C/Ctrl-D/Enter/断开
按钮,所有按键直接写入 SSH 会话;TerminalPage 在 initState 中
连接、dispose 中断开,并展示连接错误。
|
2026-05-16 17:22:10 +08:00 |
|
chaos-zhu
|
8d89cd2d73
|
feat(mobile): 服务器列表页与可注入仓库
将 ServerRepository 重构为接口,由 ApiServerRepository 提供
实际网络与解密实现,使列表页 widget 测试可以注入伪仓库覆盖
空列表、错误重试、连接失败 SnackBar 与登出按钮路径。
|
2026-05-16 17:18:51 +08:00 |
|
chaos-zhu
|
53d9807daf
|
feat(mobile): 添加登录页与应用骨架路由
登录页提供服务端地址、用户名、密码、MFA、有效期与保存密码开关,
并在 HTTP 协议时弹出风险确认对话框;应用骨架根据 session 在
LoginPage 与 ServerListPage 间切换,并先放置一个 TerminalPage
占位组件以保持分析器干净,真正的终端实现将在 Task 12 落地。
|
2026-05-16 17:15:47 +08:00 |
|
chaos-zhu
|
1d779a082e
|
feat(mobile): 添加服务器模型与凭据仓库
- features/servers/server_model.dart: 仅保留移动端列表所需字段,
fromJson 兼容 _id / 字符串 port / 缺失 tag;canConnect 处理
isConfig 与 expired。
- features/terminal/ssh_connection_config.dart: mobile/ssh-connection
解密后明文模型,与 toMobileSshPayload 对齐。
- features/servers/server_repository.dart: fetchHosts 拉取 host-list;
fetchSshConfig 随机 32B key -> RSA 加密 -> POST mobile/ssh-connection
-> AES-GCM 解密 -> 构造 SshConnectionConfig;临时 key 与明文仅在
方法内存留。
- server_model 单测覆盖正常 / fallback / 不可连接场景。
|
2026-05-16 17:09:19 +08:00 |
|
chaos-zhu
|
5577fa91f6
|
feat(mobile): 添加 API 客户端与登录控制器
- core/api/api_result.dart: ApiFailure 包装非 2xx 响应,附带 statusCode
与 401/403 判定,便于跳登录。
- core/api/api_client.dart: dio 封装,固定 ${serverAddress}/api/v1 base,
token header + Set-Cookie 双向桥接,统一抛 ApiFailure。
- features/auth/auth_session.dart: 持有 token/deviceId/server/user。
- features/auth/login_controller.dart: 规范化地址 -> HTTP 风险确认 ->
获取公钥 -> RSA 加密密码 -> 调 /login -> 解析 token/deviceId;
通过 ApiClientFactory 注入便于测试,并提供 onLoginSuccess 钩子。
- 4 个 fake 模式单测覆盖 HTTP 风险、空用户名/密码、无效地址。
- 同步修订规范与计划: 不再生成自有 mobile deviceId,登录字段沿用
web 端 (loginName/ciphertext/jwtExpires/jwtExpireAt[/mfa2Token]),
使用服务端返回的 deviceId 以兼容 revoke-login API。
|
2026-05-16 17:07:02 +08:00 |
|
chaos-zhu
|
264e21e813
|
feat(mobile): 添加存储与 session cookie 持久化
- core/storage/app_storage.dart: shared_preferences 包装;保存
服务端地址、用户名与保存密码偏好。
- core/storage/secure_storage.dart: flutter_secure_storage 包装;
仅保存可选密码、token、session cookie 等高敏感数据。
- core/api/cookie_store.dart: 从 Set-Cookie 中提取 session=...
并写入 secure storage,请求时再回填到 Cookie header。
|
2026-05-16 17:02:09 +08:00 |
|