-
Notifications
You must be signed in to change notification settings - Fork 4
Contributing Start Here
We want your contribution, and we review fast. Docs fixes, a new voice command, platform polish, a translation — all of it counts, and small PRs are genuinely welcome. This page gets you from clone to merged.
- 🟢 Good first issues — scoped, beginner-friendly, often 10–30 minutes. Comment "I'll take this" and it's yours.
- 🆘 Help wanted — a bit bigger, still well-defined.
- 💡 Ideas — want to build something new? Open or upvote an Idea first so we can scope it together before you write code.
No need to ask permission for a small fix — just open the PR.
YazSes is Python 3.11+ managed with uv.
git clone https://github.com/MSKazemi/yazses
cd yazses
uv sync # install everything, incl. platform deps
uv run python -m pytest tests/ -v # run the test suite (note: python -m pytest)
uv run ruff check src tests # lint
uv run mypy src # type-checkRun the daemon straight from your checkout:
uv run yazses-daemon # start the daemon
uv run yazses doctor # confirm mic/hotkey/model/permissions
uv run yazses status # query it over IPCLinux note: hold-to-talk reads /dev/input, so your user must be in the input group (sudo usermod -aG input $USER, then log out and back in). yazses doctor tells you if this is the problem.
- Keep PRs focused — one concern per PR. It gets reviewed and merged faster.
- Add a test for new behaviour. The suite is fast and the pure cores are designed to be testable without hardware — see How It Works.
- Match the surrounding code — comment density, naming, idioms.
-
Update docs if user-facing — CLI changes touch
docs/cli-reference.md; behaviour changes may touchREADME.mdordocs/.
| I want to… | Look at |
|---|---|
| Fix dictation behaviour |
src/yazses/core/daemon.py + audio/ / stt/ / postprocess/
|
| Add a voice command | src/yazses/commands/grammar.py |
| Add OS / injection support |
src/yazses/platform/base.py + a new platform/<os>/ or inject/ backend |
Improve the CLI or doctor
|
src/yazses/cli.py, src/yazses/system/doctor.py
|
| Docs only (great first PR) |
docs/, README.md
|
Implement the relevant Protocol interfaces in src/yazses/platform/base.py, add a test, and register your sys.platform value in platform/factory.py. The daemon and CLI require no other changes — that's the whole point of the abstraction.
- Describe the why, not just the what.
- Confirm the test suite passes locally (CI will also run it on Linux × macOS × Windows).
- Link the issue it closes (
Closes #123).
Then relax — we aim to give a first response within a day and to merge small, correct PRs quickly.
Every contributor is credited. Merged work shows up in the repo's contributor graph and release notes. Contributing to YazSes is a clean, public, real-world open-source track record you can point to.
- Privacy is the product. Nothing in the dictation path may send audio off-device. Cloud-dependent ideas are fine to discuss, but on-device is the default and the tiebreaker.
- Be kind. We follow the Code of Conduct.
-
License. Contributions are licensed under Apache 2.0 (see
CONTRIBUTING.md).
Questions? Ask in Q&A — no question is too small.
YazSes — offline, on-device voice dictation · Apache-2.0 · Docs · Discussions · Good first issues
Contribute
Use it