# 代码改进清单 > 基于 Wails 开发文档 vs 项目现状审查,2026-05-16 ## 已完成 - [x] 🔴① `main.go` 添加 `SingleInstance` 单实例锁(`top.1216.udesk`) - [x] 🔴② `app.go:74-97` RegisterGlobalHotkey 竞态修复(合并为单一 `defer mu.Unlock()`) - [x] 🔴③ `build/windows/info.json` 版本号 0.1.0→0.4.0,公司名→1216.top - [x] 🟡⑤ 删除 `frontend/src/wailsjs/wailsjs/` v2 遗留绑定目录 - [x] 🟡⑥ `LoadConnectionProfiles` 手动 map 转换改用 `json.Marshal/Unmarshal` - [x] 🟡⑨ `App.vue` onMounted 添加 `contextmenu` 事件拦截(禁用浏览器默认右键菜单) - [x] 🟡⑫ `main.go` Run() 错误输出改用 `fmt.Fprintf(os.Stderr, ...)` - [x] Sidebar 设置按钮 `···` 点击无响应修复:移除 `.stop` + Teleport 重构 + 增大点击区域 ## 待处理 - [x] ④ App 结构体拆分 — 1281行 app.go 拆为 9 个域文件:app_update/filesystem/sftp/oss/window/system/config/recycle/pdf + app_windows.go - [ ] ⑦ `internal/api/pdf_api.go:371` SelectDirectory 改用 Wails 原生对话框 `application.Get().Dialog.OpenFile()` - [ ] ⑧ `app.go:176-189` HWND 轮询改事件驱动 — v3 alpha 暂无对应 API,后续跟进 - [x] ⑩ `app.go:29` Windows 专用导入拆到 `app_windows.go`(registry/w32 包隔离) - [x] ⑪ 全局结构化日志 — `fmt.Println/Printf` 全部替换为 `log/slog`(app.go + internal/ 共 45 处) - [x] ⑬ `app.go` 更新检查 URL 改从 `update_config.json` 动态读取,不再硬编码 ## 代码审查修复 (2026-05-16) > 基于 App 拆分后全量审查,17 项问题已修复 15 项 ### 已修复 - [x] 🔴① app_windows.go 添加 `//go:build windows` 构建标签 - [x] 🔴② app_windows.go 移除 `fallbackName` 死参数 - [x] 🔴③ initModulesByConfig 复用 initFilesystemModule,消除重复初始化逻辑 - [x] 🔴④ WindowToggleAlwaysOnTop 的 isAlwaysOnTop 修改加 mu 锁保护 - [x] 🟡⑤ GetEnvVars 从 app_filesystem.go 移至 app_system.go(归属修正) - [x] 🟡⑥ GetAuditLogs 从 app_config.go 移至 app_filesystem.go(归属修正) - [x] 🟡⑦ BgmGetPlaylist 处理 db.Find 错误 - [x] 🟡⑧ LoadConnectionProfiles 处理 json.Unmarshal 错误 - [x] 🟡⑨ startAutoUpdateCheck 改用 requireUpdateAPI 统一加锁 - [x] 🟡⑩ startAutoUpdateCheck 配置读取失败添加 slog.Warn 日志 - [x] 🟡⑪ MigrateTabConfig 错误从 `_ =` 改为 slog.Warn - [x] 🟡⑫ app_recycle.go 移除空 import 块 - [x] ⚪⑭ OssConnect 补充 godoc 注释 - [x] ⚪⑮ EmitEvent 闭包提取为 app.emitEvent 方法,消除重复 ## Bug 修复 (2026-05-16) - [x] 🔴 预览状态级联失败: `clearContent()` 未重置 `isBinaryFile`,打开二进制文件后所有图片/视频预览失效 - [x] 🔴 Tab 切换状态不同步: 跨服务器 Tab 切换时面包屑和文件列表未更新 - [x] 🟡 AsyncCodeEditor 永久死亡: `defineAsyncComponent` 添加 `onError` 重试(限 2 次) - [x] 🟡 loadDirectory 静默吞异常: 切换 Tab 加载目录失败时添加用户提示 ### 暂不处理 - [ ] ⚪⑬ fallback 路径在非英文 Windows 上不匹配 — 边缘场景,影响有限 - [ ] ⚪⑯ SftpDisconnect 未走 ensureSftpService — 功能正确,风格统一待后续 - [ ] ⚪⑰ ensure 模式 5 种写法统一 — 大规模重构,独立迭代