@ray-js/robot-map-sdk 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/bin/docs-server.js +205 -14
  2. package/dist-docs/404.html +3 -3
  3. package/dist-docs/assets/{app.3-ianRvb.js → app.CoDGIQ53.js} +1 -1
  4. package/dist-docs/assets/chunks/@localSearchIndexroot.DELY0TLT.js +1 -0
  5. package/dist-docs/assets/chunks/{BitmapFont.C8awBCd1.js → BitmapFont.DDRqV796.js} +1 -1
  6. package/dist-docs/assets/chunks/{BufferResource.C5TLxka4.js → BufferResource.aFEHKM_N.js} +1 -1
  7. package/dist-docs/assets/chunks/{CanvasRenderer.DyglCOE2.js → CanvasRenderer.BefGXFZ-.js} +1 -1
  8. package/dist-docs/assets/chunks/{RenderTargetSystem._cMCUdmu.js → RenderTargetSystem.CsgIm493.js} +1 -1
  9. package/dist-docs/assets/chunks/{VPLocalSearchBox.DYzATQt_.js → VPLocalSearchBox.CVEAMjKj.js} +1 -1
  10. package/dist-docs/assets/chunks/{WebGLRenderer.C_pauwH4.js → WebGLRenderer.p4DxJ1iF.js} +1 -1
  11. package/dist-docs/assets/chunks/{WebGPURenderer.DuRPdsh5.js → WebGPURenderer.BhOx1ll0.js} +1 -1
  12. package/dist-docs/assets/chunks/{browserAll.BebatlLr.js → browserAll.CXRAifqY.js} +1 -1
  13. package/dist-docs/assets/chunks/{index.DR0yN-kU.js → index.Dmmvsq5C.js} +4 -4
  14. package/dist-docs/assets/chunks/theme.Cii0G4Y-.js +4 -0
  15. package/dist-docs/assets/chunks/{webworkerAll.BAL0vGum.js → webworkerAll.CY0RXZhY.js} +1 -1
  16. package/dist-docs/assets/{guide_getting-started.md.DzTPTYGC.js → guide_getting-started.md.9hcfOAq4.js} +1 -1
  17. package/dist-docs/assets/plans_2026-03-11-simulator-logger-dump-implementation-plan.md.Ck5BGdoX.js +1 -0
  18. package/dist-docs/assets/plans_2026-03-11-simulator-logger-dump-implementation-plan.md.Ck5BGdoX.lean.js +1 -0
  19. package/dist-docs/assets/records_bugs_2026-03-11-render-result-runtime-sync-bugfix.md.DRNUuaFT.js +1 -0
  20. package/dist-docs/assets/records_bugs_2026-03-11-render-result-runtime-sync-bugfix.md.DRNUuaFT.lean.js +1 -0
  21. package/dist-docs/assets/records_plans_2026-03-11-docs-cli-ui-polish-plan.md.B8oZt_5R.js +1 -0
  22. package/dist-docs/assets/records_plans_2026-03-11-docs-cli-ui-polish-plan.md.B8oZt_5R.lean.js +1 -0
  23. package/dist-docs/assets/records_plans_2026-03-11-simulator-logger-dump-plan.md.CkjDCM2N.js +1 -0
  24. package/dist-docs/assets/records_plans_2026-03-11-simulator-logger-dump-plan.md.CkjDCM2N.lean.js +1 -0
  25. package/dist-docs/assets/records_plans_2026-03-11-simulator-style-tokenization-plan.md.D4BgkNlO.js +1 -0
  26. package/dist-docs/assets/records_plans_2026-03-11-simulator-style-tokenization-plan.md.D4BgkNlO.lean.js +1 -0
  27. package/dist-docs/assets/{style.DrlDtCux.css → style.hiWmcVfN.css} +1 -1
  28. package/dist-docs/guide/advanced-usage.html +4 -4
  29. package/dist-docs/guide/concepts.html +4 -4
  30. package/dist-docs/guide/getting-started.html +6 -6
  31. package/dist-docs/guide/mcp.html +4 -4
  32. package/dist-docs/hashmap.json +1 -1
  33. package/dist-docs/index.html +4 -4
  34. package/dist-docs/plans/2026-03-04-detected-objects-visibility-design.html +4 -4
  35. package/dist-docs/plans/2026-03-04-show-detected-objects-implementation-plan.html +4 -4
  36. package/dist-docs/plans/2026-03-10-simulator-debug-design.html +4 -4
  37. package/dist-docs/plans/2026-03-10-simulator-events-console-design.html +4 -4
  38. package/dist-docs/plans/2026-03-10-simulator-events-console-implementation-plan.html +4 -4
  39. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-design.html +4 -4
  40. package/dist-docs/plans/2026-03-10-simulator-runtime-controls-implementation-plan.html +4 -4
  41. package/dist-docs/plans/2026-03-11-simulator-logger-dump-implementation-plan.html +25 -0
  42. package/dist-docs/records/bugs/2026-02-28-fix-pixi-bindgroup-webgpu-snapshot-whitescreen-bugfix.html +4 -4
  43. package/dist-docs/records/bugs/2026-03-10-events-drawer-toolbar-scroll-bugfix.html +4 -4
  44. package/dist-docs/records/bugs/2026-03-10-simulator-initial-render-layout-bugfix.html +4 -4
  45. package/dist-docs/records/bugs/2026-03-10-simulator-wheel-scroll-leak-bugfix.html +4 -4
  46. package/dist-docs/records/bugs/2026-03-11-docs-server-bin-clean-bugfix.html +4 -4
  47. package/dist-docs/records/bugs/2026-03-11-render-result-runtime-sync-bugfix.html +25 -0
  48. package/dist-docs/records/plans/2026-03-02-furniture-feature-plan.html +4 -4
  49. package/dist-docs/records/plans/2026-03-10-simulator-events-console-plan.html +4 -4
  50. package/dist-docs/records/plans/2026-03-10-simulator-last-successful-combo-cache-plan.html +4 -4
  51. package/dist-docs/records/plans/2026-03-10-simulator-map-parsed-view-plan.html +4 -4
  52. package/dist-docs/records/plans/2026-03-10-simulator-map-playground-refactor-plan.html +4 -4
  53. package/dist-docs/records/plans/2026-03-10-simulator-playground-plan.html +4 -4
  54. package/dist-docs/records/plans/2026-03-10-simulator-runtime-controls-plan.html +4 -4
  55. package/dist-docs/records/plans/2026-03-11-docs-cli-ui-polish-plan.html +25 -0
  56. package/dist-docs/records/plans/2026-03-11-simulator-logger-dump-plan.html +25 -0
  57. package/dist-docs/records/plans/2026-03-11-simulator-src-migration-implementation.html +4 -4
  58. package/dist-docs/records/plans/2026-03-11-simulator-src-migration-plan.html +4 -4
  59. package/dist-docs/records/plans/2026-03-11-simulator-style-tokenization-plan.html +25 -0
  60. package/dist-docs/reference/callbacks.html +4 -4
  61. package/dist-docs/reference/config.html +4 -4
  62. package/dist-docs/reference/data.html +4 -4
  63. package/dist-docs/reference/methods.html +4 -4
  64. package/dist-docs/reference/runtime.html +4 -4
  65. package/dist-docs/reference/types.html +4 -4
  66. package/dist-docs/reference/utils.html +4 -4
  67. package/dist-docs/simulator/index.html +4 -4
  68. package/package.json +1 -1
  69. package/dist-docs/assets/chunks/@localSearchIndexroot.l5uunL9n.js +0 -1
  70. package/dist-docs/assets/chunks/theme.Dn4kNa0x.js +0 -4
  71. /package/dist-docs/assets/{guide_getting-started.md.DzTPTYGC.lean.js → guide_getting-started.md.9hcfOAq4.lean.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{ac as S,ae as I,af as B,aI as O,p as F,M as w,a4 as A,a0 as E,ak as m,T as y,aA as U,X as C,w as M,aj as Y,x as P}from"./index.DR0yN-kU.js";import"./framework.CBLqO2Q1.js";import"./mapValues.D2X8cRgC.js";import"./theme.Dn4kNa0x.js";var X=`in vec2 vTextureCoord;
1
+ import{ac as S,ae as I,af as B,aI as O,p as F,M as w,a4 as A,a0 as E,ak as m,T as y,aA as U,X as C,w as M,aj as Y,x as P}from"./index.Dmmvsq5C.js";import"./framework.CBLqO2Q1.js";import"./mapValues.D2X8cRgC.js";import"./theme.Cii0G4Y-.js";var X=`in vec2 vTextureCoord;
2
2
  out vec4 finalColor;
3
3
  uniform sampler2D uTexture;
4
4
  void main() {
@@ -1,4 +1,4 @@
1
- import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md","lastUpdated":1770804529000}'),p={name:"guide/getting-started.md"};function l(k,s,t,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>Tuya Robot Map 提供了开箱即用的 React 组件,专为扫地机器人应用设计。</p><h2 id="安装" tabindex="-1">安装 <a class="header-anchor" href="#安装" aria-label="Permalink to &quot;安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-BvxJU" id="tab-40HnhfT" checked><label data-title="yarn" for="tab-40HnhfT">yarn</label><input type="radio" name="group-BvxJU" id="tab-chHP6gU"><label data-title="npm" for="tab-chHP6gU">npm</label></div><div class="blocks"><div class="language-bash vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div></div></div><h2 id="数据传入" tabindex="-1">数据传入 <a class="header-anchor" href="#数据传入" aria-label="Permalink to &quot;数据传入&quot;">​</a></h2><p>仅需传入几个基本的数据props,即可完成地图的呈现。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-abPuQ" id="tab-up6BzQM" checked><label data-title="点阵协议地图数据" for="tab-up6BzQM">点阵协议地图数据</label><input type="radio" name="group-abPuQ" id="tab-UHWZhJd"><label data-title="结构化协议地图数据" for="tab-UHWZhJd">结构化协议地图数据</label></div><div class="blocks"><div class="language-tsx vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">tsx</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> React, { useMemo } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
1
+ import{_ as i,c as a,o as n,aq as h}from"./chunks/framework.CBLqO2Q1.js";const g=JSON.parse('{"title":"快速开始","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md","lastUpdated":1770804529000}'),p={name:"guide/getting-started.md"};function l(k,s,t,e,E,r){return n(),a("div",null,[...s[0]||(s[0]=[h(`<h1 id="快速开始" tabindex="-1">快速开始 <a class="header-anchor" href="#快速开始" aria-label="Permalink to &quot;快速开始&quot;">​</a></h1><p>Tuya Robot Map 提供了开箱即用的 React 组件,专为扫地机器人应用设计。</p><h2 id="安装" tabindex="-1">安装 <a class="header-anchor" href="#安装" aria-label="Permalink to &quot;安装&quot;">​</a></h2><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-fZAhh" id="tab-sU4WDM_" checked><label data-title="yarn" for="tab-sU4WDM_">yarn</label><input type="radio" name="group-fZAhh" id="tab-icDTA05"><label data-title="npm" for="tab-icDTA05">npm</label></div><div class="blocks"><div class="language-bash vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">yarn</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> add</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;">npm</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> install</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> @ray-js/robot-map</span></span></code></pre></div></div></div><h2 id="数据传入" tabindex="-1">数据传入 <a class="header-anchor" href="#数据传入" aria-label="Permalink to &quot;数据传入&quot;">​</a></h2><p>仅需传入几个基本的数据props,即可完成地图的呈现。</p><div class="vp-code-group vp-adaptive-theme"><div class="tabs"><input type="radio" name="group-I8Xwt" id="tab-CTJW-Yq" checked><label data-title="点阵协议地图数据" for="tab-CTJW-Yq">点阵协议地图数据</label><input type="radio" name="group-I8Xwt" id="tab-iBt6KNf"><label data-title="结构化协议地图数据" for="tab-iBt6KNf">结构化协议地图数据</label></div><div class="blocks"><div class="language-tsx vp-adaptive-theme active"><button title="Copy Code" class="copy"></button><span class="lang">tsx</span><pre class="shiki shiki-themes github-light github-dark vp-code" tabindex="0"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> React, { useMemo } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;react&#39;</span></span>
2
2
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { RobotMap } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@ray-js/robot-map&#39;</span></span>
3
3
  <span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">import</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> { decodeRoomProperties } </span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">from</span><span style="--shiki-light:#032F62;--shiki-dark:#9ECBFF;"> &#39;@ray-js/robot-map&#39;</span></span>
4
4
  <span class="line"></span>
@@ -0,0 +1 @@
1
+ import{_ as o,c as a,o as l,aq as i}from"./chunks/framework.CBLqO2Q1.js";const u=JSON.parse('{"title":"Simulator logger and diagnostic dump implementation plan","description":"","frontmatter":{},"headers":[],"relativePath":"plans/2026-03-11-simulator-logger-dump-implementation-plan.md","filePath":"plans/2026-03-11-simulator-logger-dump-implementation-plan.md","lastUpdated":1773225787000}'),t={name:"plans/2026-03-11-simulator-logger-dump-implementation-plan.md"};function r(d,e,s,n,p,c){return l(),a("div",null,[...e[0]||(e[0]=[i('<h1 id="simulator-logger-and-diagnostic-dump-implementation-plan" tabindex="-1">Simulator logger and diagnostic dump implementation plan <a class="header-anchor" href="#simulator-logger-and-diagnostic-dump-implementation-plan" aria-label="Permalink to &quot;Simulator logger and diagnostic dump implementation plan&quot;">​</a></h1><blockquote><p><strong>For Claude:</strong> REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.</p></blockquote><p><strong>Goal:</strong> Add one-click diagnostic dump export/import with automatic state restore, and provide a header-level logger toggle that reloads the simulator with the selected logger mode.</p><p><strong>Architecture:</strong> Keep docs server CLI focused on serving/opening docs and remove logger-specific startup flags. In simulator runtime, keep <code>enableLogger</code> as local UI state (default off), rebuild the map instance after toggle, and show explicit ON/OFF state in the header.</p><p><strong>Tech Stack:</strong> Node.js CLI (<code>bin/docs-server.js</code>), Vue 3 composables/components in <code>src/simulator</code>, TypeScript runtime guards, browser File API.</p><hr><h3 id="task-1-simplify-docs-cli-logger-behavior" tabindex="-1">Task 1: Simplify docs CLI logger behavior <a class="header-anchor" href="#task-1-simplify-docs-cli-logger-behavior" aria-label="Permalink to &quot;Task 1: Simplify docs CLI logger behavior&quot;">​</a></h3><p><strong>Files:</strong></p><ul><li>Modify: <code>bin/docs-server.js</code></li></ul><ol><li>Remove <code>--logger</code> and <code>--no-logger</code> options from CLI help text and parser.</li><li>Remove simulator logger URL mapping logic during auto-open.</li><li>Keep <code>--open</code> behavior unchanged and open the docs root endpoint directly.</li></ol><h3 id="task-2-add-simulator-dump-types-and-payload-model" tabindex="-1">Task 2: Add simulator dump types and payload model <a class="header-anchor" href="#task-2-add-simulator-dump-types-and-payload-model" aria-label="Permalink to &quot;Task 2: Add simulator dump types and payload model&quot;">​</a></h3><p><strong>Files:</strong></p><ul><li>Modify: <code>src/simulator/types/index.ts</code></li></ul><ol><li>Add <code>SimulatorDiagnosticDumpPayload</code> and <code>SimulatorDiagnosticDumpFile</code> types.</li><li>Keep payload minimal: <code>mapHex</code>, <code>pathHex</code>, <code>roomProperties</code>, <code>runtime</code>.</li><li>Use versioned schema (<code>version: 1</code>) for forward compatibility.</li></ol><h3 id="task-3-add-robust-export-import-behavior-in-playground-composable" tabindex="-1">Task 3: Add robust export/import behavior in playground composable <a class="header-anchor" href="#task-3-add-robust-export-import-behavior-in-playground-composable" aria-label="Permalink to &quot;Task 3: Add robust export/import behavior in playground composable&quot;">​</a></h3><p><strong>Files:</strong></p><ul><li>Modify: <code>src/simulator/core/useRuntimeBindings.ts</code></li><li>Modify: <code>src/simulator/core/usePlaygroundRender.ts</code></li><li>Modify: <code>src/simulator/core/useMapPlayground.ts</code></li></ul><ol><li>Add a runtime snapshot apply helper to <code>useRuntimeBindings</code> for post-render runtime restore.</li><li>Implement <code>exportDiagnosticDump()</code>: <ul><li>Serialize current input + runtime to JSON.</li><li>Trigger browser file download with local-time filename suffix <code>.simulator-dump.json</code>.</li></ul></li><li>Implement <code>importDiagnosticDump(file)</code>: <ul><li>Read and validate JSON shape.</li><li>Validate and normalize runtime fields against runtime defaults.</li><li>Restore input values.</li><li>Re-render map.</li><li>Stop import flow if rendering fails.</li><li>Apply runtime snapshot only after successful render.</li></ul></li></ol><h3 id="task-4-add-global-header-controls-for-dump-and-logger-toggle" tabindex="-1">Task 4: Add global header controls for dump and logger toggle <a class="header-anchor" href="#task-4-add-global-header-controls-for-dump-and-logger-toggle" aria-label="Permalink to &quot;Task 4: Add global header controls for dump and logger toggle&quot;">​</a></h3><p><strong>Files:</strong></p><ul><li>Modify: <code>src/simulator/components/SimulatorActionBar.vue</code></li><li>Modify: <code>src/simulator/components/SimulatorMapPlayground.vue</code></li><li>Modify: <code>src/simulator/core/useMapPlayground.ts</code></li></ul><ol><li>Keep dump import/export controls in the global header toolbar.</li><li>Add a dedicated logger toggle button with clear ON/OFF visual states.</li><li>Set logger default state to off.</li><li>On logger toggle, rebuild/re-render map so <code>config.global.enableLogger</code> takes effect immediately.</li></ol><h3 id="task-5-add-traceability-record-for-this-iteration" tabindex="-1">Task 5: Add traceability record for this iteration <a class="header-anchor" href="#task-5-add-traceability-record-for-this-iteration" aria-label="Permalink to &quot;Task 5: Add traceability record for this iteration&quot;">​</a></h3><p><strong>Files:</strong></p><ul><li>Modify: <code>docs/records/plans/2026-03-11-simulator-logger-dump-plan.md</code></li></ul><ol><li>Update approach to reflect header-level logger toggle.</li><li>Remove outdated CLI logger-flag acceptance criteria.</li><li>Keep record in English and aligned with project traceability requirements.</li></ol><h3 id="task-6-verify-and-report" tabindex="-1">Task 6: Verify and report <a class="header-anchor" href="#task-6-verify-and-report" aria-label="Permalink to &quot;Task 6: Verify and report&quot;">​</a></h3><p><strong>Commands:</strong></p><ol><li>Run <code>npm run lint</code>.</li><li>Run <code>npx tsc --noEmit</code>.</li><li>Report results and any follow-up risks.</li></ol>',29)])])}const g=o(t,[["render",r]]);export{u as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as o,c as a,o as l,aq as i}from"./chunks/framework.CBLqO2Q1.js";const u=JSON.parse('{"title":"Simulator logger and diagnostic dump implementation plan","description":"","frontmatter":{},"headers":[],"relativePath":"plans/2026-03-11-simulator-logger-dump-implementation-plan.md","filePath":"plans/2026-03-11-simulator-logger-dump-implementation-plan.md","lastUpdated":1773225787000}'),t={name:"plans/2026-03-11-simulator-logger-dump-implementation-plan.md"};function r(d,e,s,n,p,c){return l(),a("div",null,[...e[0]||(e[0]=[i("",29)])])}const g=o(t,[["render",r]]);export{u as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as r,c as a,o as i,aq as s}from"./chunks/framework.CBLqO2Q1.js";const p=JSON.parse('{"title":"Render result runtime sync bugfix (2026-03-11)","description":"","frontmatter":{},"headers":[],"relativePath":"records/bugs/2026-03-11-render-result-runtime-sync-bugfix.md","filePath":"records/bugs/2026-03-11-render-result-runtime-sync-bugfix.md","lastUpdated":1773225787000}'),t={name:"records/bugs/2026-03-11-render-result-runtime-sync-bugfix.md"};function o(l,e,n,d,c,u){return i(),a("div",null,[...e[0]||(e[0]=[s('<h1 id="render-result-runtime-sync-bugfix-2026-03-11" tabindex="-1">Render result runtime sync bugfix (2026-03-11) <a class="header-anchor" href="#render-result-runtime-sync-bugfix-2026-03-11" aria-label="Permalink to &quot;Render result runtime sync bugfix (2026-03-11)&quot;">​</a></h1><h2 id="symptom" tabindex="-1">Symptom <a class="header-anchor" href="#symptom" aria-label="Permalink to &quot;Symptom&quot;">​</a></h2><p>When map rendering partially failed (for example, invalid <code>pathHex</code> or invalid <code>roomProperties</code>) but the main map still rendered successfully, simulator flows incorrectly treated the whole render as failed.</p><p>This blocked runtime synchronization and could prevent import-based scene recovery from applying runtime snapshot data.</p><h2 id="reproducible-steps" tabindex="-1">Reproducible steps <a class="header-anchor" href="#reproducible-steps" aria-label="Permalink to &quot;Reproducible steps&quot;">​</a></h2><ol><li>Provide a valid <code>mapHex</code>.</li><li>Provide an invalid <code>pathHex</code> or malformed <code>roomProperties</code>.</li><li>Trigger render or import diagnostic dump.</li><li>Observe that map can appear, but runtime synchronization/recovery is skipped.</li></ol><h2 id="root-cause" tabindex="-1">Root cause <a class="header-anchor" href="#root-cause" aria-label="Permalink to &quot;Root cause&quot;">​</a></h2><p><code>usePlaygroundRender.renderMap()</code> returned a single boolean and used <code>false</code> for both:</p><ul><li>fatal map-render failure, and</li><li>non-fatal overlay parse failures.</li></ul><p><code>useMapPlayground.renderMapWithRuntimeSync()</code> interpreted <code>false</code> as a hard failure and returned early, skipping runtime sync.</p><h2 id="patch-summary" tabindex="-1">Patch summary <a class="header-anchor" href="#patch-summary" aria-label="Permalink to &quot;Patch summary&quot;">​</a></h2><ul><li>Changed <code>renderMap()</code> to return structured result: <ul><li><code>rendered</code>: whether the main map render succeeded.</li><li><code>hasWarnings</code>: whether non-blocking overlay errors occurred.</li><li><code>errors</code>: captured warning/error messages.</li></ul></li><li>Updated runtime sync guard to proceed when <code>rendered === true</code>, even with warnings.</li><li>Kept status messaging explicit for warning cases while preserving successful map render flow.</li></ul><h2 id="risk-assessment" tabindex="-1">Risk assessment <a class="header-anchor" href="#risk-assessment" aria-label="Permalink to &quot;Risk assessment&quot;">​</a></h2><ul><li>Low-to-medium risk: modifies render result contract used by playground orchestration.</li><li>Limited blast radius: affected call sites are inside simulator core.</li><li>Expected impact: restores runtime synchronization in partial-failure scenarios without masking fatal map failures.</li></ul><h2 id="regression-checklist" tabindex="-1">Regression checklist <a class="header-anchor" href="#regression-checklist" aria-label="Permalink to &quot;Regression checklist&quot;">​</a></h2><ul><li>[ ] Valid <code>mapHex</code> + invalid <code>pathHex</code> still renders map and syncs runtime.</li><li>[ ] Valid <code>mapHex</code> + invalid <code>roomProperties</code> still renders map and syncs runtime.</li><li>[ ] Import flow with non-fatal overlay errors still applies runtime snapshot.</li><li>[ ] Fatal <code>mapHex</code> parse failure still blocks sync and reports error.</li></ul>',16)])])}const h=r(t,[["render",o]]);export{p as __pageData,h as default};
@@ -0,0 +1 @@
1
+ import{_ as r,c as a,o as i,aq as s}from"./chunks/framework.CBLqO2Q1.js";const p=JSON.parse('{"title":"Render result runtime sync bugfix (2026-03-11)","description":"","frontmatter":{},"headers":[],"relativePath":"records/bugs/2026-03-11-render-result-runtime-sync-bugfix.md","filePath":"records/bugs/2026-03-11-render-result-runtime-sync-bugfix.md","lastUpdated":1773225787000}'),t={name:"records/bugs/2026-03-11-render-result-runtime-sync-bugfix.md"};function o(l,e,n,d,c,u){return i(),a("div",null,[...e[0]||(e[0]=[s("",16)])])}const h=r(t,[["render",o]]);export{p as __pageData,h as default};
@@ -0,0 +1 @@
1
+ import{_ as o,c as a,o as i,aq as l}from"./chunks/framework.CBLqO2Q1.js";const u=JSON.parse('{"title":"2026-03-11 docs CLI UI polish plan","description":"","frontmatter":{},"headers":[],"relativePath":"records/plans/2026-03-11-docs-cli-ui-polish-plan.md","filePath":"records/plans/2026-03-11-docs-cli-ui-polish-plan.md","lastUpdated":1773218350000}'),c={name:"records/plans/2026-03-11-docs-cli-ui-polish-plan.md"};function d(t,e,n,r,s,p){return i(),a("div",null,[...e[0]||(e[0]=[l('<h1 id="_2026-03-11-docs-cli-ui-polish-plan" tabindex="-1">2026-03-11 docs CLI UI polish plan <a class="header-anchor" href="#_2026-03-11-docs-cli-ui-polish-plan" aria-label="Permalink to &quot;2026-03-11 docs CLI UI polish plan&quot;">​</a></h1><h2 id="background" tabindex="-1">Background <a class="header-anchor" href="#background" aria-label="Permalink to &quot;Background&quot;">​</a></h2><p><code>robot-map-docs</code> previously printed a single plain startup line. The command worked, but the startup UX was minimal and lacked optional browser auto-open.</p><h2 id="goal-and-scope" tabindex="-1">Goal and scope <a class="header-anchor" href="#goal-and-scope" aria-label="Permalink to &quot;Goal and scope&quot;">​</a></h2><ul><li>Improve startup presentation while keeping command behavior lightweight.</li><li>Add optional browser auto-open without changing default safety.</li><li>Keep implementation limited to the docs server bin script.</li></ul><h2 id="chosen-approach" tabindex="-1">Chosen approach <a class="header-anchor" href="#chosen-approach" aria-label="Permalink to &quot;Chosen approach&quot;">​</a></h2><ul><li>Add a compact colorized startup banner with key runtime details.</li><li>Introduce CLI flags: <ul><li><code>--open</code> / <code>-o</code></li><li><code>--no-open</code></li><li><code>--quiet</code> / <code>-q</code></li></ul></li><li>Support environment-based open toggle: <ul><li><code>ROBOT_MAP_DOCS_OPEN=1|true</code></li></ul></li><li>Add structured log helpers and better startup error hints (including <code>EADDRINUSE</code> guidance).</li><li>Keep request handling and file serving logic unchanged.</li></ul><h2 id="impacted-files-or-modules" tabindex="-1">Impacted files or modules <a class="header-anchor" href="#impacted-files-or-modules" aria-label="Permalink to &quot;Impacted files or modules&quot;">​</a></h2><ul><li><code>bin/docs-server.js</code></li><li><code>docs/records/plans/2026-03-11-docs-cli-ui-polish-plan.md</code></li></ul><h2 id="verification-checklist" tabindex="-1">Verification checklist <a class="header-anchor" href="#verification-checklist" aria-label="Permalink to &quot;Verification checklist&quot;">​</a></h2><ul><li>[x] <code>npm run lint</code></li><li>[x] <code>npx tsc --noEmit</code></li><li>[x] <code>node bin/docs-server.js --help</code> shows the new flags</li></ul>',11)])])}const m=o(c,[["render",d]]);export{u as __pageData,m as default};
@@ -0,0 +1 @@
1
+ import{_ as o,c as a,o as i,aq as l}from"./chunks/framework.CBLqO2Q1.js";const u=JSON.parse('{"title":"2026-03-11 docs CLI UI polish plan","description":"","frontmatter":{},"headers":[],"relativePath":"records/plans/2026-03-11-docs-cli-ui-polish-plan.md","filePath":"records/plans/2026-03-11-docs-cli-ui-polish-plan.md","lastUpdated":1773218350000}'),c={name:"records/plans/2026-03-11-docs-cli-ui-polish-plan.md"};function d(t,e,n,r,s,p){return i(),a("div",null,[...e[0]||(e[0]=[l("",11)])])}const m=o(c,[["render",d]]);export{u as __pageData,m as default};
@@ -0,0 +1 @@
1
+ import{_ as a,c as o,o as i,aq as l}from"./chunks/framework.CBLqO2Q1.js";const m=JSON.parse('{"title":"2026-03-11 simulator logger and diagnostic dump plan","description":"","frontmatter":{},"headers":[],"relativePath":"records/plans/2026-03-11-simulator-logger-dump-plan.md","filePath":"records/plans/2026-03-11-simulator-logger-dump-plan.md","lastUpdated":1773225787000}'),t={name:"records/plans/2026-03-11-simulator-logger-dump-plan.md"};function r(s,e,d,n,c,p){return i(),o("div",null,[...e[0]||(e[0]=[l('<h1 id="_2026-03-11-simulator-logger-and-diagnostic-dump-plan" tabindex="-1">2026-03-11 simulator logger and diagnostic dump plan <a class="header-anchor" href="#_2026-03-11-simulator-logger-and-diagnostic-dump-plan" aria-label="Permalink to &quot;2026-03-11 simulator logger and diagnostic dump plan&quot;">​</a></h1><p>This record captures the simulator enhancement that adds one-file diagnostic export/import and a header-level logger toggle for immediate debug switching.</p><h2 id="background" tabindex="-1">Background <a class="header-anchor" href="#background" aria-label="Permalink to &quot;Background&quot;">​</a></h2><p>Developers need a fast way to share reproducible simulator sessions and toggle SDK logs during investigation without restarting docs with custom startup flags.</p><h2 id="goal-and-scope" tabindex="-1">Goal and scope <a class="header-anchor" href="#goal-and-scope" aria-label="Permalink to &quot;Goal and scope&quot;">​</a></h2><ul><li>Add one-click diagnostic export for <code>mapHex</code>, <code>pathHex</code>, <code>roomProperties</code>, and <code>runtime</code>.</li><li>Add one-click diagnostic import that restores state and re-renders automatically.</li><li>Add a header-level logger toggle and apply changes immediately by rebuilding simulator render state.</li></ul><p>Out of scope:</p><ul><li>Multi-file zip diagnostic packages.</li><li>Persisting derived metadata such as runtime support matrix.</li></ul><h2 id="chosen-approach" tabindex="-1">Chosen approach <a class="header-anchor" href="#chosen-approach" aria-label="Permalink to &quot;Chosen approach&quot;">​</a></h2><ul><li>Remove logger-specific CLI startup flags from <code>robot-map-docs</code>.</li><li>Keep logger state in simulator UI (<code>default: off</code>) and map it to <code>config.global.enableLogger</code>.</li><li>Re-render map after logger toggle so logger config takes effect immediately.</li><li>Use a versioned single JSON dump (<code>version: 1</code>) as the diagnostic exchange format.</li><li>Validate and normalize imported runtime payload by runtime defaults before applying to the SDK instance.</li></ul><h2 id="impacted-files-or-modules" tabindex="-1">Impacted files or modules <a class="header-anchor" href="#impacted-files-or-modules" aria-label="Permalink to &quot;Impacted files or modules&quot;">​</a></h2><ul><li><code>bin/docs-server.js</code></li><li><code>src/simulator/types/index.ts</code></li><li><code>src/simulator/core/useRuntimeBindings.ts</code></li><li><code>src/simulator/core/usePlaygroundRender.ts</code></li><li><code>src/simulator/core/useMapPlayground.ts</code></li><li><code>src/simulator/components/SimulatorActionBar.vue</code></li><li><code>src/simulator/components/SimulatorMapPlayground.vue</code></li></ul><h2 id="verification-checklist" tabindex="-1">Verification checklist <a class="header-anchor" href="#verification-checklist" aria-label="Permalink to &quot;Verification checklist&quot;">​</a></h2><ul><li>[ ] <code>robot-map-docs --open</code> still opens docs correctly.</li><li>[ ] Header logger toggle defaults to OFF on initial load.</li><li>[ ] Toggling logger ON/OFF re-renders the map and updates visual state.</li><li>[ ] Export action downloads a valid <code>.simulator-dump.json</code> file.</li><li>[ ] Import action restores map/path/room/runtime and re-renders successfully.</li><li>[ ] Import flow does not report success when map render fails.</li><li>[ ] <code>npm run lint</code> passes.</li><li>[ ] <code>npx tsc --noEmit</code> passes.</li></ul>',14)])])}const g=a(t,[["render",r]]);export{m as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as a,c as o,o as i,aq as l}from"./chunks/framework.CBLqO2Q1.js";const m=JSON.parse('{"title":"2026-03-11 simulator logger and diagnostic dump plan","description":"","frontmatter":{},"headers":[],"relativePath":"records/plans/2026-03-11-simulator-logger-dump-plan.md","filePath":"records/plans/2026-03-11-simulator-logger-dump-plan.md","lastUpdated":1773225787000}'),t={name:"records/plans/2026-03-11-simulator-logger-dump-plan.md"};function r(s,e,d,n,c,p){return i(),o("div",null,[...e[0]||(e[0]=[l("",14)])])}const g=a(t,[["render",r]]);export{m as __pageData,g as default};
@@ -0,0 +1 @@
1
+ import{_ as o,c as a,o as i,aq as t}from"./chunks/framework.CBLqO2Q1.js";const p=JSON.parse('{"title":"Simulator style tokenization plan (2026-03-11)","description":"","frontmatter":{},"headers":[],"relativePath":"records/plans/2026-03-11-simulator-style-tokenization-plan.md","filePath":"records/plans/2026-03-11-simulator-style-tokenization-plan.md","lastUpdated":1773225787000}'),l={name:"records/plans/2026-03-11-simulator-style-tokenization-plan.md"};function n(s,e,r,c,d,u){return i(),a("div",null,[...e[0]||(e[0]=[t('<h1 id="simulator-style-tokenization-plan-2026-03-11" tabindex="-1">Simulator style tokenization plan (2026-03-11) <a class="header-anchor" href="#simulator-style-tokenization-plan-2026-03-11" aria-label="Permalink to &quot;Simulator style tokenization plan (2026-03-11)&quot;">​</a></h1><h2 id="background" tabindex="-1">Background <a class="header-anchor" href="#background" aria-label="Permalink to &quot;Background&quot;">​</a></h2><p>The simulator UI had repeated hardcoded style values across multiple Vue components. This made global visual adjustments slow and error-prone.</p><h2 id="goal-and-scope" tabindex="-1">Goal and scope <a class="header-anchor" href="#goal-and-scope" aria-label="Permalink to &quot;Goal and scope&quot;">​</a></h2><p>This iteration standardizes simulator styling by consolidating visual values into shared CSS variables and updating components to consume those tokens.</p><p>In scope:</p><ul><li>Tokenize colors, typography, spacing, radius, shadows, and transitions.</li><li>Replace component-level hardcoded values with <code>--mp-*</code> variables.</li><li>Keep existing interaction behavior and layout intent unchanged.</li></ul><p>Out of scope:</p><ul><li>Functional changes in map rendering/runtime/event logic.</li><li>Broad redesign of non-simulator surfaces.</li></ul><h2 id="chosen-approach" tabindex="-1">Chosen approach <a class="header-anchor" href="#chosen-approach" aria-label="Permalink to &quot;Chosen approach&quot;">​</a></h2><ol><li>Extend the token set in <code>SimulatorMapPlayground.vue</code> root to define a single source of truth for simulator visual language.</li><li>Refactor simulator component style blocks to reference shared tokens for controls, chips, panels, inputs, dialogs, and empty states.</li><li>Add explicit token-first guidance to <code>AGENTS.md</code> to prevent future style-value drift.</li></ol><h2 id="impacted-files-modules" tabindex="-1">Impacted files/modules <a class="header-anchor" href="#impacted-files-modules" aria-label="Permalink to &quot;Impacted files/modules&quot;">​</a></h2><ul><li><code>src/simulator/components/SimulatorMapPlayground.vue</code></li><li><code>src/simulator/components/SimulatorActionBar.vue</code></li><li><code>src/simulator/components/SimulatorEditorDialog.vue</code></li><li><code>src/simulator/components/SimulatorEventItem.vue</code></li><li><code>src/simulator/components/SimulatorEventsPanel.vue</code></li><li><code>src/simulator/components/SimulatorInputField.vue</code></li><li><code>src/simulator/components/SimulatorInspectorPanel.vue</code></li><li><code>src/simulator/components/SimulatorParsedPanel.vue</code></li><li><code>src/simulator/components/SimulatorPreviewPanel.vue</code></li><li><code>src/simulator/components/SimulatorRoomSelectionPanel.vue</code></li><li><code>src/simulator/components/SimulatorRuntimeField.vue</code></li><li><code>src/simulator/components/SimulatorRuntimeGroup.vue</code></li><li><code>src/simulator/components/SimulatorRuntimePanel.vue</code></li><li><code>src/simulator/components/SimulatorTabs.vue</code></li><li><code>AGENTS.md</code></li></ul><h2 id="verification-checklist" tabindex="-1">Verification checklist <a class="header-anchor" href="#verification-checklist" aria-label="Permalink to &quot;Verification checklist&quot;">​</a></h2><ul><li>[ ] Run <code>npm run lint</code>.</li><li>[ ] Run <code>npx tsc --noEmit</code>.</li><li>[ ] Confirm simulator buttons/chips/panels still render with expected states.</li><li>[ ] Confirm logger toggle and session import/export controls keep behavior.</li></ul>',15)])])}const h=o(l,[["render",n]]);export{p as __pageData,h as default};
@@ -0,0 +1 @@
1
+ import{_ as o,c as a,o as i,aq as t}from"./chunks/framework.CBLqO2Q1.js";const p=JSON.parse('{"title":"Simulator style tokenization plan (2026-03-11)","description":"","frontmatter":{},"headers":[],"relativePath":"records/plans/2026-03-11-simulator-style-tokenization-plan.md","filePath":"records/plans/2026-03-11-simulator-style-tokenization-plan.md","lastUpdated":1773225787000}'),l={name:"records/plans/2026-03-11-simulator-style-tokenization-plan.md"};function n(s,e,r,c,d,u){return i(),a("div",null,[...e[0]||(e[0]=[t("",15)])])}const h=o(l,[["render",n]]);export{p as __pageData,h as default};