Contributing
Getting Started
Section titled “Getting Started”- Fork the repository
- Clone your fork
- Create a feature branch
- Make your changes
- Run checks
- Open a pull request
Development Setup
Section titled “Development Setup”Prerequisites
Section titled “Prerequisites”- Go 1.23+
- Node.js 20+ (for frontend)
uv(for docs)
Backend
Section titled “Backend”go mod downloadmake testmake lintFrontend
Section titled “Frontend”The desktop app frontend lives in wails-ui/workset/frontend:
cd wails-ui/workset/frontendnpm installnpm run devmake docs-serveCommit Messages
Section titled “Commit Messages”Follow Conventional Commits:
feat(threads): add snapshot APIchore(ci): update release pipelinefix(terminal): handle PTY cleanup on exitPull Requests
Section titled “Pull Requests”Include:
- Summary of changes
- Rationale
- Tests run
- Docs updates (when behavior changes)
- Screenshots or clips for UI changes
Testing
Section titled “Testing”make testThis runs Go unit tests, integration tests, and frontend tests.
Code Style
Section titled “Code Style”- Go: format with
gofumptviamake lint-fmt - Keep packages lower-case, exported identifiers
PascalCase - Public surface in
pkg/, internal-only logic ininternal/
Directory Structure
Section titled “Directory Structure”| Directory | Purpose |
|---|---|
cmd/ | CLI entrypoints |
internal/ | Private packages (ops, workspace, hooks, session) |
pkg/worksetapi/ | Public API surface and service layer |
wails-ui/workset/ | Desktop app (Wails + Svelte) |
docs-site/ | Documentation site (Astro + Starlight) |
Reporting Issues
Section titled “Reporting Issues”- Use GitHub Issues
- Include reproduction steps, expected behavior, and actual behavior
- For bugs, include
workset versionoutput