Skip to content

Releases: orangeofcarl0-sys/dsh-fresh-start

v1.2.4 — complete conversation turn seed

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 23:54

Fix

seed 改为完整对话轮:turn/start → step/start → user/message(总结请求)→ assistant/message(摘要)→ step/end → turn/end。

此前 seed 是「completed turn 但无 assistant 回复」,conversation 渲染成一条孤立的用户消息 + 空 turn footer,表现为新会话「无法载入对话历史」。

Verified

  • smoke 23 断言 + client 8 断言 ALL PASS
  • 真实 dsh-session 验证 blank=false、真实 conversation definitions 验证 replaceWindow OK

v1.2.3 — new session visible in sidebar history

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 23:25

Fix

新会话 seed 原来只有一条 summary user/message、没有 turn/start,被 dsh 的 sessionBlank() 判定为 blank,blank 会话不进左侧历史栏(只作 New Session 占位)。

修复:seed 改为完整轮次 turn/start → user/message → turn/end,sessionBlank 变为 false,新会话正常显示在历史栏。

Verified

  • smoke 23 断言 ALL PASS
  • 用真实 dsh-session 验证新 seed 结构 blank=false

v1.2.2 — attach new session to workspace

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 23:15

Fix

host 侧 ctx.agents.create 不像 client 的 sessions.create RPC 那样自动 workspace.attachSession,导致新会话未归属 workspace、侧栏分组找不到。修复:创建后按 cwd resolveByPath 找到 workspace 并 attachSession

Verified

  • smoke 22 断言 + client 8 断言 ALL PASS

v1.2.1 — fix client bundle registration

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 23:05

Fix

client.js 改为浏览器 bundle 注册格式 window.__ModuleLoader__.load({ id: 'dsh-fresh-start', factory }),修复 v1.2.0 的 "loaded without registering" 错误。

Verified

  • client 8 断言 + smoke 18 断言 ALL PASS
  • 本机 /plugins/dsh-fresh-start/client.js 返回 __ModuleLoader__.load 格式

v1.2.0 — auto-navigate after /fresh

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 22:58

Change

/fresh 现在会自动跳转到新会话(此前只归档、UI 停留在已归档的旧会话)。

根因:dsh 的「当前会话」是 client(前端)状态,host 命令无法导航(CommandResult 只保留 kind+text,sessionId 被丢弃)。

方案(双端插件):

  • hostlib/index.js):新会话 meta.parentSession = 老会话id
  • clientlib/client.js,新增):监听归档广播 host/archived-sessions-changed → 找到 parentId === 归档会话 的新会话 → ctx.sessions.open 自动跳转;含时序兜底(新会话列表同步滞后归档帧时 pending 补跳)

package.json:exports['./client'] + dsh.client {platform: web, inject: [dsh-client-runtime]}

Verified

  • smoke 18 断言 + client 6 断言 ALL PASS
  • 本机部署:/plugins/dsh-fresh-start/client.js 返回 200,boot manifest 含 dsh-fresh-start

v1.1.0 — direct context summarization

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 20:43

Change

Replaced the compaction-engine summary (structured checkpoint instruction + token-shrink comparison, which fails on ordinary conversations with 'no useful summary') with direct extraction of the full context dsh uploads to the LLM:

  • session.requestHeader() (system/tools) + session.deriveMessages() (full message history)
  • one simple summarization instruction → natural-language summary
  • summary seeded into the new session as its opening user message

Summary failure now degrades gracefully (new session without summary + archive), instead of failing.

Verified

  • 20 tests ALL PASS
  • [fresh-start] installed: /fresh command registered

v1.0.2 — fix agents/workspaceRegistry inject

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 20:31

Fix

  • new session FAILED (cannot get property agents without inject) → inject agents
  • archive skipped (workspaces service unavailable) → workspace service is named workspaceRegistry (not workspaces)

About 'compaction skipped (no useful summary)'

That's the compaction engine's own summarization failure (LLM stream failed or empty summary), not a plugin bug. The plugin degrades gracefully — it still starts the new session and archives even when summarization fails.

v1.0.1 — fix /fresh not appearing in command list

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 20:19

Fix

/fresh never appeared in the command list due to two scope issues:

  1. compaction engine scope — it's a per-agent preset-mount service, not a global ctx.compaction a profile-bundle plugin can reach. Now uses ctx.agentPresets.serviceFor(agent, 'compaction') (same as auto-compact).
  2. command registration — was registered inside a ctx.inject(['compaction']) fiber that never activated (isolate scope), so the command never entered the global layer. Now registered in root ctx via ctx.effect + ctx.commands.register.

Verified

  • [fresh-start] installed: /fresh command registered
  • 19 tests ALL PASS

v1.0.0 — /fresh command

Choose a tag to compare

@orangeofcarl0-sys orangeofcarl0-sys released this 15 Aug 19:54

What

/fresh — one command to retire a large session and keep working:

  1. summarize via ctx.compaction.compactNow (reuses dsh's manual compaction)
  2. start a new session inheriting the old session's cwd + agent preset
  3. archive the old session (frees its live event tree — the ~700MB/session OOM driver)

Each step degrades independently; a busy/cancelled compaction still starts the new session and archives.

Install

dsh plugin --profile web add github:orangeofcarl0-sys/dsh-fresh-start

17 tests ALL PASS. Verified on dsh 0.1.0-rc.6.