提交前确认 / Pre-submit checklist
运行环境 / Environment
DSH Web(浏览器访问)/ DSH Web (browser access)
DSH Web 版本 + 浏览器 / DSH Web version + Browser
DSH 0.1.7-rc2 Chrome 153 (windows)
Desktop 实现仓库 / Desktop repo(源头 / upstream)
No response
插件版本 / Plugin version
@latest
类别 / Category
🐛 Bug(功能异常 / Something is broken)
描述 / Description
维护者你好,首先很喜欢 dsh-better-sidebar,交互体验比默认的好不少,感谢付出 🙏。接入我们项目(capital-generation,一个跑在 DSH
上的数据/图表插件)时遇到一个打开图表的兼容问题,复盘后定位到是交付物路径解析口径的差异,想反馈一下,麻烦看看是否方便适配。
现象
- 图表出图后,从会话收尾的"本轮交付"行点开那张自包含 chart.html:
- 用官方 document preview → 正常渲染;
- 用 better-sidebar → 右侧空白,并返回:
{"ok":false,"error":{"code":"fs-error",
"message":"cannot resolve target "/capital-analysis/charts/ch_xxx/chart.html":
ENOENT: no such file or directory, realpath '/capital-analysis/charts/ch_xxx/chart.html'"}}
- 同一张图,直接用浏览器打开磁盘上的文件也正常(说明文件确实存在、内容没问题)。
根因(我这边读代码后的判断,仅供参考)
注意报错里那个前导 /。我们的交付事件(官方 deliverables/presented)里 files[].path 是工作区相对路径
capital-analysis/charts//chart.html——这是官方契约要求的:绝对路径会被「Presented file has no verified Host
path」这一关拒绝,所以我们也没法改成绝对路径发出去。
官方 sidebar 会拿产出会话的 session.cwd 作为 workspace root 去 join 这个相对路径,落到真实位置 /capital-analysis/.../chart.html。而 better-sidebar
似乎是拿 /(或自身进程 cwd)当 root 去 realpath,于是解析成 /capital-analysis/... → ENOENT。
另外点击被路由到了 #/capital-charts/,但我们插件其实没有这个页面:我们只注册了①一个 tool.call.toolview['render_chart'] 内联卡片,②一个序列数据旁路
/capital-charts/.json(返回的是 series.json 且接了平台认证围栏 connection.requestRejection,非受信 origin 会 401/403)。呈现目标应该是那个自包含的
chart.html,不是去取数据旁路。
建议的修法(哪一处更合适由你定)
- 解析交付物路径时,走和官方一致口径:workspaceFiles.stat({ sessionId, workspaceRoot: session.cwd }),以产出会话的 cwd 为根 join 相对路径,而不是
/。这是最关键的一点。
- 点开 .html 交付物时,按自包含 HTML 渲染(官方那种 script-enabled iframe 即可),不要路由到 #/capital-charts/。
- 如果你们的定位就是"只服务本地同机文件",那么至少在第 1 点补齐 workspace-root 解析,也能覆盖大多数插件按官方契约发的相对路径。
复现/自查
- 相对路径 + 以 / 为 root join → 必然多出前导 /;本机 / 下并无 capital-analysis 目录,可对照排查。
如果需要,我可以提供我们这侧交付事件的确切载荷样例、render_chart 相关源码位置,或者一起验证修复效果。再次感谢,辛苦了!
要我再补一版更短的、或者附一段"我们侧载荷长这样"的 JSON 样例给对方,随时说。
补充信息 / Additional context
No response
提交前确认 / Pre-submit checklist
运行环境 / Environment
DSH Web(浏览器访问)/ DSH Web (browser access)
DSH Web 版本 + 浏览器 / DSH Web version + Browser
DSH 0.1.7-rc2 Chrome 153 (windows)
Desktop 实现仓库 / Desktop repo(源头 / upstream)
No response
插件版本 / Plugin version
@latest
类别 / Category
🐛 Bug(功能异常 / Something is broken)
描述 / Description
维护者你好,首先很喜欢 dsh-better-sidebar,交互体验比默认的好不少,感谢付出 🙏。接入我们项目(capital-generation,一个跑在 DSH
上的数据/图表插件)时遇到一个打开图表的兼容问题,复盘后定位到是交付物路径解析口径的差异,想反馈一下,麻烦看看是否方便适配。
现象
{"ok":false,"error":{"code":"fs-error",
"message":"cannot resolve target "/capital-analysis/charts/ch_xxx/chart.html":
ENOENT: no such file or directory, realpath '/capital-analysis/charts/ch_xxx/chart.html'"}}
根因(我这边读代码后的判断,仅供参考)
注意报错里那个前导 /。我们的交付事件(官方 deliverables/presented)里 files[].path 是工作区相对路径
capital-analysis/charts//chart.html——这是官方契约要求的:绝对路径会被「Presented file has no verified Host
path」这一关拒绝,所以我们也没法改成绝对路径发出去。
官方 sidebar 会拿产出会话的 session.cwd 作为 workspace root 去 join 这个相对路径,落到真实位置 /capital-analysis/.../chart.html。而 better-sidebar
似乎是拿 /(或自身进程 cwd)当 root 去 realpath,于是解析成 /capital-analysis/... → ENOENT。
另外点击被路由到了 #/capital-charts/,但我们插件其实没有这个页面:我们只注册了①一个 tool.call.toolview['render_chart'] 内联卡片,②一个序列数据旁路
/capital-charts/.json(返回的是 series.json 且接了平台认证围栏 connection.requestRejection,非受信 origin 会 401/403)。呈现目标应该是那个自包含的
chart.html,不是去取数据旁路。
建议的修法(哪一处更合适由你定)
/。这是最关键的一点。
复现/自查
如果需要,我可以提供我们这侧交付事件的确切载荷样例、render_chart 相关源码位置,或者一起验证修复效果。再次感谢,辛苦了!
要我再补一版更短的、或者附一段"我们侧载荷长这样"的 JSON 样例给对方,随时说。
补充信息 / Additional context
No response