Fix Linux desktop release AppImage staging name mismatch #292

Closed
opened 2026-06-05 13:55:52 +00:00 by steve · 0 comments
Owner

Describe the issue.

Problem

build-linux succeeds, but staging fails because electron-builder emits
Lapis-Notes-<version>-linux-x86_64.AppImage while the workflow copies
Lapis-Notes-<version>-linux-x64.AppImage.

Goal

Normalize Linux AppImage artifacts to the canonical linux-x64 release name
before staging and fail loudly when the AppImage is missing.

Scope

  • Shared release-utils helpers for AppImage normalization and Linux staging
  • Forgejo release-desktop.yml build-linux staging step
  • Local release:desktop:local staging path
  • electron-builder afterAllArtifactBuild hook

Non-goals

  • Changing published asset names
  • Reworking macOS staging

Acceptance Criteria

  • CI staging accepts electron-builder's linux-x86_64.AppImage output and
    stages linux-x64.AppImage
  • Missing AppImage fails with a release-directory listing
  • Local release staging uses the same normalization path

Implementation Notes

electron-builder's getArtifactArchName() uses x86_64 for AppImage but
x64 for tar.gz. The previous rename hook swallowed ENOENT, so staging could
fail even when the build produced only the x86_64 filename.

Suggested Files or Specs To Inspect

  • scripts/release-utils.mjs
  • scripts/stage-linux-desktop-artifacts.mjs
  • .forgejo/workflows/release-desktop.yml
  • packages/desktop-electron/electron-builder.config.cjs

Validation Commands

  • node --test scripts/release-utils.test.mjs
  • node scripts/stage-linux-desktop-artifacts.mjs <version>

Follow-up Tasks

Implementation Summary

Added shared Linux AppImage normalization in release-utils, wired it into electron-builder afterAllArtifactBuild, release-desktop-local staging, and a new stage-linux-desktop-artifacts.mjs script used by build-linux. Staging now accepts electron-builder's linux-x86_64.AppImage output and copies the canonical linux-x64.AppImage name. Validated with release-utils tests and a simulated x86_64-only staging run.

Describe the issue. ## Problem `build-linux` succeeds, but staging fails because electron-builder emits `Lapis-Notes-<version>-linux-x86_64.AppImage` while the workflow copies `Lapis-Notes-<version>-linux-x64.AppImage`. ## Goal Normalize Linux AppImage artifacts to the canonical `linux-x64` release name before staging and fail loudly when the AppImage is missing. ## Scope - Shared release-utils helpers for AppImage normalization and Linux staging - Forgejo `release-desktop.yml` build-linux staging step - Local `release:desktop:local` staging path - electron-builder `afterAllArtifactBuild` hook ## Non-goals - Changing published asset names - Reworking macOS staging ## Acceptance Criteria - CI staging accepts electron-builder's `linux-x86_64.AppImage` output and stages `linux-x64.AppImage` - Missing AppImage fails with a release-directory listing - Local release staging uses the same normalization path ## Implementation Notes electron-builder's `getArtifactArchName()` uses `x86_64` for AppImage but `x64` for tar.gz. The previous rename hook swallowed ENOENT, so staging could fail even when the build produced only the `x86_64` filename. ## Suggested Files or Specs To Inspect - `scripts/release-utils.mjs` - `scripts/stage-linux-desktop-artifacts.mjs` - `.forgejo/workflows/release-desktop.yml` - `packages/desktop-electron/electron-builder.config.cjs` ## Validation Commands - `node --test scripts/release-utils.test.mjs` - `node scripts/stage-linux-desktop-artifacts.mjs <version>` ## Related Issues - Follow-up to #286 — [Fix desktop release plugin-history dist styles-entry ENOENT](../closed/286-fix-desktop-release-plugin-history-dist-styles-entry-enoent.md) ## Follow-up Tasks ## Implementation Summary Added shared Linux AppImage normalization in release-utils, wired it into electron-builder afterAllArtifactBuild, release-desktop-local staging, and a new stage-linux-desktop-artifacts.mjs script used by build-linux. Staging now accepts electron-builder's linux-x86_64.AppImage output and copies the canonical linux-x64.AppImage name. Validated with release-utils tests and a simulated x86_64-only staging run. <!-- backlog:task_id=TASK-DESKTOP-LINUX-APPIMAGE-STAGE source_spec=spec/src/80-maintenance/release-management.md related_issue=286 -->
steve 2026-06-05 14:27:51 +00:00
  • closed this issue
  • added
    done
    and removed
    open
    labels
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lapis-notes/lapis#292
No description provided.