{"_id":"@buckeyestudio/toh-client-ui-renderer","name":"@buckeyestudio/toh-client-ui-renderer","dist-tags":{"next":"0.1.1-rc.2","latest":"0.1.1-rc.2"},"versions":{"0.1.1-rc.2":{"name":"@buckeyestudio/toh-client-ui-renderer","description":"Browser UI renderer: React slot bindings, ctx.uiRenderer, and the assembled application root","version":"0.1.1-rc.2","publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/client/ui-renderer"},"type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./client":{"types":"./lib/types/client/index.d.ts","default":"./lib/client.js"},"./src/*":"./src/*","./package.json":"./package.json"},"toh":{"client":{"inject":["@buckeyestudio/toh-client-runtime"],"platform":"web","immediately":true}},"license":"MIT","author":{"name":"buckeyestudio"},"dependencies":{"use-sync-external-store":"1.6.0"},"peerDependencies":{"@buckeyestudio/toh-client-runtime":"^0.1.1-rc.2","@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1"},"devDependencies":{"@types/react":"~19.2.3","@types/react-dom":"~19.2.3","react":"^19.2.8","react-dom":"^19.2.8","@buckeyestudio/toh-client-runtime":"^0.1.1-rc.2","@buckeyestudio/toh-client-ui-slots":"^0.1.1-rc.2","@buckeyestudio/cordis":"^4.0.1","@buckeyestudio/toh-invariants":"^0.1.1-rc.2","@buckeyestudio/toh-client-test-runtime":"^0.1.1-rc.2"},"scripts":{"bundle":"tsdown","watch":"tsdown --watch"},"_id":"@buckeyestudio/toh-client-ui-renderer@0.1.1-rc.2","bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","_integrity":"sha512-Aak+f/feX9WWTXaHEcXCcUayrfiK61vPbt1S26+kYy2a6AoFCKQ+J+ThYxmAPvwHWWZc4vZWXN7XEv5xJcK1uA==","_resolved":"/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-client-ui-renderer-0.1.1-rc.2.tgz","_from":"file:/home/runner/work/theopen-harness/theopen-harness/dist/npm/buckeyestudio-toh-client-ui-renderer-0.1.1-rc.2.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-Aak+f/feX9WWTXaHEcXCcUayrfiK61vPbt1S26+kYy2a6AoFCKQ+J+ThYxmAPvwHWWZc4vZWXN7XEv5xJcK1uA==","shasum":"250c165a91ebc1dec87178ddcc85a7dfe850d33b","tarball":"https://registry.npmjs.org/@buckeyestudio/toh-client-ui-renderer/-/toh-client-ui-renderer-0.1.1-rc.2.tgz","fileCount":16,"unpackedSize":57204,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCFrQ8ZKk5e0O1nMS2lFKolpqEJAhGQbckp9m6DlkmywgIhAP8qzKP161KCfORpyKBD+E+fvmy9zFCiKwQ5/D7OJCkq"}]},"_npmUser":{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"},"directories":{},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toh-client-ui-renderer_0.1.1-rc.2_1787489642369_0.4031252533048446"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T12:54:02.175Z","0.1.1-rc.2":"2026-08-23T12:54:02.505Z","modified":"2026-08-23T12:54:02.747Z"},"maintainers":[{"name":"buckeyestudio","email":"dustinwloring1988@gmail.com"}],"description":"Browser UI renderer: React slot bindings, ctx.uiRenderer, and the assembled application root","homepage":"https://github.com/dustinwloring1988/theopen-harness#readme","repository":{"type":"git","url":"git+https://github.com/dustinwloring1988/theopen-harness.git","directory":"packages/client/ui-renderer"},"author":{"name":"buckeyestudio"},"bugs":{"url":"https://github.com/dustinwloring1988/theopen-harness/issues"},"license":"MIT","readme":"# @buckeyestudio/toh-client-ui-renderer\n\n[English](README.md) | 中文\n\n负责 React 渲染层的浏览器 Cordis 插件。[`toh-client-web`](../web/README.zh.md) 渲染不依赖框架的启动页并加载完整的客户端插件名册；所有 entry 激活后，它调用 `ctx.uiRenderer.mount(container)`。本包提供该服务、安装 slot 渲染器、hydrate 现有启动 DOM、在下一次绘制前切换到组装完成的应用，并返回 React 根的卸载 disposer。\n\nclient entry 还持有 slot outlet、会话 provider 以及 observable 到 uSES 绑定的 React 实现。业务插件通过带类型的 slot `hooks` 传递裸 observable source；渲染器在 outlet 处完成绑定。插件在 `slots`、`sessions` 和 `layout` 就绪后激活，投影当前会话标题，并执行全程序唯一一次上下文级 `renderSlot('root')` 调用。React、React DOM、Cordis、ui-slots 和 ui-primitives 通过 web 外壳的静态模块表保持同一浏览器身份；本包则以动态客户端 bundle 到达。\n\n## 模型体验\n\n无，因为 UI 渲染器只组装浏览器 UI，不贡献模型可见输入。\n\n#### KV Cache 影响\n\n无；本包既不组装也不发送提供方请求。\n\n## 已知限制与暂缓事项\n\n- **应用首帧会等待全部客户端 entry**——启动内核只在 loader 名册稳定后交出挂载点。按区域就绪仍属暂缓事项。\n- **slot 渲染没有 Suspense 集成或逐 entry 惰性加载**——完整插件名册稳定后，渲染器才挂载根节点。\n","readmeFilename":"README.zh.md","_rev":"1-1605de79ff8376859d0a17b0f69d600d"}