4.8 KiB
Contributing
Translators
You are welcome to help translate the app at Weblate. 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:
- Download the translation for your language from Weblate: Files -> Download translation
- Rename the downloaded
.json
file to:translation.json
- Create a folder structure somewhere on your computer that looks like this:
translations/locales/localeCode
You can find a list of the available localeCode
s here. In our example we will use nb_NO
(Norwegian) with this path:
/Users/mifi/Desktop/translations/locales/nb_NO
- Now move your
translation.json
file into the folder:
/Users/mifi/Desktop/translations/locales/nb_NO/translation.json
- Now run LosslessCut from the command line, with the special command line argument
--locales-path
. Use the path to the folder containing the locales folder, e.g.:
./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.
npm install -g yarn
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:
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
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.
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
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
How to check the value:
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
See also MACOS_MIN
in ffmpeg-build-script.
Links:
- https://support.google.com/chrome/a/answer/7100626
- https://bignerdranch.com/blog/requiring-a-minimum-version-of-os-x-for-your-application/
- #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.