Repository navigation
dsh-coding-sidebar 1.0.33
dsh-coding-sidebar 1.0.33
定时任务轮尾卡「打开」不再展开原生右栏列——详情落到自家「任务计划」tab;同版修掉
预览期的remote.schedule取用报错,以及「带 meta 的 open 落进收起面板」。
新增:定时任务预览(「任务计划」tab 承接)
- 背景:0.1.7-rc.2 的定时任务轮尾卡「打开」会展开原生右栏列——该列一展开就在主
对话区旁留一大片空白(与 dsh-context 那次同源)。产品要求屏蔽该列,把详情落进自家侧边栏。 - 设计——数据面与导航面分离:
- 引擎只传身份:
openTab({type:'plans', id:'plans', meta:{kcScheduleTask:{sessionId,taskId}}}),
再补一次updateTab(plans是 single tab,去重只聚焦、不写 meta——不补这次,
第二条任务的「打开」仍会显示上一条)。 - 数据由本插件自取:
ctx.remote.schedule.list({sessionId})后按 id 命中。该 remote 面
按可选查找、绝不写进 inject:上游默认不挂 schedule 插件,缺席时必须保留计划文档
列表、只报「读不到这条任务」,不能让整个插件挂不起来。插件缺席时引擎回落原生右栏 tab。
- 引擎只传身份:
- 改动:
- 新增
src/client/ScheduleTaskPreview.tsx:预览卡(标题 / 频率 / 下次触发 / 提示词)readScheduleTaskTarget(meta)守卫(无标记即不占位,页面与原来完全一致);
every按秒/分/时归一,其余按 kind 命名。
PlansView新增ctx/scheduleTask/onDismissSchedule三个 props,预览渲染在
文档列表之上。plansdescriptor 读tab.meta接预览;onDismissSchedule用meta: {}清标记
——updateTab会丢弃 undefined 字段,写 undefined 等于没清。- locales:zh + en 各补 18 键(其余 19 个语言文件是
Record<string,string>,不参与键齐性);
CSS 新增.schedPreview*块,全部走既有--dsw-alias-*token,零硬编码颜色。
- 新增
修复
remote.schedule 改用延迟装配
- 现象:预览渲染时抛
读取任务失败: cannot get property "remote.schedule" without inject。 - 根因:
ctx.remote是可追踪服务代理,深层路径(remote.schedule)会被整体
校验 inject,直接读属性即抛;而把该面写进本插件inject清单,又会让它在上游默认
(不挂 schedule 插件)的载具上整体不挂载——Cordis 的 inject 是 all-required。 - 处置:改走
ctx.get延迟装配,缺面时降级为「读不到这条任务」。
带 meta 的 openTab 归入「内容型」
- 现象:预览已能取到任务,但面板收起时点轮尾卡「打开」看不到任何变化。
- 根因:只有带
path/url的 open 才走「内容型」分支并自动展开面板,纯type+meta
被判成 type-only ⇒ tab 开在收起的面板里,表现成「点了没反应」(activateTab不展开,
togglePanel又不是公开 API,引擎侧无解)。 - 处置:判据扩到
seed.meta——带 meta 的 open 就是「带着要显示的内容来的」,与
path/url同类,理应落在可见处。影响面已核:+ 菜单(本就在面板内,展开幂等)、
agent 终端自动开 tab(不传 meta)、sidechat 的meta:{threadId}(走descriptor.createTab,
不经过seed.meta)。附带治好 sidechat 自动开 tab 却落在收起面板的同类潜在缺口。
分发:本版必须 bump 版本
- 现象:引擎的重定向生效了(「任务计划」tab 被打开),但面板里没有预览——根因不在
代码,在分发。 - KCoder 的 bundle 物化是版本驱动的:
staleTarget = !intact || 版本不可读 || gt(srcVersion, dstVersion)。「1.0.32 == 1.0.32」
⇒ 跳过拷贝 ⇒ profile 里那份实体仍是旧构建(kcScheduleTask0 命中),运行的插件里根本
没有预览代码。 - 故
package.json→ 1.0.33(lib随pnpm build重建,构建期注入的
SIDEBAR_SERVICE_VERSION同步为 1.0.33)。 - 教训(已写进 README 开发清单):只要物化是版本驱动的,插件改动要到达已装应用就必须
bump 版本;否则代码在bundle/里、不在 profile 里,表现成「改了但没生效」,而
typecheck / 单测 / 产物检查全绿。
文档
- README「本地开发」补三条跨层默认语义:可选面只能走
ctx.get/ctx.inject;插件改动必须
bump 版本;程序化openTab要用户看见就必须带meta。完整版见 KCoder 仓
docs/plugin-dev-checklist.md。
兼容性说明(重要)
- 本版数据缝仍是 0.1.7 单线,沿用 1.0.32 的
projectionsBySession/refreshProjections/
jobs客户端面;0.1.6 系宿主请继续使用 1.0.30。 package.json的 peer 范围仍声明^0.1.6-alpha.2,与实现的 0.1.7 单线存在口径差
——1.0.32 已提出该口径差,本版未动(建议后续收口到^0.1.7-alpha.1,或补 0.1.6 回退分支)。
验证
- 发布前在 HEAD(
7d4a451)上重跑:typecheckexit 0;testALL PASS;smoke通过;
sync:check镜像对账通过;check:artifacts175 文件字节不变 ✓。 - 产物缝核对:
lib/client.js/lib/client-registry.js内kcScheduleTask与
schedPreviewTitle就位,版本常量1.0.33同步;本仓 / dsh-plugins 镜像 / KCoder bundle
三份一致(后两仓已同批提交推送)。 - 行为面:
tests/是纯 helper 级(无openTab的行为测试),故「预览可见」「面板自动展开」
只有类型 + 产物两道静态证据,由作者 dev 实机确认。 - 环境口径提醒:
check:artifacts的重建会继承 shell 环境。若 shell 带
NODE_ENV=development(DSH 侧车 shell 即如此),rolldown 会把react-is的
development 副本内联进lib/client-office.js(+77KB 且含$1改名漂移),闸门会误报
「产物不可复现」。发版前请用env -u NODE_ENV pnpm check:artifacts,或先收口脚本(见遗留)。
遗留
- 作业缝的在线验证仍未做(1.0.32 遗留项):新起的侧车作业注册表为空(作业是进程内的),
该半已做代码 / 产物 / 类型三重核对,待现场有活作业时确认。 scripts/check-artifacts.mjs未固定NODE_ENV,存在上述误报面——建议在重建三步里显式
env: { ...process.env, NODE_ENV: 'production' }。