Skip to content
dsh-market Browse plugins GitHub 中文

marvin9551/dynamic-schulte-dsh

Dynamic Schulte grid waiting-time mini-game: click 1..N in order on a static grid or a spinning roulette wheel while the model thinks.

Stars ★ 1 Category Just for Fun Listed 2026-08-15

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add github:marvin9551/dynamic-schulte-dsh

Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.

README

中文 | English

Dynamic Schulte Table · a waiting-room mini-game plugin for DeepSeek Harness.

The model does not play this game — it exists for you to play while the model is replying. The plugin registers a "Schulte" entry at the bottom of the dsh Web UI sidebar. While the current session's model is thinking, the entry shows a breathing green dot.

Features

  • 🎯 Static grid: classic n×n Schulte Table (3×3 ~ 7×7), tap 1..N in order
  • 🎡 Dynamic roulette: numbers laid out on concentric rings, the wheel spins at an adjustable speed to train hand-eye coordination and anti-distraction
  • 💚 Waiting indicator: the sidebar entry and the panel header both show a hint while the model is thinking
  • 💾 Local persistence: history and settings live in browser localStorage — no backend needed
  • Optional: target highlight / random color noise

Screenshot

Installation

The plugin declares a dsh.bundle manifest, so it installs via dsh plugin add:

# 1. Build (or use a published artifact)
pnpm install
pnpm build

# 2. Install into a profile
dsh plugin --profile <name> add -w /path/to/dynamic-schulte-dsh

# 3. Start the Web UI
dsh --profile <name>

Open the Web UI and click "Schulte" at the bottom of the sidebar to play. To uninstall:

dsh plugin --profile <name> remove dynamic-schulte-dsh

Development

pnpm install        # devDeps: typescript / tsdown / react types
pnpm typecheck      # tsc --noEmit (framework types resolve via tsconfig paths to a local deepseek-harness checkout)
pnpm build          # tsdown → lib/index.js (host stub) + lib/client.js (browser bundle)
pnpm verify:host    # smoke-test the build artifacts

Architecture

  • Host half (src/index.ts): a stub plugin. The game is browser-only; the host half exists so the Cordis Loader row resolves and the dsh.client client package is discovered by the web shell.
  • Client half (src/client/): the browser bundle, registering the sidebar.footer.action slot. The panel is a complete game — engine.ts is a pure-TS state machine (no React), while GridBoard/RouletteBoard render the static grid and the dynamic roulette.
  • Build: tsdown.config.ts mirrors the harness repo's client-bundle conventions — platform modules stay external, everything else inlines, and the output is a window.__ModuleLoader__.load({id, factory}) closure factory served by the web shell at /plugins/dynamic-schulte-dsh/client.js.

Compatibility

  • Runtime: dsh Web UI (@deepseek-ai/dsh-web-app bundle)
  • Depends on: React 18 (a platform module) — no backend, no model involvement
  • Requires browser localStorage support

License

MIT

Content from the project README on GitHub ↗