diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index e361ca948..7a4baa8fb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -7,17 +7,17 @@ ## NPM dependencies -Install pnpm: `npm install -g pnpm@10.17.1` +Install pnpm: `npm install -g pnpm@10.18.3`
For China mainland Set the Electron mirror environment variable and install Electron: -* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@37.6.0 -D` +* macOS/Linux: `ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@37.7.0 -D` * Windows: * `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/` - * `pnpm install electron@37.6.0 -D` + * `pnpm install electron@37.7.0 -D` NPM mirror: @@ -27,7 +27,7 @@ NPM mirror: Enter the app folder and execute: -* `pnpm install electron@37.6.0 -D` +* `pnpm install electron@37.7.0 -D` * `pnpm run dev` * `pnpm run start` diff --git a/.github/CONTRIBUTING_zh_CN.md b/.github/CONTRIBUTING_zh_CN.md index c428ee1f9..1dc083d8d 100644 --- a/.github/CONTRIBUTING_zh_CN.md +++ b/.github/CONTRIBUTING_zh_CN.md @@ -7,17 +7,17 @@ ## NPM 依赖 -安装 pnpm:`npm install -g pnpm@10.17.1` +安装 pnpm:`npm install -g pnpm@10.18.3`
适用于中国大陆 设置 Electron 镜像环境变量并安装 Electron: -* macOS/Linux:`ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@37.6.0 -D` +* macOS/Linux:`ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/ pnpm install electron@37.7.0 -D` * Windows: * `SET ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/` - * `pnpm install electron@37.6.0 -D` + * `pnpm install electron@37.7.0 -D` NPM 镜像: @@ -27,7 +27,7 @@ NPM 镜像: 进入 app 文件夹执行: -* `pnpm install electron@37.6.0 -D` +* `pnpm install electron@37.7.0 -D` * `pnpm run dev` * `pnpm run start` diff --git a/app/appearance/langs/ar_SA.json b/app/appearance/langs/ar_SA.json index b42333e6a..1fc2a7f5f 100644 --- a/app/appearance/langs/ar_SA.json +++ b/app/appearance/langs/ar_SA.json @@ -1,4 +1,14 @@ { + "foldAll": "طي الكل", + "expandSameLevelHeading": "توسيع العناوين من نفس المستوى", + "foldSameLevelHeading": "طي العناوين من نفس المستوى", + "expandChildHeading": "توسيع العناوين الفرعية", + "foldChildHeading": "طي العناوين الفرعية", + "addChildHeading": "إضافة عنوان فرعي", + "insertSameLevelHeadingBefore": "إدراج عنوان من نفس المستوى قبل", + "insertSameLevelHeadingAfter": "إدراج عنوان من نفس المستوى بعد", + "upgrade": "ترقية", + "downgrade": "خفض المستوى", "clipboardPermissionDenied": "تم رفض إذن الحافظة. يرجى السماح بالوصول إلى الحافظة من شريط عنوان المتصفح ثم المحاولة مرة أخرى.", "jumpTo": "انتقل إلى", "vacuumDataIndex": "تحسين الفهرس", diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index f1ce306a6..b8a40b9cb 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -1,4 +1,14 @@ { + "foldAll": "Alle einklappen", + "expandSameLevelHeading": "Überschriften auf gleicher Ebene ausklappen", + "foldSameLevelHeading": "Überschriften auf gleicher Ebene einklappen", + "expandChildHeading": "Unterüberschriften ausklappen", + "foldChildHeading": "Unterüberschriften einklappen", + "addChildHeading": "Unterüberschrift hinzufügen", + "insertSameLevelHeadingBefore": "Überschrift auf gleicher Ebene davor einfügen", + "insertSameLevelHeadingAfter": "Überschrift auf gleicher Ebene danach einfügen", + "upgrade": "Aktualisieren", + "downgrade": "Herabstufen", "clipboardPermissionDenied": "Zwischenablage-Berechtigung verweigert. Bitte erlauben Sie den Zugriff auf die Zwischenablage in der Adressleiste des Browsers und versuchen Sie es erneut.", "jumpTo": "Springe zu", "vacuumDataIndex": "Index optimieren", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 65f4f9881..cda9576e2 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -1,4 +1,14 @@ { + "foldAll": "Fold all", + "expandSameLevelHeading": "Expand same level heading", + "foldSameLevelHeading": "Fold same level heading", + "expandChildHeading": "Expand child heading", + "foldChildHeading": "Fold child heading", + "addChildHeading": "Add child heading", + "insertSameLevelHeadingBefore": "Insert same level heading before", + "insertSameLevelHeadingAfter": "Insert same level heading after", + "upgrade": "Upgrade", + "downgrade": "Downgrade", "clipboardPermissionDenied": "Clipboard permission denied. Please allow clipboard access in the browser address bar and try again.", "jumpTo": "Jump to", "vacuumDataIndex": "Optimize Index", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index 8b29c6878..392ba51d1 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -1,4 +1,14 @@ { + "foldAll": "Colapsar todo", + "expandSameLevelHeading": "Expandir títulos del mismo nivel", + "foldSameLevelHeading": "Colapsar títulos del mismo nivel", + "expandChildHeading": "Expandir subtítulos", + "foldChildHeading": "Colapsar subtítulos", + "addChildHeading": "Agregar subtítulo", + "insertSameLevelHeadingBefore": "Insertar título del mismo nivel antes", + "insertSameLevelHeadingAfter": "Insertar título del mismo nivel después", + "upgrade": "Actualizar", + "downgrade": "Degradar", "clipboardPermissionDenied": "Permiso del portapapeles denegado. Permite el acceso al portapapeles en la barra de direcciones del navegador y vuelve a intentarlo.", "jumpTo": "Ir a", "vacuumDataIndex": "Optimizar índice", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index edf05b47d..3f934aebc 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -1,4 +1,14 @@ { + "foldAll": "Tout replier", + "expandSameLevelHeading": "Développer les titres du même niveau", + "foldSameLevelHeading": "Replier les titres du même niveau", + "expandChildHeading": "Développer les sous-titres", + "foldChildHeading": "Replier les sous-titres", + "addChildHeading": "Ajouter un sous-titre", + "insertSameLevelHeadingBefore": "Insérer un titre du même niveau avant", + "insertSameLevelHeadingAfter": "Insérer un titre du même niveau après", + "upgrade": "Mettre à niveau", + "downgrade": "Rétrograder", "clipboardPermissionDenied": "Permission du presse-papiers refusée. Veuillez autoriser l'accès au presse-papiers dans la barre d'adresse du navigateur, puis réessayez.", "jumpTo": "Aller à", "vacuumDataIndex": "Optimiser l'index", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index 491087d2d..25a366837 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -1,4 +1,14 @@ { + "foldAll": "קפל הכל", + "expandSameLevelHeading": "הרחב כותרות באותו רמה", + "foldSameLevelHeading": "קפל כותרות באותו רמה", + "expandChildHeading": "הרחב כותרות משנה", + "foldChildHeading": "קפל כותרות משנה", + "addChildHeading": "הוסף כותרת משנה", + "insertSameLevelHeadingBefore": "הוסף כותרת באותו רמה לפני", + "insertSameLevelHeadingAfter": "הוסף כותרת באותו רמה אחרי", + "upgrade": "שדרג", + "downgrade": "הורד רמה", "clipboardPermissionDenied": "ההרשאה ללוח נדחתה. אפשר גישה ללוח משורת הכתובת בדפדפן ונסה שוב.", "jumpTo": "קפוץ אל", "vacuumDataIndex": "אופטימיזציית אינדקס", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index a0cb090b8..6df0b31e1 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -1,4 +1,14 @@ { + "foldAll": "Comprimi tutto", + "expandSameLevelHeading": "Espandi intestazioni dello stesso livello", + "foldSameLevelHeading": "Comprimi intestazioni dello stesso livello", + "expandChildHeading": "Espandi sottotitoli", + "foldChildHeading": "Comprimi sottotitoli", + "addChildHeading": "Aggiungi sottotitolo", + "insertSameLevelHeadingBefore": "Inserisci intestazione dello stesso livello prima", + "insertSameLevelHeadingAfter": "Inserisci intestazione dello stesso livello dopo", + "upgrade": "Aggiorna", + "downgrade": "Retrocedi", "clipboardPermissionDenied": "Autorizzazione agli appunti negata. Consenti l'accesso agli appunti dalla barra degli indirizzi del browser e riprova.", "jumpTo": "Vai a", "vacuumDataIndex": "Ottimizza indice", @@ -977,9 +987,9 @@ "heading4": "Titolo 4", "heading5": "Titolo 5", "heading6": "Titolo 6", - "outlineExpandLevel": "展開レベル", - "expandAll": "すべて展開", - "outlineKeepCurrentExpand": "現在の見出しを展開し続ける", + "outlineExpandLevel": "Livello di espansione", + "expandAll": "Espandi tutto", + "outlineKeepCurrentExpand": "Mantieni espanso l'intestazione corrente", "general": "Generale", "list1": "Lista", "element": "elemento", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index c769e0128..0dbb3d96f 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -1,4 +1,14 @@ { + "foldAll": "すべて折りたたむ", + "expandSameLevelHeading": "同じレベルの見出しを展開", + "foldSameLevelHeading": "同じレベルの見出しを折りたたむ", + "expandChildHeading": "子見出しを展開", + "foldChildHeading": "子見出しを折りたたむ", + "addChildHeading": "子見出しを追加", + "insertSameLevelHeadingBefore": "前に同じレベルの見出しを挿入", + "insertSameLevelHeadingAfter": "後に同じレベルの見出しを挿入", + "upgrade": "アップグレード", + "downgrade": "ダウングレード", "clipboardPermissionDenied": "クリップボードの権限が拒否されました。ブラウザのアドレスバーでクリップボードへのアクセスを許可してから再試行してください。", "jumpTo": "ジャンプ先", "vacuumDataIndex": "インデックスの最適化", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index d01387837..1ca6619ca 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -1,4 +1,14 @@ { + "foldAll": "Zwiń wszystko", + "expandSameLevelHeading": "Rozwiń nagłówki na tym samym poziomie", + "foldSameLevelHeading": "Zwiń nagłówki na tym samym poziomie", + "expandChildHeading": "Rozwiń nagłówki podrzędne", + "foldChildHeading": "Zwiń nagłówki podrzędne", + "addChildHeading": "Dodaj nagłówek podrzędny", + "insertSameLevelHeadingBefore": "Wstaw nagłówek na tym samym poziomie przed", + "insertSameLevelHeadingAfter": "Wstaw nagłówek na tym samym poziomie po", + "upgrade": "Aktualizuj", + "downgrade": "Degraduj", "clipboardPermissionDenied": "Odmowa dostępu do schowka. Zezwól na dostęp do schowka w pasku adresu przeglądarki, a następnie spróbuj ponownie.", "jumpTo": "Przejdź do", "vacuumDataIndex": "Optymalizuj indeks", diff --git a/app/appearance/langs/pt_BR.json b/app/appearance/langs/pt_BR.json index 7f2f8f53d..88f1ccdcf 100644 --- a/app/appearance/langs/pt_BR.json +++ b/app/appearance/langs/pt_BR.json @@ -1,4 +1,14 @@ { + "foldAll": "Recolher tudo", + "expandSameLevelHeading": "Expandir títulos do mesmo nível", + "foldSameLevelHeading": "Recolher títulos do mesmo nível", + "expandChildHeading": "Expandir subtítulos", + "foldChildHeading": "Recolher subtítulos", + "addChildHeading": "Adicionar subtítulo", + "insertSameLevelHeadingBefore": "Inserir título do mesmo nível antes", + "insertSameLevelHeadingAfter": "Inserir título do mesmo nível depois", + "upgrade": "Atualizar", + "downgrade": "Rebaixar", "clipboardPermissionDenied": "Permissão da área de transferência negada. Permita o acesso à área de transferência na barra de endereço do navegador e tente novamente.", "jumpTo": "Ir para", "vacuumDataIndex": "Otimizar índice", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index d8f8e276a..e814f8eaa 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -1,4 +1,14 @@ { + "foldAll": "Свернуть всё", + "expandSameLevelHeading": "Развернуть заголовки того же уровня", + "foldSameLevelHeading": "Свернуть заголовки того же уровня", + "expandChildHeading": "Развернуть дочерние заголовки", + "foldChildHeading": "Свернуть дочерние заголовки", + "addChildHeading": "Добавить дочерний заголовок", + "insertSameLevelHeadingBefore": "Вставить заголовок того же уровня перед", + "insertSameLevelHeadingAfter": "Вставить заголовок того же уровня после", + "upgrade": "Обновить", + "downgrade": "Понизить", "clipboardPermissionDenied": "Доступ к буферу обмена отклонён. Разрешите доступ в адресной строке браузера и попробуйте снова.", "jumpTo": "Перейти к", "vacuumDataIndex": "Оптимизация индекса", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 480240d5a..a3f39faae 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -1,4 +1,14 @@ { + "foldAll": "全部摺疊", + "expandSameLevelHeading": "展開同級標題", + "foldSameLevelHeading": "摺疊同級標題", + "expandChildHeading": "展開子標題", + "foldChildHeading": "摺疊子標題", + "addChildHeading": "新增子標題", + "insertSameLevelHeadingBefore": "在前方插入同級標題", + "insertSameLevelHeadingAfter": "在後方插入同級標題", + "upgrade": "升級", + "downgrade": "降級", "clipboardPermissionDenied": "剪貼簿權限被拒絕,請在瀏覽器地址欄允許訪問剪貼簿後再試", "jumpTo": "跳轉到", "vacuumDataIndex": "優化索引", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 1e0979367..1c4caf3f0 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -1,4 +1,14 @@ { + "foldAll": "全部折叠", + "expandSameLevelHeading": "展开同级标题", + "foldSameLevelHeading": "折叠同级标题", + "expandChildHeading": "展开子标题", + "foldChildHeading": "折叠子标题", + "addChildHeading": "添加子标题", + "insertSameLevelHeadingBefore": "在前方插入同级标题", + "insertSameLevelHeadingAfter": "在后方插入同级标题", + "upgrade": "升级", + "downgrade": "降级", "clipboardPermissionDenied": "剪贴板权限被拒绝,请在浏览器地址栏允许访问剪贴板后再试", "jumpTo": "跳转到", "vacuumDataIndex": "优化索引", diff --git a/app/package.json b/app/package.json index 77542a382..ddee49070 100644 --- a/app/package.json +++ b/app/package.json @@ -4,7 +4,7 @@ "description": "Refactor your thinking", "homepage": "https://b3log.org/siyuan", "main": "./electron/main.js", - "packageManager": "pnpm@10.17.1", + "packageManager": "pnpm@10.18.3", "scripts": { "lint": "eslint . --fix --cache", "dev": "webpack --mode development", @@ -57,7 +57,7 @@ "clean-webpack-plugin": "^4.0.0", "css-loader": "^7.1.2", "dayjs": "^1.11.5", - "electron": "37.6.0", + "electron": "37.7.0", "electron-builder": "26.0.12", "encoding": "^0.1.13", "esbuild-loader": "^3.0.1", diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index 06dd62ba9..2912979dd 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -10,7 +10,7 @@ importers: dependencies: '@electron/remote': specifier: ^2.1.3 - version: 2.1.3(electron@37.6.0) + version: 2.1.3(electron@37.7.0) devDependencies: '@eslint/eslintrc': specifier: ^3.3.1 @@ -40,8 +40,8 @@ importers: specifier: ^1.11.5 version: 1.11.18 electron: - specifier: 37.6.0 - version: 37.6.0 + specifier: 37.7.0 + version: 37.7.0 electron-builder: specifier: 26.0.12 version: 26.0.12(electron-builder-squirrel-windows@26.0.12) @@ -446,36 +446,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -1192,8 +1198,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@37.6.0: - resolution: {integrity: sha512-8AANcn6irYQ7cTAJRY7r0CovWckcGCHUniQecyGhw/jJ25vWwitVhF97skF+EyDztiEI6YBoF0G6tx1s37bO3g==} + electron@37.7.0: + resolution: {integrity: sha512-LBzvfrS0aalynOsnC11AD7zeoU8eOois090mzLpQM3K8yZ2N04i2ZW9qmHOTFLrXlKvrwRc7EbyQf1u8XHMl6Q==} engines: {node: '>= 12.20.55'} hasBin: true @@ -2862,9 +2868,9 @@ snapshots: - bluebird - supports-color - '@electron/remote@2.1.3(electron@37.6.0)': + '@electron/remote@2.1.3(electron@37.7.0)': dependencies: - electron: 37.6.0 + electron: 37.7.0 '@electron/universal@2.0.1': dependencies: @@ -4007,7 +4013,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@37.6.0: + electron@37.7.0: dependencies: '@electron/get': 2.0.3 '@types/node': 22.18.1 diff --git a/kernel/model/attribute_view_render.go b/kernel/model/attribute_view_render.go index 1aa20c70a..ddbc82b74 100644 --- a/kernel/model/attribute_view_render.go +++ b/kernel/model/attribute_view_render.go @@ -522,9 +522,11 @@ func RenderHistoryAttributeView(blockID, avID, viewID, query string, page, pageS historyDir := matches[0] avJSONPath := filepath.Join(historyDir, "storage", "av", avID+".json") if !gulu.File.IsExist(avJSONPath) { + logging.LogWarnf("attribute view [%s] not found in history data [%s], use current data instead", avID, historyDir) avJSONPath = filepath.Join(util.DataDir, "storage", "av", avID+".json") } if !gulu.File.IsExist(avJSONPath) { + logging.LogWarnf("attribute view [%s] not found in current data", avID) attrView = av.NewAttributeView(avID) } else { data, readErr := os.ReadFile(avJSONPath) diff --git a/kernel/model/file.go b/kernel/model/file.go index 75d455d53..42c7c87cb 100644 --- a/kernel/model/file.go +++ b/kernel/model/file.go @@ -1548,16 +1548,7 @@ func removeDoc(box *Box, p string, luteEngine *lute.Lute) { return } - // 关联的属性视图也要复制到历史中 https://github.com/siyuan-note/siyuan/issues/9567 - avNodes := tree.Root.ChildrenByType(ast.NodeAttributeView) - for _, avNode := range avNodes { - srcAvPath := filepath.Join(util.DataDir, "storage", "av", avNode.AttributeViewID+".json") - destAvPath := filepath.Join(historyDir, "storage", "av", avNode.AttributeViewID+".json") - if copyErr := filelock.Copy(srcAvPath, destAvPath); nil != copyErr { - logging.LogErrorf("copy av [%s] failed: %s", srcAvPath, copyErr) - } - } - + generateAvHistory(tree, historyDir) copyDocAssetsToDataAssets(box.ID, p) removeIDs := treenode.RootChildIDs(tree.ID) diff --git a/kernel/model/history.go b/kernel/model/history.go index 39b8c9c71..b9e64de58 100644 --- a/kernel/model/history.go +++ b/kernel/model/history.go @@ -259,7 +259,6 @@ func RollbackDocHistory(boxID, historyPath string) (err error) { } historyDir = filepath.Join(util.HistoryDir, historyDir) - // 恢复包含的的属性视图 https://github.com/siyuan-note/siyuan/issues/9567 avNodes := tree.Root.ChildrenByType(ast.NodeAttributeView) for _, avNode := range avNodes { srcAvPath := filepath.Join(historyDir, "storage", "av", avNode.AttributeViewID+".json") @@ -652,15 +651,7 @@ func (box *Box) generateDocHistory0() { if nil != loadErr { logging.LogErrorf("load tree [%s] failed: %s", file, loadErr) } else { - // 关联的属性视图也要复制到历史中 https://github.com/siyuan-note/siyuan/issues/9567 - avNodes := tree.Root.ChildrenByType(ast.NodeAttributeView) - for _, avNode := range avNodes { - srcAvPath := filepath.Join(util.DataDir, "storage", "av", avNode.AttributeViewID+".json") - destAvPath := filepath.Join(historyDir, "storage", "av", avNode.AttributeViewID+".json") - if copyErr := filelock.Copy(srcAvPath, destAvPath); nil != copyErr { - logging.LogErrorf("copy av [%s] failed: %s", srcAvPath, copyErr) - } - } + generateAvHistory(tree, historyDir) } } } @@ -789,9 +780,22 @@ func generateOpTypeHistory(tree *parse.Tree, opType string) { return } + generateAvHistory(tree, historyDir) + indexHistoryDir(filepath.Base(historyDir), util.NewLute()) } +func generateAvHistory(tree *parse.Tree, historyDir string) { + avNodes := tree.Root.ChildrenByType(ast.NodeAttributeView) + for _, avNode := range avNodes { + srcAvPath := filepath.Join(util.DataDir, "storage", "av", avNode.AttributeViewID+".json") + destAvPath := filepath.Join(historyDir, "storage", "av", avNode.AttributeViewID+".json") + if copyErr := filelock.Copy(srcAvPath, destAvPath); nil != copyErr { + logging.LogErrorf("copy av [%s] failed: %s", srcAvPath, copyErr) + } + } +} + func GetHistoryDir(suffix string) (ret string, err error) { return getHistoryDir(suffix, time.Now()) }