Compare commits

...

476 Commits

Author SHA1 Message Date
Michelle Tang
cf0157c59d Bump version to 8.3.3 2026-03-17 13:35:15 -04:00
Michelle Tang
8f4dff8d53 Update translations and other static files. 2026-03-17 13:21:27 -04:00
Michelle Tang
1b3fb60cb0 Add more pin message checks. 2026-03-17 11:54:38 -04:00
Michelle Tang
ecbf9d60cb Add back remote deleted column. 2026-03-17 11:53:46 -04:00
jeffrey-signal
117c3ac2db Bump version to 8.3.2 2026-03-16 11:18:10 -04:00
jeffrey-signal
9571215175 Update baseline profile. 2026-03-16 11:06:50 -04:00
jeffrey-signal
754dc8dab4 Update translations and other static files. 2026-03-16 10:49:26 -04:00
Michelle Tang
7caccd341b Add more admin delete checks. 2026-03-13 18:03:42 -04:00
jeffrey-signal
ef6c69a960 Bump version to 8.3.1 2026-03-12 18:04:30 -04:00
jeffrey-signal
e82d11e035 Update baseline profile. 2026-03-12 18:01:28 -04:00
jeffrey-signal
a687fe09ff Update translations and other static files. 2026-03-12 17:54:00 -04:00
jeffrey-signal
d19c536000 Fix about sheet member label emoji not respecting 'use system emoji' preference. 2026-03-12 17:47:02 -04:00
jeffrey-signal
55e029e81d Treat member labels as unset if they can't be decrypted. 2026-03-12 17:33:54 -04:00
Greyson Parrelli
df89f8879d Simplify archiving in chat list, fixing unarchive bug. 2026-03-12 11:51:20 -04:00
jeffrey-signal
2b1db2943c Bump version to 8.3.0 2026-03-11 16:35:07 -04:00
jeffrey-signal
1687f6966b Update baseline profile. 2026-03-11 16:12:45 -04:00
jeffrey-signal
2b685fb42e Update translations and other static files. 2026-03-11 15:48:15 -04:00
jeffrey-signal
73f5a3398c Show warning when group changes would clear member labels. 2026-03-11 15:41:47 -04:00
Alex Hart
35cf24b577 Fix messages not marked as read in split pane mode. 2026-03-11 15:41:46 -04:00
Greyson Parrelli
be920148e7 Copy quotes to the archive as they're received. 2026-03-11 15:41:46 -04:00
Greyson Parrelli
456aaa54f1 Update to SQLCipher 4.13.0 with workaround for FTS issue. 2026-03-11 15:41:46 -04:00
Greyson Parrelli
a872097c31 Update SQLCipher to 4.11.0 to fix FTS issue. 2026-03-11 15:41:46 -04:00
Greyson Parrelli
33c3c48bd5 Make regV5 edge-to-edge. 2026-03-11 15:41:45 -04:00
Greyson Parrelli
cd24691130 Improve welcome bottom sheet UI in regV5. 2026-03-11 15:41:45 -04:00
Cody Henthorne
5d92fb1cc4 Apply body text max length in V2 conversation item to prevent ANR. 2026-03-11 15:41:45 -04:00
Alex Hart
c9e6204a8d Add proper retry for CC Fragment. 2026-03-11 15:41:45 -04:00
Alex Hart
b4ec935762 Fix share sheet ordering.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-11 15:41:45 -04:00
Jesse Weinstein
30426ee42a Remove some unused classes.
Resolves signalapp/Signal-Android#14636
2026-03-11 15:41:44 -04:00
Michelle Tang
1a70449c4c Remove remote_deleted column. 2026-03-11 15:41:44 -04:00
jeffrey-signal
374347da04 Inline the receive member labels feaure flag. 2026-03-11 15:41:44 -04:00
Greyson Parrelli
276662026e Fix potential username link desync after backup restore. 2026-03-11 15:41:44 -04:00
Greyson Parrelli
cd3e9a4009 Add some tests for CameraScreenViewModel. 2026-03-11 15:41:44 -04:00
Alex Hart
7fb866fcfb Utilize InAppPaymentTable as the SSOT for ManageDonationsFragment. 2026-03-11 15:41:44 -04:00
adel-signal
d06febd5b5 Update RingRTC to v2.66.0 2026-03-11 15:41:43 -04:00
Michelle Tang
04813fe345 Sync education sheet seen status for admin delete. 2026-03-11 15:41:43 -04:00
Cody Henthorne
6a3d1634b9 Show warning dialog when attempting to save optimized media. 2026-03-11 15:41:43 -04:00
Alex Hart
c554c0d456 Update string resource references from backup key to recovery key. 2026-03-11 15:41:43 -04:00
Greyson Parrelli
e88f63f54d Improve video capture experience when we can't multi-bind. 2026-03-11 15:41:42 -04:00
jeffrey-signal
7ff051a638 Show other group members with labels. 2026-03-11 15:41:42 -04:00
Cody Henthorne
ac9405e874 Fix skiped ktlint checks in qa task. 2026-03-11 15:41:42 -04:00
Jesse Weinstein
d18c5a7fad Exclude duplicate files from the sourcesJar task.
Resolves #14653
2026-03-11 15:41:42 -04:00
Greyson Parrelli
bdc90f3c02 Update SQLCipher to 4.13.0 2026-03-11 15:41:42 -04:00
jeffrey-signal
94e28eddd0 Enforce member label access control and handle insufficient permission error. 2026-03-11 15:41:41 -04:00
jeffrey-signal
6100664287 Show group update messages for member label permission changes. 2026-03-11 15:41:41 -04:00
Cody Henthorne
54aa477b28 Fix local archive attachment data inconsistency bug. 2026-03-11 15:41:41 -04:00
Greyson Parrelli
3c5774960a Automatically reduce camera use cases on error. 2026-03-11 15:41:41 -04:00
Alex Hart
5140c41c58 Move VM setup code from onCreate to onPreCreate in MediaSelectionActivity.kt. 2026-03-11 15:41:41 -04:00
jeffrey-signal
2b9bb3fb5c Support member labels access control in backups. 2026-03-11 15:41:40 -04:00
jeffrey-signal
9500f4a59c Add support for app version-based remote configs. 2026-03-11 15:41:40 -04:00
andrew-signal
a64b77d6f2 Bump to libsignal v0.88.1 2026-03-11 15:41:40 -04:00
Cody Henthorne
4f9e77e7cd Add additional decryption benchmark trace. 2026-03-11 15:41:40 -04:00
jeffrey-signal
13444136bd Introduce new add member labels permission. 2026-03-11 15:41:40 -04:00
Cody Henthorne
7beb4dd939 Allow calling related network calls to run in parallel. 2026-03-09 12:24:14 -04:00
Michelle Tang
51e6ae8f03 Fix cut-off profile picture options. 2026-03-09 12:24:14 -04:00
Cody Henthorne
7aca5f77f6 Consolidate profile update operations to improve large batch fetching. 2026-03-09 12:24:14 -04:00
Cody Henthorne
02ce6c62a8 Add additional thread delete performance improvements. 2026-03-09 12:24:14 -04:00
Cody Henthorne
b0b2c32a6f Prevent main thread posts when unobserved LiveRecipients change. 2026-03-09 12:24:14 -04:00
Michelle Tang
cf7fee2de8 Use shorten display name. 2026-03-09 12:24:13 -04:00
Cody Henthorne
bb730c137f Improve incoming group receipt processing. 2026-03-09 12:24:13 -04:00
Cody Henthorne
da2eb02cde Fix crash for incoming calls when running in private spaces. 2026-03-09 12:24:13 -04:00
Michelle Tang
f271c85aef Update backup support url. 2026-03-09 12:24:13 -04:00
Michelle Tang
bd5f25ffc7 Fix deleting a disappeared message. 2026-03-09 12:24:12 -04:00
Cody Henthorne
3d78d5473e Improve group conversation open performance by prefetching member labels. 2026-03-09 12:24:12 -04:00
Cody Henthorne
49d3f7652d Prevent change animation from firing on thread updates. 2026-03-09 12:24:12 -04:00
Cody Henthorne
5b543c5212 Fix release channel recipient ID surviving failed backup imports. 2026-03-09 12:24:12 -04:00
Greyson Parrelli
2356bb6da2 Fix ScreenDensity calculation. 2026-03-09 12:24:12 -04:00
Cody Henthorne
c2bdc11832 Fix GIF preview not animating after leaving media viewer. 2026-03-09 12:24:11 -04:00
Greyson Parrelli
2bd440e07c Cap the number of incrementalMacs populated in an envelope.
Add a remote config `global.maxIncrementalMacsPerEnvelope` (client
fallback of 10) that limits how many attachment pointers in a single
envelope can have their incrementalMac field populated. Each
incrementalMac can be up to 8 KiB, so having too many risks exceeding
the 96 KiB envelope size threshold. Excess attachment pointers have
their incrementalMac and chunkSize fields stripped.
2026-03-09 12:24:11 -04:00
Greyson Parrelli
6eee4db87b Use stronger alarm signal for exact alarms. 2026-03-09 12:24:11 -04:00
Greyson Parrelli
e7d1db446b Add support for story archiving. 2026-03-09 12:24:11 -04:00
Cody Henthorne
ff50755ba2 Add sealed sender certificate validity constraint to send jobs. 2026-03-09 12:24:10 -04:00
Greyson Parrelli
f8ef262b3d Tweak some backup megaphone strings. 2026-03-09 12:24:10 -04:00
jeffrey-signal
f8737995fa Bump version to 8.2.2 2026-03-09 12:17:17 -04:00
jeffrey-signal
1bbefea857 Update baseline profile. 2026-03-09 12:13:20 -04:00
jeffrey-signal
143630c41b Update translations and other static files. 2026-03-09 12:05:25 -04:00
Michelle Tang
577eaa1eae Avoid dropping column in message table. 2026-03-09 10:45:27 -04:00
Greyson Parrelli
316b071c81 Bump version to 8.2.1 2026-03-06 16:34:51 -05:00
Greyson Parrelli
5a6f55c0a8 Update baseline profile. 2026-03-06 16:34:32 -05:00
Greyson Parrelli
e008a50acc Update translations and other static files. 2026-03-06 16:18:53 -05:00
Michelle Tang
41c3913482 Update notification on admin delete. 2026-03-06 13:39:53 -05:00
Greyson Parrelli
803ff76678 Bump version to 8.2.0 2026-03-04 14:15:38 -05:00
Greyson Parrelli
309081437a Update baseline profile. 2026-03-04 14:15:38 -05:00
Greyson Parrelli
5f152b73c2 Update translations and other static files. 2026-03-04 14:03:32 -05:00
Greyson Parrelli
f8d3336a1e Add internal setting to disable internal user. 2026-03-04 13:55:39 -05:00
jeffrey-signal
dc1fdffe6a Warn user when their member label will show instead of their about text. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
622d9c909f Fix unarchive actions from conversation search.
Fixes #14640
2026-03-04 13:55:39 -05:00
Michelle Tang
4e3ef19c1f Rotate receive for admin delete. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
b054a30fa7 Add support for remote muting call participants. 2026-03-04 13:55:39 -05:00
jeffrey-signal
7266c24354 Show the entire member label on recipient details sheet. 2026-03-04 13:55:39 -05:00
jeffrey-signal
5ec2877bcc Fix member label disappearing after a new group member is added. 2026-03-04 13:55:39 -05:00
jeffrey-signal
0d93446c7d Fix member label emoji picker button not respecting use system emoji preference. 2026-03-04 13:55:39 -05:00
Michelle Tang
1e395ab416 Use global config for admin delete timer. 2026-03-04 13:55:39 -05:00
Michelle Tang
0acb5ac7cd Update admin delete string. 2026-03-04 13:55:39 -05:00
jeffrey-signal
3b18b5d2b7 Fix member label text size. 2026-03-04 13:55:39 -05:00
jeffrey-signal
16e63a061d Allow any group member to set member labels. 2026-03-04 13:55:39 -05:00
Michelle Tang
a6c8b940c9 Consolidate admin delete into one string. 2026-03-04 13:55:39 -05:00
Michelle Tang
74d9e3248b Add pending and failed states for admin delete. 2026-03-04 13:55:39 -05:00
andrew-signal
3af8b6050c Bump to libsignal v0.88.0. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
da966753a1 Guard against invalid authors in directionless messages in archive export. 2026-03-04 13:55:39 -05:00
Cody Henthorne
0ad4b3f73e Skip optimize media when backup subscription is pending cancelation. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
e8d072d4be Only set optimized storage in archive if on paid tier. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
b0eed4a095 Filter out unmappable body ranges during archive export. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
ba720efe61 Skip quotes with authors that lack ACI and E164 during archive export. 2026-03-04 13:55:39 -05:00
Cody Henthorne
e23d575460 Fix incorrect transaction batching during conversation delete. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
7fbcd17759 Add some megaphones to encourage users to try backups. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
a95ebb2158 Add improved notification settings when muted. 2026-03-04 13:55:39 -05:00
Greyson Parrelli
8a36425cac Remove broken legacy color migration.
Fixes #14228
Resolves #14518
2026-03-04 13:45:24 -05:00
Michelle Tang
4261ed39dc Fix message details crash on recipient tap. 2026-03-04 13:45:24 -05:00
jeffrey-signal
ca37a884fd Delete unused GroupMembersDialog. 2026-03-04 13:45:24 -05:00
Alex Hart
9fbb7683bc Fix RTL text direction not enforced when text starts with LTR characters.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-04 13:45:24 -05:00
Jim Gustafson
42e275ef0a Update to RingRTC v2.65.3 2026-03-04 13:45:24 -05:00
Greyson Parrelli
19ece12e93 Remove deprecated backup flavor. 2026-03-04 13:45:24 -05:00
Michelle Tang
3ef0d3e4a3 Skip pins of deleted messages. 2026-03-04 13:45:24 -05:00
andrew-signal
602ea46b8b Bump to libsignal v0.87.5. 2026-03-04 13:45:24 -05:00
Alex Hart
95c0bc6052 Update internal and local backup access. 2026-03-04 13:45:24 -05:00
Alex Hart
bd4ce1788c Fix ANR when backup deletion hangs. 2026-03-04 13:45:24 -05:00
Alex Hart
20d16a8433 Show immediate progress feedback when creating a local backup.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-04 13:45:24 -05:00
Alex Hart
db4c11cd53 Use user-friendly display path for local backup folder.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-04 13:45:24 -05:00
Greyson Parrelli
f439e1f8e3 Add additional upload validation to UploadAttachmentToArchiveJob. 2026-03-04 13:45:24 -05:00
Cody Henthorne
080b1aab83 Fix unable to restore username after device transfer. 2026-03-04 13:45:24 -05:00
Cody Henthorne
61ba2ac97a Improve message processing performance. 2026-03-04 13:45:23 -05:00
Alex Hart
7eebb38eda Add post-registration restore for backups v2 as well as error messaging. 2026-03-04 13:45:23 -05:00
Greyson Parrelli
43e7d65af5 Bump version to 8.1.3 2026-03-04 13:41:59 -05:00
Greyson Parrelli
386d8bb312 Update translations and other static files. 2026-03-04 13:41:32 -05:00
Michelle Tang
3fbd72092c Use batch inserting migration instead. 2026-03-02 17:30:54 -05:00
Greyson Parrelli
4e5b15cd88 Never notify for quotes in muted 1:1 chats. 2026-03-02 13:58:02 -05:00
Greyson Parrelli
8b2aeba3bd Bump version to 8.1.2 2026-02-27 22:44:39 -05:00
Greyson Parrelli
1d2334b920 Update translations and other static files. 2026-02-27 22:44:11 -05:00
jeffrey-signal
38a234ae66 Fix crash after inviting group members. 2026-02-27 22:29:06 -05:00
jeffrey-signal
2c1226dc02 Fix groups v1 migration suggestions dialog crash. 2026-02-27 22:27:58 -05:00
Greyson Parrelli
1df8ef6464 Fix backup import issue when we dedude messages with edits. 2026-02-27 16:25:30 -05:00
Alex Hart
f8d40bf86d Revert "Don't show 'Payment Pending' during backup subscription keep-alive flows."
This reverts commit e87aa22d32.
2026-02-27 17:02:15 -04:00
Alex Hart
58ab03b4e3 Fix crash when enabling vanity camera before capturer initialization. 2026-02-27 16:35:39 -04:00
Michelle Tang
0bf54e6b45 Fix network crash when unpinning. 2026-02-27 15:19:48 -05:00
jeffrey-signal
8fca0c69ac Bump version to 8.1.1 2026-02-26 21:51:58 -05:00
jeffrey-signal
70eb4ca2a1 Update baseline profile. 2026-02-26 21:29:00 -05:00
jeffrey-signal
9d9e30725e Update translations and other static files. 2026-02-26 21:20:51 -05:00
jeffrey-signal
ff9585ec7d Show member labels on the admin sheet. 2026-02-26 20:00:36 -05:00
Greyson Parrelli
a418c2750a Fix mute icons theming. 2026-02-26 13:54:11 -05:00
jeffrey-signal
9581994050 Handle network and permissions errors when saving group member label. 2026-02-26 10:34:16 -05:00
jeffrey-signal
316d0e67c5 Enforce member label emoji and text constraints. 2026-02-26 08:32:32 -05:00
Cody Henthorne
503bf04ec5 Bump version to 8.1.0 2026-02-25 20:01:23 -05:00
Cody Henthorne
d6b76936dd Update baseline profile. 2026-02-25 19:55:25 -05:00
Cody Henthorne
c53d16717b Update translations and other static files. 2026-02-25 19:46:16 -05:00
jeffrey-signal
2c747daa50 Disable member label button for users without permission to edit. 2026-02-25 19:38:12 -05:00
jeffrey-signal
0b2d3edcce Add member labels education sheet. 2026-02-25 19:38:12 -05:00
jeffrey-signal
955bcde062 Rotate send member labels flag. 2026-02-25 19:38:12 -05:00
Greyson Parrelli
a91aa72fb4 Guard against missing integrity check in CopyAttachmentToArchiveJob.
Add a check for hadIntegrityCheckPerformed() before attempting to copy
an attachment to the archive. If the attachment's download has failed
(transferState == FAILED), requireMediaName() would throw an
IllegalArgumentException because the integrity check was never
completed. The fix resets the archive transfer state to NONE and skips,
allowing a future successful download to re-trigger archiving.
2026-02-25 19:38:12 -05:00
Alex Hart
163ece75b2 Remove note about call links if there are no call links selected. 2026-02-25 19:38:12 -05:00
Alex Hart
a8fb5f2598 Prevent EmojiTextView measurement oscillation on size changes. 2026-02-25 19:38:12 -05:00
Alex Hart
3a62ad67e1 Fix out-of-sync audio selection.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-25 19:38:12 -05:00
Greyson Parrelli
48f4e1ddc6 Rotate the android.cameraXModelBlockList and android.cameraXMixedModelBlockList flags. 2026-02-25 19:38:12 -05:00
Greyson Parrelli
c37bb96aab Only bind camera use cases that the device supports.
The new camera implementation always bound all four CameraX use cases
(preview, image capture, video capture, and image analysis) regardless
of device capabilities. On devices with LEGACY camera hardware level,
this causes image capture to fail with "Capture request failed with
reason ERROR" because the hardware cannot handle that many simultaneous
use cases.

This change makes video capture and QR scanning use case binding
conditional based on CameraXModePolicy, which already determines device
capabilities. Video capture is only bound when the device supports mixed
mode (image + video simultaneously). QR scanning analysis is only bound
when explicitly requested.
2026-02-25 19:38:12 -05:00
jeffrey-signal
a2057e20d2 Rename UiCallbacks interfaces to avoid redeclaration errors. 2026-02-25 19:38:12 -05:00
Greyson Parrelli
577e05eb51 Make sure we transcode non-H264 video. 2026-02-25 19:38:12 -05:00
Greyson Parrelli
65a30cf2a7 Mark attachment 404's as permanent failures. 2026-02-25 19:38:12 -05:00
Greyson Parrelli
121f0c6134 Add custom mute until option. 2026-02-25 19:38:12 -05:00
jeffrey-signal
7d1897a9d2 Add ability to set group member label from conversation settings. 2026-02-25 19:38:12 -05:00
Alex Hart
415dbd1b61 Fix issue with joining video call from lock screen.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-25 19:38:12 -05:00
Alex Hart
cfc1c35203 Eliminate unnecessary utilization of SubcomposeLayout which was causing a calling crash.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-25 19:38:12 -05:00
Alex Hart
911d7f3be8 Fix crash occurring when user rapidly enters and leaves a call.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-25 19:38:12 -05:00
Cody Henthorne
c06944da13 Add receipt processing benchmark tests. 2026-02-25 19:38:12 -05:00
Alex Hart
b6dd4a3579 Fix formatting in EditMessageRevisionTest. 2026-02-25 09:49:49 -04:00
Greyson Parrelli
b057e145c5 Ensure usernames are unique regardless of casing. 2026-02-25 00:34:22 -05:00
Greyson Parrelli
772ad3b929 Show gallery button on camera screen when camera permission is denied. 2026-02-24 23:46:42 -05:00
Michelle Tang
46681868d3 Put new deleting UI behind remote config. 2026-02-24 18:21:51 -05:00
Michelle Tang
75795bd7d5 Update incoming delete message strings. 2026-02-24 18:10:16 -05:00
Greyson Parrelli
1908723fbe Prevent potential ISE in MediaPreviewV2Fragment. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
549992c08a Fix potention NPE on video recording failures. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
845704b9fe Map UNKNOWN group member role to DEFAULT during backup export. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
ba03ca5e0c Drop quotes with unexported authors during backup export. 2026-02-24 16:50:01 -05:00
Cody Henthorne
92a9f12b58 Fix notification not being dismissed for read edited message. 2026-02-24 16:50:01 -05:00
Cody Henthorne
3437ac63bb Fix group recipient being created without a group record. 2026-02-24 16:50:01 -05:00
jeffrey-signal
d798a35c38 Member labels padding, margin, and styling fixes. 2026-02-24 16:50:01 -05:00
Alex Hart
01b56995d9 Add distinctUntilChanged to speaker hint flow to prevent repeated popups.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-24 16:50:01 -05:00
Greyson Parrelli
3f190efb4e Validate profile keys before writing them to backup exports. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
bb6b149c2e Fix potential validation error with mentions. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
65b96fff16 Delete some dead testing code. 2026-02-24 16:50:01 -05:00
jeffrey-signal
0b8e8a7b2f Separate v1 and v2 colorizer implementations. 2026-02-24 16:50:01 -05:00
jeffrey-signal
a8a6fec19d Show preview on edit member label screen. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
a3fce4c149 Filter hidden recipients from contact-joined notifications. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
85265412da Skip trigger drop/recreate in deleteMessagesInThread when there are no messages to delete.
The deleteMessagesInThread method unconditionally drops and recreates FTS
and MSL triggers in every call, even when there are no messages matching
the delete criteria. Each trigger drop/create cycle changes the database
schema cookie, causing SQLITE_SCHEMA errors for concurrent reader
connections.
2026-02-24 16:50:01 -05:00
andrew-signal
e636a94de0 Fix bug where we constantly cycled network stack when on network with PAC proxy. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
08509f6693 Fix bug where video dimensions aren't always correct in chat view. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
d28fc98cfd Add ability to use volume buttons to capture image/video. 2026-02-24 16:50:01 -05:00
Michelle Tang
f584ef1d72 Add network constraint to admin delete job. 2026-02-24 16:50:01 -05:00
Alex Hart
67a6df57c8 Allow user to cancel in-flight keep-alive donation. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
fadbb0adc5 Enable change animations in the conversation list. 2026-02-24 16:50:01 -05:00
Michelle Tang
58774033b7 Prioritize regular delete first. 2026-02-24 16:50:01 -05:00
Cody Henthorne
66f0470960 Improve incoming group message processing. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
68137cb66f Add internal config to schedule a message after the weekend. 2026-02-24 16:50:01 -05:00
Alex Hart
4d6cacdb3d Fix call controls flickering when starting a video call.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-24 16:50:01 -05:00
Alex Hart
cf862af3ca Increase bank transfer minimum name limit.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-24 16:50:01 -05:00
Alex Hart
a8d106a292 Disable audio focus for video GIF playback in media send flow.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-24 16:50:01 -05:00
Michelle Tang
6155140de4 Default to allowing multiple votes. 2026-02-24 16:50:01 -05:00
Alex Hart
a4637248e8 Set megaphone snooze for backups to 2 weeks. 2026-02-24 16:50:01 -05:00
Alex Hart
8c4470a27e Add logline for full-screen intent support. 2026-02-24 16:50:01 -05:00
Michelle Tang
071fbfd916 Add support for admin delete. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
1968438ebb Improve video transcoding error logging. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
7b31383b88 Improve video encoder/decoder fallback logic. 2026-02-24 16:50:01 -05:00
Cody Henthorne
093a79045d Fix incorrect sender key state for mismatch/stale devices. 2026-02-24 16:50:01 -05:00
Cody Henthorne
e4928b0084 Fix long database transaction when syncing system contact information. 2026-02-24 16:50:01 -05:00
jeffrey-signal
03420cf501 Prevent autofill framework from treating message input as a credential field. 2026-02-24 16:50:01 -05:00
Cody Henthorne
541b4674a8 Add remote_backups cta action for release notes. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
6e108a03d1 Improve video transcode test error detection. 2026-02-24 16:50:01 -05:00
Alex Hart
c9dd332abd Pre-Registration Restoration from Local Unified Backup. 2026-02-24 16:50:01 -05:00
jeffrey-signal
7e605fb6de Fix member label emoji ignoring use system emoji preference. 2026-02-24 16:50:01 -05:00
andrew-signal
fa2b0aedb0 Bump to libsignal v0.87.4 2026-02-24 16:50:01 -05:00
andrew-signal
402f49edd9 Replace usages of old getEncryptedUsernameFromLinkServerId for libsignal's lookUpUsernameLink. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
caf2e555dd Fix more HDR transcoding errors. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
32dc36d937 Fix various transcoding issues on samsung devices. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
771d49bfa8 Add an instrumentation test for video transcoding. 2026-02-24 16:50:01 -05:00
Greyson Parrelli
70dc78601a Exclude time from apk output filename. 2026-02-24 16:50:01 -05:00
Cody Henthorne
b4d781ddbb Reduce calls to sleep for WebSocket keep alives. 2026-02-24 16:50:01 -05:00
jeffrey-signal
9c29601b55 Consolidate about sheet state into a single object. 2026-02-24 16:50:01 -05:00
jeffrey-signal
28c37cb3ac Add ability to edit member label from the about you sheet. 2026-02-24 16:50:01 -05:00
DivyaKhunt07
bd121e47c8 Fix bubble desired height calculation. 2026-02-24 16:50:00 -05:00
Greyson Parrelli
7428e1e2ea Improve UI for regV5 verification code submission. 2026-02-24 16:50:00 -05:00
Greyson Parrelli
376cb926b0 Give a more readable in-app version name to the nightly. 2026-02-24 16:50:00 -05:00
Greyson Parrelli
4ed0056d2a Preserve user zoom level when starting video recording.
Remove the unconditional zoom reset to 1x at the start of video
recording so that any pinch-to-zoom the user applied before recording
is maintained.
2026-02-24 16:50:00 -05:00
Cody Henthorne
177ef8a555 Bump version to 8.0.4 2026-02-24 16:24:04 -05:00
Cody Henthorne
7244a1f52f Update translations and other static files. 2026-02-24 16:23:32 -05:00
Alex Hart
8d311923c1 Fix possible crash when restoring fragments. 2026-02-24 17:00:47 -04:00
Cody Henthorne
9359d56880 Bump version to 8.0.3 2026-02-23 11:42:37 -05:00
Cody Henthorne
3214200188 Update baseline profile. 2026-02-23 11:35:58 -05:00
Cody Henthorne
841ab7f983 Update translations and other static files. 2026-02-23 11:06:18 -05:00
Alex Hart
53b3728432 Update handling for early nav. 2026-02-23 11:13:42 -04:00
Alex Hart
cf9f98efc9 Fix bad behavior when rotating device with message details open. 2026-02-23 10:54:21 -04:00
Alex Hart
b5c666a1f4 Bump version to 8.0.2 2026-02-19 13:18:41 -04:00
Alex Hart
b1954a509c Update baseline profile. 2026-02-19 13:16:06 -04:00
Alex Hart
c2c91cfe42 Update translations and other static files. 2026-02-19 12:51:41 -04:00
Greyson Parrelli
cccbec5744 Only set HDR transcoder flags for HDR content. 2026-02-19 10:58:55 -05:00
Alex Hart
4c89b20fad Fix possible captcha race. 2026-02-19 11:14:14 -04:00
Greyson Parrelli
2328fa3e88 Route video GIF attachments to the GENERIC_TRANSCODE queue. 2026-02-19 09:57:23 -05:00
Greyson Parrelli
e19d4624c1 Fix video transcoding crash caused by premature codec API calls.
Move getParameterDescriptor and setParameters calls to after
configure/start, since they require the codec to be in the
Executing state. Always set KEY_COLOR_TRANSFER_REQUEST in the
format before configure as the primary tone-mapping mechanism.
2026-02-19 09:57:06 -05:00
Alex Hart
345f58ed48 Bump version to 8.0.1 2026-02-18 16:26:31 -04:00
Alex Hart
4c14ce3937 Update translations and other static files. 2026-02-18 16:17:34 -04:00
Alex Hart
82684c0169 Bump version to 8.0.0 2026-02-18 16:03:34 -04:00
Alex Hart
2607328255 Update translations and other static files. 2026-02-18 15:52:21 -04:00
Michelle Tang
484ce3a1da Turn on binary service writes. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
85d5f62301 Fix potential archive sync issue. 2026-02-18 15:48:16 -04:00
jeffrey-signal
b0571f8184 Fix edit group member label placeholder text. 2026-02-18 15:48:16 -04:00
Cody Henthorne
b80dd28b40 Defensively prevent gif playback in background. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
e0cf0808cf PIP moves opposite to finger in RTL mode.
Co-authored-by: Alex Hart <alex@signal.org>
2026-02-18 15:48:16 -04:00
Greyson Parrelli
ffdd5b62ae Remove now-unused colorInfo parsing from video transcoding. 2026-02-18 15:48:16 -04:00
jeffrey-signal
3b5376ef8b Fix mixed-directional text input behavior in recipient search field. 2026-02-18 15:48:16 -04:00
jeffrey-signal
cd57fb0d76 Fix member label pill overflow caused by excessive combining marks. 2026-02-18 15:48:16 -04:00
adel-signal
6986acd6f4 Update RingRTC to 2.65.0
Co-authored-by: emir-signal <emir@signal.org>
Co-authored-by: Cody Henthorne <cody@signal.org>
2026-02-18 15:48:16 -04:00
Greyson Parrelli
2bc571ffd3 Possible fix for some transcoding issues. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
a8dddf33f8 Media needs to be tapped on twice for it to load during call.
Fixes #14581
Fixes #14592
2026-02-18 15:48:16 -04:00
Greyson Parrelli
46582a685b Fix weird screen transition when accepting an incoming call.
Co-authored-by: Alex Hart <alex@signal.org>
2026-02-18 15:48:16 -04:00
Greyson Parrelli
ad381783f7 Gifs stop or lower volume of other media playing.
Fixes #14297

Co-authored-by: Alex Hart <alex@signal.org>
2026-02-18 15:48:16 -04:00
jeffrey-signal
b81c1eb65c Fix crash when selecting a group to add a recipient. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
2c4d3b3ee4 Fix deleted attachment still visible under 'Shared media'. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
d1400928ce Slide in country picker vertically in regV5. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
49abece92b Includes quotes of your messages in 'notify for mentions' setting.
Fixes #14595
2026-02-18 15:48:16 -04:00
Greyson Parrelli
b48b1f031e Fix gradle format task. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
9cefe0bc04 Allow importing a backup as part of quickstart. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
ee73b0e229 Allow reading quickstart credentials from disk. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
ab0ce58812 Fix find-by-username text field using wrong background color.
The TextField was not explicitly setting container colors, causing it
to fall back to Material 3 defaults instead of the app's surfaceVariant
color. Added focusedContainerColor, unfocusedContainerColor, and
disabledContainerColor to match the pattern used throughout the rest
of the codebase.
2026-02-18 15:48:16 -04:00
Greyson Parrelli
333a206d36 Fix issue where emoji search bar got weird after tab switching. 2026-02-18 15:48:16 -04:00
Michelle Tang
86bb7666ea Fix unpinning all in note to self. 2026-02-18 15:48:16 -04:00
Cody Henthorne
58b5ebf39d Allow SendDeliveryReceiptJob to run during benchmarking tests. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
47947b85c7 Fix note to self media delete options. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
6910ba6d2e Ignore storageId in Recipient.hasSameContent().
Was potentially causing unnecessary UI churn.
2026-02-18 15:48:16 -04:00
Cody Henthorne
08254edae6 Add incoming group message benchmark tests. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
e67307a961 Add quickstart variant that launches with predefined credentials. 2026-02-18 15:48:16 -04:00
Cody Henthorne
9922621945 Add incoming individual message benchmark tests. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
c7476a2a07 Mute in lobby if accepting large group call. 2026-02-18 15:48:16 -04:00
Alex Hart
ac59528f5c Enable call vanity when joining a video call. 2026-02-18 15:48:16 -04:00
Alex Hart
97c9728c65 Resolve crash in blur container due to multiple measures. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
80d1694e6e Ensure data is updated when refreshing contacts during a search.
Fixes #14112
2026-02-18 15:48:16 -04:00
Greyson Parrelli
28c6e31c7d Removing a recipient does not immediately remove them from the contacts list. 2026-02-18 15:48:16 -04:00
Cody Henthorne
8836b2a570 Fix media send delayed after backgrounding app. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
786c2b888b Remove beta labeling from Signal Secure Backups. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
c91275c5da Add the country code picker to regV5. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
7b362460e7 Spruce up the welcome and permission screens in regV5. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
a1862c3420 Sticker from Google emoji keyboard renders as image attachment when forwarded. 2026-02-18 15:48:16 -04:00
jeffrey-signal
44ea9ccc59 Fix unique constraint violation when importing groups with duplicate recipient IDs. 2026-02-18 15:48:16 -04:00
andrew-signal
4c9cdf3b8f Refactor RefreshOwnProfileJob to Kotlin. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
4a6d4f197d Add 429 handling to various archive calls. 2026-02-18 15:48:16 -04:00
Greyson Parrelli
ae04749336 Add better logging for ovesized messages. 2026-02-18 15:48:16 -04:00
Cody Henthorne
caa743aba2 Fix foreground service start in background crash by starting service sooner for incoming group calls. 2026-02-18 15:48:16 -04:00
Alex Hart
a4469a4285 Fix issue with initial audio output setting.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-18 15:48:08 -04:00
Alex Hart
2771b31aab Clear stale user-selected audio device when it disconnects.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-18 15:48:06 -04:00
Greyson Parrelli
5c418a4260 Add RRP support to regV5. 2026-02-18 15:48:06 -04:00
Alex Hart
17dbdf3b74 Bump version to 7.74.3 2026-02-18 11:38:55 -04:00
Alex Hart
8315ae47c4 Update translations and other static files. 2026-02-18 11:31:14 -04:00
Michelle Tang
50b59805ca Add more binary service reads. 2026-02-18 10:13:41 -05:00
Alex Hart
58bc387d0b Bump version to 7.74.2 2026-02-17 23:18:40 -04:00
Alex Hart
d2dd6790a0 Update translations and other static files. 2026-02-17 23:16:23 -04:00
jeffrey-signal
78c7795b89 Fix sender name/label overflowing beyond message bubble media width. 2026-02-17 22:43:06 -04:00
jeffrey-signal
73c25f3476 Ensure consistent margins below sender name/label. 2026-02-17 18:17:36 -05:00
jeffrey-signal
6f9f89734d Fix sender name/label overflowing beyond message bubble media width. 2026-02-17 16:10:33 -05:00
Greyson Parrelli
da68bee742 Fix issue where you can't download media in calls. 2026-02-17 11:44:28 -05:00
jeffrey-signal
e5f1f9394d Fix sender name alignment in conversations. 2026-02-17 11:37:07 -05:00
Michelle Tang
d9d6f8c97e Bump version to 7.74.1 2026-02-16 16:33:31 -05:00
Michelle Tang
a35a141411 Update translations and other static files. 2026-02-16 16:18:38 -05:00
Michelle Tang
1e0c7b1120 Fix recipient call crash. 2026-02-16 16:09:39 -05:00
Michelle Tang
9b9734f82a Bump version to 7.74.0 2026-02-11 18:24:13 -05:00
Michelle Tang
fe437b5234 Update translations and other static files. 2026-02-11 18:14:12 -05:00
jeffrey-signal
59bb505a3e Support member labels in backups. 2026-02-11 18:08:57 -05:00
jeffrey-signal
28d8d62cbd Rotate receive member labels flag. 2026-02-11 18:08:57 -05:00
jeffrey-signal
cb05608422 Show member labels in quotes. 2026-02-11 18:08:57 -05:00
Michelle Tang
e384a37fab Fix beta label width. 2026-02-11 18:08:57 -05:00
Michelle Tang
9a04cd9e3b Move education sheet to safety numbers screen. 2026-02-11 18:08:57 -05:00
Cody Henthorne
dd396eb75a Fix group updates from others showing before messages made before the update. 2026-02-11 18:08:57 -05:00
Greyson Parrelli
611b52780e Fix sticker grid sometimes getting stuck on 2 columns. 2026-02-11 18:08:57 -05:00
Michelle Tang
20a05220ea Adjust strings. 2026-02-11 18:08:57 -05:00
Greyson Parrelli
38e8f24c20 Fix gif and stickers buttons disappearing after exiting edit. 2026-02-11 18:08:57 -05:00
Alex Hart
58d2c92102 Move the rest of the permissions classes. 2026-02-11 18:08:57 -05:00
Greyson Parrelli
f90ba45940 Make pinned chat limit remote configurable. 2026-02-11 18:08:57 -05:00
Tom Ritter
1ecf42bfd3 Fix the message edited label not always appearing.
Closes signalapp/Signal-Android#14582
2026-02-11 18:08:57 -05:00
Greyson Parrelli
ed56c21e5b Fix bug where image wasn't showing after send. 2026-02-11 18:08:57 -05:00
Greyson Parrelli
a0c55baf39 Show whose safety number changed in group chat summaries. 2026-02-10 11:34:24 -05:00
Greyson Parrelli
3b3ef0d545 Allow some context menu actions in search. 2026-02-10 11:30:05 -05:00
jeffrey-signal
78e7f99344 Add group member labels to conversation items. 2026-02-10 10:35:54 -05:00
jeffrey-signal
d709d67f54 Fix position of clearable text field remaining characters count. 2026-02-10 10:35:54 -05:00
jeffrey-signal
6d30fd11a7 Add description to edit member label screen. 2026-02-10 10:35:54 -05:00
Cody Henthorne
4a39c7950f Split performance benchmark and baseline profile into separate modules. 2026-02-10 10:35:54 -05:00
Greyson Parrelli
3dd5ad2a8a Fix video scrubber contrast with HDR video.
Co-authored-by: Milan Stevanovic <milan@signal.org>
2026-02-10 10:35:54 -05:00
jeffrey-signal
d7b7727aa6 Show member labels in conversation settings. 2026-02-10 10:35:54 -05:00
Cody Henthorne
0199cd24ef Remove proto files from APK. 2026-02-10 10:35:54 -05:00
jeffrey-signal
8513e8c4f9 Fix donation learn more sheet icon colors. 2026-02-10 10:35:54 -05:00
Greyson Parrelli
5d2d9017f1 Fix for some HDR transcoding issues.
Co-authored-by: Milan Stevanovic <milan@signal.org>
2026-02-10 10:35:54 -05:00
Alex Hart
879e8f98bd Ensure lint configuration is applied to all modules. 2026-02-10 10:35:54 -05:00
Greyson Parrelli
2c6524f6c0 Include battery info debuglog. 2026-02-10 10:35:54 -05:00
Greyson Parrelli
c9bd81d332 Show linked deviceId's for internal users. 2026-02-10 10:35:54 -05:00
Greyson Parrelli
2d29b02cea Add new sticker packs.
- My Daily Life 2
- Rocky Talk
- Cozy Season
- Chug the Mouse
- Croco's Feelings as blessed sticker packs
2026-02-10 10:35:54 -05:00
andrew-signal
c0a279fcc5 Bump to libsignal v0.87.1 2026-02-10 10:35:54 -05:00
Greyson Parrelli
1a612fab0b Update video demo app to minSdk 26. 2026-02-10 10:35:54 -05:00
Michelle Tang
63e821634a Adjust strings. 2026-02-10 10:35:54 -05:00
Alex Hart
62d951b438 Move additional fragments to core UI. 2026-02-10 10:35:54 -05:00
Greyson Parrelli
8d749c404f Refactor and improve video demo app. 2026-02-10 10:35:54 -05:00
jeffrey-signal
d5b2f4fdd3 Display member label on recipient details sheet. 2026-02-10 10:35:54 -05:00
Alex Hart
fae4ca91bd Ensure spans are accounted for when measuring text. 2026-02-10 10:35:54 -05:00
Alex Hart
6e92ff5096 Move fragments to core UI. 2026-02-10 10:35:54 -05:00
jeffrey-signal
61522cd682 Fix GroupTable.memberLabel() to return null for blank labels. 2026-02-10 10:35:54 -05:00
jeffrey-signal
74dbd0814a Add comment to clarify intentional fall-through in DeviceTransferSetUpFragment switch statement.
Resolves signalapp/Signal-Android##14437
2026-02-10 10:35:54 -05:00
Alex Hart
05751a5b79 Remove app module SignalTheme. 2026-02-10 10:35:54 -05:00
Alex Hart
7741844055 Add audio-indicator slot to use for single-remote-participant calls. 2026-02-10 10:35:54 -05:00
Cody Henthorne
09c07f0707 Fix benchmark tests. 2026-02-10 10:35:54 -05:00
Alex Hart
c565db812e Fix back button intermittently not working in conversation view.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-02-10 10:35:54 -05:00
Greyson Parrelli
00b72c9263 Clean up system for blessed sticker packs. 2026-02-10 10:35:54 -05:00
Alex Hart
5c415139fd Reshape entry point for V3 media screens. 2026-02-10 10:35:54 -05:00
jeffrey-signal
6d944c0f8c Add tests for MemberLabelViewModel. 2026-02-10 10:35:53 -05:00
Michelle Tang
6744a79325 Avoid showing KT for note to self. 2026-02-10 10:35:53 -05:00
Michelle Tang
472d86acc0 Bump version to 7.73.2 2026-02-09 16:33:14 -05:00
Michelle Tang
c1ee7a53b5 Update translations and other static files. 2026-02-09 16:29:47 -05:00
Greyson Parrelli
8d44640377 Prompt for microphone permission when recording video in new camera.
Previously, the new camera would silently record video without audio
when microphone permission was missing. Now it shows the same rationale
dialog and permanent denial flow as the old camera.
2026-02-09 15:52:03 -05:00
Greyson Parrelli
cbcbe3f564 Use OrientationEventListener to update CameraX target rotation. 2026-02-09 14:15:52 -05:00
Greyson Parrelli
698923423f Downsample gallery thumbnail to display size in camera HUD.
Was loading full size image, potentially causing OOM.
2026-02-09 12:01:40 -05:00
jeffrey-signal
bc6114f6e0 Bump version to 7.73.1 2026-02-06 19:10:12 -05:00
jeffrey-signal
21d91bb2cf Update translations and other static files. 2026-02-06 19:06:27 -05:00
Greyson Parrelli
bda9664cb9 Check audio permission before enabling audio in video recording. 2026-02-06 16:11:09 -05:00
Greyson Parrelli
9c055a35a9 Increase flash toggle button hitbox in new camera. 2026-02-06 15:59:18 -05:00
Greyson Parrelli
bf794c41da Maximize screen brightness during selfie flash in new camera. 2026-02-06 15:59:18 -05:00
Greyson Parrelli
de698c8a1a Enable torch during video recording in new camera. 2026-02-06 15:59:17 -05:00
Greyson Parrelli
f972382f5e Fix tap-to-focus using wrong coordinate space in new camera.
We were using raw coordinates. Now we transform them appropriately
to the correct coordinate space.
2026-02-06 15:35:47 -05:00
Greyson Parrelli
73b0331884 Fix video recording zoom starting at ultrawide instead of 1x. 2026-02-06 15:29:36 -05:00
Greyson Parrelli
2248abb749 Persist camera lens selection across sessions. 2026-02-06 15:18:50 -05:00
Greyson Parrelli
13435c0b54 Add double-tap gesture on viewfinder to switch cameras. 2026-02-06 15:17:08 -05:00
Greyson Parrelli
5575f75118 Block camera switching during video recording. 2026-02-06 15:17:04 -05:00
jeffrey-signal
4ce3c2309c Bump version to 7.73.0 2026-02-04 15:07:07 -05:00
jeffrey-signal
cd7ee1a042 Update translations and other static files. 2026-02-04 15:07:01 -05:00
Greyson Parrelli
cd087113e3 Ensure that notification heuristics are calculated in the background. 2026-02-04 12:28:01 -05:00
Alex Hart
36b6122b0f Move several Permissions dependencies to core. 2026-02-04 13:17:29 -04:00
Alex Hart
a74651d915 Move text styles to core UI. 2026-02-04 13:13:49 -04:00
Alex Hart
c274805eb0 Utilze localized description for calculating badge line count. 2026-02-04 11:39:01 -04:00
Jim Gustafson
d86d88f313 Update to RingRTC v2.64.1 2026-02-03 16:41:36 -05:00
Cody Henthorne
265e875a78 Fix baseline profile generation and update it. 2026-02-03 16:40:30 -05:00
Cody Henthorne
8353ad4962 Improve performance of first send to large group. 2026-02-03 15:26:27 -05:00
Alex Hart
9369cafd38 Update translations to support multiple modules. 2026-02-03 16:15:52 -04:00
Michelle Tang
989cda6662 Add internal setting to run KT. 2026-02-03 15:14:38 -05:00
Michelle Tang
0570aaeb6e Add more checks when doing KT. 2026-02-03 12:55:37 -05:00
Alex Hart
5a19117850 Move lru and bottomsheet util to core modules. 2026-02-03 13:23:43 -04:00
jeffrey-signal
ff726ec4d2 Don't send group update messages when member labels are changed. 2026-02-03 12:20:33 -05:00
Alex Hart
0cd93986bd Add media send feature module. 2026-02-03 11:25:57 -04:00
andrew-signal
bc7ba5f2c6 Bump to libsignal v0.87.0 2026-02-03 09:57:32 -05:00
Michelle Tang
1ddde6ab92 Enable key transparency for internal users. 2026-02-02 17:46:19 -05:00
Greyson Parrelli
e9f2580bb8 Rotate the cameraXModelBlocklist.
We think the new camera could solve all or most of our issues, so let's
start fresh.
2026-02-02 15:37:22 -05:00
Michelle Tang
b9dc2d3969 Add animations to key transparency. 2026-02-02 15:00:07 -05:00
Michelle Tang
7e27203bd8 Add KT to backups. 2026-02-02 14:55:32 -05:00
Alex Hart
5a582c12d8 Remove unused dependency in Util. 2026-02-02 15:22:39 -04:00
Michelle Tang
cd925d5f53 Self-check key transparency. 2026-02-02 14:12:16 -05:00
Alex Hart
853a37920c Cycle view focus if keyboard fails to open. 2026-02-02 12:59:40 -04:00
Alex Hart
2aa0b3700f Move blurhash to its own module. 2026-02-02 12:17:16 -04:00
BarbossHack
35190ebb63 Fix type comparison in reproducible script.
Resolves #14571
2026-02-02 10:19:44 -05:00
BarbossHack
d74350b708 Do not stop reproducible comparison at the first mismatch.
Resolves #14570
2026-02-02 10:14:20 -05:00
BarbossHack
bd3e4f9f87 Fix memory usage in reproducible-build GitHub workflow.
Resolves #14574
2026-02-02 10:10:04 -05:00
BarbossHack
7370756344 Fix type and type annotations issues in reproducible script.
Resolves #14573
2026-02-02 10:06:27 -05:00
Greyson Parrelli
7894377d1d Add a github distribution variant. 2026-02-02 09:56:01 -05:00
Greyson Parrelli
6416df241f Add basic re-reg support to regV5. 2026-01-31 22:21:41 -05:00
Alex Hart
85408f2b12 Convert PartUriParser into Kotlin. 2026-01-31 22:21:41 -05:00
Alex Hart
b698daa4cf Convert SentMediaQuality to kotlin. 2026-01-31 22:21:41 -05:00
Alex Hart
3a035a1b33 Fix crash when user local can't resolve to a currency in post-restore job. 2026-01-31 22:21:41 -05:00
Michelle Tang
a11888ff71 Allow opting out of key transparency. 2026-01-31 22:21:41 -05:00
Michelle Tang
423b8c942c Add key transparency backend support. 2026-01-31 22:21:41 -05:00
Greyson Parrelli
26739491a5 Fix instrumentation test compilation. 2026-01-31 22:21:41 -05:00
Greyson Parrelli
6bf39c5102 Fix attachment downloads stuck after call ending. 2026-01-31 22:21:41 -05:00
Greyson Parrelli
daac3bd143 Attempt to remove an android datatransport service.
Relates to #14556
2026-01-31 22:21:41 -05:00
jeffrey-signal
028242826e Rename Groups.proto modifyMemberLabel field to modifyMemberLabels. 2026-01-31 22:21:41 -05:00
jeffrey-signal
99d9c670b6 Add group member label editing screen. 2026-01-31 22:21:41 -05:00
Alex Hart
bc592cc4e2 Fix broken exoplayer pool test. 2026-01-31 22:21:41 -05:00
Greyson Parrelli
04707b00e7 Switch to using SurfaceView for ExoPlayer. 2026-01-31 22:21:41 -05:00
Greyson Parrelli
d44abfaeac Update exoplayer version to 1.9.1 2026-01-31 22:21:41 -05:00
Alex Hart
6c30f3d573 Local backups upgrade UI. 2026-01-31 22:21:41 -05:00
Greyson Parrelli
2e70ed14dd Fix benchmark compilation error. 2026-01-31 22:21:41 -05:00
Alex Hart
7823d4f49f Move UriGlideRenderer to lib:image-editor. 2026-01-31 22:21:41 -05:00
Alex Hart
7bd3482367 Move the org.signal.glide code inside signal-android into lib/glide. 2026-01-31 22:21:40 -05:00
Jim Gustafson
709adf05aa Update to RingRTC v2.63.0
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-01-31 22:21:40 -05:00
andrew-signal
524736c5b2 Bump to libsignal v0.86.15 2026-01-31 22:21:40 -05:00
Greyson Parrelli
f53ae66fc9 Rebuild CameraXFragment to use a brand new camera. 2026-01-31 22:21:40 -05:00
Greyson Parrelli
0c102b061c Bump version to 7.72.2 2026-01-30 20:46:41 -05:00
Greyson Parrelli
ee198e47c8 Update translations and other static files. 2026-01-30 20:46:21 -05:00
Alex Hart
75c2931c8d Ensure placeables are only measured once in call elements screen. 2026-01-30 10:03:05 -04:00
Greyson Parrelli
2bb4edecd7 Bump version to 7.72.1 2026-01-29 19:49:29 -05:00
Greyson Parrelli
b79d9af7ae Update translations and other static files. 2026-01-29 19:44:21 -05:00
Greyson Parrelli
5c50372021 Move theme colors to core-ui. 2026-01-29 19:44:11 -05:00
Greyson Parrelli
d0d32c8f33 Limit gallery to most recent 5k items for now. 2026-01-29 16:44:32 -05:00
Greyson Parrelli
2aaaa1791e Fix issue where invalid videos get stuck in the send flow. 2026-01-29 11:09:17 -05:00
Greyson Parrelli
6ed63a67cd Bump version to 7.72.0 2026-01-28 16:28:45 -05:00
Greyson Parrelli
b858955243 Update translations and other static files. 2026-01-28 16:28:21 -05:00
Rémi Chauchadis
63a676b0ef Add Mi 9T Pro voice note sample rate special handling.
Fixes #14452
Resolves #14523
2026-01-28 16:17:12 -05:00
jeffrey-signal
155b59d71f Move clearable text field to core module. 2026-01-28 16:17:12 -05:00
Greyson Parrelli
d9dba89781 Use both envelope.type and ciphertextMessageType in the validator. 2026-01-28 16:17:12 -05:00
jeffrey-signal
0a572153f0 Add send and receive support for group member labels. 2026-01-28 16:17:12 -05:00
jeffrey-signal
ce46c44b5d Centralize common icons into SignalIcons. 2026-01-28 16:17:11 -05:00
Alex Hart
e6918b592e Move MediaFolder to core-model. 2026-01-28 16:17:11 -05:00
Michelle Tang
ddbbb4c21a Fix alarms being set for pinned messages. 2026-01-28 16:17:11 -05:00
Greyson Parrelli
d23290107b Fix document download UI not updating on first click. 2026-01-28 16:17:11 -05:00
Michelle Tang
69f4c89f84 Add key transparency UI. 2026-01-28 16:17:11 -05:00
Michelle Tang
279f9578cc Remove old safety number code. 2026-01-28 16:17:11 -05:00
Greyson Parrelli
af7989839f Do not include large P2P group changes. 2026-01-28 16:17:11 -05:00
Greyson Parrelli
01fb0c0eb6 Migrate to new SVR2 enclave. 2026-01-28 16:17:11 -05:00
Greyson Parrelli
dab47828c6 Add additional oversized message logging. 2026-01-28 16:17:11 -05:00
andrew-signal
c070743723 Bump libsignal to v0.86.14 2026-01-28 16:17:11 -05:00
Greyson Parrelli
9bbd9b56e7 Update a bunch of strings to include nonprofit labeling. 2026-01-28 09:58:55 -04:00
Alex Hart
311793ac33 Utilize fallback navbar height if the returned value is zero on Android10 and less. 2026-01-28 09:58:54 -04:00
Greyson Parrelli
986923ea6c Move GlideImage into the glide module. 2026-01-28 09:58:54 -04:00
Greyson Parrelli
2f6baf8743 Show upload progress for the first backup on the chat list. 2026-01-28 09:58:54 -04:00
jeffrey-signal
4c43bf2228 Replace categorical window size classes with breakpoint-based checks. 2026-01-28 09:58:54 -04:00
Greyson Parrelli
585bd5f24c Fix width of dropdown menu items and add preview. 2026-01-28 09:58:54 -04:00
Alex Hart
d420c0332b Bump version to 7.71.2 2026-01-23 18:13:59 -04:00
Alex Hart
e32df5d247 Update translations and other static files. 2026-01-23 16:41:53 -04:00
Alex Hart
19a8ec02cb Fix issue with screen guard while in ongoing call. 2026-01-23 14:36:32 -04:00
Alex Hart
798d4b90c3 Bump version to 7.71.1 2026-01-22 16:25:41 -04:00
Alex Hart
206f1f3775 Update translations and other static files. 2026-01-22 16:20:32 -04:00
Alex Hart
96273bb724 Disable call audio toggle while the switch is processing. 2026-01-22 16:11:59 -04:00
Michelle Tang
c0d9efc930 Improve scheduling of the expiration of pinned messages. 2026-01-22 14:38:53 -05:00
Michelle Tang
6722d9d15d Remove delivery indicator for pinned messages. 2026-01-22 13:40:02 -05:00
Alex Hart
52c2c58988 Adjust padding measurement to prevent text from touching footer. 2026-01-22 14:25:00 -04:00
Alex Hart
e3efc53b64 Squelch resize calls while in a resize loop. 2026-01-22 11:29:58 -04:00
Alex Hart
9a18f5ef6b Dismiss active context menu in on-destroy-view to prevent long-press crash. 2026-01-22 10:19:55 -04:00
Alex Hart
ce8d545d6f Bump version to 7.71.0 2026-01-21 16:39:21 -04:00
Alex Hart
f875a0c882 Update translations and other static files. 2026-01-21 16:31:05 -04:00
Jim Gustafson
4bbddf736c Add more AudioManager logging 2026-01-21 11:57:48 -08:00
Alex Hart
c1da17df48 Fix console crash with competing animations / layout. 2026-01-21 12:55:00 -04:00
Alex Hart
f6fa8166d2 Re-register if we lose registration in pip mode. 2026-01-21 12:42:29 -04:00
Alex Hart
20016adef1 Display self-pip above raise hands bar if it is present. 2026-01-21 12:38:49 -04:00
Greyson Parrelli
265bb29626 Include footerPinned in media message footer width calculation. 2026-01-21 11:21:49 -05:00
Alex Hart
d16be8c4d7 Fix issue where archival progress dialog never dismisses. 2026-01-21 12:19:15 -04:00
Michelle Tang
791a38a181 Rotate send pin config. 2026-01-21 10:31:40 -05:00
Greyson Parrelli
d1010eb886 Move internal backup details down further on the screen. 2026-01-20 14:44:42 -05:00
Alex Hart
471b214b4a Extract Media and TransformProperties to core/util/models. 2026-01-20 15:21:27 -04:00
benediktjohannes
f505d48d80 Update strings comment.
Resolves #14534
2026-01-20 15:04:02 -04:00
Greyson Parrelli
6d9a2d4787 Fix apk file names. 2026-01-20 15:04:02 -04:00
Greyson Parrelli
a36e2408f7 Add more internal logging around failed debuglogs uploads. 2026-01-20 15:04:02 -04:00
Greyson Parrelli
9012a2afc0 Prompt users to backup during quick restore. 2026-01-20 15:04:02 -04:00
Alex Hart
4921198cd8 Launch main activity directly from share. 2026-01-20 15:04:02 -04:00
Alex Hart
530b57644f Add displaySheet reset. 2026-01-20 15:04:01 -04:00
Alex Hart
921415632b Add log entry line for remote backup subscription source. 2026-01-20 15:04:01 -04:00
Greyson Parrelli
c723b2c6bf Fix issue where backfilled dupes may get different mediaIds. 2026-01-20 15:04:01 -04:00
Alex Hart
17d338f7af New system PiP treatment. 2026-01-20 15:04:01 -04:00
Greyson Parrelli
3d9e12e4c1 Update to libsignal v0.86.12 2026-01-20 15:04:01 -04:00
Jim Gustafson
4ca849c151 Update to RingRTC v2.62.0 2026-01-20 15:04:01 -04:00
2499 changed files with 209899 additions and 58386 deletions

View File

@@ -1,21 +1,20 @@
name: Reproducible Build Check
name: Check reproducible-build Dockerfile
on:
schedule:
- cron: '0 5 * * *'
- cron: "0 5 * * *"
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build image
run: cd reproducible-builds && docker build -t signal-android . && cd ..
- name: Test build
run: docker run --rm -v $(pwd):/project -w /project signal-android ./gradlew clean assemblePlayProdRelease
- uses: actions/checkout@v6
- name: Build image
run: |
cd reproducible-builds
docker build -t signal-android .
- name: Test build
run: docker run --memory=12g --rm -v "$(pwd)":/project -w /project signal-android ./gradlew --no-daemon --max-workers=1 -Dorg.gradle.jvmargs="-Xmx4g -XX:MaxMetaspaceSize=512m" -Dkotlin.compiler.execution.strategy=in-process bundlePlayProdRelease

1
.gitignore vendored
View File

@@ -33,3 +33,4 @@ maps.key
kls_database.db
.kotlin
lefthook-local.yml
sample-videos/

View File

@@ -1,17 +1,11 @@
@file:Suppress("UnstableApiUsage")
import com.android.build.api.dsl.ManagedVirtualDevice
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.ValueSource
import org.gradle.api.provider.ValueSourceParameters
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import java.io.File
import java.time.Instant
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import java.util.Locale
import java.util.Properties
plugins {
@@ -20,6 +14,7 @@ plugins {
alias(libs.plugins.ktlint)
alias(libs.plugins.compose.compiler)
alias(libs.plugins.kotlinx.serialization)
alias(benchmarkLibs.plugins.baselineprofile)
id("androidx.navigation.safeargs")
id("kotlin-parcelize")
id("com.squareup.wire")
@@ -29,8 +24,8 @@ plugins {
apply(from = "static-ips.gradle.kts")
val canonicalVersionCode = 1638
val canonicalVersionName = "7.70.1"
val canonicalVersionCode = 1667
val canonicalVersionName = "8.3.3"
val currentHotfixVersion = 0
val maxHotfixVersions = 100
@@ -49,9 +44,16 @@ val languagesForBuildConfigProvider = languagesProvider.map { languages ->
languages.joinToString(separator = ", ") { language -> "\"$language\"" }
}
val localPropertiesFile = File(rootProject.projectDir, "local.properties")
val localProperties: Properties? = if (localPropertiesFile.exists()) {
Properties().apply { localPropertiesFile.inputStream().use { load(it) } }
} else {
null
}
val quickstartCredentialsDir: String? = localProperties?.getProperty("quickstart.credentials.dir")
val benchmarkBackupFile: String? = localProperties?.getProperty("benchmark.backup.file")
val selectableVariants = listOf(
"nightlyBackupRelease",
"nightlyBackupSpinner",
"nightlyProdSpinner",
"nightlyProdPerf",
"nightlyProdRelease",
@@ -60,6 +62,8 @@ val selectableVariants = listOf(
"playProdSpinner",
"playProdCanary",
"playProdPerf",
"playProdMocked",
"playProdNonMinifiedMocked",
"playProdBenchmark",
"playProdInstrumentation",
"playProdRelease",
@@ -69,8 +73,12 @@ val selectableVariants = listOf(
"playStagingPerf",
"playStagingInstrumentation",
"playStagingRelease",
"playProdQuickstart",
"playStagingQuickstart",
"websiteProdSpinner",
"websiteProdRelease"
"websiteProdRelease",
"githubProdSpinner",
"githubProdRelease"
)
wire {
@@ -174,7 +182,8 @@ android {
"META-INF/LICENSE-notice.md",
"META-INF/proguard/androidx-annotations.pro",
"**/*.dylib",
"**/*.dll"
"**/*.dll",
"**/*.proto"
)
}
}
@@ -230,8 +239,8 @@ android {
buildConfigField("String[]", "SIGNAL_CDSI_IPS", rootProject.extra["cdsi_ips"] as String)
buildConfigField("String[]", "SIGNAL_SVR2_IPS", rootProject.extra["svr2_ips"] as String)
buildConfigField("String", "SIGNAL_AGENT", "\"OWA\"")
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"093be9ea32405e85ae28dbb48eb668aebeb7dbe29517b9b86ad4bec4dfe0e6a6\"")
buildConfigField("String", "SVR2_MRENCLAVE", "\"29cd63c87bea751e3bfd0fbd401279192e2e5c99948b4ee9437eafc4968355fb\"")
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"29cd63c87bea751e3bfd0fbd401279192e2e5c99948b4ee9437eafc4968355fb\"")
buildConfigField("String", "SVR2_MRENCLAVE", "\"1240acbd4aa26974184844c8a46b1022d3957ac8a76c1fd8f5b1a15141ee0708\"")
buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{ \"BXu6QIKVz5MA8gstzfOgRQGqyLqOwNKHL6INkv3IHWMF\", \"BUkY0I+9+oPgDCn4+Ac6Iu813yvqkDr/ga8DzLxFxuk6\"}")
buildConfigField("String", "ZKGROUP_SERVER_PUBLIC_PARAMS", "\"AMhf5ywVwITZMsff/eCyudZx9JDmkkkbV6PInzG4p8x3VqVJSFiMvnvlEKWuRob/1eaIetR31IYeAbm0NdOuHH8Qi+Rexi1wLlpzIo1gstHWBfZzy1+qHRV5A4TqPp15YzBPm0WSggW6PbSn+F4lf57VCnHF7p8SvzAA2ZZJPYJURt8X7bbg+H3i+PEjH9DXItNEqs2sNcug37xZQDLm7X36nOoGPs54XsEGzPdEV+itQNGUFEjY6X9Uv+Acuks7NpyGvCoKxGwgKgE5XyJ+nNKlyHHOLb6N1NuHyBrZrgtY/JYJHRooo5CEqYKBqdFnmbTVGEkCvJKxLnjwKWf+fEPoWeQFj5ObDjcKMZf2Jm2Ae69x+ikU5gBXsRmoF94GXTLfN0/vLt98KDPnxwAQL9j5V1jGOY8jQl6MLxEs56cwXN0dqCnImzVH3TZT1cJ8SW1BRX6qIVxEzjsSGx3yxF3suAilPMqGRp4ffyopjMD1JXiKR2RwLKzizUe5e8XyGOy9fplzhw3jVzTRyUZTRSZKkMLWcQ/gv0E4aONNqs4P+NameAZYOD12qRkxosQQP5uux6B2nRyZ7sAV54DgFyLiRcq1FvwKw2EPQdk4HDoePrO/RNUbyNddnM/mMgj4FW65xCoT1LmjrIjsv/Ggdlx46ueczhMgtBunx1/w8k8V+l8LVZ8gAT6wkU5J+DPQalQguMg12Jzug3q4TbdHiGCmD9EunCwOmsLuLJkz6EcSYXtrlDEnAM+hicw7iergYLLlMXpfTdGxJCWJmP4zqUFeTTmsmhsjGBt7NiEB/9pFFEB3pSbf4iiUukw63Eo8Aqnf4iwob6X1QviCWuc8t0LUlT9vALgh/f2DPVOOmR0RW6bgRvc7DSF20V/omg+YBw==\"")
buildConfigField("String", "GENERIC_SERVER_PUBLIC_PARAMS", "\"AByD873dTilmOSG0TjKrvpeaKEsUmIO8Vx9BeMmftwUs9v7ikPwM8P3OHyT0+X3EUMZrSe9VUp26Wai51Q9I8mdk0hX/yo7CeFGJyzoOqn8e/i4Ygbn5HoAyXJx5eXfIbqpc0bIxzju4H/HOQeOpt6h742qii5u/cbwOhFZCsMIbElZTaeU+BWMBQiZHIGHT5IE0qCordQKZ5iPZom0HeFa8Yq0ShuEyAl0WINBiY6xE3H/9WnvzXBbMuuk//eRxXgzO8ieCeK8FwQNxbfXqZm6Ro1cMhCOF3u7xoX83QhpN\"")
@@ -253,7 +262,7 @@ android {
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_live_6cmGZopuTsV8novGgJJW9JpC00vLIgtQ1D\"")
buildConfigField("boolean", "TRACING_ENABLED", "false")
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "false")
buildConfigField("boolean", "USE_STRING_ID", "true")
buildConfigField("boolean", "USE_STRING_ID", "false")
ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
@@ -352,8 +361,25 @@ android {
isDebuggable = false
isMinifyEnabled = true
matchingFallbacks += "debug"
applicationIdSuffix = ".benchmark"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"")
buildConfigField("boolean", "TRACING_ENABLED", "true")
buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{ \"BVT/2gHqbrG1xzuIypLIOjFgMtihrMld1/5TGADL6Dhv\"}")
manifestPlaceholders["applicationClass"] = "org.thoughtcrime.securesms.BenchmarkApplicationContext"
}
create("mocked") {
initWith(getByName("debug"))
isDefault = false
isDebuggable = false
isMinifyEnabled = true
matchingFallbacks += "debug"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"")
buildConfigField("boolean", "TRACING_ENABLED", "true")
manifestPlaceholders["applicationClass"] = "org.thoughtcrime.securesms.ApplicationContext"
}
create("canary") {
@@ -363,6 +389,14 @@ android {
matchingFallbacks += "debug"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Canary\"")
}
create("quickstart") {
initWith(getByName("debug"))
isDefault = false
isMinifyEnabled = false
matchingFallbacks += "debug"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Quickstart\"")
}
}
productFlavors {
@@ -381,6 +415,13 @@ android {
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"website\"")
}
create("github") {
dimension = "distribution"
buildConfigField("boolean", "MANAGES_APP_UPDATES", "false")
buildConfigField("String", "APK_UPDATE_MANIFEST_URL", "null")
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"github\"")
}
create("nightly") {
dimension = "distribution"
versionNameSuffix = "-nightly-untagged-${getGitHash()}"
@@ -411,8 +452,8 @@ android {
buildConfigField("String", "SIGNAL_CDN3_URL", "\"https://cdn3-staging.signal.org\"")
buildConfigField("String", "SIGNAL_CDSI_URL", "\"https://cdsi.staging.signal.org\"")
buildConfigField("String", "SIGNAL_SVR2_URL", "\"https://svr2.staging.signal.org\"")
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"2e8cefe6e3f389d8426adb24e9b7fb7adf10902c96f06f7bbcee36277711ed91\"")
buildConfigField("String", "SVR2_MRENCLAVE", "\"a75542d82da9f6914a1e31f8a7407053b99cc99a0e7291d8fbd394253e19b036\"")
buildConfigField("String", "SVR2_MRENCLAVE_LEGACY", "\"a75542d82da9f6914a1e31f8a7407053b99cc99a0e7291d8fbd394253e19b036\"")
buildConfigField("String", "SVR2_MRENCLAVE", "\"97f151f6ed078edbbfd72fa9cae694dcc08353f1f5e8d9ccd79a971b10ffc535\"")
buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{\"BbqY1DzohE4NUZoVF+L18oUPrK3kILllLEJh2UnPSsEx\", \"BYhU6tPjqP46KGZEzRs1OL4U39V5dlPJ/X09ha4rErkm\"}")
buildConfigField("String", "ZKGROUP_SERVER_PUBLIC_PARAMS", "\"ABSY21VckQcbSXVNCGRYJcfWHiAMZmpTtTELcDmxgdFbtp/bWsSxZdMKzfCp8rvIs8ocCU3B37fT3r4Mi5qAemeGeR2X+/YmOGR5ofui7tD5mDQfstAI9i+4WpMtIe8KC3wU5w3Inq3uNWVmoGtpKndsNfwJrCg0Hd9zmObhypUnSkfYn2ooMOOnBpfdanRtrvetZUayDMSC5iSRcXKpdlukrpzzsCIvEwjwQlJYVPOQPj4V0F4UXXBdHSLK05uoPBCQG8G9rYIGedYsClJXnbrgGYG3eMTG5hnx4X4ntARBgELuMWWUEEfSK0mjXg+/2lPmWcTZWR9nkqgQQP0tbzuiPm74H2wMO4u1Wafe+UwyIlIT9L7KLS19Aw8r4sPrXZSSsOZ6s7M1+rTJN0bI5CKY2PX29y5Ok3jSWufIKcgKOnWoP67d5b2du2ZVJjpjfibNIHbT/cegy/sBLoFwtHogVYUewANUAXIaMPyCLRArsKhfJ5wBtTminG/PAvuBdJ70Z/bXVPf8TVsR292zQ65xwvWTejROW6AZX6aqucUjlENAErBme1YHmOSpU6tr6doJ66dPzVAWIanmO/5mgjNEDeK7DDqQdB1xd03HT2Qs2TxY3kCK8aAb/0iM0HQiXjxZ9HIgYhbtvGEnDKW5ILSUydqH/KBhW4Pb0jZWnqN/YgbWDKeJxnDbYcUob5ZY5Lt5ZCMKuaGUvCJRrCtuugSMaqjowCGRempsDdJEt+cMaalhZ6gczklJB/IbdwENW9KeVFPoFNFzhxWUIS5ML9riVYhAtE6JE5jX0xiHNVIIPthb458cfA8daR0nYfYAUKogQArm0iBezOO+mPk5vCNWI+wwkyFCqNDXz/qxl1gAntuCJtSfq9OC3NkdhQlgYQ==\"")
buildConfigField("String", "GENERIC_SERVER_PUBLIC_PARAMS", "\"AHILOIrFPXX9laLbalbA9+L1CXpSbM/bTJXZGZiuyK1JaI6dK5FHHWL6tWxmHKYAZTSYmElmJ5z2A5YcirjO/yfoemE03FItyaf8W1fE4p14hzb5qnrmfXUSiAIVrhaXVwIwSzH6RL/+EO8jFIjJ/YfExfJ8aBl48CKHgu1+A6kWynhttonvWWx6h7924mIzW0Czj2ROuh4LwQyZypex4GuOPW8sgIT21KNZaafgg+KbV7XM1x1tF3XA17B4uGUaDbDw2O+nR1+U5p6qHPzmJ7ggFjSN6Utu+35dS1sS0P9N\"")
@@ -422,22 +463,10 @@ android {
buildConfigField("String", "RECAPTCHA_PROOF_URL", "\"https://signalcaptchas.org/staging/challenge/generate.html\"")
buildConfigField("org.signal.libsignal.net.Network.Environment", "LIBSIGNAL_NET_ENV", "org.signal.libsignal.net.Network.Environment.STAGING")
buildConfigField("int", "LIBSIGNAL_LOG_LEVEL", "org.signal.libsignal.protocol.logging.SignalProtocolLogger.DEBUG")
buildConfigField("boolean", "USE_STRING_ID", "false")
buildConfigField("String", "BUILD_ENVIRONMENT_TYPE", "\"Staging\"")
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_test_sngOd8FnXNkpce9nPXawKrJD00kIDngZkD\"")
}
create("backup") {
initWith(getByName("staging"))
dimension = "environment"
applicationIdSuffix = ".backup"
buildConfigField("boolean", "MANAGES_APP_UPDATES", "true")
buildConfigField("String", "BUILD_ENVIRONMENT_TYPE", "\"Backup\"")
}
}
lint {
@@ -447,6 +476,7 @@ android {
ignoreWarnings = true
quiet = true
disable += "LintError"
lintConfig = rootProject.file("lint.xml")
}
androidComponents {
@@ -461,7 +491,7 @@ android {
// Starting with minSdk 23, Android leaves native libraries uncompressed, which is fine for the Play Store, but not for our self-distributed APKs.
// This reverts it to the legacy behavior, compressing the native libraries, and drastically reducing the APK file size.
if (variant.name.contains("website", ignoreCase = true)) {
if (variant.name.contains("website", ignoreCase = true) || variant.name.contains("github", ignoreCase = true)) {
variant.packaging.jniLibs.useLegacyPackaging.set(true)
}
@@ -478,12 +508,39 @@ android {
val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer
variant.outputs.forEach { output ->
output.versionName.set(tag)
output.versionName.set("$tag | ${getLastCommitDateTimeUtc()}")
output.versionCode.set(nightlyVersionCode)
}
}
}
}
onVariants(selector().withBuildType("quickstart")) { variant ->
val environment = variant.flavorName?.let { name ->
when {
name.contains("staging", ignoreCase = true) -> "staging"
name.contains("prod", ignoreCase = true) -> "prod"
else -> "prod"
}
} ?: "prod"
val taskProvider = tasks.register<CopyQuickstartCredentialsTask>("copyQuickstartCredentials${variant.name.capitalize()}") {
if (quickstartCredentialsDir != null) {
inputDir.set(File(quickstartCredentialsDir))
}
filePrefix.set("${environment}_")
}
variant.sources.assets?.addGeneratedSourceDirectory(taskProvider) { it.outputDir }
}
onVariants(selector().withBuildType("benchmark")) { variant ->
val taskProvider = tasks.register<CopyBenchmarkBackupTask>("copyBenchmarkBackup${variant.name.capitalize()}") {
if (benchmarkBackupFile != null) {
inputFile.set(File(benchmarkBackupFile))
}
}
variant.sources.assets?.addGeneratedSourceDirectory(taskProvider) { it.outputDir }
}
}
val releaseDir = "$projectDir/src/release/java"
@@ -495,6 +552,41 @@ android {
java.srcDir(path)
}
}
sourceSets {
getByName("mocked") {
java.srcDir("$projectDir/src/benchmarkShared/java")
manifest.srcFile("$projectDir/src/benchmarkShared/AndroidManifest.xml")
}
getByName("benchmark") {
java.srcDir("$projectDir/src/benchmarkShared/java")
manifest.srcFile("$projectDir/src/benchmarkShared/AndroidManifest.xml")
}
}
applicationVariants.configureEach {
outputs.configureEach {
if (this is com.android.build.gradle.internal.api.BaseVariantOutputImpl) {
val fileVersionName = versionName.substringBefore(" |")
outputFileName = outputFileName.replace(".apk", "-$fileVersionName.apk")
}
}
}
}
baselineProfile {
warnings {
disabledVariants = false
}
mergeIntoMain = true
variants.create("mocked") {
from(project(":baseline-profile"))
}
dexLayoutOptimization = false
}
dependencies {
@@ -505,7 +597,7 @@ dependencies {
implementation(project(":lib:libsignal-service"))
implementation(project(":lib:paging"))
implementation(project(":core:util"))
implementation(project(":lib:glide-config"))
implementation(project(":lib:glide"))
implementation(project(":lib:video"))
implementation(project(":lib:device-transfer"))
implementation(project(":lib:image-editor"))
@@ -515,8 +607,12 @@ dependencies {
implementation(project(":lib:qr"))
implementation(project(":lib:sticky-header-grid"))
implementation(project(":lib:photoview"))
implementation(project(":lib:blurhash"))
implementation(project(":core:ui"))
implementation(project(":core:models"))
implementation(project(":core:models-jvm"))
implementation(project(":feature:camera"))
implementation(project(":feature:registration"))
implementation(libs.androidx.fragment.ktx)
implementation(libs.androidx.appcompat) {
@@ -540,6 +636,8 @@ dependencies {
implementation(libs.androidx.navigation.fragment.ktx)
implementation(libs.androidx.navigation.ui.ktx)
implementation(libs.androidx.navigation.compose)
implementation(libs.androidx.navigation3.runtime)
implementation(libs.androidx.navigation3.ui)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.lifecycle.livedata.ktx)
implementation(libs.androidx.lifecycle.process)
@@ -617,6 +715,7 @@ dependencies {
implementation(libs.kotlinx.serialization.json)
implementation(project(":lib:billing"))
implementation(project(":feature:media-send"))
"spinnerImplementation"(project(":lib:spinner"))
@@ -709,6 +808,16 @@ fun getNightlyBuildNumber(tag: String?): Int {
return match?.groupValues?.get(1)?.toIntOrNull() ?: 0
}
fun getLastCommitDateTimeUtc(): String {
val timestamp = providers.exec {
commandLine("git", "log", "-1", "--pretty=format:%ct")
}.standardOutput.asText.get().trim().toLong()
val instant = Instant.ofEpochSecond(timestamp)
val formatter = DateTimeFormatter.ofPattern("MMM d '@' HH:mm 'UTC'", Locale.US)
.withZone(ZoneOffset.UTC)
return formatter.format(instant)
}
fun getMapsKey(): String {
return providers
.gradleProperty("mapsKey")
@@ -768,3 +877,62 @@ abstract class PropertiesFileValueSource : ValueSource<Properties?, PropertiesFi
fun String.capitalize(): String {
return this.replaceFirstChar { it.uppercase() }
}
abstract class CopyQuickstartCredentialsTask : DefaultTask() {
@get:InputDirectory
@get:Optional
abstract val inputDir: DirectoryProperty
@get:Input
abstract val filePrefix: Property<String>
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@TaskAction
fun copy() {
if (!inputDir.isPresent) {
throw GradleException("quickstart.credentials.dir is not set in local.properties. This is required for quickstart builds.")
}
val prefix = filePrefix.get()
val candidates = inputDir.get().asFile.listFiles()
?.filter { it.extension == "json" && it.name.startsWith(prefix) }
?: emptyList()
if (candidates.isEmpty()) {
throw GradleException("No credential files matching '$prefix*.json' found in ${inputDir.get().asFile}. Add files like '${prefix}account1.json' to your credentials directory.")
}
val chosen = candidates.random()
logger.lifecycle("Selected quickstart credential: ${chosen.name}")
val dest = outputDir.get().asFile.resolve("quickstart")
dest.mkdirs()
chosen.copyTo(dest.resolve(chosen.name), overwrite = true)
}
}
abstract class CopyBenchmarkBackupTask : DefaultTask() {
@get:InputFile
@get:Optional
abstract val inputFile: RegularFileProperty
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@TaskAction
fun copy() {
val dest = outputDir.get().asFile.resolve("backups")
dest.mkdirs()
if (!inputFile.isPresent) {
logger.lifecycle("benchmark.backup.file is not set in local.properties. Benchmark tests using backup data will crash at runtime.")
return
}
val backupFile = inputFile.get().asFile
logger.lifecycle("Using benchmark backup: ${backupFile.absolutePath} (${backupFile.length() / 1024}KB)")
backupFile.copyTo(dest.resolve("backup.binproto"), overwrite = true)
}
}

Some files were not shown because too many files have changed in this diff Show More