dsh-chat-manager-wide 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md ADDED
@@ -0,0 +1,127 @@
1
+ > **Fork note.** This is the `dsh-chat-manager-wide` fork. Every command and package spec in this
2
+ > document already points at `dsh-chat-manager-wide@1.4.0`. Do not install it next to the
3
+ > original `dsh-chat-manager` in one profile.
4
+
5
+ # Agent installation guide
6
+
7
+ Use this guide when a user explicitly asks an Agent to install, update, verify,
8
+ or remove `dsh-chat-manager-wide` in a selected DeepSeek Harness profile.
9
+
10
+ ## Safety and responsibility boundary
11
+
12
+ - Confirm the target DSH installation and profile. Use `web` only when it is the user's target.
13
+ - Use the fixed `dsh-chat-manager-wide@1.4.0` package below; never substitute a moving branch or an
14
+ unreviewed source.
15
+ - Do not print session contents, full profile files, transcript paths, credentials, or other private data.
16
+ - Do not start, stop, or restart DSH without explicit permission.
17
+ - Preserve all sessions, unrelated plugins, and user-owned profile changes.
18
+ - Never delete a session as an installation test unless the user explicitly selects a disposable session
19
+ and confirms the destructive test.
20
+ - Prefer one durable user installation over disposable copies under `LocalAppData\Temp`. If more than one
21
+ durable DSH installation remains, ask which installation is the target before changing it.
22
+
23
+ Permanent deletion is irreversible. The Agent must not claim that this plugin provides secure erasure:
24
+ external attachments, caches, logs, backups, cloud copies, and non-JSONL stores are outside its scope.
25
+ The user is responsible for authority to delete the selected data and for applicable retention or privacy
26
+ requirements. A cancelled confirmation is the safe default and must not send a delete request.
27
+
28
+ ## Fixed package and standard bundle
29
+
30
+ The `dsh-chat-manager-wide` package is a standard DSH bundle (a fork of `dsh-chat-manager` 1.3.4) with a `dsh.bundle` profile patch. Its exact package spec is:
31
+
32
+ ```text
33
+ dsh-chat-manager-wide@1.4.0
34
+ ```
35
+
36
+ The bundle disables the official workspace row while installed and inserts a uniquely identified native
37
+ workspace row. Removing `dsh-chat-manager-wide` removes that layer, allowing DSH to restore the official
38
+ workspace row. Do not install the tarball under `@deepseek-ai/dsh-client-ui-workspace`; that old aliasing
39
+ approach is not the v1.3.4 contract. The product is shown to users as **DSH Chat Manager**.
40
+
41
+ ## Detect the target DSH
42
+
43
+ Use read-only filesystem checks to locate the requested target. On Windows:
44
+
45
+ ```powershell
46
+ Get-Command dsh -ErrorAction SilentlyContinue
47
+ Get-Command npx -ErrorAction SilentlyContinue
48
+ ```
49
+
50
+ DSH-Portable exposes the same standard `dsh plugin` contract. Missing system pnpm is normal; do not
51
+ install it globally just for this plugin.
52
+
53
+ `dsh plugin ... list` is not strictly read-only. Its first invocation may initialize or migrate a Portable
54
+ profile, rebuild dependency links, or update profile package-manager metadata. It is non-destructive to
55
+ session contents, but an Agent must not describe it as a filesystem read-only check. If attribution matters,
56
+ record the selected profile's relevant metadata before invoking it, without printing secrets.
57
+
58
+ ## Install or update
59
+
60
+ With an existing `dsh` command, run exactly:
61
+
62
+ ```sh
63
+ dsh plugin --profile web add dsh-chat-manager-wide@1.4.0
64
+ ```
65
+
66
+ Use the same `add` command to update or repair. The DSH CLI owns target selection, dependency resolution,
67
+ profile locking, and bundle composition; this plugin does not ship a second Windows installer.
68
+
69
+ After a successful configuration change, ask for permission before restarting DSH. A successful CLI exit
70
+ alone is not runtime acceptance.
71
+
72
+ ## Acceptance
73
+
74
+ First verify the selected profile without exposing its contents:
75
+
76
+ ```sh
77
+ dsh plugin --profile web list dsh-chat-manager-wide --depth 0
78
+ ```
79
+
80
+ 1. The `dsh-chat-manager-wide` bundle appears exactly once in the requested profile.
81
+ 2. Its direct package spec is the fixed `dsh-chat-manager-wide@1.4.0` npm version above.
82
+ 3. The profile contains the bundle patch and no duplicate official workspace row from this plugin.
83
+ 4. No unrelated dependency, profile patch, or session data was changed by the operation.
84
+
85
+ With permission to restart DSH, verify the live UI in dark mode:
86
+
87
+ 1. The sidebar header contains an archive action that opens **Archived sessions**.
88
+ 2. The archive manager lists archived sessions, filters by name or workspace, and can search archived
89
+ user/assistant conversation content without exposing another session.
90
+ 3. Restoring a disposable archived session returns it to its original workspace position without reloading the page.
91
+ 4. The selected session's native actions menu contains **Archive session** and the red **Delete session** action.
92
+ 5. Opening Delete shows the target session name and a second confirmation.
93
+ 6. Selecting **Cancel** closes the dialog, sends no delete request, and leaves the session visible.
94
+ 7. A destructive check is allowed only with a disposable test session explicitly selected by the user.
95
+ 8. After confirming that disposable session, verify it disappears in place without reloading the whole DSH page.
96
+
97
+ For source-checkout UI acceptance, the non-destructive smoke test is:
98
+
99
+ ```sh
100
+ pnpm smoke:ui -- --url http://127.0.0.1:14171 --session "Exact session title"
101
+ ```
102
+
103
+ The title must identify the intended session. The runner must only open the dialog and cancel it; it must
104
+ not send a deletion request or manage the DSH process.
105
+
106
+ ## Uninstall
107
+
108
+ For a standard profile:
109
+
110
+ ```sh
111
+ dsh plugin --profile web remove dsh-chat-manager-wide
112
+ ```
113
+
114
+ Uninstall removes only this plugin's bundle layer. It must not delete sessions and must not restart DSH
115
+ without permission. After the command, verify that `dsh-chat-manager-wide` is absent and that the
116
+ official workspace row is available again after the next permitted DSH restart.
117
+
118
+ ## Failure handling
119
+
120
+ Distinguish command discovery, network, HTTP/TLS, package-manager, profile-conflict, version, and
121
+ peer-dependency failures. Do not disable TLS validation, delete a profile, replace unrelated packages,
122
+ or claim success from an exit code alone.
123
+
124
+ On failure, report the sanitized command error, DSH version, selected profile, requested plugin version,
125
+ what changed, rollback state, and what remains unverified. Do not attempt an irreversible session deletion
126
+ as a recovery step. If the bundle was added but verification failed, stop and obtain permission before any
127
+ further profile change.
package/CHANGELOG.md ADDED
@@ -0,0 +1,48 @@
1
+ # Changelog
2
+
3
+ ## 1.4.0
4
+
5
+ Fork of [`dsh-chat-manager@1.3.4`](https://www.npmjs.com/package/dsh-chat-manager) by WSL043.
6
+
7
+ ### Changed — archived sessions dialog
8
+
9
+ * The archive manager dialog is now full width (`min(1120px, 100%)`) instead of the shared `Modal`
10
+ default of 380 px, and it lays out as a master/detail browser:
11
+ * left pane: search box plus the archived session list; a row is selectable, and every row keeps
12
+ its Restore / Delete actions;
13
+ * right pane: the complete current user/assistant transcript of the selected archived session,
14
+ with role labels, timestamps, internal scrolling, a message count and a "copy conversation"
15
+ action.
16
+ * The dialog injects its own stylesheet (`#dcm-archive-style`) instead of relying on the workspace
17
+ client's CSS modules, so the layout survives upstream style drift.
18
+
19
+ ### Added — archived conversation reads
20
+
21
+ * Host route `POST /plugins/dsh-session-delete/archive-detail`
22
+ (`readArchivedSessionDetail` in `src/host/archive-manager.mjs`) returns one archived session's
23
+ transcript. It re-checks archive membership, reads only `user/message` and `assistant/message`
24
+ events on the `current` surface through `sessionQuery.filterEvents`, and clamps the payload
25
+ (4000 messages, 40000 characters per message, 4 MiB of text in total).
26
+ * `scripts/build-client-local.mjs` rebuilds `lib/client.js` from the
27
+ `@deepseek-ai/dsh-client-ui-workspace` client that the local DSH installation serves, for
28
+ installations without the pinned upstream fixture devDependencies.
29
+
30
+ ### Changed — packaging
31
+
32
+ * Renamed to `dsh-chat-manager-wide`. The browser module id is now derived from `package.json#name`
33
+ instead of being hard-coded, so a future rename only touches `package.json` and
34
+ `cordis.patch.yml` before a rebuild.
35
+ * The composed bundle carries an upstream-attribution header. Upstream's own artifact notice sits
36
+ ahead of `factory: (require) => {` and was dropped by the bundle extractor, so a published fork
37
+ shipped without it.
38
+ * Upstream `author` / `repository` / `bugs` / `homepage` metadata was removed so a fork does not
39
+ advertise upstream's coordinates.
40
+ * `npm run build` keeps the upstream fixture-based build; `npm run build:local` builds from the
41
+ installed DSH client.
42
+
43
+ ### Limitations
44
+
45
+ * The transcript contains user and assistant messages only — no tool calls, reasoning blocks or
46
+ subagent traffic.
47
+ * The custom dialog is only used when the host exposes no official `archived-sessions` settings
48
+ section; where one exists (DSH-Portable) the plugin still delegates to it.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 WSL043
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/PUBLISH.md ADDED
@@ -0,0 +1,167 @@
1
+ # Publishing `dsh-chat-manager-wide`
2
+
3
+ This directory is a complete, publishable source tree. The working copy you were given was extracted
4
+ from the installed plugin, so `lib/client.js` already contains the fork's UI.
5
+
6
+ ## 0. Before the first publish
7
+
8
+ 1. **Fill in your own package metadata.** `package.json` has no `author`, `repository`, `bugs` or
9
+ `homepage` on purpose — a fork must not advertise upstream's coordinates. Add yours.
10
+ 2. **Rebrand the remaining upstream links in `README.md` and `README.en.md`.** The top badges, the
11
+ screenshot `raw.githubusercontent.com/WSL043/...` URLs and the issue-form links still point at
12
+ upstream's repository. The screenshots also still show the old narrow dialog, so replacing them
13
+ with your own captures is worth doing.
14
+ 3. **Publish to npmjs.org, not to your mirror.** `~/.npmrc` on this machine sets
15
+ `registry=https://registry.npmmirror.com`, which is a read-only mirror — publishing there fails.
16
+ `package.json` therefore pins `publishConfig.registry` to `https://registry.npmjs.org/`, which npm
17
+ applies at publish time only; installs keep using the mirror. Log in to the canonical registry
18
+ explicitly:
19
+ ```sh
20
+ npm login --registry https://registry.npmjs.org
21
+ npm whoami --registry https://registry.npmjs.org
22
+ ```
23
+ 4. **Check the name is free** against that registry:
24
+ ```sh
25
+ npm view dsh-chat-manager-wide version --registry https://registry.npmjs.org
26
+ ```
27
+ `E404` means the name is available — it was free when this tree was prepared.
28
+ 5. **Put it in git:**
29
+ ```sh
30
+ git init
31
+ git add .
32
+ git commit -m "dsh-chat-manager-wide 1.4.0"
33
+ git remote add origin <your repository>
34
+ git push -u origin main
35
+ ```
36
+
37
+ **2FA is mandatory for the write.** An account with two-factor authentication that logs in through the
38
+ browser flow (`Logged in on https://registry.npmjs.org/`) can still be refused at publish time:
39
+
40
+ ```text
41
+ npm error code E403
42
+ npm error 403 403 Forbidden - PUT https://registry.npmjs.org/<name> - Two-factor authentication or
43
+ granular access token with bypass 2fa enabled is required to publish packages.
44
+ ```
45
+
46
+ That is the registry asking for a second factor on the write, not a problem with the package. If npm
47
+ does not prompt for a one-time password (as in the run above), the login session token cannot be used to
48
+ publish; pick one of:
49
+
50
+ * **One-off — pass a fresh code.** `npm publish --otp=<6 digits>` with the code from the authenticator
51
+ app registered on npmjs.com. Codes expire in about 30 seconds.
52
+ * **Durable — a Granular Access Token with *Bypass 2FA*.** On npmjs.com:
53
+ *Access Tokens → Generate New Token → Granular Access Token*; enable **Bypass 2FA**, set
54
+ *Permissions* to **Read and write**, and *Packages* to **All packages** — a package-scoped token
55
+ cannot be created before the package exists. Then store it against the canonical registry only:
56
+
57
+ ```sh
58
+ npm config set //registry.npmjs.org/:_authToken=npm_xxxxxxxxxxxx
59
+ npm publish
60
+ ```
61
+
62
+ The token lands in `~/.npmrc` under a registry-scoped key, so the npmmirror `registry` setting keeps
63
+ serving your installs. Never commit it; if you prefer a per-project file, use a git-ignored `.npmrc`.
64
+
65
+ ## 1. Build the client bundle
66
+
67
+ Two builds exist; both apply the same `patchWorkspaceClient` patches, so both contain the fork.
68
+
69
+ ```sh
70
+ # A) release build — the same dual-fixture composition upstream ships
71
+ # (needs the devDependencies: the pinned @deepseek-ai/dsh-client-ui-workspace fixtures)
72
+ pnpm install
73
+ pnpm run build
74
+
75
+ # B) no install — patch the workspace client of the DSH you already have installed
76
+ node scripts/build-client-local.mjs
77
+ ```
78
+
79
+ Build B is what produced the current `lib/client.js`; it is the fallback when you have no package
80
+ manager or no network. Build A is preferable for a published release because it keeps the older-host
81
+ compatibility that `compatibility.json` documents.
82
+
83
+ Whatever you run, the browser module id comes from `package.json#name`. Verify it:
84
+
85
+ ```sh
86
+ node -e "const s=require('fs').readFileSync('lib/client.js','utf8');console.log(s.match(/id: \"[^\"]+\"/)[0])"
87
+ # must print: id: "dsh-chat-manager-wide"
88
+ ```
89
+
90
+ ## 2. Dry run, then publish
91
+
92
+ ```sh
93
+ npm pack # -> dsh-chat-manager-wide-1.4.0.tgz
94
+ tar -tzf dsh-chat-manager-wide-1.4.0.tgz # inspect the published file list
95
+ npm publish # unscoped name; 1.4.0 is a normal release, so no --tag is needed
96
+ ```
97
+
98
+ `1.4.0` carries no prerelease segment, so npm publishes it to `latest` and a bare
99
+ `dsh plugin --profile web add dsh-chat-manager-wide` resolves to it.
100
+
101
+ When you later iterate with a prerelease version (for example `1.4.1-next.1`), a bare `npm publish`
102
+ fails with "You must specify a tag using --tag when publishing a prerelease version". Use
103
+ `npm publish --tag next` for a channel, or `--tag latest` when a bare install should resolve to it.
104
+ Note that `--tag next` leaves the package without a `latest` tag, so version-less installs fail until
105
+ you publish a normal release.
106
+
107
+ Check what actually landed:
108
+
109
+ ```sh
110
+ npm view dsh-chat-manager-wide version dist-tags
111
+ ```
112
+
113
+ ## 3. Install it
114
+
115
+ **Always remove the original first.** Both packages disable the official `ui-workspace` row and each
116
+ inserts its own workspace row, and both register the same `/plugins/dsh-session-delete/*` routes.
117
+ Installing them side by side gives you two workspace sidebars.
118
+
119
+ ```sh
120
+ dsh plugin --profile web remove dsh-chat-manager
121
+
122
+ # from the registry:
123
+ dsh plugin --profile web add dsh-chat-manager-wide@1.4.0
124
+
125
+ # or from the tarball, to test before publishing (absolute path or ./relative works):
126
+ dsh plugin --profile web add C:\Users\liang\Desktop\dsh-chat-manager-wide\dsh-chat-manager-wide-1.4.0.tgz
127
+ ```
128
+
129
+ Then **restart DSH** — the host half (`src/`) is loaded at boot, so the archive-detail route does not
130
+ exist until then — and refresh the Web UI for the rebuilt client bundle.
131
+
132
+ Verify the profile without dumping its contents:
133
+
134
+ ```sh
135
+ dsh plugin --profile web list dsh-chat-manager-wide --depth 0
136
+ ```
137
+
138
+ Acceptance in the UI: the sidebar archive action opens a wide dialog with the archived list on the
139
+ left; clicking a row fills the right pane with that session's conversation.
140
+
141
+ ## 4. Update flow
142
+
143
+ ```sh
144
+ # bump the version in package.json, then
145
+ pnpm run build # or: node scripts/build-client-local.mjs
146
+ npm publish
147
+ dsh plugin --profile web add dsh-chat-manager-wide@<new version>
148
+ ```
149
+
150
+ `add` with the same name updates in place, exactly like upstream's documented repair flow.
151
+
152
+ ## 5. Rollback
153
+
154
+ ```sh
155
+ dsh plugin --profile web remove dsh-chat-manager-wide
156
+ dsh plugin --profile web add dsh-chat-manager@1.3.4
157
+ ```
158
+
159
+ ## Licensing
160
+
161
+ * `LICENSE` is upstream's MIT license (Copyright (c) 2026 WSL043) and is kept unchanged — MIT
162
+ requires retaining it.
163
+ * `THIRD_PARTY_NOTICES.md` carries both upstream notices: `dsh-chat-manager` and the
164
+ `@deepseek-ai/dsh-client-ui-workspace` build that every `lib/client.js` is derived from.
165
+ * The composed bundle starts with an attribution header. Upstream's own artifact notice sat ahead of
166
+ `factory: (require) => {` and was silently dropped by the bundle extractor, so the fork emits its
167
+ own.
package/README.en.md ADDED
@@ -0,0 +1,151 @@
1
+ > **Fork notice.** `dsh-chat-manager-wide` is a modified fork of
2
+ > [dsh-chat-manager](https://www.npmjs.com/package/dsh-chat-manager) 1.3.4 by WSL043 (MIT):
3
+ > the archived-session dialog is full width and archived conversations can be read in place.
4
+ > See [CHANGELOG.md](CHANGELOG.md) for the delta and [PUBLISH.md](PUBLISH.md) for the release flow.
5
+ > Do **not** install this package and the original `dsh-chat-manager` in the same profile; each one
6
+ > inserts its own workspace row.
7
+ >
8
+ > This is the fork you asked for in the previous session.
9
+
10
+ > Version 1.3.4: When the official archive section and Portable settings navigation are available, the archive button opens the official page; the adjacent search button retains content search and management. Older hosts retain the existing archive dialog.
11
+
12
+ > [!NOTE]
13
+ > This is an actively maintained, independently removable DSH plugin. It adds archive browsing, conversation-content search, restore, and safe permanent deletion. If this session workflow is not for you, uninstalling the plugin leaves existing sessions untouched.
14
+
15
+ <div align="center">
16
+
17
+ # DSH Chat Manager
18
+
19
+ Package: `dsh-chat-manager-wide` (a fork of `dsh-chat-manager`). [Awesome DSH listing](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/data/plugins/WSL043__dsh-chat-manager.yml) · [Image Viewer](https://github.com/WSL043/dsh-image-viewer)
20
+
21
+ **Manage DeepSeek Harness chat history from the native sidebar: search archives, restore sessions, and delete safely.**
22
+
23
+ Archive manager · Conversation search · One-click restore · Safe permanent deletion
24
+
25
+ [![Release](https://img.shields.io/github/v/release/WSL043/dsh-chat-manager?display_name=tag&style=flat-square)](https://github.com/WSL043/dsh-chat-manager/releases/latest)
26
+ [![Checks](https://img.shields.io/github/actions/workflow/status/WSL043/dsh-chat-manager/ci.yml?branch=main&label=checks&style=flat-square)](https://github.com/WSL043/dsh-chat-manager/actions/workflows/ci.yml)
27
+ [![npm](https://img.shields.io/npm/v/dsh-chat-manager?style=flat-square)](https://www.npmjs.com/package/dsh-chat-manager)
28
+ [![total npm downloads](https://img.shields.io/npm/dt/dsh-chat-manager?style=flat-square&label=total%20downloads)](https://www.npmjs.com/package/dsh-chat-manager)
29
+ [![DSH](https://img.shields.io/badge/DSH-compatible-2f81f7?style=flat-square)](#compatibility)
30
+ [![License](https://img.shields.io/github/license/WSL043/dsh-chat-manager?style=flat-square)](LICENSE)
31
+ [![Stars](https://img.shields.io/github/stars/WSL043/dsh-chat-manager?style=flat-square&label=stars)](https://github.com/WSL043/dsh-chat-manager/stargazers)
32
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
33
+
34
+ [中文](README.md) · [Install](#install) · [Use](#use) · [Safety boundary](#safety-boundary)
35
+
36
+ </div>
37
+
38
+ <p align="center">
39
+ <img src="https://raw.githubusercontent.com/WSL043/dsh-chat-manager/main/docs/assets/hero.en.png" alt="DeepSeek Harness chat history and archived session manager with search, restore, and safe permanent deletion">
40
+ </p>
41
+
42
+ | Recover archives | Search conversations | Delete safely |
43
+ | --- | --- | --- |
44
+ | Open the archive manager from the sidebar and restore hidden sessions | Search archived names, workspaces, and user/assistant conversation content | Keep native second confirmation; running work is stopped safely before local records are removed |
45
+
46
+ <p align="center">
47
+ <img src="https://raw.githubusercontent.com/WSL043/dsh-chat-manager/main/docs/assets/archive-manager.en.png" width="414" alt="Native DeepSeek Harness archived conversation manager with history search, restore, and permanent deletion">
48
+ <br><sub>Native interface on DeepSeek Harness 0.1.1-rc.2</sub>
49
+ </p>
50
+
51
+ ## Install
52
+
53
+ ### Standard DSH command
54
+
55
+ ```sh
56
+ dsh plugin --profile web add dsh-chat-manager-wide@1.4.0
57
+ ```
58
+
59
+ When the command finishes, save your work and restart DSH once through its normal workflow so the new
60
+ bundle configuration becomes active.
61
+
62
+ ### Agent installation
63
+
64
+ Use the fixed-version [AGENTS.md](https://raw.githubusercontent.com/WSL043/dsh-chat-manager/v1.3.4/AGENTS.md).
65
+ It defines installation, update, acceptance, uninstall, and safety boundaries. Do not use the `main`
66
+ branch document as an installation contract.
67
+
68
+ ## Use
69
+
70
+ ### Manage archives
71
+
72
+ 1. Select the archive icon in the sidebar header to open **Archived sessions**.
73
+ 2. Browse every archive or search by session name, workspace, and user/assistant conversation content.
74
+ 3. Select **Restore** to return a session to its original workspace position. To remove it completely,
75
+ start the permanent-delete confirmation from the same list.
76
+
77
+ Archive and restore only change DSH's hidden state; they do not delete conversation history. Content search
78
+ is limited to current user and assistant messages inside archived sessions.
79
+
80
+ ### Delete permanently
81
+
82
+ 1. Open the native actions menu beside the target session in the sidebar.
83
+ 2. Choose the red **Delete session** action.
84
+ 3. Check the session name and select **Delete permanently** in the confirmation dialog, or select
85
+ **Cancel** to leave it unchanged.
86
+
87
+ <p align="center">
88
+ <img src="https://raw.githubusercontent.com/WSL043/dsh-chat-manager/main/docs/assets/confirm-delete.en.png" width="414" alt="DeepSeek Harness safe permanent session deletion confirmation dialog">
89
+ <br><sub>Permanent deletion cannot be undone; the dialog identifies the target session.</sub>
90
+ </p>
91
+
92
+ Once active, the plugin reuses DSH lifecycle and session-storage capabilities. If work is still running,
93
+ it is stopped and allowed to settle before the target session is deleted. The session list then
94
+ updates in place without reloading the whole DSH page.
95
+
96
+ ## Safety boundary
97
+
98
+ > [!WARNING]
99
+ > Permanent deletion cannot be undone. Check the session name before confirming and make a separate backup when needed.
100
+
101
+ The plugin is responsible for validating and removing only the explicitly confirmed session's dedicated
102
+ directory within DSH's default per-session JSONL store and host lifecycle boundary. DSH currently exposes
103
+ no public session-deletion API. The second confirmation is mandatory; cancelling sends no deletion request.
104
+
105
+ The following are outside the plugin's deletion scope and are not guaranteed to be removed:
106
+
107
+ - Other sessions, other plugin data, external attachments, caches, indexes, logs, backups, or cloud/sync copies;
108
+ - Non-JSONL storage or hosts without a safe stop capability; these are refused instead of force-deleted;
109
+ - Additional copies created by the operating system, filesystem, host updates, or third-party sync services.
110
+
111
+ If the operating system refuses cleanup, the plugin reports that deletion could not be confirmed rather
112
+ than misreporting partial completion as success. You are responsible for having authority to delete the
113
+ target data and for meeting applicable retention, audit, and privacy requirements. This is an unofficial
114
+ community plugin, not affiliated with or endorsed by DeepSeek. It is provided under the [MIT License](LICENSE),
115
+ without warranty.
116
+
117
+ ## Compatibility
118
+
119
+ <!-- dsh-compatibility -->
120
+ Supports the latest DeepSeek Harness release recorded in the package metadata (`0.1.2-rc.1`).
121
+ <!-- /dsh-compatibility -->
122
+
123
+ Archive browsing, restore, and content search use DSH's workspace registry and session-query capabilities.
124
+ Permanent deletion supports DSH's default per-session JSONL storage. Installing replaces the native workspace
125
+ list with the session-management version; uninstalling restores DSH's original list.
126
+
127
+ ## Update and uninstall
128
+
129
+ Install the target npm version with the same standard DSH command. For v1.3.4:
130
+
131
+ ```sh
132
+ dsh plugin --profile web add dsh-chat-manager-wide@1.4.0
133
+ ```
134
+
135
+ Uninstall removes only this plugin's bundle layer and never deletes sessions:
136
+
137
+ ```sh
138
+ dsh plugin --profile web remove dsh-chat-manager-wide
139
+ ```
140
+
141
+ DSH-Portable exposes the same standard `dsh plugin` commands. Restart DSH through its normal workflow
142
+ after installing, updating, or uninstalling so the configuration is recomposed.
143
+
144
+ ## Support and license
145
+
146
+ Use the [bug report form](https://github.com/WSL043/dsh-chat-manager/issues/new?template=bug-report.yml)
147
+ for reproducible problems or the [feature request form](https://github.com/WSL043/dsh-chat-manager/issues/new?template=feature-request.yml)
148
+ for focused improvements. Report security issues privately as described in [SECURITY.md](SECURITY.md).
149
+
150
+ MIT. See [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) for the modified upstream client and its license
151
+ notice.
package/README.md ADDED
@@ -0,0 +1,139 @@
1
+ > **Fork 说明。** 本包 `dsh-chat-manager-wide` 是 [dsh-chat-manager](https://www.npmjs.com/package/dsh-chat-manager) 1.3.4(WSL043,MIT)的修改版:
2
+ > 加宽了归档会话弹窗,并新增归档对话正文阅读。变更清单见 [CHANGELOG.md](CHANGELOG.md),
3
+ > 发布流程见 [PUBLISH.md](PUBLISH.md)。
4
+ > 同一个 profile 里**不要**同时安装本包与原版 `dsh-chat-manager`,两者会各自插入一个工作区行。
5
+ >
6
+ > 这是你在上一轮会话里优化出来的分支。
7
+
8
+ > [!NOTE]
9
+ > 1.3.4:有官方归档设置页且 Portable 支持设置导航时,归档入口优先打开官方页面;旁边的搜索入口保留归档内容搜索与管理。旧环境继续使用原归档弹窗。
10
+ >
11
+ > 这是一个持续维护、可独立卸载的 DSH 插件。它补充归档浏览、聊天内容搜索、恢复与安全永久删除;不喜欢这套会话管理方式时,可以直接卸载,现有会话不会因此被删除。
12
+
13
+ <div align="center">
14
+
15
+ # DSH Chat Manager · 聊天与会话管理器
16
+
17
+ **在 DeepSeek Harness 原生侧边栏中搜索、恢复和安全清理会话。**
18
+
19
+ 插件包名:`dsh-chat-manager-wide`(fork 自 `dsh-chat-manager`,后者原名 `dsh-native-session-manager`)。[Awesome DSH 收录](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin/blob/main/data/plugins/WSL043__dsh-chat-manager.yml) · [图片查看器插件](https://github.com/WSL043/dsh-image-viewer)
20
+
21
+ 归档管理 · 聊天记录搜索 · 一键恢复 · 安全永久删除
22
+
23
+ [![Release](https://img.shields.io/github/v/release/WSL043/dsh-chat-manager?display_name=tag&style=flat-square)](https://github.com/WSL043/dsh-chat-manager/releases/latest)
24
+ [![Checks](https://img.shields.io/github/actions/workflow/status/WSL043/dsh-chat-manager/ci.yml?branch=main&label=checks&style=flat-square)](https://github.com/WSL043/dsh-chat-manager/actions/workflows/ci.yml)
25
+ [![npm](https://img.shields.io/npm/v/dsh-chat-manager?style=flat-square)](https://www.npmjs.com/package/dsh-chat-manager)
26
+ [![npm 总下载量](https://img.shields.io/npm/dt/dsh-chat-manager?style=flat-square&label=%E6%80%BB%E4%B8%8B%E8%BD%BD%E9%87%8F)](https://www.npmjs.com/package/dsh-chat-manager)
27
+ [![DSH](https://img.shields.io/badge/DSH-compatible-2f81f7?style=flat-square)](#兼容性)
28
+ [![License](https://img.shields.io/github/license/WSL043/dsh-chat-manager?style=flat-square)](LICENSE)
29
+ [![Stars](https://img.shields.io/github/stars/WSL043/dsh-chat-manager?style=flat-square&label=stars)](https://github.com/WSL043/dsh-chat-manager/stargazers)
30
+ [![Awesome DSH Plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
31
+
32
+ [English](README.en.md) · [安装](#安装) · [使用](#使用) · [安全边界](#安全边界)
33
+
34
+ </div>
35
+
36
+ <p align="center">
37
+ <img src="https://raw.githubusercontent.com/WSL043/dsh-chat-manager/main/docs/assets/hero.png" alt="DeepSeek Harness 聊天历史与归档会话管理器,支持搜索、恢复和安全永久删除">
38
+ </p>
39
+
40
+ | 归档可找回 | 聊天可搜索 | 删除更稳妥 |
41
+ | --- | --- | --- |
42
+ | 从侧边栏打开归档管理器,查看并恢复隐藏的会话 | 按会话名、工作区或用户与助手的聊天内容搜索归档 | 原生菜单保留二次确认;运行中的任务先安全停止,再删除本机会话记录 |
43
+
44
+ <p align="center">
45
+ <img src="https://raw.githubusercontent.com/WSL043/dsh-chat-manager/main/docs/assets/archive-manager.png" width="414" alt="DeepSeek Harness 原生归档会话管理器,支持聊天历史搜索、恢复和永久删除">
46
+ <br><sub>DeepSeek Harness 0.1.1-rc.2 中的原生界面</sub>
47
+ </p>
48
+
49
+ ## 安装
50
+
51
+ ### DSH 标准命令
52
+
53
+ ```sh
54
+ dsh plugin --profile web add dsh-chat-manager-wide@1.4.0
55
+ ```
56
+
57
+ 安装完成后,保存工作并按 DSH 的正常方式重启一次,使新的 bundle 配置生效。
58
+
59
+ ### 交给 Agent
60
+
61
+ 请使用固定版本的 [AGENTS.md](https://raw.githubusercontent.com/WSL043/dsh-chat-manager/v1.3.4/AGENTS.md),
62
+ 其中写明了安装、更新、验收、卸载和安全边界。不要把 `main` 分支文档当作安装依据。
63
+
64
+ ## 使用
65
+
66
+ ### 管理归档
67
+
68
+ 1. 点击侧边栏标题区域的归档图标,打开 **归档会话**。
69
+ 2. 直接浏览全部归档,或按会话名、工作区和用户/助手聊天内容搜索。
70
+ 3. 点击 **恢复** 让会话回到原来的工作区位置;需要彻底清理时,可从同一列表进入永久删除确认。
71
+
72
+ 归档和恢复只改变 DSH 的隐藏状态,不删除聊天记录。搜索范围仅限已归档会话中的当前用户与助手消息,
73
+ 不会把其他会话或插件数据混入结果。
74
+
75
+ ### 永久删除
76
+
77
+ 1. 打开侧边栏中目标会话右侧的原生操作菜单。
78
+ 2. 选择红色的 **删除会话**。
79
+ 3. 在确认弹窗中核对会话名称并再次确认 **永久删除**;也可以随时点击 **取消**。
80
+
81
+ <p align="center">
82
+ <img src="https://raw.githubusercontent.com/WSL043/dsh-chat-manager/main/docs/assets/confirm-delete.png" width="414" alt="DeepSeek Harness 安全永久删除会话的中文二次确认弹窗">
83
+ <br><sub>永久删除无法撤销,确认弹窗会明确显示目标会话</sub>
84
+ </p>
85
+
86
+ 插件生效后,删除逻辑复用 DSH 的生命周期和会话存储能力。正在运行的任务会先停止并等待
87
+ 收敛,然后删除目标会话;成功后只更新会话列表,不重载整个 DSH 页面。
88
+
89
+ ## 安全边界
90
+
91
+ > [!WARNING]
92
+ > 永久删除无法撤销。点下确认前,请核对会话名称;需要保留的内容请先另行备份。
93
+
94
+ 本插件的责任范围是:在 DSH 默认逐会话 JSONL 存储和宿主生命周期边界内,验证并移除用户明确
95
+ 确认的目标会话独占目录。DSH 当前没有公开会话删除 API;二次确认是强制步骤,取消不会发送删除请求。
96
+
97
+ 以下内容不在本插件的删除范围内,也不保证被清理:
98
+
99
+ - 其他会话、其他插件数据、外部附件、缓存、索引、日志、备份和云端/同步副本;
100
+ - 非 JSONL 存储或宿主没有安全停止能力的会话;这类情况会拒绝强删并报告未完成;
101
+ - 操作系统、文件系统、宿主更新或第三方同步服务造成的额外副本。
102
+
103
+ 如果系统拒绝清理,插件会报告无法确认删除成功,不会把部分完成误报为成功。删除前请确认
104
+ 自己有权处理目标数据,并遵守适用的数据留存、审计和隐私要求。本项目是非官方社区插件,
105
+ 与 DeepSeek 无隶属或背书关系;按 [MIT 许可证](LICENSE)提供,不附带担保。
106
+
107
+ ## 兼容性
108
+
109
+ <!-- dsh-compatibility -->
110
+ 支持软件包元数据中记录的最新版 DeepSeek Harness(`0.1.5-rc.1`)。
111
+ <!-- /dsh-compatibility -->
112
+
113
+ 归档浏览、恢复和内容搜索使用 DSH 的工作区注册表与会话查询能力;永久删除适用于 DSH 默认的逐会话
114
+ JSONL 存储。安装后替换为带会话管理功能的原生工作区列表;卸载后恢复 DSH 原有列表。
115
+
116
+ ## 更新与卸载
117
+
118
+ 更新时继续用 DSH 标准命令安装目标 npm 版本。v1.3.4 的命令是:
119
+
120
+ ```sh
121
+ dsh plugin --profile web add dsh-chat-manager-wide@1.4.0
122
+ ```
123
+
124
+ 卸载只移除这个插件的 bundle 层,不删除任何会话:
125
+
126
+ ```sh
127
+ dsh plugin --profile web remove dsh-chat-manager-wide
128
+ ```
129
+
130
+ DSH-Portable 同样使用标准的 `dsh plugin` 命令。完成安装、更新或卸载后,按 DSH 的正常方式重启,
131
+ 使配置重新组合。
132
+
133
+ ## 支持与许可证
134
+
135
+ 可使用[问题反馈表单](https://github.com/WSL043/dsh-chat-manager/issues/new?template=bug-report.yml)
136
+ 提交可复现问题,或使用[功能建议表单](https://github.com/WSL043/dsh-chat-manager/issues/new?template=feature-request.yml)
137
+ 说明明确需求;安全问题请按 [SECURITY.md](SECURITY.md) 私下报告。
138
+
139
+ MIT。修改后的上游客户端及其许可说明见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
@@ -0,0 +1,5 @@
1
+ # DSH 聊天管理器
2
+
3
+ 简体中文说明已成为仓库首页,请查看 [README.md](README.md)。
4
+
5
+ The Simplified Chinese README is now the repository default. See [README.md](README.md).