DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Client Ui Peak Hour — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
C

@mateobarbato/dsh-client-ui-peak-hour

Client Ui Peak Hour

Peak-hour card above the composer and a next-peak pill in the composer stats row for the DeepSeek Harness web GUI

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:MateoBarbato/deepseek-peak-hour-banner#832ac0887ffad08006f3bada020437665ae3b664
READMECompatibilityVersions

Compatibility and provenance

Client Ui Peak Hour is published as @mateobarbato/dsh-client-ui-peak-hour and currently resolves to version 1.0.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/11/2026

Versions

1.0.0stable
9/11/2026

Related plugins

Loading related plugins…

Latest
1.0.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/11/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in ui-customization.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profileExperimental Web profile layer for Agent Teams Remote and UI pluginsRemote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rClient Ui Task Board@linxin666/dsh-client-ui-task-boardHost-authoritative task board for the DSH Web GUI with real session execution, Host cron scheduling, and optional cross-platform idle-sleep protection; mounted without DSH source changes.

README

deepseek-peak-hour-banner

A DeepSeek Harness web-GUI plugin that keeps DeepSeek's peak-hour rates in sight, in two seats over one clock:

StateSeatLook
Peakconversation.input.dock — the context strip above the composer, next to Todo / Goal / QueueAmber card: ⚡ HORA PICO · tarifas al doble · Termina en 1 h 12 min · 04:00 UTC / 01:00 local
Off-peakconversation.composer.dock — the composer footer, beside the shipped StatsPills rowMuted pill: ✓ Fuera de hora pico · próxima 22:00 local (en 1 h 12 min)

Only one seat renders at a time, and each flips on its own at the next UTC boundary: the card sits above the composer exactly while the provider bills peak rates, and the schedule waits quietly in the footer the rest of the time.

Both strings are plain literals in lib/client.js and ship in Spanish; edit them to localize.

English | Español

The schedule

Taken from the official pricing page (api-docs.deepseek.com/quick_start/pricing): off-peak rates are half of peak rates, and peak hours are 01:00–04:00 and 06:00–10:00 UTC, Monday through Friday. Every other hour is off-peak.

Windows are always evaluated in UTC, because that is what the provider bills in. Local clock time is only displayed, never used for the decision.

If DeepSeek ever changes the schedule, edit PEAK_WINDOWS_UTC in lib/client.js (offsets in minutes from UTC midnight) and reinstall.

Requirements

  • DeepSeek Harness with the web profile (dsh --profile web).
  • A profile with patchReload: live (the shipped web profile is).

Install

The repository root is the plugin package, it declares itself a dsh.bundle, and its browser bundle is committed — so there is no build step and no build permission to grant.

git clone https://github.com/MateoBarbato/deepseek-peak-hour-banner.git
dsh plugin --profile web add ./deepseek-peak-hour-banner

dsh plugin forwards to pnpm in the profile directory, which links the checkout and appends the package to dsh.profile.bundles. The bundle patch (cordis.patch.yml) then inserts the plugin row, so nothing else is needed. Because the install is a link to your checkout, later edits to this repository are picked up on save — the host's client-HMR poll reloads the browser bundle within a second.

The same command accepts the other distribution forms, none of which need a build permission:

dsh plugin --profile web add @mateobarbato/dsh-client-ui-peak-hour        # registry
dsh plugin --profile web add ./deepseek-peak-hour-banner-1.0.0.tgz        # pnpm pack
dsh plugin --profile web add github:MateoBarbato/deepseek-peak-hour-banner

Verify the layer without booting, then restart the GUI (a bundle layer is composed at boot; only the profile patch hot-reloads):

dsh --profile web --dump-config   # shows a "# == @mateobarbato/dsh-client-ui-peak-hour" layer

Uninstall

dsh plugin --profile web remove @mateobarbato/dsh-client-ui-peak-hour

How it works

FileRole
package.jsonDeclares dsh.bundle (the installable layer), dsh.client.platform: web, and the ./client export that dsh-client-modules discovers.
cordis.patch.ymlThe bundle layer: the insert row that mounts the plugin in a profile.
lib/index.jsHost half: an empty apply(), present only so the row mounts in the host Loader tree.
lib/client.jsBrowser half: a classic script registering one lazy factory on window.__ModuleLoader__.
test/schedule.test.mjsSchedule test: window edges, the Friday→Monday gap, and a minute-by-minute scan.
test/render.test.mjsRender test: both seats server-rendered with real React under a frozen clock, one per state.

Four contracts make this a plugin rather than a fork:

  • Bundle side — package.json declares dsh.bundle.patch, which answers "what does this package contribute?" with a patch layer. That is what makes dsh plugin add append the package to a profile's dsh.profile.bundles instead of installing it as an inert dependency.
  • Host side — package.json declares dsh.client with platform: "web" and exports ./client, so the client-modules host half serves the bundle at /plugins/@mateobarbato/dsh-client-ui-peak-hour/client.js and puts it in window.__DSH_BOOT__.
  • Browser side — the bundle registers a factory (factory(require) → exports) whose exports are an ordinary Cordis plugin (apply + inject). react is a platform seed word, so no dsh.client.external entry is needed, and the factory body runs at materialization rather than at script load.
  • Seat geometry — the card copies the shipped GoalBar dock box (side clearance plus four dock insets), so its max width resolves to --dsh-chat-content-width and it lines up with the composer card and the message action row instead of spanning the pane. The footer pill copies the StatsPills row instead: same column width, same centering, same --dsw-alias-label-tertiary colour and 13px scale, so it reads as one more stat rather than a second banner.

Why the pill is not inside StatsPills

StatsPills renders a root element in @deepseek-ai/dsh-client-ui-chat and exposes no slot inside it, so a plugin cannot add a child to that row — conversation.composer.dock is the slot that row occupies. Occupying it puts the pill in the same footer area and block, right after the stats, which is why the seat copies that row's geometry rather than nesting in it.

Development

npm install    # react + react-dom, used only by the render test
npm test       # schedule logic + both seats rendered in both states

The browser half has no build step: lib/client.js is committed as-is. A linked install picks edits up on save — the host's client-HMR poll reloads the browser bundle within a second, and a page reload is the fallback. Only a change to cordis.patch.yml needs a restart, because bundle layers are composed at boot.

Publishing

The package is ready for npm publish: the name is scoped to its author, files ships lib/, the patch and the docs, and there is no build output to produce (or pnpm pack if you would rather hand out a tarball).

Status

Verified on dsh 0.1.5-rc.1 (web profile): the schedule logic and both seats are covered by the test suite, and the package composes into a profile's entry list as a bundle layer through the real Cordis patch engine. There is no end-to-end browser test.

License

MIT