dsh-window98-theme
A faithful Windows 98 skin for the DeepSeek Harness (DSH) web GUI, derived from the classic 98.css design system.
Teal desktop, silver beveled panels, navy accents, pixelated MS Sans Serif, raised 3-D buttons, sunken text fields, and checkerboard scrollbars — with a matching dark variant ("Win98 night") that keeps the retro bevels on dark gray surfaces.
Features
- Complete token remap — overrides the full
--dsw-alias-* design-token layer (≈90 tokens) in both light and dark modes, so every component (buttons, hovers, code blocks, chat bubbles, sidebar, tooltips, scrollbars) follows the Win98 palette.
- Classic chrome — 98.css-style beveled buttons (pressed state included), sunken inputs with the original dropdown arrow, beveled
<pre>/<fieldset>, dotted focus outlines, navy ::selection.
- Pixelated typography — loads the 98.css "Pixelated MS Sans Serif" webfont and disables font smoothing for that authentic bitmap look.
- Checkerboard scrollbars — the original 98.css checkerboard track, beveled thumb and four arrow buttons.
- Square corners everywhere — global
border-radius/corner-shape reset plus modern shadows, blur and transitions removed.
- Theme picker entries — registers
window98 (light) and window98-dark (night) themes in the DSH theme picker.
- Careful exclusions — view tabs, breadcrumb titles, brand pills, badges/chips/tags stay flat, so navigation and headers keep their native look.
- Instant apply + persistence — the Client half hot-applies tokens through the theme service (no refresh); the Host half injects the full stylesheet into every served
index.html, so the skin survives reloads.
Installation
Requires DeepSeek Harness with the web profile enabled. Install from GitHub:
dsh plugin --profile web add github:lffrom0303/dsh-window98-theme
Restart dsh web for the plugin to take effect.
To remove:
dsh plugin --profile web remove dsh-window98-theme
Dynamic plugin (one-click, no install)
You can also use it as a dynamic Cordis plugin without installing anything:
- Open the dynamic plugin editor in DSH.
- Paste the whole content of
plugin.dynamic.js into the Client code box.
- Run it — the skin applies immediately and reverts when the plugin stops.
Usage
- The skin is applied automatically. Pick
window98 or window98-dark in the theme picker to pin a mode.
- To disable the skin for the package form, edit
cordis.patch.yml and set config.mode: stock.
Config reference
| Key | Values | Default | Description |
|---|
mode | window98 / stock | window98 | Enable or disable the skin |
How it works
- Host half (
index.js) — registers a webServer.tapIndex transform through the official seam; every served index.html gets a <style id="dsh-window98-theme"> block with the full skin (token maps for html body light and html body[data-ds-dark-theme] dark, plus the chrome CSS).
- Client half (
client.js) — the official web-shell closure factory; registers the two themes and hot-applies the core 13-token override layer through the theme service (ctx.theme.overrideTokens), so switching takes effect without a reload.
- Dynamic form (
plugin.dynamic.js) — the same skin as a single self-contained Client function body using theme.register + theme.overrideTokens + styles.insert.
The design follows 98.css values: teal #008080, silver #c0c0c0, dialog gray #d4d0c8, navy #000080, bevel shadows #dfdfdf/#808080/#0a0a0a.
Compatibility
- DeepSeek Harness web profile (tested on the current
dsh web release line).
- Chromium-based browsers for the checkerboard/arrow scrollbar chrome (other browsers fall back to token-colored scrollbars).
- Node
>= 22.19.0 for the package form.
License
MIT
Links