新增全新安裝的「可刪除預設庫」(leo 2026-08-08 拍板)

全新使用者第一次連上知識庫時,自動在 Documents 建一個
「Arcrun 範例庫(可刪除)」,裡面放三份 .md 示範內容,
不必自己選資料夾就能立刻走完「丟檔→知識卡→搜得到」。

四條紅線都有測試釘住(default_library_test.go/
default_library_e2e_test.go,含真的建 binary 跑 --dry-run 驗證):
1. 可刪——刪掉就真的消失,marker 檔擋住重種
2. 只有第一次——已有帳號的機器不會冒出來
3. 不污染——只在自己的資料夾裡寫檔
4. 不留幽靈資料——資料夾被刪後,config 殘留引用會被清掉(GetState 自我修復)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-08 00:22:03 +08:00
parent 89d9b314fb
commit 361f1f1f9d
5 changed files with 495 additions and 0 deletions
+11
View File
@@ -481,6 +481,17 @@ func (a *App) GetState() UIState {
st := UIState{Version: version}
cfg, _ := loadCfg()
// 預設庫的實體資料夾若已經被使用者刪掉,把 config 裡的殘留引用清掉——
// 不留幽靈資料、也不會讓 collector 每輪都對著不存在的資料夾報錯(見 default_library.go)。
// 資料夾本身「會不會長回來」由 seedDefaultLibraryIfFirstEver 的 marker 檔擋住,這裡不會重種。
if pruneMissingDefaultLibrary(cfg) {
if err := saveCfg(cfg); err != nil {
appLog("清理已刪除的預設庫引用失敗:%v", err)
} else {
restartWatch()
}
}
for i, acc := range cfg.Accounts {
ui := UIAccount{Name: accountName(acc), Host: shortHost(acc.CypherURL)}
for _, f := range acc.WatchFolders {