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
- Adding new Features
- Development
- Release
- Collaboration and Contact Information
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.
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.
Please follow our Go Core Development repository.
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.
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
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
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
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
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