Skip to content
dsh.fish
Bundle

dsh-fullwidth

Conversation full-width by default + pretext text measurement (DSH plugin)

Source
publieople
License
BSD-3-Clause
Updated
Updated 5 days ago

Readme

# dsh-fullwidth

**English** | [简体中文](README.zh.md)

Make the DeepSeek Harness **chat window span the whole center column by default** (no more big empty margins beside a collapsed sidebar), and add an interactive **text measurement** tool powered by [@chenglou/pretext](https://github.com/chenglou/pretext).

## Features

- **Full-width conversation (default on).** DSH centers the transcript/composer at a reading width `--dsh-chat-content-width` (~748px), leaving large empty margins. This plugin re-declares that variable to `100%` so the transcript and composer fill the entire center column.
- **Settings toggle.** Turn it off in **Settings → Full-width & Text Measurement** (remembered in `localStorage`).
- **Pretext text measurement.** Measure text height / line count / line breaks entirely in the browser, without DOM reflow (no `getBoundingClientRect` / `offsetHeight`).
- **i18n.** UI copy ships in zh/en via the DSH locale runtime (`ctx.locale`).

## How it works

The conversation root (`data-phase` containing `[data-conversation-scroll]`) declares the shared width axis `--dsh-chat-content-width`. The plugin re-declares it to `100%` with a high-specificity rule:

```css
[data-phase]:has([data-conversation-scroll]){--dsh-chat-content-width:100% !important;}
```

The selector is stable across DSH builds (it does not depend on CSS-modules hashed class names). Turning the toggle off removes the rule and returns to the default reading column.

## Install

In a DSH profile:

```sh
dsh plugin --profile web add github:publieople/dsh-fullwidth#v0.0.5
```

Zero build (the compiled `lib/` is committed) — restart the profile after install.

Runtime injection via dsh-super-injector:

```sh
dev_build_plugin {dir: <repo>}
dev_inject_plugin {dir: <repo>}
```

## Build from source

```sh
npm install
npm run build        # host: src -> lib
npm run build:client # client: tsdown -> lib/client.js (inlines pretext)
```

## Requirements

- A DSH web profile with the client runtime (`@deepseek-ai/dsh-client-locale`, `-runtime`, `-ui-settings`, `-ui-slots`).
- DSH `>=0.1.1-rc.1`.

## License

BSD-3-Clause.

Install

dsh plugin --profile web add github:publieople/dsh-fullwidth

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source