Skip to content

Latest commit

 

History

History
122 lines (84 loc) · 5.52 KB

CONTRIBUTING.md

File metadata and controls

122 lines (84 loc) · 5.52 KB

Contributing

Every contribution to Hiddify is welcome, whether it is reporting a bug, submitting a fix, proposing new features, or just asking a question. To make contributing to Hiddify as easy as possible, you will find more details for the development flow in this documentation.

Please note, we have a Code of Conduct, please follow it in all your interactions with the project.

Feedback, Issues and Questions

If you encounter any issue, or you have an idea to improve, please:

  • Search through existing open and closed GitHub Issues for the answer first. If you find a relevant topic, please comment on the issue.
  • If none of the issues are relevant, please add a new issue following the templates and provide as much relevant information as possible.

Adding new Features

When contributing a complex change to the Hiddify repository, please discuss the change you wish to make within a GitHub issue with the owners of this repository before making the change.

Development

Adding Feature / Fix bug in Core:

Please follow our Go Core Development repository.

Working with the Flutter Code

Hiddify uses Flutter, make sure that you have the correct version installed before starting development. You can use the following commands to check your installed version:

$ flutter --version

# example response
Flutter 3.13.4 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 367f9ea16b (4 weeks ago) • 2023-09-12 23:27:53 -0500
Engine • revision 9064459a8b
Tools • Dart 3.1.2 • DevTools 2.25.0

We recommend using Visual Studio Code extensions for development.

Setting up the Environment

We have extensive use of code generation in the form of freezed, riverpod, etc. So it's generate these before running the code. Execute the following make commands in order: Assuming you have not built the libcore and want to use existing releases, you should run the following command (based on your target platform):

  • make windows-prepare
  • make linux-prepare
  • make macos-prepare
  • make ios-prepare
  • make android-prepare
build the libcore from source (Optional)

If you want to build the libcore from source after make prepare, use:

  • make build-windows-libs
  • make build-linux-libs
  • make build-macos-libs
  • make build-ios-libs
  • make build-android-libs

Run Release Build on a Device

To run the release build on a device for testing, we have to get the Device ID first by running the following command:

$ flutter devices

# example response
3 connected devices:

2211143G (mobile) • 35492ae2 • android-arm64  • Android 13 (API 33)
Windows (desktop) • windows  • windows-x64    • Microsoft Windows [Version 10.0.22000.2482]
Chrome (web)      • chrome   • web-javascript • Google Chrome 117.0.5938.149

Then we can use one of the listed devices and execute the following command to build and run the app on this device:

flutter run
# or
flutter run --device-id=35492ae2

Release

We use flutter_distributor for packaging. GitHub action is triggered on every release tag and will create a new GitHub release. After setting up the environment, use the following make commands to build the release version:

  • make windows-release
  • make linux-release
  • make macos-release
  • make android-release
  • make ios-release

Collaboration and Contact Information

We need your collaboration in order to develop this project. If you have experience in these areas, please do not hesitate to contact us.

  • Flutter Developing
  • Swift Developing
  • Go Developing

Email Telegram Channel Telegram Group Youtube Twitter