Compare commits

...

667 Commits

Author SHA1 Message Date
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
Alex Hart 3e6145aed0 Bump version to 7.70.1 2026-01-20 15:02:44 -04:00
Alex Hart c960f29e38 Update translations and other static files. 2026-01-20 14:52:10 -04:00
Alex Hart c230eb179b Back camera mirror fix. 2026-01-20 13:44:41 -04:00
Alex Hart 05e77b1d33 Filter out participants without ServiceId when leaving group call.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2026-01-20 13:37:57 -04:00
Michelle Tang a2bdea5df2 Fix missing windows dependency. 2026-01-15 13:58:36 -05:00
Michelle Tang b2b2860a48 Bump version to 7.70.0 2026-01-14 15:49:42 -05:00
Michelle Tang f71c1d0c5d Update translations and other static files. 2026-01-14 15:41:40 -05:00
Greyson Parrelli 43607edc1c Improve reconciliation logging and handling. 2026-01-14 13:53:57 -05:00
Greyson Parrelli 08beb7ff43 Properly tag account wallpapers as such during export. 2026-01-14 13:49:28 -05:00
Greyson Parrelli b24c4e3302 Poke upload progress when viewing settings. 2026-01-14 12:21:19 -05:00
Greyson Parrelli 06a6f0ea0b Rotate backups beta megaphone flag. 2026-01-14 10:53:19 -05:00
Greyson Parrelli bd38c4f5d2 Update Groups.proto to match shared spec. 2026-01-13 14:01:46 -05:00
Michelle Tang 2e4665e5c4 Fix missing UUID crash in storage service. 2026-01-13 12:20:29 -05:00
andrew-signal 1b250300c7 Bump to libsignal v0.86.11 2026-01-13 12:20:29 -05:00
Alex Hart 7f3966ff07 Remove call length checks from CallQuality trigger. 2026-01-13 12:20:29 -05:00
Alex Hart 1f7e9df7ff Clean up old calling code. 2026-01-13 12:20:29 -05:00
Greyson Parrelli fd32ec9598 Improve internal logging for reconciliation errors. 2026-01-13 12:20:29 -05:00
Alex Hart ed12a7691d Add the call quality diagnostics fragment. 2026-01-13 12:20:29 -05:00
Michelle Tang 5759609a11 Add education sheet for key transparency. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 6a423cb18b Fetch abandoned attachment files in a transaction.
Not likely to affect anything because of the existin protected file
system, more just a defense-and-depth style thing.
2026-01-13 12:20:29 -05:00
Greyson Parrelli c727f93534 Fix conversation list not updating when disappearing message expires
When a disappearing message expired while the user was on the chat list,
the message preview would persist until the user navigated into that
conversation or restarted the app.

The issue was that deleteMessage() only called notifyConversationListeners(threadId)
which notifies observers watching a specific thread, but not
notifyConversationListListeners() which notifies the conversation list UI.
Other similar operations (like bulk deletes at line 3639) correctly call both.
2026-01-13 12:20:29 -05:00
Greyson Parrelli 623d2f2659 Add vertical scrolling to Change Number screen for accessibility.
The Change Number intro screen was not scrollable, making the Continue
button inaccessible when users have larger font or display sizes
configured on their device. Added verticalScroll modifier to the Column
to allow scrolling when content overflows.
2026-01-13 12:20:29 -05:00
Greyson Parrelli 4dede65e32 Remove some bad thumbnails from archive reconciliation. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 1c5f4da20f Potential fix for flakey name collision test. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 33d9840a78 Fix bad attachment table test. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 3e89e07ad3 Fix case where wallpapers may not be uploaded. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 99c3e043e7 Include more debug information for debuglog upload failures. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 3858024116 Fix log typo. 2026-01-13 12:20:29 -05:00
Greyson Parrelli b06f0bba61 Do not run reconciliation while there are still uploads in progress. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 73ea50d162 Make logging more accurate. 2026-01-13 12:20:29 -05:00
jeffrey-signal 98580e6a6b Move sticker preview classes to preview subpackage. 2026-01-13 12:20:29 -05:00
jeffrey-signal 2f0a63774f Move StickerManagementScreen to its own file. 2026-01-13 12:20:29 -05:00
Greyson Parrelli 3d8f364d59 Update to AGP 8.13.2 2026-01-13 12:20:29 -05:00
jeffrey-signal 2d93b31469 Update username link logo.
Resolves signalapp/Signal-Android#14258
2026-01-13 12:20:28 -05:00
Michelle Tang e27abcb047 Bump version to 7.69.2 2026-01-12 13:54:14 -05:00
Michelle Tang 29b4b32692 Update translations and other static files. 2026-01-12 13:45:09 -05:00
Alex Hart bdd6bcb932 Fix speaker button initialisation issue. 2026-01-12 12:45:04 -04:00
Alex Hart 062fb1fe0b Add factory call for MainNavigationViewModel in ConversationFragment. 2026-01-12 12:21:09 -04:00
Greyson Parrelli 4a0631a10c Attempt to restore attachment as long as we have the data hash. 2026-01-09 21:15:46 -05:00
jeffrey-signal a0fdc735e7 Bump version to 7.69.1 2026-01-09 15:14:14 -05:00
jeffrey-signal fa842ac281 Update translations and other static files. 2026-01-09 15:11:28 -05:00
Alex Hart f8d17b04cb Fix ringing screen when an outgoing call is placed and the camera is off. 2026-01-09 14:17:49 -04:00
Alex Hart 0ac9f5d7c0 Add new raised hand treatment. 2026-01-09 13:25:29 -04:00
Alex Hart 1ad7aa901a Fix group-ring logic. 2026-01-09 13:24:51 -04:00
Alex Hart b0aa440b9d Attempt to fix transparent bottom nav bar. 2026-01-09 13:17:59 -04:00
Alex Hart dc6deee231 Remove new-calling-ui flag. 2026-01-09 12:03:51 -04:00
Greyson Parrelli 1cf52cae71 Ensure that we mark attachments restored from the archive as FINISHED. 2026-01-09 10:37:21 -05:00
Michelle Tang c730a09123 Fix inconsistent pin timer. 2026-01-08 18:00:03 -05:00
Michelle Tang 01fc7fa179 Move the star over for poll results. 2026-01-08 17:45:01 -05:00
Alex Hart d2c6698824 Add fix for call screen bar sizing and position. 2026-01-08 12:45:31 -04:00
jeffrey-signal e014779b32 Bump version to 7.69.0 2026-01-08 07:49:15 -05:00
jeffrey-signal fe400894b1 Update translations and other static files. 2026-01-08 07:42:59 -05:00
jeffrey-signal 051e98898d Mark translation gradle tasks as incompatible with configuration cache. 2026-01-08 07:39:51 -05:00
jeffrey-signal 9cf77d320c Fix lint checks. 2026-01-08 07:39:51 -05:00
Greyson Parrelli 7c11239875 Be more lenient with attachment restore conditions. 2026-01-08 07:39:51 -05:00
Greyson Parrelli 3e5af23f43 Do not attach a resend listener unless an attachment is failed. 2026-01-08 07:39:51 -05:00
Greyson Parrelli a349fdd79e Keem some additional reconciliation logs longer. 2026-01-08 07:39:51 -05:00
jeffrey-signal af32996728 Exit multi-select mode on back press in sticker management. 2026-01-08 07:39:51 -05:00
Greyson Parrelli 5fa5a98b87 Enqueue another backup after uploading new media. 2026-01-08 07:39:51 -05:00
Alex Hart a7f239576f Add missing call link ui. 2026-01-08 07:39:51 -05:00
jeffrey-signal c2ec9e579e Open sticker management in a bottom sheet on large screen devices. 2026-01-08 07:39:50 -05:00
Michelle Tang b56e2222f5 Hide unpinning behind feature flag. 2026-01-08 07:39:50 -05:00
Alex Hart fc94a9d748 Reintroduce blur behind pip. 2026-01-08 07:39:50 -05:00
Greyson Parrelli 4b41989b30 Respect 429 in SVR write requests. 2026-01-08 07:39:50 -05:00
jeffrey-signal e3b569ca5b Calculate drag handle bounds using the container width instead of the screen width. 2026-01-08 07:39:50 -05:00
Michelle Tang 6459ef5b66 Rotate receive pinned messages flag. 2026-01-08 07:39:49 -05:00
Greyson Parrelli b085989b22 Update to libsignal v0.86.10 2026-01-08 07:39:49 -05:00
Greyson Parrelli 888e7f8ed5 Fix potential issue with reaction export. 2026-01-08 07:39:49 -05:00
Greyson Parrelli d50a9c61b0 Potential fix for empty BodyRange errors during export.
The only way I could see this being a problem is if the mention ACI was
empty. We'll have to see if that fixes it.
2026-01-08 07:39:49 -05:00
Greyson Parrelli 4fdc2bd76b Improve the qa task. 2026-01-08 07:39:49 -05:00
Michelle Tang 3f990327d8 Fix alphabetical group members bug. 2026-01-08 07:39:49 -05:00
Greyson Parrelli 8ccd2864fe Use legacy packaging for website builds to reduce download size. 2026-01-08 07:39:49 -05:00
Greyson Parrelli e7bfefa027 Fix validation errors around group chat updates. 2026-01-08 07:39:49 -05:00
Michelle Tang 1da75018eb Fix polls in local backups. 2026-01-08 07:39:48 -05:00
Greyson Parrelli 88be84297e Fix validation error around session switchover events. 2026-01-08 07:39:48 -05:00
Michelle Tang e1467480e9 Fix message timer for chat updates. 2026-01-08 07:39:48 -05:00
Alex Hart 92c71b3630 Fix issue where latest chat would reappear after reopening the app. 2026-01-08 07:39:48 -05:00
Alex Hart 24c994d5b2 Prevent multiple instances of main-activity from being added to our task stack. 2026-01-08 07:39:48 -05:00
Michelle Tang f7d87f3436 Allow 1:1 polls and raise character limit. 2026-01-08 07:39:48 -05:00
Daniele Favaro fd635542c0 Allow country code selection input to be multi-line.
Fixes #14407
Resolves #14408
2026-01-08 07:39:47 -05:00
Alex Hart eb826b2786 Fix crash when rotating device in emoji reaction picker.
Adds null check for selectedConversationModel in hideInternal() to
prevent NPE when hide() is called after the overlay has already been
hidden during configuration changes.

Fixes #14491
2026-01-08 07:39:47 -05:00
Alex Hart 8cd0381df5 Fix persistent "group members have the same name" banner.
The hash calculation for name collisions iterated over a Set with undefined
order, causing inconsistent hashes and resetting the dismissed state.
2026-01-08 07:39:47 -05:00
Alex Hart 305c32cfc5 Fix snackbar durations. 2026-01-08 07:39:47 -05:00
Alex Hart bb21363ca8 Display large screen participant on connecting call. 2026-01-08 07:39:47 -05:00
Alex Hart 6968edbeec Fix self-pip mirroring. 2026-01-08 07:39:47 -05:00
Greyson Parrelli a6acbacaef Fix some string capitalizations.
Fixes #14210
2026-01-08 07:39:46 -05:00
Greyson Parrelli 870ae8a46f Potential fix for Android 7 crash on chat open.
Fixes #14447
2026-01-08 07:39:46 -05:00
Greyson Parrelli a3c9f04719 Enable the gradle configuration cache. 2026-01-08 07:39:46 -05:00
Greyson Parrelli fdcd24feb1 Fix ordering issues in updateStaticFilesAndQa. 2026-01-08 07:39:46 -05:00
Greyson Parrelli c31b2edeab Add tests for SmartlingClient. 2026-01-08 07:39:46 -05:00
Greyson Parrelli ffecdb3747 Make pushing and pulling translations part of updateStaticFilesAndQa. 2026-01-08 07:39:46 -05:00
Greyson Parrelli 3031d68863 Move the pullTranslations script into the codebase as kotlin. 2026-01-08 07:39:46 -05:00
Greyson Parrelli fe1755f250 Move the pushTranslations script into the codebase as kotlin. 2026-01-08 07:39:45 -05:00
Greyson Parrelli e162eb27c7 Re-organize gradle modules. 2026-01-08 07:39:45 -05:00
Greyson Parrelli f4863efb2e Fix outdated comment. 2026-01-08 07:39:45 -05:00
Greyson Parrelli 5b3c51013b Move values from constants.gradle into libs.versions.toml 2026-01-08 07:39:45 -05:00
Greyson Parrelli 06bdc36136 Properly handle 413s when uploading to archive.
Fixes #14502
2026-01-08 07:39:45 -05:00
Michelle Tang 6e4edbd12d Disable image pasting when editing. 2026-01-08 07:39:45 -05:00
Michelle Tang c38fafe9fd Use updated country picker when deleting account. 2026-01-08 07:39:44 -05:00
Greyson Parrelli 6f213158ed Clean up AndroidManifest.xml 2026-01-08 07:39:44 -05:00
Greyson Parrelli 3db8f5a2af Ensure that attachments received during calls are autodownloaded afterwards.
The easiest way to do this is to add the constraint to the job itself,
when appropriate, so that we don't even run the job until you're done
with the call.
2026-01-08 07:39:44 -05:00
Michelle Tang 0b5fa18504 Delete all messages in edit chain. 2026-01-08 07:39:44 -05:00
Greyson Parrelli 7ea1080801 Remove unneccessary member warning during forwarding. 2026-01-08 07:39:44 -05:00
Greyson Parrelli 4c47f337ea Restart the app to apply the new language setting. 2026-01-08 07:39:44 -05:00
Cody Henthorne 952990c8af Add extra info tooltips to Spinner. 2026-01-08 07:39:44 -05:00
Greyson Parrelli f2582cae54 Add debug logging for failed media name requirements. 2026-01-08 07:39:44 -05:00
Greyson Parrelli e089be310b Fix crash related to timer updates. 2026-01-08 07:39:43 -05:00
Michelle Tang ed5c51d954 Allow pinning in note to self. 2026-01-08 07:39:43 -05:00
Michelle Tang 08915befa5 Fix sync message author when pinning. 2026-01-08 07:39:43 -05:00
Greyson Parrelli 062e958db5 Schedule search index optimization to occur overnight. 2026-01-08 07:39:43 -05:00
Greyson Parrelli 9be82a2739 Repair bad group storageId state on the fly.
Fixes #14308
2026-01-08 07:39:43 -05:00
Cody Henthorne 0ea3d524da Streamline invalid qr code dialog in link device flow. 2026-01-08 07:39:43 -05:00
Cody Henthorne 437979373c Always format e164 as LTR. 2026-01-08 07:39:43 -05:00
Greyson Parrelli 22ed8872e6 Ensure proxy settings are applied to default okhttp client.
Fixes #13682
2026-01-08 07:39:43 -05:00
Greyson Parrelli 39fe5b1eb5 Unconditionally disable auto updates. 2026-01-08 07:39:42 -05:00
Greyson Parrelli 717794a12e Remove now-unnecessary nightly auto-update stuff. 2026-01-08 07:39:42 -05:00
Cody Henthorne 4ce51c77a8 Remove verbose call link parsing logs. 2026-01-08 07:39:42 -05:00
Cody Henthorne d9ecab5240 Update local backup v2 support. 2026-01-08 07:39:42 -05:00
Cody Henthorne 71b15d269e Update Signal logo/branding for donation receipts. 2026-01-08 07:39:42 -05:00
Greyson Parrelli a1009da324 Update the versioning scheme for nightlies. 2026-01-08 07:39:42 -05:00
Cody Henthorne 26b8de2282 Abort re-reg with pin flow if unable to communicate via svr websocket. 2026-01-08 07:39:42 -05:00
Alex Hart 9db33c3fec Display proper text when not in the active call on the local device. 2026-01-08 07:39:42 -05:00
Greyson Parrelli 2538e48d0f Fix universal sealed sender setting in export. 2026-01-08 07:39:41 -05:00
Ehren Kret 68bf41b36a Delay auto-updates while in a VoIP call. 2026-01-08 07:39:41 -05:00
Michelle Tang 3a91bb8947 Potentially fix e164 crash. 2026-01-08 07:39:41 -05:00
Cody Henthorne ee930f59db Fix request to join state mismatch with server bug. 2026-01-08 07:39:41 -05:00
Greyson Parrelli 6b5feadf6c Dismiss media editor if you have no valid items. 2026-01-08 07:39:41 -05:00
Greyson Parrelli bd084e606c Allow saving e164-only contacts to your contacts. 2026-01-08 07:39:41 -05:00
Cody Henthorne bb674a1539 Fix added to group not showing up on canceled request groups. 2026-01-08 07:39:41 -05:00
Greyson Parrelli 951d073ad6 Fix possible crash when splitting contacts with invalid e164s. 2026-01-08 07:39:41 -05:00
Cody Henthorne b7d671dcbd Add better ux when group limit reached when joining via link. 2026-01-08 07:39:40 -05:00
Alex Hart eb4540600e Make megaphones scrollable again. 2026-01-08 07:39:40 -05:00
Michelle Tang 22fc874b99 Avoid italicizing glyphs. 2026-01-08 07:39:40 -05:00
Michelle Tang 282a707bf9 Fix talkback saying meters instead of minutes. 2026-01-08 07:39:40 -05:00
Cody Henthorne 942c155723 Fix request to join approved message not showing up. 2026-01-08 07:39:40 -05:00
Jim Gustafson 286ae25ac5 Update to RingRTC v2.61.0 2026-01-08 07:39:40 -05:00
Alex Hart 38ad0903ff Fix issue where attachment albums do not update if one object is deleted. 2026-01-08 07:39:40 -05:00
Alex Hart d76eb9a9e4 Add nicer snackbar propagation. 2026-01-08 07:39:40 -05:00
Alex Hart a3e8ca8d33 Implement new call layout. 2026-01-08 07:39:39 -05:00
Michelle Tang e1454cfc6a Fix notification profile overrides. 2026-01-08 07:39:39 -05:00
Alex Hart df6d446e83 Update something else title. 2026-01-08 07:39:39 -05:00
Greyson Parrelli 2d17082a76 Backfill plaintext hashes for quotes. 2026-01-08 07:39:39 -05:00
Alex Hart 9aa4797792 Ensure when we start the calling activity that we turn the screen on. 2026-01-08 07:39:39 -05:00
Greyson Parrelli 3508269c17 Fix some places where data_hash_end was not being set. 2026-01-08 07:39:39 -05:00
Greyson Parrelli c18e6e5e67 Fix export issue around long-text and quote-long texts. 2026-01-08 07:39:39 -05:00
Michelle Tang ce86b511f0 Clear profile override if none exists. 2026-01-08 07:39:39 -05:00
Michelle Tang b65079ec20 Support pinned messages in backups. 2026-01-08 07:39:38 -05:00
Greyson Parrelli b99fec4274 Have allowedToRequestCode take precendent in 429 reg responses. 2026-01-08 07:39:38 -05:00
Cody Henthorne 15677c663b Fix backup restore service concurrent modification crash on timeout. 2026-01-08 07:39:38 -05:00
Greyson Parrelli 1bd5b03636 Ensure envelope model updates info from metadata.
In practice this doesn't really matter because we don't read from it
after this point, but good to be consistent.
2026-01-08 07:39:38 -05:00
Greyson Parrelli 3542c363d9 Add more debug info for oversized messages. 2026-01-08 07:39:38 -05:00
Alex Hart ec44b9aae7 Fix audio indicator when system piping call. 2026-01-08 07:39:38 -05:00
Michelle Tang e4ec538f13 Fix unreliable allow multiple votes toggle. 2026-01-08 07:39:38 -05:00
Greyson Parrelli 3e54cc5c77 Fix call string format template. 2026-01-08 07:39:38 -05:00
Greyson Parrelli b1feb76535 Don't prevent multi-line when in 'enter is send' mode.
Fixes #14469
2026-01-08 07:39:37 -05:00
Greyson Parrelli a4b7804c9b Add a network debugging interface for regV5. 2026-01-08 07:39:37 -05:00
Alex Hart 18b2587936 Fix undersized additional action icon. 2025-12-19 16:57:52 -04:00
Alex Hart 1238151d73 CallGrid animation updates. 2025-12-19 16:57:52 -04:00
Greyson Parrelli c25f6d0bc4 Refactor regV5 navigation to remove some unnecessary layers. 2025-12-19 16:57:52 -04:00
Michelle Tang 2ca4748e00 Fix long press crash on long polls. 2025-12-19 16:57:52 -04:00
Alex Hart 1c30a8f38e Fix call link info display. 2025-12-19 16:57:51 -04:00
Alex Hart cd29a1715e Add nicer dropshadow to self-pip. 2025-12-19 16:57:51 -04:00
Alex Hart c9d0a11e85 Fix PictureInPicture fling behavior and simplify focused mode. 2025-12-19 16:57:51 -04:00
Michelle Tang 4d8ed34d94 Only animate on banner creation. 2025-12-19 16:57:51 -04:00
Michelle Tang d98f51395f Fix transparent banner line. 2025-12-19 16:57:51 -04:00
Greyson Parrelli 657a7d2a6b Simplify and improve the JumpToDateValidator. 2025-12-19 16:57:51 -04:00
Greyson Parrelli d6ade56233 Add PIN creation/entry to regV5. 2025-12-19 16:57:51 -04:00
Alex Hart d88a862e09 Bump version to 7.68.5 2025-12-19 16:55:53 -04:00
Alex Hart 9c06b07262 Update translations and other static files. 2025-12-19 16:52:18 -04:00
Cody Henthorne c5aedc7d85 Disable retry pending sends system. 2025-12-19 14:04:32 -05:00
Alex Hart b9c91d195d Bump version to 7.68.4 2025-12-15 16:39:50 -04:00
Alex Hart d4d32c2d36 Update translations and other static files. 2025-12-15 16:36:08 -04:00
Alex Hart b6538101df Update call quality string. 2025-12-15 16:11:22 -04:00
Alex Hart 7e4602863f Bump version to 7.68.3 2025-12-15 14:48:48 -04:00
Alex Hart 0cc35fe881 Update translations and other static files. 2025-12-15 14:44:35 -04:00
Greyson Parrelli 0620410072 Ensure that libraries use support for vectors.
Fixes crashes on API 23 devices.
2025-12-15 11:06:09 -05:00
Michelle Tang ea758edb5e Bump version to 7.68.2 2025-12-12 15:01:54 -05:00
Michelle Tang 1ded375f6f Update translations and other static files. 2025-12-12 14:55:18 -05:00
Cody Henthorne c67267b589 Properly calculate backup size when optimize media is enabled. 2025-12-12 14:17:17 -05:00
Cody Henthorne b1eba86445 Fix optimized media not viewable from All Media. 2025-12-12 12:52:19 -05:00
Cody Henthorne 53accdb446 Fix auto download for wifi restore bug. 2025-12-12 11:32:52 -05:00
Michelle Tang 3b40ae3ad3 Bump version to 7.68.1 2025-12-11 17:19:10 -05:00
Michelle Tang 298271fc2b Update translations and other static files. 2025-12-11 17:14:08 -05:00
Michelle Tang 7b965bac71 Fixing the preDecodeColorInfo methodology.
Co-authored-by: Milan Stevanovic <milan@signal.org>
2025-12-11 15:44:58 -05:00
Greyson Parrelli e930a0f8ac Do not include release notes in chat exports. 2025-12-11 15:43:22 -05:00
Michelle Tang 10133b16b3 Allow for optimized storage in production. 2025-12-10 17:53:24 -05:00
Greyson Parrelli f610c1a8b1 Fix exporting release note messages. 2025-12-10 16:58:09 -05:00
Michelle Tang e7aed3bab3 Bump version to 7.68.0 2025-12-10 14:55:48 -05:00
Michelle Tang 081ffe2c11 Update translations and other static files. 2025-12-10 14:49:09 -05:00
Michelle Tang 3e7b101dbf Update strings. 2025-12-10 14:41:07 -05:00
Alex Hart 0e50e9b26a Rotate call quality survey config value. 2025-12-10 14:41:07 -05:00
Cody Henthorne b7c9c53176 Enable the 'optimize storage' feature for production users. 2025-12-10 14:41:07 -05:00
Michelle Tang d75e9b7a4b Update strings. 2025-12-10 14:41:07 -05:00
Cody Henthorne a967cd8541 Fix TransferControlView showing play button on images bug. 2025-12-10 14:41:07 -05:00
Alex Hart ea42653ae8 Enable new calling UI for internal users by default. 2025-12-10 14:41:07 -05:00
Alex Hart 0ce5a2eb2b Fix in-call status. 2025-12-10 14:41:07 -05:00
Alex Hart e75d28cfca Implement new call grid that has animations. 2025-12-10 14:41:07 -05:00
Alex Hart 224503f6bb Add nicer call quality animation. 2025-12-10 14:41:07 -05:00
Cody Henthorne 86aa866626 Fix crash in internal backup settings on wipe and restore. 2025-12-10 14:41:07 -05:00
Alex Hart 067a22ff90 Fix crash when keyboard animation ends after view destroyed. 2025-12-10 14:41:07 -05:00
Michelle Tang 673cff8eed Send sync message when unpinning. 2025-12-10 14:41:07 -05:00
jeffrey-signal 413bdb7b38 Add optional git hook to run formatter pre-push. 2025-12-10 14:41:07 -05:00
Michelle Tang 5e81f9c720 Fix spacing between banner. 2025-12-10 14:41:07 -05:00
Cody Henthorne 22078bd774 Fix cancel offload restore banner showing complete bug. 2025-12-10 14:41:07 -05:00
jeffrey-signal c33716c7b5 Fix split pane UI not showing after registration on large screen devices. 2025-12-10 14:41:07 -05:00
Alex Hart 587c9cb46f Prevent users from continuing while issue is not specified. 2025-12-10 14:41:07 -05:00
Michelle Tang dda020b2bf Allow pinned messages to be resendable. 2025-12-10 14:41:07 -05:00
jeffrey-signal 6fba1b0153 Remove redundant total members count parameter from recipient picker callbacks. 2025-12-10 14:41:06 -05:00
Alex Hart cf04bf8018 Reactions / Raised hands position adjustment. 2025-12-10 14:41:06 -05:00
jeffrey-signal c1caff8005 Fix error when sending stories to unverified recipients. 2025-12-10 14:41:06 -05:00
Michelle Tang 04ccefbcf8 Do not allow pinning of gift badges. 2025-12-10 14:41:06 -05:00
Greyson Parrelli 6d32e534dc Fix any potentially stuck thumbnail uploads. 2025-12-10 14:41:06 -05:00
Cody Henthorne 293dcb93d6 Prevent backup restore service trashing for optimized restore. 2025-12-10 14:41:06 -05:00
Greyson Parrelli 6cb716516d Fix video color space transcoding issues.
Co-authored-by: Milan Stevanovic <milan@signal.org>
2025-12-10 14:41:06 -05:00
Alex Hart aa3079673f Clear focus when entering gateway selection during badge checkout. 2025-12-10 14:41:06 -05:00
Alex Hart 37e77a53f9 Various picture in picture updates. 2025-12-10 14:41:06 -05:00
Greyson Parrelli 7969df4e4c Add basic reglock support to regV5. 2025-12-10 14:41:06 -05:00
Greyson Parrelli 4b06e14df6 Add FCM token support to regV5. 2025-12-10 14:41:06 -05:00
jeffrey-signal da9c5edcc6 Fix share intent handling for multiple images with captions. 2025-12-05 09:50:55 -06:00
jeffrey-signal 109fc7f1fa Update ktlint to 1.5.0. 2025-12-05 09:48:22 -06:00
jeffrey-signal cc381513ef Hide find by username option from add to groups search results. 2025-12-04 12:45:43 -06:00
Alex Hart 1ad19a7d45 Utilzie url keyboard when entering text into the proxy input. 2025-12-04 14:24:27 -04:00
Michelle Tang 3185bb6031 Add animation to pinned messages. 2025-12-04 11:10:20 -06:00
jeffrey-signal 630c21b07a Fix spinner build. 2025-12-04 11:10:20 -06:00
Alex Hart 6594b8532e Call quality icons and config rotation. 2025-12-04 11:10:20 -06:00
Alex Hart c6de4c7650 Fix call screen timeout with remote video active. 2025-12-04 11:10:20 -06:00
Michelle Tang 7297f7a894 Handle offline state when pinning messages. 2025-12-04 11:10:20 -06:00
jeffrey-signal 0f5b790461 Update SignalIcons to support flexible icon sources.
Co-authored-by: Greyson Parrelli <greyson@signal.org>
2025-12-04 11:10:20 -06:00
Jordan Rose 783af42b1a Update to libsignal v0.86.6 (now on build-artifacts.signal.org) 2025-12-04 11:10:20 -06:00
Greyson Parrelli ab5426e6bb Fix possible invalid poll export. 2025-12-04 11:10:20 -06:00
Greyson Parrelli 464345ee5f Fix possible issue when exporting thread merge update. 2025-12-04 11:10:20 -06:00
Greyson Parrelli bafa9a26c6 Fix possible invalid username link export. 2025-12-04 11:10:20 -06:00
Greyson Parrelli 5d08906afd Support 'allow sealed sender from anyone' in archive. 2025-12-04 11:10:20 -06:00
jeffrey-signal a4dc4a8a1b Bump version to 7.67.1 2025-12-04 09:32:07 -06:00
jeffrey-signal 5a19ec10f5 Update translations and other static files. 2025-12-04 09:32:07 -06:00
jeffrey-signal 0a41bbd22d Sort unregistered accounts to the end of group members list in contacts search. 2025-12-04 09:32:07 -06:00
Alex Hart 2b4d5d74f2 Fix crash when no remote participants are available when analyzing call result. 2025-12-04 09:32:07 -06:00
Jim Gustafson fea836d20b Update to RingRTC v2.60.5 2025-12-04 09:32:06 -06:00
jeffrey-signal cbee088d09 Update README.md 2025-12-03 10:57:50 -06:00
jeffrey-signal 145b654533 Bump version to 7.67.0 2025-12-02 16:12:09 -06:00
jeffrey-signal 7a90e285b5 Update translations and other static files. 2025-12-02 16:07:50 -06:00
Greyson Parrelli c8b7bc2f5b fixup! Fix bug in job eligibility sorting after a job deletion. 2025-12-02 16:00:54 -06:00
Greyson Parrelli ba63a5255d Improve wifi detection to account for VPNs.
Fixes #14462
2025-12-02 16:00:54 -06:00
Greyson Parrelli 30e43e99fc Guard against invalid attachment states when copying to archive.
Fixes #14461
2025-12-02 16:00:54 -06:00
Greyson Parrelli 706d89db87 Introduce core-models module.
Needed to share some key components with feature modules without having
to depend on libsignal-service.
2025-12-02 16:00:54 -06:00
Alex Hart abf32bf6ff Always show pip in call. 2025-12-02 16:00:53 -06:00
Alex Hart 2a45e1cbf2 Upgrade compose bom to 2025.11.01 2025-12-02 16:00:53 -06:00
Michelle Tang 56e6c4ab34 Fix divider color. 2025-12-02 16:00:53 -06:00
Michelle Tang 4d782491f4 Fix banner color with wallpapers. 2025-12-02 16:00:53 -06:00
Alex Hart f41a0f8f97 Throw a retry error if we get an execution error while processing one-time donations. 2025-12-02 14:31:38 -06:00
Alex Hart 188f1c52a9 Fix keyboard animation when going back from emoji-search. 2025-12-02 14:31:38 -06:00
Alex Hart 559a665831 Add proper animation for call quality sheet. 2025-12-02 14:31:38 -06:00
Michelle Tang 8fd17fd909 Small UI fixes for pinned messages. 2025-12-02 14:31:38 -06:00
Michelle Tang 6d01fff7ee Fix dark theme color for pinned messages. 2025-12-02 14:31:38 -06:00
Michelle Tang 2d5a56a88a Support pinning of edited messages. 2025-12-02 14:31:38 -06:00
Alex Hart fbbcf30737 Fix IndexOutOfBounds crash in ComposeText.onMeasure 2025-12-02 14:31:38 -06:00
Jim Gustafson 3ba120cc10 Update to RingRTC v2.60.3 2025-12-02 14:31:38 -06:00
Alex Hart 81305bfc6b Only proceed with completion check if the id matches. 2025-12-02 14:31:37 -06:00
Alex Hart 6b7509d4f8 Add support extension for isInMultiWindowMode check. 2025-12-02 14:31:37 -06:00
Pekka Nikander 448dda37bf Publish Kotlin class outputs as SourceSet outputs for jdt.ls
- Resolves Java <-> Kotlin in VSCode
- Add build/classes/kotlin/{main,test} as SourceSet outputs (builtBy compileKotlin/compileTestKotlin)
- Improves VSCode Java (jdt.ls via Buildship) classpath so Java can resolve Kotlin symbols in same module
- Metadata-only; no change to packaging or runtime

Signed-off-by: Pekka Nikander <pekka.nikander@iki.fi>

Resolves #14355
2025-12-02 14:31:37 -06:00
Greyson Parrelli 2a21fe1784 Do not allow outgoing messages when backing up release notes. 2025-12-02 14:31:37 -06:00
jeffrey-signal f4c246eef0 Display existing group members in alphabetical order on add to groups screen. 2025-12-02 14:31:37 -06:00
Alex Hart 002d70496f Prevent call video from being turned off in multiwindow. 2025-12-02 14:31:37 -06:00
Alex Hart 61be2b92ba Fix emoji sizing on call reaction bar. 2025-12-02 14:31:37 -06:00
Alex Hart 54fb7ff23f Call quality survey integration. 2025-12-02 14:31:37 -06:00
Michelle Tang 804f479cb0 Add various fixes for pinned messages. 2025-12-02 14:31:37 -06:00
Michelle Tang 864867f60e Add go to indicator for pinned messages. 2025-12-02 14:31:37 -06:00
jeffrey-signal 8e2f2b8d1a Handle network errors gracefully during contacts refresh on new message and new call screens. 2025-12-02 14:31:37 -06:00
Jesse Wilson 38bc2b950f Convert SignalProxyUtil from Java to Kotlin.
Resolves #14453
2025-12-02 14:31:37 -06:00
Greyson Parrelli 37f67f9717 Add Mi 9T Pro to the voice note sample rate special handling.
Fixes #14452
2025-12-02 14:31:36 -06:00
Greyson Parrelli 5ea5279fbb Add initial registration v5 prototype. 2025-12-02 14:31:36 -06:00
jeffrey-signal 1a5163fc47 Fix recipient search bar configuration for add to groups screen. 2025-12-02 14:31:36 -06:00
Michelle Tang d2c3861ac7 Improve the pinned messages bottom sheet. 2025-12-02 14:31:36 -06:00
Jim Gustafson c9a0fb30b0 Add call summary support for all calls. 2025-12-02 14:31:36 -06:00
Michelle Tang 44ec15c0e0 Enforce correct permissions when pinning messages. 2025-12-02 14:31:36 -06:00
jeffrey-signal 40008bddc7 Fix position of message reaction overlay in RTL. 2025-12-02 14:31:36 -06:00
Michelle Tang 80598d42cc Add basic pinned message support. 2025-12-02 14:31:36 -06:00
Greyson Parrelli 22701da765 Update compileSdk to 36. 2025-12-02 14:31:36 -06:00
Alex Hart 7c9aa3de72 Add support for displaying spoiler text in compose. 2025-12-02 14:31:36 -06:00
Alex Hart b3b934e009 Address design feedback for calling UI. 2025-12-02 14:31:35 -06:00
andrew-signal acd82353b1 Patch bug rendering PAC file users unable to connect. 2025-12-02 14:31:35 -06:00
Cody Henthorne 87e56bf4bf Route system camera quick restore qr scan into Signal camera. 2025-12-02 14:31:35 -06:00
Greyson Parrelli 8783d69406 Update to latest backup tests. 2025-12-02 14:31:35 -06:00
Alex Hart ae4a3433f9 Set proper tier when writing to storage service. 2025-12-02 14:31:35 -06:00
jeffrey-signal a3aeceb041 Enable split pane UI for add to groups screen. 2025-12-02 14:31:35 -06:00
jeffrey-signal d4a03ae16b Prevent soft keyboard from covering recipient picker floating action button. 2025-12-02 14:31:35 -06:00
jeffrey-signal 4219e2d16f Simplify redundant split-pane window size class checks. 2025-12-02 14:31:35 -06:00
jeffrey-signal 1b77a523e4 Add split pane UI for add to groups screen. 2025-12-02 14:31:35 -06:00
Cody Henthorne 872c7c5ce2 Optimize more during low disk situations. 2025-12-02 14:31:34 -06:00
jeffrey-signal 8eef29cd77 Bump version to 7.66.5 2025-12-02 14:28:15 -06:00
jeffrey-signal 02f4867d8a Update translations and other static files. 2025-12-02 14:22:44 -06:00
jeffrey-signal 8e06637b4f Prevent soft keyboard from covering recipient picker floating action button. 2025-12-02 13:27:48 -06:00
Greyson Parrelli df07f4fee4 Bump version to 7.66.4 2025-11-28 13:57:25 -05:00
Greyson Parrelli 66c8790e1c Update translations and other static files. 2025-11-28 13:57:03 -05:00
Greyson Parrelli 2bf3ec60eb Fix deadlock with nested calls to runBlocking.
Fixes #14460
2025-11-28 13:39:54 -05:00
Greyson Parrelli fee062e727 Bump version to 7.66.3 2025-11-24 12:17:15 -05:00
Greyson Parrelli becacb5913 Update translations and other static files. 2025-11-24 12:16:29 -05:00
Alex Hart 7640dde28f Fix potential race and crash when deleting a call link. 2025-11-24 12:57:21 -04:00
Alex Hart 246abb9b80 Capture current URI before proceeding with null-check. 2025-11-24 10:47:46 -04:00
Alex Hart 03bbf196c8 Lock screen orientation after locking audio recorder. 2025-11-24 09:29:03 -04:00
Cody Henthorne c2ea1ba225 Bump version to 7.66.2 2025-11-21 15:28:27 -05:00
Cody Henthorne 8608942387 Update translations and other static files. 2025-11-21 15:27:55 -05:00
Cody Henthorne e80aecbb4c Fix crash when rendering shortcut avatars on buggy old versions of Android. 2025-11-21 11:57:27 -05:00
Greyson Parrelli 180dcb3a41 Fix potential platform-specific storage crash.
Fixes #14448
2025-11-21 11:46:05 -05:00
Cody Henthorne ac3fced0b4 Bump version to 7.66.1 2025-11-20 15:40:40 -05:00
Cody Henthorne 04ed3d0334 Update translations and other static files. 2025-11-20 15:37:43 -05:00
Cody Henthorne 1ad838d8ce Make restore dialogs not cancelable. 2025-11-20 13:40:45 -05:00
Cody Henthorne 25481b7408 Fix backup restore after captcha navigation bug. 2025-11-20 12:03:24 -05:00
Alex Hart cc3919244b Hide local user badge everywhere unless they have it enabled. 2025-11-20 11:18:44 -04:00
Cody Henthorne 9cd2838cbf Bump version to 7.66.0 2025-11-19 16:03:53 -05:00
Cody Henthorne cd3c0dc5c1 Update translations and other static files. 2025-11-19 15:52:14 -05:00
Cody Henthorne 8030be031f Redownload emoji search index if data is missing. 2025-11-19 15:44:53 -05:00
andrew-signal a3f1cc508e Bump to libsignal v0.86.4 2025-11-19 15:44:53 -05:00
Cody Henthorne d918e11cab Fix various issues with optimized media. 2025-11-19 15:44:53 -05:00
Alex Hart 6680e74cea Add 2s timeout to message notifier icon loading. 2025-11-19 15:44:53 -05:00
Alex Hart 0afa75564f Write voice recording data in 1s intervals to drafts. 2025-11-19 15:44:53 -05:00
Greyson Parrelli 7978cc668d Fix potential performance issues during backup attachment upload. 2025-11-19 15:44:53 -05:00
Greyson Parrelli eebf3e0836 Add backup support for theme and bar size settings. 2025-11-19 15:44:53 -05:00
Alex Hart cffc445048 Disable user input for tooltips to prevent long press from re-displaying tooltip. 2025-11-19 15:44:53 -05:00
Greyson Parrelli 412b014b13 Improve some backup strings. 2025-11-19 15:44:53 -05:00
jeffrey-signal 94241f7068 Enable split pane UI for add group members screen. 2025-11-19 15:44:53 -05:00
jeffrey-signal c851387f57 Add split pane UI for add group members screen. 2025-11-19 15:44:52 -05:00
Greyson Parrelli 16d5db3639 Exclude BackupMediaSnapshotTable from legacy local backups. 2025-11-19 15:44:52 -05:00
Alex Hart 69d2ad410f Rewrite layout for call participants to match new spec. 2025-11-19 15:44:52 -05:00
jeffrey-signal 9f0f8b7cbc Respect incognito keyboard setting in Compose UIs. 2025-11-19 15:44:52 -05:00
Alex Hart d5150d44e3 Fix on-back-pressed issue after navigating to search result. 2025-11-19 15:44:52 -05:00
Alex Hart b5f444d1cf Prevent errant click-through to settings button when search is open. 2025-11-19 15:44:52 -05:00
Alex Hart 8f83bf43af Fix back handling after a one-time donation is completed. 2025-11-19 15:44:52 -05:00
Alex Hart be3d231fcc Fix issue where bottom bar padding would only appear on second entry. 2025-11-19 15:44:52 -05:00
Cody Henthorne 8149c469c8 Fix payment activation messages being sent to wrong threads. 2025-11-19 15:44:52 -05:00
Cody Henthorne a3e3291d9c Fix websocket reconnect race due to async IMO termination. 2025-11-19 15:44:52 -05:00
Cody Henthorne 4efcf14b7a Fix unread count getting double incremented on new message. 2025-11-19 15:44:52 -05:00
Alex Hart be600f769d Add blurring for focused state for local call pip. 2025-11-19 15:44:52 -05:00
Greyson Parrelli 2a3888472f Ensure that restore status gets reset on failure. 2025-11-19 15:44:52 -05:00
Greyson Parrelli 9997ac2ef9 Improve backup progress compose previews. 2025-11-19 15:44:52 -05:00
Greyson Parrelli 925e46ff3a Add ability to force RTL to compose previews. 2025-11-19 15:44:52 -05:00
jeffrey-signal 0e46ab33e8 Centralize recipient lookup in RecipientRepository. 2025-11-19 15:44:52 -05:00
Alex Hart 2e1291b3c3 Add new focused state for the local calling pip. 2025-11-19 15:44:52 -05:00
Cody Henthorne 90fe924d18 Bump version to 7.65.4 2025-11-19 15:38:50 -05:00
Cody Henthorne 37179a9199 Update translations and other static files. 2025-11-19 15:33:45 -05:00
Alex Hart 12a0264e4b Post a request to apply insets after window is attached. 2025-11-19 14:27:34 -04:00
Michelle Tang 278030d950 Check against empty service ids. 2025-11-19 12:47:10 -05:00
Alex Hart 69b63a020c Add GooglePayComponent interface to MainActivity. 2025-11-19 10:23:18 -04:00
Greyson Parrelli 5ebbcc0e26 Bump version to 7.65.3 2025-11-18 20:15:50 -05:00
Greyson Parrelli ec86d6f8bd Update translations and other static files. 2025-11-18 20:15:22 -05:00
Greyson Parrelli caa0c26a54 Fix potential NPE with disappearing group updates. 2025-11-18 20:05:49 -05:00
Greyson Parrelli c46a005758 Fix bug in job eligibility sorting after a job deletion. 2025-11-18 19:58:45 -05:00
Cody Henthorne 92389284a5 Bump version to 7.65.2 2025-11-17 15:42:05 -05:00
Cody Henthorne 2ab04f67b9 Update translations and other static files. 2025-11-17 15:38:06 -05:00
Michelle Tang d0e09c0792 Update dark theme color for polls. 2025-11-17 15:11:45 -05:00
Alex Hart b316c6f29e Fix bottom bar. 2025-11-17 12:24:22 -04:00
Alex Hart 9798a11e51 Apply window insets to bottom action bar if they're not already consumed. 2025-11-17 12:24:22 -04:00
Alex Hart 6352271e31 Fix color of bottom bar when attachment keyboard is open. 2025-11-17 12:24:22 -04:00
Alex Hart 2e316cbea0 Ignore chat item long click if the list is null. 2025-11-17 12:24:22 -04:00
Michelle Tang a17bad36b2 Allow ending of a poll in single-member groups. 2025-11-17 10:10:10 -05:00
Michelle Tang 88b0e716e6 Trim polls text. 2025-11-17 10:09:56 -05:00
Michelle Tang 912489d1c8 Fix vote selection. 2025-11-17 10:09:37 -05:00
Alex Hart 5be3721869 Bump version to 7.65.1 2025-11-14 16:23:06 -04:00
Alex Hart 385efaaebd Update translations and other static files. 2025-11-14 16:20:33 -04:00
Alex Hart 46672dfed8 Remember and restore last pane selection. 2025-11-14 16:10:37 -04:00
Alex Hart 46596fe79e Require expanded width to be present for device to enter split pane. 2025-11-14 16:10:29 -04:00
Michelle Tang 9173aeabf2 Fix lint. 2025-11-14 12:53:10 -05:00
Michelle Tang 2c7beb9258 Center star when viewing results. 2025-11-14 12:36:14 -05:00
Michelle Tang 1abd09754f Make the whole row tappable. 2025-11-14 12:16:42 -05:00
Michelle Tang d5aba6cd9a Allow voting in one person group. 2025-11-13 17:35:43 -05:00
Michelle Tang 5ed4813331 Fix poll bugs. 2025-11-13 13:14:13 -05:00
Alex Hart 5bbc526923 Bump version to 7.65.0 2025-11-12 18:58:40 -04:00
Alex Hart e4224a5576 Update translations and other static files. 2025-11-12 16:47:07 -04:00
Alex Hart baf3309a04 Better insets propagation. 2025-11-12 16:36:58 -04:00
Greyson Parrelli dd8104bf61 Add error case for when you don't have enough disk space to create a backup. 2025-11-12 16:36:58 -04:00
jeffrey-signal ccdec5113f Fix missing group size limit warnings. 2025-11-12 16:36:58 -04:00
Michelle Tang bca406c8d3 Fix quotes of unsupported message. 2025-11-12 16:36:58 -04:00
Michelle Tang 1a4eabd074 Enable sending of polls. 2025-11-12 16:36:58 -04:00
Michelle Tang 7e4085b9a9 Separate end poll strings. 2025-11-12 16:36:58 -04:00
Greyson Parrelli 7adcc466ad Prepare to show backups megaphone to beta users. 2025-11-12 16:36:58 -04:00
Greyson Parrelli ad45ca1fcc Update to the latest backup tests. 2025-11-11 15:37:23 -05:00
Greyson Parrelli a5d5770f2e Avoid the possibility of double-exporting a recipient. 2025-11-11 15:29:22 -05:00
Greyson Parrelli b047f8bc0a Attempt backing up a subset of messages if you hit the limit. 2025-11-11 14:48:09 -05:00
Cody Henthorne f4e82e6aab Fix change number problems. 2025-11-11 13:55:08 -05:00
Michelle Tang 70cf74ff4f Minor poll UI fixes. 2025-11-11 11:22:55 -05:00
Alex Hart 7d4da76895 Be a bit smarter about choosing our anchor to animate to. 2025-11-10 13:19:24 -04:00
Greyson Parrelli 62b0e21f67 Fix possible NPE when dismissing emoji popup. 2025-11-10 12:04:18 -05:00
Greyson Parrelli 2147ad29fa Move all Pair usage to kotlin.Pair 2025-11-10 12:03:24 -05:00
Alex Hart 66f136903f Ensure gift flow can be created from any fragment it's initialised in. 2025-11-10 12:58:45 -04:00
Alex Hart e87aa22d32 Don't show 'Payment Pending' during backup subscription keep-alive flows. 2025-11-10 12:51:18 -04:00
Alex Hart ddaabafe44 Reduce the timeout for the popup window and allow users to click to dismiss. 2025-11-10 12:02:21 -04:00
Alex Hart 2225a14e13 Allow users to confirm link preview on text story before it loads. 2025-11-10 11:36:54 -04:00
Alex Hart b9a999b0d0 Do nothing if the error returned is SETUP_CANCELLED. 2025-11-10 10:52:19 -04:00
Alex Hart 76b1f3451b RTL fix for donations receipts. 2025-11-10 10:00:47 -04:00
jeffrey-signal a97dca7b44 Fix edited message attachments stuck in download state. 2025-11-07 16:55:35 -05:00
Jordan Rose b2e547f9f2 Update to libsignal 0.86.1 2025-11-07 16:34:31 -05:00
Greyson Parrelli 945453cb81 Refactor backup creation failures, add case for file too large. 2025-11-07 15:20:05 -05:00
Alex Hart ad0b240550 Convert CallParticipantId to Kotlin. 2025-11-07 15:20:05 -05:00
Alex Hart dd8f36f280 Implement CallParticiantsUpdatePopup in compose. 2025-11-07 15:20:05 -05:00
Alex Hart 632aec423f Convert InternalDonorErrorConfigurationFragment to Compose. 2025-11-07 15:20:05 -05:00
Alex Hart d241aebade Convert WhoCanFindMeByPhoneNumber to StateFlow. 2025-11-07 15:20:05 -05:00
Alex Hart ba378d28f4 Inline large-screen internal setting and remove it. 2025-11-07 15:20:05 -05:00
Alex Hart 696dba9dee Add callbacks to tiny local video renderer. 2025-11-07 15:20:05 -05:00
Greyson Parrelli 44527f3763 Add a DiskSpaceNotLowConstraint and use for automatic attachment restore. 2025-11-07 15:20:05 -05:00
Alex Hart be5500e990 Display large local renderer in ongoing group call if no other users are joined. 2025-11-07 15:20:05 -05:00
jeffrey-signal 0c3a77f75a Move RecipientPicker to recipients package. 2025-11-07 15:20:05 -05:00
jeffrey-signal 6bf2efd96c Remove excess bottom padding in landscape when using gesture navigation. 2025-11-07 15:20:05 -05:00
Greyson Parrelli c8e0ba8194 Reduce error noise when failing to restore an attachment that was intentionally never uploaded. 2025-11-07 15:20:05 -05:00
Alex Hart 0c0e1600e6 Formatting. 2025-11-07 15:20:05 -05:00
Alex Hart 4be3a58f96 Formatting. 2025-11-07 15:20:05 -05:00
Greyson Parrelli 72206b9523 Add debugging info around used disk space. 2025-11-07 15:20:05 -05:00
Alex Hart 2fad52abdc Convert InternalStoryDialogLauncherFragment to Compose. 2025-11-07 15:20:05 -05:00
Michelle Tang 4040b3badd Fix see all button when viewing votes. 2025-11-07 15:20:05 -05:00
jeffrey-signal a96a0a7009 Enable split pane UI for new call screen. 2025-11-07 15:20:05 -05:00
Greyson Parrelli 75346c3f6b Only mark exported attachment as wasDownloaded if plaintextHash present. 2025-11-07 15:20:05 -05:00
Michelle Tang 4c00337b1a Only write binary ids in staging. 2025-11-07 15:20:05 -05:00
jeffrey-signal 27e6ecb2a0 Add reusable scaffold for recipient picker screens. 2025-11-07 15:20:04 -05:00
Alex Hart cf14101a24 Fix saved-state issue in TriggerAlignedPopup. 2025-11-07 15:20:04 -05:00
Greyson Parrelli 5d5c8803bd Fix notification profile export. 2025-11-07 15:20:04 -05:00
4074 changed files with 234663 additions and 84699 deletions
+9 -10
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
View File
@@ -32,3 +32,4 @@ maps.key
/local/
kls_database.db
.kotlin
lefthook-local.yml
+1 -1
View File
@@ -62,7 +62,7 @@ You will need to [sign our CLA](https://signal.org/cla/) before your pull reques
### Follow the Code Style Guidelines
Ensure that your code adheres to the [Code Style Guidelines](https://github.com/signalapp/Signal-Android/wiki/Code-Style-Guidelines) before submitting a pull request.
You can run `./gradlew format` to automatically check conformance with some of these guidelines.
You can run `./gradlew format` to automatically format your code. See `lefthook.yml` for instructions on how to run this as a git hook.
### Submit finished and well-tested pull requests
Please do not submit pull requests that are still a work in progress. Pull requests should be thoroughly tested and ready to merge before they are submitted.
+13 -4
View File
@@ -1,14 +1,18 @@
# Signal Android
Signal is a simple, powerful, and secure messenger.
Signal is a simple, powerful, and secure messenger that uses your phone's data connection (WiFi/3G/4G/5G) to communicate securely.
Signal uses your phone's data connection (WiFi/3G/4G/5G) to communicate securely. Millions of people use Signal every day for free and instantaneous communication anywhere in the world. Send and receive high-fidelity messages, participate in HD voice/video calls, and explore a growing set of new features that help you stay connected. Signals advanced privacy-preserving technology is always enabled, so you can focus on sharing the moments that matter with the people who matter to you.
Millions of people use Signal every day for free and instantaneous communication anywhere in the world. Send and receive high-fidelity messages, participate in HD voice/video calls, and explore a growing set of new features that help you stay connected.
Currently available on the Play Store and [signal.org](https://signal.org/android/apk/).
Signals advanced privacy-preserving technology is always enabled, so you can focus on sharing the moments that matter with the people who matter to you.
Currently available on the [Play Store](https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms) and [signal.org](https://signal.org/android/apk/).
<a href='https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height='80px'/></a>
## Contributing Bug reports
Also available on [iOS](https://github.com/signalapp/signal-ios) and [Desktop](https://github.com/signalapp/signal-desktop).
## Contributing Bug Reports
We use GitHub for bug tracking. Please search the existing issues for your bug and create a new one if the issue is not yet tracked!
https://github.com/signalapp/Signal-Android/issues
@@ -21,6 +25,11 @@ https://play.google.com/apps/testing/org.thoughtcrime.securesms
If you're interested in a life of peace and tranquility, stick with the standard releases.
## Contributing Translations
Interested in helping translate Signal? Contribute here:
https://community.signalusers.org/c/translation-feedback/
## Contributing Code
If you're new to the Signal codebase, we recommend going through our issues and picking out a simple bug to fix in order to get yourself familiar. Also please have a look at the [CONTRIBUTING.md](https://github.com/signalapp/Signal-Android/blob/main/CONTRIBUTING.md), that might answer some of your questions.
+292 -144
View File
@@ -2,9 +2,6 @@
import com.android.build.api.dsl.ManagedVirtualDevice
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import java.io.FileInputStream
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Properties
plugins {
@@ -13,6 +10,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")
@@ -22,12 +20,33 @@ plugins {
apply(from = "static-ips.gradle.kts")
val canonicalVersionCode = 1614
val canonicalVersionName = "7.64.2"
val canonicalVersionCode = 1655
val canonicalVersionName = "8.0.3"
val currentHotfixVersion = 0
val maxHotfixVersions = 100
val keystores: Map<String, Properties?> = mapOf("debug" to loadKeystoreProperties("keystore.debug.properties"))
// We don't want versions to ever end in 0 so that they don't conflict with nightly versions
val possibleHotfixVersions = (0 until maxHotfixVersions).toList().filter { it % 10 != 0 }
val debugKeystorePropertiesProvider = providers.of(PropertiesFileValueSource::class.java) {
parameters.file.set(rootProject.layout.projectDirectory.file("keystore.debug.properties"))
}
val languagesProvider = providers.of(LanguageListValueSource::class.java) {
parameters.resDir.set(layout.projectDirectory.dir("src/main/res"))
}
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 selectableVariants = listOf(
"nightlyBackupRelease",
@@ -40,6 +59,8 @@ val selectableVariants = listOf(
"playProdSpinner",
"playProdCanary",
"playProdPerf",
"playProdMocked",
"playProdNonMinifiedMocked",
"playProdBenchmark",
"playProdInstrumentation",
"playProdRelease",
@@ -49,18 +70,14 @@ val selectableVariants = listOf(
"playStagingPerf",
"playStagingInstrumentation",
"playStagingRelease",
"playProdQuickstart",
"playStagingQuickstart",
"websiteProdSpinner",
"websiteProdRelease"
"websiteProdRelease",
"githubProdSpinner",
"githubProdRelease"
)
val signalBuildToolsVersion: String by rootProject.extra
val signalCompileSdkVersion: String by rootProject.extra
val signalTargetSdkVersion: Int by rootProject.extra
val signalMinSdkVersion: Int by rootProject.extra
val signalNdkVersion: String by rootProject.extra
val signalJavaVersion: JavaVersion by rootProject.extra
val signalKotlinJvmTarget: String by rootProject.extra
wire {
kotlin {
javaInterop = true
@@ -71,22 +88,22 @@ wire {
}
protoPath {
srcDir("${project.rootDir}/libsignal-service/src/main/protowire")
srcDir("${project.rootDir}/lib/libsignal-service/src/main/protowire")
}
// Handled by libsignal
prune("signalservice.DecryptionErrorMessage")
}
ktlint {
version.set("1.2.1")
version.set("1.5.0")
}
android {
namespace = "org.thoughtcrime.securesms"
buildToolsVersion = signalBuildToolsVersion
compileSdkVersion = signalCompileSdkVersion
ndkVersion = signalNdkVersion
buildToolsVersion = libs.versions.buildTools.get()
compileSdkVersion = libs.versions.compileSdk.get()
ndkVersion = libs.versions.ndk.get()
flavorDimensions += listOf("distribution", "environment")
testBuildType = "instrumentation"
@@ -94,12 +111,12 @@ android {
android.bundle.language.enableSplit = false
kotlinOptions {
jvmTarget = signalKotlinJvmTarget
jvmTarget = libs.versions.kotlinJvmTarget.get()
freeCompilerArgs = listOf("-Xjvm-default=all")
suppressWarnings = true
}
keystores["debug"]?.let { properties ->
debugKeystorePropertiesProvider.orNull?.let { properties ->
signingConfigs.getByName("debug").apply {
storeFile = file("${project.rootDir}/${properties.getProperty("storeFile")}")
storePassword = properties.getProperty("storePassword")
@@ -139,8 +156,8 @@ android {
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = signalJavaVersion
targetCompatibility = signalJavaVersion
sourceCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
targetCompatibility = JavaVersion.toVersion(libs.versions.javaVersion.get())
}
packaging {
@@ -162,7 +179,8 @@ android {
"META-INF/LICENSE-notice.md",
"META-INF/proguard/androidx-annotations.pro",
"**/*.dylib",
"**/*.dll"
"**/*.dll",
"**/*.proto"
)
}
}
@@ -178,11 +196,14 @@ android {
}
defaultConfig {
versionCode = (canonicalVersionCode * maxHotfixVersions) + currentHotfixVersion
if (currentHotfixVersion >= maxHotfixVersions) {
throw AssertionError("Hotfix version offset is too large!")
}
versionCode = (canonicalVersionCode * maxHotfixVersions) + possibleHotfixVersions[currentHotfixVersion]
versionName = canonicalVersionName
minSdk = signalMinSdkVersion
targetSdk = signalTargetSdkVersion
minSdk = libs.versions.minSdk.get().toInt()
targetSdk = libs.versions.targetSdk.get().toInt()
vectorDrawables.useSupportLibrary = true
project.ext.set("archivesBaseName", "Signal")
@@ -215,13 +236,13 @@ 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\"")
buildConfigField("String", "BACKUP_SERVER_PUBLIC_PARAMS", "\"AJwNSU55fsFCbgaxGRD11wO1juAs8Yr5GF8FPlGzzvdJJIKH5/4CC7ZJSOe3yL2vturVaRU2Cx0n751Vt8wkj1bozK3CBV1UokxV09GWf+hdVImLGjXGYLLhnI1J2TWEe7iWHyb553EEnRb5oxr9n3lUbNAJuRmFM7hrr0Al0F0wrDD4S8lo2mGaXe0MJCOM166F8oYRQqpFeEHfiLnxA1O8ZLh7vMdv4g9jI5phpRBTsJ5IjiJrWeP0zdIGHEssUeprDZ9OUJ14m0v61eYJMKsf59Bn+mAT2a7YfB+Don9O\"")
buildConfigField("String[]", "LANGUAGES", "new String[]{ ${languageList().map { "\"$it\"" }.joinToString(separator = ", ")} }")
buildConfigField("String[]", "LANGUAGES", "new String[]{ ${languagesForBuildConfigProvider.get()} }")
buildConfigField("int", "CANONICAL_VERSION_CODE", "$canonicalVersionCode")
buildConfigField("String", "DEFAULT_CURRENCIES", "\"EUR,AUD,GBP,CAD,CNY\"")
buildConfigField("String", "GIPHY_API_KEY", "\"3o6ZsYH6U6Eri53TXy\"")
@@ -238,6 +259,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", "false")
ndk {
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
@@ -259,7 +281,7 @@ android {
buildTypes {
getByName("debug") {
if (keystores["debug"] != null) {
if (debugKeystorePropertiesProvider.orNull != null) {
signingConfig = signingConfigs["debug"]
}
isDefault = true
@@ -336,8 +358,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") {
@@ -347,6 +386,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 {
@@ -365,17 +412,18 @@ android {
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"website\"")
}
create("nightly") {
val apkUpdateManifestUrl = if (file("${project.rootDir}/nightly-url.txt").exists()) {
file("${project.rootDir}/nightly-url.txt").readText().trim()
} else {
"<unset>"
}
create("github") {
dimension = "distribution"
versionNameSuffix = "-nightly-untagged-${getDateSuffix()}"
buildConfigField("boolean", "MANAGES_APP_UPDATES", "true")
buildConfigField("String", "APK_UPDATE_MANIFEST_URL", "\"${apkUpdateManifestUrl}\"")
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()}"
buildConfigField("boolean", "MANAGES_APP_UPDATES", "false")
buildConfigField("String", "APK_UPDATE_MANIFEST_URL", "null")
buildConfigField("String", "BUILD_DISTRIBUTION_TYPE", "\"nightly\"")
buildConfigField("boolean", "LINK_DEVICE_UX_ENABLED", "true")
}
@@ -401,8 +449,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\"")
@@ -436,42 +484,61 @@ android {
ignoreWarnings = true
quiet = true
disable += "LintError"
}
applicationVariants.all {
outputs
.map { it as com.android.build.gradle.internal.api.ApkVariantOutputImpl }
.forEach { output ->
if (output.baseName.contains("nightly")) {
var tag = getCurrentGitTag()
if (!tag.isNullOrEmpty()) {
if (tag.startsWith("v")) {
tag = tag.substring(1)
}
output.versionNameOverride = tag
output.outputFileName = output.outputFileName.replace(".apk", "-${output.versionNameOverride}.apk")
} else {
output.outputFileName = output.outputFileName.replace(".apk", "-$versionName.apk")
}
} else {
output.outputFileName = output.outputFileName.replace(".apk", "-$versionName.apk")
if (currentHotfixVersion >= maxHotfixVersions) {
throw AssertionError("Hotfix version is too large!")
}
}
}
lintConfig = rootProject.file("lint.xml")
}
androidComponents {
beforeVariants { variant ->
variant.enable = variant.name in selectableVariants
}
onVariants { variant ->
onVariants(selector().all()) { variant: com.android.build.api.variant.ApplicationVariant ->
// Include the test-only library on debug builds.
if (variant.buildType != "instrumentation") {
variant.packaging.jniLibs.excludes.add("**/libsignal_jni_testing.so")
}
// 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) || variant.name.contains("github", ignoreCase = true)) {
variant.packaging.jniLibs.useLegacyPackaging.set(true)
}
// Version overrides
if (variant.name.contains("nightly", ignoreCase = true)) {
var tag = getNightlyTagForCurrentCommit()
if (!tag.isNullOrEmpty()) {
if (tag.startsWith("v")) {
tag = tag.substring(1)
}
// We add a multiple of maxHotfixVersions to nightlies to ensure we're always at least that many versions ahead
val nightlyBuffer = (5 * maxHotfixVersions)
val nightlyVersionCode = (canonicalVersionCode * maxHotfixVersions) + (getNightlyBuildNumber(tag) * 10) + nightlyBuffer
variant.outputs.forEach { output ->
output.versionName.set(tag)
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 }
}
}
@@ -484,6 +551,40 @@ 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) {
outputFileName = outputFileName.replace(".apk", "-$versionName.apk")
}
}
}
}
baselineProfile {
warnings {
disabledVariants = false
}
mergeIntoMain = true
variants.create("mocked") {
from(project(":baseline-profile"))
}
dexLayoutOptimization = false
}
dependencies {
@@ -491,20 +592,25 @@ dependencies {
ktlintRuleset(libs.ktlint.twitter.compose)
coreLibraryDesugaring(libs.android.tools.desugar)
implementation(project(":libsignal-service"))
implementation(project(":paging"))
implementation(project(":core-util"))
implementation(project(":glide-config"))
implementation(project(":video"))
implementation(project(":device-transfer"))
implementation(project(":image-editor"))
implementation(project(":donations"))
implementation(project(":debuglogs-viewer"))
implementation(project(":contacts"))
implementation(project(":qr"))
implementation(project(":sticky-header-grid"))
implementation(project(":photoview"))
implementation(project(":core-ui"))
implementation(project(":lib:libsignal-service"))
implementation(project(":lib:paging"))
implementation(project(":core:util"))
implementation(project(":lib:glide"))
implementation(project(":lib:video"))
implementation(project(":lib:device-transfer"))
implementation(project(":lib:image-editor"))
implementation(project(":lib:donations"))
implementation(project(":lib:debuglogs-viewer"))
implementation(project(":lib:contacts"))
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) {
@@ -528,6 +634,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)
@@ -604,9 +712,10 @@ dependencies {
implementation(libs.androidx.credentials.compat)
implementation(libs.kotlinx.serialization.json)
implementation(project(":billing"))
implementation(project(":lib:billing"))
implementation(project(":feature:media-send"))
"spinnerImplementation"(project(":spinner"))
"spinnerImplementation"(project(":lib:spinner"))
"canaryImplementation"(libs.square.leakcanary)
@@ -632,7 +741,7 @@ dependencies {
}
testImplementation(testLibs.conscrypt.openjdk.uber)
testImplementation(testLibs.mockk)
testImplementation(testFixtures(project(":libsignal-service")))
testImplementation(testFixtures(project(":lib:libsignal-service")))
testImplementation(testLibs.espresso.core)
testImplementation(testLibs.kotlinx.coroutines.test)
testImplementation(libs.androidx.compose.ui.test.junit4)
@@ -653,31 +762,29 @@ dependencies {
androidTestUtil(testLibs.androidx.test.orchestrator)
}
fun assertIsGitRepo() {
if (!file("${project.rootDir}/.git").exists()) {
throw IllegalStateException("Must be a git repository to guarantee reproducible builds! (git hash is part of APK)")
tasks.withType<Test>().configureEach {
testLogging {
events("failed")
exceptionFormat = TestExceptionFormat.FULL
showCauses = true
showExceptions = true
showStackTraces = true
}
}
fun getLastCommitTimestamp(): String {
assertIsGitRepo()
return providers.exec {
commandLine("git", "log", "-1", "--pretty=format:%ct")
}.standardOutput.asText.get() + "000"
}
fun getGitHash(): String {
assertIsGitRepo()
return providers.exec {
commandLine("git", "rev-parse", "HEAD")
}.standardOutput.asText.get().trim().substring(0, 12)
}
fun getCurrentGitTag(): String? {
assertIsGitRepo()
fun getNightlyTagForCurrentCommit(): String? {
val output = providers.exec {
commandLine("git", "tag", "--points-at", "HEAD")
}.standardOutput.asText.get().trim()
@@ -690,65 +797,106 @@ fun getCurrentGitTag(): String? {
}
}
tasks.withType<Test>().configureEach {
testLogging {
events("failed")
exceptionFormat = TestExceptionFormat.FULL
showCauses = true
showExceptions = true
showStackTraces = true
fun getNightlyBuildNumber(tag: String?): Int {
if (tag == null) {
return 0
}
}
gradle.taskGraph.whenReady {
if (gradle.startParameter.taskNames.any { it.contains("nightly", ignoreCase = true) }) {
if (!file("${project.rootDir}/nightly-url.txt").exists()) {
throw GradleException("Missing required file: nightly-url.txt")
}
}
}
fun loadKeystoreProperties(filename: String): Properties? {
val keystorePropertiesFile = file("${project.rootDir}/$filename")
return if (keystorePropertiesFile.exists()) {
val keystoreProperties = Properties()
keystoreProperties.load(FileInputStream(keystorePropertiesFile))
keystoreProperties
} else {
null
}
}
fun getDateSuffix(): String {
return SimpleDateFormat("yyyy-MM-dd-HH:mm").format(Date())
val match = Regex("-(\\d{3})$").find(tag)
return match?.groupValues?.get(1)?.toIntOrNull() ?: 0
}
fun getMapsKey(): String {
val mapKey = file("${project.rootDir}/maps.key")
return providers
.gradleProperty("mapsKey")
.orElse(providers.environmentVariable("MAPS_KEY"))
.orElse("AIzaSyCSx9xea86GwDKGznCAULE9Y5a8b-TfN9U")
.get()
}
return if (mapKey.exists()) {
mapKey.readLines()[0]
} else {
"AIzaSyCSx9xea86GwDKGznCAULE9Y5a8b-TfN9U"
abstract class LanguageListValueSource : ValueSource<List<String>, LanguageListValueSource.Params> {
interface Params : ValueSourceParameters {
@get:InputDirectory
@get:PathSensitive(PathSensitivity.RELATIVE)
val resDir: DirectoryProperty
}
override fun obtain(): List<String> {
// In API 35, language codes for Hebrew and Indonesian now use the ISO 639-1 code ("he" and "id").
// However, the value resources still only support the outdated code ("iw" and "in") so we have
// to manually indicate that we support these languages.
val updatedLanguageCodes = listOf("he", "id")
val resRoot = parameters.resDir.asFile.get()
val languages = resRoot
.walkTopDown()
.filter { it.isFile && it.name == "strings.xml" }
.mapNotNull { stringFile -> stringFile.parentFile?.name }
.map { valuesFolderName -> valuesFolderName.removePrefix("values-") }
.filter { valuesFolderName -> valuesFolderName != "values" }
.map { languageCode -> languageCode.replace("-r", "_") }
.toList()
.distinct()
.sorted()
return languages + updatedLanguageCodes + "en"
}
}
fun Project.languageList(): List<String> {
// In API 35, language codes for Hebrew and Indonesian now use the ISO 639-1 code ("he" and "id").
// However, the value resources still only support the outdated code ("iw" and "in") so we have
// to manually indicate that we support these languages.
val updatedLanguageCodes = listOf("he", "id")
abstract class PropertiesFileValueSource : ValueSource<Properties?, PropertiesFileValueSource.Params> {
interface Params : ValueSourceParameters {
@get:InputFile
@get:Optional
@get:PathSensitive(PathSensitivity.RELATIVE)
val file: RegularFileProperty
}
return fileTree("src/main/res") { include("**/strings.xml") }
.map { stringFile -> stringFile.parentFile.name }
.map { valuesFolderName -> valuesFolderName.replace("values-", "") }
.filter { valuesFolderName -> valuesFolderName != "values" }
.map { languageCode -> languageCode.replace("-r", "_") }
.distinct()
.sorted() + updatedLanguageCodes + "en"
override fun obtain(): Properties? {
val f: File = parameters.file.asFile.get()
if (!f.exists()) return null
return Properties().apply {
f.inputStream().use { load(it) }
}
}
}
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)
}
}

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