4.2 KiB
DSH Desktop repository rules
This repository owns WorkDSH Web and Desktop. The Desktop product runs an unmodified pinned DeepSeek Harness checkout; the Web workspace consumes the same DSH version through published packages.
Git branch and release policy
- Keep exactly one long-lived product branch: the GitHub default branch, currently
main. Do not maintainmainandmasteras parallel product or release lines. - Development and migration branches are temporary. Bring every accepted change back to the default branch through a reviewed pull request; verify required checks and that the intended commits are present there before treating the work as delivered.
- Create Desktop release tags and publish product artifacts only from commits reachable from the default branch. A successful build on a temporary branch is validation, not a release.
- After a temporary branch has been merged and its changes verified on the default branch, delete that temporary branch. Retain an unmerged branch only while its work is still under review; do not delete unique history.
- If the default branch is renamed, update GitHub settings, CI, website deployment, release triggers, and documentation together before removing the old branch.
Prerequisites and setup
- Use Node.js
^22.19.0or>=24.0.0and the root Yarn4.18.0release through Corepack. - Initialize the pinned upstream checkout with
git submodule update --init --recursive. - Install root dependencies with
corepack yarn install --immutable.
Build, run, and verify
-
Start the desktop development workflow with
corepack yarn dev. -
Build the desktop package with
corepack yarn build. -
Run unit tests with
corepack yarn test. -
Run type checking with
corepack yarn typecheck. -
Run the complete headless gate with
corepack yarn check. -
dsh-plugin-desktop/is the only Desktop source and release workspace. Do not reintroduce a copied Beta package; optional release channels must build from this same source and pinned DSH version. -
The pinned
deepseek-harness/version is the single DSH version for the packaged WorkDSH Profile. Desktop source is an Electron carrier without direct DSH dependencies. A DSH upgrade is incomplete untilcorepack yarn check:desktop-dsh-alignment, the Desktop checks, and a packaged-runtime check pass. Default to the newest official stable DSH release after compatibility validation; use a pre-release only by explicit product decision. Do not tag a Desktop release while the version gate fails. The carrier must contain no second DSH installation. -
workdsh-web/owns the Web application and WorkDSH feature packages. Its package manifests must declare the same exact DSH version asupstream.json; runcorepack yarn check:web-dsh-alignmentwhen either side changes. The Web workspace remains self-contained and does not import or modify the Desktop submodule. -
Run upstream operations through the root scripts, such as
corepack yarn upstream:build. -
deepseek-harness/is a pinned upstream Git submodule. Never edit files inside it from a desktop feature branch. -
dsh-plugin-desktop/owns the Electron carrier, packaging, and release tests. DSH Host and Client code comes from the pinned upstream runtime Profile; WorkDSH features belong to the WorkDSH Profile packages. -
The Desktop workspace uses the root Yarn release with
nodeLinker: node-modules. The nestedworkdsh-web/workspace retains its own pinned pnpm lockfile and package manager; run its commands from that directory. Do not install it into the root Yarn workspace. -
The upstream submodule keeps its own pnpm workspace. Run upstream commands through the root
upstream:*scripts, whose Yarn portable-shell commands enter the submodule before invoking Corepack. -
Keep presentation and WorkDSH feature changes in the Profile rather than adding a second Desktop Host or Client implementation.
-
Keep graphical application launch explicit. Builds, typechecks, unit tests, and Loader smokes must remain headless-safe.
-
Commit before major changes of direction and keep the submodule pin update separate from desktop behavior changes.
-
Keep the repository topology and package-manager split consistent with the owning Agent Note.