thomasvvugt/dsh-wide-stats-footer
dsh-wide-stats-footer
Removes the width clamp on the DeepSeek Harness composer stats footer — long turn/token stats lines span the full composer width instead of truncating
Install
npx @deepseek-ai/dsh plugin --profile web add github:thomasvvugt/dsh-wide-stats-footerRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-wide-stats-footer)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from thomasvvugt/dsh-wide-stats-footer, cleaned of badges and images.
dsh-wide-stats-footer
A DeepSeek Harness (DSH) web plugin that un-clamps the composer stats footer — the line under the input card:
16 turns · 255 steps | LLM 44m17s · Tool call 42m32s | TTFT avg 5.3s · 87 tok/s | Cache hit 97% | Input 32.3M tok · Output 113K tok
Stock DSH clamps that line to the chat content width, so long stats compact into …:
16 turns · 255 steps | LLM 44m17s · Tool call 42m32s | TTFT avg 5.3s · 87 tok/s | Cac…
With this plugin the footer spans the full composer width, centered — no more truncation on wide screens.
Install
dsh plugin --profile web add github:thomasvvugt/dsh-wide-stats-footer
Then restart dsh web. Confirm with dsh --profile web --dump-config (look for the
dsh-wide-stats-footer layer). To pin a release: github:thomasvvugt/dsh-wide-stats-footer#v0.1.0.
The plugin is also listed in the awesome-dsh-plugin
registry, so it installs one-click from the in-app plugin market (dshmarket) and is
findable via plugin search.
Uninstall: dsh plugin --profile web remove dsh-wide-stats-footer, then restart.
What it changes
The stock footer (StatsLine in @deepseek-ai/dsh-client-ui-conversation) is clamped by
its CSS module root rule:
.{hash}_root {
text-align: center;
max-width: var(--dsh-chat-content-width); /* 748px — the clamp */
padding: 4px calc(var(--dsh-composer-side-clearance) + 16px) 0; /* +32px more */
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
margin: 0 auto; width: 100%;
}
The plugin overrides exactly the width clamp and the horizontal padding on that element:
.{hash}_root.{hash}_root { max-width: none; padding-left: 0; padding-right: 0; }
width: 100%, margin: 0 auto and text-align: center stay with the base rule, so the
footer becomes as wide as its container (the composer column) while remaining centered. The
doubled class gives specificity (0,2,0) over the base rule's (0,1,0), independent of
<style> injection order — third-party theme CSS included. An inline-style fallback is
applied to the footer element itself for extra robustness.
Hash discovery (nothing hardcoded)
{hash} is a hashed CSS-module prefix that changes whenever
dsh-client-ui-conversation is rebuilt. The browser half discovers it at runtime:
- scan
document.styleSheetsfor the stats line's separator rule.{hash}_sep { color: var(--dsw-alias-separator-primary); margin: 0 10px }(unique in the app — the other_sep/_separatorclasses use dots or different margins), and - verify the sibling
.{hash}_rootrule actually declares themax-width: var(--dsh-chat-content-width)clamp before touching it.
A second, independent path finds the footer in the DOM directly. MutationObservers on
<head> and <body> re-run discovery when style tags arrive (late bundle materialization,
HMR rebuilds, theme swaps) and when the session view (re)mounts the footer.
If DSH's markup changes in a future release, the plugin degrades to a silent no-op — it never breaks the UI, the stock footer just stays clamped until an update.
Diagnostics
Open DevTools and read window.__WIDE_STATS_FOOTER__:
{ appliedAt, styleHash, domHash, overrideChars, inlineFixed, lastSyncAt }
…

