Bundle
dsh-media-preview
Audio/video preview viewer for dsh-better-sidebar: native playback with Range-seeking served by a dedicated streaming route
- Source
- tsonglew
- stars
- 4 stars
- License
- MIT
- Updated
- Updated 7 days ago
Readme
# dsh-media-preview
[](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin)
Audio and video preview for the DeepSeek Harness (dsh) web GUI, registered as
a **FileViewer** inside
[dsh-better-sidebar](https://github.com/omdsh-dev/DSH-better-sidebar). Open an
`.mp4`/`.webm`/`.mkv`/`.mov`/… or `.mp3`/`.flac`/`.wav`/… file in the sidebar
file tree and it plays inline with native controls.
| Video | Audio |
|-|-|
|<img width="679" height="643" alt="image" src="https://github.com/user-attachments/assets/061d92cb-4418-47d1-86bd-be52a9950dbc" />|<img width="692" height="542" alt="image" src="https://github.com/user-attachments/assets/74df4ef9-aa98-4be7-bdf1-852eed2ed51d" /> |
## Why a dedicated route
better-sidebar's built-in `/sidebar/file` media route reads whole files into
memory, has **no HTTP Range support**, and caps at an image-oriented size
limit. This package serves media through its own streaming route
(`/media-preview/file`) with:
- HTTP **Range** (206) seeking — the browser can jump anywhere in a long video
- Streamed responses (`fs.createReadStream`) — no whole-file buffering
- Whole-filesystem scope behind the same browser trust fence the built-in
`/api` documents (loopback Host + same-origin markers), matching the
official directory-picker browse backend — the sidebar explorer browses
outside the session cwd (e.g. a music folder in `~/Documents`), and media
files must play wherever the explorer can open them
## Supported extensions
Video: `mp4 webm mov m4v mkv avi ogv ts 3gp flv`
Audio: `mp3 wav ogg oga m4a aac flac opus weba wma`
Extension-less media is still claimed via magic-byte sniffing (`ftyp`,
EBML, `OggS`, `fLaC`, RIFF/WAVE, RIFF/AVI, ID3, MP3 frames).
## Install
```sh
dsh plugin --profile web add github:tsonglew/dsh-media-preview
```
(Requires `dsh-better-sidebar` ≥ 0.4.0, which exposes
`ctx.betterSidebar.registerFileViewer`.)
## Configuration
All fields optional (profile patch layer):
```yaml
- id: media-preview
config:
maxMediaBytes: 2147483648 # hard cap on one served file (default 2 GiB)
trustedHosts: [] # extra non-loopback authorities
```
## License
MIT
Install
dsh plugin --profile web add github:tsonglew/dsh-media-preview#ef9685c9b4f0f4e3c810ebf520d3f67d099b1e39
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-media-preview from the hub