Repository navigation
Releases
Releases · bvcvb/dsh-baize-session
v0.1.2
Documentation only: no source or behaviour changed. Published so that the npm package page carries the
current READMEs and screenshots.
Docs
- Added the 工作区 (Workspace) pane screenshot (
assets/003-workspace-panel.png) and referenced it
from both READMEs.screenshots.jsonnow lists three images, which is what the plugin catalogue's
carousel reads. - Re-shot both 整理 (Tidy) screenshots (
001-tidy-panel.png,002-message-detail.png) at a
consistent size. The file names are unchanged, so the READMEs needed no edit for these two. - Moved the message-detail screenshot out of The panel and into the Tidy section, so each
Quick Start section now carries its own screenshot. - Fixed the UI terms in the English README. It used the Chinese UI words (整理 / 工作区 / 归档 /
迁移 / 空对话 / 进行中 …) even though the browser half ships bothzhandendictionaries and an
English UI showsTidy/Workspace/Archive/Move/empty/running/ … — 27 occurrences
now match what the UI actually renders. The host side has no translation layer, so the injected
context block and the refusal messages stay Chinese; the English README now says so explicitly
instead of leaving them looking untranslated. - Screenshot note: all three images were taken with a Chinese UI, so the English README still shows a
Chinese-language UI in its pictures.
v0.1.1
0.1.1 — 兼容 dsh 0.1.5 / 0.1.7 的三处契约变更
dsh 从 0.1.3-alpha.2 起重构了会话持久化,0.1.5 起又调整了客户端 seat 契约与 Session 事件 API。
本次修复让插件在 0.1.1-rc.2 / 0.1.5-rc.2 / 0.1.7-alpha.1 三条线上都可用。
Fixed
TypeError: store.inspect is not a function(0.1.7-alpha.1) — 新版把SessionPersistence换成
SessionHandle 模型;读取改走运行时能力探测(open(id,'read')→handle.header/read()),旧栈inspect保持不变。- 「整理」页静默空白(0.1.5+) — 两处契约变更叠加:
conversation.view不再是 session-scope,sessionId改由inject回调传入;Session.events属性变成snapshotEvents()方法,导致每个会话都读成 0 条消息 →
blank=true→ 候选被全部过滤(且不报错)。
Compatibility
- 已在 dsh
0.1.5-rc.2与0.1.7-alpha.1上实测(读路径 200;live 会话返回其 24 条消息);
0.1.1-rc.2的原有代码路径未受影响。
Known limitation
- 跨工作区迁移在
0.1.7-alpha.1上不可用(locate/readRaw/coordinator/tracker已被移除且无替代),
现给出明确中文提示而非静默失败。
v0.1.0
First release. Two panes in one conversation tab: move context between conversations, and manage
the conversations of a workspace.
Added
- 整理 pane — relocate context. Pick messages out of the conversation you are in and carry them
into another conversation: an existing one, or a brand-new one in any workspace. The selection is
rendered as oneuser/message(source.kind='plugin',plugin='baize-session') rather than
replayed as events, because the session store requires a seed to be contiguous from seq 0 and an
arbitrary selection is not a valid prefix. The block ends with当前工作区是 <path>。请在此基础上继续。
so the receiving model knows the quoted history came from other directories. +on every assistant reply (conversation.chat.assistant-actions) to collect material without
leaving the chat flow. The basket is keyed per conversation.- Two destinations: a new conversation (created with the content as its seed — a seed because dsh
persists on checkpoints, so anappendinto a fresh session never reaches disk), or an append into
a conversation that is open. - 工作区 pane — workspace management. Lists every conversation of the current workspace, archived
ones included, withAll / Active / Archivedfilters and counts.- Archive and restore any conversation. Restore is implemented against the registry's
durable state (dsh shipsarchiveSessionbut no inverse). - Delete for real: agent teardown, live-store detach (so every client drops the row), removal
from the workspace ledger and the archive set, then the artifact directory. Gated twice — only an
archived conversation can be deleted, and the request must carryconfirm: true. - Move to another workspace: rewrites the artifact's header
cwd(keepingversion) through a
temp file and atomic renames, then swaps the ledger, then updates the in-memory pointers (live
write state, session header, registry indexes) — with the original bytes restored if any step
fails. Works for conversations that are still open, including ones with an agent attached.
Refused for archived conversations and subagent children. - Multi-select with a batch bar for the same four actions, reported per id so one refusal does
not abort the rest.
- Archive and restore any conversation. Restore is implemented against the registry's
- Conversation kind and state as two independent columns: kind
空对话 / 已对话 / 子代理(has a
conversation started?) and state进行中 / 已打开 / 未打开 / 已归档(where does it live now?). They are
separate because an empty conversation can be in progress — an agent is attached from creation,
before the first prompt. - Author badges on message rows:
user/assistant/context/tool, coloured from the
official Trajectory view's kind tags.contextis separated fromuserbecause dsh logs human
prompts and harness injections under the sameuser/messageevent type (a sampled session was
{user: 4, plugin: 10}). /baize-sessioncommand —info | take <seq…> | list | drop | to <path> | add <id>, driving the
same runtimes as the panel./baize-session.apion the host web server:GETfor both panes,POSTopstake,untake,
drop,estimate,relocate,archive,restore,deleteSession,moveSession.- Token budget (
maxInjectTokens, default 8000): a selection above the budget is refused with the
measured size instead of being silently truncated.
Notes
- The plugin keeps no state of its own: the basket is in-memory, and everything it touches
(session artifacts, the workspace registry) belongs to dsh. - The browser half is hand-authored (
lib/client.js) because the officialclientBundletsdown preset
is not published; it is covered bytest/client.smoke.mjs, which renders the real bundle and asserts
both panes' behaviour.