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.
- 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
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
toLosslessCut-mac-universal.pkg
andLosslessCut-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
) intostores
: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:
- 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: ffmpeg-build-script, ffmpeg-builds
electron
and upgrade electron.vite.config.tstarget
s.@electron/remote
package.json
/yarn.lock
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