Contributing
August 15, 2026 · View on GitHub
Thanks for your interest in dsh-multi-folder!
Development loop
There is no build step:
- The host half (
lib/index.js) is plain ESM. - The client half (
lib/client.js) is a hand-maintained factory bundle in the DSH client-modules format (see docs/design.md). Edit it in place — do not reformat it into source that a bundler would need to rebuild.
Run the runtime-free tests with Node directly:
node test/smoke-host.mjs
node test/intercept.mjs
node test/smoke-client.mjs
Trying changes locally
Link the repository into a DSH profile and restart the backend:
dsh plugin --profile web add link:<path-to-this-repo>
# restart the DSH backend, then refresh the browser page
Host changes need a backend restart; client changes are picked up on page refresh
(the bundle route serves cache-control: no-cache).
Before submitting
- Keep the three test files green and extend them for new behavior.
- When changing client copy, keep the zh and en dictionaries in
lib/client.jsin sync — the key sets must match (bilingual balance). - Update
CHANGELOG.mdunder the current unreleased section. - Update
docs/design.mdif invariants change (especially anything touching the security boundary described inSECURITY.md). - Keep
README.mdandREADME.zh.mdin sync.
Commit style
Small, focused commits with a clear imperative summary. No enforced format beyond that.