fix(build): snap config schema — drop invalid 'channels' key

electron-builder 26.x rejected the build with
'configuration.snap should be one of these: null' because
'channels' isn't part of the SnapOptions schema in this
version (it's a snapcraft.yaml / Snap Store publish-side
concept, not a build-time key).

Also relocated 'desktopName' out of linux.* — the warning
says to set it in package.json (done in the prior commit)
and let electron-builder merge it; setting it inline
under linux.* is rejected by the schema too.

What actually silences the warning now:

  - package.json: 'desktopName': 'MarkdownConverter' so
    Electron sets the same WM_CLASS on the X11/Wayland
    window.
  - electron-builder.config.js: 'syncDesktopName: true'
    inside linux.* so the generated .desktop file's
    StartupWMClass matches.
  - electron-builder.config.js: 'snap: { confinement,
    grade }' at the top level using the valid keys only.

Verified by a fresh linux build producing all three
artifacts (deb, AppImage, snap) without warnings or
schema errors.

Amit Haridas
This commit is contained in:
2026-09-30 22:21:37 +05:30
parent d4a2c21196
commit 7673f5533d
+14 -12
View File
@@ -125,19 +125,21 @@ module.exports = {
category: 'Utility',
maintainer: 'ConcreteInfo <amit.wh@gmail.com>',
extraFiles: toolExtraFiles('linux'),
// v4.13.0 — set desktopName + sync so installed .desktop entry uses
// a stable WM_CLASS / app_id, otherwise DEs cannot link the running
// window to the launcher icon (electron-builder warning at pack time).
desktopName: 'MarkdownConverter',
// v4.13.0 — keep the generated .desktop file's StartupWMClass in sync
// with the top-level desktopName in package.json so DEs can link the
// running window to the launcher icon. desktopName itself is read
// from package.json (electron-builder merges package.json fields into
// the linux config automatically).
syncDesktopName: true,
// Snap channel: latest/edge tracks the auto-updater feed on GitHub
// releases. `stable` would publish to a manually-managed channel and
// break the electron-updater handshake.
snap: {
confinement: 'strict',
grade: 'stable',
channels: ['latest/edge'],
},
},
// v4.13.0 — Snap packaging defaults. `grade: stable` is required for
// the auto-updater to push updates to the stable track from GitHub
// releases (electron-updater expects stable-grade snaps). We let
// snapcraft pick its default channel set — the publish-side channels
// live in `snapcraft.yaml` / the Snap Store, not in this config.
snap: {
confinement: 'strict',
grade: 'stable',
},
deb: {
depends: ['imagemagick', 'libreoffice-common'],