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
mainas<type>/<short-description>. Pushing tomaindirectly 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 aBREAKING 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.