liumangmang
e23ba1c3c9
feat: add keyboard shortcuts and context menu (Phase 6)
...
Phase 6 - Enhancements:
- Add useKeyboardShortcuts composable for global shortcuts
- Implement keyboard shortcuts: F2 (rename), Delete, Ctrl+N (new folder)
- Add ContextMenu component with positioning logic
- Implement right-click context menu for tree nodes
- Add rename dialog for nodes
- Support delete with confirmation
- Add "new subfolder" action for folders
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 15:55:39 +08:00
liumangmang
caed481d23
feat: implement drag-drop and data migration (Phase 3 & 5)
...
Phase 3 - Drag-drop functionality:
- Add useTreeDragDrop composable with drag state management
- Implement drag constraints (prevent dropping on self/descendants)
- Add visual feedback (opacity, drop indicators, highlight)
- Support drop positions: before/after/inside folder
Phase 5 - Data migration and sync:
- Add MigrationPrompt component for first-time users
- Implement bidirectional sync between connections and session tree
- Add syncNewConnections/syncDeletedConnections/syncConnectionName methods
- Create useConnectionSync composable for automatic sync
- Support migration from old layout with user prompt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 15:46:22 +08:00
liumangmang
2c06329d68
feat: implement MobaXterm-style layout (Phase 1-2-4)
...
实现 MobaXterm 风格的界面重构,包含会话树、工作区面板和分屏功能。
新增功能:
- 左侧会话树支持文件夹分组和展开/折叠
- 工作区垂直分屏(终端 + SFTP)
- 可拖拽调整分割比例
- 状态持久化到 localStorage
- 顶部工具栏(样式占位)
技术实现:
- 新增 sessionTreeStore 和 workspaceStore 状态管理
- 新增 SessionTree/SessionTreeNode 递归组件
- 新增 SplitPane 可拖拽分割组件
- 重构 SftpPanel 为 props 驱动
- 新增 MobaLayout 主布局
- 路由默认重定向到 /moba
依赖更新:
- 安装 @vueuse/core 用于拖拽功能
待实现:
- Phase 3: 会话树拖拽排序
- Phase 5: 数据迁移
- Phase 6: 快捷键、右键菜单、搜索等优化
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com >
2026-04-03 15:14:36 +08:00
liumangmang
9f133bd337
feat: update monitor, terminal, and SFTP interaction flow
2026-04-01 15:22:51 +08:00
liumangmang
832d55c722
feat: 新增终端顶部实时服务器监控面板
2026-03-30 16:54:56 +08:00
liumangmang
ba1acdc2dd
fix: 修复懒加载组件keep-alive不生效问题
2026-03-30 16:41:16 +08:00
liumangmang
e895124831
fix: SFTP标签页离开后返回刷新状态丢失问题
2026-03-30 16:18:00 +08:00
liumangmang
78e6fc3e47
feat: allow multiple terminal tabs per connection
2026-03-26 18:04:39 +08:00
liumangmang
93cc13ddd0
docs: 添加 sftp 标签页规格与计划文档
2026-03-24 17:52:28 +08:00
liumangmang
43207e24bf
feat: 为文件视图添加侧边栏标签页
2026-03-24 17:34:27 +08:00
liumangmang
f7fd41b88f
docs: 添加 nav swap 规格与计划文档
2026-03-24 15:09:47 +08:00
liumangmang
6f8edcec33
fix: reorder sidebar navigation items
2026-03-24 14:47:39 +08:00
liumangmang
b236386273
docs: 完善 AGENTS 仓库指引
2026-03-24 13:52:24 +08:00
liumangmang
c8fa3de679
docs: 添加 superpowers 规格与计划文档
...
记录 Remote->Many 多文件与相关实现计划/设计,便于后续追踪与复盘。
2026-03-24 13:43:08 +08:00
liumangmang
acac45b692
fix: 终端 PTY 尺寸同步
...
前端在 xterm fit/resize 后通过 WebSocket 发送 resize 控制消息,后端收到后调用 ChannelShell.setPtySize 触发远端重绘,修复 less/vim/top 等全屏程序只显示部分区域的问题。
同时补齐控制消息解析与 PTY resize 的单测,并修正失配的 SftpControllerTest 断言。
2026-03-24 12:03:03 +08:00
liumangmang
aced2871b2
feat: Remote->Many 支持多源文件传输
...
支持多选源文件并按源文件×目标连接生成任务队列;增加 Directory/Exact Path 目标模式与重名覆盖提示,同时修复传输/上传 SSE 订阅未及时关闭导致的连接堆积。
2026-03-24 10:54:49 +08:00
liumangmang
e2656fb1b5
Fix: 文件选择器进入目录时清空搜索条件
...
在 SftpFilePickerModal 增加 load() 中 searchQuery.value = '',确保文件选择器打开时或进入目录时重置搜索条件。
改动:
- SftpFilePickerModal.vue 第 60 行:load() 加载前清空 searchQuery
2026-03-20 17:50:39 +08:00
liumangmang
d4dc8a6da9
Fix: 进入目录时清空搜索条件
...
在 SftpView 增加 loadPath() 中 searchQuery.value = '',确保进入新目录时重置搜索条件。
改动:
- SftpView.vue 第 196 行:loadPath() 加载前清空 searchQuery
- 进入目录后不再受上次搜索条件影响
- 返回上一级也清空搜索条件
- 用户手动输入搜索仍可正常使用
2026-03-20 17:03:10 +08:00
liumangmang
a9cfef37c2
feat: 连接列表搜索高亮匹配文字
...
高亮匹配的搜索关键词(名称、主机、用户名、端口)。
- 连接名称、主机名、用户名、端口中的匹配文本会高亮为青色
- 使用 v-html 渲染高亮内容
- 转义正则特殊字符避免注入风险
2026-03-20 15:53:22 +08:00
liumangmang
1020d78b91
feat: 搜索词同步到 URL 查询参数
...
搜索词现在会同步到 URL 查询参数 ?q=xxx,刷新页面后保留搜索状态。
-连接列表页 ()
- 监听 URL 查询参数变化,初始化搜索框
- 搜索InputChange 时更新 URL
- 清空搜索时移除 URL 查询参数
2026-03-20 15:50:40 +08:00
liumangmang
7b7399912b
Fix: 修复终端标签切换时重连问题
...
将终端工作区提升为主布局常驻层,离开终端路由时只隐藏不卸载组件。
新增活动终端显隐状态跟踪,页面恢复时自动重新适配尺寸和聚焦。
改动范围:
- frontend/src/layouts/MainLayout.vue
- frontend/src/views/TerminalWorkspaceView.vue
- frontend/src/components/TerminalWidget.vue
2026-03-20 15:36:47 +08:00
liumangmang
c1efd72d6d
feat: 为连接列表添加搜索
...
在连接列表页加入前端即时搜索,支持按名称、主机、用户名和端口过滤连接。补充分离的无结果状态与清空操作,提升连接较多时的查找效率。
2026-03-18 23:59:26 +08:00
liumangmang
77518b3f97
Fix: 修复 Docker 上传目录解析错误
...
将 multipart 上传目录改为基于 DATA_DIR 的绝对路径,避免 Tomcat 在容器内把相对路径解析到临时目录。同步让上传控制器复用该配置并补充错误日志,确保本地文件在异步上传期间可用。
2026-03-18 23:46:05 +08:00
liumangmang
6dbd5ae694
Merge: 修复文件上传临时文件丢失问题
2026-03-18 23:25:37 +08:00
liumangmang
e0c734d3d9
Config: 配置 multipart 持久化临时目录
2026-03-18 23:25:14 +08:00
liumangmang
e2f600c264
Fix: 修复文件上传临时文件丢失问题
...
问题:
- Docker 环境下上传文件时出现 FileNotFoundException
- Tomcat 在异步任务执行前清理了临时文件 /tmp/tomcat.xxx/work/...
解决方案:
1. 配置 multipart.location 为持久化目录 ./data/upload-temp
2. 设置 file-size-threshold: 0 强制立即写入磁盘
3. 修改 SftpController.upload() 方法:
- 在异步任务执行前将 MultipartFile 保存到持久化位置
- 异步任务从保存的文件读取而非 MultipartFile.getInputStream()
- 上传完成或失败后自动清理临时文件
影响范围:
- backend/src/main/resources/application.yml
- backend/src/main/java/com/sshmanager/controller/SftpController.java
2026-03-18 23:24:53 +08:00
liumangmang
f892810763
Merge: 将终端标签页移至左侧边栏
2026-03-18 23:17:01 +08:00
liumangmang
c01c005c07
feat: 将终端标签页移至左侧边栏
...
- 在 MainLayout 侧边栏添加终端标签区域
- 标签纵向排列在连接列表下方
- 点击标签自动切换到终端工作区并激活
- 简化 TerminalWorkspaceView 移除顶部标签栏和返回按钮
- 不用返回就能切换连接和打开新终端
2026-03-18 23:16:54 +08:00
liumangmang
c760fbdb85
Merge: 修复传输假成功 + 支持多终端标签页
2026-03-18 23:08:54 +08:00
liumangmang
51b479a8f9
feat: 支持应用内多 SSH 终端标签页
...
- 新增 terminalTabs store 管理标签页状态
- 新增 TerminalWorkspaceView 终端工作区视图
- 修改 ConnectionsView 终端按钮改用标签页模式
- 修改 TerminalView 作为兼容入口自动跳转到工作区
- 同一连接默认只保留一个标签页
- 切换标签时保持各自 SSH 会话不断开
2026-03-18 23:05:03 +08:00
liumangmang
c387cc2487
fix: Local->Many 传输等待后端任务真正完成
...
- 改用 uploadFile + subscribeUploadProgress 替代 uploadFileWithProgress
- 只有后端任务状态为 success 才标记成功
- 修复显示成功但远端无文件的问题
2026-03-18 23:02:31 +08:00
liumangmang
b0a78fc05a
chore: add .worktrees to gitignore
2026-03-18 23:00:15 +08:00
liumangmang
80fc5c8a0f
feat: 增强 Transfers 页面文件浏览功能
...
- 在 SftpFilePickerModal 中添加搜索功能
- 添加显示/隐藏文件切换按钮(参考 SftpView)
- Remote->Many 模式下目标连接列表自动排除源连接
- 全选功能自动排除源连接
- 添加空状态提示信息
- 优化用户体验和交互逻辑
2026-03-12 17:45:07 +08:00
liumangmang
085123697e
增强 SSH/SFTP 稳定性并完善安全校验与前端交互
2026-03-11 23:14:39 +08:00
liumangmang
8845847ce2
Improve SFTP file view and upload handling
...
Add hidden-file toggle and search, prevent rapid-click path duplication, fix multipart upload headers, and raise backend upload size limits with clearer errors.
2026-03-10 18:07:51 +08:00
939b2ff287
Add Makefile commands for one-command Docker deployment
2026-03-09 00:28:27 +08:00
e5b9399350
Fix accidental close when dragging out of connection form inputs
2026-03-09 00:14:51 +08:00
6f37074f5a
Add AGENTS.md guidelines for OpenCode workflows
v1.0.1
2026-03-09 00:03:21 +08:00
a10906d711
Improve SFTP reliability and credential hygiene with regression tests
2026-03-09 00:02:22 +08:00
liumangmang
a61a88f36b
Implement session locking in SftpController to ensure thread safety during concurrent SFTP operations. Introduce a method to handle session locks and improve error handling by forcing reconnections on exceptions. This change addresses potential issues with shared ChannelSftp instances in concurrent requests.
2026-02-04 15:03:37 +08:00
liumangmang
e792fb919d
Fix SftpService to access SftpException ID directly via the 'id' field for improved error message formatting.
2026-02-04 14:55:41 +08:00
liumangmang
7f57d69756
Enhance SFTP error handling in SftpController and SftpService by introducing a method to format SftpException messages. Improve listFiles method to handle empty paths and provide clearer error messages in response to exceptions.
2026-02-04 14:43:54 +08:00
liumangmang
a1b8a4af8c
Update Dockerfiles to include libgcc in the Alpine image for improved compatibility with Java applications.
2026-02-04 12:31:48 +08:00
liumangmang
ea38d1c026
Add DH-based key exchange algorithms in SftpService and SshService to ensure compatibility with Java 8 minimal JRE
2026-02-04 12:03:29 +08:00
liumangmang
a67562bfea
Update jsch dependency to a modern version with enhanced algorithm support and change groupId for compatibility.
2026-02-04 11:57:36 +08:00
liumangmang
b82ea1919e
Enhance CORS configuration and WebSocket origin settings to include additional localhost ports. Improve error handling in SftpController and SftpView for better debugging and user feedback.
2026-02-04 11:47:08 +08:00
liumangmang
1aefc14e42
Fix file upload handling in SftpView by adding a check for undefined files before uploading.
2026-02-04 11:40:24 +08:00
liumangmang
669dc11064
Format and clean up the start.sh script for improved readability and consistency.
2026-02-04 11:30:55 +08:00
liumangmang
4558ef20c0
Update application.yml to disable resource mapping for improved SPA handling
2026-02-04 11:16:01 +08:00
liumangmang
7e6ebd18a5
Refactor project structure and update .gitignore; enhance README with setup instructions and environment requirements. Clean up backend code for improved readability and maintainability.
2026-02-04 11:07:42 +08:00