feat(updater): electron-updater wiring + IPC bridge

electron-updater integration so users get fixes automatically:
  - new dependency electron-updater@^6.6.2 in package.json
  - electron-builder.config.js publishes to GitHub releases
    (owner: concreteinfo, repo: markdownconverter)
  - new src/main/auto-updater.js wraps autoUpdater: wires the six
    lifecycle events to a 'updates:status' IPC channel, exposes
    check() and install() helpers, dev-gates via isDev(), and
    swallows the 'missing app-update.yml' error that dev runs hit
  - main.js: ensureAutoUpdater() forwards status to the renderer
    via mainWindow.webContents.send; ipcMain handlers for
    'updates:check' (invoke) and 'updates:install' (invoke)
  - preload.js: 'updates:check' / 'updates:install' added to
    ALLOWED_SEND_CHANNELS; 'updates:status' added to receive
    channels; electronAPI.updates.{check, install, onStatus}
    exposed

7 new tests cover event registration, dev-gate behaviour,
'not-available' fallback for missing app-update.yml, typed event
payloads, error forwarding, and install() quitAndInstall.

Amit Haridas
This commit is contained in:
Amit Haridas
2026-09-30 20:30:19 +05:30
parent 0d3df32140
commit 47315add80
6 changed files with 240 additions and 0 deletions
+10
View File
@@ -36,6 +36,16 @@ module.exports = {
copyright: 'Copyright (C) 2024-2025 ConcreteInfo',
directories: { output: 'dist' },
icon: 'assets/icon',
// v4.13.0 — auto-update wiring via electron-updater. `provider: 'github'`
// is the no-config option: it reads releases from this repo's Releases
// page and matches by the tag's semver against package.json. Replace
// with `generic` + `url:` if you ever move off GitHub releases.
publish: {
provider: 'github',
owner: 'concreteinfo',
repo: 'markdownconverter',
releaseType: 'release',
},
files: [
'src/**/*',
'assets/**/*',