๐ฌ Turbo Pascal 7.0 Blue-Screen Skin (DSH Web GUI)
August 14, 2026 ยท View on GitHub
English | ็ฎไฝไธญๆ
Recreates the DeepSeek Harness web GUI in the classic Turbo Pascal 7.0 IDE (1992) look: deep-blue desktop, striped menu bar, menu-style highlights, DOS 3D beveled controls, block caret, and a TP status bar.

Add a screenshot as
docs/preview.png(~1280ร800) to show the actual result in this README.
โจ Features
| Area | Effect |
|---|---|
| Desktop background | Classic TP blue #0000AA, black message surface |
| Header menu bar | TP7.0 diagonal-stripe background + gray divider line |
| chat / trajectory tabs | TP7.0 menu-style highlight: selected tab inverse white-on-deep-blue, unselected transparent white, hover deep blue |
| Breadcrumb navigation | Transparent with light text, hover deep blue |
| Top-left brand logo | Transparent menu style, hover deep-blue highlight |
| Sidebar workspace buttons | Search / view options / new โ all transparent white icons |
| Plugin config cards | Deep-blue card + white plugin name, readable header |
| Regular buttons / inputs | DOS 3D bevel (raised buttons, recessed inputs, inverted on press) |
| Caret / selection / focus | Bright-green block caret, inverse-video selection, yellow focus ring |
| Scrollbars | Square gray thumb + deep-blue track |
| Bottom status bar | F1 Help | F2 Save | F3 Open | F9 Compile | F10 Menu |
| Typography | System sans for legibility (Arial / Segoe UI family), monospace preserved for code |
๐ Installation
This is a client-side (browser) plugin only โ no Host logic involved. Pick either installation method:
Option 1: Dynamic plugin (recommended, zero modification)
In your DSH session, ask the agent to:
- Run
cordis_defineto create a new plugin withidPrefixset totpsk; - Pass the full contents of
plugin/dynamic.jsascode.client(leavecode.hostempty); - Run
cordis_runto activate, approve, then refresh the page.
Dynamic plugins are session-scoped and in-memory; they need to be re-loaded after a restart. Great for a quick try.
Option 2: Fixed plugin (integrate into the DeepSeek Harness repo)
Copy this directory's src/, package.json, tsconfig.json, and tsdown.config.ts into the repo as packages/client/ui-tp7-skin/, then:
-
Add a row to the browser roster in
packages/bundle/web-app/cordis.patch.yml:- id: ui-tp7-skin name: '@deepseek-ai/dsh-client-ui-tp7-skin' -
Add the dependency to
packages/bundle/web-app/package.json:"@deepseek-ai/dsh-client-ui-tp7-skin": "workspace:^" -
Add the reference in the root
tsconfig.client.json:{ "path": "./packages/client/ui-tp7-skin" } -
Build and restart:
pnpm install pnpm --filter @deepseek-ai/dsh-client-ui-tp7-skin bundle pnpm run build:lib:clientAfter restarting
dsh --profile web, the skin applies automatically and appears under Settings โ Plugins (Plugin list).
๐ Directory Layout
dsh-tp7-skin/
โโโ README.md # This document
โโโ LICENSE # MIT license
โโโ package.json # Fixed-plugin package metadata
โโโ tsconfig.json # TypeScript config (client)
โโโ tsdown.config.ts # tsdown bundle config
โโโ plugin/
โ โโโ dynamic.js # Dynamic-plugin edition (single file for cordis_define)
โโโ src/
โโโ css-modules.d.ts # CSS Modules type declarations
โโโ index.ts # Node half (empty apply)
โโโ invariant.ts # Invariant companion package
โโโ client/
โโโ index.ts # Browser half: token overrides + status-bar registration
โโโ skin.module.css # Global skin stylesheet (:global rules)
๐งฉ How It Works
- Theme token overrides:
theme.overrideTokenslocks all 13--dsw-alias-*tokens to the TP7.0 palette (light == dark), so the skin does not follow the OS scheme; - Global stylesheet injection: the CSS ships as
.module.css; the build pipeline auto-injects a<style data-plugin-css>tag that is removed with the plugin fiber. Every rule is wrapped in:globaland targets regions through slot wrappers ([data-slot='...']) instead of hashed class names; - Status bar: registered into the
conversation.composer.dockslot (list entrytp7-statusbar), rendered withReact.createElement.
โ๏ธ License
MIT ยฉ 2025
Acknowledgements: Design homage to the Borland Turbo Pascal 7.0 IDE (1992) โ the blue screen that accompanied a generation of programmers.