Prepare the desktop build environment
The application README specifies Node.js 22, npm with the committed package-lock.json, and system Git on PATH. Linux also compiles the native terminal dependency and needs Python 3, GNU Make, and a C++ compiler.
On Debian and Ubuntu, build-essential supplies make and g++. CMake alone does not replace these tools. These prerequisites belong to the desktop application source; this Astro website has its own setup instructions.
sudo apt update
sudo apt install -y build-essential python3Clone, install, and start
Clone the desktop repository and install its locked dependency set with npm ci. Starting the development app automatically runs electron:install if the Electron runtime is missing.
Fetching Electron requires access to its release downloads. You can run npm run electron:install explicitly ahead of time. If npm reports skipped scripts for esbuild or node-pty, follow the package-specific approval and rebuild instructions in the upstream README.
git clone https://github.com/GitWorkbench/workbench.git git-workbench
cd git-workbench
npm ci
npm run devCheck a contribution against real Git
Run the TypeScript check and automated tests before submitting an application change. The suite covers UI behavior, typed IPC, hosting adapters, and Git workflows in temporary repositories.
npm run demo:create builds disposable repositories with branches, staged edits, stashes, worktrees, and prepared conflicts for manual exploration. Read the generated GUIDE.md for the matching fixture, and keep personal repositories separate from these experiments.
npm run typecheck
npm test
npm run test:coverage
npm run demo:createPackage and contribute
Use npm run dist:linux for AppImage, Debian, RPM, and Arch packages, npm run dist:win for the NSIS installer, or npm run dist:mac for a DMG and ZIP. macOS release builds are unsigned and use manual updates.
Read the contributor conventions before making development changes. Open a focused pull request explaining the behavior and validation. Local packaging commands produce files; release publication and upload are handled separately by the application’s release workflow.