Release 1.0.3
v1.0.3
✨ 设置页重构:自定义Tab分页 + 声明式API兼容
-
恢复自定义Tab分页UI
- 使用
MainSettingPage(继承SettingPage)在display()中渲染 Tab 栏 + 内容区域切换 - 三个 Tab 页:常规 / 预设 / 导入导出,点击切换,保留之前的交互体验
- 合并原
PresetsSettingPage、ImportExportSettingPage为MainSettingPage的内部方法
- 使用
-
兼容 Obsidian 1.13.0+ 声明式设置API
getSettingDefinitions()返回单个type: 'page'项,通过page工厂函数创建MainSettingPage- 同时保留
getControlValue()/setControlValue()覆写方法 - 兼顾自定义 Tab UI 与设置搜索功能
✅ Obsidian 审核合规修复
-
修复 Warning: prefer-create-el
- 导出功能:
document.createElement('a')→containerEl.createDiv({cls:'sr-hidden'}).createEl('a', {attr:{...}}) - 导入功能:
document.createElement('input')→containerEl.createDiv({cls:'sr-hidden'}).createEl('input', {type:'file', attr:{...}})
- 导出功能:
-
修复 Warning: 不安全的 any 类型
catch(e: any)→catch(e: unknown)+instanceof Error类型守卫- 错误消息提取:
e.message ?? String(e)→e instanceof Error ? e.message : String(e)
-
移除未使用的导入
- 移除
SettingDefinitionGroup类型导入(不再使用声明式分组)
- 移除
✨ Settings Page Refactor: Custom Tabs + Declarative API Compatibility
-
Restored custom Tab navigation UI
- Implemented
MainSettingPage(extendsSettingPage) rendering Tab bar + content area switching indisplay() - Three tabs: General / Presets / Import-Export, click to switch, preserving the previous interaction experience
- Merged
PresetsSettingPageandImportExportSettingPageintoMainSettingPageinternal methods
- Implemented
-
Compatible with Obsidian 1.13.0+ declarative settings API
getSettingDefinitions()returns a singletype: 'page'item, creatingMainSettingPageviapagefactory function- Retained
getControlValue()/setControlValue()override methods - Balances custom Tab UI with settings search functionality
✅ Obsidian Review Compliance Fixes
-
Fixed Warning: prefer-create-el
- Export:
document.createElement('a')→containerEl.createDiv({cls:'sr-hidden'}).createEl('a', {attr:{...}}) - Import:
document.createElement('input')→containerEl.createDiv({cls:'sr-hidden'}).createEl('input', {type:'file', attr:{...}})
- Export:
-
Fixed Warning: unsafe any types
catch(e: any)→catch(e: unknown)+instanceof Errortype guard- Error message extraction:
e.message ?? String(e)→e instanceof Error ? e.message : String(e)
-
Removed unused imports
- Removed
SettingDefinitionGrouptype import (no longer using declarative groups)
- Removed
Full Changelog: v1.0.2...v1.0.3