Bundle
dsh-chat-width-customizer
DSH web UI plugin: a session-header button that cycles the conversation width (748-1600px) by overriding the chat content-width CSS variables, so the chat column, composer, and user bubbles all widen together.
- Source
- magicOF2
- stars
- 3 stars
- License
- MIT
- Updated
- Updated 4 days ago
Readme
<div align="center">
# 🐋 dsh-chat-width-customizer
**聊天宽度自定义 · Chat Width Customizer** — 为 DeepSeek Harness Web UI 一键加宽对话内容区的插件
[](https://github.com/magicOF2/dsh-chat-width-customizer)
[](LICENSE)
[](https://github.com/magicOF2/dsh-chat-width-customizer)
在会话标题栏右上角加一个「宽度 · NNNpx」按钮,点击循环切换 7 档宽度预设,
对话内容区、输入框、用户消息气泡**一起变宽**,并记住你的选择。
</div>
---
## ✨ 特性 / Features
- **一键加宽**:点击标题栏按钮循环切换宽度档位(748 → 1600 px),无需进设置页
- **整列联动**:对话消息区、底部输入框(Composer)、用户气泡同步加宽,观感统一
- **全局共享**:宽度是全局状态 —— 在 A 会话调到 1600,切到 B 会话依然 1600,按钮显示一致
- **跨标签页同步**:另一个 DSH 标签页里改宽度,本页通过 `storage` 事件实时跟随
- **窄窗不溢出**:实际应用的宽度按视口自动钳制(视口 −24px、下限 320px),窗口缩放时实时重算;按钮仍显示所选档位
- **持久记忆**:选择写入 `localStorage`,刷新页面 / 重开浏览器后自动恢复,不丢失
- **零配置**:纯浏览器端插件,无 Host 逻辑、无外部依赖、无网络请求,所有数据只存本机
- **主题友好**:按钮样式完全使用 DSH 主题 CSS 变量,浅色 / 深色模式自动适配
## 🎯 界面位置 / Where it lives
按钮位于**每个会话标题栏的右上角**(标题、视图标签右侧的独立工具区):
```
┌──────────────────────────────────────────────────────────┐
│ 💬 会话标题 [对话] [轨迹] [宽度 · 1024px] │
├──────────────────────────────────────────────────────────┤
│ (对话内容区 —— 宽度随按钮档位变化) │
└──────────────────────────────────────────────────────────┘
```
## 📦 安装 / Installation
### 方式一:从 GitHub 安装(推荐给其他用户)
```sh
dsh plugin --profile web add https://github.com/magicOF2/dsh-chat-width-customizer.git
```
### 方式二:从 npm 安装(发布后可用)
```sh
dsh plugin --profile web add dsh-chat-width-customizer
```
### 方式三:本地开发 / 自用(链接方式)
```sh
# 把仓库克隆到外部插件目录(或直接把本仓库目录放进去)
git clone https://github.com/magicOF2/dsh-chat-width-customizer.git ~/.dsh/external/dsh-chat-width-customizer
# 链接进你的 profile
dsh plugin --profile web add link:C:/Users/<你的用户名>/.dsh/external/dsh-chat-width-customizer
```
> ⚠️ **安装后需要重启 `dsh web`**,并在浏览器里 **Ctrl+Shift+R** 强制刷新一次。
> 之后插件随 GUI 自动加载,**无需任何手动启用**。
## 🖱️ 使用 / Usage
1. 打开任意会话,点击标题栏右侧的「宽度 · NNNpx」按钮
2. 每点一次循环到下一档:`748 → 896 → 1024 → 1152 → 1280 → 1440 → 1600 → 748 …`
3. 宽度**立即生效**,且全局共享:
- 切换会话 → 宽度与按钮显示保持一致
- 刷新页面 → 自动恢复上次选择的宽度
## ⚙️ 自定义宽度档位 / Custom presets
默认预设为 `[748, 896, 1024, 1152, 1280, 1440, 1600]`(单位 px)。
想改档位、增减档数,编辑 `lib/client.js` 顶部的 `PRESETS` 常量即可:
```js
const PRESETS = [748, 1024, 1280, 1600]; // 例如只保留 4 档
```
> 提示:`PRESETS[0]` 即默认宽度;localStorage 中只会保存预设列表里存在的值。
## 🔧 工作原理 / How it works
- **宽度控制**:产品自带样式把对话列限制在 `--dsh-chat-content-width`(默认 748px)并居中。
插件在页面级 `<style>` 中覆盖该变量,同时联动 `--dsh-composer-card-max-width`(输入框宽度),
并解除用户消息气泡栈默认的 `max-width: 525px` 上限,让两类消息都铺满加宽后的列:
```css
[data-conversation-scroll] {
--dsh-chat-content-width: 1024px;
--dsh-composer-card-max-width: calc(var(--dsh-chat-content-width) + 32px);
}
[data-conversation-scroll] [class*="userStack"] { max-width: 100% !important; }
```
- **UI 挂载**:注册在 `conversation.session.header.utilities` 槽位(标题栏独立工具区),
不替换任何原生组件,纯增量添加,卸载干净无残留。
- **状态管理**:当前宽度保存在插件模块级状态 + `localStorage`
(键名 `dsh-chat-width-customizer:width`),所有会话的按钮实例共享并实时同步。
- **包结构**:标准 DSH 插件 bundle(`dsh.bundle` 清单 + `dsh.client` web 平台声明),
浏览器启动时自动注入,重启后无需手动运行。
## 🧩 兼容性 / Compatibility
- DeepSeek Harness `0.1.0-rc.6` 及以上(开发环境验证版本),Cordis `4.x`
- 现代浏览器(Chrome / Edge / Firefox / Safari 最新两个大版本)
- 纯前端实现,不依赖任何 API Key、无数据上传
## 🛠️ 开发 / Development
```
dsh-chat-width-customizer/
├── lib/
│ ├── index.js Host 入口(空实现,仅占位 —— 纯前端插件)
│ └── client.js 浏览器端 bundle(__ModuleLoader__ 格式)
├── test/
│ └── wc.test.mjs 纯逻辑单元测试(加载真实 bundle 的 _internals)
├── cordis.patch.yml profile 组合层插入条目
├── package.json 包清单(dsh.bundle / dsh.client 声明)
├── README.md
└── LICENSE MIT
```
**本地迭代**:
```sh
npm test # node --test:档位循环 / 视口钳制 / 存储读取 / CSS 生成
# 改完 lib/client.js 后,重启 dsh web + 浏览器强制刷新即可验证
git add -A && git commit -m "your change" && git push # 同步到 GitHub
```
**发布到 npm(可选)**:去掉 `package.json` 中的私有标记后执行 `npm publish`,
用户即可通过 `dsh plugin --profile web add dsh-chat-width-customizer` 安装。
<!-- 建议在此处放一张效果截图 / 演示 GIF(标题栏按钮 + 加宽后的对话界面) -->
## 📄 License
[MIT](LICENSE) © 2026 [magicOF2](https://github.com/magicOF2)
---
## English
A lightweight **DSH (DeepSeek Harness) web plugin** that adds a **"宽度 · NNNpx"** button
to the conversation session header. Click it to cycle through 7 width presets
(748–1600 px) and widen the chat column, composer, and user bubbles together.
**Highlights**: no host logic · theme-aware · width shared across sessions and
remembered across reloads (`localStorage`) · standard `dsh.bundle` plugin package,
loads automatically after install (no manual enable).
**Install**:
```sh
dsh plugin --profile web add https://github.com/magicOF2/dsh-chat-width-customizer.git
```
Then restart `dsh web` and hard-refresh the browser once.
Install
dsh plugin --profile web add github:magicOF2/dsh-chat-width-customizer
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-chat-width-customizer from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.