Ivory for DSH

A calm, warm-neutral interface for DeepSeek Harness.
Light and dark. Desktop and mobile. English and Chinese. Zero telemetry.

npm version CI status latest release MIT license zero telemetry

简体中文 · Security · Changelog

Ivory for DSH home screen Ivory gives the DSH web interface a quieter reading rhythm without changing how the harness works. Warm neutrals replace cold grays, editorial type improves long responses, and the conversation stays usable from a narrow phone window to a wide desktop. DeepSeek branding and every native DSH capability remain in place. ## Quick start ```sh dsh plugin --profile web add dsh-ivory dsh web ``` Hard-refresh the page with `Cmd/Ctrl + Shift + R`, then open **Settings → Ivory Theme**. The main theme is enabled by default; the optional focus mode stays off until you choose it.
Pin a release or uninstall Install the exact GitHub release without using npm. ```sh dsh plugin --profile web add github:ZJUZhiyuCai/dsh-ivory#v0.2.4 ``` Remove Ivory and return to the native DSH interface. ```sh dsh plugin --profile web remove dsh-ivory ```
## Made for everyday DSH | Area | What Ivory changes | | --- | --- | | **Appearance** | A complete warm-neutral palette for light and dark mode, with restrained shadows, corners, and editorial typography. | | **Responsive layout** | Fluid conversation geometry tested at 375, 768, 1,440, and 1,920 pixels. | | **Reading and copying** | Independent controls for prose, user bubbles, and code blocks, plus a small end-of-response marker. | | **Markdown documents** | A bounded, DOM-built preview for `.md` output with source view always available and HTTP(S)-only links. | | **Accessibility** | Keyboard focus, reduced-motion behavior, forced-colors fallbacks, and WCAG AA muted text contrast. | | **Compatibility** | Structural styling degrades to stable theme tokens when the verified DSH selector contract changes. | ## A closer look
Ivory conversation view on desktop Ivory conversation view on mobile
Focused desktop conversation 390 px mobile layout
## Quiet by design Ivory is a browser-only visual plugin. Its host entry point is intentionally inert. | Boundary | Ivory behavior | | --- | --- | | Bundled runtime dependencies | None. DSH client modules and React are peers. | | Filesystem and process access | None. | | Network requests and telemetry | None. | | Persistent data | Two local preference flags in `localStorage`. | | User content | Presented in the browser; copied only after an explicit click. | | Third-party branding | No Anthropic fonts, logos, icons, or application code. | The npm package contains eight allowlisted files and is checked on every CI run. Read the full [security policy](https://github.com/ZJUZhiyuCai/dsh-ivory/blob/main/SECURITY.md), [architecture boundary](https://github.com/ZJUZhiyuCai/dsh-ivory/blob/main/docs/ARCHITECTURE.md), and [third-party notices](https://github.com/ZJUZhiyuCai/dsh-ivory/blob/main/THIRD_PARTY_NOTICES.md). > [!NOTE] > DeepSeek Harness is in developer preview and may make breaking UI changes. > Ivory 0.2.x is verified against DSH 0.1.0-rc.6. When Ivory cannot prove the > current structural contract, it keeps token-level theming and releases the > host layout back to DSH.
Quality and release checks ```sh npm ci npm test # 14 static, build, publint, and package checks npm run qa:r2 # 69 browser regressions; DSH must run at 127.0.0.1:3080 npm run qa:adversarial # 25 stress checks: reconciliation safety, toggle/resize storms, degraded mode npm run qa:activity # 13 checks for thinking/tool-call rows, icons, and terminal polish ``` The browser suite covers responsive layout, composer focus, dark mode, Markdown injection attempts, streaming state, lifecycle cleanup, block-copy payloads, plugin coexistence, long tables, reduced motion, and forced colors. Releases use npm Trusted Publisher with GitHub OIDC. The repository stores no long-lived npm publish token, and future CI releases receive npm provenance automatically.
Development ```sh npm ci npm run build dsh plugin --profile web add link:$PWD dsh web ``` Edit `src/skin.css` or `src/client.template.js`, then run `npm run build`. The generated `lib/client.js` is committed so GitHub installs need no build permission. ```text src/skin.css theme and compatibility styles src/client.template.js client lifecycle and optional enhancements lib/client.js deterministic generated browser bundle lib/index.js inert host entry point cordis.patch.yml DSH bundle registration scripts/ build and verification gates ``` See [CONTRIBUTING.md](https://github.com/ZJUZhiyuCai/dsh-ivory/blob/main/CONTRIBUTING.md) before opening a pull request.
## Independent community project Ivory is unofficial and is not affiliated with, endorsed by, or sponsored by Anthropic or DeepSeek. Claude is a trademark of Anthropic PBC. DeepSeek and DeepSeek Harness may be trademarks of their respective owners. Released under the [MIT License](https://github.com/ZJUZhiyuCai/dsh-ivory/blob/main/LICENSE).