diff --git a/app/appearance/langs/de_DE.json b/app/appearance/langs/de_DE.json index 05b430309..008ca2017 100644 --- a/app/appearance/langs/de_DE.json +++ b/app/appearance/langs/de_DE.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "Nach der Aktivierung wird die Eingabe der Inline-Unterstreichungssyntax _foo_ und __foo__ unterstützt", "currentNotebook": "Aktuelles Notizbuch", "containerBlockTip1": "Die Aktivierung von Containerblöcken führt zu doppelten Suchergebnissen.", - "containerBlockTip2": "Die Aktivierung von Dokumentenblöcken unterstützt derzeit nur die Suche nach Dokumenttiteln.", "copyAsPNG": "Als PNG kopieren", "unbindBlock": "Block entkoppeln", "showTitle": "Datenbanktitel anzeigen", @@ -1425,7 +1424,7 @@ "108": "Daten-Synchronisierung fand Konflikte, Sie können den generierten Konfliktinhalt in [Datenverlauf] anzeigen.", "109": "Erinnerung Entfernen abgeschlossen [%s]", "110": "Umbenennung...", - "111": "Dokument [%s] speichern...", + "111": "Daten werden gespeichert [%s]...", "112": "Markdown-Syntaxzeichen [%s] nicht einfügen", "113": "Daten beschreiben abschließen...", "114": "Tag kann nicht leer sein", diff --git a/app/appearance/langs/en_US.json b/app/appearance/langs/en_US.json index 441a91c19..d6ecff2f9 100644 --- a/app/appearance/langs/en_US.json +++ b/app/appearance/langs/en_US.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "After enabling, the _foo_ italic syntax and the __foo__ bold syntax input will be supported", "currentNotebook": "Current Notebook", "containerBlockTip1": "Enabling container blocks will result in duplicate search results", - "containerBlockTip2": "Enabling document blocks currently only supports searching for document titles", "copyAsPNG": "Copy as PNG", "unbindBlock": "Unbind block", "showTitle": "Show database title", @@ -1425,7 +1424,7 @@ "108": "Data sync found conflicts, you can view the generated conflict content in [Data History]", "109": "Remove reminder completed [%s]", "110": "Renaming...", - "111": "Saving document [%s]...", + "111": "Saving data [%s]...", "112": "Do not include Markdown syntax marker [%s]", "113": "Completing data writing...", "114": "Tag cannot be empty", diff --git a/app/appearance/langs/es_ES.json b/app/appearance/langs/es_ES.json index ff6b6651e..faf991ed3 100644 --- a/app/appearance/langs/es_ES.json +++ b/app/appearance/langs/es_ES.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "Después de habilitar, se admitirá la sintaxis _foo_ en cursiva y __foo__ en negrita", "currentNotebook": "Cuaderno actual", "containerBlockTip1": "Habilitar bloques de contenedores generará resultados de búsqueda duplicados", - "containerBlockTip2": "Habilitar bloques de documentos actualmente solo admite la búsqueda de títulos de documentos", "copyAsPNG": "Copiar como PNG", "unbindBlock": "Desvincular bloque", "showTitle": "Mostrar título de la base de datos", @@ -1425,7 +1424,7 @@ "108": "La sincronizaci\u00f3n de datos encontr\u00f3 en conflictos, puede ver el contenido del conflicto generado en [Historial de datos]", "109": "Eliminación de recordatorios completada [%s]", "110": "Renombrar...", - "111": "Guardando documento [%s]...", + "111": "Guardando los datos [%s]...", "112": "No incluir marcador de sintaxis Markdown [%s]", "113": "Completando la escritura de datos...", "114": "La etiqueta no puede estar vacía", diff --git a/app/appearance/langs/fr_FR.json b/app/appearance/langs/fr_FR.json index 4c033b984..5b2b90447 100644 --- a/app/appearance/langs/fr_FR.json +++ b/app/appearance/langs/fr_FR.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "Après l'activation, la syntaxe _foo_ italique et la syntaxe __foo__ gras seront prises en charge", "currentNotebook": "Carnet actuel", "containerBlockTip1": "L'activation des blocs de conteneurs entraînera des résultats de recherche en double", - "containerBlockTip2": "L'activation des blocs de documents ne prend actuellement en charge que la recherche de titres de documents", "copyAsPNG": "Copier en tant PNG", "unbindBlock": "Dissocier le bloc", "showTitle": "Afficher le titre de la base de données", @@ -1425,7 +1424,7 @@ "108": "La synchronisation des données a trouvé des conflits, vous pouvez afficher le contenu du conflit généré dans [Historique des données]", "109": "Supprimer le rappel terminé [%s]", "110": "Renommer...", - "111": "Enregistrement du document [%s]...", + "111": "Enregistrement des données [%s]...", "112": "Ne pas inclure les balises de syntaxe Markdown [%s]", "113": "Fin de l'écriture des données...", "114": "La balise ne peut pas être vide", diff --git a/app/appearance/langs/he_IL.json b/app/appearance/langs/he_IL.json index c07d6513f..2f8470c12 100644 --- a/app/appearance/langs/he_IL.json +++ b/app/appearance/langs/he_IL.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "לאחר הפעלה, _foo_ תחביר נטוי ו __foo__ תחביר מודגש יתמוך בקלט", "currentNotebook": "מחברת נוכחית", "containerBlockTip1": "הפעלת בלוקים יחידתיים תוביל לתוצאות חיפוש כפולות", - "containerBlockTip2": "הפעלת בלוקי מסמכים תומכת כרגע רק בחיפוש הכותרות של המסמכים", "copyAsPNG": "העתק כ-PNG", "unbindBlock": "שחרר בלוק", "showTitle": "הצג כותרת מסד נתונים", @@ -1425,7 +1424,7 @@ "108": "נמצא סכסוך בנתוני הסנכרון, תוכל לראות את התוכן שנוצר בסכסוך ב[היסטוריית הנתונים]", "109": "הסרת תזכורת הושלמה [%s]", "110": "מחזיק...", - "111": "שומר את המסמך [%s]...", + "111": "שומר את הנתונים [%s]...", "112": "אין לכלול את סימן התחביר של Markdown [%s]", "113": "שלמת הנתונים מתבצעת...", "114": "תייג לא יכול להיות ריקן", diff --git a/app/appearance/langs/it_IT.json b/app/appearance/langs/it_IT.json index 656b8fd1b..3158bf286 100644 --- a/app/appearance/langs/it_IT.json +++ b/app/appearance/langs/it_IT.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "Dopo aver attivato, saranno supportate la sintassi in corsivo _foo_ e la sintassi in grassetto __foo__", "currentNotebook": "Taccuino corrente", "containerBlockTip1": "L'abilitazione dei blocchi contenitore comporterà risultati di ricerca duplicati", - "containerBlockTip2": "L'abilitazione dei blocchi documento attualmente supporta solo la ricerca per titoli di documento", "copyAsPNG": "Copia come PNG", "unbindBlock": "Scollega blocco", "showTitle": "Mostra titolo del database", @@ -1425,7 +1424,7 @@ "108": "La sincronizzazione dei dati ha trovato conflitti, puoi visualizzare il contenuto del conflitto generato in [Cronologia Dati]", "109": "Rimozione del promemoria completata [%s]", "110": "Rinominando...", - "111": "Salvataggio del documento [%s]...", + "111": "Salvataggio dei dati [%s]...", "112": "Non includere il marcatore di sintassi Markdown [%s]", "113": "Completamento della scrittura dei dati...", "114": "L'etichetta non può essere vuota", diff --git a/app/appearance/langs/ja_JP.json b/app/appearance/langs/ja_JP.json index edd851714..3024c1eb5 100644 --- a/app/appearance/langs/ja_JP.json +++ b/app/appearance/langs/ja_JP.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "_foo_ 形式の斜体構文と __foo__ 形式の太字構文を有効にします", "currentNotebook": "現在のノートブック", "containerBlockTip1": "コンテナブロックを有効にすると重複した検索結果が表示されます", - "containerBlockTip2": "ドキュメントブロックはタイトルの検索のみをサポートしています", "copyAsPNG": "PNG としてコピー", "unbindBlock": "ブロックのバインドを解除", "showTitle": "データベースのタイトルを表示", @@ -1425,7 +1424,7 @@ "108": "データ同期で競合が検出されました。生成された競合内容は [データ履歴] で確認できます", "109": "リマインダーの削除が完了しました [%s]", "110": "名前を変更しています...", - "111": "ドキュメントを保存しています [%s]...", + "111": "データを保存しています [%s]...", "112": "Markdown 構文マーカーを含めないでください [%s]", "113": "データの書き込みを完了しています...", "114": "タグは空にできません", diff --git a/app/appearance/langs/pl_PL.json b/app/appearance/langs/pl_PL.json index 964fc18c7..5343f6acf 100644 --- a/app/appearance/langs/pl_PL.json +++ b/app/appearance/langs/pl_PL.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "Po włączeniu zostanie obsługiwana składnia kursywy i pogrubionego tekstu w formacie _foo_ i __foo__", "currentNotebook": "Bieżący notes", "containerBlockTip1": "Włączenie bloków kontenerowych spowoduje duplikację wyników wyszukiwania", - "containerBlockTip2": "Włączenie bloków dokumentów obecnie wspiera tylko wyszukiwanie tytułów dokumentów", "copyAsPNG": "Kopiuj jako PNG", "unbindBlock": "Odłącz blok", "showTitle": "Pokaż tytuł bazy danych", @@ -1425,7 +1424,7 @@ "108": "Synchronizacja danych wykryła konflikty, możesz zobaczyć wygenerowaną treść konfliktów w [Historii danych]", "109": "Usunięcie przypomnienia zakończone [%s]", "110": "Zmiana nazwy...", - "111": "Zapisywanie dokumentu [%s]...", + "111": "Zapisywanie danych [%s]...", "112": "Nie dołączać znacznika składni Markdown [%s]", "113": "Zakończenie pisania danych...", "114": "Tag nie może być pusty", diff --git a/app/appearance/langs/ru_RU.json b/app/appearance/langs/ru_RU.json index 6194d7d22..b436c66bd 100644 --- a/app/appearance/langs/ru_RU.json +++ b/app/appearance/langs/ru_RU.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "После включения будет поддерживаться синтаксис курсива _foo_ и синтаксис жирного текста __foo__", "currentNotebook": "Текущий блокнот", "containerBlockTip1": "Включение контейнерных блоков приведет к дублированию результатов поиска", - "containerBlockTip2": "Включение блочных документов в настоящее время поддерживает только поиск по заголовкам документов", "copyAsPNG": "Скопировать как PNG", "unbindBlock": "Отвязать блок", "showTitle": "Показать заголовок базы данных", @@ -1425,7 +1424,7 @@ "108": "Синхронизация данных обнаружила конфликты, вы можете просмотреть созданный контент конфликта в [Истории данных]", "109": "Удаление напоминания завершено [%s]", "110": "Переименование...", - "111": "Сохранение документа [%s]...", + "111": "Сохранение данных [%s]...", "112": "Не включать маркер синтаксиса Markdown [%s]", "113": "Завершение записи данных...", "114": "Тег не может быть пустым", diff --git a/app/appearance/langs/zh_CHT.json b/app/appearance/langs/zh_CHT.json index 88804fdd9..4f6ed44ae 100644 --- a/app/appearance/langs/zh_CHT.json +++ b/app/appearance/langs/zh_CHT.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "啟用後將支援 _foo_ 傾斜語法和 __foo__ 加粗語法輸入", "currentNotebook": "目前筆記本", "containerBlockTip1": "啟用容器塊後會導致搜尋結果重複", - "containerBlockTip2": "啟用文件塊目前僅支援搜尋文件名稱", "copyAsPNG": "複製為 PNG", "unbindBlock": "取消綁定塊", "showTitle": "顯示資料庫標題", @@ -1425,7 +1424,7 @@ "108": "資料同步發現衝突,可在 [資料歷史] 中查看生成的衝突內容", "109": "移除提醒完畢 [%s]", "110": "正在重命名...", - "111": "正在保存文檔 [%s]...", + "111": "正在保存数据 [%s]...", "112": "請勿包含 Markdown 語法標記符 [%s]", "113": "正在完成資料寫入...", "114": "標籤不能為空", diff --git a/app/appearance/langs/zh_CN.json b/app/appearance/langs/zh_CN.json index 8085ed98b..466c34ba5 100644 --- a/app/appearance/langs/zh_CN.json +++ b/app/appearance/langs/zh_CN.json @@ -64,7 +64,6 @@ "editorMarkdownInlineUnderscoreTip": "启用后将支持 _foo_ 倾斜语法和 __foo__ 加粗语法输入", "currentNotebook": "当前笔记本", "containerBlockTip1": "启用容器块后会导致搜索结果重复", - "containerBlockTip2": "启用文档块目前仅支持搜索文档名", "copyAsPNG": "复制为 PNG", "unbindBlock": "取消绑定块", "showTitle": "显示数据库标题", @@ -1425,7 +1424,7 @@ "108": "数据同步发现冲突,可在 [数据历史] 中查看生成的冲突内容", "109": "移除提醒完毕 [%s]", "110": "正在重命名...", - "111": "正在保存文档 [%s]...", + "111": "正在保存数据 [%s]...", "112": "请勿包含 Markdown 语法标记符 [%s]", "113": "正在完成数据写入...", "114": "标签不能为空", diff --git a/app/src/config/query.ts b/app/src/config/query.ts index 3c42f3243..a7ad58f88 100644 --- a/app/src/config/query.ts +++ b/app/src/config/query.ts @@ -154,7 +154,7 @@ export const query = {
- ${window.siyuan.languages.doc} [1] [2] + ${window.siyuan.languages.doc}
@@ -163,7 +163,6 @@ export const query = {
[1] ${window.siyuan.languages.containerBlockTip1}
-
[2] ${window.siyuan.languages.containerBlockTip2}
diff --git a/app/src/search/menu.ts b/app/src/search/menu.ts index be51ba8e8..c00682041 100644 --- a/app/src/search/menu.ts +++ b/app/src/search/menu.ts @@ -161,7 +161,7 @@ export const filterMenu = (config: Config.IUILayoutTabSearchConfig, cb: () => vo
- ${window.siyuan.languages.doc} [1] [2] + ${window.siyuan.languages.doc}
@@ -169,7 +169,6 @@ export const filterMenu = (config: Config.IUILayoutTabSearchConfig, cb: () => vo
[1] ${window.siyuan.languages.containerBlockTip1}
-
[2] ${window.siyuan.languages.containerBlockTip2}
diff --git a/kernel/model/appearance.go b/kernel/model/appearance.go index dccdb8c28..cd08f0248 100644 --- a/kernel/model/appearance.go +++ b/kernel/model/appearance.go @@ -116,6 +116,7 @@ func loadThemes() { Conf.Appearance.DarkThemes = nil Conf.Appearance.LightThemes = nil + var daylightTheme, midnightTheme *conf.AppearanceTheme for _, themeDir := range themeDirs { if !util.IsDirRegularOrSymlink(themeDir) { continue @@ -151,6 +152,14 @@ func loadThemes() { } } + if "midnight" == name { + midnightTheme = t + continue + } else if "daylight" == name { + daylightTheme = t + continue + } + if "dark" == mode { Conf.Appearance.DarkThemes = append(Conf.Appearance.DarkThemes, t) } else if "light" == mode { @@ -172,6 +181,9 @@ func loadThemes() { go watchTheme(filepath.Join(util.ThemesPath, name)) } + + Conf.Appearance.LightThemes = append([]*conf.AppearanceTheme{daylightTheme}, Conf.Appearance.LightThemes...) + Conf.Appearance.DarkThemes = append([]*conf.AppearanceTheme{midnightTheme}, Conf.Appearance.DarkThemes...) } func loadIcons() { diff --git a/kernel/model/assets.go b/kernel/model/assets.go index dc6ae71f5..e21046a33 100644 --- a/kernel/model/assets.go +++ b/kernel/model/assets.go @@ -521,17 +521,19 @@ func RemoveUnusedAssets() (ret []string) { sql.BatchRemoveAssetsQueue(hashes) for _, unusedAsset := range unusedAssets { - if unusedAsset = filepath.Join(util.DataDir, unusedAsset); filelock.IsExist(unusedAsset) { - info, statErr := os.Stat(unusedAsset) + absPath := filepath.Join(util.DataDir, unusedAsset) + if filelock.IsExist(absPath) { + info, statErr := os.Stat(absPath) if statErr == nil { size += info.Size() } - if err := filelock.Remove(unusedAsset); err != nil { - logging.LogErrorf("remove unused asset [%s] failed: %s", unusedAsset, err) + if err := filelock.Remove(absPath); err != nil { + logging.LogErrorf("remove unused asset [%s] failed: %s", absPath, err) } + util.RemoveAssetText(unusedAsset) } - ret = append(ret, unusedAsset) + ret = append(ret, absPath) } if 0 < len(ret) { IncSync() @@ -569,6 +571,9 @@ func RemoveUnusedAsset(p string) (ret string) { logging.LogErrorf("remove unused asset [%s] failed: %s", absPath, err) } ret = absPath + + util.RemoveAssetText(p) + IncSync() indexHistoryDir(filepath.Base(historyDir), util.NewLute()) @@ -655,6 +660,45 @@ func RenameAsset(oldPath, newName string) (newPath string, err error) { } } + storageAvDir := filepath.Join(util.DataDir, "storage", "av") + if gulu.File.IsDir(storageAvDir) { + entries, readErr := os.ReadDir(storageAvDir) + if nil != readErr { + logging.LogErrorf("read dir [%s] failed: %s", storageAvDir, readErr) + err = readErr + return + } + + for _, entry := range entries { + if !strings.HasSuffix(entry.Name(), ".json") || !ast.IsNodeIDPattern(strings.TrimSuffix(entry.Name(), ".json")) { + continue + } + + data, readDataErr := filelock.ReadFile(filepath.Join(util.DataDir, "storage", "av", entry.Name())) + if nil != readDataErr { + logging.LogErrorf("read file [%s] failed: %s", entry.Name(), readDataErr) + err = readDataErr + return + } + + if bytes.Contains(data, []byte(oldPath)) { + data = bytes.ReplaceAll(data, []byte(oldPath), []byte(newPath)) + if writeDataErr := filelock.WriteFile(filepath.Join(util.DataDir, "storage", "av", entry.Name()), data); nil != writeDataErr { + logging.LogErrorf("write file [%s] failed: %s", entry.Name(), writeDataErr) + err = writeDataErr + return + } + } + + util.PushEndlessProgress(fmt.Sprintf(Conf.Language(111), util.EscapeHTML(entry.Name()))) + } + } + + if ocrText := util.GetAssetText(oldPath); "" != ocrText { + // 图片重命名后 ocr-texts.json 需要更新 https://github.com/siyuan-note/siyuan/issues/12974 + util.SetAssetText(newPath, ocrText) + } + IncSync() return } diff --git a/kernel/util/ocr.go b/kernel/util/ocr.go index 83ecd96fc..cd4327106 100644 --- a/kernel/util/ocr.go +++ b/kernel/util/ocr.go @@ -164,12 +164,21 @@ func OcrAsset(asset string) (ret []map[string]interface{}) { return } -// https://github.com/siyuan-note/siyuan/pull/11708 func GetAssetText(asset string) (ret string) { + assetsTextsLock.Lock() ret = assetsTexts[asset] + assetsTextsLock.Unlock() + assetsTextsChanged.Store(true) return } +func RemoveAssetText(asset string) { + assetsTextsLock.Lock() + delete(assetsTexts, asset) + assetsTextsLock.Unlock() + assetsTextsChanged.Store(true) +} + func IsTesseractExtractable(p string) bool { lowerName := strings.ToLower(p) return strings.HasSuffix(lowerName, ".png") || strings.HasSuffix(lowerName, ".jpg") || strings.HasSuffix(lowerName, ".jpeg")