Skip to content

fix(windows): 数据库后端未接入时如实标记,数据库文件按普通文件打开 - #1467

Closed
1lck wants to merge 1 commit into
previewfrom
fix/windows-database-unavailable
Closed

1lck wants to merge 1 commit into
previewfrom
fix/windows-database-unavailable

Conversation

@1lck

@1lck 1lck commented Oct 24, 2026

Copy link
Copy Markdown
Owner

背景

Windows 的数据库后端一直没有接入:windows/tauri/src/config/backend-capabilities.ts 里 database: false,前端调用的 9 个数据库命令都没有原生实现,工具菜单里的"数据库"也是禁用状态。但有三处没跟上这个事实:

  1. 在文件树里打开 .db、.sqlite、.sqlite3、.duckdb、.duck 文件,仍会进入数据库查看器,之后每个请求都被能力开关拒绝。.db 这个扩展名很常见,不是 SQLite 的文件也会被拦截过去。
  2. 功能矩阵把 Windows 的四项数据库能力标成了 implemented / pending,给出的证据只是前端目录。
  3. README 把数据库工作台列为核心功能,没有注明平台。

改动

  • 文件路由(file-utils.ts):getDatabaseTypeFromPath 改为遵循同一个 database 能力开关。后端不可用时返回 null,这类文件走普通的二进制或文本路由(由 Core 的 document.classifyText 判断)。新打开文件和恢复会话都调用这个函数,两处行为一致。能力开启后,行为与原来相同。
  • 测试(workspace-session-restore.test.ts):新增用例,覆盖 5 种数据库扩展名在二进制内容下进入二进制查看器、文本内容的 .db 进入文本编辑器。已确认这个用例在不改代码时会失败。
  • 功能矩阵:database-connections、database-crud-export、database-query-history、database-schema 的 Windows 状态改为 missing / not-applicable,证据指向能力表;database-connections 的验证说明补充了 Windows 现状。
  • README(中英文):数据库工作台一条注明"目前仅支持 macOS"。

macOS 无任何改动。Windows 数据库前端代码保留不动,后续按 #1466 的插件方案统一处理。

验证

  • bun test src/features/file-system/controllers/workspace-session-restore.test.ts:18 pass
  • bun run typecheck、bunx vp lint(改动文件):通过
  • ./scripts/verify-platform-feature-matrix-change.sh <base> HEAD、./scripts/verify-platform-feature-matrix.sh:通过
  • ./.agents/skills/write-stable-tests/scripts/verify-test-stability.sh、./scripts/verify-windows-boundaries.sh:通过
  • 未运行:Windows 实机打开 .db 文件;test-stability-windows.ps1 -Scope Frontend 需要在 Windows 上执行,本机是 macOS,没有跑

🤖 Generated with Claude Code

Windows 的数据库后端从未接入(backend-capabilities 中 database 为 false,
前端调用的数据库命令没有原生实现),但 .db/.sqlite/.duckdb 文件仍被送进
数据库查看器,功能矩阵也标为 implemented。

- getDatabaseTypeFromPath 遵循同一能力开关,后端不可用时这类文件走普通
  二进制/文本路由,打开与会话恢复共用此判断
- 功能矩阵中 Windows 的四项数据库能力改为 missing / not-applicable
- README 注明数据库工作台目前仅支持 macOS

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ghfind-review ghfind-review Bot added the review: high ghfind author score; see https://ghfind.com label Oct 24, 2026
@lithe-code-review

lithe-code-review Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

Lithe Review

结论: ⚠️ 有建议
范围: preview ← fix/windows-database-unavailable · head: 8f337b496

未发现需要阻塞合并的问题。

Scope Check

  • 关联 Issue 或需求是否完成:未找到可验证的关联 Issue;按 PR 描述检查,本次路由、矩阵和 README 改动与给定目标一致。
  • 已完成范围:数据库后端不可用时,数据库扩展名不再进入数据库查看器;四项 Windows 矩阵状态已改为 missing / not-applicable,README 中英版本注明仅 macOS 支持。
  • 未完成范围:PR 正文说明尚未在 Windows 实机验证打开 .db 文件。
  • 是否复用了已有上游能力,或对自研边界给出充分证据:不涉及新增 IDE 基础能力;文件分类继续委托 Core 的 document.classifyText。
  • 每个 Finding 是否由本次变更引入或加剧:无 Findings。
  • 是否属于本次变更职责范围:是;新开文件与会话恢复均使用同一数据库扩展名判断。

Suggestions

  1. 请在 PR 描述或评论补充受影响界面的截图,并提供修改前后对比,展示 .db 文件分别按二进制与文本路径打开的结果。目前上下文未提供截图,视觉效果尚未验证。

Summary

路由开关位于共享判断函数中,当前 database: false 时新开文件与会话恢复都会回退到通用分类路径。矩阵状态与能力开关及 README 声明相符。未发现明确的行为回归。

Verification

  • 实际检查:base 53f7052a463eaf1a4c548663aca4afd1e381224a 到 head 8f337b4967b88574028b4681030130a08221a161 的 8 个清单文件;并追踪 getDatabaseTypeFromPath、loadFileContent、新开文件与会话恢复调用链,以及 Core 文本分类入口。
  • PR 正文提供的验证结果:18 项测试通过、类型检查、lint、矩阵检查、测试稳定性检查和 Windows 边界检查通过;对应 head 的 Check Run 当前均为 queued,未独立确认这些结果。
  • 本次未运行测试、应用或其他仓库代码;未访问网络。
  • 非阻塞验证缺口:Windows 实机打开 .db 尚未验证;未提供受影响界面的截图,视觉效果尚未验证。

@1lck

1lck commented Oct 24, 2026

Copy link
Copy Markdown
Owner Author

已合并到 #1470(数据库模块插件化的整体 PR),后续在那里继续推进。

@1lck 1lck closed this Oct 24, 2026
@1lck
1lck deleted the fix/windows-database-unavailable branch October 24, 2026 12:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: high ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant