From e43ccdd3b787a602d2ae46503c77b60d49c5b573 Mon Sep 17 00:00:00 2001 From: automated-signal <37887102+automated-signal@users.noreply.github.com> Date: Tue, 2 Jun 2026 14:56:32 -0500 Subject: [PATCH] Bump to libsignal v0.94.3 Co-authored-by: andrew-signal --- package.json | 2 +- pnpm-lock.yaml | 10 ++++----- ts/LibsignalNetRemoteConfig.preload.ts | 29 ++++++++++++++++++++++++-- ts/RemoteConfig.dom.ts | 3 +++ ts/textsecure/WebAPI.preload.ts | 3 ++- 5 files changed, 38 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index a7c1952c04..bc56e0e922 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "dependencies": { "@indutny/mac-screen-share": "1.0.13", "@indutny/simple-windows-notifications": "2.0.16", - "@signalapp/libsignal-client": "0.94.1", + "@signalapp/libsignal-client": "0.94.3", "@signalapp/mute-state-change": "workspace:1.0.0", "@signalapp/ringrtc": "2.69.1", "@signalapp/sqlcipher": "3.3.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 117f2b318c..af0e4730b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -70,8 +70,8 @@ importers: specifier: 2.0.16 version: 2.0.16 '@signalapp/libsignal-client': - specifier: 0.94.1 - version: 0.94.1 + specifier: 0.94.3 + version: 0.94.3 '@signalapp/mute-state-change': specifier: workspace:1.0.0 version: link:packages/mute-state-change @@ -4026,8 +4026,8 @@ packages: '@signalapp/libsignal-client@0.92.2': resolution: {integrity: sha512-mSYKpw32Rtmm+D1y8NKzNA9wkiuU60gXRGuum6NTGRN9C3NI4R1cb6xE9w7q+6rjR4zAb4qZWb9QUG5QcLr7pg==} - '@signalapp/libsignal-client@0.94.1': - resolution: {integrity: sha512-1MzENruJ2iwOmVJIb+TCszcSwLxvE9Vo8gElB8VdHvsou9BlGDD+9dsN79VCwkK0+0mo9pyeUT/c07UsewPYDA==} + '@signalapp/libsignal-client@0.94.3': + resolution: {integrity: sha512-CeGLyteVvbUIrUc8lT5HfuY3elwawQuUA4ZOnObGd5uwXLHzM4yMQAt4OzeGT0D4hejaQgEDPIwHkZ9aeFwjOw==} '@signalapp/minimask@1.0.1': resolution: {integrity: sha512-QAwo0joA60urTNbW9RIz6vLKQjy+jdVtH7cvY0wD9PVooD46MAjE40MLssp4xUJrph91n2XvtJ3pbEUDrmT2AA==} @@ -13912,7 +13912,7 @@ snapshots: node-gyp-build: 4.8.4 type-fest: 4.26.1 - '@signalapp/libsignal-client@0.94.1': + '@signalapp/libsignal-client@0.94.3': dependencies: node-gyp-build: 4.8.4 type-fest: 4.26.1 diff --git a/ts/LibsignalNetRemoteConfig.preload.ts b/ts/LibsignalNetRemoteConfig.preload.ts index e4b55cf8c8..51c0e72fe9 100644 --- a/ts/LibsignalNetRemoteConfig.preload.ts +++ b/ts/LibsignalNetRemoteConfig.preload.ts @@ -6,13 +6,14 @@ import { REMOTE_CONFIG_KEYS as KeysExpectedByLibsignalNet, } from '@signalapp/libsignal-client/dist/net.js'; -import { isProduction } from './util/version.std.ts'; +import { isNightly, isProduction } from './util/version.std.ts'; import { drop } from './util/drop.std.ts'; import * as RemoteConfig from './RemoteConfig.dom.ts'; import type { AddPrefix, ArrayValues } from './types/Util.std.ts'; import { createLogger } from './logging/log.std.ts'; const log = createLogger('LibsignalNetRemoteConfig'); +const ENABLE_REFLECTORS_TEST_KEY = 'desktop.enableReflectorsTest'; function convertToDesktopRemoteConfigKey< K extends ArrayValues, @@ -23,11 +24,14 @@ function convertToDesktopRemoteConfigKey< export function bindRemoteConfigToLibsignalNet( libsignalNet: Net, appVersion: string, - reconnect: () => Promise + reconnect: () => Promise, + options: Readonly<{ hasExplicitProxy?: boolean }> = {} ): void { const libsignalBuildVariant = isProduction(appVersion) ? BuildVariant.Production : BuildVariant.Beta; + const hasExplicitProxy = options.hasExplicitProxy === true; + const isReflectorProxyTestBuild = isNightly(appVersion); const setLibsignalRemoteConfig = () => { const remoteConfigs = KeysExpectedByLibsignalNet.reduce((output, key) => { @@ -45,7 +49,22 @@ export function bindRemoteConfigToLibsignalNet( libsignalNet.setRemoteConfig(remoteConfigs, libsignalBuildVariant); }; + const setReflectorProxyTestConfig = () => { + const shouldEnable = + isReflectorProxyTestBuild && + !hasExplicitProxy && + RemoteConfig.isEnabled(ENABLE_REFLECTORS_TEST_KEY); + + log.info('Setting libsignal-net reflector proxy test config', { + enabled: shouldEnable, + }); + libsignalNet.INTERNAL_TESTING_setReflectorProxy(shouldEnable); + }; + setLibsignalRemoteConfig(); + if (isReflectorProxyTestBuild) { + setReflectorProxyTestConfig(); + } RemoteConfig.onChange( KeysExpectedByLibsignalNet.map(convertToDesktopRemoteConfigKey), @@ -63,4 +82,10 @@ export function bindRemoteConfigToLibsignalNet( } } ); + + if (isReflectorProxyTestBuild) { + RemoteConfig.onChange([ENABLE_REFLECTORS_TEST_KEY], () => { + setReflectorProxyTestConfig(); + }); + } } diff --git a/ts/RemoteConfig.dom.ts b/ts/RemoteConfig.dom.ts index 58812c2b15..4a7367bb6c 100644 --- a/ts/RemoteConfig.dom.ts +++ b/ts/RemoteConfig.dom.ts @@ -62,6 +62,7 @@ const ScalarKeys = [ 'desktop.calling.dredDuration.beta', 'desktop.calling.dredDuration.prod', 'desktop.clientExpiration', + 'desktop.enableReflectorsTest', 'desktop.heapSizeWarning', 'desktop.internalUser', 'desktop.loggingErrorToasts', @@ -95,6 +96,8 @@ const KnownDesktopLibsignalNetKeys = [ 'desktop.libsignalNet.chatPermessageDeflate.prod', 'desktop.libsignalNet.chatRequestConnectionCheckTimeoutMillis', 'desktop.libsignalNet.chatRequestConnectionCheckTimeoutMillis.beta', + 'desktop.libsignalNet.forceReflectorsProxyOnlyForTesting', + 'desktop.libsignalNet.forceReflectorsProxyOnlyForTesting.beta', 'desktop.libsignalNet.grpc.AccountsAnonymousCheckAccountExistence.2', 'desktop.libsignalNet.grpc.AccountsAnonymousCheckAccountExistence.2.beta', 'desktop.libsignalNet.grpc.AccountsAnonymousLookupUsernameHash', diff --git a/ts/textsecure/WebAPI.preload.ts b/ts/textsecure/WebAPI.preload.ts index 080c64437c..4306f02d8d 100644 --- a/ts/textsecure/WebAPI.preload.ts +++ b/ts/textsecure/WebAPI.preload.ts @@ -1816,7 +1816,8 @@ export async function connect({ bindRemoteConfigToLibsignalNet( getLibsignalNet(), window.getVersion(), - reconnect + reconnect, + { hasExplicitProxy: proxyUrl != null } ); username = initialUsername;