@nestos/kanban-ui
v0.5.4
Published
Portable DOM Kanban UI with an injected local or remote KanbanClient.
Readme
@nestos/kanban-ui
独立的原生 DOM 看板界面。宿主注入本地或远程 KanbanClient,以及文案、图标和导航;UI 不实现后台存储、执行调度、恢复或授权。
npm install @nestos/kanban-ui @nestos/kanban @nestos/ui-common使用
import {mountKanban} from '@nestos/kanban-ui';
import '@nestos/kanban-ui/style.css';
const view = await mountKanban(container, {
service,
presentation: {
text: (key, values) => translations(key, values),
icons: {refreshView, more, close},
log: logMetadata,
referenceUrl: path => resourceUrl(path),
},
selected: path => saveNavigation(path),
openSession: id => openResource(id),
});
await view.open({boardId: 'work'});
await view.dispose();文案 key 不带 kanban. 前缀;图标为可信宿主提供的 SVG/HTML。主题通过 --kanban-* CSS 变量设置;NestOS 在适配样式中映射原有主题变量。所有呈现配置按实例注入,不存在全局语言、当前宿主或跨实例回调。UI 不导入 NestOS、common 或 vfs-ui。资源活动为可选能力;未接入时不显示执行筛选,也不安装活动轮询。接入时可见且没有未保存输入才轮询,销毁后停止;通知不会覆盖草稿。错误只展示安全错误码与宿主文案,不输出正文或完整请求。
来源发现仅通过内置 apply-discovery 提交受校验的变更与检查点,二者同事务保存。宿主不提供可变 reducer 扩展。来源可声明 system/project/collection scope;历史 projectId 仍兼容。库不提供内部 mechanisms 入口。消费者直接从 /contracts 导入 DTO 和 KanbanClient,不经过应用包转出。
执行桥不解释模型或业务。执行桥和来源扫描的 tick()(兼容 scan())由宿主显式驱动;扫描 quiesce/dispose 拒绝新准入并排空已接纳操作。只有注入 subscribe 才接收唤醒。executionReference 将实际执行 ID 映射为宿主命名空间,不在核心写死 NestOS 引用。ConditionalKanbanStore 只要求 query/transaction 与可选正文资产端口,适配器负责授权连接及 unknown 写入核对,不在 Store 内盲重试。
模块边界
- 唯一运行时界面入口为包根;样式通过
@nestos/kanban-ui/style.css显式加载。 - 只从
@nestos/kanban/contracts引入 DTO 与无 I/O 的纯函数,不导入后台根入口、storage、runtime 或 integration。 - ui-common 提供通用标题栏;窗口、主题、翻译、会话导航及应用通知按实例注入。
- Markdown 渲染器仅在详情需要时加载;显式目录路由不预读当前身份,创建看板时再读取,事项详情按需加载身份用于操作展示。
getBoardSnapshot可注入宿主已有的只读看板摘要,用于工作区、决策和日志页签导航;UI 复制后使用,目标列表仍由服务端授权读取。事件失效或手动刷新不复用该投影;没有投影时,目录与目标列表并行读取。身份仅在事项详情和创建看板时按需读取,兼容无 initialResource 的独立自动选择入口。- KanbanClient 可以是本地服务,也可以是 HTTP/RPC 客户端;UI 不解释网络地址、认证凭据或宿主执行器。
- 远程失败保留具体安全错误码和草稿;只在权威目录确认资源失效后调用 setResourceUnavailable。
- 销毁释放监听、轮询及宿主插槽;只隐藏的视图保留草稿并暂停活动补读。
独立开发与发布
pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm pack类型与 UI 行为测试使用公开看板包作为本地客户端;远程接入测试只提供 RPC 形态的客户端对象。发布包只包含 dist、README 与许可证,不包含 NestOS 或后台源码。工作区的源码联调和本地快照分别按 NestOS 的标准独立库机制接入。
交付操作可由宿主通过 KanbanItemOperation.group 声明展示分组。同组只展示当前执行阶段,保留该阶段原始会话、确认、取消和跳过目标;runAction 可将恢复按钮路由到专用恢复动作。取消/跳过影响预览按组汇总,提交仍携带完整原始操作身份。未提供分组的宿主沿用依赖连通组展示。业务顺序和准入由宿主决定。
任务、交付与详情读取使用各自的状态展示。completion 为 waived 或 mixed 时明确标注验收豁免;自动流程存在错误或未知步骤时展示暂停,流程结束不替代各步骤回执。关联会话或操作面板读取失败只在对应区域显示安全原因和“重试加载”,不改写任务状态,重试不会派发或重放执行。宿主提供 readError.*、retryRead、completionOutcome.*、automaticBlocked 和 automaticFinished 文案。
