scripts/build-release.ps1 packages the desktop installers; scripts/publish.ps1 pushes the container image to git.azuze.fr and attaches the installers to the Gitea release for the same tag. The split keeps a local build free of any credential, and lets a failed upload be retried with -BinariesOnly -NoBinaryBuild without paying for the build again. Two details the plain `npm run dist:*` path gets wrong for a release: - package.json's global artifactName resolves NSIS and portable to the same file name, so one silently overwrites the other. The build script passes distinct -c.nsis.artifactName / -c.portable.artifactName. - Artifact names now carry the tag, so publish.ps1 can glob exactly one tag's files and never ship a stale one. electron-builder's update metadata (.blockmap, latest*.yml, the NSIS .7z payload) is swept out of dist/ so it cannot match that glob and end up attached to the release. The tag defaults to v<package.json version> rather than git describe, because electron-builder stamps package.json into the app: a SHA-based tag would name an installer whose About box disagrees with it. Also brings scripts/server.cjs, vendor.mjs and make-icon.cjs under version control, which the release scripts and the Docker build both call. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Motionity
This is a fork of the original project aiming to fix issues and add features.
Running it
npm run vendor # downloads the third-party libraries into src/vendor/
npm start # http://127.0.0.1:8080
Three packaged distributions are available — desktop (Windows .exe, Linux
AppImage and Flatpak), a Docker image, and a bare-metal install. Build
instructions for all of them are in PACKAGING.md.
npm run dev # desktop app from source
npm run dist:win # Windows installer + portable exe
npm run dist:linux # AppImage + Flatpak
npm run docker:build # container image
Releasing
./scripts/build-release.ps1 # installers + SHA256SUMS.txt in dist/
./scripts/publish.ps1 -PublishRelease # + image push and Gitea release upload
build-release.ps1 needs no credentials. publish.ps1 needs a Gitea token with
package read/write (image push) and write:repository (release upload), read
from $env:GITEA_TOKEN or prompted for. -BinariesOnly -NoBinaryBuild retries a
failed upload without rebuilding.
One rule applies to every target: browsers expose WebCodecs (the fast exporter)
and IndexedDB (project saving) only in a secure context. http://localhost
qualifies; a plain-HTTP LAN address does not. Serve it over TLS anywhere else.