docs(acceptance): verify B04 native frames and record probe timeout

This commit is contained in:
xiaohan.yuan committed 2026-10-21 14:36:26 +08:00
1 parent 352d62d49a
commit 9724fc70bc
23 files changed
+4439

No files matched your search

+2
View File
@@ -107,6 +107,8 @@ PowerShell 夹具使用独立目录,实际新增目录和文件、删除文件
本轮没有确认新的阻塞性产品缺陷;尚缺证据的项目保持“未验证”,不以测试绿灯替代完整验收。建议开发端把 Windows 回环、真实会话授权与完整应用重启探针整理为可维护的正式回归,并继续完成交付记录中的剩余范围。验收探针随报告提供,验收端未将其写入正式 scripts 或产品源码。
并行复审按用户指定的 `minimax-m3.1-flash-free / max` 启动,但后端子任务以 `max_output_tokens` 错误结束,另外两个没有交付完整报告并已停止。本轮没有把这些未完成的子代理复审算作通过证据;上述运行、截图检查和最终判定均由主对话独立完成。
## 7. 证据复跑
在受测 SHA 的隔离检出独立安装并构建。证据中的三个脚本是验收临时探针,读取的都是自身生成的夹具,不依赖本机真实用户数据:
+99
View File
@@ -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 <build-only目录>
```
实际退出 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 <fixture目录>
node .tmp/b04-acceptance/app-frames.cjs
```
原生 wrapper 内部 20 秒截止;完整应用探针内部 60 秒、启动器 70 秒上限,只结束自己创建的进程。本报告推送并核对 SHA 后,将协作窗口交回开发端,后续处理 T03 和未覆盖项;不撤销 B01/B02/B03 的历史边界。
Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

@@ -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)})
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

File diff suppressed because it is too large. Load diff
@@ -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);
@@ -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
@@ -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)
@@ -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."}
@@ -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."
}
@@ -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).
@@ -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 <output-directory>
* 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))
@@ -0,0 +1,13 @@
(electron) 'console-message' arguments are deprecated and will be removed. Please use Event<WebContentsConsoleMessageEventParams> 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"}
@@ -0,0 +1,17 @@
(electron) 'console-message' arguments are deprecated and will be removed. Please use Event<WebContentsConsoleMessageEventParams> 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 <CommitProbe> 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"}
@@ -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"}
@@ -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."
}
@@ -0,0 +1,13 @@
(electron) 'console-message' arguments are deprecated and will be removed. Please use Event<WebContentsConsoleMessageEventParams> 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"}
@@ -0,0 +1,14 @@
[
{
"name": "test",
"exitCode": 0
},
{
"name": "test:alignment:dom",
"exitCode": 0
},
{
"name": "check:tokens",
"exitCode": 1
}
]
@@ -0,0 +1,14 @@
[
{
"name": "test:image-lifecycle",
"exitCode": 0
},
{
"name": "test:media",
"exitCode": 0
},
{
"name": "build-fixture",
"exitCode": 0
}
]
@@ -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}
@@ -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