dsh-caption-bar
IdentifiedReclaim a full row of vertical space in DeepSeek Harness by moving conversation views into the Windows caption row and utilities into a compact right rail.
dsh-caption-bar
English | 中文
Reclaim a full row of vertical space in DeepSeek Harness. Instead of spending a separate row on conversation navigation and session utilities, this desktop layout plugin seats the view tabs in the Windows caption row and compresses the remaining utilities into a 42px right rail. More of the window is left for the conversation—especially valuable on laptops and other short displays.

It:
- places 对话 / 轨迹 / 上下文 / 编队 on the Windows caption row, immediately after the native 应用 / 编辑 / ⋯ menu, with matching spacing and hover treatment;
- centres the current session title in the room left between those tabs and the native window controls;
- keeps fullscreen immediately left of minimise / maximise / close;
- stacks the remaining header utilities in a compact 42px rail at the right edge;
- shows background-job and subagent status changes in a fixed bubble that never changes rail width.
Verified with Codex UI 1.1.49 and DSH desktop 0.2.1-rc.3+.
Final layout
| Area | Contents |
|---|---|
| Caption row | application menu → view tabs / more-views → centred session title → fullscreen → native window buttons |
| Right rail | agent preset, subagent status/count/menu, background-job status/count/menu, file-manager split control, utilities menu, right-sidebar control |
| Conversation | gives up exactly --dsh-capbar-rail on the right, so the rail never covers messages |
The tab row uses the preload menu's own dimensions and tokens: 28px controls, 10px horizontal padding, 6px radius, 2px gaps, 14px text, and --dsw-alias-interactive-bg-hover on hover. Codex UI's active-tab slider remains the selection indicator.
Compact rail
Compact mode is on by default:
--dsh-capbar-compact: 1;
| Control | Compact representation |
|---|---|
| Agent preset | existing preset icon; full description remains in title |
| Subagent | existing state dot + extracted count + existing chevron |
| Background jobs | existing state dot + extracted count + existing chevron |
| File manager | existing primary button above its existing menu chevron |
| Utilities / right sidebar | unchanged icon controls |
The compact rail is 42px wide with 30px controls (6px on each side). Set this on body to restore complete labels and the 104px rail; the layout sweep notices within two seconds:
--dsh-capbar-compact: 0;
All compact markers, replacement counts and titles added by this plugin are removed when compact mode is disabled or the plugin is unloaded.
Status bubble
Background jobs and subagents publish dynamic status without participating in rail layout:
- the latest change appears for three seconds in one fixed bubble to the rail's left;
- a newer status replaces the previous one;
- clicking the bubble opens the original control;
- the bubble uses only app background, border, radius and text tokens—no custom colour, shadow, blur or animation.
The plugin reads semantic DOM projections (aria-label, status dots and stable data attributes), not private jobs-store APIs.
Visual contract
The plugin is layout-focused. It does not add custom colours, fonts, icons, blur, opacity, shadows or animations. Its deliberate visual exceptions are narrowly tested:
- remove the stock header's
border-bottomhairline; - mirror the preload menubar's existing button dimensions, radius, label colours and hover token for the view tabs;
- hide selected labels in compact mode while preserving existing iconography and dynamic counts;
- style the transient status bubble exclusively with existing app tokens.
It never sets order or display: contents, and it does not replace app controls with custom replicas.
Compatibility notes
The plugin intentionally coordinates with Codex UI:
- sets
body[data-dsh-title-bar-compat]and--dsh-title-bar-strip; - preserves
[data-dcu-tab-slider]by keeping the tab list as its positioned containing block; - relies on semantic selectors where available (
role,aria-*,data-open-target="directory"), with CSS-module class stems only for stable header layout seats; - excludes
[role="menu"]trees from rail text rules and from the layout sweep.
Hosts without Codex UI receive a minimal one-column fallback.
Install
dsh plugin --profile desktop add dsh-caption-bar
Restart the desktop app once after first installation. Uninstall:
dsh plugin --profile desktop remove dsh-caption-bar
Develop
pnpm install
node build.mjs
node test/client.smoke.mjs # 118 assertions
pnpm exec tsc --noEmit
pnpm exec tsc -p tsconfig.types.json
pnpm compat # Codex UI anchors; set DSH_CORE_DIR for extracted core packages
src/client/index.tsx contains the stylesheet, applier, title fallback, fullscreen button, compact-mode projection and status bubble. lib/ is committed because the host serves it directly.
The build refuses to run if a backtick appears inside the SHEET template literal, which turns an otherwise distant SWC syntax error into a precise message.
Diagnostics are compiled but silent by default; set DEBUG = true in the client source while investigating layout state.
Lifecycle
apply() returns its disposer to Cordis. Unloading the plugin retracts:
- injected stylesheet, body class and Codex UI compatibility marker;
- title fallback and status bubble;
- MutationObserver / ResizeObserver instances, intervals and pending timeouts;
- event listeners and slot occupants;
- measured CSS variables, semantic data markers and plugin-owned titles;
- inline layout overrides, restored to the values they displaced.
The smoke suite drives the real disposer and asserts this contract.
Tuning
| Variable | Default | Meaning |
|---|---|---|
--dsh-capbar-compact | 1 | 1: compact 42px rail; 0: full-label 104px rail |
--dsh-capbar-compact-box | 30px | compact control target |
--dsh-capbar-rail | 104px | full-label width; compact mode overrides it to 42px |
--dsh-capbar-rail-gap | 6px | vertical gap between rail items |
--dsh-capbar-button | 28px | fullscreen button box |
--dsh-capbar-gap | 10px | gap before native caption buttons |
--dsh-capbar-controls | measured / 138px floor | native caption-button reservation; 0 in fullscreen |
--dsh-capbar-lead | measured | application menu's right edge plus band gap |
--dsh-capbar-title-* | measured | title bounds, width cap and visibility |
Troubleshooting history
The detailed five-part incident records live in the workspace's dev-troubleshooting.md (faults 27–36). They cover the tab overflow feedback loop, title visibility, app-region hit testing, containing-block drift, disposer loss, conditional title markup, rail redesign, active-slider containing block, dynamic status width, compact cascade order and menu-surface isolation.
License
MIT
Comments
Loading…
Similar plugins
by sweet560
DeepSeek Chat (chat.deepseek.com) as a DSH sidebar panel: full main-area chat, last-conversation memory, crash containment.
★ 1
MIT
JavaScript
Oct 24, 2026
dsh plugin --profile web add dsh-plugin-deepseek-chatby Timebro9999
Manage your whole workspace in the DeepSeek Harness sidebar: a pinned band for projects and conversations, a bell activity view with answer previews, per-project emoji icons, and collapsible 置顶/项目/组件 sections. On npm as dsh-session-deck. Bilingual (EN/中文).
★ 0
MIT
JavaScript
Oct 1, 2026
dsh plugin --profile web add dsh-session-deckby AbelKeithsun
In-session question minimap for the DeepSeek Harness Web GUI: a vertical column of round dots overlaid on the left edge of the conversation column, one dot per user question — hover enlarges and shows
★ 6
↓ 399/wk
MIT
TypeScript
Sep 6, 2026
dsh plugin --profile web add @luziyang2026/dsh-question-navby lzbaclz
Codex-style conversation outline for DeepSeek Harness Web: a right-edge rail with hover preview and click-to-jump
★ 6
↓ 17/wk
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add dsh-conversation-outlineby UlaBe
Conversation position navigator plugin for DeepSeek Harness: right-edge floating button + drawer listing every user message (auto-loads full history), click to jump. Install via dsh plugin add @ulabe/
★ 0
JavaScript
Aug 19, 2026
dsh plugin --profile web add @ulabe/dsh-conversation-navby biggerboy
Codex-style tick-rail and thinking-process fold for DeepSeek Harness Web GUI: per-turn dashes, hover preview, click-to-scroll, eager history, collapsed Think/tool rows.
★ 6
↓ 526/wk
MIT
JavaScript
Oct 14, 2026
dsh plugin --profile web add @biggerboy123/dsh-conversation-anchors