Skip to content

proposal(14): electron-updater UX#8

Open
christian-byrne wants to merge 1 commit intoComfy-Org:mainfrom
christian-byrne:proposal/updater-ux
Open

proposal(14): electron-updater UX#8
christian-byrne wants to merge 1 commit intoComfy-Org:mainfrom
christian-byrne:proposal/updater-ux

Conversation

@christian-byrne
Copy link

Proposal 14: electron-updater UX Improvements

Summary

Improve the auto-update experience with update channels, rich progress UI, and release notes display — without changing the core update mechanism.

Changes

File Change
lib/updater.js Channel-aware update check (stable/beta), enriched update info (releaseNotes, currentVersion, channel), download speed + ETA in progress events
renderer/update-banner.js Version comparison (v{current} → v{new}), progress bar with speed/ETA, Release Notes button, beta channel badge
renderer/styles.css Progress bar styling, channel badge styling
locales/en.json 8 new i18n keys for channels, release notes, speed, ETA
package.json generateUpdatesFilesForAllChannels: true in build config
lib/ipc.js updateChannel select field in Settings (stable/beta)
.github/proposals/proposal-updater-ux.md Full proposal with flow diagrams, tradeoff analysis, differential update assessment

What this does NOT change

  • Core update mechanism (electron-updater download + quitAndInstall)
  • No new dependencies
  • No changes to preload.js IPC bridge
  • Differential updates already work via blockmap if .blockmap files are published

Key tradeoffs

  1. Beta channel requires release workflow to tag versions with -beta suffix and mark as pre-release on GitHub
  2. Differential updates are documented-only — blockmap support exists in electron-builder but reliability varies (50–70% of binary may still re-download due to NSIS version stamping)
  3. Rollback is deferred — proposal recommends caching previous installer as a v1 approach

Proposal document

See .github/proposals/proposal-updater-ux.md for the full analysis including current flow diagram, proposed architecture, and risk assessment.

- Add update channel support (stable/beta) with settings UI
- Enhance update banner with version comparison (v{current} → v{new})
- Add progress bar with download speed and ETA display
- Add release notes button that shows GitHub release body in modal
- Add beta channel badge for pre-release updates
- Enable generateUpdatesFilesForAllChannels in build config
- Add i18n keys for new update UI elements
- Document differential update status and rollback approaches

Amp-Thread-ID: https://ampcode.com/threads/T-019c7926-be08-704f-b583-1c5167315271
Kosinkadink added a commit that referenced this pull request Feb 22, 2026
Migrate renderer from 15 vanilla JS files to Vue 3 + Pinia + Tailwind CSS 4:
- Typed IPC bridge (30+ methods) in src/preload/
- Pinia stores: sessionStore (running instances, terminals), installationStore
- Promise-based modal system (useModal + ModalDialog)
- 9 views and 7 reusable components with Composition API
- vue-i18n runtime locale loading
- Tailwind CSS 4 with design tokens extracted from old styles.css

Code review fixes applied:
- Fix runtime  crash: use useI18n() in script setup (#1, #2)
- Fix unsafe spread on non-array SettingsField values (#3)
- Replace document.getElementById with reactive state in NewInstallModal (#4)
- Use DetailSection component in DetailModal, removing 130 lines of duplication (#5)
- Replace v-html/metaHtml with structured #meta slot and MetaPart arrays (#6)
- Emit setting-updated from SettingField, SettingsView re-fetches on change (#7)
- Eliminate prop mutations in DetailModal, use update:installation emit (#8)

Amp-Thread-ID: https://ampcode.com/threads/T-019c840f-eaa4-771e-bb7f-a27118c0e3eb
Co-authored-by: Amp <amp@ampcode.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant