Contributing

How to contribute to Yap

We welcome contributions to Yap! This guide explains how to get involved.

Ways to Contribute

  • Bug Reports — Found a bug? Open an issue
  • Feature Requests — Have an idea? Start a discussion
  • Code — Fix bugs or implement features
  • Documentation — Improve docs or add examples
  • Testing — Test on different platforms

Getting Started

  1. Fork the repository on GitHub
  2. Clone your fork locally
  3. Set up the development environment (see Building)
  4. Create a branch for your changes
git clone https://github.com/YOUR_USERNAME/yap.git
cd yap
git checkout -b feature/your-feature-name

Development Workflow

1. Make Changes

Edit code, add features, fix bugs.

2. Test Locally

wails dev

Test your changes thoroughly:

  • Does the feature work as expected?
  • Are there any regressions?
  • Test on your platform

3. Commit Changes

We use Conventional Commits:

# Feature
git commit -m "feat: add support for custom hotkeys"

# Bug fix
git commit -m "fix: resolve crash when no microphone connected"

# Documentation
git commit -m "docs: update installation instructions"

# Refactoring
git commit -m "refactor: simplify audio recording logic"

# Chore
git commit -m "chore: update dependencies"

Commit types:

  • feat — New feature
  • fix — Bug fix
  • docs — Documentation only
  • style — Formatting, no code change
  • refactor — Code change that neither fixes nor adds
  • test — Adding tests
  • chore — Maintenance tasks

4. Push and Create PR

git push origin feature/your-feature-name

Then open a Pull Request on GitHub.

Pull Request Guidelines

Title

Use conventional commit format:

feat: add dark mode toggle
fix: correct transcription timing

Description

Include:

  • What changes were made
  • Why the changes were made
  • How to test the changes
  • Screenshots (for UI changes)

Checklist

Before submitting:

  • Code builds without errors
  • Code follows existing style
  • Changes are tested
  • Commit messages follow convention
  • Documentation updated (if needed)

Code Style

Go

  • Follow standard Go conventions
  • Run go fmt before committing
  • Use meaningful variable names

TypeScript/React

  • Use TypeScript strict mode
  • Follow existing component patterns
  • Keep components focused

Reporting Issues

Bug Reports

Include:

  • Platform (macOS version, Windows version, Linux distro)
  • Yap version
  • Steps to reproduce
  • Expected vs actual behavior
  • Error messages (if any)

Feature Requests

Include:

  • Use case description
  • Proposed solution
  • Alternatives considered

Getting Help

  • Discussions — For questions and ideas
  • Issues — For bugs and feature requests
  • Pull Requests — For code contributions

License

By contributing, you agree that your contributions will be licensed under the MIT License.