Skip to content

feat(plugin-settings): 保存设置后通知插件变更 - #165

Merged
ztzpro merged 2 commits into
mainfrom
feat
Sep 25, 2026
Merged

ztzpro merged 2 commits into
mainfrom
feat

Conversation

@ztzpro

@ztzpro ztzpro commented Sep 25, 2026

Copy link
Copy Markdown
Member

feat(plugin-settings): 保存设置后通知插件变更

变更内容

  • 在 SDK 1.6 的 IPluginSettings 中增加 OnChanged 订阅接口。
  • 新增 PluginSettingChanged,用于传递设置键及旧值、新值。
  • 宿主在配置原子写入成功后计算新旧快照差异,并通知对应 key 的订阅者。
  • 订阅回调在设置服务锁外执行,避免回调触发保存、停用或取消订阅时产生锁竞争。
  • 单个插件回调异常会被独立记录,不会影响设置保存和其他订阅者。
  • 插件实例卸载时清理全部设置订阅,避免宿主配置服务继续持有插件回调。
  • 同步 SDK 和插件设置页相关说明文档。

行为语义

  • Set() 只修改内存状态,不触发回调。
  • Save() 成功写盘后才触发回调。
  • 值未发生变化时不触发回调。
  • 设置页当前仍在关闭时统一落盘,因此插件回调会在设置窗口关闭并保存成功后触发。
  • 回调线程不保证是 UI 线程,插件需要通过 IDispatcherFacade 切换线程。

- 在 SDK 1.6 的 IPluginSettings 中增加按键订阅接口 OnChanged,并新增 PluginSettingChanged 变更模型
- 在 PluginSettings 中记录已持久化快照,原子保存成功后比较新旧值并通知对应订阅者
- 隔离订阅者回调异常,避免单个插件回调影响其他插件和宿主设置保存
- 在 PluginInstance 卸载阶段清理宿主持有的插件设置订阅,避免回调引用阻止 AssemblyLoadContext 回收
- 同步 SDK、设置页和参数目标的契约文档
@ztzpro
ztzpro merged commit ecf79ab into main Sep 25, 2026
1 check passed
@ztzpro
ztzpro deleted the feat branch September 25, 2026 00:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant