Skip to content

Latest commit

 

History

History
195 lines (143 loc) · 8.1 KB

CONTRIBUTING.md

File metadata and controls

195 lines (143 loc) · 8.1 KB

Contributing to LocalSend

LocalSend is an open-source project, and we welcome contributions from anyone who is interested in helping improve the app. Whether you're a developer, a translator, or a documentation writer, there are many ways to get involved.

Getting Started

If you're interested in contributing code to LocalSend, you'll need to follow these steps:

Run

After you have installed Flutter, then you can start this app by typing the following commands:

flutter pub get
flutter pub run build_runner build -d
flutter run

Translation

You can help in translating this app to other languages!

  1. Fork this repository
  2. Choose one
    • Add missing translations in existing languages: Only update _missing_translations_<locale>.json in assets/i18n
    • Fix existing translations: Update strings_<locale>.i18n.json in assets/i18n
    • Add new languages: Create a new file, see also: locale codes.
  3. Optional: Re-run this app
    1. Make sure you have run this app once.
    2. Update translations via flutter pub run slang
    3. Run the app via flutter run
  4. Open a pull request

Take note: Fields decorated with @ are not meant to be translated, they are not used in the app in any way, being merely informative text about the file or to give context to the translator.

Thanks to all translators!

Contributing Guidelines

Before you submit a pull request to LocalSend, please ensure that you have followed these guidelines:

  • Code should be well-documented and formatted according to the Dart Style Guide.
  • All changes should be covered by tests.
  • Commits should be well-written and descriptive, with a clear summary of the changes made and any relevant context.
  • Pull requests should target the main branch and include a clear summary of the changes made.

Bug Reports and Feature Requests

If you encounter a bug in LocalSend or have a feature request, please submit an issue to the issue tracker. Please be sure to provide a clear description of the problem or feature request, along with any relevant context or steps to reproduce the issue.

Security Issues

If you discover a security issue in LocalSend, please do not submit an issue to the public issue tracker. Instead, please email us directly at support@localsend.org so that we can address the issue as quickly and effectively as possible.

Distribution

Git based distribution:

Channel Repository Maintainer
Winget Winget Repo @sitiom, @Tienisto, Github Actions
Scoop Scoop Repo @sitiom, @Tienisto, Github Actions
Chocolatey Chocolatey Repo @brogers5
Homebrew Homebrew Repo @Tienisto, Github Actions
Flathub Flathub Repo @proletarius101, @Tienisto, Github Actions
AUR AUR Repo @Nixuge
Nixpkgs Nixpkgs Repo @sikmir, @linsui
F-Droid F-Droid Repo @linsui, @Tienisto, F-Droid CI

Manual distribution:

Channel Maintainer
App Store @Tienisto
Play Store @Tienisto
Amazon @Tienisto

Binary distribution:

Type Maintainer Credits
Windows ZIP @Tienisto
MSIX @Tienisto
EXE @Tienisto
APK @Tienisto
TAR @Tienisto
DEB @Tienisto
AppImage @Tienisto @TheGB0077
DMG @Tienisto

TODO:

You can help in publishing LocalSend on more platforms. Please create an issue to notify us!

  • Traditional Linux distributions (Debian, Fedora, etc.)
  • Snap
  • (Your idea here)

Notes

Useful notes.

Compile production APK

You will need the signing keys to generate an APK.

Either generate one or use the debug signing options:

// File: android/app/build.gradle
buildTypes {
  release {
    signingConfig signingConfigs.debug // using debug signing
  }
}

Bump Flutter

Suppose we want to update flutter to 3.7.8 (see https://github.com/localsend/localsend/commit/7b95a7a5600db2742a9e05b956d0415d871239d5):

  1. Update flutter from fvm: fvm use 3.7.8
  2. Update flutter from submodule:
    1. git submodule update --init
    2. cd submodules/flutter
    3. git fetch
    4. git checkout 3.7.8
    5. cd ../..
    6. git add submodules/flutter
  3. Update flutter constraints:
    1. In CI: .github/workflows/ci.yml
    2. In pubspec: pubspec.yaml

Release

Make sure to set up the self-hosted runner to compile arm64 linux binaries.

To set up the runner, follow the following instructions:

Install Flutter

sudo apt install git
git clone https://github.com/flutter/flutter.git $HOME/flutter
nano $HOME/.bashrc

Add the following to the end of the file:

export PATH="$PATH:$HOME/flutter/bin"

Restart the terminal.

flutter doctor

Next, follow the instructions to set up the GitHub runner.

Start the "Release Draft" workflow from the "Actions" tab: https://github.com/localsend/localsend/actions/workflows/release.yml

Finally, compile binaries not yet supported by the pipeline.