liangmianya/dsh-synapse
liangmianya/dsh-synapseDeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
配合仓库的原生 Desktop 壳补丁,为 DSH 会话菜单添加“在新窗口中打开”。
Adds Open in new window to a Session row's context menu in the DSH desktop shell, and drives the landing flow inside the window it opens.
The desktop shell must carry the R2 session-window patch
(dshSessionWindow, protocol version 2). Without it the plugin activates but
renders nothing: every entry point is guarded by
globalThis.dshSessionWindow?.version === 2.
sidebar.workspaces.session.menu.item gains one entry, id
open-in-new-window, order 350.dshSessionWindow.openSessionWindow(sessionId, displayTitle).
The shell creates the window, records a pending target for it, and answers
{ ok: true, requestId } or { ok: false, code }.uiWorkspace.openSession, confirms,
and acknowledges.OPEN_FAILED, WINDOW_LIMIT, TIMEOUT, INVALID_SESSION, SESSION_NOT_FOUND.
Each shows one user-readable notice; nothing is retried.
A manual session switch cannot be distinguished from a programmatic one
(A-08 question 11), so the plugin does not try: there is no USER_NAVIGATED
branch, and the record says so.
node scripts/build.mjs # syntax check + copy src/client/index.js -> lib/client.js
node scripts/check.mjs # static assertions from R2-RUNBOOK.md C-04
The client half is plain ESM importing only react and the DSH primitives, so
there is no transpile step.