lossless-cut/CONTRIBUTING.md

4.7 KiB

Contributing

Development environment setup

This app is built using Electron. Make sure you have at least Node v16. The app uses ffmpeg from PATH when developing.

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:

yarn download-ffmpeg-darwin-x64
yarn download-ffmpeg-darwin-arm64
yarn download-ffmpeg-linux-x64
yarn download-ffmpeg-win32-x64

For Windows, you may have to install 7z, and then put the 7z folder in your PATH.

Running

yarn dev

mas-dev (Mac App Store) local build

This will sign using the development provisioning profile:

yarn 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 located here:

~/Library/Containers/no.mifi.losslesscut-mac/Data/Library/Application Support

Starting over fresh

rm -rf ~/Library/Containers/no.mifi.losslesscut-mac

Windows Store notes

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.

Releasing

Build new version

  • git checkout master
  • git merge stores (in case there's an old unmerged stores hotfix)
  • If Store-only hotfix release
    • git checkout stores
    • npm version patch
  • If normal GitHub-first release
    • npm version minor
  • git push --follow-tags
  • Wait for build and draft in Github actions

Release built version

  • Open draft in github and add Release notes
  • Add prefix -DO-NOT-DOWNLOAD to LosslessCut-mac-universal.pkg and LosslessCut-win-x64.appx
  • If GitHub release
    • Release the draft
  • If Store-only hotfix release
    • Remove all other artifacts and release the draft as pre-release

After releasing on GitHub

  • If Stores-only hotfix release
    • git checkout master
    • git merge stores
  • Bump snap version

After releasing existing GitHub version in Stores

  • git checkout stores
  • Find the tag just released in the Stores
  • Merge this tag (from master) into stores: git merge vX.Y.Z
  • git push
  • git checkout master

More info

For per-platform build/signing setup, see this article.

Weblate

yarn scan-i18n to get the newest English strings and push so Weblate gets them.

Find the latest PR from Weblate and rebase+merge it.

Warning: Do not squash and merge (see here why)!

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:

yarn 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:

Maintainence chores

Keep dependencies up to date

i18n

yarn scan-i18n

Generate license summary

npx license-checker --summary

Regenerate licenses file

yarn generate-licenses
#cp licenses.txt losslesscut.mifi.no/public/

Then deploy.

Dependabot

https://github.com/mifi/lossless-cut/security/dependabot

ffmpeg builds