UI Enhancements

dsh-rastin

Amir83Nasr/dsh-rastin · ★ 0

Amir83Nasr

Rastin — Persian RTL layout (chat, queue, question cards) with IranYekanX face and FiraMono Nerd Font for the sidebar terminal

An English summary is not available; the Chinese summary is shown.

License
MIT
Added
2026-10-30
Maintenance
active
Install kind
npm
npm
@amir83nasr/dsh-rastin
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:38:32.858Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add '@amir83nasr/dsh-rastin@0.3.0'

从 npm 安装预构建包

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Rastin
  2. Features
  3. Install
  4. Requirements
  5. Setup
  6. Workflow
  7. Files
  8. How it works
  9. Release

Rastin

Cordis bundle for the DeepSeek Harness Web GUI: Persian RTL layout with embedded fonts.

Features

  • Persian RTL — chat, queue, and question/plan-review surfaces read right-to-left on the IranYekanX face, shipped as base64 woff2 inside the bundle.
  • Sidebar terminal font — FiraMono Nerd Font Mono. xterm draws on canvas, so CSS alone can't restyle glyphs; the bundle embeds the face and patches the canvas 2d font setter scoped to [data-sidebar-terminal].
  • Todo dock opens by default — host mounts it collapsed; the bundle clicks it open once (user can re-collapse).
  • LTR islands — code blocks, tool-call/command rows, changed-files cards, and process-status labels stay LTR inside the RTL surfaces.
  • RTL arrow mirror — flow arrows (← → ⇐ ⇒) in RTL prose point the RTL way via a per-glyph mirror span; copy text stays intact.

Install

pnpm add @amir83nasr/dsh-rastin

Requirements

  • Node.js 24 (matches ci) + pnpm 12 (packageManager).

Setup

pnpm install --frozen-lockfile
pnpm setup # git hooks: pre-commit = prettier check, pre-push = build + self-check

Workflow

pnpm build # src/client.template.js + fonts → client.js (generated, git-ignored)
pnpm test # build + self-check (mocked ctx, cleanup assertions)

Edit src/client.template.js — never client.js directly.

Files

  • src/client.template.js — editable source (placeholders __IRANYEKAN_B64__, __FIRAMONO_B64__).
  • src/index.js — host half (no rendering).
  • src/cordis.patch.yml — bundle slot patch (rastin / @amir83nasr/dsh-rastin).
  • scripts/build.mjs — template + fonts → client.js.
  • scripts/self-check.mjs — behavioral wiring check.
  • fonts/ — embedded faces (.woff2).
  • locale/ — bundle metadata (en.json / fa.json).
  • client.js — generated output (git-ignored).

How it works

  • One style seat on shell.overlay (rastin-style) injects @font-face + RTL rules.
  • installTerminalFont() patches CanvasRenderingContext2D.font, scoped to the sidebar terminal; reverts on cleanup.
  • autoOpenTodoPanels() observes the DOM and opens collapsed todo panels once; disconnects on cleanup.

Release

See AGENTS.md (RELEASE / PUBLISH (origin)): bump version, update CHANGELOG.md, verify, tag vX.Y.Z, push commit + tag, create GitHub Release.