Compare commits

..

493 Commits

Author SHA1 Message Date
Alex Hart 78e1a407a6 Bump version to 8.6.1 2026-04-02 12:47:48 -03:00
Alex Hart 48d766ecff Update baseline profile. 2026-04-02 12:43:59 -03:00
Alex Hart d6d3226fcd Update translations and other static files. 2026-04-02 12:36:00 -03:00
Alex Hart ed4944f806 Write plaintext export to directory instead of zip, add notification content intent. 2026-04-02 12:15:14 -03:00
Alex Hart eb2dfb3fb6 Fix getViewLifecycleOwner crash in bubble view.post callback.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-04-02 11:33:23 -03:00
Alex Hart 265f71dff3 Surface error when local backup restore directory becomes inaccessible. 2026-04-02 11:27:22 -03:00
Michelle Tang 01d1769e4c Fix pinned message crash. 2026-04-02 10:26:58 -04:00
Alex Hart 97d099c7f1 Increment plaintext export config key. 2026-04-02 11:22:36 -03:00
Greyson Parrelli 0a957bc97c Fix crash when pressing volume buttons during active video recording. 2026-04-02 09:01:21 -04:00
Michelle Tang 5df7552506 Improve collapsed events with wallpapers. 2026-04-01 16:01:43 -04:00
Michelle Tang 75334abe0f Fix padding for collapsed events wrapping. 2026-04-01 14:58:37 -04:00
Michelle Tang 8524d20de5 Rotate collapse config. 2026-04-01 14:49:58 -04:00
Michelle Tang 495e2e043e Add various updates to collapsed events. 2026-04-01 10:49:37 -04:00
jeffrey-signal dec9eb613e Fix stale action cache save error and increase operations per run limit. 2026-04-01 10:07:03 -04:00
jeffrey-signal d6e7030dd0 Fix inactive pull request detection. 2026-03-31 17:54:13 -04:00
jeffrey-signal 6e43e931b2 Fix label applied to inactive issues. 2026-03-31 17:37:24 -04:00
Alex Hart 430a55f89f Bump version to 8.6.0 2026-03-31 16:49:29 -03:00
Alex Hart d717aad03d Update baseline profile. 2026-03-31 16:44:59 -03:00
Alex Hart efd86ad2fc Update translations and other static files. 2026-03-31 16:26:33 -03:00
Alex Hart b284835545 Move local backup progress tracking to in-memory object. 2026-03-31 16:20:26 -03:00
Alex Hart 4dd30f4ec3 Fix deactivated node crash in call screen layout.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:26 -03:00
Alex Hart a48938f3d8 Replace Environment bool with a RemoteConfig value. 2026-03-31 16:20:26 -03:00
Alex Hart 01989ad6e7 Fix issue with 12byte IV on older android versions. 2026-03-31 16:20:26 -03:00
Greyson Parrelli f37f67c6c0 Show optimized media in the all media view. 2026-03-31 16:20:26 -03:00
Greyson Parrelli 36f7c60a99 Improve camera mixed mode handling and clean up dead code. 2026-03-31 16:20:26 -03:00
Alex Hart 3f067654d9 Add plaintext chat history export UI. 2026-03-31 16:20:26 -03:00
Michelle Tang 0ce3eab3cd Fix scroll state of collapsed events. 2026-03-31 16:20:26 -03:00
jeffrey-signal b0f7c36cc2 Add additional group terminate checks to message processing.
Co-authored-by: Cody Henthorne <cody@signal.org>
2026-03-31 16:20:26 -03:00
Alex Hart 966e208be5 Fix DB write connection starvation in InAppPaymentsBottomSheetDelegate. 2026-03-31 16:20:26 -03:00
Greyson Parrelli a80d353e04 Fix issue where contact permission prompt wasn't dismissed. 2026-03-31 16:20:26 -03:00
Greyson Parrelli 080fa88bfb Improve handling of validating unpopulated profile field. 2026-03-31 16:20:26 -03:00
Michelle Tang 172e3d129e Fix attachment service crash due to timeout. 2026-03-31 16:20:26 -03:00
Alex Hart 52d5947c0a Treat 409 as successful redemption for recurring donation.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:26 -03:00
Alex Hart 7334ebfce1 Fix NPE in canUserAccessUnifiedBackupDirectory when backup directory is null.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:26 -03:00
Alex Hart 2c98bbaf7e Fix back navigation stuck in conversation after activity recreation.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:26 -03:00
Greyson Parrelli 5a91dba56e Update website variant manifest. 2026-03-31 16:20:26 -03:00
Greyson Parrelli 535c5a1574 Fix compile error in benchmarks. 2026-03-31 16:20:26 -03:00
Alex Hart b61c54c0e2 Fix thread header margin not accounting for status bar insets.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:26 -03:00
Alex Hart 5ac5d45fc6 Skip blocked/missing-keys info overlay for the local participant.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:26 -03:00
jeffrey-signal 79ba929e70 Fix selected photo missing checkmark in media gallery. 2026-03-31 16:20:26 -03:00
Cody Henthorne 3e9146a6f5 Improve device transfer reliability. 2026-03-31 16:20:26 -03:00
Michelle Tang 0c4c280a50 Reduce how often KT is reset. 2026-03-31 16:20:26 -03:00
Cody Henthorne ebea499a5a Add horizontal padding to call participant header. 2026-03-31 16:20:26 -03:00
Cody Henthorne d6b39e9f0a Respect phone number sharing privacy in call participant sheet. 2026-03-31 16:20:25 -03:00
Michelle Tang 787eaee6a0 Bump to libsignal v0.90.0
Co-authored-by: Andrew <andrew@signal.org>
2026-03-31 16:20:25 -03:00
Michelle Tang 5ecb3d8832 Fix pluralization of strings. 2026-03-31 16:20:25 -03:00
Greyson Parrelli b2e8666c9f Avoid chaining in BackupMessagesJob. 2026-03-31 16:20:25 -03:00
Greyson Parrelli 8af41e4b2c Fix image sometimes not showing immediately after send. 2026-03-31 16:20:25 -03:00
jeffrey-signal 5eaf1000c8 Prevent hidden recipients from appearing in recent conversations. 2026-03-31 16:20:25 -03:00
Cody Henthorne 4ed6773983 Exclude long text attachments when duplicating for incoming edits.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:25 -03:00
Greyson Parrelli 0de0441f65 Assign remote key to locally-split long text attachments during backup import. 2026-03-31 16:20:25 -03:00
Alex Hart 9e1b4a9a8c Add horizontal padding to pre-join call status text.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:25 -03:00
Greyson Parrelli bf28b90e89 Fix volume key interference during camera video recording. 2026-03-31 16:20:25 -03:00
jeffrey-signal a0a962a94f Fix sender name clipping in text-only incoming messages.
Resolves signalapp/Signal-Android#14646
2026-03-31 16:20:25 -03:00
Cody Henthorne abe0b2ebca Fix Backups settings row not rendering as disabled when unregistered. 2026-03-31 16:20:25 -03:00
Greyson Parrelli 7b4fe7ff40 Fix IndexOutOfBoundsException in story viewer back press. 2026-03-31 16:20:25 -03:00
Alex Hart 1ba9793943 Guard bubble inset request against detached view.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:25 -03:00
Cody Henthorne 14d4228e86 Retry StorageSyncJob on all IOExceptions. 2026-03-31 16:20:25 -03:00
Greyson Parrelli 3d2c51c14b Filter out revisions with mismatched authors during backup export. 2026-03-31 16:20:25 -03:00
Cody Henthorne 72d75e9cd5 Fix stale display names in search results. 2026-03-31 16:20:25 -03:00
Cody Henthorne e125fa6bfb Fix deadlock when sending media to story and group chat simultaneously. 2026-03-31 16:20:25 -03:00
benny10ben 57574126bb Fix deadlock when sending photo from camera to new contact.
Fixes #14674
Closes #14679
2026-03-31 16:20:25 -03:00
Greyson Parrelli 833c81a99e Guard against detached fragment in media preview error handlers. 2026-03-31 16:20:25 -03:00
Alex Hart 5ca17dfe52 Revert "Allow split pane on medium width."
This reverts commit a3d677533e2550897c7b548cb5b0bca199ec4287.
2026-03-31 16:20:25 -03:00
Alex Hart 5e058bb655 Allow split pane on medium width. 2026-03-31 16:20:25 -03:00
Cody Henthorne ce87b50a07 Add create-and-upload to important attachment upload flows.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-31 16:20:25 -03:00
Michelle Tang 2ad14800d1 Only get collapsed timer state when necessary. 2026-03-31 16:20:25 -03:00
Greyson Parrelli f04a0533cb Update SignalService.proto to match shared one. 2026-03-31 16:20:25 -03:00
Greyson Parrelli 5ae51f844e Drop legacy field from provisioning and sync messages. 2026-03-31 16:20:25 -03:00
jeffrey-signal 4ce2c6ef73 Replace legacy probot stale app with a GitHub actions workflow. 2026-03-31 10:19:46 -04:00
Cody Henthorne 4442f26f53 Bump version to 8.5.1 2026-03-27 16:13:39 -04:00
Cody Henthorne 849fce5a89 Update baseline profile. 2026-03-27 16:01:14 -04:00
Cody Henthorne 482fce6a25 Update translations and other static files. 2026-03-27 16:01:13 -04:00
Cody Henthorne e7e69ab064 Update group terminate strings. 2026-03-27 15:38:22 -04:00
Greyson Parrelli 4b768419da Prevent media gallery tabs from compressing text in some locales. 2026-03-27 15:10:00 -04:00
Greyson Parrelli 2cca01d30f Temporarily disable individual collisions. 2026-03-27 14:38:27 -04:00
Greyson Parrelli e0c69dc485 Fix images not showing up in message details. 2026-03-27 14:31:50 -04:00
Greyson Parrelli 1dd79efdb2 Fix select-all in the all media view. 2026-03-27 14:13:49 -04:00
Cody Henthorne dbb3c8def9 Fall back to next challenge when push challenge fails during registration.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-27 13:40:50 -04:00
Cody Henthorne 562185f46d Insert terminate event when restoring ended group from storage service. 2026-03-27 13:38:14 -04:00
Alex Hart f6c7c6de73 Fix local archive progression reporting in notification. 2026-03-27 12:38:36 -03:00
Greyson Parrelli 1ca3a9ca73 Fix unpin sync messages for 1:1 conversations. 2026-03-27 11:23:46 -04:00
jeffrey-signal c76c3f65f2 Fix notification reply avatar showing note to self instead of profile photo. 2026-03-27 11:21:14 -04:00
jeffrey-signal 59c27797d6 Fix backup validation error when a group member has a label emoji value without a label string. 2026-03-27 10:15:58 -04:00
Greyson Parrelli c5c720b1c9 Enforce length limits on link preview fields. 2026-03-26 15:57:36 -04:00
Greyson Parrelli caa09c82d0 Fix some APNGs not playing in new renderer. 2026-03-26 15:47:03 -04:00
Greyson Parrelli d45f80f25d Improve APNG validation in new APNG renderer. 2026-03-26 15:39:03 -04:00
Greyson Parrelli 6a248f617a Include links in the "All" tab of media overview. 2026-03-26 15:24:56 -04:00
Greyson Parrelli 2959e05ea7 Fix link multi-selection in media overview. 2026-03-26 15:24:56 -04:00
Cody Henthorne 17faf56388 Drop all messages sent to a terminated group. 2026-03-26 15:22:20 -04:00
Alex Hart f533ad1533 Update copy for backup education screen. 2026-03-26 16:15:05 -03:00
Alex Hart 25452fefa5 Retry canWrite() check when opening backup directory for writing.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-26 14:54:10 -03:00
Cody Henthorne 9702728c19 Gate poll, pin, and reaction UX in terminated groups. 2026-03-26 13:26:16 -04:00
Cody Henthorne 43f19d14d8 Add additional checks for terminated groups during send flows. 2026-03-26 11:59:11 -04:00
Alex Hart 467c154ea6 Utilize enqueue job for spawning attachment restore jobs. 2026-03-26 12:41:41 -03:00
Alex Hart d72c742ab6 Remove hint file. 2026-03-26 12:35:34 -03:00
Alex Hart 567bf0facc Add Last Backup help text. 2026-03-26 12:30:59 -03:00
Alex Hart d5329d0794 Support directly selecting signalbackup. 2026-03-26 12:25:37 -03:00
Alex Hart ff04e5c5c3 Ensure metadata is available when writing chat style attachments. 2026-03-26 10:51:51 -03:00
Alex Hart e529fbd1bc Suppress megaphone for upgrade path. 2026-03-26 09:41:47 -03:00
Cody Henthorne 068eaff801 Bump version to 8.5.0 2026-03-25 17:02:37 -04:00
Cody Henthorne e0bb3a48c2 Update translations and other static files. 2026-03-25 16:41:04 -04:00
Alex Hart f2e4881026 Add underpinnings to allow for local plaintext export.
Co-authored-by: Cody Henthorne <cody@signal.org>
2026-03-25 16:31:10 -04:00
Alex Hart b605148ac4 Wake lock during restore. 2026-03-25 16:31:10 -04:00
Cody Henthorne 2b9126d74b Update group terminated banner. 2026-03-25 16:31:10 -04:00
Alex Hart 206f6d84e7 Remove size line from backup info. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 01836b3a7c Update emoji to unicode 17. 2026-03-25 16:31:09 -04:00
Michelle Tang e68691c966 Show final disappearing timer value for collapsed events. 2026-03-25 16:31:09 -04:00
Alex Hart 957f473e77 Ensure we upgrade properly from v1. 2026-03-25 16:31:09 -04:00
Alex Hart 8a023100ea Write backup file timestamp in utc. 2026-03-25 16:31:09 -04:00
Alex Hart 5bfdca509c Fix dark mode on update card. 2026-03-25 16:31:09 -04:00
Tushar Soni 9a837254ec Simplify recipient list truncation in CreateFolderScreen.
Resolves signalapp/Signal-Android#14439
Closes signalapp/Signal-Android#14473
2026-03-25 16:31:09 -04:00
Alex Hart 3f27769d20 Enable new local backup export for external users. 2026-03-25 16:31:09 -04:00
Michelle Tang 4f260c2063 Backfill collapsible messages. 2026-03-25 16:31:09 -04:00
Michelle Tang 75df16e842 Fix collapsing tests. 2026-03-25 16:31:09 -04:00
Michelle Tang fce6651e26 Fix pinned messages with attachments. 2026-03-25 16:31:09 -04:00
andrew-signal b06783bc90 Bump to libsignal v0.89.2 2026-03-25 16:31:09 -04:00
Jesse Weinstein 72a1a9b0ff Fix unquoted imports in proto files.
Closes signalapp/Signal-Android#14669
2026-03-25 16:31:09 -04:00
DivyaKhunt07 5568a14490 Fix unexpected keyboard appearance on repeated back swipe.
Resolves signalapp/Signal-Android#14618
Closes signalapp/Signal-Android#14633
2026-03-25 16:31:09 -04:00
Michelle Tang 378ebb00c4 Allow multiselect deleting for collapsed events. 2026-03-25 16:31:09 -04:00
Cody Henthorne c81f40eb74 Add additional group terminate checks. 2026-03-25 16:31:09 -04:00
Alex Hart d97bde3959 Update to utilize main activity instead of passthrough. 2026-03-25 16:31:09 -04:00
jeffrey-signal 4d301a4f66 Show conversation settings in the detail pane on large screens. 2026-03-25 16:31:09 -04:00
Alex Hart 9941b2d123 Fix several bugs in the local backup restore flow. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 089d8a50b2 Promote the new APNG renderer to a normal flag. 2026-03-25 16:31:09 -04:00
Greyson Parrelli eb8ad5218d Filter archived stories from the stories landing page query. 2026-03-25 16:31:09 -04:00
Michelle Tang 21b1401fc4 Update safety number tappable area. 2026-03-25 16:31:09 -04:00
Michelle Tang 58ea9a1f48 Rename collapsed events for 1:1. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 2bb9578ef9 Use sqlite-jdbc for unit tests to enable FTS5 and JSON1 support. 2026-03-25 16:31:09 -04:00
Michelle Tang c3b8768570 Turn on collapsing chat events for internal users. 2026-03-25 16:31:09 -04:00
Alex Hart 94e3dabc20 Confirm backup location after successful local backup restore. 2026-03-25 16:31:09 -04:00
Jesse Weinstein 542a820e22 Remove UriSerializer typealias -- it is only used in two places 2026-03-25 16:31:09 -04:00
Greyson Parrelli 8f7cc52255 Fix bug around collision detection filtering. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 63888f1c99 Refactor name collision tables to improve perf. 2026-03-25 16:31:09 -04:00
jeffrey-signal a588522c9b Support navigating back to MainActivity with no conversation selected. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 7a2eca3bd5 Fix all media storage overview performance. 2026-03-25 16:31:09 -04:00
Greyson Parrelli a8ba0dccca Fix story reply thumbnails. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 782c83cc4e Fix story download bug. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 46e6ae915c Add better loading states for story archive and starred. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 8a887b65a1 Extract base archive classes into their own module. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 08491579dd Add links to the all media view. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 25b01a30be Improve memory usage of new APNG renderer by making it streaming. 2026-03-25 16:31:09 -04:00
Greyson Parrelli 48374e6950 Add support for starring messages. 2026-03-25 16:31:09 -04:00
jeffrey-signal 6496f236ea Fix secure backups learn more link.
Resolves signalapp/Signal-Android#14657
2026-03-25 16:31:09 -04:00
Alex Hart e767434c2b Perform StorageServiceRestore on skip if already registered. 2026-03-25 16:31:09 -04:00
Michelle Tang bb6507a456 Disabled new lines for when statements for ktlint. 2026-03-25 16:31:09 -04:00
Greyson Parrelli c3f9e5d972 Add new APNG renderer, just for internal users for now. 2026-03-25 16:31:08 -04:00
Alex Hart 34d87cf6e1 Warning dialogs for local backup restore. 2026-03-25 16:31:08 -04:00
Greyson Parrelli e657a4adf3 Guard auto-lower hand behind labs. 2026-03-25 16:31:08 -04:00
jeffrey-signal 9594599d60 Fix unread filter deactivating when scrolling through the conversation list. 2026-03-25 16:31:08 -04:00
Cody Henthorne a0c0acb8fc Add group terminate support. 2026-03-25 16:31:08 -04:00
Greyson Parrelli 0896718e5c Annotate labs features as such. 2026-03-25 16:31:08 -04:00
Greyson Parrelli be4bf27ede Remove attachment table JSON join. 2026-03-25 16:31:08 -04:00
Greyson Parrelli 7253aaaa14 Add the ability to filter search by date and author. 2026-03-25 16:31:08 -04:00
jeffrey-signal 72cbe61f6c Prepare conversation fragment navigation for two-pane conversation settings. 2026-03-25 16:31:08 -04:00
Alex Hart 78d3db319c Fix local backup restore AEP handling and conditional re-enable. 2026-03-25 16:31:08 -04:00
Greyson Parrelli c7a6c7ad9e Minor improvements to SVRB error handling. 2026-03-25 16:31:08 -04:00
Greyson Parrelli 8bc183b994 Fix validation error with session switchover events. 2026-03-25 16:31:08 -04:00
Greyson Parrelli ef6e5abc17 Add retry logic for camera binding failures. 2026-03-25 16:31:08 -04:00
Greyson Parrelli e96e6e8d18 Use note to self icon in share sheet. 2026-03-25 16:31:08 -04:00
Greyson Parrelli cee33a23ac Use transaction when loading logs. 2026-03-25 16:31:08 -04:00
Greyson Parrelli c5de7581ee Show error message on SN screen when there's no ACI. 2026-03-25 16:31:08 -04:00
Greyson Parrelli 5dc626078f Compress shared contact avatar before launching add-to-contacts intent.
Old way let us use photos that could put us over the 1mb transaction
size limit.
2026-03-25 16:31:08 -04:00
Greyson Parrelli 9de75b3e1f Show groups that have the same member list during group creation. 2026-03-25 16:31:08 -04:00
Greyson Parrelli f09bf5b14c Make regV5 resumable if the app closes. 2026-03-19 17:13:11 -04:00
Michelle Tang c7ec3ab837 Bump version to 8.4.1 2026-03-19 17:09:55 -04:00
Michelle Tang 2a7b58bf46 Update baseline profile. 2026-03-19 17:02:55 -04:00
Michelle Tang 7d5b0b1565 Update translations and other static files. 2026-03-19 16:52:44 -04:00
Cody Henthorne 3620db3a92 Make max compressed video size remote configurable. 2026-03-19 16:47:35 -04:00
andrew-signal 69cad04875 Bump to libsignal v0.89.1. 2026-03-19 12:23:30 -04:00
Michelle Tang d533cdc619 Bump version to 8.4.0 2026-03-18 15:16:15 -04:00
Michelle Tang ae455d2615 Update baseline profile. 2026-03-18 15:06:42 -04:00
Michelle Tang 7f27e52e58 Update translations and other static files. 2026-03-18 14:57:29 -04:00
Greyson Parrelli 4b10c19569 Validate individual APNG frame dimensions. 2026-03-18 13:30:11 -04:00
Greyson Parrelli 3f7f43d506 Show author of message in search results. 2026-03-18 13:15:49 -04:00
Cody Henthorne b4296c1e4b Fix name collision clean up bug and flakey test. 2026-03-18 13:15:49 -04:00
Greyson Parrelli b62b5ea8ef Add ability to open a chat incognito. 2026-03-18 13:15:49 -04:00
jeffrey-signal db5cced91b Show mark read action on admin-only group notifications for non-admin members. 2026-03-18 13:15:49 -04:00
Michelle Tang b677827c86 Inline pinned message config. 2026-03-18 13:15:49 -04:00
Alex Hart fc0e902cbf Parallelize all-files. 2026-03-18 13:15:49 -04:00
jeffrey-signal 6fbf4d4ae6 Fix chevron appearing below the recipient name. 2026-03-18 13:15:49 -04:00
Greyson Parrelli 95149764eb Add a new internal-only 'labs' setting screen. 2026-03-18 13:15:49 -04:00
Cody Henthorne a37680685f Fix flakey getAndPossiblyMerge test. 2026-03-18 13:15:49 -04:00
Greyson Parrelli 2b163a9acd Add the ability to do an export of a single chat. 2026-03-18 13:15:49 -04:00
Alex Hart 2f41d15a41 Add progress phases for initialization and finalization for local backups. 2026-03-18 13:15:49 -04:00
Greyson Parrelli d2c8b6e14c Improve the storage controller for regV5. 2026-03-18 13:15:49 -04:00
Alex Hart 6877b9163b Resolve ANR when deleting local backup. 2026-03-18 13:15:49 -04:00
jeffrey-signal 6ee14d5e7c Fix closed conversation reopening after changing the device orientation. 2026-03-18 13:15:49 -04:00
andrew-signal 824ff18ba5 Bump libsignal to 0.88.3 2026-03-18 13:15:49 -04:00
emir-signal 548adb831d Update to RingRTC v2.67.0 2026-03-18 13:15:49 -04:00
Cody Henthorne 501ef69f97 Fix session establishment in message processing benchmark tests. 2026-03-18 13:15:49 -04:00
Cody Henthorne a62f07db11 Reintroduce preliminary telecom support for 1:1 calling. 2026-03-18 13:15:49 -04:00
Greyson Parrelli 1b6cfe9fc6 Re-order megaphones so backups are above PIN reminders. 2026-03-18 13:15:49 -04:00
Alex Hart eaa1124e71 Fix voice message waveform only showing activity at the beginning.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-18 13:15:49 -04:00
Michelle Tang 380036195a Update deleted string. 2026-03-18 13:15:49 -04:00
andrew-signal d2619a6abd Use app locale when formatting LocalTime, rather than system locale. 2026-03-18 13:15:49 -04:00
Cody Henthorne 4d2f23ec37 Use libsignal-net for multi-recipient send. 2026-03-18 13:15:49 -04:00
Greyson Parrelli 6c1897d8d5 Add infra for regV5 restore flows. 2026-03-18 13:15:49 -04:00
Greyson Parrelli 39de824bf0 Add quick restore flow and DebugLoggableModel to regV5.
Renames restore → quickrestore package, adds QuickRestoreQrViewModel,
introduces DebugLoggableModel for safe toString in release builds,
updates all State/Events classes to extend it, switches previews to
AllDevicePreviews, and enables BuildConfig for the registration module.
2026-03-18 13:15:49 -04:00
Alex Hart 889ebcadd4 Prevent remove from call button from displaying in group calls.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-18 13:15:49 -04:00
Alex Hart db17d1fd24 Unify backup creation progress model for local backups. 2026-03-18 13:15:48 -04:00
Alex Hart cc282276c8 Disable proximity sensor during outgoing video call ringing.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-03-18 13:15:48 -04:00
jeffrey-signal a5e00c4319 Inline the send member labels feature flag. 2026-03-18 13:15:48 -04:00
Alex Hart dba5252be6 Move fetch of first emission to the observeInAppPaymentRedemption call. 2026-03-18 13:15:48 -04:00
Michelle Tang 874bc1a1c9 Bump version to 8.3.4 2026-03-18 13:12:06 -04:00
Michelle Tang 4b95851ae5 Update translations and other static files. 2026-03-18 13:07:28 -04:00
Greyson Parrelli fbe907f1e9 Temporarily revert nickname bug to fix potential database churn. 2026-03-18 12:02:43 -04:00
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
1619 changed files with 112655 additions and 46882 deletions
+1
View File
@@ -20,6 +20,7 @@ ktlint_standard_unnecessary-parentheses-before-trailing-lambda = disabled
ktlint_standard_value-parameter-comment = disabled ktlint_standard_value-parameter-comment = disabled
ktlint_standard_class-signature = disabled ktlint_standard_class-signature = disabled
ktlint_standard_function-expression-body = disabled ktlint_standard_function-expression-body = disabled
ktlint_standard_blank-line-between-when-conditions = disabled
# Disable ktlint on generated source code, see # Disable ktlint on generated source code, see
# https://github.com/JLLeitschuh/ktlint-gradle/issues/746 # https://github.com/JLLeitschuh/ktlint-gradle/issues/746
-23
View File
@@ -1,23 +0,0 @@
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 60
# Number of days of inactivity before an Issue or Pull Request with the stale label is closed.
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
daysUntilClose: 7
issues:
exemptLabels:
- acknowledged
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale Issue or Pull Request.
closeComment: >
This issue has been closed due to inactivity.
# Limit the number of actions per hour, from 1-30. Default is 30
limitPerRun: 1
+37
View File
@@ -0,0 +1,37 @@
name: Mark stale issues and PRs
on:
schedule:
- cron: '0 2 * * *' # daily at 02:00 UTC
workflow_dispatch:
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
actions: write
steps:
- uses: actions/stale@v10
with:
days-before-stale: 60
days-before-close: 7
exempt-issue-labels: 'acknowledged'
exempt-pr-labels: 'acknowledged'
stale-issue-label: 'wontfix'
stale-pr-label: 'wontfix'
stale-issue-message: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions!
stale-pr-message: >
This pull request has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions!
close-issue-message: >
This issue has been closed due to inactivity.
close-pr-message: >
This pull request has been closed due to inactivity.
operations-per-run: 150
+1
View File
@@ -33,3 +33,4 @@ maps.key
kls_database.db kls_database.db
.kotlin .kotlin
lefthook-local.yml lefthook-local.yml
sample-videos/
+139 -20
View File
@@ -2,6 +2,10 @@
import com.android.build.api.dsl.ManagedVirtualDevice import com.android.build.api.dsl.ManagedVirtualDevice
import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import java.time.Instant
import java.time.ZoneOffset
import java.time.format.DateTimeFormatter
import java.util.Locale
import java.util.Properties import java.util.Properties
plugins { plugins {
@@ -20,9 +24,9 @@ plugins {
apply(from = "static-ips.gradle.kts") apply(from = "static-ips.gradle.kts")
val canonicalVersionCode = 1651 val canonicalVersionCode = 1674
val canonicalVersionName = "7.74.5" val canonicalVersionName = "8.6.1"
val currentHotfixVersion = 2 val currentHotfixVersion = 0
val maxHotfixVersions = 100 val maxHotfixVersions = 100
// We don't want versions to ever end in 0 so that they don't conflict with nightly versions // We don't want versions to ever end in 0 so that they don't conflict with nightly versions
@@ -40,9 +44,16 @@ val languagesForBuildConfigProvider = languagesProvider.map { languages ->
languages.joinToString(separator = ", ") { language -> "\"$language\"" } 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( val selectableVariants = listOf(
"nightlyBackupRelease",
"nightlyBackupSpinner",
"nightlyProdSpinner", "nightlyProdSpinner",
"nightlyProdPerf", "nightlyProdPerf",
"nightlyProdRelease", "nightlyProdRelease",
@@ -62,6 +73,8 @@ val selectableVariants = listOf(
"playStagingPerf", "playStagingPerf",
"playStagingInstrumentation", "playStagingInstrumentation",
"playStagingRelease", "playStagingRelease",
"playProdQuickstart",
"playStagingQuickstart",
"websiteProdSpinner", "websiteProdSpinner",
"websiteProdRelease", "websiteProdRelease",
"githubProdSpinner", "githubProdSpinner",
@@ -79,6 +92,7 @@ wire {
protoPath { protoPath {
srcDir("${project.rootDir}/lib/libsignal-service/src/main/protowire") srcDir("${project.rootDir}/lib/libsignal-service/src/main/protowire")
srcDir("${project.rootDir}/lib/archive/src/main/protowire")
} }
// Handled by libsignal // Handled by libsignal
prune("signalservice.DecryptionErrorMessage") prune("signalservice.DecryptionErrorMessage")
@@ -249,7 +263,7 @@ android {
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_live_6cmGZopuTsV8novGgJJW9JpC00vLIgtQ1D\"") buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_live_6cmGZopuTsV8novGgJJW9JpC00vLIgtQ1D\"")
buildConfigField("boolean", "TRACING_ENABLED", "false") buildConfigField("boolean", "TRACING_ENABLED", "false")
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "false") buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "false")
buildConfigField("boolean", "USE_STRING_ID", "true") buildConfigField("boolean", "USE_STRING_ID", "false")
ndk { ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64") abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
@@ -348,8 +362,13 @@ android {
isDebuggable = false isDebuggable = false
isMinifyEnabled = true isMinifyEnabled = true
matchingFallbacks += "debug" matchingFallbacks += "debug"
applicationIdSuffix = ".benchmark"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"") buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"")
buildConfigField("boolean", "TRACING_ENABLED", "true") buildConfigField("boolean", "TRACING_ENABLED", "true")
buildConfigField("String[]", "UNIDENTIFIED_SENDER_TRUST_ROOTS", "new String[]{ \"BVT/2gHqbrG1xzuIypLIOjFgMtihrMld1/5TGADL6Dhv\"}")
manifestPlaceholders["applicationClass"] = "org.thoughtcrime.securesms.BenchmarkApplicationContext"
} }
create("mocked") { create("mocked") {
@@ -360,6 +379,8 @@ android {
matchingFallbacks += "debug" matchingFallbacks += "debug"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"") buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Benchmark\"")
buildConfigField("boolean", "TRACING_ENABLED", "true") buildConfigField("boolean", "TRACING_ENABLED", "true")
manifestPlaceholders["applicationClass"] = "org.thoughtcrime.securesms.ApplicationContext"
} }
create("canary") { create("canary") {
@@ -369,6 +390,14 @@ android {
matchingFallbacks += "debug" matchingFallbacks += "debug"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Canary\"") buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Canary\"")
} }
create("quickstart") {
initWith(getByName("debug"))
isDefault = false
isMinifyEnabled = false
matchingFallbacks += "debug"
buildConfigField("String", "BUILD_VARIANT_TYPE", "\"Quickstart\"")
}
} }
productFlavors { productFlavors {
@@ -435,22 +464,10 @@ android {
buildConfigField("String", "RECAPTCHA_PROOF_URL", "\"https://signalcaptchas.org/staging/challenge/generate.html\"") 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("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("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", "BUILD_ENVIRONMENT_TYPE", "\"Staging\"")
buildConfigField("String", "STRIPE_PUBLISHABLE_KEY", "\"pk_test_sngOd8FnXNkpce9nPXawKrJD00kIDngZkD\"") 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 { lint {
@@ -492,12 +509,39 @@ android {
val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer
variant.outputs.forEach { output -> variant.outputs.forEach { output ->
output.versionName.set(tag) output.versionName.set("$tag | ${getLastCommitDateTimeUtc()}")
output.versionCode.set(nightlyVersionCode) 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" val releaseDir = "$projectDir/src/release/java"
@@ -525,7 +569,8 @@ android {
applicationVariants.configureEach { applicationVariants.configureEach {
outputs.configureEach { outputs.configureEach {
if (this is com.android.build.gradle.internal.api.BaseVariantOutputImpl) { if (this is com.android.build.gradle.internal.api.BaseVariantOutputImpl) {
outputFileName = outputFileName.replace(".apk", "-$versionName.apk") val fileVersionName = versionName.substringBefore(" |")
outputFileName = outputFileName.replace(".apk", "-$fileVersionName.apk")
} }
} }
} }
@@ -550,6 +595,7 @@ dependencies {
ktlintRuleset(libs.ktlint.twitter.compose) ktlintRuleset(libs.ktlint.twitter.compose)
coreLibraryDesugaring(libs.android.tools.desugar) coreLibraryDesugaring(libs.android.tools.desugar)
implementation(project(":lib:archive"))
implementation(project(":lib:libsignal-service")) implementation(project(":lib:libsignal-service"))
implementation(project(":lib:paging")) implementation(project(":lib:paging"))
implementation(project(":core:util")) implementation(project(":core:util"))
@@ -568,6 +614,8 @@ dependencies {
implementation(project(":core:models")) implementation(project(":core:models"))
implementation(project(":core:models-jvm")) implementation(project(":core:models-jvm"))
implementation(project(":feature:camera")) implementation(project(":feature:camera"))
implementation(project(":feature:registration"))
implementation(project(":lib:apng"))
implementation(libs.androidx.fragment.ktx) implementation(libs.androidx.fragment.ktx)
implementation(libs.androidx.appcompat) { implementation(libs.androidx.appcompat) {
@@ -609,6 +657,7 @@ dependencies {
implementation(libs.androidx.concurrent.futures) implementation(libs.androidx.concurrent.futures)
implementation(libs.androidx.autofill) implementation(libs.androidx.autofill)
implementation(libs.androidx.biometric) implementation(libs.androidx.biometric)
implementation(libs.androidx.core.telecom)
implementation(libs.androidx.sharetarget) implementation(libs.androidx.sharetarget)
implementation(libs.androidx.profileinstaller) implementation(libs.androidx.profileinstaller)
implementation(libs.androidx.asynclayoutinflater) implementation(libs.androidx.asynclayoutinflater)
@@ -701,6 +750,7 @@ dependencies {
testImplementation(testFixtures(project(":lib:libsignal-service"))) testImplementation(testFixtures(project(":lib:libsignal-service")))
testImplementation(testLibs.espresso.core) testImplementation(testLibs.espresso.core)
testImplementation(testLibs.kotlinx.coroutines.test) testImplementation(testLibs.kotlinx.coroutines.test)
testImplementation(testLibs.sqlite.jdbc)
testImplementation(libs.androidx.compose.ui.test.junit4) testImplementation(libs.androidx.compose.ui.test.junit4)
"perfImplementation"(libs.androidx.compose.ui.test.manifest) "perfImplementation"(libs.androidx.compose.ui.test.manifest)
@@ -763,6 +813,16 @@ fun getNightlyBuildNumber(tag: String?): Int {
return match?.groupValues?.get(1)?.toIntOrNull() ?: 0 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 { fun getMapsKey(): String {
return providers return providers
.gradleProperty("mapsKey") .gradleProperty("mapsKey")
@@ -822,3 +882,62 @@ abstract class PropertiesFileValueSource : ValueSource<Properties?, PropertiesFi
fun String.capitalize(): String { fun String.capitalize(): String {
return this.replaceFirstChar { it.uppercase() } 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