Skip to content

fix: 修复 mac 打包应用在已有 prod 数据库时卡住启动页#190

Open
Spin-Particle wants to merge 2 commits intoScience-Discovery:devfrom
Spin-Particle:fix-mac-app
Open

fix: 修复 mac 打包应用在已有 prod 数据库时卡住启动页#190
Spin-Particle wants to merge 2 commits intoScience-Discovery:devfrom
Spin-Particle:fix-mac-app

Conversation

@Spin-Particle
Copy link
Copy Markdown
Collaborator

Issue for this PR

Closes #189

Type of change

  • Bug fix
  • New feature
  • Refactor / code improvement
  • Documentation

What does this PR do?

这个 PR 修复了 mac 打包桌面应用在本机已经存在 prod 数据库时卡在 Just a moment... 启动页的问题。

问题的根因是 Electron 启动阶段检查了错误的数据库文件名和路径。打包脚本以 prod 渠道构建应用后,sidecar 实际使用的是 aether-prod.db,但桌面端之前检查的是 aether.db,而且在 macOS 上还可能去查错误的 XDG 路径。这样会让启动逻辑误以为还需要执行数据库迁移,并一直等待不会再发出的 sqlite 迁移完成事件。

这个修复做了两件事:

  1. 按当前桌面渠道检查对应的数据库文件名,并在 macOS / Windows 上使用正确的 app data 目录。
  2. 给启动等待流程增加 sidecar 健康检查兜底,避免在迁移判断出错时永久卡死。

另外,这个 PR 还顺带修正了 packages/opencode/test/storage/db.test.ts 中对 Database.knownPaths() 的断言,使测试能够兼容目录中存在其他 aether*.db 文件的情况,避免 CI 误报。

How did you verify your code works?

  • packages/desktop-electron 下执行 "$HOME/.bun/bin/bun" typecheck
  • packages/desktop-electron 下执行 PATH="$HOME/.bun/bin:$PATH" "$HOME/.bun/bin/bun" run build
  • packages/opencode 下执行 PATH="$HOME/.bun/bin:$PATH" "$HOME/.bun/bin/bun" test ./test/storage/db.test.ts
  • 结合启动链路检查,确认已有 prod 数据库时不会再无限等待 sqlite 迁移完成事件

Screenshots / recordings

未附带。本次修改位于 Electron 启动流程,界面表现主要是修复启动页卡死。

Checklist

  • I have tested my changes locally
  • I have not included unrelated changes in this PR

@code-JDS
Copy link
Copy Markdown
Collaborator

code-JDS commented Apr 8, 2026

暂时不考虑发布electron版本。待确定后维护。

@Spin-Particle
Copy link
Copy Markdown
Collaborator Author

旧 db 缺少新版需要的认证信息

@Spin-Particle
Copy link
Copy Markdown
Collaborator Author

需要每次都删除db文件,才能正常打开桌面端app

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

mac 打包后的桌面应用在已有 prod 数据库时卡在启动页

2 participants