Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
c0a6651
ci(mac): Notarize internal app
nkaramarko Nov 27, 2025
cc5bbc3
Merge pull request #9328 from wireapp/staging
nkaramarko Nov 28, 2025
164f814
Merge branch 'dev' into mac-jenkins-pipeline
nkaramarko Dec 2, 2025
2b071a4
test(deploy-utils): limit search scope to __dirname to prevent CI tim…
nkaramarko Dec 2, 2025
116bae2
Use @env reference for notarization password to avoid leaking secrets…
nkaramarko Dec 2, 2025
c739f12
Update spctl command to ensure correct verification of installer pack…
nkaramarko Dec 2, 2025
649fb4e
Merge pull request #9279 from wireapp/mac-jenkins-pipeline
nkaramarko Dec 2, 2025
4cc1f7e
feat(macos): add internal auto-update support for Wire macOS wrapper …
nkaramarko Dec 2, 2025
130468a
chore(deps-dev): bump eslint-plugin-import from 2.31.0 to 2.32.0 (#9323)
dependabot[bot] Dec 2, 2025
deec228
feat: enable WebRTC internals in Electron developer menu
EnricoSchw Dec 2, 2025
8571727
feat: make prettier happy
EnricoSchw Dec 2, 2025
7f9be0c
Merge remote-tracking branch 'origin/dev' into feat/activate-webrtc-d…
EnricoSchw Dec 2, 2025
b553481
Merge pull request #9332 from wireapp/feat/activate-webrtc-debug-tool
EnricoSchw Dec 2, 2025
35fec3e
chore(deps): bump @wireapp/webapp-events from 0.28.0 to 0.28.6 (#9337)
dependabot[bot] Dec 3, 2025
8e95348
chore(deps): bump @wireapp/certificate-check from 0.7.19 to 0.7.25 (#…
dependabot[bot] Dec 3, 2025
73d57a7
chore(deps): bump @wireapp/commons from 5.4.9 to 5.4.10 (#9340)
dependabot[bot] Dec 3, 2025
3bf5d68
chore(deps-dev): bump @wireapp/copy-config from 2.3.2 to 2.3.9 (#9338)
dependabot[bot] Dec 3, 2025
737b462
chore(ci): use unsigned installer for Windows internal builds (#9333)
nkaramarko Dec 3, 2025
6d1fb37
fix: update macOS entitlements and electron-builder version [WPB-1805…
EnricoSchw Dec 4, 2025
a2f47f6
chore(deps): bump electron-updater from 6.7.2 to 6.7.3 (#9346)
dependabot[bot] Dec 8, 2025
77760e6
chore(deps-dev): bump aws-sdk from 2.1692.0 to 2.1693.0 (#9350)
dependabot[bot] Dec 10, 2025
bd20472
chore(deps-dev): bump webpack from 5.103.0 to 5.104.0 (#9363)
dependabot[bot] Dec 17, 2025
35bc5b5
chore(deps): bump @wireapp/protocol-messaging from 1.55.0 to 1.56.0 (…
dependabot[bot] Dec 17, 2025
3d100f4
feat: Desktop app respect operating system's language setting by defa…
arjita-mitra Dec 17, 2025
3625616
fix: cache first locale and refresh when system locale changes
arjita-mitra Dec 17, 2025
b441549
Merge pull request #9366 from wireapp/feat/default-system-language-WP…
arjita-mitra Dec 17, 2025
ff2eaed
chore(deps): bump fs-extra from 11.3.2 to 11.3.3 (#9368)
dependabot[bot] Dec 19, 2025
fbaafaa
chore(deps-dev): bump webpack from 5.104.0 to 5.104.1 (#9369)
dependabot[bot] Dec 19, 2025
99daa69
chore(deps): bump @wireapp/webapp-events from 0.28.6 to 0.29.0 (#9371)
dependabot[bot] Dec 22, 2025
cad02d0
chore(deps): bump dependabot/fetch-metadata from 2.4.0 to 2.5.0 (#9392)
dependabot[bot] Jan 6, 2026
dcbd5bc
chore(deps): bump iconv-lite from 0.7.0 to 0.7.2 (#9394)
dependabot[bot] Jan 9, 2026
0885b70
chore(deps): bump @wireapp/commons from 5.4.10 to 5.4.11 (#9375)
dependabot[bot] Jan 9, 2026
77a4f04
chore(deps-dev): bump @wireapp/copy-config from 2.3.9 to 2.3.10 (#9376)
dependabot[bot] Jan 9, 2026
8afa73e
chore(deps-dev): bump @types/lodash from 4.17.21 to 4.17.23 (#9396)
dependabot[bot] Jan 12, 2026
bd8d133
chore(deps-dev): bump @babel/preset-env from 7.28.5 to 7.28.6 (#9401)
dependabot[bot] Jan 13, 2026
4cec8f0
chore(deps-dev): bump @babel/register from 7.28.3 to 7.28.6 (#9402)
dependabot[bot] Jan 13, 2026
6cb2bbf
chore(deps): bump styfle/cancel-workflow-action from 0.12.1 to 0.13.0…
dependabot[bot] Jan 15, 2026
2c16a6b
chore: Add Mac build and deployment params for notarization and App S…
nkaramarko Jan 15, 2026
70b6224
chore(deps): bump wire-web-config-internal in /app-config (#9408)
dependabot[bot] Jan 18, 2026
70d3418
chore(deps-dev): bump @wireapp/eslint-config from 3.1.7 to 3.1.8 (#9413)
dependabot[bot] Jan 21, 2026
fc61d55
chore(deps-dev): bump @wireapp/prettier-config from 0.6.9 to 0.6.10 (…
dependabot[bot] Jan 21, 2026
4e2c298
chore(deps): bump @wireapp/commons from 5.4.11 to 5.4.12 (#9417)
dependabot[bot] Jan 21, 2026
f5f4117
chore(deps-dev): bump @babel/core from 7.28.5 to 7.28.6 (#9398)
dependabot[bot] Jan 21, 2026
e364dee
chore(deps): bump @wireapp/webapp-events from 0.29.0 to 0.29.1 (#9418)
dependabot[bot] Jan 21, 2026
b013c2a
chore(deps): bump @wireapp/certificate-check from 0.7.25 to 0.7.26 (#…
dependabot[bot] Jan 21, 2026
5917fa6
chore(deps-dev): bump @wireapp/copy-config from 2.3.10 to 2.3.11 (#9415)
dependabot[bot] Jan 21, 2026
545e86a
chore(deps): bump lodash from 4.17.21 to 4.17.23 (#9423)
dependabot[bot] Jan 21, 2026
5592eb9
chore(deps): bump @wireapp/commons from 5.4.12 to 5.4.13 (#9424)
dependabot[bot] Jan 22, 2026
d3a3f57
chore(deps-dev): bump @wireapp/eslint-config from 3.1.8 to 3.1.9 (#9426)
dependabot[bot] Jan 22, 2026
975e8cc
chore(deps-dev): bump @wireapp/prettier-config from 0.6.10 to 0.6.11 …
dependabot[bot] Jan 22, 2026
b131af2
chore(deps): bump @wireapp/webapp-events from 0.29.1 to 0.29.2 (#9427)
dependabot[bot] Jan 22, 2026
1e544a2
chore(deps-dev): bump core-js from 3.47.0 to 3.48.0 (#9430)
dependabot[bot] Jan 22, 2026
2a02a44
chore(deps): bump @wireapp/certificate-check from 0.7.26 to 0.7.27 (#…
dependabot[bot] Jan 22, 2026
30e31aa
chore(deps-dev): bump @wireapp/copy-config from 2.3.11 to 2.3.12 (#9428)
dependabot[bot] Jan 22, 2026
99ea019
chore(deps-dev): bump @wireapp/copy-config from 2.3.12 to 2.3.13 (#9436)
dependabot[bot] Jan 26, 2026
78c3226
chore(deps-dev): bump css-loader from 7.1.2 to 7.1.3 (#9446)
dependabot[bot] Jan 28, 2026
a586a68
chore(deps-dev): bump electron from 38.7.2 to 38.8.0 (#9448)
dependabot[bot] Jan 29, 2026
a1700e6
chore(deps-dev): bump @babel/preset-env from 7.28.6 to 7.29.0 (#9453)
dependabot[bot] Feb 2, 2026
598d5ff
chore(deps-dev): bump @babel/core from 7.28.6 to 7.29.0 (#9454)
dependabot[bot] Feb 2, 2026
072001a
chore(deps-dev): bump webpack from 5.104.1 to 5.105.0 (#9457)
dependabot[bot] Feb 4, 2026
945d2a2
chore(deps-dev): bump webpack from 5.105.0 to 5.105.1 (#9471)
dependabot[bot] Feb 11, 2026
c44a404
chore(deps-dev): bump electron from 38.8.0 to 38.8.1 (#9472)
dependabot[bot] Feb 12, 2026
14891ce
chore(deps-dev): bump webpack from 5.105.1 to 5.105.2 (#9474)
dependabot[bot] Feb 13, 2026
e5245ec
chore(deps-dev): bump electron from 38.8.1 to 38.8.2 (#9476)
dependabot[bot] Feb 16, 2026
5f37b38
chore(deps-dev): bump css-loader from 7.1.3 to 7.1.4 (#9481)
dependabot[bot] Feb 17, 2026
8cb8130
chore(deps): bump electron-updater from 6.7.3 to 6.8.3 (#9487)
dependabot[bot] Feb 19, 2026
2eda1fb
chore(deps): bump ajv from 6.12.6 to 6.14.0 (#9490)
dependabot[bot] Feb 21, 2026
93a136e
chore(deps-dev): bump @types/lodash from 4.17.23 to 4.17.24 (#9493)
dependabot[bot] Feb 24, 2026
532bde1
chore(deps-dev): bump electron from 38.8.2 to 38.8.4 (#9499)
dependabot[bot] Feb 25, 2026
6e2330c
chore(deps-dev): bump webpack from 5.105.2 to 5.105.3 (#9502)
dependabot[bot] Feb 27, 2026
c89740f
chore(deps): bump underscore from 1.13.6 to 1.13.8 (#9505)
dependabot[bot] Mar 3, 2026
43ed7e4
chore(deps): bump fs-extra from 11.3.3 to 11.3.4 (#9506)
dependabot[bot] Mar 4, 2026
01c9db5
chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 (#9507)
dependabot[bot] Mar 4, 2026
0a4747b
Move macOS builds from built-in controller to macos agent
jschumacher-wire Mar 5, 2026
295d137
Merge pull request #9511 from wireapp/fix/jenkins-macos-node-label
jschumacher-wire Mar 5, 2026
671bdbe
Move macOS builds from built-in controller to macos agent
jschumacher-wire Mar 5, 2026
5655c70
Merge branch 'dev' into cherry-pick-main
jschumacher-wire Mar 5, 2026
e4ef718
Merge pull request #9512 from wireapp/cherry-pick-main
jschumacher-wire Mar 5, 2026
b2b874e
chore: Bump desktop wrapper version to 3.41.0 (#9509)
nkaramarko Mar 6, 2026
c6897af
chore(deps): bump wire-web-config-internal in /app-config (#9514)
dependabot[bot] Mar 8, 2026
5fcc734
chore(deps-dev): bump electron from 38.8.4 to 38.8.6 (#9524)
dependabot[bot] Mar 11, 2026
da455ef
chore(deps): bump styfle/cancel-workflow-action from 0.13.0 to 0.13.1…
dependabot[bot] Mar 12, 2026
120f143
chore(deps): bump srvaroa/labeler from 1.13.0 to 1.14.0 (#9480)
dependabot[bot] Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.12.1
uses: styfle/cancel-workflow-action@0.13.1
with:
access_token: ${{github.token}}
- name: Checkout repository
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dependabot-auto-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:
steps:
- name: Dependabot metadata
id: metadata
uses: dependabot/fetch-metadata@v2.4.0
uses: dependabot/fetch-metadata@v2.5.0
with:
github-token: '${{secrets.WEBTEAM_AUTOMERGE_TOKEN}}'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ jobs:
steps:
# The settings for this action are in `.github/labeler.yml`.
# See https://github.com/srvaroa/labeler.
- uses: srvaroa/labeler@0a20eccb8c94a1ee0bed5f16859aece1c45c3e55
- uses: srvaroa/labeler@bf262763a8a8e191f5847873aecc0f29df84f957
env:
GITHUB_TOKEN: ${{secrets.OTTO_THE_BOT_GH_TOKEN}}
2 changes: 1 addition & 1 deletion app-config/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"dependencies": {
"wire-web-config-internal": "https://github.com/wireapp/wire-web-config-default#v0.34.6",
"wire-web-config-internal": "https://github.com/wireapp/wire-web-config-default#v0.34.10",
"wire-web-config-production": "https://github.com/wireapp/wire-web-config-wire#v0.34.6"
}
}
11 changes: 7 additions & 4 deletions bin/deploy-tools/lib/deploy-utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,21 @@
*/

import * as assert from 'assert';

import {find} from './deploy-utils';

describe('deploy-utils', () => {
it('safeguard prevents further code execution', async () => {
// safeGuard: true should throw an error
try {
await find('invalid-file', {safeGuard: true});
await find('invalid-file', {cwd: __dirname, safeGuard: true});
assert.fail('find should throw an error with safeguard');
} catch (error) {}
} catch (error) {
// expected
}

// safeGuard: false should return null instead of throwing
try {
const result = await find('invalid-file', {safeGuard: false});
const result = await find('invalid-file', {cwd: __dirname, safeGuard: false});
assert.strictEqual(result, null);
} catch (error) {
assert.fail('find should not throw an error without safeguard');
Expand Down
42 changes: 33 additions & 9 deletions electron/src/locale/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,13 @@ export type SupportedI18nLanguageObject = Record<SupportedI18nLanguage, i18nStri

const app = Electron.app || require('@electron/remote').app;

const parseLocale = (locale: string): SupportedI18nLanguage => {
const languageKeys = Object.keys(SUPPORTED_LANGUAGES) as SupportedI18nLanguage[];
return languageKeys.find(languageKey => languageKey === locale) || languageKeys[0];
};

const getSystemLocale = (): SupportedI18nLanguage => parseLocale(app.getLocale().substring(0, 2));

export const LANGUAGES: SupportedI18nLanguageObject = {
cs,
da,
Expand Down Expand Up @@ -139,17 +146,24 @@ export const SUPPORTED_LANGUAGES = {
let current: SupportedI18nLanguage | undefined;

export const getCurrent = (): SupportedI18nLanguage => {
const systemLocale = getSystemLocale();

if (!current) {
// We care only about the language part and not the country (en_US, de_DE)
const defaultLocale = parseLocale(app.getLocale().substring(0, 2));
current = settings.restore(SettingsType.LOCALE, defaultLocale);
const savedLocale = settings.restore<SupportedI18nLanguage | undefined>(SettingsType.LOCALE);
const savedOverride = settings.restore<boolean | undefined>(SettingsType.LOCALE_OVERRIDE);
const hasUserOverride =
typeof savedOverride === 'boolean' ? savedOverride : Boolean(savedLocale && savedLocale !== systemLocale);

current = savedLocale && hasUserOverride ? parseLocale(savedLocale) : systemLocale;
return current;
}
return current;
};

const parseLocale = (locale: string): SupportedI18nLanguage => {
const languageKeys = Object.keys(SUPPORTED_LANGUAGES) as SupportedI18nLanguage[];
return languageKeys.find(languageKey => languageKey === locale) || languageKeys[0];
// If there’s no override and the system locale changed, update the cache
const hasOverride = settings.restore<boolean | undefined>(SettingsType.LOCALE_OVERRIDE) === true;
if (!hasOverride && current !== systemLocale) {
current = systemLocale;
}
return current;
};

const customReplacements: Record<string, string> = {
Expand Down Expand Up @@ -180,5 +194,15 @@ export const getText = (

export const setLocale = (locale: string): void => {
current = parseLocale(locale);
settings.save(SettingsType.LOCALE, current);

const systemLocale = getSystemLocale();
const isOverride = current !== systemLocale;

if (isOverride) {
settings.save(SettingsType.LOCALE_OVERRIDE, true);
settings.save(SettingsType.LOCALE, current);
} else {
settings.delete(SettingsType.LOCALE_OVERRIDE);
settings.delete(SettingsType.LOCALE);
}
};
22 changes: 22 additions & 0 deletions electron/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ import {config} from './settings/config';
import {settings} from './settings/ConfigurationPersistence';
import {SettingsType} from './settings/SettingsType';
import {SingleSignOn} from './sso/SingleSignOn';
import {initMacAutoUpdater} from './update/macosAutoUpdater';
import {AboutWindow} from './window/AboutWindow';
import {ProxyPromptWindow} from './window/ProxyPromptWindow';
import {WindowManager} from './window/WindowManager';
Expand Down Expand Up @@ -105,6 +106,7 @@ const currentLocale = locale.getCurrent();
const startHidden = Boolean(argv[config.ARGUMENT.STARTUP] || argv[config.ARGUMENT.HIDDEN]);
const customDownloadPath = settings.restore<string | undefined>(SettingsType.DOWNLOAD_PATH);
const appHomePath = (path: string) => `${app.getPath('home')}\\${path}`;
const isInternalBuild = (): boolean => config.environment === 'internal';

if (customDownloadPath) {
electronDl({
Expand Down Expand Up @@ -469,6 +471,7 @@ const handleAppEvents = (): void => {
const mainWindowState = initWindowStateKeeper();
const appMenu = systemMenu.createMenu(isFullScreen);
if (EnvironmentUtil.app.IS_DEVELOPMENT) {
app.commandLine.appendSwitch('enable-webrtc-internals');
appMenu.append(developerMenu);
}

Expand All @@ -478,6 +481,25 @@ const handleAppEvents = (): void => {
tray.initTray();
}
await showMainWindow(mainWindowState);

app.on('ready', async () => {
const mainWindowState = initWindowStateKeeper();
const appMenu = systemMenu.createMenu(isFullScreen);
if (EnvironmentUtil.app.IS_DEVELOPMENT) {
appMenu.append(developerMenu);
}

Menu.setApplicationMenu(appMenu);
tray = new TrayHandler();
if (!EnvironmentUtil.platform.IS_MAC_OS) {
tray.initTray();
}
await showMainWindow(mainWindowState);

if (EnvironmentUtil.platform.IS_MAC_OS && isInternalBuild()) {
initMacAutoUpdater(main);
}
});
});
};

Expand Down
26 changes: 25 additions & 1 deletion electron/src/menu/developer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
*/

import {MenuItem, MenuItemConstructorOptions} from 'electron';
import {BrowserWindow, MenuItem, MenuItemConstructorOptions} from 'electron';

import {executeJavaScriptWithoutResult} from '../lib/ElectronUtil';
import {getAvailebleEnvironments, setEnvironment} from '../runtime/EnvironmentUtil';
Expand Down Expand Up @@ -106,13 +106,37 @@ const separatorTemplate: MenuItemConstructorOptions = {
type: 'separator',
};

const openWebRTCInternals = () => {
const win = new BrowserWindow({
width: 1200,
height: 800,
webPreferences: {
nodeIntegration: false,
contextIsolation: true,
},
});

win.webContents.setWindowOpenHandler(() => ({
action: 'allow',
}));

win.loadURL('chrome://webrtc-internals/');
};

const webRTCInternalsTemplate: MenuItemConstructorOptions = {
label: 'Toggle WebRTC Internals',
click: () => openWebRTCInternals(),
};

const menuTemplate: MenuItemConstructorOptions = {
id: 'Developer',
label: '&Developer',
submenu: [
devToolsTemplate,
reloadTemplate,
separatorTemplate,
webRTCInternalsTemplate,
separatorTemplate,
{
enabled: false,
label: 'Environment',
Expand Down
2 changes: 2 additions & 0 deletions electron/src/settings/SettingsType.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ export enum SettingsType {
FULL_SCREEN = 'fullscreen',
/** Which language (ISO 639-1) should be used to load our web app (de, en, fr, etc.)? */
LOCALE = 'locale',
/** Whether the locale has been explicitly set by the user instead of using the system default. */
LOCALE_OVERRIDE = 'localeOverride',
/** Defines the proxy server url (e.g. http://127.0.0.1:3128)
*
* https://github.com/wireapp/wire-desktop/wiki/Start-Parameters#use-authenticated-proxy-server
Expand Down
109 changes: 109 additions & 0 deletions electron/src/update/macosAutoUpdater.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
* Wire
* Copyright (C) 2025 Wire Swiss GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*
*/

import {BrowserWindow, dialog} from 'electron';
import {autoUpdater} from 'electron-updater';

import {getLogger} from '../logging/getLogger';
import {config} from '../settings/config';

const logger = getLogger('MacAutoUpdater');
const isInternalBuild = (): boolean => config.environment === 'internal';

export function initMacAutoUpdater(mainWindow: BrowserWindow): void {
// Skip in dev
if (process.env.NODE_ENV === 'development') {
logger.log('Skipping auto-update in development');
return;
}

// Only run for internal builds (production = App Store -> handled by Apple)
if (!isInternalBuild()) {
logger.log('Skipping auto-update: not an internal build');
return;
}

logger.log('Initializing macOS auto-updater for internal build');

// INTERNAL FEED URL (served from S3)
// We upload latest-mac.yml + WireInternal-<version>.zip here.
const feedUrl =
process.env.WIRE_INTERNAL_MAC_UPDATE_URL || 'https://wire-taco.s3.eu-west-1.amazonaws.com/mac/internal/updates/';

// TODO (infra): once internal mac auto-update is validated using the raw S3 URL,
// expose it via https://wire-app.wire.com/mac/internal/updates/ (similar to WIN_URL_UPDATE).
// const feedUrl =
// process.env.WIRE_INTERNAL_MAC_UPDATE_URL ||
// 'https://wire-app.wire.com/mac/internal/updates/';

logger.log(`Using update feed: ${feedUrl}`);

autoUpdater.setFeedURL({
provider: 'generic',
url: feedUrl,
});

autoUpdater.on('checking-for-update', () => {
logger.log('Checking for update…');
});

autoUpdater.on('update-available', info => {
logger.log(`Update available: ${info.version}`);
});

autoUpdater.on('update-not-available', info => {
logger.log(`No update available (current: ${info.version})`);
});

autoUpdater.on('error', err => {
logger.error('Auto-updater error', err);
});

autoUpdater.on('download-progress', progress => {
// For now we only log; no progress UI.
logger.log(
`Update download progress: ${progress.percent?.toFixed?.(1) ?? 'n/a'}% at ${progress.bytesPerSecond} B/s`,
);
});

autoUpdater.on('update-downloaded', async info => {
logger.log(`Update downloaded: ${info.version}`);

// Show a simple native dialog when the update is ready.
const result = await dialog.showMessageBox(mainWindow, {
type: 'info',
buttons: ['Install & Restart', 'Later'],
defaultId: 0,
cancelId: 1,
title: 'Wire Update Ready',
message: 'A new version of Wire is ready to install.',
detail: `Version ${info.version} has been downloaded. Wire will restart to complete the update.`,
});

if (result.response === 0) {
logger.log('User chose to install update now');
autoUpdater.quitAndInstall();
} else {
logger.log('User chose to install later');
}
});

// Kick off background check + download.
autoUpdater.checkForUpdates();
}
2 changes: 1 addition & 1 deletion electron/wire.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@
"privacyUrl": "https://wire.com/privacy/",
"supportUrl": "https://support.wire.com",
"updateUrl": "https://wire-app.wire.com/win/prod/",
"version": "3.40.0",
"version": "3.41.0",
"websiteUrl": "https://wire.com"
}
Loading
Loading