现象
Arkloop Desktop Dev 打开一个较长会话后,页面先正常显示约一秒,随后整个内容区变成空白/黑屏。Command+R 重新加载后会重复同样现象。
同一时间 channel/worker 仍在工作,Telegram/QQ 入站消息仍能处理。
环境
- Arkloop Dev: 26.3.27
- macOS Desktop / Electron dev
- 触发区域:右侧
ConversationGraphPanel / 分支图面板
报错
Renderer console 中出现:
RangeError: Maximum call stack size exceeded
at .../dagre.js
at dfs (...)
React 随后提示:
An error occurred in the <ConversationGraphPanel> component.
本地排查数据
抓到的 graph API 请求返回 200:
- threads: 1
- graph nodes: 1832
- edges: 1831
- self edges: 0
- missing edges: 0
- detected cycles: 0
这次样本是长线性会话图。当前后端 maxThreadGraphMessages = 2000,这个上限仍可能触发前端 dagre 递归布局栈溢出。
预期行为
分支图太大或布局失败时,应该只让分支图面板降级、显示错误态或使用 fallback 布局,不应该清空整个 Arkloop 前端。
实际行为
ConversationGraphPanel 抛错后,React root 被清空,用户看到整个页面空白。
可能修复方向
- 在调用
dagre.layout 前增加大图 guard。
dagre.layout 抛错时 fallback 到简单迭代布局,或显示“图过大,暂不渲染”。
- 给
ConversationGraphPanel 或右侧面板加 error boundary,避免单个面板炸掉整个 app。
- 增加长线性 graph 的测试用例,例如 1800+ 节点、接近后端 2000 message cap 的情况。
本地临时验证过一种修法:小图继续用 dagre,大图或 dagre 抛错时走简单 fallback layout;1832 节点长链测试和实际窗口 reload 均通过。
现象
Arkloop Desktop Dev 打开一个较长会话后,页面先正常显示约一秒,随后整个内容区变成空白/黑屏。Command+R 重新加载后会重复同样现象。
同一时间 channel/worker 仍在工作,Telegram/QQ 入站消息仍能处理。
环境
ConversationGraphPanel/ 分支图面板报错
Renderer console 中出现:
React 随后提示:
本地排查数据
抓到的 graph API 请求返回 200:
这次样本是长线性会话图。当前后端
maxThreadGraphMessages = 2000,这个上限仍可能触发前端dagre递归布局栈溢出。预期行为
分支图太大或布局失败时,应该只让分支图面板降级、显示错误态或使用 fallback 布局,不应该清空整个 Arkloop 前端。
实际行为
ConversationGraphPanel抛错后,React root 被清空,用户看到整个页面空白。可能修复方向
dagre.layout前增加大图 guard。dagre.layout抛错时 fallback 到简单迭代布局,或显示“图过大,暂不渲染”。ConversationGraphPanel或右侧面板加 error boundary,避免单个面板炸掉整个 app。本地临时验证过一种修法:小图继续用
dagre,大图或dagre抛错时走简单 fallback layout;1832 节点长链测试和实际窗口 reload 均通过。