Contributing
Contributions are welcome, code, design, docs, or bug reports. The one ask: talk before you start.
Talk first
Join the Discord and describe what you’re planning in the dev channel before opening a PR, especially for anything beyond a small fix. It saves everyone the work of a large PR that duplicates something in progress or doesn’t fit the app’s direction.
Match the design language
New UI should read as part of the same app, not a bolt-on. In practice that means:
- Use the existing color and spacing tokens rather than one-off values.
- Follow the settings tab patterns already in place for anything that belongs in Settings.
- Reuse the shared reader/player chrome instead of building parallel controls for a new content type.
- If a change touches visual design in a real way, bring a screenshot or a quick description to Discord first.
Code style
- Svelte 5 runes for state, not the classic store API, see Design choices.
- TypeScript throughout, no
anyas an escape hatch. - Keep PRs scoped to one change. A bug fix doesn’t need a refactor riding along with it.
- Comments explain *why*, not *what*, the code should already say what.
Where to start
See Development for getting a build running. Tsunagu contributions go through its own repository, working on the backend or extension sandbox will also mean reading Tsunagu → Architecture.