Skip to content

chore: dev → main(独立产品导入连接支持手动选择源库) - #494

Merged
feigeCode merged 1 commit into
mainfrom
dev
Nov 1, 2026
Merged

feigeCode merged 1 commit into
mainfrom
dev

Conversation

@feigeCode

Copy link
Copy Markdown
Owner

说明

dev 领先 main 1 个提交,本次只含「独立产品从全量产品导入连接」的修复,不含 CHANGELOG 与版本 bump。

提交

提交 内容
7f83d3a fix(app_kit): 独立产品导入连接支持手动选择源库

根因

独立产品(navop-shell / navop-data)的「导入连接」弹窗只靠自动探测:探测不到时页面直接跳到「迁移包」页签,而这一页只认迁移包 JSON —— 既看不到源库路径,也没有选择文件的入口,错误提示还把人引到这一页手写路径。于是全量版装在便携目录、改过 --data-dir、或已卸载时就彻底走不通。本机实测还有个坑:~/Library/Application Support/navop/one-hub.db 是 0 字节空库,真库在 ~/.config/navop/one-hub.db,只要探测稍微宽松一点就会「识别到但导入 0 条」。

修法

  • 弹窗始终落在「从全量产品迁移」页,新增可编辑的源库路径输入框 + 「选择文件…」原生选择器;探测结果仍会预填,清空输入框即重新探测。
  • 两个页签统一按文件头(SQLite format 3\0)判断源文件:SQLite 库走全量产品只读迁移,其余按迁移包 JSON 解析,所以「迁移包」页也能直接选 one-hub.db,改名或无扩展名不受影响。
  • 手写路径支持 ~、file:// 与 Windows %VAR%,从文件管理器复制来的带引号路径同样能读通。
  • 探测在多个候选之间优先选真正带连接的库,避免只按「能读通」判断而导入 0 条连接。
  • 新增 import_from_database / import_from_source_file / expand_source_path / is_sqlite_database 与对应单测,并补 docs/design/navop-product-split.md。

验证

  • cargo test -p app_kit:154 passed(新增 is_sqlite_database / pick_candidate / expand_source_path 单测)
  • cargo clippy -p app_kit --lib --tests:改动文件 0 warning
  • cargo check -p navop_app --lib:通过

独立产品「从全量产品导入连接」只靠自动探测:探测不到时弹窗会跳到「迁移包」
页,而那一页只认迁移包 JSON,既看不到源库路径,也没有选择文件的入口,用户
只能手写路径——全量版装在便携目录、改过 --data-dir、或已卸载时就彻底走不通。

- 弹窗始终落在「从全量产品迁移」页,新增可编辑的源库路径输入框 + 「选择
  文件…」原生选择器;探测结果仍会预填,清空输入框即重新探测。
- 两个页签统一按文件头(`SQLite format 3\0`)判断源文件:SQLite 库走全量
  产品只读迁移,其余按迁移包 JSON 解析,所以「迁移包」页也能直接选
  `one-hub.db`,改名或无扩展名不受影响。
- 手写路径支持 `~`、`file://` 与 Windows `%VAR%`,从文件管理器复制来的
  带引号路径同样能读通。
- 探测在多个候选之间优先选真正带连接的库:全量产品目录里可能残留刚被独立
  产品初始化出来的空库,只按「能读通」判断会导入 0 条连接。
- 新增 import_from_database / import_from_source_file / expand_source_path /
  is_sqlite_database 与对应单测,并补 docs/design/navop-product-split.md。
@feigeCode
feigeCode merged commit 9fd3be8 into main Nov 1, 2026
8 checks passed
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.

1 participant