dsh-ui-zoom-regions

uinpmMIT

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 dragging the header bottom edge makes that header shorter or taller, growing by height only so label

下载量 / Downloads
527

Install

dsh plugin --profile web add dsh-ui-zoom-regions

Sandbox test

This plugin has not been tested yet. Submit a test →

README

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](#install) · [Controls](#controls) · [How it works](#how-it-works)

Regions

Region · What it zooms · Notes

Top · the 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

Left · the sidebar column · skipped while the sidebar is collapsed to the icon rail, restored on expand

Centre · the conversation body (scroll area + composer) · deliberately not the whole column, so the header above it can never be dragged along

Right · the 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 size · How much room it takes

Control · Ctrl + wheel / Ctrl + + - 0 over the header · drag the header's bottom edge

Stored in · dsh-ui-zoom-regions/levels (top) · dsh-ui-zoom-regions/headerHeight (px)

Range · 25 % – 300 % · 24 px … half the conversation panel

Effect · title row + tab row scale · min-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:

Key · Contents

dsh-ui-zoom-regions/levels · { top, left, center, right } zoom factors

dsh-ui-zoom-regions/headerHeight · the header occupancy in px (absent = the stylesheet height)

dsh-ui-zoom-regions/diag · a 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. Thi

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::5,最后更新 2026-10-19

Links

GitHub · Homepage · npm

Same category