mirror of https://github.com/mifi/lossless-cut
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
172 lines
4.8 KiB
Markdown
172 lines
4.8 KiB
Markdown
# Contributing
|
|
|
|
## Translators
|
|
|
|
You are welcome to help translate the app at [Weblate](https://hosted.weblate.org/projects/losslesscut/losslesscut/). Weblate will automatically push translations as a Pull Request in this repo, but this PR is not merged immediately by maintainers.
|
|
|
|
Master language is english.
|
|
|
|
### Testing translations locally
|
|
|
|
To test new weblate translations you made in the app itself, you need to:
|
|
1. Download the translation for your language from Weblate: **Files -> Download translation**
|
|
2. Rename the downloaded `.json` file to: `translation.json`
|
|
3. Create a [folder structure](https://github.com/mifi/lossless-cut/tree/master/public/locales) somewhere on your computer that looks like this:
|
|
```
|
|
translations/locales/localeCode
|
|
```
|
|
You can find a list of the available [`localeCode`s here](https://github.com/mifi/lossless-cut/tree/master/public/locales). In our example we will use `nb_NO` (Norwegian) with this path:
|
|
```
|
|
/Users/mifi/Desktop/translations/locales/nb_NO
|
|
```
|
|
|
|
4. Now move your `translation.json` file into the folder:
|
|
```
|
|
/Users/mifi/Desktop/translations/locales/nb_NO/translation.json
|
|
```
|
|
|
|
5. Now run LosslessCut from the [command line](cli.md), with the special command line argument `--locales-path`. Use the path to the **folder containing the locales folder**, e.g.:
|
|
```bash
|
|
./LosslessCut --locales-path /Users/mifi/Desktop/translations
|
|
```
|
|
|
|
Now LosslessCut will use your language file.
|
|
|
|
## Development setup
|
|
|
|
This app is built using Electron.
|
|
Make sure you have at least Node v16. The app uses ffmpeg from PATH when developing.
|
|
|
|
```bash
|
|
npm install -g yarn
|
|
```
|
|
|
|
```bash
|
|
git clone https://github.com/mifi/lossless-cut.git
|
|
cd lossless-cut
|
|
yarn
|
|
```
|
|
|
|
Note: `yarn` may take some time to complete.
|
|
|
|
### Installing `ffmpeg`
|
|
|
|
Run one of the below commands:
|
|
```bash
|
|
npm run download-ffmpeg-darwin-x64
|
|
npm run download-ffmpeg-darwin-arm64
|
|
npm run download-ffmpeg-linux-x64
|
|
npm run download-ffmpeg-win32-x64
|
|
```
|
|
|
|
### Running
|
|
|
|
```bash
|
|
npm start
|
|
```
|
|
|
|
### Building for production
|
|
|
|
See:
|
|
- https://www.electron.build/
|
|
- https://github.com/mifi/lossless-cut/blob/master/.github/workflows/build.yml
|
|
|
|
## Building mas-dev (Mac App Store) build locally
|
|
|
|
This will sign using the development provisioning profile:
|
|
|
|
```
|
|
npm run pack-mas-dev
|
|
```
|
|
|
|
MAS builds have some restrictions, see `isMasBuild` variable in code. In particular, any file cannot be read without the user's consent.
|
|
|
|
NOTE: when MAS (dev) build, Application Support will instead be here:
|
|
```
|
|
~/Library/Containers/no.mifi.losslesscut-mac/Data/Library/Application Support
|
|
```
|
|
|
|
### Starting over fresh
|
|
|
|
```
|
|
rm -rf ~/Library/Containers/no.mifi.losslesscut-mac
|
|
```
|
|
|
|
## Windows Store
|
|
|
|
Windows store version is built as a Desktop Bridge app (with `runFullTrust` capability). This means the app has access to essentially everything the user has access to, and even `internetClient` is redundant.
|
|
|
|
- https://learn.microsoft.com/en-us/windows/uwp/packaging/app-capability-declarations
|
|
- https://learn.microsoft.com/en-us/archive/blogs/appconsult/a-simpler-and-faster-way-to-publish-your-desktop-bridge-applications-on-the-microsoft-store
|
|
- https://stackoverflow.com/a/52921641/6519037
|
|
|
|
## Releasing
|
|
|
|
For per-platform build/signing setup, see [this article](https://mifi.no/blog/automated-electron-build-with-release-to-mac-app-store-microsoft-store-snapcraft/).
|
|
|
|
### Release new version
|
|
|
|
- Commit changes
|
|
- `npm version ...`
|
|
- `git push && git push --tags`
|
|
- Wait for build and draft in Github actions
|
|
- Release draft at github
|
|
- Bump [snap version](https://snapcraft.io/losslesscut/listing)
|
|
- `npm run scan-i18n` to get the newest Englist strings and push so weblate gets them
|
|
|
|
## Minimum OS version
|
|
|
|
Minimum supported OS versions for Electron. As of electron 22:
|
|
|
|
- MacOS High Sierra 10.13
|
|
- Windows 10
|
|
|
|
### MacOS [`LSMinimumSystemVersion`](https://developer.apple.com/documentation/bundleresources/information_property_list/lsminimumsystemversion)
|
|
|
|
How to check the value:
|
|
|
|
```bash
|
|
npm run pack-mas-dev
|
|
cat dist/mas-dev-arm64/LosslessCut.app/Contents/Info.plist
|
|
```
|
|
|
|
```
|
|
<key>LSMinimumSystemVersion</key>
|
|
<string>10.13</string>
|
|
```
|
|
|
|
`LSMinimumSystemVersion` can be overridden in `electron-builder` by [`mac.minimumSystemVersion`](https://www.electron.build/configuration/mac.html)
|
|
|
|
See also `MACOS_MIN` in [ffmpeg-build-script](https://github.com/mifi/ffmpeg-build-script/blob/master/build-ffmpeg).
|
|
|
|
Links:
|
|
- https://support.google.com/chrome/a/answer/7100626
|
|
- https://bignerdranch.com/blog/requiring-a-minimum-version-of-os-x-for-your-application/
|
|
- [#1386](https://github.com/mifi/lossless-cut/issues/1386)
|
|
|
|
## Maintainence chores
|
|
|
|
### Keep dependencies up to date
|
|
- ffmpeg
|
|
- electron
|
|
- package.json
|
|
|
|
### i18n
|
|
`npm run scan-i18n`
|
|
|
|
### Licenses
|
|
|
|
#### Generate summary
|
|
|
|
```
|
|
npx license-checker --summary
|
|
```
|
|
|
|
#### Regenerate licenses file
|
|
|
|
```
|
|
npm run generate-licenses
|
|
#cp licenses.txt losslesscut.mifi.no/public/
|
|
```
|
|
Then deploy.
|