Skip to content
dsh.fish
Bundle

dsh-composer-fix

DSH Web GUI layout fix: composer (input bar + bottom status bar) leaves the scroll region — message scrolling stops above the input bar, the scrollbar no longer covers the input area

Source
AnakinCao
License
MIT
Updated
Updated 7 days ago

Readme

# dsh-composer-fix

> 简体中文: [README.zh.md](README.zh.md)

A DSH (DeepSeek Harness) Web GUI layout fix: moves the composer (input bar + bottom status bar) **out of the scroll region**.

## What it does

In the default DSH layout the composer sticks (`position: sticky`) to the bottom of the message scroll container, so the scrollbar spans the whole container — **including the input bar and the bottom status bar**. When you scroll up through history, message content slides underneath the input/status bar; under translucent skins like harbor it even shows through.

This plugin moves the scrolling responsibility from the container down to the **message list itself** (attribute-only operations — no DOM node moves, no hash-class dependencies):

- The scrollbar only covers the message area and **ends above the input bar**;
- Message scrolling stops above the input bar — content **never passes through** the input bar or the bottom status bar;
- The input bar and bottom status bar stay fixed at the bottom of the window, always visible;
- Under translucent skins (harbor) the composer surface stays opaque — no bleed-through;
- The git branch chip is never covered by the input card, and its left edge always stays aligned with the input card's left edge (re-aligned automatically after window resize / sidebar drag / panel open-close).

## How it works (one sentence)

Removes the `data-conversation-scroll` attribute from the scroll container (core uses it to lift scrolling and force the list to `overflow: visible`), so the message list resumes its own scrolling; `scrollerOf()` / wheel logic falls back to the list itself via `closest(...) ?? from`.

## Install

```bash
dsh plugin --profile web add https://github.com/AnakinCao/dsh-composer-fix.git
```

The plugin is a client bundle; after installing, refresh the page (or restart `dsh web`) to load it.

## Uninstall

```bash
dsh plugin --profile web remove dsh-composer-fix
```

## Compatibility

- Uses stable attribute selectors only: `[data-conversation-scroll]`, `[data-composer-seat]`, `[data-composer-card]`, `[data-queue-dock]`, `[data-slot=conversation.session]`, `[data-phase]` — no CSS module hash classes;
- Moves no DOM nodes (attributes only), so no React `removeChild` unmount crash;
- If core upgrades and the selectors still hold, no change is needed; if core reworks these attributes, just update `lib/client.js` in this plugin — no need to wait for an official fix.

## License

MIT

Install

dsh plugin --profile web add github:AnakinCao/dsh-composer-fix

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source