diff --git a/docs/协作/B03-验收-01.md b/docs/协作/B03-验收-01.md index 5f33f07..f02858d 100644 --- a/docs/协作/B03-验收-01.md +++ b/docs/协作/B03-验收-01.md @@ -107,6 +107,8 @@ PowerShell 夹具使用独立目录,实际新增目录和文件、删除文件 本轮没有确认新的阻塞性产品缺陷;尚缺证据的项目保持“未验证”,不以测试绿灯替代完整验收。建议开发端把 Windows 回环、真实会话授权与完整应用重启探针整理为可维护的正式回归,并继续完成交付记录中的剩余范围。验收探针随报告提供,验收端未将其写入正式 scripts 或产品源码。 +并行复审按用户指定的 `minimax-m3.1-flash-free / max` 启动,但后端子任务以 `max_output_tokens` 错误结束,另外两个没有交付完整报告并已停止。本轮没有把这些未完成的子代理复审算作通过证据;上述运行、截图检查和最终判定均由主对话独立完成。 + ## 7. 证据复跑 在受测 SHA 的隔离检出独立安装并构建。证据中的三个脚本是验收临时探针,读取的都是自身生成的夹具,不依赖本机真实用户数据: diff --git a/docs/协作/B04-验收-01.md b/docs/协作/B04-验收-01.md new file mode 100644 index 0000000..e240a5a --- /dev/null +++ b/docs/协作/B04-验收-01.md @@ -0,0 +1,99 @@ +# B04 验收 01:展开图片的 Windows 连续帧 + +日期:2026-10-21,Asia/Shanghai。受测代码 **`342820690f644fb1cb3b0a76b143dbcd41aac8c4`**,交付记录:[B04-交付-01](B04-交付-01.md),任务 YC-008。 + +**结论:图片地址首帧闪现的核心修复通过本轮 Windows 组件与完整生产应用验证。没有再出现完整 Base64 文本或数千像素瞬间增高。交付的原生验收命令在本机超时,记为测试可移植性问题 T03,不能直接登记原命令通过。** + +这是验收,不是产品开发:未修改产品源码、正式测试脚本、依赖清单或构建配置。所有探针在固定 SHA 的新工作树和 `.tmp` 中运行;只提交本报告及可复核证据。 + +## 1. 环境与基本检查 + +- 新建 `b04-accept-01` 工作树固定检出完整受测 SHA,独立 `npm ci --legacy-peer-deps`,没有复用其他实例的 node_modules 链接。 +- Windows,Node `24.21.0`,npm `11.19.0`,Electron `37.10.3`;显式确认 Electron 运行时可用。 +- `npm run build`、`npm test`、指定 jsdom 后 `npm run test:alignment:dom`、`npm run test:image-lifecycle`、`npm run test:media` 均退出 0。 +- 生命周期回归实际 **159 项断言、85 个 DOM 样本**;alignment offline 11 套、DOM 7 套;媒体回归含图片/URL/下载失败与路径检查。 +- `check:tokens` 仍退出 1,相同六项既存失败,没有改 baseline。B04 没有 CSS 改动。 +- 验证后受测工作树 `git status --short` 为空。未重启用户 dev,未加载或改写用户真实历史消息/图片。 + +结果:[基础命令](evidence/B04-review-01/results.json)、[回归命令](evidence/B04-review-01/regression-results.json)、[生命周期日志](evidence/B04-review-01/dom-lifecycle.txt)、[媒体日志](evidence/B04-review-01/media.txt)、[构建日志](evidence/B04-review-01/build.txt)。 + +## 2. 原生组件夹具:136 项检查、105 个样本 + +按交付命令构建同一个实际 `MessageBubble` / `CompletedFold` / `MarkdownImage` 夹具,在 Electron Chromium 运行。图片为合成的有效 320×180 PNG,附约 18KB 二进制填充,生成约 25KB 的长 Base64,alt 为空。 + +- 覆盖合成会话 A→B→A,每次三个开关循环,真实图片重挂载。 +- 在 layout effect、同步提交、开关前后、连续 requestAnimationFrame 中采样;不是只截稳定图片。 +- 105 个样本最大区域高度 **232px**,最大文字长度 **35 字符**;图片实际解码,naturalWidth=320,存在非零图片高度。 +- 未插入 URI/Base64 文本,没有捕获 renderer error。 +- 组件 wrapper 保留 sandbox:true、contextIsolation:true、网络请求阻断。仅对 QA BrowserWindow 设置 `backgroundThrottling:false`,没有修改产品 CSS、动画或采样断言。 + +结果:[原生报告](evidence/B04-review-01/native-report.json)、[通过日志](evidence/B04-review-01/native-unthrottled.txt)。 + +### T03:原生交付脚本在本机超时 + +原命令: + +```powershell +node node_modules/electron/cli.js scripts/verify-b04-image-native.cjs +``` + +实际退出 1,20 秒截止,报 `Bounded native probe timed out after 20s`。诊断确认夹具已加载,`window.__b04` 存在,没有即时脚本错误,但连续帧未完成。仅添加 console 诊断的副本仍超时;在同一副本增加 `backgroundThrottling:false` 后约 1 秒完成,保留原 20 秒截止与全部断言。 + +[原命令日志](evidence/B04-review-01/native-original.txt)、[诊断日志](evidence/B04-review-01/native-diagnostic.txt)、[验收 wrapper](evidence/B04-review-01/native-diagnostic.cjs)。此处是后台帧节流条件下的脚本可移植性问题,没有证据表明图片仍闪现;也不能把临时 wrapper 通过写成原脚本通过。 + +**开发端后续**:为原生连续帧测试显式约定 QA 窗口帧调度/可见性和截止策略,确保目标平台运行稳定,同时保留真实 rAF 与布局、文字断言。不要靠去掉检查、改成 jsdom 或延长到无限等待来消除失败。 + +### 旧组件负对照 + +在同一新夹具中,仅用 esbuild 临时替换成基线 `0b613e5` 的 `MarkdownImage.tsx`;未改产品文件。相同原生 wrapper 退出 1,首先捕获: + +```text +synthetic-A: layout-before-passive-effects: no URI text +``` + +该 layout 断言抛错后 React 卸载树,后续又报 CompletedFold header 不存在;原始首因在 [负对照日志](evidence/B04-review-01/native-negative.txt) 中保留。这证明探针能抓到修复前的 URI 首帧,退出 1 是期望的旧版失败,不是修复版失败。构建器:[build-negative.mjs](evidence/B04-review-01/build-negative.mjs)。 + +## 3. 完整生产应用:43 项检查、168 个连续样本 + +在新的专用 userData 中保存两条合成历史,启动未修改的生产 main/preload/renderer。图片和消息由探针生成,模型配置指向不可用本地端口,整个测试不发送模型请求。 + +- 选择会话 A→B→A,各进行四次展开/收起,共 **12 次**。 +- 每次记录点击前、点击同步点和之后 12 个真实 rAF,共 **168 个样本**。 +- 样本所在的实际 assistant 区域高度保持 **322.75~357px**,文字最长 **56 字符**。全部无 `data:image/` / `base64,` 文本,无数千像素增高,图片实际解码。 +- 附加 MutationObserver 检查新增文字节点,没有检测到 URI 文本;没有捕获到的 renderer error。 +- 点击实际图片,生产预览打开、解码;点击实际下载按钮,经真实 preload/IPC/下载解码/文件写入通路,下载字节与完整合成 PNG(含填充)逐字节相同。 +- 为避免弹出交互式系统保存框,仅由 QA 启动器替换 `dialog.showSaveDialog` 返回专用测试路径;因此验证了保存通路,**未验证 Windows 原生文件选择框的人工交互**。 +- 预览关闭检查通过;未为截图修改产品样式。 + +实际应用 QA 窗口同样关闭后台节流以保证连续采样。该设置属于测试启动器,不是本次产品改动。 + +证据:[应用报告及全部帧数据](evidence/B04-review-01/app-report.json)、[应用探针](evidence/B04-review-01/app-frames.cjs)、[展开截图](evidence/B04-review-01/app-expanded.png)、[跨会话后展开](evidence/B04-review-01/app-expanded-after-switch.png)、[预览截图](evidence/B04-review-01/app-preview.png)。已人工查看截图,判断主要依据连续样本和 DOM 记录,截图不替代首帧验证。 + +## 4. AC 状态与限制 + +| AC | 判定与层级 | +| --- | --- | +| 1 长 Base64/空 alt 冷挂载 | 实际组件 layout-before-passive-effects、同步提交到原生帧通过;基线负对照能捕获旧行为。 | +| 2 多次开关、切换会话 | 组件夹具与真实生产应用历史夹具均通过。 | +| 3 连续帧、无数千像素尖峰 | Windows 实际布局通过,105+168 样本,不用 jsdom 的 height=0 代替。 | +| 4 失败/非法地址短占位 | 159 项生命周期回归覆盖,媒体/URL 检查通过;所有失败源的真实 Chromium 网络/图片事件矩阵未穷举。 | +| 5 快速切换、过期请求/取消 | DOM 夹具覆盖 src、resolver、host 偏好、A→B→A、迟到成功/失败、卸载、立即 error;真实应用开关/会话切换通过。真实异步宿主故障与全部快速切源排列仍未全测。 | +| 6 预览、下载、安全策略 | 实际预览解码/关闭、实际 IPC 保存字节通过;URL/下载失败回归通过。网络图片真实下载、系统文件框人工交互和全部预览缩放/旋转手势未另行全测。 | + +本轮确认核心 bug 修复有效,T03 留给开发端修正式测试。不能据此声明 WorkBuddy 全界面 1:1,或所有图片源/平台/网络异常场景已验证。未采集原版 WorkBuddy,本轮没有新的 REA Evidence ID。 + +## 5. 复跑 + +固定受测 SHA 独立安装构建后,按交付命令运行 DOM/媒体/夹具构建。验收临时脚本放置位置如下;不要将用户 dev、真实 userData 或正式历史当作夹具: + +```powershell +New-Item -ItemType Directory -Force .tmp/b04-acceptance | Out-Null +Copy-Item docs/协作/evidence/B04-review-01/native-diagnostic.cjs .tmp/b04-acceptance/native-diagnostic.cjs +Copy-Item docs/协作/evidence/B04-review-01/app-frames.cjs .tmp/b04-acceptance/app-frames.cjs +node scripts/test-image-lifecycle.mjs --build-only +# 将上一条实际输出目录传给 wrapper;必须保留 sandbox:true。 +node node_modules/electron/cli.js .tmp/b04-acceptance/native-diagnostic.cjs +node .tmp/b04-acceptance/app-frames.cjs +``` + +原生 wrapper 内部 20 秒截止;完整应用探针内部 60 秒、启动器 70 秒上限,只结束自己创建的进程。本报告推送并核对 SHA 后,将协作窗口交回开发端,后续处理 T03 和未覆盖项;不撤销 B01/B02/B03 的历史边界。 diff --git a/docs/协作/evidence/B04-review-01/app-expanded-after-switch.png b/docs/协作/evidence/B04-review-01/app-expanded-after-switch.png new file mode 100644 index 0000000..ad424b6 Binary files /dev/null and b/docs/协作/evidence/B04-review-01/app-expanded-after-switch.png differ diff --git a/docs/协作/evidence/B04-review-01/app-expanded.png b/docs/协作/evidence/B04-review-01/app-expanded.png new file mode 100644 index 0000000..ad424b6 Binary files /dev/null and b/docs/协作/evidence/B04-review-01/app-expanded.png differ diff --git a/docs/协作/evidence/B04-review-01/app-frames.cjs b/docs/协作/evidence/B04-review-01/app-frames.cjs new file mode 100644 index 0000000..33489a0 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/app-frames.cjs @@ -0,0 +1,22 @@ +const fs=require('node:fs/promises'),path=require('node:path'),assert=require('node:assert/strict'); +if(!process.versions.electron){(async()=>{ + const dir=await fs.mkdtemp(path.resolve('.tmp/b04-app-'));for(const n of ['data','home','workspace'])await fs.mkdir(path.join(dir,n));const now=Date.now();const fixture=await fs.readFile('scripts/b04-image-lifecycle-fixture.tsx','utf8');const pixel=fixture.match(/const pixel = '([^']+)'/)[1];const source='data:image/png;base64,'+Buffer.concat([Buffer.from(pixel,'base64'),Buffer.alloc(18000)]).toString('base64'); + const model={id:'b04-model',name:'B04 Offline',providerId:'custom',model:'fixture',protocol:'anthropic',authMode:'none',baseUrl:'http://127.0.0.1:1'};await fs.writeFile(path.join(dir,'data/models.json'),JSON.stringify({version:1,models:[model],selectedModelId:model.id}));await fs.writeFile(path.join(dir,'data/workspaces.json'),JSON.stringify({selectedWorkspaceId:'qa',workspaces:[{id:'qa',name:'QA Workspace',root:path.join(dir,'workspace'),createdAt:now}]})); + const sessions=['a','b'].map((x,i)=>({id:'b04-'+x,title:'Synthetic image '+x,cwd:path.join(dir,'workspace'),workspaceId:'qa',modelId:model.id,agentMode:'craft',permissionMode:'default-sandbox',createdAt:now-i,updatedAt:now-i,messages:[{id:x+'-u',role:'user',content:'Inspect synthetic image '+x,status:'done',createdAt:now-5000},{id:x+'-a',role:'assistant',status:'done',content:'![]('+source+')',createdAt:now-4000,turnDurationMs:2000,parts:[{type:'reasoning',id:x+'-r',text:'Synthetic reasoning before image'},{type:'text',text:'![]('+source+')'}]}]})); + await fs.writeFile(path.join(dir,'data/sessions.json'),JSON.stringify({sessions}));const env={...process.env,YCODE_USER_DATA_DIR:path.join(dir,'data'),YCODE_QA_DIRECTORY:dir,YCODE_SKIP_KERNEL_DATA_RESET:'1',YCODE_DISABLE_GPU:'1',YCODE_DISABLE_SYSTEM_INTEGRATION:'1',B04_APP_DIR:dir,HOME:path.join(dir,'home'),USERPROFILE:path.join(dir,'home')};delete env.ELECTRON_RUN_AS_NODE;delete env.ELECTRON_RENDERER_URL; + const child=require('node:child_process').spawn(require('electron'),[__filename],{env,windowsHide:true,stdio:['ignore','pipe','pipe']});let log='';child.stdout.on('data',x=>log+=x);child.stderr.on('data',x=>log+=x);const timer=setTimeout(()=>child.kill(),70000);const exit=await new Promise(r=>child.on('exit',r));clearTimeout(timer);await fs.writeFile(path.join(dir,'process.txt'),log);console.log(JSON.stringify({directory:dir,exitCode:exit}));if(exit!==0){console.error(log.slice(-6000));process.exitCode=1} +})().catch(e=>{console.error(e);process.exitCode=1})}else{ + const {app,BrowserWindow,dialog}=require('electron'),{pathToFileURL}=require('node:url');const dir=process.env.B04_APP_DIR;app.disableHardwareAcceleration();app.setPath('home',path.join(dir,'home'));app.setPath('downloads',dir);let saveDialogs=0;dialog.showSaveDialog=async()=>{saveDialogs++;return {canceled:false,filePath:path.join(dir,'downloaded.png')}};let win,stage='boot';const errors=[],checks=[],traces=[];const pause=ms=>new Promise(r=>setTimeout(r,ms));const read=s=>win.webContents.executeJavaScript(s);async function wait(s){for(let i=0;i<300;i++){const x=await read(s);if(x)return x;await pause(30)}throw Error('Timeout '+s)}function check(name,value){checks.push({name,pass:!!value});assert.ok(value,name)}async function shot(n){await pause(100);await fs.writeFile(path.join(dir,n+'.png'),(await win.webContents.capturePage()).toPNG())} + const timer=setTimeout(()=>{console.error('Watchdog',stage);app.exit(1)},60000); + ;(async()=>{await import(pathToFileURL(path.resolve('out/main/index.mjs')).href);await app.whenReady();win=BrowserWindow.getAllWindows()[0];win.webContents.setBackgroundThrottling(false);win.setSize(1336,902);win.showInactive();win.webContents.on('console-message',(_e,l,m)=>{if(l>=3)errors.push(m)});await wait('!!document.querySelector(".cr-collapse--completed > .cr-collapse__header")');await read(`window.__b04Mutations=[];window.__b04Error=[];window.addEventListener('error',e=>window.__b04Error.push(e.message));window.__b04Obs=new MutationObserver(records=>{for(const r of records){for(const n of r.addedNodes){const t=n.textContent||'';if(t.includes('base64,')||t.includes('data:image/'))window.__b04Mutations.push({textLength:t.length})}}});window.__b04Obs.observe(document.querySelector('.chat-thread'),{childList:true,subtree:true,characterData:true});true`); + for(const [index,id]of ['b04-a','b04-b','b04-a'].entries()){ + stage=id;const selector=JSON.stringify('[data-session-id="'+id+'"]');await read('document.querySelector('+selector+').click()');await wait('!document.querySelector(".yc-session-skeleton") && !!document.querySelector(".cr-collapse--completed > .cr-collapse__header")');await wait('[...document.querySelectorAll("img.markdown-content__image")].some(x=>x.complete&&x.naturalWidth===320)'); + for(let cycle=0;cycle<4;cycle++){ + const trace=await read(`new Promise(resolve=>{const samples=[];const take=label=>{const region=document.querySelector('.msg--assistant')||document.querySelector('.chat-thread');const text=region.textContent||'';const img=region.querySelector('img.markdown-content__image');samples.push({label,time:performance.now(),height:region.getBoundingClientRect().height,textLength:text.length,uriText:text.includes('base64,')||text.includes('data:image/'),imageHeight:img?.getBoundingClientRect().height||0,decoded:!!img?.complete&&img.naturalWidth===320})};take('before');document.querySelector('.cr-collapse--completed > .cr-collapse__header').click();take('click');let left=12;const frame=()=>{take('frame-'+(12-left));if(--left)requestAnimationFrame(frame);else resolve(samples)};requestAnimationFrame(frame)})`);traces.push({id,index,cycle,samples:trace});check(id+' cycle'+cycle+' no URI text',trace.every(x=>!x.uriText&&x.textLength<1000));check(id+' cycle'+cycle+' no giant height',trace.every(x=>x.height>0&&x.height<2000));check(id+' cycle'+cycle+' decoded image in frames',trace.some(x=>x.decoded&&x.imageHeight>0));if(cycle===0)await shot('session-'+index+'-expanded'); + } + } + check('MutationObserver saw no URI text nodes',!(await read('window.__b04Mutations.length')));check('zero captured renderer errors',errors.length===0&&!(await read('window.__b04Error.length'))); + stage='preview';await read('document.querySelector("img.markdown-content__image").click()');await wait('!!document.querySelector(".wb-image-preview")');check('production image preview opens',true);await wait('document.querySelector(".wb-image-preview img")?.naturalWidth===320');check('preview image decodes',true);await shot('image-preview');await read('document.querySelector(".wb-image-preview [aria-label=下载图片]").click()');let downloaded;for(let i=0;i<200;i++){try{downloaded=await fs.readFile(path.join(dir,'downloaded.png'));if(downloaded.length)break}catch{}await pause(20)}const fixtureText=await fs.readFile('scripts/b04-image-lifecycle-fixture.tsx','utf8');const pixel=fixtureText.match(/const pixel = '([^']+)'/)[1];const expected=Buffer.concat([Buffer.from(pixel,'base64'),Buffer.alloc(18000)]);check('actual image download bytes preserved',downloaded?.equals(expected));check('download traverses native save dialog adapter',saveDialogs===1);await read('document.querySelector(".wb-image-preview [aria-label=关闭预览]").click()');await wait('!document.querySelector(".wb-image-preview")');check('image preview closes',true); + const heights=traces.flatMap(t=>t.samples.map(x=>x.height));await fs.writeFile(path.join(dir,'report.json'),JSON.stringify({codeSha:'342820690f644fb1cb3b0a76b143dbcd41aac8c4',scope:'Unmodified built production main/preload/renderer with synthetic persisted history; 3 session selections, 12 toggles, consecutive real rAF frames; background throttling disabled only for QA window; no model requests',checks,traces,minHeight:Math.min(...heights),maxHeight:Math.max(...heights),errors},null,2));clearTimeout(timer);app.exit(0) + })().catch(async e=>{console.error(stage,e);if(win)await shot('failure').catch(()=>{});await fs.writeFile(path.join(dir,'failure.json'),JSON.stringify({stage,message:String(e),checks,errors},null,2));app.exit(1)}) +} diff --git a/docs/协作/evidence/B04-review-01/app-preview.png b/docs/协作/evidence/B04-review-01/app-preview.png new file mode 100644 index 0000000..74f6f19 Binary files /dev/null and b/docs/协作/evidence/B04-review-01/app-preview.png differ diff --git a/docs/协作/evidence/B04-review-01/app-report.json b/docs/协作/evidence/B04-review-01/app-report.json new file mode 100644 index 0000000..fc52edc --- /dev/null +++ b/docs/协作/evidence/B04-review-01/app-report.json @@ -0,0 +1,1779 @@ +{ + "codeSha": "342820690f644fb1cb3b0a76b143dbcd41aac8c4", + "scope": "Unmodified built production main/preload/renderer with synthetic persisted history; 3 session selections, 12 toggles, consecutive real rAF frames; background throttling disabled only for QA window; no model requests", + "checks": [ + { + "name": "b04-a cycle0 no URI text", + "pass": true + }, + { + "name": "b04-a cycle0 no giant height", + "pass": true + }, + { + "name": "b04-a cycle0 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle1 no URI text", + "pass": true + }, + { + "name": "b04-a cycle1 no giant height", + "pass": true + }, + { + "name": "b04-a cycle1 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle2 no URI text", + "pass": true + }, + { + "name": "b04-a cycle2 no giant height", + "pass": true + }, + { + "name": "b04-a cycle2 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle3 no URI text", + "pass": true + }, + { + "name": "b04-a cycle3 no giant height", + "pass": true + }, + { + "name": "b04-a cycle3 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle0 no URI text", + "pass": true + }, + { + "name": "b04-b cycle0 no giant height", + "pass": true + }, + { + "name": "b04-b cycle0 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle1 no URI text", + "pass": true + }, + { + "name": "b04-b cycle1 no giant height", + "pass": true + }, + { + "name": "b04-b cycle1 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle2 no URI text", + "pass": true + }, + { + "name": "b04-b cycle2 no giant height", + "pass": true + }, + { + "name": "b04-b cycle2 decoded image in frames", + "pass": true + }, + { + "name": "b04-b cycle3 no URI text", + "pass": true + }, + { + "name": "b04-b cycle3 no giant height", + "pass": true + }, + { + "name": "b04-b cycle3 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle0 no URI text", + "pass": true + }, + { + "name": "b04-a cycle0 no giant height", + "pass": true + }, + { + "name": "b04-a cycle0 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle1 no URI text", + "pass": true + }, + { + "name": "b04-a cycle1 no giant height", + "pass": true + }, + { + "name": "b04-a cycle1 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle2 no URI text", + "pass": true + }, + { + "name": "b04-a cycle2 no giant height", + "pass": true + }, + { + "name": "b04-a cycle2 decoded image in frames", + "pass": true + }, + { + "name": "b04-a cycle3 no URI text", + "pass": true + }, + { + "name": "b04-a cycle3 no giant height", + "pass": true + }, + { + "name": "b04-a cycle3 decoded image in frames", + "pass": true + }, + { + "name": "MutationObserver saw no URI text nodes", + "pass": true + }, + { + "name": "zero captured renderer errors", + "pass": true + }, + { + "name": "production image preview opens", + "pass": true + }, + { + "name": "preview image decodes", + "pass": true + }, + { + "name": "actual image download bytes preserved", + "pass": true + }, + { + "name": "download traverses native save dialog adapter", + "pass": true + }, + { + "name": "image preview closes", + "pass": true + } + ], + "traces": [ + { + "id": "b04-a", + "index": 0, + "cycle": 0, + "samples": [ + { + "label": "before", + "time": 790.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 790.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 796.6999999992549, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 799.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 799.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 803.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 808.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 812.1999999992549, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 816.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 819.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 824.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 829.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 832.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 837.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 0, + "cycle": 1, + "samples": [ + { + "label": "before", + "time": 988.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 988.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 992.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 994.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 995.6999999992549, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 999.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1003.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1007.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1012.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1016, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1020.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1025.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1028.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1032.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 0, + "cycle": 2, + "samples": [ + { + "label": "before", + "time": 1034.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1034.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1039.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1041.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1045.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1049.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1053.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1058.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1062.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1067.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1070.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1074.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1078.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1082.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 0, + "cycle": 3, + "samples": [ + { + "label": "before", + "time": 1083.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1083.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1087.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1091.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1096.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1099.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1103.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1107.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1112.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1116.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1121.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1125.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1128.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1133.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 0, + "samples": [ + { + "label": "before", + "time": 1459.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1459.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1465.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1468.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1470.199999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1475, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1478.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1483.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1487.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1491.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1496.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1499.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1504.199999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1508.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 1, + "samples": [ + { + "label": "before", + "time": 1657.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1658.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1660.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1662.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1666.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1670.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1674.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1679.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1682.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1687.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1691.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1695.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1699.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1704.2999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 2, + "samples": [ + { + "label": "before", + "time": 1704.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1704.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1707.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1711.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1716.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1720.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1724.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1729.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1733.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1737.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1742, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1745.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1749.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1753.8999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-b", + "index": 1, + "cycle": 3, + "samples": [ + { + "label": "before", + "time": 1754.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1754.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1758.8999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1762, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1766.3999999985099, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1771.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1774.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1779.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1783.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1788.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1791.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1796.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1800.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1804.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 0, + "samples": [ + { + "label": "before", + "time": 1836.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 1837, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 1841.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 1846.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 1850.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 1854.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 1859.199999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 1862.699999999255, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 1866.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 1870.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 1876, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 1878.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 1883.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 1888.3999999985099, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 1, + "samples": [ + { + "label": "before", + "time": 2052.89999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 2053.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 2057.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 2059.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 2062.699999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 2065.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 2070.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 2074.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 2079.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 2083, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 2087.199999999255, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 2091.7999999988824, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 2095.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 2100, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 2, + "samples": [ + { + "label": "before", + "time": 2100.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 2101.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 2105.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 2108.0999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 2112.39999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 2116.89999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 2120.39999999851, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 2124.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 2128.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 2133.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 2137.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 2140.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 2145.5999999996275, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 2149.7999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + }, + { + "id": "b04-a", + "index": 2, + "cycle": 3, + "samples": [ + { + "label": "before", + "time": 2151.2999999988824, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "click", + "time": 2151.5, + "height": 357, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-0", + "time": 2156.39999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-1", + "time": 2158.5999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-2", + "time": 2161.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-3", + "time": 2166.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-4", + "time": 2169.89999999851, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-5", + "time": 2175, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-6", + "time": 2178.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-7", + "time": 2183.0999999996275, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-8", + "time": 2187.5, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-9", + "time": 2191, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-10", + "time": 2195, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + }, + { + "label": "frame-11", + "time": 2199, + "height": 322.75, + "textLength": 56, + "uriText": false, + "imageHeight": 180, + "decoded": true + } + ] + } + ], + "minHeight": 322.75, + "maxHeight": 357, + "errors": [] +} \ No newline at end of file diff --git a/docs/协作/evidence/B04-review-01/build-negative.mjs b/docs/协作/evidence/B04-review-01/build-negative.mjs new file mode 100644 index 0000000..8da6f65 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/build-negative.mjs @@ -0,0 +1 @@ +import fs from 'node:fs';import path from 'node:path';import {execFileSync} from 'node:child_process';import{build}from'esbuild';const out=fs.mkdtempSync(path.resolve('.tmp/b04-baseline-'));const code=execFileSync('git',['show','0b613e5:src/renderer/src/workbuddy/images/MarkdownImage.tsx'],{encoding:'utf8'});await build({entryPoints:['scripts/b04-image-lifecycle-fixture.tsx'],outfile:path.join(out,'fixture.js'),bundle:true,platform:'browser',format:'iife',jsx:'automatic',loader:{'.woff2':'dataurl','.woff':'dataurl','.ttf':'dataurl','.svg':'dataurl','.png':'dataurl'},plugins:[{name:'baseline-negative-control',setup(b){b.onLoad({filter:/[\\/]images[\\/]MarkdownImage\.tsx$/},args=>({contents:code,loader:'tsx',resolveDir:path.dirname(args.path)}))}}],logLevel:'error'});fs.copyFileSync('.tmp/b04-image-pmmWZx/index.html',path.join(out,'index.html'));console.log(out); diff --git a/docs/协作/evidence/B04-review-01/build.txt b/docs/协作/evidence/B04-review-01/build.txt new file mode 100644 index 0000000..c6ac0fb --- /dev/null +++ b/docs/协作/evidence/B04-review-01/build.txt @@ -0,0 +1,660 @@ + +> ycode@0.0.7 build +> npm run typecheck && electron-vite build + + +> ycode@0.0.7 typecheck +> tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.web.json + +vite v8.3.4 building ssr environment for production... +transforming... +✓ 444 modules transformed. +rendering chunks... +out/main/index.mjs 1,599.48 kB + +✓ built in 251ms +vite v8.3.4 building ssr environment for production... +transforming... +✓ 2 modules transformed. +rendering chunks... +out/preload/index.cjs 15.89 kB + +✓ built in 12ms +vite v8.3.4 building client environment for production... +transforming... +✓ 3039 modules transformed. +rendering chunks... +out/renderer/settings.html 1.57 kB +out/renderer/index.html 1.75 kB +out/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff 4.42 kB +out/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 4.92 kB +out/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 5.20 kB +out/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 5.46 kB +out/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff 5.98 kB +out/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff 6.18 kB +out/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff 6.49 kB +out/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 6.90 kB +out/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 6.91 kB +out/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf 7.58 kB +out/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff 7.65 kB +out/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff 7.71 kB +out/renderer/assets/archify-owner-avatar-BdE-HOjX.jpg 9.46 kB +out/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 9.64 kB +out/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 10.34 kB +out/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf 10.36 kB +out/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff 10.58 kB +out/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 11.31 kB +out/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 11.34 kB +out/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf 11.50 kB +out/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 12.02 kB +out/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 12.21 kB +out/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf 12.22 kB +out/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff 12.31 kB +out/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf 12.34 kB +out/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf 12.36 kB +out/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff 13.20 kB +out/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff 13.29 kB +out/renderer/assets/workbuddy-buddy-thumbnail-2713ed5b-CUhW0EYr.png 13.42 kB +out/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 13.56 kB +out/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff 14.11 kB +out/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff 14.40 kB +out/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff 16.02 kB +out/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 16.40 kB +out/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 16.44 kB +out/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf 16.64 kB +out/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 16.78 kB +out/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 16.98 kB +out/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff 18.66 kB +out/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff 18.74 kB +out/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff 19.41 kB +out/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf 19.43 kB +out/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf 19.57 kB +out/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf 19.58 kB +out/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff 19.67 kB +out/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf 22.36 kB +out/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf 24.50 kB +out/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 25.32 kB +out/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 26.27 kB +out/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf 27.55 kB +out/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 28.07 kB +out/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff 29.91 kB +out/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff 30.77 kB +out/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf 31.19 kB +out/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf 31.30 kB +out/renderer/assets/design-case-3-DaIvrslH.png 32.76 kB +out/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf 32.96 kB +out/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff 33.51 kB +out/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf 33.58 kB +out/renderer/assets/design-case-4-0hVdAJQR.png 45.16 kB +out/renderer/assets/design-case-2-BH_iQ5r3.png 45.56 kB +out/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf 51.33 kB +out/renderer/assets/design-case-1-DOYiafVz.png 52.97 kB +out/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf 53.58 kB +out/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf 63.63 kB +out/renderer/assets/workbuddy-appearance-dark-CXQX3TZX.png 109.34 kB +out/renderer/assets/workbuddy-appearance-light-BbpPCukh.png 113.02 kB +out/renderer/assets/codicon-ngg6Pgfi-ngg6Pgfi.ttf 121.97 kB +out/renderer/assets/kimi-DiLyRSiJ.svg 129.22 kB +out/renderer/assets/json.worker-DEWrzUkU-FVRG9O7E.js 438.21 kB +out/renderer/assets/worker-portable-D1lwTqsk-Dg0RNmO0.js 456.22 kB +out/renderer/assets/landing-hero-B6659kdy.png 629.28 kB +out/renderer/assets/html.worker-BC4B-9NY-BDdNc3ca.js 756.63 kB +out/renderer/assets/css.worker-D7wyZb8r-YRw1jg-F.js 1,086.92 kB +out/renderer/assets/ts.worker-BsXRl7a--BbqraoNr.js 8,187.30 kB +out/renderer/assets/ArtifactPierreDiff-CNAfnhAF.css 1.16 kB +out/renderer/assets/GeneralSettingsPanel-CntDyB52.css 1.25 kB +out/renderer/assets/AgentsSettingsPanel-R0teGDyD.css 2.56 kB +out/renderer/assets/AboutHelpSettingsPanel-ksqGLObi.css 5.72 kB +out/renderer/assets/updates-ui-COSnOGKS.css 6.84 kB +out/renderer/assets/AppearanceSettingsPanel-DcaRECSa.css 8.03 kB +out/renderer/assets/ShortcutsSettingsPanel-Bu_5_488.css 18.05 kB +out/renderer/assets/MemorySettingsPanel-C3dtDAif.css 32.49 kB +out/renderer/assets/ModelSettingsPanel-BjNmxQAH.css 88.98 kB +out/renderer/assets/PersonalizationSettingsPanel-DnAyzaM6.css 98.77 kB +out/renderer/assets/app-DH7L1ZF2.css 259.93 kB +out/renderer/assets/index-Cj0yjvuz.css 2,685.07 kB +out/renderer/assets/pie-WAS4IAKB-1a9lbjhh.js 0.11 kB +out/renderer/assets/info-A6RAGUB7-Dsq8pPGK.js 0.11 kB +out/renderer/assets/radar-RG4KPBEZ-BwNT2qWb.js 0.11 kB +out/renderer/assets/packet-AYTQ26CC-C-iOIVQo.js 0.11 kB +out/renderer/assets/cynefin-OW5HDTMX-CTYbUR58.js 0.11 kB +out/renderer/assets/treemap-WGGIJYW6-CWek0LQD.js 0.11 kB +out/renderer/assets/wardley-WFR3VGLG-BnrEXTnU.js 0.11 kB +out/renderer/assets/gitGraph-4MIJSDKK-NHpEvzKf.js 0.12 kB +out/renderer/assets/railroad-74A4TZTK-CyYHr3KR.js 0.12 kB +out/renderer/assets/treeView-Q6P3EWNA-CzdWA6Mh.js 0.12 kB +out/renderer/assets/railroad-peg-WCYAUIDC-DyA9P8dX.js 0.12 kB +out/renderer/assets/architecture-7GRP2DOG-VyF0wzFW.js 0.12 kB +out/renderer/assets/railroad-abnf-HS5TGJTU-DWOH6PDU.js 0.12 kB +out/renderer/assets/railroad-ebnf-LZEXJU2U-B8jXqV-T.js 0.12 kB +out/renderer/assets/eventmodeling-NTZA5JFV-Dmu4IHsI.js 0.12 kB +out/renderer/assets/array-75Ih5Qg4.js 0.16 kB +out/renderer/assets/channel-BWYdHcz8.js 0.25 kB +out/renderer/assets/init-DHdG6DHP.js 0.27 kB +out/renderer/assets/chunk-Y2CYZVJY-CrOJDJJy.js 0.38 kB +out/renderer/assets/chunk-JWPE2WC7-BWmaSNkB.js 0.42 kB +out/renderer/assets/chunk-2Q5K7J3B-BBOGhvIe.js 0.44 kB +out/renderer/assets/prism-tsx-BJWEHjlk.js 0.48 kB +out/renderer/assets/chunk-5VM5RSS4-D50WUAUX.js 0.52 kB +out/renderer/assets/chunk-XXDRQBXY-BsO966Nz.js 0.58 kB +out/renderer/assets/flowDiagram-HODETNUW-B_Hn1JJX.js 0.59 kB +out/renderer/assets/prism-json-DxLGXN1o.js 0.62 kB +out/renderer/assets/codeowners-C7Y3CTAA-BmB2_gvY.js 0.75 kB +out/renderer/assets/prism-clike-BcH_eOfE.js 0.89 kB +out/renderer/assets/tsv-DVa1_Ovr-BeS2kE5e.js 0.94 kB +out/renderer/assets/shellsession-C0HwRpr0-B630Ulnl.js 0.96 kB +out/renderer/assets/javascript-DGySzfUB-CQaVVFGk.js 0.99 kB +out/renderer/assets/settings-CauUETdq.js 1.01 kB +out/renderer/assets/infoDiagram-27XIBGKW-DAu8ItxJ.js 1.09 kB +out/renderer/assets/swimlanesDiagram-VR7AAH4N-Ct7OYBFw.js 1.09 kB +out/renderer/assets/html-derivative-D3Jld805-D0QQ5MTi.js 1.10 kB +out/renderer/assets/prism-go-Cw8Jg9YT.js 1.11 kB +out/renderer/assets/classDiagram-ZZMXUADV-DAB1INnK.js 1.16 kB +out/renderer/assets/classDiagram-v2-VYDZK3BY-C1gps0gA.js 1.16 kB +out/renderer/assets/stateDiagram-v2-MP3YSRHH-DMDk3VHP.js 1.16 kB +out/renderer/assets/qmldir-DIq06gp2-CFVtueeV.js 1.20 kB +out/renderer/assets/git-rebase-CgwCWTNR-Cpss9r90.js 1.23 kB +out/renderer/assets/chunk-POPQ4Y6H-C0lMyeyY.js 1.23 kB +out/renderer/assets/azcli-Bsxmaz-H-Dgh56k5-.js 1.26 kB +out/renderer/assets/personalization-prefs-DASR3vwn.js 1.28 kB +out/renderer/assets/csv-BRhERoQG-DKrQczXm.js 1.36 kB +out/renderer/assets/prism-latex-CHSuA_Lo.js 1.38 kB +out/renderer/assets/jsx-runtime-C48wkPcG.js 1.41 kB +out/renderer/assets/git-commit-DGtBy1vY-s2uHofP2.js 1.47 kB +out/renderer/assets/AgentsSettingsPanel-CMYBwUKH.js 1.56 kB +out/renderer/assets/xsl-DV28r3Jw-B8bWzO_h.js 1.59 kB +out/renderer/assets/dotenv-DXc2fSbR-CUbEjgJq.js 1.62 kB +out/renderer/assets/general-settings-icons-DOmPIusw.js 1.64 kB +out/renderer/assets/prism-scala-CRTYzCpy.js 1.65 kB +out/renderer/assets/ini-D4-1Iswn-DaNDgFS8.js 1.65 kB +out/renderer/assets/prism-typescript-D-7ZUUQ-.js 1.65 kB +out/renderer/assets/sizeCapture-INFHLROL-CCEMv_MJ.js 1.68 kB +out/renderer/assets/csp-Bsbijh2H-033SDyRW.js 1.69 kB +out/renderer/assets/sparql-Mj-YIaDH-DAUou2oc.js 1.71 kB +out/renderer/assets/prism-css-Cmyw76Xa.js 1.73 kB +out/renderer/assets/ini-DMSv7OY2-xgSkktY4.js 1.74 kB +out/renderer/assets/rolldown-runtime-BJCASTsb-DKQFAHUF.js 1.78 kB +out/renderer/assets/line-C0E7FoJh.js 1.89 kB +out/renderer/assets/fortran-fixed-form-D91DiZLE-NxoUlVkB.js 1.91 kB +out/renderer/assets/docker-B7J3eHK7-C3FNXPS_.js 1.96 kB +out/renderer/assets/hxml-938TheZ7-pE5ojWPT.js 1.97 kB +out/renderer/assets/desktop-BwI-o01e-Da9rFJOd.js 2.03 kB +out/renderer/assets/ordinal-CmpyCcm_.js 2.22 kB +out/renderer/assets/prism-c-B7tsC1jE.js 2.23 kB +out/renderer/assets/rolldown-runtime-EITvVbkG.js 2.32 kB +out/renderer/assets/erb-BgMB3Uiw-CLkRQ9Hf.js 2.40 kB +out/renderer/assets/prism-kotlin-Bc2NQYRR.js 2.43 kB +out/renderer/assets/jssm-CIisorE2-ggX0kbSA.js 2.44 kB +out/renderer/assets/prism-python-CTkfasgb.js 2.48 kB +out/renderer/assets/reg-mzCtpvUf-BHC3bGU6.js 2.54 kB +out/renderer/assets/bat-2PwuskcT-BbFmQdFU.js 2.55 kB +out/renderer/assets/prism-mermaid-DSoNsh6-.js 2.56 kB +out/renderer/assets/pla-HAHcX3CH-DHyEyFew.js 2.57 kB +out/renderer/assets/sb-O6mPt74--_nMcDiF8.js 2.60 kB +out/renderer/assets/chunk-GVQU2GXP-7eKncF4J.js 2.61 kB +out/renderer/assets/edge-DcEd3r9D-ZJX3cnY_.js 2.62 kB +out/renderer/assets/scheme-C-yCXfo--BHhgh59u.js 2.66 kB +out/renderer/assets/flow9-z3HgHIql-qOic_Sv2.js 2.72 kB +out/renderer/assets/prism-yaml-cmjQ_1eD.js 2.77 kB +out/renderer/assets/gleam-DEEAoY6G-DgJJp7nh.js 2.78 kB +out/renderer/assets/railroadDiagram-O6MQD6OU-Cgcpj7Hd.js 2.78 kB +out/renderer/assets/diff-lAxbRYdS--5gtlmD4.js 2.79 kB +out/renderer/assets/hy-BKymZdC0-4uNvYh3y.js 2.86 kB +out/renderer/assets/dockerfile-CnkhFuxG-CfXHMZr-.js 3.01 kB +out/renderer/assets/openscad-BRTETpP_-BThzc9qL.js 3.03 kB +out/renderer/assets/pascaligo-DI1dd1Zd-D23AoFdQ.js 3.03 kB +out/renderer/assets/log-Cn1ZE6kb-BE4srnlV.js 3.05 kB +out/renderer/assets/objective-c-gNYZndaF-4hkcNMcE.js 3.06 kB +out/renderer/assets/sparql-DxWbGozt-B7qTmycl.js 3.08 kB +out/renderer/assets/prism-markup-templating-D4pSJIpH.js 3.11 kB +out/renderer/assets/prism-cpp-CEgmwlDT.js 3.11 kB +out/renderer/assets/cameligo-B6LDhzzR-DSNRk43W.js 3.12 kB +out/renderer/assets/wenyan-BVgiL1tD-C7ph_xMt.js 3.12 kB +out/renderer/assets/cairo-D_LzMZ4I-C21twps2.js 3.17 kB +out/renderer/assets/prism-rust-Du0Qa8GC.js 3.18 kB +out/renderer/assets/lua-CJt09SGy-3O0VAMVx.js 3.19 kB +out/renderer/assets/graphql-C0cKWTiE-BQOKksLE.js 3.20 kB +out/renderer/assets/berry-DTcSbIs7-DsDdtWdB.js 3.20 kB +out/renderer/assets/jsonl-Cn_fzNA8-cIG9lf61.js 3.21 kB +out/renderer/assets/json-CKKhFIOr-DuiQFrCF.js 3.29 kB +out/renderer/assets/mips-Df5bwPtM-DJn7b529.js 3.29 kB +out/renderer/assets/jsonc-Bf3Xcgeq-BGBJ2TDY.js 3.31 kB +out/renderer/assets/logo-BxqPaaID-DK9gUnx4.js 3.33 kB +out/renderer/assets/abnfDiagram-VCTEODGH-uONEdbnu.js 3.36 kB +out/renderer/assets/go-BejFoqvR-BnGoIlsY.js 3.42 kB +out/renderer/assets/po-DI6EG-tz-DIkePE8T.js 3.44 kB +out/renderer/assets/lexon-5NyrCfQ6-B1bdOCGH.js 3.45 kB +out/renderer/assets/prism-sql-BggiY1Ht.js 3.45 kB +out/renderer/assets/json5-BlijqrwT-Ci88mndw.js 3.45 kB +out/renderer/assets/mipsasm-U3SQfJCQ-kat_Vj1M.js 3.46 kB +out/renderer/assets/sophia-foSZ3xPI-DGYIHURw.js 3.47 kB +out/renderer/assets/tasl-C74Cvwdf-se1Ptgso.js 3.49 kB +out/renderer/assets/genie-CjS3m_gh-DHydh9_z.js 3.56 kB +out/renderer/assets/prism-swift-xplGsQ1n.js 3.56 kB +out/renderer/assets/vala-DMgevQbf-ByJQiTkp.js 3.57 kB +out/renderer/assets/pegDiagram-XKGWAZYB-QQD45E-l.js 3.59 kB +out/renderer/assets/rel-D6dNeDZv-CUAJzmkw.js 3.60 kB +out/renderer/assets/prism-java-6uFEGwWz.js 3.63 kB +out/renderer/assets/fsharp-Ba-cvOiG-BoxQhS9v.js 3.64 kB +out/renderer/assets/chunk-P2QGCYS3-BGwFmzs4.js 3.65 kB +out/renderer/assets/ebnfDiagram-PWID7BFC-DkiTnzd7.js 3.66 kB +out/renderer/assets/qsharp-78iLGMHs-Dbh3PRIx.js 3.68 kB +out/renderer/assets/m3-Bu81_nWr-4t51Qx0i.js 3.69 kB +out/renderer/assets/chunk-F27PBJKO-BEkPd1ND.js 3.70 kB +out/renderer/assets/pascal-DyPgZbsX-Ba58YM7a.js 3.71 kB +out/renderer/assets/path-CSWwviF2.js 3.79 kB +out/renderer/assets/fluent-BSSEgVQa-BCOQigl1.js 3.81 kB +out/renderer/assets/splunk-BdqSfgpd-BtOEh0Mo.js 3.81 kB +out/renderer/assets/jsonnet-Bn71vRY8-QjPNMWdY.js 3.82 kB +out/renderer/assets/ssh-config-BO51LXox-DkFt_ueS.js 3.82 kB +out/renderer/assets/bicep-DujF3y-4-DHww3ZLF.js 3.87 kB +out/renderer/assets/narrat-DdgkgBr0-CSyxDqta.js 3.87 kB +out/renderer/assets/redis-Bo427DT4-DBDF4ZWx.js 3.88 kB +out/renderer/assets/turtle-DAmmiOda-C48PN72o.js 3.92 kB +out/renderer/assets/dist-CE9GMTNb.js 3.97 kB +out/renderer/assets/prism-jsx-BO0yI1A3.js 3.97 kB +out/renderer/assets/xml-BBFzlEmT-CqLnJtYa.js 3.99 kB +out/renderer/assets/java-Z7anYNQ6-DdC7WVZS.js 4.01 kB +out/renderer/assets/r-Xh-gXEK4-DKEPC8dA.js 4.02 kB +out/renderer/assets/ron-CdysqNkW-BG7UwPdX.js 4.11 kB +out/renderer/assets/zenscript-XbBI4c9W-C-aTQo6e.js 4.12 kB +out/renderer/assets/glsl-CZF-bvQV-UaBdSZy0.js 4.14 kB +out/renderer/assets/shell-DGp7WuK3-X00pamiI.js 4.15 kB +out/renderer/assets/gn-DJxfXStl-BD_k0CWf.js 4.20 kB +out/renderer/assets/kotlin-C61BvWgT-B7MkJpdU.js 4.20 kB +out/renderer/assets/typespec-B704GmX3-f1l-QmOw.js 4.26 kB +out/renderer/assets/kdl-YTd72GVl-DLkP_pAB.js 4.27 kB +out/renderer/assets/AppearanceSettingsPanel-B_352Jrg.js 4.28 kB +out/renderer/assets/hurl-CDXCvJNd-Xd5k76nE.js 4.28 kB +out/renderer/assets/cypher-CjfQI0Y9-9gjOyi6P.js 4.33 kB +out/renderer/assets/pascal-CLPA94yO-C11lM2uy.js 4.35 kB +out/renderer/assets/powershell-CaPzBwIT-C9KgMPOP.js 4.50 kB +out/renderer/assets/tcl-D-NiFh9X-CYwv4uzi.js 4.63 kB +out/renderer/assets/apex-BE-040ts-wdfiR7V6.js 4.65 kB +out/renderer/assets/tcl-DowxIvU4-Bbhzqrsw.js 4.65 kB +out/renderer/assets/rosmsg-DDyuMVTo-DSHWRdSZ.js 4.72 kB +out/renderer/assets/nextflow-DVTlkzu9-Cis-JUmb.js 4.75 kB +out/renderer/assets/http-DhxVjYFh-CjwVOaui.js 4.76 kB +out/renderer/assets/hcl-CbjaVS9i-DCS43mBd.js 4.79 kB +out/renderer/assets/rust-Ij2gfGoT-DLzaBWYs.js 4.83 kB +out/renderer/assets/polar-CwTxzzWE-DygHL4ZA.js 4.87 kB +out/renderer/assets/prism-ruby-PgHh3fQm.js 4.91 kB +out/renderer/assets/fennel-COJTUo2O-DYh8-dep.js 4.97 kB +out/renderer/assets/bibtex-yEKRWsaj-xHthw1sC.js 5.00 kB +out/renderer/assets/coffee-CcgZJF1B-DkN4xoBX.js 5.04 kB +out/renderer/assets/llvm-DiFwU398-BQjCVu39.js 5.25 kB +out/renderer/assets/less-CXux59mP-BM7SkPLH.js 5.27 kB +out/renderer/assets/msdax-DEyWhkWP-CwdIr_-P.js 5.29 kB +out/renderer/assets/prism-javascript-B6zosBCV.js 5.31 kB +out/renderer/assets/wgsl-Ds7VVNHP-yP3bMkfO.js 5.34 kB +out/renderer/assets/markdown-CBag5COD-B_1rbk64.js 5.36 kB +out/renderer/assets/dart-DK8_VUW5-Bnb_Tn57.js 5.39 kB +out/renderer/assets/zig-BBWfbOQ5-B8x_JL1P.js 5.54 kB +out/renderer/assets/restructuredtext-D2p7PcFG-DDHAm_JI.js 5.55 kB +out/renderer/assets/dax-CmrIxjmL-CDTyHmZ_.js 5.56 kB +out/renderer/assets/gdresource-4lq4eh4q-CjhvlVte.js 5.56 kB +out/renderer/assets/qml-D6gd64uC-_ykXVPoZ.js 5.57 kB +out/renderer/assets/bicep-wTwvD1CI-C568hcwN.js 5.58 kB +out/renderer/assets/cssMode-Z-o80aSY-DKJev6nN.js 5.59 kB +out/renderer/assets/awk-DTjcVAOD-BmfaVU4m.js 5.66 kB +out/renderer/assets/liquid-Dv-zz5BA-D9ukCDuL.js 5.71 kB +out/renderer/assets/csharp-DpS7Vfy9-CbQzv1ql.js 5.76 kB +out/renderer/assets/coq-BFytDJOI-C5vNmx0q.js 5.81 kB +out/renderer/assets/swift-C3A42nmX-BBVToPkN.js 5.83 kB +out/renderer/assets/xml-bIkPj5aH-Bx1v5u6-.js 5.89 kB +out/renderer/assets/ecl-CYzojQ6a-C8m0_osY.js 5.91 kB +out/renderer/assets/jinja-Dl-Ji_JA-BBL5sTd0.js 5.92 kB +out/renderer/assets/lean-Cu10prRO-BUTVAAdc.js 6.03 kB +out/renderer/assets/yaml-GEMDST6R-D-0AGe4F.js 6.09 kB +out/renderer/assets/moonbit-B8-g2u5v-CGBFUznC.js 6.10 kB +out/renderer/assets/powerquery-tKWDTKOo-CejxekA_.js 6.11 kB +out/renderer/assets/SourceCodePreview-BOcQ0CWg.js 6.11 kB +out/renderer/assets/python-CHafhQyI-DmJIfgbV.js 6.14 kB +out/renderer/assets/shaderlab-Df7nOKvI-0G488FSx.js 6.16 kB +out/renderer/assets/css-sG8ozMHf-pZGexMoj.js 6.17 kB +out/renderer/assets/cpp-CipCPBaT-7uQRIwsC.js 6.17 kB +out/renderer/assets/vb-BKV3Sgm5-D5ytx6Ln.js 6.29 kB +out/renderer/assets/htmlMode-BDZbYlMj-BYkSXaZz.js 6.40 kB +out/renderer/assets/red-CYaKK_PD-iiAMl8iL.js 6.45 kB +out/renderer/assets/min-dark-DGPfDRqJ-gZu6HtcU.js 6.48 kB +out/renderer/assets/pug-EKWpNZSi-oQ708bsr.js 6.51 kB +out/renderer/assets/prisma-CdZyz3OC-ChFCtYaa.js 6.53 kB +out/renderer/assets/gdshader-ryZhEIxg-DpcQqwXn.js 6.55 kB +out/renderer/assets/ara-_lrJyEFe-qigo-wGx.js 6.56 kB +out/renderer/assets/clojure-WSq30mUj-Bswhoa1y.js 6.61 kB +out/renderer/assets/toml-DPP887_3-aOuHoLTy.js 6.62 kB +out/renderer/assets/postcss-CcIp2ENG-DpmxBCXW.js 6.64 kB +out/renderer/assets/verilog-bragEGMk-CemzLugw.js 6.64 kB +out/renderer/assets/solarized-light-BIMszn7B-vPMkTTwP.js 6.68 kB +out/renderer/assets/cypher-COYrq2Yy-BtVrfsLp.js 6.75 kB +out/renderer/assets/arc-LpCwTDer.js 6.75 kB +out/renderer/assets/proto-CQIfhs_g-Deqofbl3.js 6.77 kB +out/renderer/assets/smalltalk-BLGdLDJX-BKGgemER.js 6.79 kB +out/renderer/assets/vb-D1Cw85Ss-BSz-V9M4.js 6.86 kB +out/renderer/assets/talonscript-DA9pg7Tj-CPXKQ95R.js 6.96 kB +out/renderer/assets/r-Bb2Mu7Fo-Dq0URONw.js 7.00 kB +out/renderer/assets/solarized-dark-D_I-4EGa-BZbeAUhW.js 7.04 kB +out/renderer/assets/diagram-Z3DM3KII-BF3ekc2Y.js 7.08 kB +out/renderer/assets/riscv-CQHqXr1Z-BFlZFId-.js 7.11 kB +out/renderer/assets/soy-DybHqX1A-DOhErZPj.js 7.15 kB +out/renderer/assets/min-light-BF0EjVgr-DvViuJW_.js 7.16 kB +out/renderer/assets/scheme-Dn0tgEWN-BK64z0tZ.js 7.37 kB +out/renderer/assets/prism-bash-B2ETaHUm.js 7.43 kB +out/renderer/assets/typescript-sfPIqb8J-DtIl1kXb.js 7.44 kB +out/renderer/assets/hlsl-CAmjcFpk-B3FZWMVz.js 7.48 kB +out/renderer/assets/mdx-Bdu4uO-C-BrzgNjCw.js 7.58 kB +out/renderer/assets/qss-DkzwWM0J-04JPp7d-.js 7.67 kB +out/renderer/assets/html-DKbmsqz6-Cnkf6ew3.js 7.69 kB +out/renderer/assets/systemd-CS6mVasZ-HbzlQlDs.js 8.07 kB +out/renderer/assets/monokai-CYqILLdj-CEXuJ8HO.js 8.08 kB +out/renderer/assets/twig-r8vgPZrm-D2l24YwI.js 8.18 kB +out/renderer/assets/updates-ui-BoiWSsup.js 8.22 kB +out/renderer/assets/wgsl-D_5Qxf6T-D508aVGZ.js 8.27 kB +out/renderer/assets/sdbl-BXfz6d3_-C4Qk7OPN.js 8.42 kB +out/renderer/assets/regexp-Dv0OUts_-BqK6b4KR.js 8.46 kB +out/renderer/assets/prism-php-dzcOOH50.js 8.49 kB +out/renderer/assets/systemverilog-BreNGkRs-RIXr4hNf.js 8.65 kB +out/renderer/assets/plsql-C-xpsZfV-frBdohcC.js 8.71 kB +out/renderer/assets/vue-html-DvuHo2mm-b7I-opwf.js 8.71 kB +out/renderer/assets/haml-CIYwkycC-3fSMp7m2.js 8.81 kB +out/renderer/assets/scss-CLoW-2dr-BBC_GO_6.js 8.86 kB +out/renderer/assets/dart-CBkkDIWs-ezKLFP5s.js 8.94 kB +out/renderer/assets/horizon-CELVL8Ba-x0NmpRb6.js 8.97 kB +out/renderer/assets/horizon-bright-DBDyMeUQ-Bhh-QDk3.js 8.98 kB +out/renderer/assets/julia-DvNkK6LK-Bi3Rlfah.js 9.04 kB +out/renderer/assets/clojure-886L7m2N-BhGJsUM7.js 9.14 kB +out/renderer/assets/make-CsAfL-jc-DaQVAww0.js 9.18 kB +out/renderer/assets/andromeeda--j5Bq-48-DxyWS_fJ.js 9.21 kB +out/renderer/assets/dark-plus-FAPM6M6c-DKexDF--.js 9.29 kB +out/renderer/assets/sas-BQIEUTPQ-Bwx-ZPYU.js 9.31 kB +out/renderer/assets/slack-dark-nDxLkSCC-C5pzIEPN.js 9.31 kB +out/renderer/assets/perl-Bec3eWyr-CDmSu3_s.js 9.32 kB +out/renderer/assets/plastic-DY_h9Vzh-CZzPFkTC.js 9.49 kB +out/renderer/assets/sass-Ysv8HTNa-CHNQIGaT.js 9.49 kB +out/renderer/assets/st-BrgXZ-Ag-BUs-RRgp.js 9.58 kB +out/renderer/assets/typst-Co5rZla4-COemceoz.js 9.61 kB +out/renderer/assets/slack-ochin-7zJWY-K--C7KFpXik.js 9.63 kB +out/renderer/assets/defaultLocale-QNqK0iCN.js 9.84 kB +out/renderer/assets/handlebars-CIJAyfa9-6toBlNYk.js 9.94 kB +out/renderer/assets/jison-Cbw0l5It-BNek_9Kq.js 9.95 kB +out/renderer/assets/sql-DviNlDJO-CwV6bDIP.js 9.97 kB +out/renderer/assets/kotlin-DIw6ua6F-CdVnL0aF.js 10.01 kB +out/renderer/assets/cmake-CyNDuJo8-2Hk4zQCd.js 10.07 kB +out/renderer/assets/light-plus-DkScKIB5-e8Q5AKjf.js 10.14 kB +out/renderer/assets/hcl-DoJdlYjN-DdpM5wFm.js 10.25 kB +out/renderer/assets/scala-Dj45wWzI-CAMCqIXS.js 10.40 kB +out/renderer/assets/postiats-SaHD9Qcv-FPvOr1pn.js 10.45 kB +out/renderer/assets/beancount-CyZf3Huc-C4n-y8pc.js 10.58 kB +out/renderer/assets/tex-gcnXexI3-BUpeblVA.js 10.60 kB +out/renderer/assets/php-Bn8AF0uj-CBbpr2vs.js 10.62 kB +out/renderer/assets/nextflow-groovy-D4ZyOBoZ-C7jziUwg.js 10.63 kB +out/renderer/assets/dream-maker-5oXa1Z51-CLRrQkBL.js 10.67 kB +out/renderer/assets/ts-tags-xeTAUNHG-CG_gr3En.js 10.70 kB +out/renderer/assets/raku-Bfr41qeN-C7t9XlCj.js 10.72 kB +out/renderer/assets/mysql-CZJtil0v-CP4gK9vT.js 10.73 kB +out/renderer/assets/task-menu-icons-BRdNqJF0.js 10.78 kB +out/renderer/assets/prism-csharp-D9xOwbIN.js 10.91 kB +out/renderer/assets/yaml-CsitfczK-Cu7vbJZs.js 10.97 kB +out/renderer/assets/diagram-UQ7AKVKN-DafFOjxU.js 11.05 kB +out/renderer/assets/elm-Dl1XrIiD-CwXBAFKd.js 11.18 kB +out/renderer/assets/just-He7qscmV-Bkq-0zku.js 11.19 kB +out/renderer/assets/redshift-Djb4PK3z-9Ar4PFWD.js 11.35 kB +out/renderer/assets/github-light-B_J7N1HZ-DWSXFnsf.js 11.38 kB +out/renderer/assets/ruby-CxOCB7_P-BzsjPJ6Z.js 11.48 kB +out/renderer/assets/prolog-DAqMMM08-BFKdnH0S.js 11.56 kB +out/renderer/assets/terraform-BW8B2WXV-zeRjs0zr.js 11.59 kB +out/renderer/assets/github-dark-BgqEY2WG-C9QbkZU3.js 11.60 kB +out/renderer/assets/puppet-CaR8DEdW-Biai9WKX.js 11.65 kB +out/renderer/assets/pkl-DrXR3Dxy-Bno7kqPT.js 11.67 kB +out/renderer/assets/laserwave-Clkc4Pj8-DOjuqF9n.js 11.69 kB +out/renderer/assets/pieDiagram-E7YTZNPT-BmbU_x_c.js 11.95 kB +out/renderer/assets/rst-BJFdabDk-Cv-fSo2B.js 12.04 kB +out/renderer/assets/linear-WS155L0r.js 12.11 kB +out/renderer/assets/wasm-DYwNZ-r4-BrA6oOvM.js 12.21 kB +out/renderer/assets/hjson-CmvCiVhY-BdH9CbZ2.js 12.25 kB +out/renderer/assets/razor-D5kquflS-CWY5AfCS.js 12.39 kB +out/renderer/assets/abap-BJyKdrbp-hWIyERPx.js 12.52 kB +out/renderer/assets/handlebars-B1z64YSt-MC-VEvxc.js 12.52 kB +out/renderer/assets/apache-BUbWdjM2-2Zu7IlVl.js 12.66 kB +out/renderer/assets/vesper-B5lCMuIY-CXGQHRuW.js 12.88 kB +out/renderer/assets/pgsql-BYm17UA1-Cvj1smQI.js 12.93 kB +out/renderer/assets/protobuf-BOGxqb2m-yTWn-oM_.js 12.98 kB +out/renderer/assets/bat-D2y8Uewi-CEJzP2ue.js 13.09 kB +out/renderer/assets/fish-CaZR_ofm-BcO_q5kQ.js 13.24 kB +out/renderer/assets/elixir-Lipcswxh-DnZCznfr.js 13.27 kB +out/renderer/assets/v-wnWoBHkK-CzCOTyIp.js 13.41 kB +out/renderer/assets/AboutHelpSettingsPanel-Ui_VOvh7.js 13.48 kB +out/renderer/assets/vitesse-light-DQXFiRFx-Ct7fN8pJ.js 13.81 kB +out/renderer/assets/aurora-x-9vUYYjHV-CImifmUW.js 13.85 kB +out/renderer/assets/vitesse-black-cwK5rWgD-BGrq81WC.js 13.87 kB +out/renderer/assets/vitesse-dark-CsfgW0oH-Dx8cqxrm.js 13.96 kB +out/renderer/assets/ShortcutsSettingsPanel-KgJeI7QZ.js 14.15 kB +out/renderer/assets/pug-D0UckVoV-BTWU19Nk.js 14.16 kB +out/renderer/assets/synthwave-84-LX1B8mRG-yuUErnSx.js 14.23 kB +out/renderer/assets/github-light-default-BRmIzqWc-B3gMi7zW.js 14.36 kB +out/renderer/assets/clarity-AxkJPY5c-DfVHSVIk.js 14.48 kB +out/renderer/assets/github-light-high-contrast-BUKIZOxn-DL0r2b0z.js 14.49 kB +out/renderer/assets/github-dark-dimmed-DoIdqTey-CDc6YqEM.js 14.64 kB +out/renderer/assets/github-dark-default-CwWjzI40-_0bgyJYv.js 14.64 kB +out/renderer/assets/chunk-PWAF6VOD-CbIIvpNT.js 14.76 kB +out/renderer/assets/github-dark-high-contrast-bFLNMLvK-BUp3HmXY.js 14.80 kB +out/renderer/assets/diagram-S7CK7UJ4-7HVEyMQm.js 14.98 kB +out/renderer/assets/gnuplot-Dw3FRha5-D6o75ylb.js 14.98 kB +out/renderer/assets/rust-C0Ih6nmc-Bm01RMLz.js 15.27 kB +out/renderer/assets/actionscript-3-O8jnLcvn-C7OtofMN.js 15.41 kB +out/renderer/assets/luau-BzxGbjcn-aQpsBeQB.js 15.64 kB +out/renderer/assets/nix-zl191KBb-CxSq6jsB.js 15.85 kB +out/renderer/assets/lua-BwTLfNCK-IuSxl8fO.js 16.04 kB +out/renderer/assets/abap-FvPUHv8B-BVQp86jh.js 16.05 kB +out/renderer/assets/solidity-96fhzG-Q-CZEni-ZB.js 16.28 kB +out/renderer/assets/matlab-8ZQqHKQX-g_ODc8QU.js 16.29 kB +out/renderer/assets/cue-eHSfcyUV-BO0bCEDm.js 16.40 kB +out/renderer/assets/kusto-D8vBBISG-C0y2Wtyy.js 16.45 kB +out/renderer/assets/powerquery-B7BjLMcF-BkVSWPtX.js 16.49 kB +out/renderer/assets/elixir-B1NaQxrO-Ba6X-FuW.js 16.50 kB +out/renderer/assets/react-DrereneL.js 16.50 kB +out/renderer/assets/odin-B-YqhW9I-B-ZI05Ll.js 16.71 kB +out/renderer/assets/solidity-Dpt2BLAA-BD_YSA0r.js 16.98 kB +out/renderer/assets/bird2-BMkLvc4r-CyoW3El7.js 17.17 kB +out/renderer/assets/kanagawa-wave-CM_o6oKV-VzWuxPSA.js 17.32 kB +out/renderer/assets/kanagawa-lotus-Cj3XDpoG-cmeMwVaD.js 17.32 kB +out/renderer/assets/kanagawa-dragon-D_NPnIy_-Cyd8MANv.js 17.33 kB +out/renderer/assets/cynefinDiagram-5FMLGOSQ-D3ezBWsv.js 17.61 kB +out/renderer/assets/stateDiagram-D77RDMKH-B_QV3zjG.js 18.11 kB +out/renderer/assets/chunk-L3NEJ4N5-CBEIP9sT.js 18.16 kB +out/renderer/assets/liquid-D_7zu7XR-BZ3z6-Mj.js 18.46 kB +out/renderer/assets/svelte-DUGqPubT-CAfIEh4G.js 18.60 kB +out/renderer/assets/graphql-ObxcfEHH-9pUo2yjR.js 18.65 kB +out/renderer/assets/jsonMode-DdQpkp6D-C_NUMK6D.js 18.79 kB +out/renderer/assets/material-theme-q28j4V_0-s4HtqlFv.js 18.81 kB +out/renderer/assets/material-theme-ocean-DAvlEnSm-Cyw7qD-l.js 18.83 kB +out/renderer/assets/material-theme-darker-CHEuMVX9-D-hz3EEt.js 18.83 kB +out/renderer/assets/material-theme-lighter-DY4T1_JG-C0HwKluR.js 18.84 kB +out/renderer/assets/material-theme-palenight-CqDFvQ-v-RoTowTME.js 18.84 kB +out/renderer/assets/gherkin-BcjDDslM-BdnbjalD.js 19.20 kB +out/renderer/assets/gdscript-CekKc1U_-DVmAmHvE.js 19.21 kB +out/renderer/assets/groovy-DH3arekX-StnUgJL0.js 19.38 kB +out/renderer/assets/mdc-D-U85KZE-DPbAVRTg.js 19.85 kB +out/renderer/assets/diagram-VSXAHHWV-D4LYumbe.js 20.01 kB +out/renderer/assets/move-CmExnPjU-DPj_eIaE.js 20.22 kB +out/renderer/assets/ayu-dark-BeByMiYw-CS3MEELg.js 20.27 kB +out/renderer/assets/ayu-mirage-C1jJ6Jfs-CnA8kJ7r.js 20.28 kB +out/renderer/assets/ayu-light-DmTZeN54-CDULCKqM.js 20.35 kB +out/renderer/assets/glimmer-js-D9ZnrcNN-BS431Ogg.js 20.44 kB +out/renderer/assets/glimmer-ts-DuhFj6qR-CsFesiaT.js 20.44 kB +out/renderer/assets/viml-DPVJ_KYe-De3CdqgJ.js 20.56 kB +out/renderer/assets/nushell-Cd8Dwa1M-Dhf9XkYz.js 20.62 kB +out/renderer/assets/snazzy-light-B8znOqT6-B1FX3-IF.js 20.97 kB +out/renderer/assets/dagre-GXQ25YYZ-Bnmqites.js 21.01 kB +out/renderer/assets/dracula-DeMffiYO-Bl4juROY.js 21.26 kB +out/renderer/assets/dracula-soft-BnfvpcDv-CYsUeSum.js 21.27 kB +out/renderer/assets/twig-7zjsCqYg-CMujKsZl.js 21.44 kB +out/renderer/assets/freemarker2-enkimFXA-0bWMkoTL.js 21.73 kB +out/renderer/assets/PersonalizationSettingsPanel-B06BA6F_.js 21.87 kB +out/renderer/assets/rose-pine-CEVQiaW0-DaA_4NNK.js 21.94 kB +out/renderer/assets/rose-pine-moon-B9bum7Ik-B6_AhIsD.js 21.96 kB +out/renderer/assets/rose-pine-dawn-2Q5fMoJp-DxMkAwKM.js 21.96 kB +out/renderer/assets/powershell-ycAdP1r9-B7r4Hnhz.js 22.11 kB +out/renderer/assets/common-lisp-DcFHcTKh-CWH5diwh.js 22.81 kB +out/renderer/assets/gruvbox-dark-hard-gOzMLqif-DDlcfu4q.js 22.83 kB +out/renderer/assets/gruvbox-dark-soft-CKvURktN-C6MJezBg.js 22.83 kB +out/renderer/assets/gruvbox-light-hard-CMa_c48J-BUQ67Msp.js 22.84 kB +out/renderer/assets/gruvbox-light-soft-yfAGJYsX-DNM2qqWB.js 22.84 kB +out/renderer/assets/gruvbox-dark-medium-BQSVGwWb-qh8C4DPZ.js 22.84 kB +out/renderer/assets/gruvbox-light-medium-B9S5UNr1-DZxV_o-P.js 22.84 kB +out/renderer/assets/nim-CD961Jl3-CuyTrDpQ.js 22.91 kB +out/renderer/assets/cadence-C2JmJjDr-B-b63Epg.js 23.87 kB +out/renderer/assets/sql-C_oMiPb0-CRnSOxMo.js 23.87 kB +out/renderer/assets/wit-CXpQol8Q-D2NEDOhy.js 24.11 kB +out/renderer/assets/templ-gFcHJbF7-BqIwRUQe.js 24.38 kB +out/renderer/assets/astro-kV3HjkbP-CH6o6jKA.js 24.46 kB +out/renderer/assets/vhdl-Ci4REirV-D-qSzcJD.js 24.46 kB +out/renderer/assets/purescript-DCsDAdnX-DsynrkKe.js 24.97 kB +out/renderer/assets/vue-Cuk7Vimg-CFbFXIr8.js 25.25 kB +out/renderer/assets/surrealql-GFjNBdcm-Vm68TOTE.js 25.34 kB +out/renderer/assets/one-light-CMfGrl_P-B-1jUQM9.js 25.49 kB +out/renderer/assets/night-owl-light-CAEa42tO-TPCLv7z5.js 26.10 kB +out/renderer/assets/system-verilog-D_bVVpLE-C_dvOlr3.js 26.41 kB +out/renderer/assets/angular-html-BrLPO2Fv-DJgz5E5d.js 26.48 kB +out/renderer/assets/typespec-D5WYs8C4-AaOHagqW.js 26.72 kB +out/renderer/assets/nord-DlCAGdjr-Div2jUYm.js 26.91 kB +out/renderer/assets/codeql-DidIlXer-D6RBJOzg.js 27.08 kB +out/renderer/assets/scss-BhK8Ovpn-DfDLQi2C.js 27.52 kB +out/renderer/assets/coffee-DrMWXxy6-BoavQsuh.js 27.68 kB +out/renderer/assets/java-DaupjRFz-zQd9RZAc.js 27.69 kB +out/renderer/assets/razor-B2hRAVmz-Dj7TOgY5.js 27.72 kB +out/renderer/assets/apl-C42PBett-BNW4FTmO.js 27.87 kB +out/renderer/assets/chunk-SVP7TREG-DFW54PR4.js 28.38 kB +out/renderer/assets/fsharp-BHFgIxsY-CvR6tsY8.js 28.48 kB +out/renderer/assets/marko-DXKHPFnH-C0z2-ucz.js 28.74 kB +out/renderer/assets/GeneralSettingsPanel-CA6yOnsk.js 29.10 kB +out/renderer/assets/night-owl-DegwdXaM-6ZGfBB7K.js 29.11 kB +out/renderer/assets/c3-BOs4FlGA-BuhFXrRY.js 29.17 kB +out/renderer/assets/MemorySettingsPanel-cqwWfj-O.js 29.75 kB +out/renderer/assets/crystal-DlzoxO28-BWa_t1Io.js 29.84 kB +out/renderer/assets/applescript-ij24h7OO-_xHQcvud.js 29.87 kB +out/renderer/assets/tsMode-SiG-Sp2b-Dd5SQLv9.js 30.55 kB +out/renderer/assets/pierre-dark-Daa2n9wr-D7rla9B_.js 30.74 kB +out/renderer/assets/pierre-light-D_hZXvUj-DJnIOKLO.js 30.75 kB +out/renderer/assets/pierre-dark-soft-BhNM3pgh-Dp_VeHWv.js 30.76 kB +out/renderer/assets/pierre-light-soft-BVrSv6ZG-C6Na39F-.js 30.76 kB +out/renderer/assets/ishikawaDiagram-5VMMS53U-BYWiiHaK.js 30.78 kB +out/renderer/assets/pierre-dark-tritanopia-CGKuoAZi-C0HpbU3l.js 30.78 kB +out/renderer/assets/pierre-light-tritanopia-BiDEaWaH-wWduIsi3.js 30.78 kB +out/renderer/assets/pierre-dark-protanopia-deuteranopia-Cs1lz9lE-enlgPsHw.js 30.82 kB +out/renderer/assets/pierre-light-protanopia-deuteranopia-BM0RLBB_-Dz5iBHkO.js 30.82 kB +out/renderer/assets/stylus-ZCryC73G-urFW3_yk.js 31.29 kB +out/renderer/assets/diagram-VX7I27RA-CRPiXRnp.js 31.44 kB +out/renderer/assets/scala-BBsC3Oz3-VCjyobQG.js 31.48 kB +out/renderer/assets/mermaid-D6CQfUGU-C6DHNxVz.js 33.37 kB +out/renderer/assets/poimandres-EIt_jotH-DHKFQj5Q.js 33.69 kB +out/renderer/assets/kanban-definition-UXKFOSKX-D8FC-FOL.js 33.91 kB +out/renderer/assets/one-dark-pro-DR9QpZM3-BA4d4lw2.js 33.98 kB +out/renderer/assets/mermaid-parser.core-CstzWfPU.js 34.66 kB +out/renderer/assets/haxe-BWT5wSyZ-BuUsQb-h.js 35.38 kB +out/renderer/assets/nginx-DhtViCEk-C18zABFg.js 35.58 kB +out/renderer/assets/houston-BdS5A_yD-NUige_z1.js 35.61 kB +out/renderer/assets/tokyo-night-BS1_DFu7-CYsPn2J-.js 35.86 kB +out/renderer/assets/erlang-Dd62d0xZ-DHVWwcKa.js 37.71 kB +out/renderer/assets/rough.esm-BX5QqLti.js 38.33 kB +out/renderer/assets/mindmap-definition-YA3MSWOX-BiSXi3_z.js 38.59 kB +out/renderer/assets/cobol-D7RZfOK--CEk2iYO9.js 39.37 kB +out/renderer/assets/journeyDiagram-3NMN7TZE-BPgUjhkg.js 40.13 kB +out/renderer/assets/julia-ZzkUXm0W-BIm_zTAN.js 40.32 kB +out/renderer/assets/lspLanguageFeatures-DK9zifhE-DeEqLmGO.js 40.76 kB +out/renderer/assets/asm-DYVIzeEk-Byg5xzam.js 40.91 kB +out/renderer/assets/haskell-Ba6HbLj8-D0OYaIy8.js 41.78 kB +out/renderer/assets/sankeyDiagram-P5KCCOFB-CLvBxNVK.js 41.83 kB +out/renderer/assets/shellscript-B69gKcss-49Zm6IyC.js 41.97 kB +out/renderer/assets/wardleyDiagram-VM6X3IG4-Cm6u033J.js 42.40 kB +out/renderer/assets/perl-Dv6Cq_FS-DIORmO5G.js 43.55 kB +out/renderer/assets/pierre-dark-vibrant-BMsyYliQ-84Eeh-Uj.js 44.96 kB +out/renderer/assets/pierre-light-vibrant-CWzM4Pa_-QZvTkTJe.js 44.97 kB +out/renderer/assets/ruby-DWcdJvcx-q0K84ieK.js 46.50 kB +out/renderer/assets/go-BOpYl7fu-BiT4MB-v.js 47.02 kB +out/renderer/assets/apex-B48ZHHzN-BBt8sSNQ.js 47.18 kB +out/renderer/assets/catppuccin-mocha-cPsH7Lup-SVLZehhk.js 47.46 kB +out/renderer/assets/catppuccin-latte-DcEecI7n-jo2cPJyK.js 47.46 kB +out/renderer/assets/catppuccin-frappe-BdOW2tdI-BI0Hc9cS.js 47.46 kB +out/renderer/assets/catppuccin-macchiato-Bvz_yAZY-DWewRa4S.js 47.47 kB +out/renderer/assets/ada-BT0j8ine-CLTLBE8n.js 48.28 kB +out/renderer/assets/d-B1HbH29p-Bi6t8Ck6.js 49.10 kB +out/renderer/assets/css-NFwnoVns-BvwuZkcY.js 49.49 kB +out/renderer/assets/imba-C-oGt11l-CqKI0OVw.js 50.13 kB +out/renderer/assets/requirementDiagram-BXWQKSXE-BbeIAWH4.js 51.39 kB +out/renderer/assets/erDiagram-RLTQ6QDP-C4goYMox.js 52.41 kB +out/renderer/assets/browserify-C9uP_nIr.js 52.80 kB +out/renderer/assets/gitGraphDiagram-WWUBYQGX-CqcAyi5D.js 53.82 kB +out/renderer/assets/everforest-dark-gCM8XhEI-DzRrg06U.js 53.94 kB +out/renderer/assets/everforest-light-DhK35DkL-BEDtvHw1.js 53.95 kB +out/renderer/assets/timeline-definition-24CTP7MA-BX0PN7A5.js 54.31 kB +out/renderer/assets/wikitext-CQNrXTmv-DJ18wIlO.js 56.09 kB +out/renderer/assets/stata-BUONSdsT-BPnapjPC.js 57.23 kB +out/renderer/assets/quadrantDiagram-AXDQQJYC-OBfCarUt.js 58.21 kB +out/renderer/assets/html-Dq1ixqYb-okJOhOmu.js 58.25 kB +out/renderer/assets/chunk-OSK3NFVY-a-36JlKV.js 58.56 kB +out/renderer/assets/ocaml-CUdGm1iq-BKX30YEX.js 62.65 kB +out/renderer/assets/model-settings-source-JYisGYmM.js 63.03 kB +out/renderer/assets/ballerina-CpYcPBJI-D9ac3462.js 64.89 kB +out/renderer/assets/markdown-BSrOIEaF-BFwOzGIM.js 65.52 kB +out/renderer/assets/chunk-IMKFNOWR-DqteUQF-.js 67.22 kB +out/renderer/assets/mojo-BNaitZ-7-E_psDM2x.js 70.00 kB +out/renderer/assets/python-Cld0Iwtn-tcCJ5L_g.js 70.17 kB +out/renderer/assets/blockDiagram-I7D4REHJ-BdUm3LD5.js 71.01 kB +out/renderer/assets/bsl-CtP8370o-Pi14XlIU.js 71.07 kB +out/renderer/assets/c-B4augMcT-B5ncIjy5.js 72.57 kB +out/renderer/assets/chunk-75Z2AOVW-DxPqGlPz.js 72.67 kB +out/renderer/assets/latex-g2Pus_l2-CP0G7LTN.js 72.85 kB +out/renderer/assets/vyper-C1nscAY5-BTAKd5p2.js 74.85 kB +out/renderer/assets/ModelSettingsPanel-Bq69xf7M.js 76.64 kB +out/renderer/assets/xychartDiagram-S5SC5T6Z-DCyqfgK-.js 76.79 kB +out/renderer/assets/chunk-GMAD6QVW-B3EDLnje.js 77.76 kB +out/renderer/assets/hack-B1ag3l4X-CEYIfPfg.js 80.58 kB +out/renderer/assets/src-DsgKm1PY.js 83.16 kB +out/renderer/assets/chunk-TICWLB2K-BojKrHZn.js 83.88 kB +out/renderer/assets/fortran-free-form-CsgtTAg3-Dm0PhuY8.js 89.20 kB +out/renderer/assets/vennDiagram-4TSXK5OY-Bk8fkW8I.js 89.26 kB +out/renderer/assets/csharp-YOPVljXo-CBjcozlW.js 89.91 kB +out/renderer/assets/racket--xYIV9-n-NDM2V4Sc.js 92.62 kB +out/renderer/assets/swift-CgzYrGBX-CaMD6i-j.js 94.14 kB +out/renderer/assets/less-BGhX8xko-CbSvNyvq.js 99.00 kB +out/renderer/assets/chunk-SHT3W25Y-D9TLDHJf.js 104.10 kB +out/renderer/assets/objective-c-CmcWiAft-DY5tZuMk.js 105.62 kB +out/renderer/assets/blade-Bq8WPf0E-BehdttJf.js 105.98 kB +out/renderer/assets/c4Diagram-7LVT6UL2-b085GzNv.js 107.96 kB +out/renderer/assets/php-X15vsN4N-ChBJUzAp.js 111.49 kB +out/renderer/assets/dagre-CzI-C3sx.js 122.98 kB +out/renderer/assets/ganttDiagram-EL5Y4UJY-BkulWZYN.js 123.77 kB +out/renderer/assets/graphlib-CoAzpIqe.js 127.44 kB +out/renderer/assets/asciidoc-DJWalVNM-Daa-Gl9r.js 146.30 kB +out/renderer/assets/mdx-C_Ato9sK-CDV72_N0.js 146.49 kB +out/renderer/assets/editor.main-POO0Vbhx-DVBj41ME.js 161.32 kB +out/renderer/assets/cose-bilkent-JH36ORCC-CA60tZpq.js 165.63 kB +out/renderer/assets/objective-cpp-BggTCHV8-BRaaCyEF.js 172.18 kB +out/renderer/assets/javascript-AfZCJ9Uc-C_GZREFb.js 175.31 kB +out/renderer/assets/tsx-BOlKGefW-D7XVyutE.js 176.00 kB +out/renderer/assets/jsx-CPd9p36x-D5Ck2u9I.js 178.26 kB +out/renderer/assets/sequenceDiagram-WJ2MYXX4-Dq5Kw-WE.js 190.05 kB +out/renderer/assets/typescript-4sRsPriL-Ce01imBq.js 191.16 kB +out/renderer/assets/mermaid.core-CrVhoMxX.js 191.57 kB +out/renderer/assets/angular-ts-YduEkmVa-936ueej5.js 193.82 kB +out/renderer/assets/vue-vine-DXhYlaTf-C8MW7tnI.js 201.27 kB +out/renderer/assets/SourceSelect-Dd7kI5iL.js 203.20 kB +out/renderer/assets/chunk-4HAMMTFA-Bfpo5fqQ.js 210.32 kB +out/renderer/assets/swimlanes-42K2YHIH-dzBMea37.js 265.51 kB +out/renderer/assets/wolfram-BVoTES0L-W3A5YqXk.js 267.14 kB +out/renderer/assets/chunk-DU6HZSFF-BASGMKlI.js 271.07 kB +out/renderer/assets/architectureDiagram-5GKGNRK7-C9cYtBCC.js 318.23 kB +out/renderer/assets/katex-Y9ra-ykP.js 497.35 kB +out/renderer/assets/texmath-Bkeg3ZLn.js 594.25 kB +out/renderer/assets/wasm-CVjZL0jK-DcJkdGs4.js 622.62 kB +out/renderer/assets/cpp-9jHBA231-DB3feGjZ.js 626.73 kB +out/renderer/assets/app-4914IQSi.js 675.57 kB +out/renderer/assets/emacs-lisp-DjtOxg4j-CzQ0CKOn.js 780.06 kB +out/renderer/assets/cytoscape.esm-bVGYt-iW.js 869.69 kB +out/renderer/assets/ArtifactPierreDiff-DpqRTCz8.js 1,119.58 kB +out/renderer/assets/chunk-FOHPRMQF-BCllzKJD.js 1,154.18 kB +out/renderer/assets/index-CRCLGS8-.js 3,766.12 kB +out/renderer/assets/editor.api2-dPwET-7w-BYIQ9bT3.js 4,889.23 kB + +✓ built in 2.57s diff --git a/docs/协作/evidence/B04-review-01/check-tokens.txt b/docs/协作/evidence/B04-review-01/check-tokens.txt new file mode 100644 index 0000000..129f9ea --- /dev/null +++ b/docs/协作/evidence/B04-review-01/check-tokens.txt @@ -0,0 +1,29 @@ + +> ycode@0.0.7 check:tokens +> node scripts/check-design-tokens.mjs + +设计 token 漂移检查(静态) + 扫描:src/renderer/src 共 367 个文件(用时 64 ms) + baseline:scripts/design-token-baseline.json(334 个文件) + 门禁分类:adapter 8 | core 6 | local 279(合计 293 个文件) + 合计:裸 hex=611 裸 px=2680 !important=6 --wb-* 定义=525 var(--yc-*) 使用=1651 var(--wb-*) 使用=1209 + 非门禁分类:vendor 2 | recovered 22 | source 47 | tokenSource 3(合计 74 个文件,仅记录不阻塞) + 合计:裸 hex=10642 裸 px=13642 !important=920 --wb-* 定义=17966 var(--yc-*) 使用=77 var(--wb-*) 使用=19638 + 非门禁相对 baseline:文件 +0;裸 hex +78 裸 px +64 !important +0 --wb-* 定义 +0 var(--yc-*) 使用 +22 var(--wb-*) 使用 -120 + +结果:失败,共 6 项: + [新增门禁文件] src/renderer/src/capabilities/recommended-flow.css(local):裸 px=21 + [新增门禁文件] src/renderer/src/capabilities/skill-detail-shell.css(local):裸 px=21 + [回归] src/renderer/src/capabilities/skills-host.css(local):裸 px 25 → 45(+20) + [新增门禁文件] src/renderer/src/workbuddy/composer/capability-picker.css(local):裸 hex=26,裸 px=48 + [回归] src/renderer/src/workbuddy/composer/composer.css(local):裸 hex 23 → 38(+15);裸 px 83 → 139(+56) + [新增门禁文件] src/renderer/src/workbuddy/composer/prompt-queue.css(local):裸 hex=8,裸 px=35 + +提示:确认变更符合预期后运行 `node scripts/check-design-tokens.mjs --update-baseline` 刷新 baseline; + 否则请改用 --yc-* token、复用现有值,或去掉重复的 --wb-* 定义。 +提示(不失败,仅记录):3 个门禁文件 token 使用数上升: + src/renderer/src/capabilities/skills-host.css(local):var(--wb-*) 使用 12 → 19(+7) + src/renderer/src/workbuddy/composer/composer.css(local):var(--yc-*) 使用 35 → 48(+13);var(--wb-*) 使用 0 → 1(+1) + src/renderer/src/workbuddy/conversation/conversation.css(local):var(--yc-*) 使用 0 → 4(+4) +提示(不失败):baseline 中 8 个文件已不存在:src/renderer/src/components/ReportedRunUsage.tsx;src/renderer/src/workbuddy/subagents/SourceMemberIcon.tsx;src/renderer/src/workbuddy/subagents/SubagentCollaboration.tsx;src/renderer/src/workbuddy/subagents/SubagentDetailPanel.tsx;src/renderer/src/workbuddy/subagents/adapters.css;src/renderer/src/workbuddy/subagents/member-view.ts;src/renderer/src/workbuddy/subagents/source.css;src/renderer/src/workbuddy/subagents/theme.css +提示:新增门禁文件 36 个且无受控计数(允许):src/renderer/src/capabilities/CapabilityMaintenance.tsx(local);src/renderer/src/capabilities/RecommendedSkills.tsx(local);src/renderer/src/capabilities/SkillAvatar.tsx(local);src/renderer/src/capabilities/SkillDetailShell.tsx(local);src/renderer/src/capabilities/SkillModalPortal.tsx(local);src/renderer/src/capabilities/skill-modal-focus.ts(local);src/renderer/src/components/SessionLoading.tsx(local);src/renderer/src/components/TaskPopconfirm.tsx(local);src/renderer/src/components/session-loading.css(local);src/renderer/src/components/task-popconfirm.css(local);src/renderer/src/components/updates/UpdateSidebarCard.tsx(local);src/renderer/src/components/updates/update-ui-model.ts(local);src/renderer/src/components/updates/update-ui-store.ts(local);src/renderer/src/components/updates/updates-ui.css(local);src/renderer/src/ui/Button.tsx(local);src/renderer/src/ui/IconButton.tsx(local);src/renderer/src/ui/Input.tsx(local);src/renderer/src/ui/Popover.tsx(local);src/renderer/src/ui/Select.tsx(local);src/renderer/src/ui/Switch.tsx(local);…(还有 16 项,详见 --json) diff --git a/docs/协作/evidence/B04-review-01/dom-lifecycle.txt b/docs/协作/evidence/B04-review-01/dom-lifecycle.txt new file mode 100644 index 0000000..aab4712 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/dom-lifecycle.txt @@ -0,0 +1,5 @@ + +> ycode@0.0.7 test:image-lifecycle +> node scripts/test-image-lifecycle.mjs + +{"result":"PASS","checks":159,"samples":85,"output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-aFmn4p","limits":"DOM lifecycle only; jsdom heights are not layout acceptance. Synthetic data only."} diff --git a/docs/协作/evidence/B04-review-01/dom-report.json b/docs/协作/evidence/B04-review-01/dom-report.json new file mode 100644 index 0000000..0c657e2 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/dom-report.json @@ -0,0 +1,762 @@ +{ + "checks": [ + "cold: layout-before-passive-effects: no URI text", + "cold: sync-commit: no URI text", + "safe first commit image", + "layout probe sees image before passive effects", + "stable: no URI text", + "native image error: no image", + "native image error: concise", + "native image error: no URI text", + "error recovery new src: layout-before-passive-effects: no URI text", + "error recovery new src: sync-commit: no URI text", + "new safe src resets prior error synchronously", + "invalid/no-host: layout-before-passive-effects: no URI text", + "invalid/no-host: sync-commit: no URI text", + "invalid/no-host initial: no image", + "invalid/no-host initial: concise", + "invalid/no-host initial: no URI text", + "invalid/no-host settled: no image", + "invalid/no-host settled: concise", + "invalid/no-host settled: no URI text", + "invalid/no-host: layout-before-passive-effects: no URI text", + "invalid/no-host: sync-commit: no URI text", + "invalid/no-host initial: no image", + "invalid/no-host initial: concise", + "invalid/no-host initial: no URI text", + "invalid/no-host settled: no image", + "invalid/no-host settled: concise", + "invalid/no-host settled: no URI text", + "invalid/no-host: layout-before-passive-effects: no URI text", + "invalid/no-host: sync-commit: no URI text", + "invalid/no-host initial: no image", + "invalid/no-host initial: concise", + "invalid/no-host initial: no URI text", + "invalid/no-host settled: no image", + "invalid/no-host settled: concise", + "invalid/no-host settled: no URI text", + "same source first resolver: layout-before-passive-effects: no URI text", + "same source first resolver: sync-commit: no URI text", + "same source second resolver: layout-before-passive-effects: no URI text", + "same source second resolver: sync-commit: no URI text", + "old resolver identity ignored: no image", + "old resolver identity ignored: concise", + "old resolver identity ignored: no URI text", + "new resolver identity wins", + "local direct: layout-before-passive-effects: no URI text", + "local direct: sync-commit: no URI text", + "existing unpreferred local semantics", + "prefer host enabled: layout-before-passive-effects: no URI text", + "prefer host enabled: sync-commit: no URI text", + "host preference removes direct file before effects: no image", + "host preference removes direct file before effects: concise", + "host preference removes direct file before effects: no URI text", + "preferred host result", + "same direct first adapter: layout-before-passive-effects: no URI text", + "same direct first adapter: sync-commit: no URI text", + "direct failed before new adapter: no image", + "direct failed before new adapter: concise", + "direct failed before new adapter: no URI text", + "same direct new adapter: layout-before-passive-effects: no URI text", + "same direct new adapter: sync-commit: no URI text", + "immediate error after adapter reset retained: no image", + "immediate error after adapter reset retained: concise", + "immediate error after adapter reset retained: no URI text", + "A to B: layout-before-passive-effects: no URI text", + "A to B: sync-commit: no URI text", + "B to A retry: layout-before-passive-effects: no URI text", + "B to A retry: sync-commit: no URI text", + "A to B to A resets old failure", + "pending old: layout-before-passive-effects: no URI text", + "pending old: sync-commit: no URI text", + "pending new: layout-before-passive-effects: no URI text", + "pending new: sync-commit: no URI text", + "no old during new: no image", + "no old during new: concise", + "no old during new: no URI text", + "stale success ignored: no image", + "stale success ignored: concise", + "stale success ignored: no URI text", + "stale success has no onResolve", + "latest result wins", + "latest onResolve only", + "pending failure clears previous: layout-before-passive-effects: no URI text", + "pending failure clears previous: sync-commit: no URI text", + "old resolved image removed synchronously: no image", + "old resolved image removed synchronously: concise", + "old resolved image removed synchronously: no URI text", + "safe switch while rejection pending: layout-before-passive-effects: no URI text", + "safe switch while rejection pending: sync-commit: no URI text", + "stale rejection cannot fail new safe image", + "active rejection: layout-before-passive-effects: no URI text", + "active rejection: sync-commit: no URI text", + "active rejection: no image", + "active rejection: concise", + "active rejection: no URI text", + "failure not busy", + "unsafe resolver result: layout-before-passive-effects: no URI text", + "unsafe resolver result: sync-commit: no URI text", + "unsafe resolver rejected: no image", + "unsafe resolver rejected: concise", + "unsafe resolver rejected: no URI text", + "unmount pending: layout-before-passive-effects: no URI text", + "unmount pending: sync-commit: no URI text", + "unmounted: layout-before-passive-effects: no URI text", + "unmounted: sync-commit: no URI text", + "unmounted completion ignored", + "preview: layout-before-passive-effects: no URI text", + "preview: sync-commit: no URI text", + "safe image preview click retained", + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: layout-before-passive-effects: no URI text", + "synthetic-B: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-0: no URI text", + "synthetic-B: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-1: no URI text", + "synthetic-B: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-2: no URI text", + "synthetic-B: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "no renderer errors" + ], + "samples": [ + { + "label": "cold: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "cold: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "stable", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "native image error", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "error recovery new src: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "error recovery new src: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host initial", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host settled", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host initial", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host settled", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host initial", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "invalid/no-host settled", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source first resolver: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source first resolver: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source second resolver: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same source second resolver: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "old resolver identity ignored", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "local direct: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "local direct: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "prefer host enabled: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "prefer host enabled: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "host preference removes direct file before effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct first adapter: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct first adapter: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "direct failed before new adapter", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct new adapter: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "same direct new adapter: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "immediate error after adapter reset retained", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "A to B: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "A to B: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "B to A retry: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "B to A retry: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending old: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending old: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending new: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending new: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "no old during new", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "stale success ignored", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending failure clears previous: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "pending failure clears previous: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "old resolved image removed synchronously", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "safe switch while rejection pending: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "safe switch while rejection pending: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "active rejection: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "active rejection: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "active rejection", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unsafe resolver result: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unsafe resolver result: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unsafe resolver rejected", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmount pending: layout-before-passive-effects", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmount pending: sync-commit", + "textLength": 6, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmounted: layout-before-passive-effects", + "textLength": 5, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "unmounted: sync-commit", + "textLength": 5, + "imageCount": 0, + "height": 0, + "imageHeight": 0 + }, + { + "label": "preview: layout-before-passive-effects", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "preview: sync-commit", + "textLength": 0, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-B: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 0, + "imageHeight": 0 + } + ], + "errors": [], + "limits": "DOM lifecycle only; jsdom heights are not layout acceptance. Synthetic data only." +} \ No newline at end of file diff --git a/docs/协作/evidence/B04-review-01/media.txt b/docs/协作/evidence/B04-review-01/media.txt new file mode 100644 index 0000000..0628e21 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/media.txt @@ -0,0 +1,7 @@ + +> ycode@0.0.7 test:media +> esbuild scripts/mermaid-regression.ts --bundle --platform=node --format=esm --packages=external --jsx=automatic --loader:.css=empty --outfile=.tmp/media-tests/mermaid-regression.mjs --log-level=warning && node .tmp/media-tests/mermaid-regression.mjs && esbuild scripts/image-renderer-regression.tsx scripts/path-renderer-regression.tsx --bundle --platform=node --format=cjs --jsx=automatic --loader:.css=empty --out-extension:.js=.cjs --outdir=.tmp/media-tests --log-level=warning && node .tmp/media-tests/image-renderer-regression.cjs && node .tmp/media-tests/path-renderer-regression.cjs + +Mermaid cache, sanitizer, queue, and abort regression checks passed +image-renderer-regression: all checks passed +Path renderer regression checks passed (23). diff --git a/docs/协作/evidence/B04-review-01/native-diagnostic.cjs b/docs/协作/evidence/B04-review-01/native-diagnostic.cjs new file mode 100644 index 0000000..fa77c4e --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-diagnostic.cjs @@ -0,0 +1,32 @@ +/** Optional, isolated own-component Electron frame probe; never launches the user's app. + * Build first: node scripts/test-image-lifecycle.mjs --build-only + * Then: electron scripts/verify-b04-image-native.cjs + * Requires a permitted graphical environment. Never pass --no-sandbox. */ +const {app,BrowserWindow,session}=require('electron') +const fs=require('node:fs'),path=require('node:path'),os=require('node:os') +const fixture=path.resolve(process.argv[2]||'') +if(!process.argv[2]||!fs.existsSync(path.join(fixture,'index.html')))throw Error('Supply build-only fixture directory') +const profile=fs.mkdtempSync(path.join(os.tmpdir(),'ycode-b04-native-')) +app.setPath('userData',profile) +let timer,win,finished=false +function finish(error,report){ + if(finished)return;finished=true;clearTimeout(timer) + const result={result:error?'FAIL':'PASS',error:error?String(error):undefined,report,limits:'Synthetic own-component Electron fixture, not the installed application or original reference UI.'} + fs.writeFileSync(path.join(fixture,'native-report.json'),JSON.stringify(result,null,2)) + console.log(JSON.stringify({result:result.result,error:result.error,output:path.join(fixture,'native-report.json')})) + if(win&&!win.isDestroyed())win.destroy() + app.exit(error?1:0) +} +app.whenReady().then(async()=>{ + session.defaultSession.webRequest.onBeforeRequest((details,callback)=>callback({cancel:!['file:','data:','blob:','devtools:'].some(p=>details.url.startsWith(p))})) + win=new BrowserWindow({width:1000,height:800,show:true,webPreferences:{nodeIntegration:false,contextIsolation:true,sandbox:true,backgroundThrottling:false}}) + win.webContents.on('console-message',(_e,l,m)=>console.log('FRAME_CONSOLE',l,m));win.webContents.on('did-fail-load',(...args)=>console.log('FRAME_LOAD_FAIL',args.slice(1))); + win.webContents.on('render-process-gone',(_,details)=>finish(Error('Renderer gone: '+details.reason))) + timer=setTimeout(()=>finish(Error('Bounded native probe timed out after 20s')),20000) + await win.loadFile(path.join(fixture,'index.html')) + console.log('FRAME_STATE',await win.webContents.executeJavaScript('({fixture:typeof window.__b04,error:window.__b04Error,report:!!window.__b04Report,text:document.body.textContent.slice(-500)})')); + const report=await win.webContents.executeJavaScript(`new Promise((resolve,reject)=>{const check=()=>{if(window.__b04Error)return reject(Error(window.__b04Error));if(window.__b04Report)return resolve(window.__b04Report);setTimeout(check,25)};check()})`) + if(!report.samples.some(s=>s.height>0))throw Error('No nonzero native layout measured') + if(report.samples.some(s=>s.textLength>1000||s.height>2000))throw Error('Unexpected address-sized text/height spike') + finish(null,report) +}).catch(error=>finish(error)) diff --git a/docs/协作/evidence/B04-review-01/native-diagnostic.txt b/docs/协作/evidence/B04-review-01/native-diagnostic.txt new file mode 100644 index 0000000..942e3d4 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-diagnostic.txt @@ -0,0 +1,13 @@ + +(electron) 'console-message' arguments are deprecated and will be removed. Please use Event object instead. +FRAME_CONSOLE 1 %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools +You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq font-weight:bold +FRAME_STATE { + fixture: 'object', + error: undefined, + report: false, + text: 'YCode已完成 2s深度思考Synthetic detail\n' + + '\n' + + "复制Running synthetic own-component frame probe…window.__b04.probe().then(r=>{window.__b04Report=r;document.getElementById('report').textContent=JSON.stringify(r,null,2)}).catch(e=>{window.__b04Error=String(e);document.getElementById('report').textContent=String(e)})" +} +{"result":"FAIL","error":"Error: Bounded native probe timed out after 20s","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-pmmWZx\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/native-negative.txt b/docs/协作/evidence/B04-review-01/native-negative.txt new file mode 100644 index 0000000..53c39af --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-negative.txt @@ -0,0 +1,17 @@ + +(electron) 'console-message' arguments are deprecated and will be removed. Please use Event object instead. +FRAME_CONSOLE 1 %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools +You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq font-weight:bold +FRAME_CONSOLE 3 Uncaught Error: synthetic-A: layout-before-passive-effects: no URI text +FRAME_CONSOLE 2 %s + +%s + An error occurred in the component. Consider adding an error boundary to your tree to customize error handling behavior. +Visit https://react.dev/link/error-boundaries to learn more about error boundaries. +FRAME_STATE { + fixture: 'object', + error: 'Error: actual CompletedFold header exists', + report: false, + text: "Error: actual CompletedFold header existswindow.__b04.probe().then(r=>{window.__b04Report=r;document.getElementById('report').textContent=JSON.stringify(r,null,2)}).catch(e=>{window.__b04Error=String(e);document.getElementById('report').textContent=String(e)})" +} +{"result":"FAIL","error":"Error: Error: actual CompletedFold header exists","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-baseline-JAjxNk\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/native-original.txt b/docs/协作/evidence/B04-review-01/native-original.txt new file mode 100644 index 0000000..8985028 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-original.txt @@ -0,0 +1,2 @@ + +{"result":"FAIL","error":"Error: Bounded native probe timed out after 20s","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-pmmWZx\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/native-report.json b/docs/协作/evidence/B04-review-01/native-report.json new file mode 100644 index 0000000..e3eda85 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-report.json @@ -0,0 +1,883 @@ +{ + "result": "PASS", + "report": { + "checks": [ + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-0: before-rAF: no URI text", + "synthetic-A: toggle-0: frame-0: no URI text", + "synthetic-A: toggle-0: frame-1: no URI text", + "synthetic-A: toggle-0: frame-2: no URI text", + "synthetic-A: toggle-0: frame-3: no URI text", + "synthetic-A: toggle-0: frame-4: no URI text", + "synthetic-A: toggle-0: frame-5: no URI text", + "synthetic-A: toggle-0: frame-6: no URI text", + "synthetic-A: toggle-0: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-1: before-rAF: no URI text", + "synthetic-A: toggle-1: frame-0: no URI text", + "synthetic-A: toggle-1: frame-1: no URI text", + "synthetic-A: toggle-1: frame-2: no URI text", + "synthetic-A: toggle-1: frame-3: no URI text", + "synthetic-A: toggle-1: frame-4: no URI text", + "synthetic-A: toggle-1: frame-5: no URI text", + "synthetic-A: toggle-1: frame-6: no URI text", + "synthetic-A: toggle-1: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-2: before-rAF: no URI text", + "synthetic-A: toggle-2: frame-0: no URI text", + "synthetic-A: toggle-2: frame-1: no URI text", + "synthetic-A: toggle-2: frame-2: no URI text", + "synthetic-A: toggle-2: frame-3: no URI text", + "synthetic-A: toggle-2: frame-4: no URI text", + "synthetic-A: toggle-2: frame-5: no URI text", + "synthetic-A: toggle-2: frame-6: no URI text", + "synthetic-A: toggle-2: frame-7: no URI text", + "synthetic-B: layout-before-passive-effects: no URI text", + "synthetic-B: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-0: no URI text", + "synthetic-B: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: toggle-0: before-rAF: no URI text", + "synthetic-B: toggle-0: frame-0: no URI text", + "synthetic-B: toggle-0: frame-1: no URI text", + "synthetic-B: toggle-0: frame-2: no URI text", + "synthetic-B: toggle-0: frame-3: no URI text", + "synthetic-B: toggle-0: frame-4: no URI text", + "synthetic-B: toggle-0: frame-5: no URI text", + "synthetic-B: toggle-0: frame-6: no URI text", + "synthetic-B: toggle-0: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-1: no URI text", + "synthetic-B: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: toggle-1: before-rAF: no URI text", + "synthetic-B: toggle-1: frame-0: no URI text", + "synthetic-B: toggle-1: frame-1: no URI text", + "synthetic-B: toggle-1: frame-2: no URI text", + "synthetic-B: toggle-1: frame-3: no URI text", + "synthetic-B: toggle-1: frame-4: no URI text", + "synthetic-B: toggle-1: frame-5: no URI text", + "synthetic-B: toggle-1: frame-6: no URI text", + "synthetic-B: toggle-1: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-B: before-toggle-2: no URI text", + "synthetic-B: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-B: toggle-2: before-rAF: no URI text", + "synthetic-B: toggle-2: frame-0: no URI text", + "synthetic-B: toggle-2: frame-1: no URI text", + "synthetic-B: toggle-2: frame-2: no URI text", + "synthetic-B: toggle-2: frame-3: no URI text", + "synthetic-B: toggle-2: frame-4: no URI text", + "synthetic-B: toggle-2: frame-5: no URI text", + "synthetic-B: toggle-2: frame-6: no URI text", + "synthetic-B: toggle-2: frame-7: no URI text", + "synthetic-A: layout-before-passive-effects: no URI text", + "synthetic-A: sync-commit: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-0: no URI text", + "synthetic-A: toggle-0: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-0: before-rAF: no URI text", + "synthetic-A: toggle-0: frame-0: no URI text", + "synthetic-A: toggle-0: frame-1: no URI text", + "synthetic-A: toggle-0: frame-2: no URI text", + "synthetic-A: toggle-0: frame-3: no URI text", + "synthetic-A: toggle-0: frame-4: no URI text", + "synthetic-A: toggle-0: frame-5: no URI text", + "synthetic-A: toggle-0: frame-6: no URI text", + "synthetic-A: toggle-0: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-1: no URI text", + "synthetic-A: toggle-1: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-1: before-rAF: no URI text", + "synthetic-A: toggle-1: frame-0: no URI text", + "synthetic-A: toggle-1: frame-1: no URI text", + "synthetic-A: toggle-1: frame-2: no URI text", + "synthetic-A: toggle-1: frame-3: no URI text", + "synthetic-A: toggle-1: frame-4: no URI text", + "synthetic-A: toggle-1: frame-5: no URI text", + "synthetic-A: toggle-1: frame-6: no URI text", + "synthetic-A: toggle-1: frame-7: no URI text", + "actual CompletedFold header exists", + "synthetic-A: before-toggle-2: no URI text", + "synthetic-A: toggle-2: no URI text", + "actual MessageBubble preserves image", + "actual CompletedFold remounts image across toggle", + "synthetic-A: toggle-2: before-rAF: no URI text", + "synthetic-A: toggle-2: frame-0: no URI text", + "synthetic-A: toggle-2: frame-1: no URI text", + "synthetic-A: toggle-2: frame-2: no URI text", + "synthetic-A: toggle-2: frame-3: no URI text", + "synthetic-A: toggle-2: frame-4: no URI text", + "synthetic-A: toggle-2: frame-5: no URI text", + "synthetic-A: toggle-2: frame-6: no URI text", + "synthetic-A: toggle-2: frame-7: no URI text", + "synthetic PNG decoded in real browser", + "native frames include nonzero image geometry", + "native region has no thousands-pixel address spike", + "no renderer errors" + ], + "samples": [ + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 0 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 0 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-0: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-1: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-B: toggle-2: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: layout-before-passive-effects", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: sync-commit", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-0: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-1: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: before-toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 48, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: before-rAF", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-0", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-1", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-2", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-3", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-4", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-5", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-6", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + }, + { + "label": "synthetic-A: toggle-2: frame-7", + "textLength": 35, + "imageCount": 1, + "height": 232, + "imageHeight": 180 + } + ], + "errors": [], + "limits": "Real geometry only if executed in a real browser with fixture CSS. No user data." + }, + "limits": "Synthetic own-component Electron fixture, not the installed application or original reference UI." +} \ No newline at end of file diff --git a/docs/协作/evidence/B04-review-01/native-unthrottled.txt b/docs/协作/evidence/B04-review-01/native-unthrottled.txt new file mode 100644 index 0000000..319c8e7 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/native-unthrottled.txt @@ -0,0 +1,13 @@ + +(electron) 'console-message' arguments are deprecated and will be removed. Please use Event object instead. +FRAME_CONSOLE 1 %cDownload the React DevTools for a better development experience: https://react.dev/link/react-devtools +You might need to use a local HTTP server (instead of file://): https://react.dev/link/react-devtools-faq font-weight:bold +FRAME_STATE { + fixture: 'object', + error: undefined, + report: false, + text: 'YCode已完成 2s深度思考Synthetic detail\n' + + '\n' + + "复制Running synthetic own-component frame probe…window.__b04.probe().then(r=>{window.__b04Report=r;document.getElementById('report').textContent=JSON.stringify(r,null,2)}).catch(e=>{window.__b04Error=String(e);document.getElementById('report').textContent=String(e)})" +} +{"result":"PASS","output":"C:\\Users\\Administrator\\.codex\\worktrees\\b04-accept-01\\YCode\\.tmp\\b04-image-pmmWZx\\native-report.json"} diff --git a/docs/协作/evidence/B04-review-01/regression-results.json b/docs/协作/evidence/B04-review-01/regression-results.json new file mode 100644 index 0000000..05733b4 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/regression-results.json @@ -0,0 +1,14 @@ +[ + { + "name": "test", + "exitCode": 0 + }, + { + "name": "test:alignment:dom", + "exitCode": 0 + }, + { + "name": "check:tokens", + "exitCode": 1 + } +] diff --git a/docs/协作/evidence/B04-review-01/results.json b/docs/协作/evidence/B04-review-01/results.json new file mode 100644 index 0000000..a5cb3c4 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/results.json @@ -0,0 +1,14 @@ +[ + { + "name": "test:image-lifecycle", + "exitCode": 0 + }, + { + "name": "test:media", + "exitCode": 0 + }, + { + "name": "build-fixture", + "exitCode": 0 + } +] diff --git a/docs/协作/evidence/B04-review-01/test-alignment-dom.txt b/docs/协作/evidence/B04-review-01/test-alignment-dom.txt new file mode 100644 index 0000000..3a6362c --- /dev/null +++ b/docs/协作/evidence/B04-review-01/test-alignment-dom.txt @@ -0,0 +1,48 @@ + +> ycode@0.0.7 test:alignment:dom +> node scripts/run-alignment-regression.mjs --require-dom + +PASS model alignment: fresh/legacy migration, new/edit/default/delete/reload, valid selection (offline host fixtures) +PASS model settings: deferred owner switch, rename mapping, addition selection, empty deletion, immutable history +PASS session factory: first-send preference, mode preservation, invalid permission rejection (isolated ports) +{"historyMessages":10000,"bytes":747781,"parseMs":3.2580999999999847,"storeHydrationMs":0.12890000000001578,"note":"Node parsing/store benchmark only, not browser rendering or Windows IPC performance"} +session-composer-alignment: loading/cache/retry/races/model/permissions/modes/SSR passed +alignment-conversation: local groups, original expanded order, question projection and truthful status passed +A01 native MessageBubble identity aliases, immutable inputs and ordinary raw output passed +A01 imported native card, linked dedup and unknown-position compatibility passed +question-answer-shell: structural and recovered CSS contracts passed +question-answer-shell: DOM hierarchy, controls linkage, click, Enter, Space and inert contracts passed +Runtime progress, session-grant scope and approval lifecycle regressions passed +Permission intercept static rendering passed; interactive keyboard/focus remains UI acceptance +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"full-access","agentMode":"ask","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"mode-or-inactive-deny"} +[claude-permission] {"permissionMode":"full-access","agentMode":"plan","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"mode-or-inactive-deny"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":true,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"subcommandResults","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"safetyCheck","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":true,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"full-access","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"full-access-preauthorized"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":true,"branch":"rule-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"error-deny"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"e3b98a4da31a127d","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"permission-approval"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"85aafbf52a5144b5","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"business-question"} +[claude-permission] {"permissionMode":"default-sandbox","agentMode":"craft","sdkMode":"unknown","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"callback","toolCall":"85aafbf52a5144b5","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":false,"branch":"business-question"} +Claude host approval policy unit checks passed (no SDK process/application/matching verification) +[claude-permission] {"permissionMode":"full-access","agentMode":"plan","sdkMode":"plan","sdkModeSource":"host-query-or-acknowledged-control","policyTransition":false,"source":"hook","toolCall":"unknown","decisionCategory":"unknown","decisionCode":"unknown","decisionCodePresent":false,"matchedAskRule":"unknown","branch":"mode-or-inactive-deny"} +Mock SDK replay lifecycle passed: fail closed, retry, session isolation, independent mode guard +B03 offline host policy: 276 checks passed; no real SDK/CLI/model execution. +task popconfirm DOM regression: 34 checks passed (jsdom, not pixel validation) +question-interaction: 24 DOM behavioral checks passed +question-identity: 30 A01 DOM checks passed (not Electron/pixel/SDK acceptance) +completed-fold-nested: real question/tool/thinking/local-summary remount, event, keyboard and identity contracts passed +completed-fold-native-identity: real reducer done correction, native IDs, insertion/reorder, repeated outer toggles, message isolation and legacy fallback passed +Permission intercept DOM: 43 checks passed (not pixel/SDK verification) +{"checks":37,"passed":true,"scope":"Isolated React DOM and CSS contracts; no native keyboard/layout/pixel acceptance"} +{"result":"PASS","phase":"alignment-offline","suites":11} +{"result":"PASS","phase":"alignment-dom","suites":7} diff --git a/docs/协作/evidence/B04-review-01/test.txt b/docs/协作/evidence/B04-review-01/test.txt new file mode 100644 index 0000000..ef080f1 --- /dev/null +++ b/docs/协作/evidence/B04-review-01/test.txt @@ -0,0 +1,37 @@ + +> ycode@0.0.7 test +> npm run test:core + + +> ycode@0.0.7 test:core +> npm run typecheck && npm run test:chat && npm run test:sessions && npm run test:persistence && npm run test:conversation + + +> ycode@0.0.7 typecheck +> tsc --noEmit -p tsconfig.node.json && tsc --noEmit -p tsconfig.web.json + + +> ycode@0.0.7 test:chat +> esbuild scripts/message-order-regression.ts scripts/chat-store-regression.ts scripts/chat-stream-committer-regression.ts --bundle --platform=node --format=esm --out-extension:.js=.mjs --outdir=.tmp/chat-tests --log-level=warning && node .tmp/chat-tests/message-order-regression.mjs && node .tmp/chat-tests/chat-store-regression.mjs && node .tmp/chat-tests/chat-stream-committer-regression.mjs + +message-order-regression: all checks passed +chat-store-regression: all checks passed +chat-stream-committer-regression: all checks passed + +> ycode@0.0.7 test:sessions +> esbuild scripts/session-store-regression.ts --bundle --platform=node --format=esm --external:esbuild --outfile=.tmp/session-store-regression.mjs --log-level=warning && node .tmp/session-store-regression.mjs + +session-store-regression: all checks passed + +> ycode@0.0.7 test:persistence +> esbuild scripts/chat-persistence-regression.ts --bundle --platform=node --format=esm --external:esbuild --outfile=.tmp/chat-persistence-regression.mjs --log-level=warning && node .tmp/chat-persistence-regression.mjs + +chat-persistence-regression: all checks passed + +> ycode@0.0.7 test:conversation +> esbuild scripts/conversation-renderer-regression.tsx scripts/composer-regression.tsx scripts/completed-fold-regression.tsx scripts/streaming-footer-regression.tsx --bundle --platform=node --format=cjs --jsx=automatic --loader:.css=text --out-extension:.js=.cjs --outdir=.tmp/conversation-tests --log-level=error && node .tmp/conversation-tests/conversation-renderer-regression.cjs && node .tmp/conversation-tests/composer-regression.cjs && node .tmp/conversation-tests/streaming-footer-regression.cjs && node .tmp/conversation-tests/completed-fold-regression.cjs + +Conversation specialized renderer SSR regression checks passed +Composer/message action regression cases passed +streaming-footer-regression: persistent stream status, delayed/paused rotation, brand/locale mapping, source CSS, and completed model footer passed +Completed-fold model and SSR regression checks passed