DSH Plugins Marketplace

DSH Plugins

Plugins

/

UI & Experience

/

dsh-ui-zoom-regions

F

dsh-ui-zoom-regions

Manifest valid★ 1

Per-region UI zoom for DeepSeek Harness — Ctrl + wheel sets independent zoom levels for the conversation header, the left sidebar, the conversation body and the right sidebar (sidebars 25%-300%), and

UI (client)hasBundlePatch

dsh-ui-zoom-regions

Per-region UI zoom for DeepSeek Harness (dsh). The shell's regions get independent zoom levels instead of one page-wide scale, and the conversation header's whole bottom edge can be dragged — nothing is painted there, the cursor just changes — to make that header shorter or taller.

中文说明 · Install · Controls · How it works

Regions

RegionWhat it zoomsNotes
Topthe conversation header: title row (session title, preset badge, header actions) and the view tab row (Chat / trajectory / plugin views)one level for both rows, so every label stays on screen
Leftthe sidebar columnskipped while the sidebar is collapsed to the icon rail, restored on expand
Centrethe conversation body (scroll area + composer)deliberately not the whole column, so the header above it can never be dragged along
Rightthe right sidebar column (files, terminal, browser, document preview …)independent of the centre column

Zoom is applied as CSS zoom on the target element, so a region keeps its width: content reflows and scales, neighbouring columns are untouched, and the splitter drag handles stay where they are.

Controls

  • Ctrl + mouse wheel — zoom the region under the pointer (captured, so the page never scrolls)
  • Ctrl + + / = — zoom that region in · Ctrl + - — out · Ctrl + 0 — reset it to 100%
  • Range 50 %–200 % for the centre column; the two sidebars (and the header's font) go 25 %–300 %; wheel step 5 %, key/button step 10 %
  • The header's bottom edge is a second, independent control — drag it down to give the header more room, drag it up to collapse it (down to 24 px; a row that no longer fits vanishes whole, so no line is ever cut in half), without touching the font; double-click hands the height back to the stylesheet

The readout in the bottom-right corner shows all four levels. It is hidden by default and only appears for about two seconds after a change (pointer-events: none while hidden, so it never blocks the UI). Its last chip cycles the readout mode — auto / always / off — and Ctrl + Alt + 0 does the same from the keyboard.

The header: two independent controls

The conversation header carries two separate channels — this is the whole point of 1.2.0:

Font sizeHow much room it takes
ControlCtrl + wheel / Ctrl + + - 0 over the headerdrag the header's bottom edge
Stored indsh-ui-zoom-regions/levels (top)dsh-ui-zoom-regions/headerHeight (px)
Range25 % – 300 %24 px … half the conversation panel
Effecttitle row + tab row scalemin-height when growing; height plus whole rows dropped when collapsing

They never interfere: shrinking the labels no longer shrinks the bar, and making the bar taller no longer enlarges the labels.

The bottom edge. Its entire width is the drag target: an invisible 9 px band just inside the bottom edge that paints nothing and only switches the cursor to ns-resize. No handle to hunt for.

  • The pointer moves the edge one pixel per pixel — drag 20 px and the header is 20 px taller or shorter.
  • Dragging up really shrinks it, one whole row at a time. min-height is only a floor: it can never make the header shorter than its content, which is why pulling up used to do nothing at all. Below the natural height the plugin writes height and drops the rows that no longer fit whole (display: none; the tab row goes first, then the title row) — a row that stays on screen keeps its own font size, its padding and its share of the layout, and nothing is ever sliced through the middle of a line. overflow: hidden stays on only as a backstop.
  • Limits are measured on every drag: at least 24 px, at most half the conversation panel (the panel is resolved through *_centerCol, then the nearest ancestor meaningfully taller than the header, then the window). The live numbers are recorded as headerHeight / headerLimits in the diag receipt.
  • Double-click returns the header to the stylesheet's own height (removes the inline min-height, height and overflow).

Install

dsh plugin --profile web add github:FurinaEsE/dsh-ui-zoom-regions
# desktop profile
dsh plugin --profile desktop add github:FurinaEsE/dsh-ui-zoom-regions

The package ships plain JavaScript and runs no install scripts, so there is no build-approval step.

Storage

Everything is local and per browser origin:

KeyContents
dsh-ui-zoom-regions/levels{ top, left, center, right } zoom factors
dsh-ui-zoom-regions/headerHeightthe header occupancy in px (absent = the stylesheet height)
dsh-ui-zoom-regions/diaga small diagnostic receipt (version, timestamp, which regions resolved, applied zoom values, headerHeight, headerLimits)

The readout mode is deliberately session-only: every page load starts in auto, so a mode picked earlier can never lock you out of the readout.

How it works

lib/index.js is an empty host half. All behaviour lives in the browser half, which resolves the shell's regions from stable hooks — [class*="_sidebarCol"], [class*="_centerCol"], [data-rightbar-col], [class*="_titleRow"], [data-conversation-tabs"] — and re-resolves them on a slow interval plus a mutation observer, so panels that React re-creates (the right sidebar, the header after a session switch) get their level re-applied and a target that disappears never leaves a stale zoom behind.

Credit and licence

MIT. The browser half started from imdeniil/dsh-ui-zoom (MIT), which zooms the whole document. This package reworks it into per-region zoom with its own grip, persistence and readout; the upstream copyright notice is kept in LICENSE.


中文说明

给 DeepSeek Harness 的界面做分区缩放:不再只有一个整页比例,而是会话顶栏、左侧栏、会话正文、 右侧面板各自独立;顶栏的整条下边界还可以直接拖动,把顶栏调矮或调高——边界上不画任何东西, 只有鼠标靠近时光标变化。

区域

区域缩放对象说明
顶会话头部:标题行(会话名、预设徽章、右侧动作图标)+ 视图标签行(对话 / 轨迹 / 插件视图…)两行共用一个比例,标签一个都不会消失
左左侧栏折叠成图标栏时自动跳过,展开后恢复
中会话正文(滚动区 + 输入区)刻意不缩整栏,所以上方的顶栏永远不会被带着放大
右右侧面板(文件、终端、浏览器、文档预览…)与中栏互不影响

缩放用 CSS zoom 作用在目标元素上:区域宽度不变(内容重排并缩放,不抢相邻区域的空间,也不移动 拖动分隔线)。

操作

  • Ctrl + 滚轮:缩放鼠标指针所在区域(捕获阶段拦截,不会滚动页面)
  • Ctrl + + / = 放大、Ctrl + - 缩小、Ctrl + 0 重置该区域
  • 中栏范围 50%–200%;左右两个侧栏与顶栏字号 25%–300%;滚轮步长 5%,快捷键/按钮步长 10%
  • 顶栏还有第二条独立通道:向下拖给它更多空间、向上拖把它收起来(最低 24px;放不下的行整行消失, 不会把字切成半行),完全不动字号;双击交还给样式表高度

右下角读数默认隐藏,只在你调整时浮现约 2 秒(隐藏时不拦截点击);最后一个按钮切换读数模式 (自动 / 常显 / 关闭),Ctrl + Alt + 0 等效。模式只在当次会话有效,刷新必定回到「自动」。

顶栏:两条互不干扰的通道

1.2.0 起,顶栏拆成两条独立通道:

字号占多高
怎么调悬停顶栏按 Ctrl + 滚轮 / Ctrl + + - 0拖动顶栏下边界
存在哪dsh-ui-zoom-regions/levels(top)dsh-ui-zoom-regions/headerHeight(px)
范围25% – 300%24px … 对话区高度的一半
影响标题行 + 标签行的缩放放大时用 min-height;收起时用 height,放不下的行整行隐藏

两者永远不互相牵连:缩字号不会再缩矮顶栏,把顶栏拉高也不会放大文字。

下边界:整条宽度都是拖动区 —— 一条透明 9px 带子,贴在顶栏内底边,不画任何像素,只把光标变成 ns-resize,没有需要寻找的小把手。

  • 指针移动多少像素,边界就跟着走多少像素(拖 20px = 顶栏高/矮 20px)。
  • 向上拖是真收缩,而且是整行整行地收。 min-height 只是下限,永远没法把盒子压到比内容更矮 —— 这就是 以前往上拖像卡住的原因。低于自然高度时改写 height,放不下的行整行隐藏(display:none,先收标签行、 再收标题行):留下来的行字号、内边距、占位全都不变,永远不会出现半行字。overflow:hidden 只作兜底。
  • 上下限每次拖动都实测:最小 24px,最大 对话区高度的一半(先取 *_centerCol,再沿祖先找 明显高于顶栏的容器,最后回退窗口高度)。实际值记在 diag 回执的 headerHeight / headerLimits。
  • 双击把顶栏交还给样式表自己的高度(移除行内 min-height、height、overflow)。

安装

dsh plugin --profile web add github:FurinaEsE/dsh-ui-zoom-regions
dsh plugin --profile desktop add github:FurinaEsE/dsh-ui-zoom-regions

纯 JavaScript,无安装脚本,无需构建授权。

存储

键内容
dsh-ui-zoom-regions/levels{ top, left, center, right } 四个比例
dsh-ui-zoom-regions/headerHeight顶栏占用的像素高度(不存在 = 用样式表高度)
dsh-ui-zoom-regions/diag小型诊断回执(版本、时间、各区域是否解析到、实际写入的缩放、headerHeight、headerLimits)

署名与许可

MIT。浏览器半边改造自 imdeniil/dsh-ui-zoom(MIT,整页 缩放),上游版权声明保留在 LICENSE 中。

Comments

Loading…

Similar plugins

dsh-client-ui-font-scale

by AprilCrystal

Conversation font-size controls for the DeepSeek Harness Web UI: a composer-row stepper, keyboard shortcuts, and Ctrl+wheel zoom, all writing through the theme service's setFontSize

UI & ExperienceTerminal & ClientsManifest valid

★ 0

MIT

JavaScript

Oct 11, 2026

dsh plugin --profile web add dsh-client-ui-font-scale

by DC-507

Global UI zoom for the DeepSeek Harness web client: Cmd/Ctrl +/-, 0 — scales the whole interface, not just conversation text.

Development & InfrastructureTerminal & ClientsManifest valid

★ 1

MIT

JavaScript

Oct 1, 2026

dsh plugin --profile web add dsh-zoom

by Centaurea5547196

DeepSeek Harness Web UI 页面缩放插件:Ctrl+滚轮与 Ctrl+=/-/0 快捷键,25%-300%,本地持久化;悬浮栏默认隐藏。

UI & ExperienceDevelopment & InfrastructureTerminal & ClientsManifest valid

★ 1

MIT

JavaScript

Oct 1, 2026

dsh plugin --profile web add dsh-page-zoom

by Timebro9999

Manage your whole workspace in the DeepSeek Harness sidebar: a pinned band for projects and conversations, a bell activity view with answer previews, per-project emoji icons, and collapsible 置顶/项目/组件 sections. On npm as dsh-session-deck. Bilingual (EN/中文).

UI & ExperienceDevelopment & InfrastructureManifest valid

★ 0

MIT

JavaScript

Oct 1, 2026

dsh plugin --profile web add dsh-session-deck

by jsdvjx

Session strata for the DeepSeek Harness Web GUI: the transcript's scrollbar becomes a to-scale, colour-coded map of the whole run, with your own messages emphasised and clickable anchors.

UI & ExperienceManifest valid

★ 101

↓ 165/wk

MIT

JavaScript

Sep 11, 2026

dsh plugin --profile web add dsh-strata

by MYX-0211

Pointer-anchored wheel zoom and drag-to-pan for images in the DeepSeek Harness right sidebar. Replaces the built-in image viewport.

Manifest valid

★ 0

MIT

JavaScript

Oct 3, 2026

dsh plugin --profile web add dsh-sidebar-image-zoom