diff --git a/manifest.json b/manifest.json index 73d5cca..559e46c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "sync-engine", "name": "Sync Engine", - "version": "3.0.4", + "version": "3.0.5", "minAppVersion": "1.12.3", "authorUrl": "https://hesprs.github.io", "description": "The next-generation syncing plugin: Fast · Free · Extend with Modules. Supports WebDAV and S3.", diff --git a/modules.json b/modules.json index 7c476e0..2843b18 100644 --- a/modules.json +++ b/modules.json @@ -29,29 +29,29 @@ { "id": "i18n-zh", "name": "I18n 简体中文", - "version": "0.0.10", + "version": "0.0.11", "description": "Simplified Chinese UI language pack. / 简体中文介面语言包。", "icon": "languages", "main": "https://sync.consensia.cc/modules/i18n-zh.js", - "minPluginVersion": "3.0.3" + "minPluginVersion": "3.0.5" }, { "id": "i18n-zh-TW", "name": "I18n 繁體中文", - "version": "0.0.2", + "version": "0.0.3", "description": "Traditional Chinese UI language pack. / 繁體中文介面語言包。", "icon": "languages", "main": "https://sync.consensia.cc/modules/i18n-zh-TW.js", - "minPluginVersion": "3.0.3" + "minPluginVersion": "3.0.5" }, { "id": "i18n-ru", "name": "I18n Русский", - "version": "0.0.2", + "version": "0.0.3", "description": "Russian UI language pack. / Пакет русского интерфейса.", "icon": "languages", "main": "https://sync.consensia.cc/modules/i18n-ru.js", - "minPluginVersion": "3.0.3" + "minPluginVersion": "3.0.5" }, { "id": "smart-merge", diff --git a/packages/i18n/src/ru/translations.ts b/packages/i18n/src/ru/translations.ts index 4eeedfe..b431ceb 100644 --- a/packages/i18n/src/ru/translations.ts +++ b/packages/i18n/src/ru/translations.ts @@ -104,7 +104,6 @@ const ru: Translations = { development: 'Разработка', diffMatchPatch: 'Объединить', disableModule: 'Отключить модуль', - disabled: 'Отключено', done: 'Готово', download: 'Скачать', downloadModule: 'Скачать модуль', @@ -114,13 +113,14 @@ const ru: Translations = { editSources: 'Редактировать источники', enable: 'Включить', enableModule: 'Включить модуль', - enabled: 'Включено', exclusionRules: 'Правила исключения', exclusionRulesDescription: 'Файлы и папки, соответствующие этим glob-шаблонам, не будут синхронизироваться. Не забудьте указать расширения файлов (например, .md), если хотите исключить файлы.', executing: 'Выполняется', export: 'Экспорт', - exportLogsDescription: 'Экспортировать логи плагина в файл внутри хранилища.', + exportLogsDescription: + 'Экспортировать логи плагина в файл внутри хранилища. Укажите папку для экспорта логов в поле ниже.', + exportLogsDirectoryPlaceholder: 'Укажите папку для экспорта логов', exportLogsFailed: 'Не удалось экспортировать логи', exportLogsToFile: 'Экспортировать логи в файл', failed: 'Ошибка', @@ -204,10 +204,10 @@ const ru: Translations = { noMatchingModulesFound: 'Подходящие модули не найдены.', noModulesAvailable: 'Нет доступных модулей.', none: 'Нет', - notInstalled: 'Не установлено', noticeStatusOnMobile: 'Уведомления о статусе на мобильных устройствах', noticeStatusOnMobileDescription: 'Отображать всплывающее уведомление на мобильных устройствах во время синхронизации. Заменяет строку состояния, используемую на ПК.', + official: 'Официальный', omittedInvalidEntry: 'Пропущено недействительных записей: {{count}}.', openPanel: 'Открыть панель', realtimeSync: 'Синхронизация в реальном времени', diff --git a/packages/i18n/src/zh-TW/translations.ts b/packages/i18n/src/zh-TW/translations.ts index 1d1f48e..6f8df23 100644 --- a/packages/i18n/src/zh-TW/translations.ts +++ b/packages/i18n/src/zh-TW/translations.ts @@ -102,7 +102,6 @@ const zhTW: Translations = { development: '開發者選項', diffMatchPatch: '文字合併', disableModule: '停用模組', - disabled: '已停用', done: '完成', download: '下載', downloadModule: '下載模組', @@ -112,13 +111,13 @@ const zhTW: Translations = { editSources: '編輯來源', enable: '啟用', enableModule: '啟用模組', - enabled: '已啟用', exclusionRules: '排除規則', exclusionRulesDescription: '符合這些 Glob 萬用字元模式的檔案或資料夾將不會進行同步。若要排除特定檔案,請記得加上副檔名(例如 .md)。', executing: '執行中', export: '匯出', - exportLogsDescription: '將外掛程式紀錄匯出至儲存庫中的檔案。', + exportLogsDescription: '將外掛程式紀錄匯出至儲存庫中的檔案。請在欄位中設定紀錄匯出目錄。', + exportLogsDirectoryPlaceholder: '設定紀錄匯出的目標目錄', exportLogsFailed: '匯出紀錄失敗', exportLogsToFile: '匯出紀錄至檔案', failed: '失敗', @@ -198,9 +197,9 @@ const zhTW: Translations = { noMatchingModulesFound: '未找到符合條件的模組。', noModulesAvailable: '無可用模組。', none: '無', - notInstalled: '未安裝', noticeStatusOnMobile: '行動裝置同步狀態通知', noticeStatusOnMobileDescription: '同步進行時於行動裝置上顯示通知訊息(取代桌面版的狀態列)。', + official: '官方', omittedInvalidEntry: '已忽略 {{count}} 項無效條目。', openPanel: '開啟面板', realtimeSync: '即時同步', diff --git a/packages/i18n/src/zh/translations.ts b/packages/i18n/src/zh/translations.ts index 332e332..9d410ea 100644 --- a/packages/i18n/src/zh/translations.ts +++ b/packages/i18n/src/zh/translations.ts @@ -90,7 +90,6 @@ const zh: Translations = { development: '开发', diffMatchPatch: '合并', disableModule: '禁用模块', - disabled: '已禁用', done: '完成', download: '下载', downloadModule: '下载模块', @@ -100,13 +99,13 @@ const zh: Translations = { editSources: '编辑源', enable: '启用', enableModule: '启用模块', - enabled: '已启用', exclusionRules: '排除规则', exclusionRulesDescription: '匹配这些 Glob 模式的文件 / 文件夹将不会被同步。如果您想排除文件,请记得添加文件扩展名(例如 .md)。', executing: '正在执行', export: '导出', - exportLogsDescription: '将插件日志导出到库中的文件中。', + exportLogsDescription: '将插件日志导出到仓库中的文件。请在输入框中设置日志导出目录。', + exportLogsDirectoryPlaceholder: '设置日志导出的目录', exportLogsFailed: '导出日志失败', exportLogsToFile: '导出日志到文件', failed: '失败', @@ -185,10 +184,10 @@ const zh: Translations = { noMatchingModulesFound: '未找到匹配的模块。', noModulesAvailable: '没有可用模块。', none: '无', - notInstalled: '未安装', noticeStatusOnMobile: '移动端同步状态提示', noticeStatusOnMobileDescription: '同步进行时在移动设备上显示通知提示。在桌面端则会替换状态栏显示。', + official: '官方', omittedInvalidEntry: '已忽略 {{count}} 条无效条目。', openPanel: '打开面板', realtimeSync: '实时同步', diff --git a/packages/plugin/CHANGELOG.md b/packages/plugin/CHANGELOG.md index 858dff0..a92544d 100644 --- a/packages/plugin/CHANGELOG.md +++ b/packages/plugin/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## Sync Engine v3.0.5 - 2026-08-12 + +- Fixed the bug that non-root hidden files and folders cannot be discovered in syncing by @pedrovillalobos. +- Improved module card display and adjusted panel size on mobile by @hesprs. +- Made log export directory configurable by @hesprs. + ## Sync Engine v3.0.4 - 2026-08-10 - Fixed the bug that "Rename and keep both" conflict resolution strategy duplicates content locally instead of propagate over remote. diff --git a/packages/plugin/dist/dev.spec.d.ts b/packages/plugin/dist/dev.spec.d.ts index 5784217..36a2be7 100644 --- a/packages/plugin/dist/dev.spec.d.ts +++ b/packages/plugin/dist/dev.spec.d.ts @@ -1,4 +1,4 @@ -import { Ct as FolderStat, St as FileStat, f as Request, p as RequestParam, ut as Fs, vt as RootFs, xt as Binary, yt as WrappedFs } from "./index-zKP375wq.spec.js"; +import { Ct as FolderStat, St as FileStat, f as Request, p as RequestParam, ut as Fs, vt as RootFs, xt as Binary, yt as WrappedFs } from "./index-Ddt5UAXp.spec.js"; //#region src/sdk/debug-wrapper.d.ts declare function debugWrapper(original: Fs, log: (content: string) => void): WrappedFs; //#endregion diff --git a/packages/plugin/dist/index-zKP375wq.spec.d.ts b/packages/plugin/dist/index-Ddt5UAXp.spec.d.ts similarity index 99% rename from packages/plugin/dist/index-zKP375wq.spec.d.ts rename to packages/plugin/dist/index-Ddt5UAXp.spec.d.ts index b1fd665..5d1fbe0 100644 --- a/packages/plugin/dist/index-zKP375wq.spec.d.ts +++ b/packages/plugin/dist/index-Ddt5UAXp.spec.d.ts @@ -545,6 +545,7 @@ declare class Observability { private readonly progressText; readonly settings: { noticeStatusOnMobile: boolean; + exportLogsDirectory: string; }; readonly i18n: { startSync: string; @@ -802,6 +803,7 @@ type DevelopmentSettingTranslations = { clearRecordsDescription: string; export: string; exportLogsDescription: string; + exportLogsDirectoryPlaceholder: string; exportLogsToFile: string; }; //#endregion @@ -948,20 +950,18 @@ declare class Bootstrap { //#region src/components/module-management/index.d.ts type ModuleManagementTranslations = { disableModule: string; - disabled: string; downloadModule: string; enableModule: string; - enabled: string; installed: string; loadingModules: string; noInstalledModulesFound: string; noMatchingModulesFound: string; noModulesAvailable: string; - notInstalled: string; updateAvailable: string; updateModule: string; deleteModule: string; editModuleInformation: string; + official: string; }; //#endregion //#region src/components/SourceEditorModal.d.ts diff --git a/packages/plugin/dist/index.spec.d.ts b/packages/plugin/dist/index.spec.d.ts index 71d6174..0a43aeb 100644 --- a/packages/plugin/dist/index.spec.d.ts +++ b/packages/plugin/dist/index.spec.d.ts @@ -1,2 +1,2 @@ -import { $ as TranslationResource, A as SyncTerminateReason, B as MoveRemote, C as SelectFromContext, Ct as FolderStat, D as writeWithValue, Dt as RecordStatsMap, E as readWithSize, Et as RecordStat, F as Upload, G as BaseTask, H as Download, I as ResolveConflict, J as TaskNames, K as ConflictResolver, L as RemoveRemote, M as Decider, N as DeciderInput, O as prefixWrapper, Ot as Stat, P as TaskFactory, Q as Translate, R as RemoveRecord, S as ModuleMeta, St as FileStat, T as pipe, Tt as Progress, U as CreateRemoteDir, V as MoveLocal, W as AddRecord, X as Fragment, Y as RecordStore, Z as ObsidianLanguageCode, _ as Events, _t as OutputAtom, a as FsWrapperEntry, at as StoreOperations, b as ExistingMemoryDB, bt as WriteAtom, c as RemoteFsEntry, ct as CustomAtom, d as RemoteRequestMiddlewareEntry, dt as InputAtom, et as Dispatch, f as Request, ft as ListReporter, g as Context, gt as OptimizerOutput, h as SettingEntry, ht as OptimizerInput, i as DeciderEntry, it as StoreAsync, j as CreateLocalDir, k as setNeedMigration, kt as StatsMap, l as RemoteLister, lt as DeleteAtom, m as RequestResponse, mt as MoveAtom, n as CheckConnectionResult, nt as DatabaseAsync, o as LocalRequestMiddlewareEntry, ot as StoreSync, p as RequestParam, pt as MkdirAtom, q as ConflictResolverPayload, r as ConflictResolverEntry, rt as DatabaseSync, s as OptimizerEntry, st as BatchOptimizer, t as VaultRequest, tt as On, u as RemoteListerEntry, ut as Fs, v as Settings, vt as RootFs, w as digOriginal, wt as MaybePromise, x as AugmentedModuleMeta, xt as Binary, y as Translations, yt as WrappedFs, z as RemoveLocal } from "./index-zKP375wq.spec.js"; +import { $ as TranslationResource, A as SyncTerminateReason, B as MoveRemote, C as SelectFromContext, Ct as FolderStat, D as writeWithValue, Dt as RecordStatsMap, E as readWithSize, Et as RecordStat, F as Upload, G as BaseTask, H as Download, I as ResolveConflict, J as TaskNames, K as ConflictResolver, L as RemoveRemote, M as Decider, N as DeciderInput, O as prefixWrapper, Ot as Stat, P as TaskFactory, Q as Translate, R as RemoveRecord, S as ModuleMeta, St as FileStat, T as pipe, Tt as Progress, U as CreateRemoteDir, V as MoveLocal, W as AddRecord, X as Fragment, Y as RecordStore, Z as ObsidianLanguageCode, _ as Events, _t as OutputAtom, a as FsWrapperEntry, at as StoreOperations, b as ExistingMemoryDB, bt as WriteAtom, c as RemoteFsEntry, ct as CustomAtom, d as RemoteRequestMiddlewareEntry, dt as InputAtom, et as Dispatch, f as Request, ft as ListReporter, g as Context, gt as OptimizerOutput, h as SettingEntry, ht as OptimizerInput, i as DeciderEntry, it as StoreAsync, j as CreateLocalDir, k as setNeedMigration, kt as StatsMap, l as RemoteLister, lt as DeleteAtom, m as RequestResponse, mt as MoveAtom, n as CheckConnectionResult, nt as DatabaseAsync, o as LocalRequestMiddlewareEntry, ot as StoreSync, p as RequestParam, pt as MkdirAtom, q as ConflictResolverPayload, r as ConflictResolverEntry, rt as DatabaseSync, s as OptimizerEntry, st as BatchOptimizer, t as VaultRequest, tt as On, u as RemoteListerEntry, ut as Fs, v as Settings, vt as RootFs, w as digOriginal, wt as MaybePromise, x as AugmentedModuleMeta, xt as Binary, y as Translations, yt as WrappedFs, z as RemoveLocal } from "./index-Ddt5UAXp.spec.js"; export { type AddRecord, type AugmentedModuleMeta, type BaseTask, type BatchOptimizer, type Binary, type CheckConnectionResult, type ConflictResolver, type ConflictResolverEntry, type ConflictResolverPayload, type Context, type CreateLocalDir, type CreateRemoteDir, type CustomAtom, type DatabaseAsync, type DatabaseSync, type Decider, type DeciderEntry, type DeciderInput, type DeleteAtom, type Dispatch, type Download, type Events, type ExistingMemoryDB, type FileStat, type FolderStat, type Fragment, type Fs, type FsWrapperEntry, type InputAtom, type ListReporter, type LocalRequestMiddlewareEntry, type MaybePromise, type MkdirAtom, type ModuleMeta, type MoveAtom, type MoveLocal, type MoveRemote, type ObsidianLanguageCode, type On, type OptimizerEntry, type OptimizerInput, type OptimizerOutput, type OutputAtom, type Progress, type RecordStat, type RecordStatsMap, type RecordStore, type RemoteFsEntry, type RemoteLister, type RemoteListerEntry, type RemoteRequestMiddlewareEntry, type RemoveLocal, type RemoveRecord, type RemoveRemote, type Request, type RequestParam, type RequestResponse, type ResolveConflict, type RootFs, SelectFromContext, type SettingEntry, type Settings, type Stat, type StatsMap, type StoreAsync, type StoreOperations, type StoreSync, type SyncTerminateReason, type TaskFactory, type TaskNames, type Translate, type TranslationResource, type Translations, type Upload, type VaultRequest, type WrappedFs, type WriteAtom, digOriginal, pipe, prefixWrapper, readWithSize, setNeedMigration, writeWithValue }; \ No newline at end of file diff --git a/packages/plugin/package.json b/packages/plugin/package.json index aaeea9f..62ea660 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,6 +1,6 @@ { "name": "@hesprs/sync-engine-sdk", - "version": "3.0.4", + "version": "3.0.5", "description": "Official SDK for developing modules targeting Sync Engine, the extensible Obsidian syncing plugin.", "keywords": [ "obsidian-plugin", diff --git a/packages/plugin/src/components/module-management/Card.tsx b/packages/plugin/src/components/module-management/Card.tsx index 6316fff..0e01fad 100644 --- a/packages/plugin/src/components/module-management/Card.tsx +++ b/packages/plugin/src/components/module-management/Card.tsx @@ -3,6 +3,7 @@ import { Show, createEffect } from 'solid-js'; import { compare } from 'verkit'; import type { AugmentedModuleMeta } from '@/modules/Extensibility'; import type { MaybePromise } from '@/types'; +import { OFFICIAL_SOURCE } from '@/modules/Extensibility'; import type { ModuleManagementContext, PendingAction } from './index'; import ModuleEditorModal from '../ModuleEditorModal'; @@ -36,7 +37,7 @@ export default function Card(props: { }; return ( -