DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

ireza7 /

ireza7/dsh-persian-rtl

Verified

Persian (Farsi) RTL fix for DeepSeek Harness: automatic per-paragraph direction for assistant answers, thinking cells, tool cells and question boxes

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@23fc39f4

dsh-persian-rtl

Persian (Farsi) RTL fix for DeepSeek Harness — until RTL is handled officially.

What it does

Fully automatic per-paragraph text direction (unicode-bidi: plaintext): every paragraph follows its own first strong character — Persian paragraphs render right-to-left, English ones stay left-to-right. No buttons, no settings.

Covered surfaces:

  • Assistant answers — including while streaming
  • User + steering message bubbles — including composer submit echoes
  • Thinking / reasoning cells (turn-process members and inline reasoning, reasoning flow nodes)
  • Tool-call / tool-result cells — any data-tool row (including ask_user_question rendered inside the chat flow)
  • Question boxes + plan-review cards (composer-takeover cards)

Intelligent mixed-language detection — When a Persian sentence begins with an English word, technical term, or inline code (e.g. React یک کتابخانه است or 1. Node.js را نصب کنید), standard browser first-strong-character heuristics mistakenly classify it as LTR. The plugin dynamically analyzes character composition and enforces RTL base direction with full streaming support.

Latin runs stay intact — code, pre, kbd, and links are isolated LTR, so English words and numbers keep their order inside Persian text instead of jumping around.

Logical geometry fixed — lists, blockquotes, and task checkboxes use inline-start padding/borders, so RTL paragraphs get correctly-sided bullets, quote bars, and gaps.

The composer, sidebar, and settings are left alone, and no shipped renderer is replaced — the plugin only adds CSS.

Install

Pick whichever is easiest — no local clone needed in any of them.

Web UI: open Plugins in the sidebar → install → enter the spec:

github:ireza7/dsh-persian-rtl

Agent tool (Creator mode session):

install_bundle with target = github:ireza7/dsh-persian-rtl

CLI:

dsh plugin --profile web add github:ireza7/dsh-persian-rtl

The bundle takes effect immediately in live profiles (no restart).

Alternatives:

  • Full repo URL: https://github.com/ireza7/dsh-persian-rtl
  • From a local clone: install_bundle with target = /path/to/dsh-persian-rtl
  • From npm (if published): install_bundle with target = dsh-persian-rtl

To remove it later: remove_bundle with the bundle name.

How it works

  • A <style> element is mounted via ctx.effect providing per-paragraph direction and logical geometry fixes.
  • A high-performance, batched MutationObserver (requestAnimationFrame) monitors chat surfaces in real time to identify and correct mixed paragraphs starting with Latin runs, ensuring seamless streaming support without UI flicker.
  • Clean lifecycle management: unmounting clears the observer, timers, and removes all applied attributes leaving zero residue.

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 23fc39f4b835

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout