Thanks for considering a contribution. This project is in pre-alpha: the architecture is being shaped, the codebase is small, and we are deliberately keeping the surface area lean. The fastest way to help is to file thoughtful issues; the second fastest is to start a discussion before writing code.
- Read
docs/VISION.md— locked product decisions - Read
docs/PRINCIPLES.md— CI-enforced engineering constraints - Read
CLAUDE.md— repository conventions - Search existing issues and discussions before opening a new one
Use Node.js 22 LTS and the pnpm version pinned in package.json (currently 10.33.4).
From your local checkout, run:
corepack enable pnpm
pnpm install --frozen-lockfile
pnpm devThese commands also work in Windows PowerShell. Use pnpm, not npm install or
npm run dev: this repository uses pnpm workspaces. If pnpm is not found,
enable its Corepack shim and make sure it is on PATH; invoking only
corepack pnpm dev is insufficient when Turborepo cannot find the pnpm binary.
pnpm dev starts both the Electron desktop app and the documentation site.
To start only the desktop app, use pnpm --filter @open-codesign/desktop dev.
The desktop UI opens in an Electron window; opening its Vite URL in an ordinary
browser does not provide the desktop IPC APIs.
Use our issue templates:
- Bug report — reproduction steps, OS/version, and a diagnostics bundle (Settings → Storage → Export diagnostics) speed up triage significantly.
- Feature request — explain the user problem before proposing a solution, and confirm the proposal does not conflict with the hard constraints.
- Open an issue or discussion first for anything bigger than a typo. We may have already considered the change, or have a better path in mind.
- Fork, branch, code. Branch name:
<type>/<short-slug>(e.g.feat/url-style-steal,fix/cjk-pptx-wrap). - Conventional Commits subject required. Types:
feat,fix,docs,chore,refactor,test,perf,ci,build. - Run locally:
pnpm lint && pnpm typecheck && pnpm test. If lint only reports Biome formatting or safe autofix issues, runpnpm lint:fix, commit the result, then rerun the checks. - Add a changeset if your change is user-visible:
pnpm changeset. - One concern per PR. Refactors, fixes, and features in separate PRs.
- Keep PRs small. Anything over ~400 LOC of substantive change should be split or pre-discussed.
Adding a production dependency requires PR description to include:
- Install size impact (run
pnpm why <pkg>and report the unpacked size) - License (must be MIT-compatible permissive software: MIT, BSD, ISC, or similar; never GPL/AGPL/SSPL)
- Why this and not alternatives
- Could it be a peer dep instead?
The bar is intentionally high. We're at < 30 prod deps and want to stay there.
Biome handles formatting and most lint rules. pnpm lint:fix applies fixes. Don't hand-format.
By submitting a PR, you agree that your contributions are licensed under MIT.
- Architecture / direction: GitHub Discussions
- Bugs / feature requests: GitHub Issues
- Real-time chat: (Discord link to be added)