Repository navigation
dsh-coding-sidebar 1.0.23
dsh-coding-sidebar 1.0.23
三处原生侧栏漏网点修复 + 浏览器 tab 按上游原生实现对齐(沙箱、导航状态机、
读取作用域)。
变更
一、点聊天里的 http(s) 链接弹原生侧栏空白区(现场 2026-09-19)
上游 ui-chat 的 openExternalLink 直接发
ctx.sidebarRight.openTab('browser', { params: { url } })——原生 browser 类型
总已注册,这条开法不经本插件的 openResource 门;且文档级链接接管只
preventDefault 不阻断传播,React 根监听照跑上游 handler(「我们开一个 + 原生开
一个空面板」)。三处修:
openpath-intercept.ts新增wrapNativeBrowserOpen:认领kind=browser且
params.url为 http(s) 的打开,改开自家 browser 页签;其余 kind 原样透传、
dispose 还原;intercept.tsx在既有ctx.inject(['sidebarRight'])里一并装配;link-intercept.ts补stopPropagation+stopImmediatePropagation(capture
阶段挂在 document 上,缺一即双开);browserInterceptHttps默认false → true——当年关掉的理由「https 站点多拒绝
嵌入」已有探测 + 说明面板兜底,而任何落回原生都是空白。
二、浏览器 tab 按上游原生实现升级
- 沙箱对齐:常规站点一律带
allow-same-origin(此前只给白名单本机地址,真实
站点因不透明源跑不起来——没有 Cookie / 存储 / 模块)。页面保持自己的
origin、与界面跨源;代价是界面自身 origin 必须拒绝(帧同源即可读界面存储 /
调/api),normalizeBrowserUrl新增 app-origin 拒绝,另补 credentials 拒绝
与 16KB 长度上限,并统一BrowserFailureReason词表; - 新增
browser-nav.ts:上游BrowserNavigation的依赖无关移植(revision 制
加载生命周期、empty / loading / known / unknown、同址提交 = 刷新、页面内跳转
判 unknown → 地址栏「地址已变」+ 前后退门控关闭 + 限制说明); BrowserView接入状态机:新增加载失败横幅(iframe error)与逐因拒绝文案;
live 实况、嵌入探测面板、沙箱临时解锁条等自有能力全部保留。
三、跨工作区 / 工作区外预览必失败(path "…" is outside workspace)
- 上游契约(
packages/api/workspace-files的 read 文档)明确「files outside it
are allowed」,我们的宿主桥多了一道上游没有的 containment 守卫,故 agent 写到
/tmp 的产物、别仓绝对路径一律 403。修:新增resolveReadPath(仍解析 symlink、
仍要求绝对路径,只是不再强制 cwd 之内),fs.read / 媒体预览 / 缩略图三条读取
路由改用它;写入、文件树、计划外开仍保留围栏(越界写是另一类风险); - 另修「另一个会话的相对路径」:
openSidebarFile把{ readSessionId, readCwd }
写进页签 meta,新增editor-read-scope.ts的readScopeOf解析读取作用域
(半截 / 畸形记录回落旧行为),EditorHost 全部读取路径(fsRead / viewer.load /
mediaUrl / 文件树 / 路径输入 / 二进制下载)改用 readScope——页签仍落在当前会话
(可见),读取用文件所属会话的 cwd。
兼容性说明
- 链接接管与浏览器开法改为全面认领(落回原生即空白),故
browserInterceptHttps
默认改为true; - 读取围栏放宽仅限读取路径;写入、文件树与计划外开行为不变;
- 已含 1.0.18 ~ 1.0.21 的 0.1.6-alpha.2 适配。
验证
typecheck 0;tests ALL PASS(新增 50 条:认领语义 8 / 链接接管独占性 7 / 地址策略
10 / 导航状态机 22 / 读取作用域 10);build + smoke 绿;活体基线(修前)复现
fs.read /tmp/… → 403 outside workspace,修后复验待宿主重启(提交信息原文)。
真源提交 39bfd06。补录说明:本文件于 v1.0.31 发版时按提交信息回溯补齐。