Files
EzVibeR/docs/impl/debug-log-20260531.md
Claude Agent 51ddaee7d0 feat: 修复多个问题并更新文档
- 修复配置窗口'选择本地模型'按钮无响应问题
  - 添加 tauri-plugin-dialog 和 tauri-plugin-clipboard-manager 依赖
  - 在 main.rs 中注册插件
  - 创建 capabilities/default.json 配置权限

- 修复工具栏按钮不显示问题
  - 将 .waifu-tool 的 display 从 none 改为 block

- 修复模型显示比例问题
  - 禁用 reloadPositionScale 避免覆盖尺寸设置
  - 移除 onResized 回调中的模型尺寸重置
  - 设置模型宽度为窗口的 50%

- 修复切换 workspace 后模型尺寸恢复问题

- 添加窗口置顶设置,显示时重新设置 always_on_top

- 更新 CLAUDE.md 文档
- 添加 .gitignore
- 更新 README.md
- 添加 docs/impl/debug-log-20260531.md 记录调试过程

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 15:42:56 +08:00

3.2 KiB
Raw Permalink Blame History

EzVibeR+ 调试修复日志 - 2026-05-31

问题1配置窗口"选择本地模型"按钮无响应

原因

@tauri-apps/plugin-dialog 只在 package.json 前端依赖中声明,但没有在 Rust 后端注册。

Tauri v2 要求插件必须:

  1. Cargo.toml 中添加依赖
  2. main.rs 中用 .plugin() 注册

修复内容

1. Cargo.toml - 添加插件依赖:

tauri = { version = "2.11.1", features = ["tray-icon", "image-png"] }
tauri-plugin-dialog = "2"
tauri-plugin-clipboard-manager = "2"

2. src-tauri/src/main.rs - 注册插件:

.plugin(tauri_plugin_dialog::init())
.plugin(tauri_plugin_clipboard_manager::init())

3. 创建 capabilities 配置 - src-tauri/capabilities/default.json

{
  "identifier": "default",
  "windows": ["main", "config"],
  "permissions": [
    "core:default",
    "dialog:allow-open",
    "clipboard-manager:allow-write-text",
    "clipboard-manager:allow-read-text"
  ]
}

问题2工具栏按钮不显示/无法点击

原因

CSS 中 .waifu-tool 默认 display: none,只在 hover 时显示。但透明窗口可能无法正确触发 hover。

修复内容

src/assets/waifu.css - 修改为始终显示:

.waifu-tool {
  display: block;  /* 原为 none */
  ...
}

问题3模型在窗口中显示比例不对太宽

原因

loadModel 函数中设置了模型尺寸,但随后被 reloadPositionScale()onResized 回调覆盖。

修复内容

1. src/live2d/index.vue - init() - 禁用 reloadPositionScale

// await reloadPositionScale(); // 暂时禁用

2. src/live2d/index.vue - onResized 回调 - 不再重置模型尺寸:

// 删除了 modelRef.value!.width = ... 的覆盖逻辑

3. src/live2d/index.vue - loadModel() - 设置模型尺寸:

const w = size?.width! / factor;
const h = size?.height! / factor;
model.width = w * 0.5;  // 宽度50%
model.height = h;

问题4切换 workspace 后模型尺寸恢复

原因

onResized 回调每次窗口尺寸变化都会重置模型宽高为窗口大小。

修复内容

src/live2d/index.vue - onResized - 移除模型尺寸重置:

// 不再重置模型尺寸避免切换workspace时变形
// 仅保存窗口尺寸到配置

问题5窗口置顶在切换 workspace 后失效

原因

窗口重新显示时没有重新设置 always_on_top

修复内容

src-tauri/src/main.rs - 显示窗口时重新设置置顶:

"show" => {
    if let Some(w) = app.get_webview_window("main") {
        w.show().unwrap();
        w.set_always_on_top(true).unwrap();  // 新增
    }
}

配置文件变更

tauri.conf.json

  • 窗口配置保持 alwaysOnTop: true
  • 窗口尺寸 215x200

CLAUDE.md

  • 更新项目架构文档
  • 添加前端文件说明
  • 补充后端模块细节
  • 添加事件系统说明

备注

  • 编译命令:npm run build (前端) + cargo build --release (后端)
  • 前端构建产物在 dist/
  • 后端编译产物在 src-tauri/target/release/live2d
  • 配置文件位置:~/.live2D/live2d.conf.json
  • Web 服务器端口随机分配,存储在配置文件中