docs(B01): return YC-001 acceptance findings with Windows evidence
This commit is contained in:
1 parent
b5eb6d8875
commit
eaf0ed293a
15 files changed
+1813
No files matched your search
@@ -0,0 +1,108 @@
|
||||
# B01 验收 01:YC-001 第一阶段
|
||||
|
||||
日期:2026-10-21(Asia/Shanghai)。验收端独立复测;**结论:YC-001 待修复,B01 未关闭**。本轮没有修改业务源码、测试脚本、依赖或构建配置;仅提交验收文档与证据。
|
||||
|
||||
## 1. 受测版本与范围
|
||||
|
||||
- 交付记录:[B01-交付-01](B01-交付-01.md);接收时 `gitea/master` 为 `b5eb6d8875d4f7367bde59dd367a8c02e28cce2e`。
|
||||
- **固定受测代码 SHA:`51531dcae8d8ade85db9e203bc8c0f712805b2ae`**。独立 managed worktree 检出该提交,起止 `git status --short` 均为空,没有使用开发机 node_modules。
|
||||
- 验证 `51531dc` 到接收时 `gitea/master` 的 `src/`、`scripts/`、package.json、package-lock.json 没有差异;随后文档与 merge 提交没有包含另一版待测产品代码。
|
||||
- 本轮仅验 YC-001,即 A01、A03、A04。YC-002/003/004 没有交付,不将其缺失列为本轮新增回归,也不将它们记为已通过。
|
||||
- 环境:Windows 11 IoT 企业版 LTSC 64 位,10.0.26100;Node 24.21.0、npm 11.19.0、React 19.3.0、jsdom 30.1.3,Electron 37.10.3。
|
||||
- 独立执行 `npm ci --legacy-peer-deps --no-audit --no-fund`。当前 npm 提示 Electron postinstall 未自动执行,随后显式运行 `node node_modules/electron/install.js`,未修改锁文件。
|
||||
- DOM 依赖单独安装到 `.tmp/b01-dom`;构建、回归、数据与探针均在隔离检出,未请求真实供应商模型或 SDK query。原用户 dev 保持原样,未用其窗口代替指定 SHA 验收。
|
||||
|
||||
## 2. 逐项验收
|
||||
|
||||
| 标准 | 结论 | 证据与边界 |
|
||||
| --- | --- | --- |
|
||||
| AC1.1 原生名称/别名与不可变性 | 通过 | `test:alignment` 中身份、普通工具与历史回归;真实 Windows 使用原生 `AskUserQuestion`,专用卡出现,无原始答案泄漏 |
|
||||
| AC1.2 回答链与去重 | 通过(组件/历史与本地窗口) | 原生名称待答→已答→完成→展开→重开 DOM 回归通过;Windows 持久化消息中仅一份问答;无真实模型请求,不外推真实 SDK 执行 |
|
||||
| AC1.3 局部状态保持 | **失败,见 F01** | 问答、普通工具、思考与局部摘要的现有嵌套回归通过;独立真实 MessageBubble 探针仍复现原生 plan/task 在终态校正后重开 |
|
||||
| AC1.4 标题/灰卡/字号 | 通过(已确认结构与几何);原版像素未验证 | Windows 标题在壳外,14px/400/24.5px;内容 16px 圆角、12px 16px padding、300px 上限;浅深/窄窗与长内容实测。未取得新的同状态原版对照,不能宣称全像素 1:1 |
|
||||
| AC1.5 顺序/默认与隐藏语义 | 指定回归通过,完整辅助技术未验证 | 既有顺序/正文锚点、键盘、inert/aria-hidden 与无复制树回归通过;真实窗口问答外层收起重开保持。F01 涉及的原生 part 稳定性必须补测;未运行真实屏幕阅读器 |
|
||||
|
||||
因此 A01 的已测分发问题、A04 的已测内容壳差异获得独立 Windows 证据;**A03 未关闭**,不能将 YC-001 或 B01 总体记为已完成。历史报告无需重写成“全部仍失败”,本记录保留已通过部分与具体失败。
|
||||
|
||||
## 3. F01 / P2:原生 Plan、Task 在 done 正文校正后丢失收起选择
|
||||
|
||||
对应 A03/AC1.3。**这是本轮未覆盖的既有问题,不是新增回归**:受测 `51531dc` 与基线 `37ddb2c` 均复现。
|
||||
|
||||
实际路径是 `applyAssistantEvent` 生成的真实消息,再由真实 `MessageBubble` 渲染;不是手写两个独立 disclosure,也没有启动 SDK/服务:
|
||||
|
||||
```text
|
||||
流式事件生成 parts:
|
||||
text("Draft one") → reasoning(id=r) → text("Draft two")
|
||||
→ plan(plan.id=p) → task(task.id=x)
|
||||
两张卡默认展开:true / true
|
||||
用户分别收起:false / false
|
||||
接收 done(content="Corrected final prose", tools=[], turnDurationMs=1000)
|
||||
reducer 校正为:text → reasoning → plan → task
|
||||
实际两张卡:true / true
|
||||
预期保留用户选择:false / false
|
||||
```
|
||||
|
||||
源码定位(均针对 `51531dc`):
|
||||
|
||||
- `src/renderer/src/workbuddy/conversation/CompletedFold.tsx:149`:`partDisclosureId` 只识别顶层 `part.id`、`toolId`,原生 plan/task 使用数组下标,没有使用 `part.plan.id`/`part.task.id`。
|
||||
- `src/shared/message-parts.ts:74`:正常 `done` 全文校正会合并多个 text part,改变后续富内容的数组位置。
|
||||
- `src/renderer/src/components/MessageBubble.tsx:182`、`:186`:原生 plan/task 是实际支持的渲染入口;缓存 scope 从 plan/3、task/4 变为 plan/2、task/3,保存的选择失配。
|
||||
- `scripts/completed-fold-nested-regression.tsx:17`、`:21`:交付新增测试把 Plan/Task 构造成有 `toolId` 的 tool part,未覆盖真实 typed part。
|
||||
|
||||
开发端下一轮要求:为所有有稳定业务 ID 的原生 part 使用稳定身份,在终态校正、插入/重排和外层切换后保持用户选择;保留消息隔离和无 ID 旧历史 fallback。补真实 reducer→MessageBubble 的 plan/task 回归,不能只改测试 fixture 为工具节点或移除断言。
|
||||
|
||||
### 可复核反例
|
||||
|
||||
源码与结果:[typed-part-repro.mjs](evidence/B01-review-01/typed-part-repro.mjs)、[受测 JSON](evidence/B01-review-01/typed-part-repro-51531dc.json)、[基线 JSON](evidence/B01-review-01/typed-part-repro-baseline.json)。
|
||||
|
||||
在固定 `51531dc` 检出完成依赖安装,将本次 Git 证据中的 `typed-part-repro.mjs` 复制到该检出的 `.tmp/b01-readonly-review/`,再执行:
|
||||
|
||||
```powershell
|
||||
npm install --prefix .tmp/b01-dom --ignore-scripts --no-audit --no-fund jsdom@30.1.3
|
||||
node .tmp/b01-readonly-review/typed-part-repro.mjs --assert
|
||||
node .tmp/b01-readonly-review/typed-part-repro.mjs --baseline --assert
|
||||
```
|
||||
|
||||
两条都退出 `1`,因为 `retainsUserChoices=false`,不是探针启动失败。基线模式用 `git show 37ddb2c` 替换该渲染路径全部 7 个改动过的 React 模块,并验证全部实际加载;不是在新产品模块上假标基线。主线程已亲自重跑两条,结果与独立子 agent 一致。
|
||||
|
||||
## 4. 构建与回归结果
|
||||
|
||||
| 命令 | 实际退出码 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| `npm run build` | 0 | 独立 Windows 安装,包含两个 tsconfig 类型检查与 main/preload/renderer 构建 |
|
||||
| 设置 `YCODE_TEST_DOM_MODULE` 后 `npm run test:alignment` | 0 | 包含新增 30 项 question-identity、真实嵌套回归,以及原有 28 任务/24 问答/14 授权 DOM;宿主/SDK 部分仍为 mock |
|
||||
| `npm run test:conversation` | 0 | SSR、composer、footer、completed-fold |
|
||||
| `npm run test:workbuddy-import` | 0 | 历史导入回归 |
|
||||
| `npm run test:artifacts` | 0 | artifact/特殊块回归 |
|
||||
| 独立 Windows native probe | 0 | 实际 main/preload/renderer、隔离持久消息、无模型,4 个窗口场景,0 renderer errors |
|
||||
| F01 独立反例 `--assert` | **1** | 发现未修复问题;原基线模式同为 1 |
|
||||
| `npm run check:tokens` | **1** | 与修复前 f2b7c07 完全相同的 6 项失败集合,无本批新增门禁项;没有刷新 baseline |
|
||||
| `npm run test:fold-summary` | **1** | 干净 Windows 检出的既存 CRLF 摘要可复现性问题;本次没有改生成物或 manifest,见下文 |
|
||||
|
||||
证据:[构建日志](evidence/B01-review-01/build.txt)、[alignment 日志](evidence/B01-review-01/alignment.txt)、[其他回归结果](evidence/B01-review-01/regression-results.json)、[token 前后对比](evidence/B01-review-01/token-comparison.json)。
|
||||
|
||||
fold-summary:生成模块有 717 个 CRLF,raw SHA 为 `a2239b45360fcaf5c986fbe2180217856029563f034db11328860dc5e01491ae`,归一 LF 后为 `645ea0848880aa7e89319af8e11440bdddd8c10783944736fd4f29b70e923a10`,与 manifest 一致;对应产品文件从 `37ddb2c` 到 `51531dc` 无改动。[哈希记录](evidence/B01-review-01/fold-hash.json)。这是既存 Windows 检出问题,未算作本轮新增回归,仍不能写成该命令通过;后续按 B01 共通要求处理,不删除摘要断言。
|
||||
|
||||
## 5. Windows 真实窗口证据
|
||||
|
||||
以固定 SHA 的 `out/main/index.mjs` 启动实际 Electron main/preload/renderer,使用全新临时 userData、home、workspace 和本地持久化消息。仅注入测试消息;没有模型、SDK query、真实工具执行或原版访问。
|
||||
|
||||
- 浅色与深色 1336×902;窄窗 820×902。
|
||||
- 通过应用的 `ycode:theme`/storage 同步通路切换主题,等待 React 与样式状态生效,未仅修改根节点造成混合主题后下结论。
|
||||
- 原生 `AskUserQuestion`:只有 1 张问答卡,RAW sentinel 不出现;外层收起重开后,内层问答 `aria-expanded=true` 保持。
|
||||
- 浅色壳背景 `rgb(242, 242, 242)`;问题/答案实际 14px、400、24.5px;标题透明且不在灰壳内。
|
||||
- 长问答内容 `scrollHeight=5688`、`clientHeight=300`,内部滚动;窄窗无页面横向溢出。
|
||||
- 已人工查看下列四张截图;它们证明 YCode 修复后的同状态展示,不是原版逐像素通过。
|
||||
|
||||
证据:[native-probe.cjs](evidence/B01-review-01/native-probe.cjs)、[计算样式与结果](evidence/B01-review-01/native-report.json)、[浅色](evidence/B01-review-01/question-light.png)、[深色](evidence/B01-review-01/question-dark.png)、[窄窗](evidence/B01-review-01/question-narrow.png)、[长内容](evidence/B01-review-01/question-long.png)。
|
||||
|
||||
重跑 native probe 时,在固定 SHA 检出先独立构建,将证据脚本复制进 `.tmp/b01-acceptance/`,执行 `node .tmp/b01-acceptance/native-probe.cjs`。脚本自己创建隔离数据目录并输出结果位置,不启动用户正式数据或复用已有 dev。
|
||||
|
||||
## 6. 回传给开发端
|
||||
|
||||
1. **YC-001 退回修复 F01**,下一轮创建 `B01-交付-02.md`,记录新完整代码 SHA、原生 plan/task 回归及已通过问答/折叠路径的回归结果。
|
||||
2. A01 分发、A04 内容壳与已有正常嵌套路径不要求推倒重做;只补未覆盖稳定身份及必要回归。原版像素/辅助技术边界继续明确。
|
||||
3. YC-002、YC-003、YC-004 保持原状态。本次只交付 YC-001 第一阶段,验收端不擅自要求本轮补交其他任务;后续是否接续由开发端与用户安排。
|
||||
4. 不将开发端注明撤回的骨架补丁自动恢复;B01 中后续加载需求的具体实施须尊重该决定,再明确范围。
|
||||
|
||||
**本验收记录推送成功后,推送窗口交回开发端。** 验收端保留文档/证据职责,不在这里代修产品代码。验收文档提交 SHA 与上述受测代码 SHA 分开报告。
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
> ycode@0.0.7 test:alignment
|
||||
> node scripts/run-alignment-regression.mjs
|
||||
|
||||
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":4.300299999999993,"storeHydrationMs":0.16839999999999122,"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 host approval policy unit checks passed (no SDK process/application/matching verification)
|
||||
Mock SDK replay lifecycle passed: fail closed, retry, session isolation, independent mode guard
|
||||
task popconfirm DOM regression: 28 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
|
||||
Permission intercept DOM: 14 checks passed (not pixel/SDK verification)
|
||||
@@ -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,596.10 kB
|
||||
|
||||
✓ built in 354ms
|
||||
vite v8.3.4 building ssr environment for production...
|
||||
transforming...
|
||||
✓ 2 modules transformed.
|
||||
rendering chunks...
|
||||
out/preload/index.cjs 15.89 kB
|
||||
|
||||
✓ built in 25ms
|
||||
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-FUrmRTun.css 259.93 kB
|
||||
out/renderer/assets/index-D8DFsKmP.css 2,683.38 kB
|
||||
out/renderer/assets/pie-WAS4IAKB-BM688Qed.js 0.11 kB
|
||||
out/renderer/assets/info-A6RAGUB7-bTNlUlsL.js 0.11 kB
|
||||
out/renderer/assets/radar-RG4KPBEZ-B9UzoBsk.js 0.11 kB
|
||||
out/renderer/assets/packet-AYTQ26CC-DM1-J9Hc.js 0.11 kB
|
||||
out/renderer/assets/cynefin-OW5HDTMX-BVeGKPzH.js 0.11 kB
|
||||
out/renderer/assets/treemap-WGGIJYW6-dTyINrIO.js 0.11 kB
|
||||
out/renderer/assets/wardley-WFR3VGLG-CK3k4IVw.js 0.11 kB
|
||||
out/renderer/assets/gitGraph-4MIJSDKK-Lnzglldc.js 0.12 kB
|
||||
out/renderer/assets/railroad-74A4TZTK--aYG59DA.js 0.12 kB
|
||||
out/renderer/assets/treeView-Q6P3EWNA-BQbXo5gl.js 0.12 kB
|
||||
out/renderer/assets/railroad-peg-WCYAUIDC-JWkkQu_q.js 0.12 kB
|
||||
out/renderer/assets/architecture-7GRP2DOG-Rcjkw8FN.js 0.12 kB
|
||||
out/renderer/assets/railroad-abnf-HS5TGJTU-D3VduuJu.js 0.12 kB
|
||||
out/renderer/assets/railroad-ebnf-LZEXJU2U-CPG7-L_h.js 0.12 kB
|
||||
out/renderer/assets/eventmodeling-NTZA5JFV-C09adLXn.js 0.12 kB
|
||||
out/renderer/assets/array-75Ih5Qg4.js 0.16 kB
|
||||
out/renderer/assets/channel-twr7cTKo.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-DeS6ymMG.js 0.59 kB
|
||||
out/renderer/assets/prism-json-DxLGXN1o.js 0.62 kB
|
||||
out/renderer/assets/codeowners-C7Y3CTAA-Cql6BEv4.js 0.75 kB
|
||||
out/renderer/assets/prism-clike-BcH_eOfE.js 0.89 kB
|
||||
out/renderer/assets/tsv-DVa1_Ovr-vBRdwBXR.js 0.94 kB
|
||||
out/renderer/assets/shellsession-C0HwRpr0-BR3CRuW_.js 0.96 kB
|
||||
out/renderer/assets/javascript-DGySzfUB-CQaVVFGk.js 0.99 kB
|
||||
out/renderer/assets/settings-llhfE4_8.js 1.01 kB
|
||||
out/renderer/assets/infoDiagram-27XIBGKW-BWoSUBIx.js 1.09 kB
|
||||
out/renderer/assets/swimlanesDiagram-VR7AAH4N-7SwzrBEF.js 1.09 kB
|
||||
out/renderer/assets/html-derivative-D3Jld805-ejOJ9Rod.js 1.10 kB
|
||||
out/renderer/assets/prism-go-Cw8Jg9YT.js 1.11 kB
|
||||
out/renderer/assets/classDiagram-ZZMXUADV-Bvgva5eH.js 1.16 kB
|
||||
out/renderer/assets/classDiagram-v2-VYDZK3BY-BAE_9e9o.js 1.16 kB
|
||||
out/renderer/assets/stateDiagram-v2-MP3YSRHH-C2G3Nge_.js 1.16 kB
|
||||
out/renderer/assets/qmldir-DIq06gp2-XVepWno6.js 1.20 kB
|
||||
out/renderer/assets/git-rebase-CgwCWTNR-CVQxRN4O.js 1.23 kB
|
||||
out/renderer/assets/chunk-POPQ4Y6H-vc0o4Gte.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-CGiJ_6Ks.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-DRFjBUK8.js 1.47 kB
|
||||
out/renderer/assets/AgentsSettingsPanel-CMYBwUKH.js 1.56 kB
|
||||
out/renderer/assets/xsl-DV28r3Jw-DKCCYPB3.js 1.59 kB
|
||||
out/renderer/assets/dotenv-DXc2fSbR-DICbdlhH.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-C2rm_KXA.js 1.71 kB
|
||||
out/renderer/assets/prism-css-Cmyw76Xa.js 1.73 kB
|
||||
out/renderer/assets/ini-DMSv7OY2-Cn3K8pDf.js 1.74 kB
|
||||
out/renderer/assets/rolldown-runtime-BJCASTsb-DKQFAHUF.js 1.78 kB
|
||||
out/renderer/assets/line-CWSC3poT.js 1.89 kB
|
||||
out/renderer/assets/fortran-fixed-form-D91DiZLE-D7agIQws.js 1.91 kB
|
||||
out/renderer/assets/docker-B7J3eHK7-BATGFti-.js 1.96 kB
|
||||
out/renderer/assets/hxml-938TheZ7-D0LocqjZ.js 1.97 kB
|
||||
out/renderer/assets/desktop-BwI-o01e-BWTUZWmu.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-CZggf--g.js 2.40 kB
|
||||
out/renderer/assets/prism-kotlin-Bc2NQYRR.js 2.43 kB
|
||||
out/renderer/assets/jssm-CIisorE2-BrY14dMi.js 2.44 kB
|
||||
out/renderer/assets/prism-python-CTkfasgb.js 2.48 kB
|
||||
out/renderer/assets/reg-mzCtpvUf-whwPvsKo.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-CWdeAhFo.js 2.61 kB
|
||||
out/renderer/assets/edge-DcEd3r9D-BTaCZqN4.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-B7AkfsES.js 2.78 kB
|
||||
out/renderer/assets/railroadDiagram-O6MQD6OU-BNKzVPEs.js 2.78 kB
|
||||
out/renderer/assets/diff-lAxbRYdS-CANKRkKW.js 2.79 kB
|
||||
out/renderer/assets/hy-BKymZdC0-BZBUoAs0.js 2.86 kB
|
||||
out/renderer/assets/dockerfile-CnkhFuxG-CfXHMZr-.js 3.01 kB
|
||||
out/renderer/assets/openscad-BRTETpP_-CDkw47wh.js 3.03 kB
|
||||
out/renderer/assets/pascaligo-DI1dd1Zd-D23AoFdQ.js 3.03 kB
|
||||
out/renderer/assets/log-Cn1ZE6kb-CNfS4M2w.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-CaP0PDKh.js 3.12 kB
|
||||
out/renderer/assets/cairo-D_LzMZ4I-DKL-xu7P.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-DsYHGLaz.js 3.20 kB
|
||||
out/renderer/assets/jsonl-Cn_fzNA8-D9apCnfy.js 3.21 kB
|
||||
out/renderer/assets/json-CKKhFIOr-90BCCD5D.js 3.29 kB
|
||||
out/renderer/assets/mips-Df5bwPtM-DJn7b529.js 3.29 kB
|
||||
out/renderer/assets/jsonc-Bf3Xcgeq-CvnwGjUy.js 3.31 kB
|
||||
out/renderer/assets/logo-BxqPaaID-CVrAYEcu.js 3.33 kB
|
||||
out/renderer/assets/abnfDiagram-VCTEODGH-Bv59L9H6.js 3.36 kB
|
||||
out/renderer/assets/go-BejFoqvR-BnGoIlsY.js 3.42 kB
|
||||
out/renderer/assets/po-DI6EG-tz-C1hZfYcl.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-Bqa7RqAq.js 3.45 kB
|
||||
out/renderer/assets/mipsasm-U3SQfJCQ-BpaJHcf8.js 3.46 kB
|
||||
out/renderer/assets/sophia-foSZ3xPI-DGYIHURw.js 3.47 kB
|
||||
out/renderer/assets/tasl-C74Cvwdf-CmTGrVqg.js 3.49 kB
|
||||
out/renderer/assets/genie-CjS3m_gh-Br-qoLq_.js 3.56 kB
|
||||
out/renderer/assets/prism-swift-xplGsQ1n.js 3.56 kB
|
||||
out/renderer/assets/vala-DMgevQbf-CmV4e3j_.js 3.57 kB
|
||||
out/renderer/assets/pegDiagram-XKGWAZYB-dVjWvJkm.js 3.59 kB
|
||||
out/renderer/assets/rel-D6dNeDZv-Bpkmk4eS.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-CrqpykYB.js 3.65 kB
|
||||
out/renderer/assets/ebnfDiagram-PWID7BFC-1-q_hdLp.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-Bu4CSazG.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-Cn_pn_Wn.js 3.81 kB
|
||||
out/renderer/assets/splunk-BdqSfgpd-YG2DKrtF.js 3.81 kB
|
||||
out/renderer/assets/jsonnet-Bn71vRY8-Df8aCHo3.js 3.82 kB
|
||||
out/renderer/assets/ssh-config-BO51LXox-BVx8icd8.js 3.82 kB
|
||||
out/renderer/assets/bicep-DujF3y-4-DHww3ZLF.js 3.87 kB
|
||||
out/renderer/assets/narrat-DdgkgBr0-CH981GBy.js 3.87 kB
|
||||
out/renderer/assets/redis-Bo427DT4-DBDF4ZWx.js 3.88 kB
|
||||
out/renderer/assets/turtle-DAmmiOda-BJFArKOq.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-BSUoGIHz.js 4.11 kB
|
||||
out/renderer/assets/zenscript-XbBI4c9W-BFcBoeKG.js 4.12 kB
|
||||
out/renderer/assets/glsl-CZF-bvQV-9IpKrYn6.js 4.14 kB
|
||||
out/renderer/assets/shell-DGp7WuK3-X00pamiI.js 4.15 kB
|
||||
out/renderer/assets/gn-DJxfXStl-DdOzUBon.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-BCuCzgSj.js 4.27 kB
|
||||
out/renderer/assets/AppearanceSettingsPanel-B_352Jrg.js 4.28 kB
|
||||
out/renderer/assets/hurl-CDXCvJNd-v3s0TGuH.js 4.28 kB
|
||||
out/renderer/assets/cypher-CjfQI0Y9-9gjOyi6P.js 4.33 kB
|
||||
out/renderer/assets/pascal-CLPA94yO-BYk8pXp0.js 4.35 kB
|
||||
out/renderer/assets/powershell-CaPzBwIT-C9KgMPOP.js 4.50 kB
|
||||
out/renderer/assets/tcl-D-NiFh9X-CSVMOw5D.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-BC70ArCp.js 4.72 kB
|
||||
out/renderer/assets/nextflow-DVTlkzu9-BvWt64IR.js 4.75 kB
|
||||
out/renderer/assets/http-DhxVjYFh-6dtHltQi.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-DkKufc4x.js 4.87 kB
|
||||
out/renderer/assets/prism-ruby-PgHh3fQm.js 4.91 kB
|
||||
out/renderer/assets/fennel-COJTUo2O-DeaHY6dL.js 4.97 kB
|
||||
out/renderer/assets/bibtex-yEKRWsaj-D8ShyJ1A.js 5.00 kB
|
||||
out/renderer/assets/coffee-CcgZJF1B-DkN4xoBX.js 5.04 kB
|
||||
out/renderer/assets/llvm-DiFwU398-DlWtUz0W.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-DbFOisvZ.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-Cd99xS_n.js 5.54 kB
|
||||
out/renderer/assets/restructuredtext-D2p7PcFG-DDHAm_JI.js 5.55 kB
|
||||
out/renderer/assets/dax-CmrIxjmL-Cm-IqJxd.js 5.56 kB
|
||||
out/renderer/assets/gdresource-4lq4eh4q-BLZ-Xhb8.js 5.56 kB
|
||||
out/renderer/assets/qml-D6gd64uC-COt5k1_j.js 5.57 kB
|
||||
out/renderer/assets/bicep-wTwvD1CI-TpOHsxP3.js 5.58 kB
|
||||
out/renderer/assets/cssMode-Z-o80aSY-B98aAd1G.js 5.59 kB
|
||||
out/renderer/assets/awk-DTjcVAOD-DmWbT1GZ.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-xQMFTtcz.js 5.81 kB
|
||||
out/renderer/assets/swift-C3A42nmX-BBVToPkN.js 5.83 kB
|
||||
out/renderer/assets/xml-bIkPj5aH-Dj17JXmX.js 5.89 kB
|
||||
out/renderer/assets/ecl-CYzojQ6a-C8m0_osY.js 5.91 kB
|
||||
out/renderer/assets/jinja-Dl-Ji_JA-DBtRU8XB.js 5.92 kB
|
||||
out/renderer/assets/lean-Cu10prRO-qoDA2HH1.js 6.03 kB
|
||||
out/renderer/assets/yaml-GEMDST6R-D-0AGe4F.js 6.09 kB
|
||||
out/renderer/assets/moonbit-B8-g2u5v-CvSB9cV_.js 6.10 kB
|
||||
out/renderer/assets/powerquery-tKWDTKOo-waMU16T7.js 6.11 kB
|
||||
out/renderer/assets/SourceCodePreview-mEFD1Yau.js 6.11 kB
|
||||
out/renderer/assets/python-CHafhQyI-DmJIfgbV.js 6.14 kB
|
||||
out/renderer/assets/shaderlab-Df7nOKvI-yzLjKEuk.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-BLc3NfGD.js 6.29 kB
|
||||
out/renderer/assets/htmlMode-BDZbYlMj-C3ITpSKc.js 6.40 kB
|
||||
out/renderer/assets/red-CYaKK_PD-B9rc2vJZ.js 6.45 kB
|
||||
out/renderer/assets/min-dark-DGPfDRqJ-CdytMfp1.js 6.48 kB
|
||||
out/renderer/assets/pug-EKWpNZSi-oQ708bsr.js 6.51 kB
|
||||
out/renderer/assets/prisma-CdZyz3OC-BgUFK_C1.js 6.53 kB
|
||||
out/renderer/assets/gdshader-ryZhEIxg-Do4kvC2U.js 6.55 kB
|
||||
out/renderer/assets/ara-_lrJyEFe-im1DTHgp.js 6.56 kB
|
||||
out/renderer/assets/clojure-WSq30mUj-CWeb8Ehm.js 6.61 kB
|
||||
out/renderer/assets/toml-DPP887_3-40AtdxPk.js 6.62 kB
|
||||
out/renderer/assets/postcss-CcIp2ENG-CVUE5tmq.js 6.64 kB
|
||||
out/renderer/assets/verilog-bragEGMk-C8WJgOmh.js 6.64 kB
|
||||
out/renderer/assets/solarized-light-BIMszn7B-B2U9KVBQ.js 6.68 kB
|
||||
out/renderer/assets/cypher-COYrq2Yy-DzVg_woT.js 6.75 kB
|
||||
out/renderer/assets/arc-LpCwTDer.js 6.75 kB
|
||||
out/renderer/assets/proto-CQIfhs_g-BuRzi1Bh.js 6.77 kB
|
||||
out/renderer/assets/smalltalk-BLGdLDJX-CBGuRCuH.js 6.79 kB
|
||||
out/renderer/assets/vb-D1Cw85Ss-BSz-V9M4.js 6.86 kB
|
||||
out/renderer/assets/talonscript-DA9pg7Tj-BHGvDWHP.js 6.96 kB
|
||||
out/renderer/assets/r-Bb2Mu7Fo-Bft5r7V4.js 7.00 kB
|
||||
out/renderer/assets/solarized-dark-D_I-4EGa-DXP7SqBa.js 7.04 kB
|
||||
out/renderer/assets/diagram-Z3DM3KII-wA8bvl3k.js 7.08 kB
|
||||
out/renderer/assets/riscv-CQHqXr1Z-AIE80Th9.js 7.11 kB
|
||||
out/renderer/assets/soy-DybHqX1A-B0BHFfA4.js 7.15 kB
|
||||
out/renderer/assets/min-light-BF0EjVgr-BN7wLXTt.js 7.16 kB
|
||||
out/renderer/assets/scheme-Dn0tgEWN-B_dvvVHd.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-BDAtqngO.js 7.48 kB
|
||||
out/renderer/assets/mdx-Bdu4uO-C-BrzgNjCw.js 7.58 kB
|
||||
out/renderer/assets/qss-DkzwWM0J-BOg2UcdG.js 7.67 kB
|
||||
out/renderer/assets/html-DKbmsqz6-Cnkf6ew3.js 7.69 kB
|
||||
out/renderer/assets/systemd-CS6mVasZ-UCFHYgiH.js 8.07 kB
|
||||
out/renderer/assets/monokai-CYqILLdj-ZVQYJWcs.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_-CxhxK5lR.js 8.42 kB
|
||||
out/renderer/assets/regexp-Dv0OUts_-A1jzFeWI.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-KaeiwzmO.js 8.71 kB
|
||||
out/renderer/assets/vue-html-DvuHo2mm-oEzkAGog.js 8.71 kB
|
||||
out/renderer/assets/haml-CIYwkycC-zblUyJHT.js 8.81 kB
|
||||
out/renderer/assets/scss-CLoW-2dr-BBC_GO_6.js 8.86 kB
|
||||
out/renderer/assets/dart-CBkkDIWs-j8H02moM.js 8.94 kB
|
||||
out/renderer/assets/horizon-CELVL8Ba-CV6Nlqvf.js 8.97 kB
|
||||
out/renderer/assets/horizon-bright-DBDyMeUQ-BLA71491.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-CpYGuuUh.js 9.18 kB
|
||||
out/renderer/assets/andromeeda--j5Bq-48-DHms4eOb.js 9.21 kB
|
||||
out/renderer/assets/dark-plus-FAPM6M6c-DVCL0euQ.js 9.29 kB
|
||||
out/renderer/assets/sas-BQIEUTPQ-DaT5bHkC.js 9.31 kB
|
||||
out/renderer/assets/slack-dark-nDxLkSCC-CkFKNzUY.js 9.31 kB
|
||||
out/renderer/assets/perl-Bec3eWyr-CDmSu3_s.js 9.32 kB
|
||||
out/renderer/assets/plastic-DY_h9Vzh-Dvw8LIYu.js 9.49 kB
|
||||
out/renderer/assets/sass-Ysv8HTNa-BQlxUfIG.js 9.49 kB
|
||||
out/renderer/assets/st-BrgXZ-Ag-BUs-RRgp.js 9.58 kB
|
||||
out/renderer/assets/typst-Co5rZla4-IC5-Jo72.js 9.61 kB
|
||||
out/renderer/assets/slack-ochin-7zJWY-K--DXNk4Zsd.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-BNFOqqwE.js 9.95 kB
|
||||
out/renderer/assets/sql-DviNlDJO-CwV6bDIP.js 9.97 kB
|
||||
out/renderer/assets/kotlin-DIw6ua6F-CMarmTrc.js 10.01 kB
|
||||
out/renderer/assets/cmake-CyNDuJo8-BeWVlJUp.js 10.07 kB
|
||||
out/renderer/assets/light-plus-DkScKIB5-B_KcDNlw.js 10.14 kB
|
||||
out/renderer/assets/hcl-DoJdlYjN-BsGZHRyE.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-3QIK9277.js 10.58 kB
|
||||
out/renderer/assets/tex-gcnXexI3-DyL0fQZm.js 10.60 kB
|
||||
out/renderer/assets/php-Bn8AF0uj-CBbpr2vs.js 10.62 kB
|
||||
out/renderer/assets/nextflow-groovy-D4ZyOBoZ-Cxol6NUs.js 10.63 kB
|
||||
out/renderer/assets/dream-maker-5oXa1Z51-BxOIhCiq.js 10.67 kB
|
||||
out/renderer/assets/ts-tags-xeTAUNHG-CXHQ2bLP.js 10.70 kB
|
||||
out/renderer/assets/raku-Bfr41qeN-sHjCwCt6.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-fUDryoPr.js 10.97 kB
|
||||
out/renderer/assets/diagram-UQ7AKVKN-DvkjvJ_z.js 11.05 kB
|
||||
out/renderer/assets/elm-Dl1XrIiD-BleiAWFO.js 11.18 kB
|
||||
out/renderer/assets/just-He7qscmV-DWClPT8I.js 11.19 kB
|
||||
out/renderer/assets/redshift-Djb4PK3z-9Ar4PFWD.js 11.35 kB
|
||||
out/renderer/assets/github-light-B_J7N1HZ-CNLpwkaR.js 11.38 kB
|
||||
out/renderer/assets/ruby-CxOCB7_P-BzsjPJ6Z.js 11.48 kB
|
||||
out/renderer/assets/prolog-DAqMMM08-BQ1K0xDW.js 11.56 kB
|
||||
out/renderer/assets/terraform-BW8B2WXV-vO0iUEHq.js 11.59 kB
|
||||
out/renderer/assets/github-dark-BgqEY2WG-CDuFyDvl.js 11.60 kB
|
||||
out/renderer/assets/puppet-CaR8DEdW-BFTzELPt.js 11.65 kB
|
||||
out/renderer/assets/pkl-DrXR3Dxy-MKe2lJ6v.js 11.67 kB
|
||||
out/renderer/assets/laserwave-Clkc4Pj8-DVFQc3Jp.js 11.69 kB
|
||||
out/renderer/assets/pieDiagram-E7YTZNPT-BWdg6XAo.js 11.95 kB
|
||||
out/renderer/assets/rst-BJFdabDk-CCl67Ai5.js 12.04 kB
|
||||
out/renderer/assets/linear-WS155L0r.js 12.11 kB
|
||||
out/renderer/assets/wasm-DYwNZ-r4-LoLM9sp-.js 12.21 kB
|
||||
out/renderer/assets/hjson-CmvCiVhY-Dv5-O_dE.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-D96aDeHo.js 12.52 kB
|
||||
out/renderer/assets/apache-BUbWdjM2-er-kNq06.js 12.66 kB
|
||||
out/renderer/assets/vesper-B5lCMuIY-C-L8SLS-.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-Cl-ogcV8.js 13.09 kB
|
||||
out/renderer/assets/fish-CaZR_ofm-D3csrVXO.js 13.24 kB
|
||||
out/renderer/assets/elixir-Lipcswxh-DnZCznfr.js 13.27 kB
|
||||
out/renderer/assets/v-wnWoBHkK-BSi04X8j.js 13.41 kB
|
||||
out/renderer/assets/AboutHelpSettingsPanel-Ui_VOvh7.js 13.48 kB
|
||||
out/renderer/assets/vitesse-light-DQXFiRFx-BsEdmZXn.js 13.81 kB
|
||||
out/renderer/assets/aurora-x-9vUYYjHV-DuTT-s24.js 13.85 kB
|
||||
out/renderer/assets/vitesse-black-cwK5rWgD-By5BPIiB.js 13.87 kB
|
||||
out/renderer/assets/vitesse-dark-CsfgW0oH-B8FfVCVY.js 13.96 kB
|
||||
out/renderer/assets/ShortcutsSettingsPanel-KgJeI7QZ.js 14.15 kB
|
||||
out/renderer/assets/pug-D0UckVoV-Dc4dcKRI.js 14.16 kB
|
||||
out/renderer/assets/synthwave-84-LX1B8mRG-BSQB2DTm.js 14.23 kB
|
||||
out/renderer/assets/github-light-default-BRmIzqWc-BC58bqci.js 14.36 kB
|
||||
out/renderer/assets/clarity-AxkJPY5c-CLkBleI8.js 14.48 kB
|
||||
out/renderer/assets/github-light-high-contrast-BUKIZOxn-DTqDE4VZ.js 14.49 kB
|
||||
out/renderer/assets/github-dark-dimmed-DoIdqTey-C4--1HeR.js 14.64 kB
|
||||
out/renderer/assets/github-dark-default-CwWjzI40-CjtvvGKC.js 14.64 kB
|
||||
out/renderer/assets/chunk-PWAF6VOD-C5TH65pY.js 14.76 kB
|
||||
out/renderer/assets/github-dark-high-contrast-bFLNMLvK-B9mc4K5r.js 14.80 kB
|
||||
out/renderer/assets/diagram-S7CK7UJ4-DIu-_iO3.js 14.98 kB
|
||||
out/renderer/assets/gnuplot-Dw3FRha5-obFHGYeK.js 14.98 kB
|
||||
out/renderer/assets/rust-C0Ih6nmc-DCi1zq7R.js 15.27 kB
|
||||
out/renderer/assets/actionscript-3-O8jnLcvn-BbZ_4u0n.js 15.41 kB
|
||||
out/renderer/assets/luau-BzxGbjcn-9_TbVyma.js 15.64 kB
|
||||
out/renderer/assets/nix-zl191KBb-BbAYvczw.js 15.85 kB
|
||||
out/renderer/assets/lua-BwTLfNCK-BBIgNBoM.js 16.04 kB
|
||||
out/renderer/assets/abap-FvPUHv8B-CiFbcGXC.js 16.05 kB
|
||||
out/renderer/assets/solidity-96fhzG-Q-C74Y2Opx.js 16.28 kB
|
||||
out/renderer/assets/matlab-8ZQqHKQX-BJu9o6OA.js 16.29 kB
|
||||
out/renderer/assets/cue-eHSfcyUV-BNbKRlrg.js 16.40 kB
|
||||
out/renderer/assets/kusto-D8vBBISG-BfwhlBvh.js 16.45 kB
|
||||
out/renderer/assets/powerquery-B7BjLMcF-BkVSWPtX.js 16.49 kB
|
||||
out/renderer/assets/elixir-B1NaQxrO-CNOGHop-.js 16.50 kB
|
||||
out/renderer/assets/react-DrereneL.js 16.50 kB
|
||||
out/renderer/assets/odin-B-YqhW9I-DME2HDgP.js 16.71 kB
|
||||
out/renderer/assets/solidity-Dpt2BLAA-BD_YSA0r.js 16.98 kB
|
||||
out/renderer/assets/bird2-BMkLvc4r-rsPD8M30.js 17.17 kB
|
||||
out/renderer/assets/kanagawa-wave-CM_o6oKV-CWyXUtcR.js 17.32 kB
|
||||
out/renderer/assets/kanagawa-lotus-Cj3XDpoG-CDr5kPUh.js 17.32 kB
|
||||
out/renderer/assets/kanagawa-dragon-D_NPnIy_-CknksS66.js 17.33 kB
|
||||
out/renderer/assets/cynefinDiagram-5FMLGOSQ-D0qyeYc4.js 17.61 kB
|
||||
out/renderer/assets/stateDiagram-D77RDMKH-tZzGzB97.js 18.11 kB
|
||||
out/renderer/assets/chunk-L3NEJ4N5-DtjgD4ep.js 18.16 kB
|
||||
out/renderer/assets/liquid-D_7zu7XR-uwWdG6fF.js 18.46 kB
|
||||
out/renderer/assets/svelte-DUGqPubT-CTwTdp-n.js 18.60 kB
|
||||
out/renderer/assets/graphql-ObxcfEHH-DDFQQ1P1.js 18.65 kB
|
||||
out/renderer/assets/jsonMode-DdQpkp6D-BKPbFySU.js 18.79 kB
|
||||
out/renderer/assets/material-theme-q28j4V_0-B-kj8Qoq.js 18.81 kB
|
||||
out/renderer/assets/material-theme-ocean-DAvlEnSm-iaR_QhuU.js 18.83 kB
|
||||
out/renderer/assets/material-theme-darker-CHEuMVX9-Bb6Gry5X.js 18.83 kB
|
||||
out/renderer/assets/material-theme-lighter-DY4T1_JG-D-KxwMUM.js 18.84 kB
|
||||
out/renderer/assets/material-theme-palenight-CqDFvQ-v-B7MYtC_l.js 18.84 kB
|
||||
out/renderer/assets/gherkin-BcjDDslM-CWirluc4.js 19.20 kB
|
||||
out/renderer/assets/gdscript-CekKc1U_-BX0yrYTi.js 19.21 kB
|
||||
out/renderer/assets/groovy-DH3arekX-oAflmeEP.js 19.38 kB
|
||||
out/renderer/assets/mdc-D-U85KZE-BZdF3UAh.js 19.85 kB
|
||||
out/renderer/assets/diagram-VSXAHHWV-B78-YXJ8.js 20.01 kB
|
||||
out/renderer/assets/move-CmExnPjU-D1_eV6y8.js 20.22 kB
|
||||
out/renderer/assets/ayu-dark-BeByMiYw-DzuIgUGo.js 20.27 kB
|
||||
out/renderer/assets/ayu-mirage-C1jJ6Jfs-BJ7bsANS.js 20.28 kB
|
||||
out/renderer/assets/ayu-light-DmTZeN54-DSkP76Kn.js 20.35 kB
|
||||
out/renderer/assets/glimmer-js-D9ZnrcNN-BIcuvWkY.js 20.44 kB
|
||||
out/renderer/assets/glimmer-ts-DuhFj6qR-B5odMFJp.js 20.44 kB
|
||||
out/renderer/assets/viml-DPVJ_KYe-CNoY3ri2.js 20.56 kB
|
||||
out/renderer/assets/nushell-Cd8Dwa1M-D-ELzSxD.js 20.62 kB
|
||||
out/renderer/assets/snazzy-light-B8znOqT6-igc5rBV_.js 20.97 kB
|
||||
out/renderer/assets/dagre-GXQ25YYZ-q8Br2FA_.js 21.01 kB
|
||||
out/renderer/assets/dracula-DeMffiYO-plA2G1by.js 21.26 kB
|
||||
out/renderer/assets/dracula-soft-BnfvpcDv-CooEVcrD.js 21.27 kB
|
||||
out/renderer/assets/twig-7zjsCqYg-DuWCMdWG.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-FjrJKSJj.js 21.94 kB
|
||||
out/renderer/assets/rose-pine-moon-B9bum7Ik-C1dPrIOG.js 21.96 kB
|
||||
out/renderer/assets/rose-pine-dawn-2Q5fMoJp-D68V6_sX.js 21.96 kB
|
||||
out/renderer/assets/powershell-ycAdP1r9-CFIipy6u.js 22.11 kB
|
||||
out/renderer/assets/common-lisp-DcFHcTKh-CRmZ8u5g.js 22.81 kB
|
||||
out/renderer/assets/gruvbox-dark-hard-gOzMLqif-0PofsLRE.js 22.83 kB
|
||||
out/renderer/assets/gruvbox-dark-soft-CKvURktN-CpJBySQ9.js 22.83 kB
|
||||
out/renderer/assets/gruvbox-light-hard-CMa_c48J-DhbHOF7k.js 22.84 kB
|
||||
out/renderer/assets/gruvbox-light-soft-yfAGJYsX-B6V_VQqA.js 22.84 kB
|
||||
out/renderer/assets/gruvbox-dark-medium-BQSVGwWb-BQ530p9o.js 22.84 kB
|
||||
out/renderer/assets/gruvbox-light-medium-B9S5UNr1-GtfqbARl.js 22.84 kB
|
||||
out/renderer/assets/nim-CD961Jl3-BXaHgcLA.js 22.91 kB
|
||||
out/renderer/assets/cadence-C2JmJjDr-D0JIp-nV.js 23.87 kB
|
||||
out/renderer/assets/sql-C_oMiPb0-CtC6YR3O.js 23.87 kB
|
||||
out/renderer/assets/wit-CXpQol8Q-INBqmTeA.js 24.11 kB
|
||||
out/renderer/assets/templ-gFcHJbF7-Cbr3Ety6.js 24.38 kB
|
||||
out/renderer/assets/astro-kV3HjkbP-D9f7KDfO.js 24.46 kB
|
||||
out/renderer/assets/vhdl-Ci4REirV-CQ9mlLyL.js 24.46 kB
|
||||
out/renderer/assets/purescript-DCsDAdnX-Cot00nU8.js 24.97 kB
|
||||
out/renderer/assets/vue-Cuk7Vimg-RQuL6vPZ.js 25.25 kB
|
||||
out/renderer/assets/surrealql-GFjNBdcm-B_Zkuzeq.js 25.34 kB
|
||||
out/renderer/assets/one-light-CMfGrl_P-CvXy-wp6.js 25.49 kB
|
||||
out/renderer/assets/night-owl-light-CAEa42tO-lUpHCOnV.js 26.10 kB
|
||||
out/renderer/assets/system-verilog-D_bVVpLE-D7j6RF1Y.js 26.41 kB
|
||||
out/renderer/assets/angular-html-BrLPO2Fv-Bgbfj5Qp.js 26.48 kB
|
||||
out/renderer/assets/typespec-D5WYs8C4-CiGKYijV.js 26.72 kB
|
||||
out/renderer/assets/nord-DlCAGdjr-tqXbaCnO.js 26.91 kB
|
||||
out/renderer/assets/codeql-DidIlXer-C0bd6k-b.js 27.08 kB
|
||||
out/renderer/assets/scss-BhK8Ovpn-BQq6Frps.js 27.52 kB
|
||||
out/renderer/assets/coffee-DrMWXxy6-BNvla_tH.js 27.68 kB
|
||||
out/renderer/assets/java-DaupjRFz-DdE0uB2r.js 27.69 kB
|
||||
out/renderer/assets/razor-B2hRAVmz-D9x1yc2J.js 27.72 kB
|
||||
out/renderer/assets/apl-C42PBett-D2UJYGDR.js 27.87 kB
|
||||
out/renderer/assets/chunk-SVP7TREG-35Cx1p7a.js 28.38 kB
|
||||
out/renderer/assets/fsharp-BHFgIxsY-DSepk0af.js 28.48 kB
|
||||
out/renderer/assets/marko-DXKHPFnH-CtKawwkY.js 28.74 kB
|
||||
out/renderer/assets/GeneralSettingsPanel-BvWbjOtn.js 29.10 kB
|
||||
out/renderer/assets/night-owl-DegwdXaM-UFUSPJU_.js 29.11 kB
|
||||
out/renderer/assets/c3-BOs4FlGA-DJbgm1fi.js 29.17 kB
|
||||
out/renderer/assets/MemorySettingsPanel-CURc90wI.js 29.75 kB
|
||||
out/renderer/assets/crystal-DlzoxO28-Blr3y4JY.js 29.84 kB
|
||||
out/renderer/assets/applescript-ij24h7OO-SZPADYv5.js 29.87 kB
|
||||
out/renderer/assets/tsMode-SiG-Sp2b-D-duzWqc.js 30.55 kB
|
||||
out/renderer/assets/pierre-dark-Daa2n9wr-DusEyx93.js 30.74 kB
|
||||
out/renderer/assets/pierre-light-D_hZXvUj-BQz0OThR.js 30.75 kB
|
||||
out/renderer/assets/pierre-dark-soft-BhNM3pgh-BF8Uifdk.js 30.76 kB
|
||||
out/renderer/assets/pierre-light-soft-BVrSv6ZG-Ci0MDyEV.js 30.76 kB
|
||||
out/renderer/assets/ishikawaDiagram-5VMMS53U-DLplA6vL.js 30.78 kB
|
||||
out/renderer/assets/pierre-dark-tritanopia-CGKuoAZi-CCKbkm2i.js 30.78 kB
|
||||
out/renderer/assets/pierre-light-tritanopia-BiDEaWaH-D0n7V4Ln.js 30.78 kB
|
||||
out/renderer/assets/pierre-dark-protanopia-deuteranopia-Cs1lz9lE-CglVC82r.js 30.82 kB
|
||||
out/renderer/assets/pierre-light-protanopia-deuteranopia-BM0RLBB_-BgccdHTL.js 30.82 kB
|
||||
out/renderer/assets/stylus-ZCryC73G-Dz6KJMr2.js 31.29 kB
|
||||
out/renderer/assets/diagram-VX7I27RA-CgHzhNUv.js 31.44 kB
|
||||
out/renderer/assets/scala-BBsC3Oz3-DCgLzUzQ.js 31.48 kB
|
||||
out/renderer/assets/mermaid-D6CQfUGU-BKGonhno.js 33.37 kB
|
||||
out/renderer/assets/poimandres-EIt_jotH-ZWxYhJoY.js 33.69 kB
|
||||
out/renderer/assets/kanban-definition-UXKFOSKX-BQjuw40N.js 33.91 kB
|
||||
out/renderer/assets/one-dark-pro-DR9QpZM3-D3fuIaRQ.js 33.98 kB
|
||||
out/renderer/assets/mermaid-parser.core-DQNESEqg.js 34.66 kB
|
||||
out/renderer/assets/haxe-BWT5wSyZ-Bv2BMtCM.js 35.38 kB
|
||||
out/renderer/assets/nginx-DhtViCEk-C8iMBHfd.js 35.58 kB
|
||||
out/renderer/assets/houston-BdS5A_yD-BZRML7mO.js 35.61 kB
|
||||
out/renderer/assets/tokyo-night-BS1_DFu7-DSQrDV8c.js 35.86 kB
|
||||
out/renderer/assets/erlang-Dd62d0xZ-Dp-wNWfp.js 37.71 kB
|
||||
out/renderer/assets/rough.esm-BX5QqLti.js 38.33 kB
|
||||
out/renderer/assets/mindmap-definition-YA3MSWOX-DJVuJ8KA.js 38.59 kB
|
||||
out/renderer/assets/cobol-D7RZfOK--CIRKo2If.js 39.37 kB
|
||||
out/renderer/assets/journeyDiagram-3NMN7TZE-ClKmPdOn.js 40.13 kB
|
||||
out/renderer/assets/julia-ZzkUXm0W-C7ui3eKu.js 40.32 kB
|
||||
out/renderer/assets/lspLanguageFeatures-DK9zifhE-DeEqLmGO.js 40.76 kB
|
||||
out/renderer/assets/asm-DYVIzeEk-6khYQ-a8.js 40.91 kB
|
||||
out/renderer/assets/haskell-Ba6HbLj8-B3QEwyPk.js 41.78 kB
|
||||
out/renderer/assets/sankeyDiagram-P5KCCOFB-Bkju2DSV.js 41.83 kB
|
||||
out/renderer/assets/shellscript-B69gKcss-BUkt_jYS.js 41.97 kB
|
||||
out/renderer/assets/wardleyDiagram-VM6X3IG4-BZQYC-il.js 42.40 kB
|
||||
out/renderer/assets/perl-Dv6Cq_FS-BmabaTng.js 43.55 kB
|
||||
out/renderer/assets/pierre-dark-vibrant-BMsyYliQ-DsmVysir.js 44.96 kB
|
||||
out/renderer/assets/pierre-light-vibrant-CWzM4Pa_-B2g3j1aA.js 44.97 kB
|
||||
out/renderer/assets/ruby-DWcdJvcx-CqBDeWg-.js 46.50 kB
|
||||
out/renderer/assets/go-BOpYl7fu-D3CvqA3U.js 47.02 kB
|
||||
out/renderer/assets/apex-B48ZHHzN-DiOaHZGq.js 47.18 kB
|
||||
out/renderer/assets/catppuccin-mocha-cPsH7Lup-CgYflQPu.js 47.46 kB
|
||||
out/renderer/assets/catppuccin-latte-DcEecI7n-hrZRgDR2.js 47.46 kB
|
||||
out/renderer/assets/catppuccin-frappe-BdOW2tdI-Cia3gxbK.js 47.46 kB
|
||||
out/renderer/assets/catppuccin-macchiato-Bvz_yAZY-OYdnuUzO.js 47.47 kB
|
||||
out/renderer/assets/ada-BT0j8ine-DR2ZjGiA.js 48.28 kB
|
||||
out/renderer/assets/d-B1HbH29p-Cvj3ChCf.js 49.10 kB
|
||||
out/renderer/assets/css-NFwnoVns-DXH9z3fp.js 49.49 kB
|
||||
out/renderer/assets/imba-C-oGt11l-BOyTfQ_E.js 50.13 kB
|
||||
out/renderer/assets/requirementDiagram-BXWQKSXE-DDZyOEHK.js 51.39 kB
|
||||
out/renderer/assets/erDiagram-RLTQ6QDP-CcpqimEg.js 52.41 kB
|
||||
out/renderer/assets/browserify-C9uP_nIr.js 52.80 kB
|
||||
out/renderer/assets/gitGraphDiagram-WWUBYQGX-C2rfskCX.js 53.82 kB
|
||||
out/renderer/assets/everforest-dark-gCM8XhEI-3QAtV0yR.js 53.94 kB
|
||||
out/renderer/assets/everforest-light-DhK35DkL-CfuPtloK.js 53.95 kB
|
||||
out/renderer/assets/timeline-definition-24CTP7MA-ssvVRybZ.js 54.31 kB
|
||||
out/renderer/assets/wikitext-CQNrXTmv-BiuWdMxa.js 56.09 kB
|
||||
out/renderer/assets/stata-BUONSdsT-CKLpB3jF.js 57.23 kB
|
||||
out/renderer/assets/quadrantDiagram-AXDQQJYC-D7XKVeeu.js 58.21 kB
|
||||
out/renderer/assets/html-Dq1ixqYb-5Ez6yppp.js 58.25 kB
|
||||
out/renderer/assets/chunk-OSK3NFVY-qf3h4lor.js 58.56 kB
|
||||
out/renderer/assets/ocaml-CUdGm1iq-BuWvselV.js 62.65 kB
|
||||
out/renderer/assets/model-settings-source-JYisGYmM.js 63.03 kB
|
||||
out/renderer/assets/ballerina-CpYcPBJI-BnPqh2jl.js 64.89 kB
|
||||
out/renderer/assets/markdown-BSrOIEaF-DY4at8q_.js 65.52 kB
|
||||
out/renderer/assets/chunk-IMKFNOWR-Dx3k84kX.js 67.22 kB
|
||||
out/renderer/assets/mojo-BNaitZ-7-DtFQFkWH.js 70.00 kB
|
||||
out/renderer/assets/python-Cld0Iwtn-Coj7MLzk.js 70.17 kB
|
||||
out/renderer/assets/blockDiagram-I7D4REHJ-nK66-7sK.js 71.01 kB
|
||||
out/renderer/assets/bsl-CtP8370o-e0AdGB3U.js 71.07 kB
|
||||
out/renderer/assets/c-B4augMcT-BGPd0Gr7.js 72.57 kB
|
||||
out/renderer/assets/chunk-75Z2AOVW-BZiwzGEC.js 72.67 kB
|
||||
out/renderer/assets/latex-g2Pus_l2-Cpe4lKbe.js 72.85 kB
|
||||
out/renderer/assets/vyper-C1nscAY5-OZcp2uvX.js 74.85 kB
|
||||
out/renderer/assets/ModelSettingsPanel-BRse78yu.js 76.64 kB
|
||||
out/renderer/assets/xychartDiagram-S5SC5T6Z-CPCafBr_.js 76.79 kB
|
||||
out/renderer/assets/chunk-GMAD6QVW-dfikwibL.js 77.76 kB
|
||||
out/renderer/assets/hack-B1ag3l4X-DTTup4WH.js 80.58 kB
|
||||
out/renderer/assets/src-DsgKm1PY.js 83.16 kB
|
||||
out/renderer/assets/chunk-TICWLB2K-Dcn8_IYB.js 83.88 kB
|
||||
out/renderer/assets/fortran-free-form-CsgtTAg3-Dcf0E5I4.js 89.20 kB
|
||||
out/renderer/assets/vennDiagram-4TSXK5OY-B0x-Bje4.js 89.26 kB
|
||||
out/renderer/assets/csharp-YOPVljXo-C-nVpPMU.js 89.91 kB
|
||||
out/renderer/assets/racket--xYIV9-n-BkgwOEe4.js 92.62 kB
|
||||
out/renderer/assets/swift-CgzYrGBX-DfGPZN4n.js 94.14 kB
|
||||
out/renderer/assets/less-BGhX8xko-Diwi650w.js 99.00 kB
|
||||
out/renderer/assets/chunk-SHT3W25Y-CjVXKa_k.js 104.10 kB
|
||||
out/renderer/assets/objective-c-CmcWiAft-Cgiq1x-N.js 105.62 kB
|
||||
out/renderer/assets/blade-Bq8WPf0E-DDPRfLTk.js 105.98 kB
|
||||
out/renderer/assets/c4Diagram-7LVT6UL2-BDuXaT_h.js 107.96 kB
|
||||
out/renderer/assets/php-X15vsN4N-Cw3x0PRH.js 111.49 kB
|
||||
out/renderer/assets/dagre-CzI-C3sx.js 122.98 kB
|
||||
out/renderer/assets/ganttDiagram-EL5Y4UJY-BpPa-hGj.js 123.77 kB
|
||||
out/renderer/assets/graphlib-CoAzpIqe.js 127.44 kB
|
||||
out/renderer/assets/asciidoc-DJWalVNM-CcfVx3iO.js 146.30 kB
|
||||
out/renderer/assets/mdx-C_Ato9sK-DAoK042h.js 146.49 kB
|
||||
out/renderer/assets/editor.main-POO0Vbhx-DUU9yksQ.js 161.32 kB
|
||||
out/renderer/assets/cose-bilkent-JH36ORCC-CA60tZpq.js 165.63 kB
|
||||
out/renderer/assets/objective-cpp-BggTCHV8-trr7fzYf.js 172.18 kB
|
||||
out/renderer/assets/javascript-AfZCJ9Uc-CgnJvLVh.js 175.31 kB
|
||||
out/renderer/assets/tsx-BOlKGefW-CUNUHmru.js 176.00 kB
|
||||
out/renderer/assets/jsx-CPd9p36x-CEWEBIYH.js 178.26 kB
|
||||
out/renderer/assets/sequenceDiagram-WJ2MYXX4-D0g8qqlR.js 190.05 kB
|
||||
out/renderer/assets/typescript-4sRsPriL-oU8ptGzO.js 191.16 kB
|
||||
out/renderer/assets/mermaid.core-B2Ma1qAB.js 191.57 kB
|
||||
out/renderer/assets/angular-ts-YduEkmVa-B4Tf-ujw.js 193.82 kB
|
||||
out/renderer/assets/vue-vine-DXhYlaTf-C0L6NEkT.js 201.27 kB
|
||||
out/renderer/assets/SourceSelect-Bl6QD69o.js 203.20 kB
|
||||
out/renderer/assets/chunk-4HAMMTFA-BtNkLLfX.js 210.32 kB
|
||||
out/renderer/assets/swimlanes-42K2YHIH-BEf7ZX-J.js 265.51 kB
|
||||
out/renderer/assets/wolfram-BVoTES0L-BbtnEQY1.js 267.14 kB
|
||||
out/renderer/assets/chunk-DU6HZSFF-C3z8F-bw.js 271.07 kB
|
||||
out/renderer/assets/architectureDiagram-5GKGNRK7-B1XyM6kv.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-B6l5Bdg0.js 622.62 kB
|
||||
out/renderer/assets/cpp-9jHBA231-B1v5BVd-.js 626.73 kB
|
||||
out/renderer/assets/app-DF_dh0Fl.js 675.57 kB
|
||||
out/renderer/assets/emacs-lisp-DjtOxg4j-dAO1046A.js 780.06 kB
|
||||
out/renderer/assets/cytoscape.esm-bVGYt-iW.js 869.69 kB
|
||||
out/renderer/assets/ArtifactPierreDiff-DrM9lg7t.js 1,119.58 kB
|
||||
out/renderer/assets/chunk-FOHPRMQF-BCllzKJD.js 1,154.18 kB
|
||||
out/renderer/assets/index-DFOcTr-o.js 3,759.50 kB
|
||||
out/renderer/assets/editor.api2-dPwET-7w-BYIQ9bT3.js 4,889.23 kB
|
||||
|
||||
✓ built in 4.97s
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"crlf": 717,
|
||||
"rawSha": "a2239b45360fcaf5c986fbe2180217856029563f034db11328860dc5e01491ae",
|
||||
"lfSha": "645ea0848880aa7e89319af8e11440bdddd8c10783944736fd4f29b70e923a10",
|
||||
"expected": "645ea0848880aa7e89319af8e11440bdddd8c10783944736fd4f29b70e923a10"
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
const fs = require('node:fs/promises')
|
||||
const path = require('node:path')
|
||||
const assert = require('node:assert/strict')
|
||||
const { pathToFileURL } = require('node:url')
|
||||
|
||||
if (!process.versions.electron) {
|
||||
;(async () => {
|
||||
const directory = await fs.mkdtemp(path.resolve('.tmp/b01-native-'))
|
||||
const data = path.join(directory, 'data')
|
||||
const workspace = path.join(directory, 'workspace')
|
||||
await fs.mkdir(data); await fs.mkdir(workspace); await fs.mkdir(path.join(directory, 'home'))
|
||||
const now = Date.now()
|
||||
const question = { id: 'q1', question: '检查哪个本地目标? Which local target?', answers: ['本地测试目录 / Local fixture'] }
|
||||
const longQuestions = Array.from({ length: 24 }, (_, i) => ({
|
||||
id: `long-${i}`, question: `Question ${i}: ${'长文本与换行测试 '.repeat(12)}`,
|
||||
answers: ['Long answer '.repeat(20)]
|
||||
}))
|
||||
const message = questions => ({
|
||||
id: 'a1', role: 'assistant', content: 'Final answer after question.', createdAt: now - 9000, status: 'done',
|
||||
turnStartedAt: now - 10000, turnFinishedAt: now, turnDurationMs: 10000,
|
||||
tools: [
|
||||
{ id: 'q-tool', name: 'AskUserQuestion', args: { questions }, argsRaw: '{}', status: 'ok', output: 'RAW_SDK_ANSWER_SENTINEL', metadata: { questionAnswer: { questions } } },
|
||||
{ id: 't1', name: 'UnknownOrdinaryTool', args: {}, argsRaw: '{}', status: 'ok', output: 'ORDINARY_TOOL_OUTPUT' }
|
||||
],
|
||||
parts: [
|
||||
{ type: 'reasoning', id: 'r1', text: 'First reasoning.', finished: true }, { type: 'tool', toolId: 't1' },
|
||||
{ type: 'tool', toolId: 'q-tool' }, { type: 'text', text: 'Final answer after question.' }
|
||||
]
|
||||
})
|
||||
const session = (id, questions) => ({
|
||||
id, title: id, cwd: workspace, createdAt: now, updatedAt: now + (id === 'b01-short' ? 1 : 0),
|
||||
messages: [{ id: 'u1', role: 'user', content: 'Inspect a local fixture.', status: 'done', createdAt: now - 10000 }, message(questions)]
|
||||
})
|
||||
await fs.writeFile(path.join(data, 'sessions.json'), JSON.stringify({ sessions: [session('b01-short', [question]), session('b01-long', longQuestions)] }))
|
||||
const env = { ...process.env, YCODE_USER_DATA_DIR: data, YCODE_SKIP_KERNEL_DATA_RESET: '1', YCODE_QA_DIRECTORY: directory,
|
||||
YCODE_QA_OFFSCREEN: '1', YCODE_DISABLE_GPU: '1', YCODE_DISABLE_SYSTEM_INTEGRATION: '1', B01_NATIVE_DIRECTORY: directory }
|
||||
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 output = ''
|
||||
child.stdout.on('data', bytes => { output += bytes })
|
||||
child.stderr.on('data', bytes => { output += bytes })
|
||||
const timer = setTimeout(() => child.kill(), 90000)
|
||||
child.once('exit', async code => {
|
||||
clearTimeout(timer); await fs.writeFile(path.join(directory, 'process.log'), output)
|
||||
console.log(JSON.stringify({ directory, exitCode: code }))
|
||||
if (code !== 0) console.error(output.slice(-6000))
|
||||
process.exitCode = code === 0 ? 0 : 1
|
||||
})
|
||||
})().catch(error => { console.error(error); process.exitCode = 1 })
|
||||
} else {
|
||||
const { app, BrowserWindow } = require('electron')
|
||||
const directory = process.env.B01_NATIVE_DIRECTORY
|
||||
app.disableHardwareAcceleration(); app.setPath('home', path.join(directory, 'home'))
|
||||
let win
|
||||
const errors = []
|
||||
const read = code => win.webContents.executeJavaScript(code)
|
||||
const pause = ms => new Promise(resolve => setTimeout(resolve, ms))
|
||||
const outer = '.cr-collapse--completed > .cr-collapse__header'
|
||||
const questionHeader = '.ask-user-question__header .cr-tool-head__main'
|
||||
async function wait(code) {
|
||||
for (let i = 0; i < 250; i++) { if (await read(code)) return; await pause(40) }
|
||||
throw new Error(`Timeout: ${code}`)
|
||||
}
|
||||
const click = selector => read(`document.querySelector(${JSON.stringify(selector)}).click()`)
|
||||
async function setTheme(theme) {
|
||||
await read(`(() => { localStorage.setItem("ycode:theme", ${JSON.stringify(theme)});
|
||||
window.dispatchEvent(new StorageEvent("storage", {key:"ycode:theme",newValue:${JSON.stringify(theme)}})); })()`)
|
||||
await wait(`document.documentElement.dataset.theme === ${JSON.stringify(theme)}`)
|
||||
await pause(150)
|
||||
}
|
||||
async function shot(name) {
|
||||
await read('document.fonts.ready'); await pause(400)
|
||||
await fs.writeFile(path.join(directory, name + '.png'), (await win.webContents.capturePage()).toPNG())
|
||||
}
|
||||
async function measure() {
|
||||
return read(`(() => {
|
||||
const probe = selector => {
|
||||
const element = document.querySelector(selector); if (!element) return null;
|
||||
const style = getComputedStyle(element), box = element.getBoundingClientRect();
|
||||
return {selector, fontSize:style.fontSize,fontWeight:style.fontWeight,lineHeight:style.lineHeight,
|
||||
background:style.backgroundColor,padding:style.padding,borderRadius:style.borderRadius,border:style.border,
|
||||
overflow:style.overflow,maxHeight:style.maxHeight,width:box.width,height:box.height,
|
||||
scrollHeight:element.scrollHeight,clientHeight:element.clientHeight};
|
||||
};
|
||||
const section = document.querySelector(".ask-user-question--completed");
|
||||
const content = section.querySelector(".ask-user-question__content");
|
||||
const header = section.querySelector(".ask-user-question__header");
|
||||
return { theme:document.documentElement.dataset.theme, titleOutsideContent:!content.contains(header),
|
||||
cardCount:document.querySelectorAll(".ask-user-question--completed").length,
|
||||
rawAnswerVisible:document.body.textContent.includes("RAW_SDK_ANSWER_SENTINEL"),
|
||||
horizontalOverflow:document.documentElement.scrollWidth > innerWidth,
|
||||
styles:[".ask-user-question--completed",".ask-user-question__header",".ask-user-question__content",
|
||||
".question-answer-transcript__question",".question-answer-transcript__answer"].map(probe) };
|
||||
})()`)
|
||||
}
|
||||
;(async () => {
|
||||
await import(pathToFileURL(path.resolve('out/main/index.mjs')).href)
|
||||
await app.whenReady(); win = BrowserWindow.getAllWindows()[0]; win.setSize(1336, 902); win.showInactive()
|
||||
win.webContents.on('console-message', (_e, level, message) => { if (level >= 3) errors.push(message) })
|
||||
await wait(`!!document.querySelector(${JSON.stringify(outer)})`)
|
||||
await click(outer); await wait(`!!document.querySelector(${JSON.stringify(questionHeader)})`)
|
||||
await click(questionHeader)
|
||||
await wait(`document.querySelector(${JSON.stringify(questionHeader)}).getAttribute("aria-expanded") === "true"`)
|
||||
await setTheme('light')
|
||||
const light = await measure(); await shot('question-light')
|
||||
assert.equal(light.titleOutsideContent, true); assert.equal(light.cardCount, 1); assert.equal(light.rawAnswerVisible, false)
|
||||
const contentStyle = light.styles[2]
|
||||
assert.equal(contentStyle.padding, '12px 16px'); assert.equal(contentStyle.borderRadius, '16px')
|
||||
assert.equal(contentStyle.maxHeight, '300px')
|
||||
for (const style of light.styles.slice(3)) {
|
||||
assert.equal(style.fontSize, '14px'); assert.equal(style.fontWeight, '400'); assert.equal(style.lineHeight, '24.5px')
|
||||
}
|
||||
await click(outer); await click(outer)
|
||||
await wait(`document.querySelector(${JSON.stringify(questionHeader)}).getAttribute("aria-expanded") === "true"`)
|
||||
const preserved = await read(`document.querySelector(${JSON.stringify(questionHeader)}).getAttribute("aria-expanded")`)
|
||||
await setTheme('dark')
|
||||
const dark = await measure(); await shot('question-dark')
|
||||
await setTheme('light')
|
||||
win.setSize(820, 902); await pause(150)
|
||||
const narrow = await measure(); await shot('question-narrow')
|
||||
assert.equal(narrow.horizontalOverflow, false)
|
||||
await click('[data-session-id="b01-long"]')
|
||||
await wait('document.querySelector(".source-chat-header")?.textContent.includes("b01-long") && !!document.querySelector(".cr-collapse--completed")')
|
||||
await pause(300); await click(outer)
|
||||
await wait(`!!document.querySelector(${JSON.stringify(questionHeader)})`); await click(questionHeader)
|
||||
await pause(350)
|
||||
const long = await measure(); await shot('question-long')
|
||||
assert.ok(long.styles[2].scrollHeight > long.styles[2].clientHeight)
|
||||
assert.ok(long.styles[2].clientHeight <= 300)
|
||||
assert.equal(long.horizontalOverflow, false)
|
||||
const report = { codeSha: '51531dcae8d8ade85db9e203bc8c0f712805b2ae', scope: 'Real isolated Windows Electron main/preload/renderer; synthetic persisted messages, no model/SDK or original app access.',
|
||||
light, dark, narrow, long, innerQuestionPreserved: preserved, rendererErrors: errors }
|
||||
await fs.writeFile(path.join(directory, 'report.json'), JSON.stringify(report, null, 2))
|
||||
assert.equal(errors.length, 0)
|
||||
app.exit(0)
|
||||
})().catch(async error => {
|
||||
console.error(error)
|
||||
await fs.writeFile(path.join(directory, 'failure.txt'), String(error))
|
||||
if (win) await shot('failure').catch(() => {})
|
||||
app.exit(1)
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,362 @@
|
||||
{
|
||||
"codeSha": "51531dcae8d8ade85db9e203bc8c0f712805b2ae",
|
||||
"scope": "Real isolated Windows Electron main/preload/renderer; synthetic persisted messages, no model/SDK or original app access.",
|
||||
"light": {
|
||||
"theme": "light",
|
||||
"titleOutsideContent": true,
|
||||
"cardCount": 1,
|
||||
"rawAnswerVisible": false,
|
||||
"horizontalOverflow": false,
|
||||
"styles": [
|
||||
{
|
||||
"selector": ".ask-user-question--completed",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "2px 0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 752,
|
||||
"height": 117.5,
|
||||
"scrollHeight": 118,
|
||||
"clientHeight": 118
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__header",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgba(0, 0, 0, 0.5)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 752,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__content",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgb(242, 242, 242)",
|
||||
"padding": "12px 16px",
|
||||
"borderRadius": "16px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "auto",
|
||||
"maxHeight": "300px",
|
||||
"width": 752,
|
||||
"height": 77,
|
||||
"scrollHeight": 77,
|
||||
"clientHeight": 77
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__question",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(128, 128, 128)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 720,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__answer",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 720,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
"dark": {
|
||||
"theme": "dark",
|
||||
"titleOutsideContent": true,
|
||||
"cardCount": 1,
|
||||
"rawAnswerVisible": false,
|
||||
"horizontalOverflow": false,
|
||||
"styles": [
|
||||
{
|
||||
"selector": ".ask-user-question--completed",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "2px 0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(210, 211, 224)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 752,
|
||||
"height": 117.5,
|
||||
"scrollHeight": 118,
|
||||
"clientHeight": 118
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__header",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgba(255, 255, 255, 0.45)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 752,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__content",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgb(42, 44, 49)",
|
||||
"padding": "12px 16px",
|
||||
"borderRadius": "16px",
|
||||
"border": "0px none rgb(210, 211, 224)",
|
||||
"overflow": "auto",
|
||||
"maxHeight": "300px",
|
||||
"width": 752,
|
||||
"height": 77,
|
||||
"scrollHeight": 77,
|
||||
"clientHeight": 77
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__question",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(160, 160, 160)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 720,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__answer",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(210, 211, 224)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 720,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
"narrow": {
|
||||
"theme": "light",
|
||||
"titleOutsideContent": true,
|
||||
"cardCount": 1,
|
||||
"rawAnswerVisible": false,
|
||||
"horizontalOverflow": false,
|
||||
"styles": [
|
||||
{
|
||||
"selector": ".ask-user-question--completed",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "2px 0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 446,
|
||||
"height": 117.5,
|
||||
"scrollHeight": 118,
|
||||
"clientHeight": 118
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__header",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgba(0, 0, 0, 0.5)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 446,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__content",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgb(242, 242, 242)",
|
||||
"padding": "12px 16px",
|
||||
"borderRadius": "16px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "auto",
|
||||
"maxHeight": "300px",
|
||||
"width": 446,
|
||||
"height": 77,
|
||||
"scrollHeight": 77,
|
||||
"clientHeight": 77
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__question",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(128, 128, 128)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 414,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__answer",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 414,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
}
|
||||
]
|
||||
},
|
||||
"long": {
|
||||
"theme": "light",
|
||||
"titleOutsideContent": true,
|
||||
"cardCount": 1,
|
||||
"rawAnswerVisible": false,
|
||||
"horizontalOverflow": false,
|
||||
"styles": [
|
||||
{
|
||||
"selector": ".ask-user-question--completed",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "2px 0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 446,
|
||||
"height": 340.5,
|
||||
"scrollHeight": 341,
|
||||
"clientHeight": 341
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__header",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgba(0, 0, 0, 0.5)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 446,
|
||||
"height": 24.5,
|
||||
"scrollHeight": 25,
|
||||
"clientHeight": 25
|
||||
},
|
||||
{
|
||||
"selector": ".ask-user-question__content",
|
||||
"fontSize": "13px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "19px",
|
||||
"background": "rgb(242, 242, 242)",
|
||||
"padding": "12px 16px",
|
||||
"borderRadius": "16px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "auto",
|
||||
"maxHeight": "300px",
|
||||
"width": 446,
|
||||
"height": 300,
|
||||
"scrollHeight": 5688,
|
||||
"clientHeight": 300
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__question",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(128, 128, 128)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 404,
|
||||
"height": 98,
|
||||
"scrollHeight": 98,
|
||||
"clientHeight": 98
|
||||
},
|
||||
{
|
||||
"selector": ".question-answer-transcript__answer",
|
||||
"fontSize": "14px",
|
||||
"fontWeight": "400",
|
||||
"lineHeight": "24.5px",
|
||||
"background": "rgba(0, 0, 0, 0)",
|
||||
"padding": "0px",
|
||||
"borderRadius": "0px",
|
||||
"border": "0px none rgb(51, 51, 51)",
|
||||
"overflow": "visible",
|
||||
"maxHeight": "none",
|
||||
"width": 404,
|
||||
"height": 122.5,
|
||||
"scrollHeight": 123,
|
||||
"clientHeight": 123
|
||||
}
|
||||
]
|
||||
},
|
||||
"innerQuestionPreserved": "true",
|
||||
"rendererErrors": []
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 69 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 66 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 81 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
@@ -0,0 +1,27 @@
|
||||
[
|
||||
{
|
||||
"Command": "npm run test:conversation",
|
||||
"ExitCode": 0,
|
||||
"Log": ".tmp\\b01-validation\\test-conversation.log"
|
||||
},
|
||||
{
|
||||
"Command": "npm run test:workbuddy-import",
|
||||
"ExitCode": 0,
|
||||
"Log": ".tmp\\b01-validation\\test-workbuddy-import.log"
|
||||
},
|
||||
{
|
||||
"Command": "npm run test:artifacts",
|
||||
"ExitCode": 0,
|
||||
"Log": ".tmp\\b01-validation\\test-artifacts.log"
|
||||
},
|
||||
{
|
||||
"Command": "npm run test:fold-summary",
|
||||
"ExitCode": 1,
|
||||
"Log": ".tmp\\b01-validation\\test-fold-summary.log"
|
||||
},
|
||||
{
|
||||
"Command": "npm run check:tokens",
|
||||
"ExitCode": 1,
|
||||
"Log": ".tmp\\b01-validation\\check-tokens.log"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,171 @@
|
||||
{
|
||||
"beforeSha": "f2b7c07",
|
||||
"afterSha": "51531dc",
|
||||
"beforeViolations": [
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/capabilities/recommended-flow.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 22
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/capabilities/skill-detail-shell.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "regression",
|
||||
"path": "src/renderer/src/capabilities/skills-host.css",
|
||||
"class": "local",
|
||||
"increases": [
|
||||
{
|
||||
"metric": "barePx",
|
||||
"from": 25,
|
||||
"to": 46
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/workbuddy/composer/capability-picker.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "bareHex",
|
||||
"current": 26
|
||||
},
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 48
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "regression",
|
||||
"path": "src/renderer/src/workbuddy/composer/composer.css",
|
||||
"class": "local",
|
||||
"increases": [
|
||||
{
|
||||
"metric": "bareHex",
|
||||
"from": 23,
|
||||
"to": 38
|
||||
},
|
||||
{
|
||||
"metric": "barePx",
|
||||
"from": 83,
|
||||
"to": 139
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/workbuddy/composer/prompt-queue.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "bareHex",
|
||||
"current": 8
|
||||
},
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 35
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"afterViolations": [
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/capabilities/recommended-flow.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 22
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/capabilities/skill-detail-shell.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 21
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "regression",
|
||||
"path": "src/renderer/src/capabilities/skills-host.css",
|
||||
"class": "local",
|
||||
"increases": [
|
||||
{
|
||||
"metric": "barePx",
|
||||
"from": 25,
|
||||
"to": 46
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/workbuddy/composer/capability-picker.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "bareHex",
|
||||
"current": 26
|
||||
},
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 48
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "regression",
|
||||
"path": "src/renderer/src/workbuddy/composer/composer.css",
|
||||
"class": "local",
|
||||
"increases": [
|
||||
{
|
||||
"metric": "bareHex",
|
||||
"from": 23,
|
||||
"to": 38
|
||||
},
|
||||
{
|
||||
"metric": "barePx",
|
||||
"from": 83,
|
||||
"to": 139
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "new-file",
|
||||
"path": "src/renderer/src/workbuddy/composer/prompt-queue.css",
|
||||
"class": "local",
|
||||
"metrics": [
|
||||
{
|
||||
"metric": "bareHex",
|
||||
"current": 8
|
||||
},
|
||||
{
|
||||
"metric": "barePx",
|
||||
"current": 35
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"equal": true
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"testedRevision": "51531dcae8d8ade85db9e203bc8c0f712805b2ae",
|
||||
"runtime": {
|
||||
"node": "v24.21.0",
|
||||
"platform": "win32",
|
||||
"react": "19.3.0",
|
||||
"jsdom": "30.1.3"
|
||||
},
|
||||
"input": {
|
||||
"id": "b01-typed-part-repro",
|
||||
"role": "assistant",
|
||||
"createdAt": 1,
|
||||
"content": "Draft oneDraft two",
|
||||
"status": "streaming",
|
||||
"parts": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Draft one"
|
||||
},
|
||||
{
|
||||
"type": "reasoning",
|
||||
"id": "r",
|
||||
"text": "Thought",
|
||||
"finished": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Draft two"
|
||||
},
|
||||
{
|
||||
"type": "plan",
|
||||
"plan": {
|
||||
"id": "p",
|
||||
"title": "Plan",
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "task",
|
||||
"task": {
|
||||
"id": "x",
|
||||
"title": "Task",
|
||||
"status": "success",
|
||||
"summary": "Task result"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"terminalEvent": {
|
||||
"type": "done",
|
||||
"content": "Corrected final prose",
|
||||
"tools": [],
|
||||
"turnDurationMs": 1000
|
||||
},
|
||||
"outputParts": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Corrected final prose"
|
||||
},
|
||||
{
|
||||
"type": "reasoning",
|
||||
"id": "r",
|
||||
"text": "Thought",
|
||||
"finished": true
|
||||
},
|
||||
{
|
||||
"type": "plan",
|
||||
"plan": {
|
||||
"id": "p",
|
||||
"title": "Plan",
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "task",
|
||||
"task": {
|
||||
"id": "x",
|
||||
"title": "Task",
|
||||
"status": "success",
|
||||
"summary": "Task result"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ariaExpanded": {
|
||||
"initially": {
|
||||
"plan": "true",
|
||||
"task": "true"
|
||||
},
|
||||
"afterUserCollapse": {
|
||||
"plan": "false",
|
||||
"task": "false"
|
||||
},
|
||||
"afterTerminalCorrection": {
|
||||
"plan": "true",
|
||||
"task": "true"
|
||||
}
|
||||
},
|
||||
"expectedAfterTerminalCorrection": {
|
||||
"plan": "false",
|
||||
"task": "false"
|
||||
},
|
||||
"retainsUserChoices": false,
|
||||
"verificationMethod": "Bundled fixed 51531dc checkout product modules",
|
||||
"baselineModulesLoaded": []
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
{
|
||||
"testedRevision": "37ddb2ce24c23d1fab7d0609a62901cc666d4975",
|
||||
"runtime": {
|
||||
"node": "v24.21.0",
|
||||
"platform": "win32",
|
||||
"react": "19.3.0",
|
||||
"jsdom": "30.1.3"
|
||||
},
|
||||
"input": {
|
||||
"id": "b01-typed-part-repro",
|
||||
"role": "assistant",
|
||||
"createdAt": 1,
|
||||
"content": "Draft oneDraft two",
|
||||
"status": "streaming",
|
||||
"parts": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Draft one"
|
||||
},
|
||||
{
|
||||
"type": "reasoning",
|
||||
"id": "r",
|
||||
"text": "Thought",
|
||||
"finished": true
|
||||
},
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Draft two"
|
||||
},
|
||||
{
|
||||
"type": "plan",
|
||||
"plan": {
|
||||
"id": "p",
|
||||
"title": "Plan",
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "task",
|
||||
"task": {
|
||||
"id": "x",
|
||||
"title": "Task",
|
||||
"status": "success",
|
||||
"summary": "Task result"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"terminalEvent": {
|
||||
"type": "done",
|
||||
"content": "Corrected final prose",
|
||||
"tools": [],
|
||||
"turnDurationMs": 1000
|
||||
},
|
||||
"outputParts": [
|
||||
{
|
||||
"type": "text",
|
||||
"text": "Corrected final prose"
|
||||
},
|
||||
{
|
||||
"type": "reasoning",
|
||||
"id": "r",
|
||||
"text": "Thought",
|
||||
"finished": true
|
||||
},
|
||||
{
|
||||
"type": "plan",
|
||||
"plan": {
|
||||
"id": "p",
|
||||
"title": "Plan",
|
||||
"steps": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "task",
|
||||
"task": {
|
||||
"id": "x",
|
||||
"title": "Task",
|
||||
"status": "success",
|
||||
"summary": "Task result"
|
||||
}
|
||||
}
|
||||
],
|
||||
"ariaExpanded": {
|
||||
"initially": {
|
||||
"plan": "true",
|
||||
"task": "true"
|
||||
},
|
||||
"afterUserCollapse": {
|
||||
"plan": "false",
|
||||
"task": "false"
|
||||
},
|
||||
"afterTerminalCorrection": {
|
||||
"plan": "true",
|
||||
"task": "true"
|
||||
}
|
||||
},
|
||||
"expectedAfterTerminalCorrection": {
|
||||
"plan": "false",
|
||||
"task": "false"
|
||||
},
|
||||
"retainsUserChoices": false,
|
||||
"verificationMethod": "Bundled every changed React module from git show 37ddb2c; remaining product code equals tested checkout for this path",
|
||||
"baselineModulesLoaded": [
|
||||
"src/renderer/src/components/MessageBubble.tsx",
|
||||
"src/renderer/src/workbuddy/conversation/CompletedFold.tsx",
|
||||
"src/renderer/src/workbuddy/conversation/SourceToolHeader.tsx",
|
||||
"src/renderer/src/workbuddy/conversation/SpecializedBlocks.tsx",
|
||||
"src/renderer/src/workbuddy/conversation/ToolCallRenderer.tsx",
|
||||
"src/renderer/src/workbuddy/conversation/AskUserQuestion.tsx",
|
||||
"src/renderer/src/workbuddy/conversation/ToolCall.tsx"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
/** Independent read-only acceptance probe. Writes only .tmp output; no SDK/Electron/services. */
|
||||
import { build } from 'esbuild'
|
||||
import { spawnSync, execFileSync } from 'node:child_process'
|
||||
import { writeFileSync, mkdirSync } from 'node:fs'
|
||||
import path from 'node:path'
|
||||
const baseline = process.argv.includes('--baseline')
|
||||
mkdirSync('.tmp/b01-readonly-review', {recursive:true})
|
||||
const baselineModulesLoaded = []
|
||||
const checkoutRevision = execFileSync('git', ['rev-parse', 'HEAD'], {encoding:'utf8'}).trim()
|
||||
if (checkoutRevision !== '51531dcae8d8ade85db9e203bc8c0f712805b2ae') throw new Error('Run in the fixed 51531dc acceptance checkout')
|
||||
const revision = baseline ? '37ddb2ce24c23d1fab7d0609a62901cc666d4975' : '51531dcae8d8ade85db9e203bc8c0f712805b2ae'
|
||||
const baselinePaths = new Set([
|
||||
'src/renderer/src/components/MessageBubble.tsx',
|
||||
'src/renderer/src/workbuddy/conversation/CompletedFold.tsx',
|
||||
'src/renderer/src/workbuddy/conversation/SpecializedBlocks.tsx',
|
||||
'src/renderer/src/workbuddy/conversation/SourceToolHeader.tsx',
|
||||
'src/renderer/src/workbuddy/conversation/ToolCall.tsx',
|
||||
'src/renderer/src/workbuddy/conversation/ToolCallRenderer.tsx',
|
||||
'src/renderer/src/workbuddy/conversation/AskUserQuestion.tsx'
|
||||
])
|
||||
const source=String.raw`
|
||||
import assert from 'node:assert/strict'
|
||||
import {createRequire} from 'node:module'
|
||||
const domModule=process.env.YCODE_TEST_DOM_MODULE||process.cwd()+'/.tmp/b01-dom/node_modules/jsdom'
|
||||
const {JSDOM}=createRequire(process.cwd()+'/package.json')(domModule)
|
||||
const dom=new JSDOM('<!doctype html><html><body><main id="root"></main></body></html>',{pretendToBeVisual:true,url:'http://localhost/'})
|
||||
for(const key of ['window','document','Node','Element','HTMLElement','MouseEvent','KeyboardEvent','Event'])Object.defineProperty(globalThis,key,{value:dom.window[key],configurable:true})
|
||||
Object.defineProperty(globalThis,'navigator',{value:dom.window.navigator,configurable:true})
|
||||
Object.assign(globalThis,{IS_REACT_ACT_ENVIRONMENT:true})
|
||||
const {act}=require('react') as typeof import('react')
|
||||
const {createRoot}=require('react-dom/client') as typeof import('react-dom/client')
|
||||
const MessageBubble=require('./src/renderer/src/components/MessageBubble').default
|
||||
const {applyAssistantEvent}=require('./src/shared/message-parts')
|
||||
const root=createRoot(document.querySelector('#root')!)
|
||||
const selectors={plan:'.cb-plan-header-left',task:'.cb-task-result-item-title'}
|
||||
const get=(selector:string)=>{const node=document.querySelector(selector);assert.ok(node,selector);return node}
|
||||
const state=()=>Object.fromEntries(Object.entries(selectors).map(([kind,selector])=>[kind,get(selector).getAttribute('aria-expanded')]))
|
||||
async function render(message:any){await act(async()=>root.render(<MessageBubble message={message}/>))}
|
||||
async function click(selector:string){await act(async()=>get(selector).dispatchEvent(new MouseEvent('click',{bubbles:true})))}
|
||||
async function main(){
|
||||
let message:any={id:'b01-typed-part-repro',role:'assistant',createdAt:1,content:'',status:'streaming',parts:[]}
|
||||
const streamingEvents=[
|
||||
{type:'text',delta:'Draft one'},
|
||||
{type:'part',part:{type:'reasoning',id:'r',text:'Thought',finished:true}},
|
||||
{type:'text',delta:'Draft two'},
|
||||
{type:'part',part:{type:'plan',plan:{id:'p',title:'Plan',steps:[]}}},
|
||||
{type:'part',part:{type:'task',task:{id:'x',title:'Task',status:'success',summary:'Task result'}}}
|
||||
]
|
||||
for(const event of streamingEvents)message=applyAssistantEvent(message,event)
|
||||
const input=JSON.parse(JSON.stringify(message))
|
||||
await render(message)
|
||||
const initially=state()
|
||||
await click(selectors.plan);await click(selectors.task)
|
||||
const selected=state()
|
||||
assert.deepEqual(selected,{plan:'false',task:'false'})
|
||||
const terminalEvent={type:'done',content:'Corrected final prose',tools:[],turnDurationMs:1000}
|
||||
const finished=applyAssistantEvent(message,terminalEvent)
|
||||
await render(finished)
|
||||
const after=state()
|
||||
const result={
|
||||
testedRevision:process.env.B01_PROBE_REVISION,
|
||||
runtime:{node:process.version,platform:process.platform,react:require('react/package.json').version,jsdom:createRequire(process.cwd()+'/package.json')(domModule+'/package.json').version},
|
||||
input,terminalEvent,outputParts:finished.parts,
|
||||
ariaExpanded:{initially,afterUserCollapse:selected,afterTerminalCorrection:after},
|
||||
expectedAfterTerminalCorrection:selected,
|
||||
retainsUserChoices:JSON.stringify(selected)===JSON.stringify(after)
|
||||
}
|
||||
console.log(JSON.stringify(result,null,2))
|
||||
await act(async()=>root.unmount());dom.window.close()
|
||||
}
|
||||
main().then(()=>process.exit(0)).catch(error=>{console.error(error);dom.window.close();process.exit(1)})
|
||||
`
|
||||
const outfile=`.tmp/b01-readonly-review/typed-part-repro-${baseline?'baseline':'51531dc'}.cjs`
|
||||
await build({
|
||||
stdin:{contents:source,sourcefile:'b01-typed-part-repro.tsx',loader:'tsx',resolveDir:process.cwd()},
|
||||
outfile,bundle:true,platform:'node',format:'cjs',jsx:'automatic',loader:{'.css':'empty'},logLevel:'warning',
|
||||
plugins:baseline?[{name:'read-baseline-product-modules',setup(build){build.onLoad({filter:/\.tsx$/},args=>{
|
||||
const relative=path.relative(process.cwd(),args.path).split(path.sep).join('/')
|
||||
if(!baselinePaths.has(relative))return
|
||||
baselineModulesLoaded.push(relative)
|
||||
return {contents:execFileSync('git',['show',`${revision}:${relative}`],{encoding:'utf8'}),loader:'tsx',resolveDir:path.dirname(args.path)}
|
||||
})}}]:[]
|
||||
})
|
||||
const result=spawnSync(process.execPath,[outfile],{encoding:'utf8',timeout:120000,env:{...process.env,B01_PROBE_REVISION:revision}})
|
||||
const output=`.tmp/b01-readonly-review/typed-part-repro-${baseline?'baseline':'51531dc'}.json`
|
||||
if(result.stderr)process.stderr.write(result.stderr)
|
||||
if(result.status!==0){process.stderr.write(result.stdout);throw result.error||new Error(`probe exited ${result.status}`)}
|
||||
if(baseline && baselineModulesLoaded.length !== baselinePaths.size) throw new Error('Baseline override did not load every changed React module')
|
||||
const parsed=JSON.parse(result.stdout)
|
||||
parsed.verificationMethod = baseline ? 'Bundled every changed React module from git show 37ddb2c; remaining product code equals tested checkout for this path' : 'Bundled fixed 51531dc checkout product modules'
|
||||
parsed.baselineModulesLoaded=baselineModulesLoaded
|
||||
writeFileSync(output,JSON.stringify(parsed,null,2)+'\n')
|
||||
console.log(JSON.stringify({evidence:output,testedRevision:revision,ariaExpanded:parsed.ariaExpanded,inputParts:parsed.input.parts.map(part=>part.type),outputParts:parsed.outputParts.map(part=>part.type),retainsUserChoices:parsed.retainsUserChoices},null,2))
|
||||
|
||||
|
||||
if(process.argv.includes('--assert') && !parsed.retainsUserChoices) process.exitCode=1
|
||||
Reference in new issue
Block a user