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.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:marvin9551/dynamic-schulte-dsh
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
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 thedsh.clientclient package is discovered by the web shell. - Client half (
src/client/): the browser bundle, registering thesidebar.footer.actionslot. The panel is a complete game —engine.tsis a pure-TS state machine (no React), whileGridBoard/RouletteBoardrender the static grid and the dynamic roulette. - Build:
tsdown.config.tsmirrors the harness repo's client-bundle conventions — platform modules stay external, everything else inlines, and the output is awindow.__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-appbundle) - Depends on: React 18 (a platform module) — no backend, no model involvement
- Requires browser localStorage support
License
MIT
Links
More in this category
PC2005-cloud/dsh-pet#dsh-pet★ 6184
Desktop pet for the DSH Web UI on Windows, macOS and Linux: 106 transparent animations in the browser overlay or a transparent always-on-top desktop window, throw-and-bounce drag physics with squash and particle scoring, a work-status bubble driven by live session events, self-talk and chat with persistent memory, balance display, meme-image bubbles, multiple pets on screen, and drop-in custom animations and pet packs.
flizzywine/dsh-tavern#dsh-tavern★ 1589
An agent-powered tavern for DeepSeek Harness with SillyTavern compatibility, character card imports, support for multiple models, and mobile play. Install the tavern from Settings → Tavern Launcher on desktop. A launcher derived from 2NF/dsh-profile-bridge (MIT): it downloads the tavern into a separate DSH profile and switches profiles on restart. Install this launcher or the upstream plugin, not both — they claim the same /profile-bridge channel.
Alterssss/dsh-bili-whale★ 1036
A Bilibili companion that keeps its own schedule. A 60-second tick in the plugin host wakes a dedicated agent session at a random moment inside the configured time windows (opting out of a day is a configurable chance), then hands it a bundled CLI of 38 subcommands — feed, subtitles, danmaku, comments, ffmpeg frame grabs, and two diaries. Shares at most N items a day by commenting on them and @-mentioning the owner (default 3, enforced from a written quota log, and it stops on rate-limit or captcha signals). Also polls comment replies, direct messages and live-room danmaku; replies to anyone but the owner are queued for approval in Settings. Settings → 养鱼 writes ~/.dsh/bili-whale.config.json; cookies live separately in ~/.bili-ai/credentials.json and are never echoed back. The HTTP routes are loopback-only behind DSH's trust fence. Needs Node 18+ and ffmpeg on PATH for frame extraction.
Nagi-ovo/dsh-ads★ 719
Parody ads in 2005-Chinese-web style: sidebar banners, in-chat feeds, corner popups, and a close button whose hit area is smaller than it looks. All fictional.
yyh-001/dsh-meme★ 565
Chat meme stickers: text-only send, mood auto-send, QQ/WeChat-style picker, auto-learn, custom packs.
vlln/whale-girl★ 407
Desktop pet (QQ-pet style): floats in the corner, draggable, feedable, playable.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.