Community

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 any as 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.