Skip to content
dsh.fish
Bundle

dsh-composer-scroll-hide

Composer auto-hide on scroll for the dsh web GUI: the input bar follows the message flow off-screen when you scroll up to read context, and slides back in when you return to the latest message.

Source
wanglaixiang-cyber
License
MIT
Updated
Updated 21 days ago

Readme

# dsh-composer-scroll-hide

A DSH browser-side plugin that makes the composer follow the message flow while scrolling.

## Features

- **Scroll up**: the input bar slides off-screen at the same speed as the content, so it never covers the history you are reading
- **Browsing history**: while paging down through history, the input bar stays hidden — it never pops in early
- **Back to latest**: the input bar only rides back in over the final stretch of the return to the latest message (about one composer height), settling fully at the bottom
- **Float tracking**: the app's "back to bottom" float button moves together with the input bar and lands 16px above the bottom edge once the bar is fully hidden

## Install

```bash
dshpm install github:wanglaixiang-cyber/dsh-composer-scroll-hide --profile <profile-name>
```

## Development

For local development, link the package into a profile:

```json
"dsh-composer-scroll-hide": "link:/path/to/dsh-composer-scroll-hide"
```

Edits to `lib/client.js` are picked up by client-hmr within about a second — no page refresh, no restart.

## How it works (short)

- Listens to scroll events on the `[data-conversation-scroll]` scrollport (passive — never blocks scrolling)
- Composer offset = min(distance to bottom, composer height): **position-driven**, so any state (re-attach, jump, resize) converges on the next scroll
- Syncs the `--dsh-composer-height` custom property, which drives the back-to-bottom float's clearance so the float tracks the bar
- The seat height is cached via ResizeObserver; the transform is written at most once per frame (requestAnimationFrame)

## License

MIT

Install

dsh plugin --profile web add github:wanglaixiang-cyber/dsh-composer-scroll-hide

Profile: web

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