Skip to content

Release 1.0.3

Choose a tag to compare

@Tasete Tasete released this 14 Aug 04:19
· 2 commits to main since this release

v1.0.3

✨ 设置页重构:自定义Tab分页 + 声明式API兼容

  • 恢复自定义Tab分页UI

    • 使用 MainSettingPage(继承 SettingPage)在 display() 中渲染 Tab 栏 + 内容区域切换
    • 三个 Tab 页:常规 / 预设 / 导入导出,点击切换,保留之前的交互体验
    • 合并原 PresetsSettingPageImportExportSettingPageMainSettingPage 的内部方法
  • 兼容 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 (extends SettingPage) rendering Tab bar + content area switching in display()
    • Three tabs: General / Presets / Import-Export, click to switch, preserving the previous interaction experience
    • Merged PresetsSettingPage and ImportExportSettingPage into MainSettingPage internal methods
  • Compatible with Obsidian 1.13.0+ declarative settings API

    • getSettingDefinitions() returns a single type: 'page' item, creating MainSettingPage via page factory 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:{...}})
  • Fixed Warning: unsafe any types

    • catch(e: any)catch(e: unknown) + instanceof Error type guard
    • Error message extraction: e.message ?? String(e)e instanceof Error ? e.message : String(e)
  • Removed unused imports

    • Removed SettingDefinitionGroup type import (no longer using declarative groups)

Full Changelog: v1.0.2...v1.0.3