dsh-width-tiers
其他 活跃维护

dsh-width-tiers

aaronlei/dsh-width-tiers

为DeepSeek网页客户端开发的插件,在右下角常驻悬浮选择按钮,支持标准、中等、宽、超宽、全宽五档聊天内容宽度一键切换,无需手动调整页面缩放,适配不同内容的浏览展示需求

3
Stars 标星
0
Forks 分支
3
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
26 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:aaronlei/dsh-width-tiers
git clone https://github.com/aaronlei/dsh-width-tiers.git
git clone git@github.com:aaronlei/dsh-width-tiers.git
README.md main

dsh-width-tiers

License: MIT

A client plugin for the DeepSeek Harness Web GUI that adds chat content
width tiers
with a floating picker button (bottom-right, above the
composer): 标准 / 中等 / 宽 / 超宽 / 全宽 (standard / medium / wide / ultra /
full).

Why

The DSH Web app hard-codes a readable content width on the conversation root
(--dsh-chat-content-width: 748px). That caps the message column — and every
table inside it — at 748px no matter how wide your window or panels are,
so wide tables always need horizontal scrolling.

This plugin overrides that variable per tier:

Tier Content width Sidebar
standard 标准 748px (app default) untouched
medium 中等 960px untouched
wide 宽 1280px untouched
ultra 超宽 1400px untouched
full 全宽 100% (fills the window) collapsed to the icon rail

The choice persists in localStorage and is restored on the next visit; the
menu highlights the current tier, and the button's five level-bars show it at
a glance.

Install

dsh plugin --profile web add dsh-width-tiers

Then register it as a loader entry in
~/.dsh/profiles/web/cordis.patch.yml:

- insert:
    - id: dsh-width-tiers
      name: dsh-width-tiers

Restart dsh web (the plugin loads at boot) and hard-refresh the page
(Ctrl+Shift+R). A round button with five bars appears at the bottom-right.

Installing from a local checkout: dsh plugin --profile web add file:/path/to/dsh-width-tiers.
Local-development gotcha: file: dependencies are copied into the
profile's node_modules (pnpm does not symlink them). After editing the
plugin source, re-sync the copy (e.g. rsync -a --delete --exclude .git /path/to/dsh-width-tiers/ ~/.dsh/profiles/web/node_modules/dsh-width-tiers/)
or re-install after removing it, then restart dsh web and hard-refresh.

Usage

  • Click the round button → pick a tier; the current one is highlighted.
  • full collapses the sidebar to the icon rail through the app's own toggle
    — it is never force-hidden or locked: click a rail icon any time to expand
    it, and it stays expanded.
  • Non-standard tiers also close the details panel (re-closed automatically if
    reopened); standard leaves everything to the app.

Language

All picker copy (tier labels, button aria-label and title) follows the
app's Settings → Language (中文 / English), through the app's own locale
service. Switching the language re-renders the button and menu immediately;
when no explicit language is chosen the app falls back to the browser's
language, and Chinese is the last resort. No plugin-side setting needed.

How it works

  • The element that defines --dsh-chat-content-width is located at
    runtime
    (the first element whose computed value is non-empty) and the
    tier is applied as an inline override — no hashed class names, so it
    survives bundle upgrades.
  • Panels are driven through the layout service (ctx.layout), never by
    simulating clicks.
  • The sidebar is only ever collapsed by the full tier; returning to
    standard restores it only if this plugin collapsed it.
  • Dictionaries are registered with the app's locale service
    (ctx.locale.register / bind) and re-rendered through its change
    subscription, so the copy always matches the app's active language.

Limitations

  • Content width cannot exceed the window: on a narrow window, wider tiers are
    capped by the available column. Use full (which also collapses the
    sidebar) for the maximum.
  • Requires the DSH Web client plugin system (dsh ≥ 0.1.0-rc.x with a web
    profile).

Uninstall

dsh plugin --profile web remove dsh-width-tiers

Remove the dsh-width-tiers row from ~/.dsh/profiles/web/cordis.patch.yml,
then restart dsh web.

License

MIT — see LICENSE. Copyright (c) 2026 aaronlei.