Skip to content

Releases

v0.1.2

Choose a tag to compare

@bvcvb bvcvb released this 23 Sep 09:02

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.json now 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 both zh and en dictionaries and an
    English UI shows Tidy / 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

Choose a tag to compare

@bvcvb bvcvb released this 22 Sep 15:21

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+) — 两处契约变更叠加:
    1. conversation.view 不再是 session-scope,sessionId 改由 inject 回调传入;
    2. 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

Choose a tag to compare

@bvcvb bvcvb released this 22 Sep 06:52

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 one user/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 an append into 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, with All / Active / Archived filters and counts.
    • Archive and restore any conversation. Restore is implemented against the registry's
      durable state (dsh ships archiveSession but 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 carry confirm: true.
    • Move to another workspace: rewrites the artifact's header cwd (keeping version) 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.
  • 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. context is separated from user because dsh logs human
    prompts and harness injections under the same user/message event type (a sampled session was
    {user: 4, plugin: 10}).
  • /baize-session command — info | take <seq…> | list | drop | to <path> | add <id>, driving the
    same runtimes as the panel.
  • /baize-session.api on the host web server: GET for both panes, POST ops take, 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 official clientBundle tsdown preset
    is not published; it is covered by test/client.smoke.mjs, which renders the real bundle and asserts
    both panes' behaviour.