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.
lossless-cut/CONTRIBUTING.md

5.0 KiB

Contributing

Translation

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

Before releasing, consider Maintainence chores first.

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 --no-pager show
  • 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 35:

  • MacOS 11 Big Sur
  • Windows 10

Note that older versions of LosslessCut still work on older operating systems.

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