Skip to content

Contributing

The full rules are in CONTRIBUTING.md. Read it before your first pull request. This page is the short version.

Set up

Follow Install to build and run the app.

Branches and commits

  • Branch from main as <type>/<short-description>. Pushing to main directly is not allowed.
  • Write commits as Conventional Commits: <type>(<scope>): <description>. Use the imperative, lowercase and no final period. A gitmoji after the colon is fine.
  • Mark breaking changes with ! and a BREAKING CHANGE: footer.
  • Release versions and the changelog are generated by release-please. Do not edit them by hand.

Before a pull request

Run these for each package you changed:

dart format packages/<name>
fvm flutter analyze packages/<name>
fvm flutter test

Pure Dart packages use dart test. After a change to the TDLib schema, run dart run packages/tdlib/tool/generate.dart.

Pull requests

  • The title is a Conventional Commit. CI checks it and the pull request is squash-merged.
  • Fixes for bugs come with a test.
  • Changes to the UI come with screenshots in light and dark themes.
  • Code, commits and pull requests are in English. Keep the Russian and English UI strings in step, and capitalize only the first word of a phrase.

Security

Do not open a public issue for a vulnerability. Report it through GitHub security advisories, with the impact, steps to reproduce, the version or commit and the platform. The maintainers answer within 7 days. See SECURITY.md.

In scope: the app, the plugin sandbox and permission model, and the storage of sessions and keys. Out of scope: Telegram's servers, MTProto and TDLib. Report those to Telegram or the TDLib project.

Only the latest release and main receive fixes.

License

GPL-3.0. Contributions come under the same license. The repository also has a code of conduct.

Plugins

Plugin authors do not need the repository rules above. Start with the plugin quick start.