Thank you for your interest in contributing! This document outlines our development workflow and standards.
| Item | Value |
|---|---|
| PRs target | development branch |
| Commit language | English |
| Commit format | Conventional Commits |
| Code comments | English |
Always create an issue before coding.
Create Issue → Create Branch → Develop → PR to development → Close Issue
This ensures work is tracked, discussed, and properly scoped before implementation begins.
Create branches from issues using this pattern:
feature/issue-XX-short-description
fix/issue-XX-short-description
docs/issue-XX-short-description
refactor/issue-XX-short-description
Example: feature/issue-42-add-artwork-cache
Write commits in English using Conventional Commits format:
feat: add artwork cache
fix: fix WebSocket connection on Windows
docs: update installation guide
refactor: simplify transfer protocol
test: add shortcut tests
chore: update dependencies
| Type | Use for |
|---|---|
feat |
New features |
fix |
Bug fixes |
docs |
Documentation only |
refactor |
Code changes that neither fix bugs nor add features |
test |
Adding or updating tests |
chore |
Maintenance tasks |
build |
Build system changes |
- Target branch:
development - Title: Clear description of the change
- Body: Reference the issue with
Closes #XX - Size: Keep PRs focused and reviewable
# Example PR creation
gh pr create --base development --title "feat: add artwork cache" --body "Closes #42"| Item | Convention |
|---|---|
| Packages | lowercase, single word (config, device, shortcuts) |
| Exported | PascalCase (DeviceClient, UploadGame) |
| Unexported | camelCase (parseConfig, buildPath) |
| Comments | English |
| Item | Convention |
|---|---|
| Components | PascalCase (DeviceList.svelte, ArtworkGrid.svelte) |
| Files | kebab-case for non-components (api-client.ts, types.ts) |
| Variables/Functions | camelCase |
| Types/Interfaces | PascalCase |
| CSS classes | Tailwind utilities |
- Comments: Write in English
- Type hints: Always use them (TypeScript)
- Error handling: Wrap errors with context in Go
- Security: Never log credentials or pairing tokens
Always use the build scripts. Never run build tools directly.
# Linux/macOS — build all components
./build_all.sh
# Windows — build all components
build_all.bat
# Individual apps (from their directory)
cd apps/hub && ./build.sh
cd apps/agents/desktop && ./build.shWhen creating issues, use appropriate labels:
| Category | Labels |
|---|---|
| Priority | priority:critical, priority:high, priority:medium, priority:low |
| Difficulty | difficulty:easy, difficulty:medium, difficulty:hard |
| Component | hub, agent, decky-plugin, websocket, discovery, shortcuts, artwork |
- Questions: Open a Discussion
- Bugs: Create an Issue
By contributing, you agree that your contributions will be licensed under the AGPL v3.