gal-view · GAL View
中文 | English
A galgame-style conversation view + scene-element visual editor for the DSH Web GUI session page (official bundle plugin format).
Adds a GAL View tab between Chat (「对话」) and Trajectory (「轨迹」) in the session tab bar. Open it and the conversation area becomes a 16:9 galgame stage: placeholder portraits, a large dialogue box, typewriter lines, and player input; the built-in Edit Mode lets you drag, resize and re-layer scene elements like a scene editor, with edits applied to game mode in real time.

Default preset
[gal-scene.json](gal-scene.json) at the repo root is the default preset scene shipped with the plugin (editor export format, with referenced images/fonts embedded): it loads automatically on first launch when no local scene is saved, and Editor Mode's Reset returns to it. To update the preset: edit the scene → export with Ctrl+S → replace the repo-root gal-scene.json with the exported file → npm run build:client and commit.
Installation
The plugin ships in the official bundle format. Install it into the web profile with a single dsh plugin command, then restart web to take effect.
Prerequisites
- DeepSeek Harness is installed and the
dshcommand works in your terminal - If you run Harness from a source checkout (your everyday command is
pnpm dsh):cdinto the Harness repo root first and replacedshwithpnpm dshin the commands below
Install from GitHub (one line)
dsh plugin --profile web add github:Ayase34/gal-view#main#main means the repository's main branch. To pin a specific version, use a commit hash instead, e.g. #ae73dca.
Finish the install
Restart web afterwards (the bundle layer is composed at startup, so a restart is required for the plugin to load). Open a conversation in the Web GUI — a GAL View tab should appear in the tab bar, between Chat and Trajectory.
> Optional check: run dsh --profile web --dump-config; you should see a # == gal-view layer, which means the plugin layer is part of the composition.
Update to a new version
dsh plugin --profile web update gal-view
# restart web afterwards as wellUninstall
dsh plugin --profile web remove gal-view
# restart web afterwards as well> Note: the scene layout, imported images, fonts and reading progress live in your browser (localStorage / IndexedDB). Reinstalling or uninstalling the plugin does not lose them; clearing the browser's site data resets them.
Development
pnpm install # install esbuild devDependency
npm test # pure-logic unit tests (node:test, in-process)
npm run build:client # generate .dsh-plugin/client.js (generated file - do not hand-edit)
npm run check:client # verify client.js freshness
npm run smoke # Playwright smoke (requires DSH_CHECKOUT pointing at a dsh checkout)Structure
.dsh-plugin/index.mjs Node half (minimal, no host behavior)
.dsh-plugin/client/ client sources: scene model/typewriter/transcript mapping/components/styles
.dsh-plugin/client.js build artifact (generated by scripts/build-client.mjs)
scripts/build-client.mjs esbuild builder (--check freshness gate)
tests/ pure-logic unit tests (node:test)