Releases: kirkchinese/CiteCiter
Release list
CiteCiter v0.2.1
CiteCiter v0.2.1
v0.2.1 fixes a later-turn regression in durable Citation Threads.
Fixed
- Accept an idempotent
/permission read-onlycommand when the child session's latest owned permission preset and sandbox mode are alreadyread-only. - Preserve fail-closed behavior when the initial preset/sandbox state is missing, a command fails, or a later write-capable downgrade is present.
- Prevent a genuine second or later user question from being rejected with
permission command succeeded without applying read-only.
DSH emits permission/preset and sandbox/mode during the first switch. Repeating the same switch on a later turn may emit only successful command/run and command/done events. CiteCiter now treats the effective durable child state as proof for that idempotent case rather than requiring duplicate state events.
Verification
- Focused suite: 29/29 passing tests, including the exact repeated-command event sequence.
- Browser smoke now submits a genuine follow-up in the recovered first Thread before creating a second Citation.
- The follow-up remained visible, the expected credential-less provider error occurred only after prompt submission, no preparation error appeared, and the source-session log size and nanosecond mtime remained unchanged.
Upgrade
dsh plugin --profile web add @kirkchinese/dsh-citeciter@0.2.1Restart DSH Web after upgrading, or use a runtime updater that verifies both the Host fiber and Client module.
CiteCiter v0.2.0
CiteCiter v0.2.0
Positioning release
CiteCiter is now a learning companion grounded in an exact point of a DSH conversation, not a one-shot selection explainer.
Select a completed assistant passage, ask a custom question, and continue in a durable Citation Thread. The Thread is isolated from the source session, recovers after refresh/restart, and can be switched, renamed, or archived.
Highlights
- External Host+Client Cordis package; no DSH-core patch and no custom agent loop.
- Exact completed-node fork from the real snapshot
anchorSeq. - SHA-256 Citation identity over source, anchor, UTF-16 range, selected text, and bounded surrounding evidence.
- Four model-input layers: scoped system Tutor, exact inherited history, durable untrusted Citation Context, and genuine user questions.
- Custom first question and real multi-turn follow-ups.
- Persistent launcher, parent-grouped picker, projection recovery, rename, switch, and workspace archive.
- Fail-closed read-only admission plus durable
command/done/preset settlement, Host lineage/fingerprint validation, strict Agent-scoped Typert Remote, and read-only tool execution guard. - Child-only transcript from
SessionHeader.seedLength; parent log remains untouched. - Existing conservative Markdown/KaTeX/code/SVG/HTML rendering and Cordis teardown guarantees retained.
Evidence
- Six-case, same-model A/B/C evaluation: four-layer variant C scored
138/144and led evidence discipline (23) and follow-up consistency (24). - Focused suite: 28 passing tests covering durable command settlement, creation order, exact question payloads, follow-ups, identity, completed-boundary validation, UTF-16 ranges, recovery, transcript boundary, archive, teardown, Typert, and rich-content safety.
- Fresh DSH
0.1.0-rc.7browser smoke with a deterministic source fixture:- rendered anchor
14:assistant-step1:1, realanchorSeq: 6; - persisted child
seedLength: 12and Citation context at seq22; - exact range
4..28and 64-character fingerprint; - rename and page/process recovery succeeded;
- second Citation switching and workspace archive succeeded;
- source log size and nanosecond mtime stayed unchanged.
- rendered anchor
The disposable smoke profile intentionally has no model credential. Its normal provider error occurs only after the read-only switch, strict Remote preparation, durable Citation Context, and genuine user message have all succeeded. Real model quality evidence is recorded separately in experiments/model-input-layering/.
Upgrade notes
dsh plugin --profile web add @kirkchinese/dsh-citeciter@0.2.0Restart DSH Web after installing or upgrading. v0.2 adds Host code plus ./typert and ./remote exports; replacing only lib/client.js is not sufficient.
The v0.1 one-shot prompt/state model is replaced. Existing v0.1 explanation children do not contain the v0.2 Citation projection and therefore do not appear in the new Thread launcher.
Known limitations
- Completed assistant flows only; no cross-message/cross-block selections.
- No unarchive UI or archived-session deduplication.
- Conservative fixed tool allowlist.
run_codeis retained for sandboxed analysis only: the current sandbox must fold toread-only, and every nested tool dispatch still crosses the authoritative guard. - No settings UI, complete localization framework, mobile-specific layout, or cross-platform browser CI.
- DSH remains prerelease software; later APIs may require adaptation.
CiteCiter v0.1.1
CiteCiter v0.1.1
CiteCiter v0.1.1 is a packaging correction for the first public release.
Fixed
- Add the DSH bundle declaration and packaged
cordis.patch.ymlrequired bydsh plugin --profile web add @kirkchinese/dsh-citeciter. - Add a package-level regression test for the bundle metadata, patch contents, publish allowlist, and public-package status.
The npm 0.1.0 artifact contained the runtime files but omitted dsh.bundle, so DSH installed it only as a plain profile dependency and did not mount CiteCiter automatically. That artifact remains available for transparency but is deprecated; use 0.1.1 or later.
Install
dsh plugin --profile web add @kirkchinese/dsh-citeciter@0.1.1CiteCiter remains in early development. APIs and compatibility may change, and issues and pull requests are welcome.
CiteCiter v0.1.0
CiteCiter v0.1.0
CiteCiter v0.1.0 is the first public release of the selection-scoped explanation sidebar for DeepSeek Harness Web.
Packaging notice: the npm
0.1.0artifact omitted the DSH bundle declaration and therefore installed only as a plain dependency. Use0.1.1or later for one-command DSH profile installation.
CiteCiter is still in early development. Many features need further work, and APIs, compatibility, and installation details may change. Issues and pull requests are welcome.
Highlights
- Select text inside a completed assistant reply and open the
Citer!context-menu action. - Resolve the selected conversation node through the parent snapshot and fork at its real completed-turn
anchorSeq. - Switch the forked child to
/permission read-onlyand fail closed unless DSH reports a successful matched command. - Keep all explanation prompts, model output, cancellation, and errors in the child session; CiteCiter does not write to the parent log.
- Stream the result in DSH's resizable details column with Markdown, code, KaTeX, safe SVG previews, and sandboxed network-free HTML previews.
- Dispose listeners, slot registrations, subscriptions, and in-flight lifecycle work with the owning Cordis fiber; support client-plugin HMR during development.
Compatibility
- Node.js
^22.19.0 || >=24.0.0 - DeepSeek Harness Web, tested with the public
0.1.0-rc.6DSH client packages - Cordis
^4.0.1 - React
^18.2.0
Known limitations
- Only assistant reply nodes in DSH Web are supported.
- Explanation children are durable DSH sessions and are not automatically deleted.
- DSH is still in a prerelease API cycle, so future versions may require CiteCiter changes.
- There is no settings UI, mobile-specific adaptation, or cross-platform browser CI yet.
- Unsafe or incomplete HTML/SVG fences intentionally fall back to Markdown code blocks.
Install
dsh plugin --profile web add @kirkchinese/dsh-citeciter@0.1.1Restart the corresponding DSH Web process and refresh the page after installation.
Verification performed for this release
- TypeScript typecheck and production build
- 16 focused Node tests for session lookup, read-only fail-closed behavior, lifecycle races, stale-answer suppression, rich-content safety, and subscriber isolation
- Real rendered-session browser smoke with parent-log revision checks
- Cordis client-HMR smoke with old-fiber teardown and new-fiber interaction
- A real-provider explanation run that settled successfully while leaving the parent session log unchanged
- npm package allowlist inspection before publication