6 Commits
Author SHA1 Message Date
kawaandClaude Opus 5 d4f23f5b87 fix: actually generate the UTF-8 locale makensis needs
`locale-gen <name>` is an Ubuntu extension; plain Debian's locale-gen
takes no arguments and only reads /etc/locale.gen, so the previous fix
generated nothing and makensis kept aborting with exit 84 / "FATAL: main
argv conversion failed!" under the runner's C/POSIX locale.

Write the entry into /etc/locale.gen, run locale-gen with no arguments,
and assert `locale -a` lists it — a missing locale now fails the install
step with a clear message instead of dying four minutes later inside
electron-builder.

build-release.ps1 sets LC_ALL/LANG itself before packaging a Windows
target on a Linux host, picking a real UTF-8 locale out of `locale -a`.
The electron-builder child then inherits it however the script was
started, including a runner that drops step env.

Also adds a non-fatal probe step that runs the cached makensis with
-VERSION under en_US.UTF-8 and under C, so a failure that is *not* the
locale is distinguishable from one that is without another blind fix.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-28 15:42:43 +02:00
kawaandClaude Sonnet 5 2927018af1 feat: add CI release workflow for installers, AppImage and Docker
Gitea Actions workflow triggered on tag push or manual dispatch: builds
the Windows NSIS/portable installers and Linux AppImage, builds+pushes
the Docker image, then creates/updates the Gitea release with a
changelog-compare link as the body and all artifacts attached. Flatpak
stays local-only (build-release.ps1) since flatpak-builder's sandbox
isn't reliable on a containerized Actions runner.

Also fixes build-release.ps1: the win.signExecutable=false override
only applied when cross-building via the WSL path, not to a genuine
native-Linux build of the "win" target (the CI's case).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-28 14:42:47 +02:00
kawa 00bd5d8b13 Now build everything under WSL (so I can work with unsigned exe's on my work computer :P )
Sync Gitea releases to GitHub / sync-releases (push) Canceled after 0s
2026-08-14 13:20:30 +02:00
kawa cc439c1152 Modified publish pipeline for WSL (flatpak, appimage builds)
Sync Gitea releases to GitHub / sync-releases (push) Canceled after 0s
2026-08-13 15:13:42 +02:00
kawa 3ed8f5683f Fixed publish script+added options to separate binaries publishing.
Bumped package.json to 2.0.0
2026-08-13 08:48:34 +02:00
kawaandClaude Opus 5 f2b9f28d14 build: add Gitea release scripts and npm entry points
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>
2026-08-12 12:56:11 +02:00