description: "设置领域底座插件:设置命名空间 scope 服务、schema 服务,以及 dsh Web 客户端的规范设置 slot 类型约定。"
English | 中文
本包使 Web 客户端功能能够公开由宿主设置文档支持的可编辑偏好设置,而无需自行实现传输或 schema 处理。每项功能都可按命名空间读写、原子更新多个字段、校验 schema,并避免静默覆盖并发更改。它还为设置界面框架、页面、标题栏操作、插件标签页和引导流程提供标准扩展点,但自身不渲染任何界面。任何持有偏好设置的功能都可在不依赖呈现包的情况下使用它;设置外壳由单独的包提供。
功能插件用本包存储与编辑自己的偏好设置,而无需重新实现传输层或 schema 处理。每个组合挂载一次即可;它注入 remote 服务及其 settings 命名空间,并持有浏览器中唯一的 settings.describe 读取方。
功能调用 ctx.settingsScope.bind(spec) 并传入按命名空间的 spec,得到一个由共享文档镜像派生的 scope。scope 快照携带解析后的分区、组合 base、原始 user、revision、可写性以及 host/内存模式;字段只要出现在 user 中即视为覆盖,即使其值与 base 相等,unset 会清除该覆盖。写入经 scope 进行:set 与 unset 提交一个操作,mutate 则原子提交多个有序操作。每次写入都以命名空间 revision 作为 expectedRevision 围栏,因此来自另一界面的并发写入会被拒绝,而不是被静默覆盖。暂存编辑器可以把开始草拟时读取的 revision 作为固定围栏传入;否则 scope 使用最新排队或镜像 revision。
设置界面会注册进本包声明的 slot 类型。外壳(sidebar.settings 占位方、导航、界面框架)位于 ui-settings-general;功能页面注册 settings.section 贡献;「插件」分区承载 settings.plugins.tab 页面;首次使用引导步骤注册 settings.onboarding。跨命名空间的表面(schema 内省、已服务命名空间目录、hasDocument)通过 ctx.settingsScope.describe() 读同一面镜像。
绑定后的 scope 会立即反映当前文档 revision;提交成功的写入把应答折回镜像、不再重读。被拒绝或失败的最新写入触发一次镜像恢复读取;被取代的写入把恢复留给后继者。若 spec 未提供 decode,则分区不是普通对象或未通过 schema 重建时一律不发布任何值,于是行渲染自己的缺失状态,而不是一份半解码的值。
以下页面覆盖设置界面家族及其背后的持久化 seam。
无。该包是浏览器端 UI 插件层,不注册任何面向模型的内容。
无;该包既不组装也不发送提供方请求。
这些限制说明设置传输层够不到的地方;它们是当前包约束。
unavailable 起步且从不跨线路;尽管 Connection 认证覆盖 API,它支撑的每一行仍在那里无效。运行时不变式: 不发布伴生入口。本包只把 settings.section ledger 投影为导航,不发出 Cordis 事件,也不持有跨插件可变关系;slot core 会在加载时拒绝冲突。