Compare commits

...

1654 Commits

Author SHA1 Message Date
adbenitez dc4ee3f686 Merge remote-tracking branch 'upstream/main' 2026-04-17 20:52:30 +02:00
link2xt 18595cbee1 Run nix flake update
This fixes some deprecation warnings.
I used it to build the app after update,
it still works.
2026-04-17 18:08:53 +00:00
adb dc78307df7 Merge pull request #4335 from deltachat/adb/re-enable-full-screen-intent-perm
get calls out of experimental
2026-04-14 18:23:39 +02:00
adbenitez 86a9cbfb45 update changelog 2026-04-14 18:19:52 +02:00
adb 623b20f713 Merge branch 'main' into adb/re-enable-full-screen-intent-perm 2026-04-14 18:12:05 +02:00
adb 5f4eae798f Merge pull request #4359 from deltachat/prep-2.49.0
prepare 2.49.0
2026-04-13 16:39:18 +02:00
adbenitez 4a8609822d prepare 2.49.0 2026-04-13 16:23:27 +02:00
adb 89ddc1e01f Merge pull request #4358 from deltachat/update-core-and-stuff-2026-04-13
Update core to 2.49.0
2026-04-13 16:20:44 +02:00
adbenitez 0ce42578fa update changelog 2026-04-13 15:44:42 +02:00
adbenitez faa7ad0a35 update translations 2026-04-13 15:44:33 +02:00
adbenitez 38e8ceb253 update RPC 2026-04-13 15:33:58 +02:00
adbenitez a32460f253 update deltachat-core-rust to 'chore(release): prepare for 2.49.0' of 'v2.49.0' 2026-04-13 15:29:06 +02:00
adbenitez 198268a4c3 Merge remote-tracking branch 'upstream/main' 2026-04-11 14:35:01 +02:00
adb 71158970ae Merge pull request #4357 from deltachat/wch423/external-cache-fix
Add fallback for getExternalCacheDir() in case primary storage is SD
2026-04-10 18:40:34 +02:00
wch423 1383b06e86 Add fallback for getExternalCacheDir() in case primary storage is SD card 2026-04-10 15:36:56 +02:00
B. Petersen 24165e311b deprecate sticker string, pointing to deeply nested profile folder 2026-04-09 17:34:14 +02:00
adb 5ec892db34 Merge pull request #4352 from deltachat/wch423/call-microphone-permission
Refine call permission checks and gates
2026-04-08 20:46:21 +02:00
wch423 caef7eda29 Add fixes for PiP caused bug and potential Android 16 problem with permission popups 2026-04-08 18:21:49 +02:00
wch423 cf53af4778 Refine permission checks and gates 2026-04-08 16:08:14 +02:00
adb 415e0c2b5f Merge branch 'main' into adb/re-enable-full-screen-intent-perm 2026-04-03 17:55:46 +02:00
adbenitez 9a22597473 delete zapstore 2026-04-03 17:18:08 +02:00
adb acb4eb2ae1 Merge pull request #4334 from deltachat/adb/issue-4316
remove proxy switch from EditRelayActivity
2026-04-01 00:14:06 +02:00
wchen342 20c0354938 Merge pull request #4336 from deltachat/wch423/call-multidevice-incoming
Fix wrong states when an incoming call is answered on a second device
2026-03-31 17:36:30 -04:00
adbenitez eac112d602 update changelog 2026-03-31 23:09:29 +02:00
wch423 9b4f659f67 Fix crash when an incoming call is answered on a second device 2026-03-31 17:17:11 +02:00
adbenitez 0166d4e656 remove "Debug Calls" 2026-03-31 16:20:16 +02:00
adbenitez 92b3761d2d re-enable full intent permission 2026-03-31 15:59:22 +02:00
adbenitez 484cee21c6 apply Spotless 2026-03-31 15:24:03 +02:00
adbenitez 0e40318050 rmeove proxy switch from EditRelayActivity 2026-03-31 15:15:02 +02:00
wchen342 b2cc76ff2e Merge pull request #4333 from deltachat/wch423/call-mirror-self
Mirror self video during call
2026-03-30 13:24:01 -04:00
adb 96acaaf000 Merge pull request #4332 from deltachat/adb/remove-deprecated-stock-str-2026-03-30
remove deprecated stock strings 99 and 100
2026-03-30 18:44:31 +02:00
adbenitez 400e5ea671 Merge branch 'adb/remove-deprecated-stock-str-2026-03-30' of https://github.com/deltachat/deltachat-android into adb/remove-deprecated-stock-str-2026-03-30 2026-03-30 18:41:03 +02:00
adbenitez 4fac460926 remove unused strings 2026-03-30 18:40:44 +02:00
wch423 94a5631566 Fix camera iterating through multiple back cameras; Formatting code 2026-03-30 18:00:39 +02:00
wch423 ea91075107 Mirror self video during calls; Minor thread-safe fixes 2026-03-30 17:29:43 +02:00
adbenitez 0c7b82b9e4 Merge remote-tracking branch 'upstream/main' 2026-03-30 16:27:17 +02:00
adb d765d3ddeb Merge branch 'main' into adb/remove-deprecated-stock-str-2026-03-30 2026-03-30 16:01:06 +02:00
adbenitez 094fb1e2a4 remove deprecated stock strings 99 and 100 2026-03-30 15:47:35 +02:00
wchen342 f7244c2152 Merge pull request #4323 from deltachat/wch423/fix-file-sharing
Fix file sharing to certain apps
2026-03-30 09:38:02 -04:00
wch423 2b5d1005e3 Fix missing query method in AttachmentsContentProvider 2026-03-30 15:32:50 +02:00
adb b1eadf0716 Merge pull request #4331 from deltachat/prep-2.48.0
prepare 2.48.0
2026-03-30 15:27:07 +02:00
adbenitez c001c13053 prepare 2.48.0 2026-03-30 15:15:25 +02:00
adb ea4ec343bc Merge pull request #4330 from deltachat/update-core-and-stuff-2026-03-30
update core to 2.48.0
2026-03-30 15:10:46 +02:00
adb 5642e86f6a Merge branch 'main' into update-core-and-stuff-2026-03-30 2026-03-30 14:56:05 +02:00
adbenitez 46db14fc3e update changelog 2026-03-30 14:54:53 +02:00
adbenitez 0f6d9670ff update RPC 2026-03-30 14:45:47 +02:00
adbenitez 4c3c24ae5a update translations 2026-03-30 14:45:16 +02:00
B. Petersen eeb558d94d sticker alerts: do not repeat text in title and message
moreover, the "Delete" button is shown as being destructive.
this removes noise and is more consistent with other confirmations.
2026-03-30 14:33:50 +02:00
adbenitez 5e08f56dd3 update deltachat-core-rust to 'chore(release): prepare for 2.48.0' of 'v2.48.0' 2026-03-30 14:11:27 +02:00
biörn d99f150dd2 relay update warning (#4325)
* add a warning to the existing hint; desktop and iOS will pick that up without code changes

* add hint to the relay list

* add padding

* move relay up

* update CHANGELOG

* make spotless happy
2026-03-28 19:36:28 +01:00
adbenitez 82b3100570 Merge remote-tracking branch 'upstream/main' 2026-03-26 19:37:59 +01:00
B. Petersen 348b6fd3c1 update store descriptions 2026-03-26 15:38:57 +01:00
adb c2f492463f Merge pull request #4321 from deltachat/prep-2.47.0
prepare 2.47.0
2026-03-24 17:35:18 +01:00
adbenitez 38239b2644 prepare 2.47.0 2026-03-24 16:37:41 +01:00
adb 4b996c95de Merge pull request #4320 from deltachat/update-core-and-stuff-2026-03-24
Update core 2.47.0
2026-03-24 16:35:18 +01:00
adbenitez 89d90efcef update changelog 2026-03-24 16:05:36 +01:00
adb d5b4bae502 Merge pull request #4319 from deltachat/adb/issue-4318
only pass URL domain to IDN.toASCII()
2026-03-24 15:53:49 +01:00
adbenitez c3ec163e1a update translations 2026-03-24 15:51:25 +01:00
adbenitez a927a32909 update deltachat-core-rust to 'chore(release): prepare for 2.47.0' of 'v2.47.0' 2026-03-24 15:49:02 +01:00
adbenitez 9aab4517ef only pass URL domain to IDN.toASCII()
Avoid crashes due to IllegalArgumentException launched by
IDN.toASCII() if URL is too long
2026-03-23 22:58:01 +01:00
adb 727e68edc7 Merge pull request #4317 from deltachat/adb/disable-full-screen-intent-for-gplay
temporarily don't require android.permission.USE_FULL_SCREEN_INTENT for gplay
2026-03-23 12:46:20 +01:00
adbenitez 9047de85c2 update version 2026-03-23 12:35:42 +01:00
adbenitez 29c313ba58 Merge remote-tracking branch 'upstream/adb/disable-full-screen-intent-for-gplay' 2026-03-23 12:35:00 +01:00
adbenitez 487f601c09 temporarily don't require android.permission.USE_FULL_SCREEN_INTENT for gplay 2026-03-23 12:15:47 +01:00
adbenitez 7589b5ac37 add device message 2026-03-21 18:40:21 +01:00
adbenitez 8a9ce2ddd1 Merge remote-tracking branch 'upstream/main' 2026-03-21 17:26:07 +01:00
adb be449f5afc Merge pull request #4314 from deltachat/prep-2.46.0
prepare 2.46.0
2026-03-21 16:24:08 +01:00
adbenitez ac832a617e prepare 2.46.0 2026-03-21 16:18:45 +01:00
adb 4fd2832370 Merge pull request #4313 from deltachat/adb/update-translations-2026-03-21
update translations
2026-03-21 16:13:22 +01:00
adbenitez 52b072a7f3 update translations 2026-03-21 16:11:51 +01:00
adbenitez 55862757d6 Merge remote-tracking branch 'upstream/main' 2026-03-21 16:08:31 +01:00
adb cbdf495c5f Merge pull request #4312 from deltachat/adb/issue-4280
make video thumbnail square
2026-03-21 15:51:22 +01:00
adbenitez a9d0d2e179 make video thumbnail square 2026-03-21 14:25:44 +01:00
adb d0cbf169dd Merge pull request #4267 from deltachat/r10s/add-e2ee-string
fix: add dedicated e2ee string without 'tap for more info'
2026-03-21 14:14:35 +01:00
adb 833bc14405 Merge branch 'main' into r10s/add-e2ee-string 2026-03-21 14:11:12 +01:00
adb fb3620d0e3 Merge pull request #4308 from deltachat/adb/issue-4135
FullMsgActivity: allow to review and copy link before opening
2026-03-21 14:09:33 +01:00
adb 02466e09fe Merge pull request #4306 from deltachat/wch423/call-pip-video-fix
Fix remote video visibility in pip
2026-03-21 14:07:11 +01:00
adb e39134faad Merge pull request #4307 from deltachat/wch423/audio-codec-fix
Fix double write in audio codec
2026-03-21 14:06:57 +01:00
adb fa90b167ef Merge branch 'main' into adb/issue-4135 2026-03-21 14:06:16 +01:00
B. Petersen f5f20399ac remove strings no longer used in UI 2026-03-21 14:05:24 +01:00
B. Petersen 659152dfcf add string needed for iOS's https://github.com/deltachat/deltachat-ios/pull/3055 2026-03-21 11:08:39 +01:00
adb f34e87a593 Merge pull request #4309 from deltachat/update-core-and-stuff-2026-03-20
Update core to 2.46.0
2026-03-20 22:05:46 +01:00
adbenitez a172441155 update changelog 2026-03-20 21:40:30 +01:00
adbenitez 90ca85ae9c update strings 2026-03-20 21:37:48 +01:00
adbenitez 40c0612412 update deltachat-core-rust to 'chore(release): prepare for 2.46.0' of 'v2.46.0' 2026-03-20 20:12:19 +01:00
adbenitez 5de79e3b0b update changelog 2026-03-20 20:09:30 +01:00
adbenitez 39369aadd7 FullMsgActivity: allow to review and copy link before opening 2026-03-20 20:04:48 +01:00
wch423 b1e709d5bc Fix wrong state handling for call in PiP; Rearrange z-order to avoid problem with SurfaceViewRenderer 2026-03-20 15:56:59 +01:00
wch423 f760573fe4 Fix double write in audio codec 2026-03-20 15:56:40 +01:00
B. Petersen 4263ece65b update translations after running the lineend-fix script of #4302 2026-03-20 14:46:44 +01:00
B. Petersen 217c45c102 update translations 2026-03-20 12:52:15 +01:00
adb 3b2145ec79 Merge pull request #4300 from deltachat/adb/issue-3494-attempt2
don't try to open ConversationActivity if chatId is zero
2026-03-19 21:51:12 +01:00
adbenitez 566d1a1c13 don't try to open ConversationActivity if chatId <= 0 2026-03-19 21:12:45 +01:00
wchen342 09dab94807 Merge pull request #4298 from deltachat/wch423/already-in-call-prompt
Add a toast to inform user a call is ongoing
2026-03-19 14:21:22 -04:00
wch423 6e3ddb8d96 Add a toast to inform user a call is ongoing and bring up the existing call 2026-03-19 19:16:47 +01:00
adbenitez 8d7bb437eb Merge remote-tracking branch 'upstream/main' 2026-03-19 16:55:53 +01:00
B. Petersen 392b43e8f7 restore missing strings 2026-03-19 13:05:59 +01:00
B. Petersen 32201a60c4 update translations 2026-03-19 13:05:59 +01:00
adb bb114c570f revert line breaks in src/main/res/values/strings.xml (#4296)
* revert line breaks in src/main/res/values/strings.xml

* exclude strings from code formatter

* update comment

* restore string confirm_remove_or_hide_transport_x

---------

Co-authored-by: B. Petersen <r10s@b44t.com>
2026-03-19 12:15:11 +01:00
adb 42c52c10c7 Merge pull request #4295 from deltachat/adb/issue-4261
use invalidateOptionsMenu() to restore menu when leaving search mode
2026-03-19 10:51:39 +01:00
biörn ade21a2cb8 hide relays from contacts (unpublish relays) (#4289)
* show 'remove relay' items in red

* show concrete meaning of 'default' or 'main'

* prepare for showing 'unpublished' state

* rework 'remove relay' dialog

* fix RPC building doc and remove temp. file

* add hint to be shown below relay list

* adapt to new core api

* use listTransportsEx()

* use rpc.setTransportUnpublished()

* keep hidden

* tweak remove dialog in case the relay is already hidden

* adapt to chat.delta.rpc.types.TransportListEntry classname

* remove outdated autogenerated file

* update CHANGELOG

* simplify deletion

* make spotless happy

* change button order so hide/delete are not together usually; this matches also more the gist of positive/negative/neutral

* Update src/main/res/values/strings.xml

Co-authored-by: Hocuri <hocuri@gmx.de>

* the dialog wording fits better when already hidden now

* move similar strings together, make translation easier

* actions are 'Title Case', however, this usually applies to nouns, verbs, adjectives, first and last word only, not to prepositions as 'from'

---------

Co-authored-by: Hocuri <hocuri@gmx.de>
2026-03-19 08:40:22 +01:00
adbenitez aced181d92 update changelog 2026-03-18 18:47:17 +01:00
adbenitez 92cd1fc31c use invalidateOptionsMenu() to restore menu when leaving search mode
instead of wrongly restoring all menu items to visible when leaving
search mode
2026-03-18 18:43:35 +01:00
adbenitez 743138a100 Merge remote-tracking branch 'upstream/main' 2026-03-18 17:14:18 +01:00
adb bebda06160 Merge pull request #4290 from deltachat/adb/issue-4283
replace some hardcoded strings
2026-03-18 17:11:26 +01:00
adb f581930a40 Merge pull request #4292 from deltachat/wch423/call-ui-fix-1
Call UI fixes
2026-03-18 17:10:59 +01:00
adb 70d4844dc6 Merge pull request #4288 from deltachat/wch423/offline-outgoing-state
Make outgoing call start with `CONNECTING` then switch to `RINGING`
2026-03-18 17:10:31 +01:00
adb d3dd50dcac Merge branch 'main' into adb/issue-4283 2026-03-18 16:05:26 +01:00
adbenitez ab8fdbad78 target review comment 2026-03-18 16:02:09 +01:00
adb 174bd9e986 Merge pull request #4294 from deltachat/adb/update-rpc-2026-03-18
update Rpc
2026-03-18 15:58:39 +01:00
adb ab6f7ec97f Merge branch 'main' into adb/update-rpc-2026-03-18 2026-03-18 15:56:31 +01:00
adb 6288463ddb Merge pull request #4293 from deltachat/adb/fix-core-cache
fix core cache
2026-03-18 15:55:59 +01:00
adbenitez d700353ed8 update Rpc 2026-03-18 15:44:07 +01:00
adbenitez e979873bb3 fix Swatinem/rust-cache@v2 usage: working-directory is now workspaces 2026-03-18 15:37:47 +01:00
adbenitez 331c77d317 fix Swatinem/rust-cache@v2 usage: working-directory is now workspaces 2026-03-18 15:29:38 +01:00
adbenitez f9792615b7 fix core cache 2026-03-18 15:22:26 +01:00
wch423 a94dc9336e Call UI fixes 2026-03-18 14:41:26 +01:00
adbenitez 6f1e11e860 replace some hardcoded strings 2026-03-18 14:08:03 +01:00
wch423 e720b4cef8 Make outgoing call start with CONNECTING then switch to RINGING when offer is ready 2026-03-18 13:28:36 +01:00
wchen342 10f4534ee8 Merge pull request #4285 from deltachat/wch423/fix-end-call
Fix end call event ends another call
2026-03-17 16:58:02 -04:00
wch423 28c02a767d Fix end call event does not check callId; more race condition fixes
# Conflicts:
#	src/main/java/org/thoughtcrime/securesms/calls/CallCoordinator.java
#	src/main/java/org/thoughtcrime/securesms/calls/CallService.java
#	src/main/java/org/thoughtcrime/securesms/webrtc/WebRTCClient.java
2026-03-17 20:46:47 +01:00
adbenitez 98f2ae5430 Merge remote-tracking branch 'upstream/main' 2026-03-17 18:25:37 +01:00
adbenitez 00c61133d5 apply spotless 2026-03-17 18:20:50 +01:00
adbenitez e457ab431d Merge remote-tracking branch 'upstream/main' 2026-03-17 18:20:24 +01:00
adb b854fb6689 Merge pull request #4284 from deltachat/adb/format-code6
format code with spotless (part 6)
2026-03-17 18:19:47 +01:00
adb 7c3a80296a Merge branch 'main' into adb/format-code6 2026-03-17 17:01:42 +01:00
adb 4328bdd698 Merge pull request #4241 from deltachat/wch423/call-notifiaction
Add full VoIP call support with all common functionalities
2026-03-17 17:01:11 +01:00
adbenitez e5f45df59a format code with spotless (part 6) 2026-03-17 15:54:18 +01:00
adbenitez 9dd270172b AndroidManifest: fix uses-sdk tools:overrideLibrary 2026-03-17 15:52:04 +01:00
adbenitez 310f1fb921 remove manual launching of RpcException 2026-03-17 15:36:06 +01:00
adbenitez 5f14f0792f remove commented out code 2026-03-17 15:29:28 +01:00
adbenitez fb3b43426a rename color vars 2026-03-17 15:28:08 +01:00
adb 62b66d93ee Merge branch 'main' into wch423/call-notifiaction 2026-03-16 17:20:08 +01:00
adb 6b12ff335d Merge pull request #4278 from deltachat/adb/apply-code-format5
apply code formatter part 5
2026-03-16 17:19:37 +01:00
adbenitez ea522be8f4 format some more files 2026-03-16 16:57:36 +01:00
adb 44441f1ff9 Merge branch 'main' into adb/apply-code-format5 2026-03-16 16:53:35 +01:00
wchen342 3fca807356 Merge pull request #4276 from deltachat/wch423/aac-encoder
Add proper container to AAC streams used in voice messages
2026-03-16 11:48:03 -04:00
adb 4dc377233a Merge branch 'main' into adb/apply-code-format5 2026-03-16 16:31:30 +01:00
adb aabc60d36f Merge branch 'main' into wch423/aac-encoder 2026-03-16 16:31:13 +01:00
adb a653ac6382 Merge pull request #4279 from deltachat/adb/separate-spotless-check-to-workflow
separate code format checking to its own workflow
2026-03-16 16:30:51 +01:00
adbenitez df7cc90da9 separate code format checking to its own workflow 2026-03-16 16:28:30 +01:00
adbenitez eeb56a4630 apply code formatter part 5 2026-03-16 16:22:30 +01:00
adb 713a87993e Merge pull request #4275 from deltachat/adb/issue-3508
avoid race in processComposeControls during "reply privately"
2026-03-16 16:06:44 +01:00
wch423 8ff55f3cf3 Fix async file stream problem 2026-03-16 15:43:11 +01:00
wch423 0fd72d2415 Change voice messages to use m4a wrapped AAC audio files 2026-03-16 15:43:08 +01:00
adb 3c7f12c7b8 Merge branch 'main' into adb/issue-3508 2026-03-16 14:38:51 +01:00
adbenitez 56abaa7c20 fix changelog 2026-03-16 14:38:28 +01:00
adb 9335eedd04 Merge pull request #4272 from deltachat/adb/cache-compiled-core
cache compiled core
2026-03-16 14:35:07 +01:00
adb c13536031e Merge branch 'main' into adb/cache-compiled-core 2026-03-16 14:34:58 +01:00
adb 57581634c4 Merge pull request #4265 from deltachat/adb/use-spotless
setup spotless for code formatting
2026-03-16 14:33:52 +01:00
wch423 4fa2535118 Multiple improvements
Add locks to avoid race conditions
Remove bottom card from CallActivity
Fix audio endpoint and ringtone problem
Add proximity wake lock
Other bug fixes
2026-03-14 21:47:54 +01:00
wch423 0ac0276dea Add override and runtime checks for API version 2026-03-14 21:45:39 +01:00
wch423 ed72a60f24 Combined changes for adding call managements, native WebRTC support, CallStyle notification and other implemenations 2026-03-14 21:45:22 +01:00
adb 656aca7d1f Merge branch 'main' into adb/issue-3508 2026-03-14 19:27:34 +01:00
adb 3594847d8e Merge branch 'main' into adb/use-spotless 2026-03-14 19:25:29 +01:00
adb c17ac1d090 Merge pull request #4277 from deltachat/update-core-and-stuff-2026-03-14
update core to 2.45.0
2026-03-14 16:51:16 +01:00
adbenitez 93ba86a779 update src/main/res/values-ca/strings.xml 2026-03-14 16:49:22 +01:00
adbenitez 738f5b2cc8 update RPC bindings 2026-03-14 15:33:41 +01:00
adbenitez 71a473d3e3 update changelog 2026-03-14 15:12:33 +01:00
adbenitez d64d094de3 update translations 2026-03-14 15:12:23 +01:00
adbenitez 41df4eb03d update deltachat-core-rust to 'chore(release): prepare for 2.45.0' of 'v2.45.0' 2026-03-14 14:39:32 +01:00
adbenitez dde82ccb2f avoid race in processComposeControls during "reply privately"
processComposeControls() spawns a background thread that uses the
class field chatId, but by the time `setDraft(chatId, null)` is called
to clear the draft, the chatId might be already the new selected chat
for "reply privately"
2026-03-13 21:30:32 +01:00
adbenitez c89f9ce875 set spaceBeforeEmptyCloseTag=true explicitly 2026-03-11 20:40:13 +01:00
adb fc1adc4863 Merge pull request #131 from ArcaneChat/adb/merge-upstream
merge upstream
2026-03-11 20:18:26 +01:00
adbenitez d68c32ff26 fix ProgressDialog 2026-03-11 20:16:29 +01:00
adbenitez b67e9d795e Merge remote-tracking branch 'upstream/main' into adb/test 2026-03-11 20:02:57 +01:00
adbenitez 87ac24124a Merge branch 'adb/use-spotless' of https://github.com/deltachat/deltachat-android into adb/use-spotless 2026-03-11 19:26:52 +01:00
adbenitez 138dcd7bdf use groovyGradle 2026-03-11 19:25:48 +01:00
adbenitez ae7be8a841 apply code formatter 2026-03-11 18:53:16 +01:00
adb 0d51e097d5 Merge branch 'main' into adb/use-spotless 2026-03-11 17:58:32 +01:00
adbenitez abff1c0c55 cache compiled core 2026-03-11 17:47:10 +01:00
adb 1894425ad2 Merge pull request #4271 from deltachat/adb/apply-code-format4
apply code formatter, part 4
2026-03-11 17:29:32 +01:00
adbenitez 08643d3389 fix indentation 2026-03-11 17:18:05 +01:00
adbenitez 3460e7e405 apply code formatter, part 4 2026-03-11 17:10:29 +01:00
adb 36249777e0 Merge branch 'main' into adb/use-spotless 2026-03-11 17:01:30 +01:00
adb ca40ae7869 Merge pull request #4270 from deltachat/adb/apply-code-format3
apply code formatter part 3
2026-03-11 17:01:17 +01:00
adbenitez cb05abb85f apply code formatter part 3 2026-03-11 16:33:21 +01:00
adbenitez b878ed4df3 simplify workflows 2026-03-11 16:06:15 +01:00
adbenitez 16a02a5e4f add spotless/eclipse-wtp-xml.prefs 2026-03-11 15:58:42 +01:00
adb c614c5f004 Merge branch 'main' into adb/use-spotless 2026-03-11 14:34:51 +01:00
adb 8a76f99701 Merge pull request #4269 from deltachat/adb/apply-code-format2
apply code formatter part 2
2026-03-11 14:34:13 +01:00
adbenitez fd5a3b9f8e apply code formatter part 2 2026-03-11 14:16:44 +01:00
adb c7a542aac7 Merge branch 'main' into adb/use-spotless 2026-03-11 14:06:43 +01:00
adb 6cab1d1cf4 Merge pull request #4268 from deltachat/adb/apply-code-format1
apply code format part 1
2026-03-11 14:06:27 +01:00
biörn be8009c950 fix: leave and delete finishes activity (#4266)
* fix: leave and delete finishes activity

the chat is gone - otherwise, we end up in ghost chat zero :)

moreover, the fix removes shortcuts from the homescreen.

a toast is no longer needed, as there is enough visual feedback;
we're also not showing a toast on plain deletion.

* use consistent string and clarify deletion scope
2026-03-11 14:01:34 +01:00
adbenitez f6c1fa2f5c apply code format part 1 2026-03-11 13:40:09 +01:00
B. Petersen e76f445985 fix: add dedicated e2ee string without 'tap for more info' 2026-03-11 09:57:21 +01:00
biörn 6949be6fd8 leave and delete (#4262)
* deleting groups/channels is available after leaving only

* update CHANGELOG

* Update src/main/java/org/thoughtcrime/securesms/ConversationActivity.java

Co-authored-by: adb <adb@merlinux.eu>

* mailing lists are not encrypted

---------

Co-authored-by: adb <adb@merlinux.eu>
2026-03-11 00:40:04 +01:00
adbenitez 69e18a009b use 4 spaces for xml and .gradle files 2026-03-10 23:11:04 +01:00
adbenitez 64ef656544 setup spotless for code formatting 2026-03-10 22:57:38 +01:00
adb f95a6e8db7 Merge pull request #4264 from deltachat/adb/make-encr-info-selectable
make it possible to select/copy the fingerprints in encryption info dialog
2026-03-10 21:14:02 +01:00
biörn b81757d579 simplify 'call' wording (#4263) 2026-03-10 20:33:26 +01:00
adbenitez 30c0026840 make it possible to select/copy the fingerprints in encryption info dialog 2026-03-10 19:40:06 +01:00
adbenitez efb4bf0536 Merge remote-tracking branch 'upstream/main' 2026-03-10 19:08:40 +01:00
adb cd2fc0df0f Merge pull request #4230 from deltachat/adb/sticker-picker
add basic sticker picker
2026-03-10 14:49:17 +01:00
adbenitez 51380cf906 update changelog 2026-03-09 20:47:03 +01:00
adbenitez ded0c44ce3 improve StickerPickerView's code 2026-03-09 20:45:46 +01:00
adbenitez 61f5064929 move setupViews() to onFinishInflate() 2026-03-09 19:07:19 +01:00
adb f316ebea20 Merge branch 'main' into adb/sticker-picker 2026-03-09 18:18:24 +01:00
wchen342 dc1a029e4a Merge pull request #4250 from deltachat/wch423/remove-notification-msg-delete
Remove notification when message is deleted
2026-03-09 13:03:31 -04:00
wchen342 6bbacae54d Merge branch 'main' into wch423/remove-notification-msg-delete 2026-03-09 12:52:26 -04:00
wch423 972d372bd4 Add back exception handling for notify() 2026-03-09 17:17:28 +01:00
biörn fe7fb19adf add a hint about sending original images (#4259)
* add a hint about sending original images

* force items having needed size
2026-03-09 16:49:36 +01:00
biörn 5112389dae remove unused CustomDefaultPreference (#4257)
* remove unused CustomDefaultPreference

* remove now superfluous null check

* remove now unused resources
2026-03-09 16:48:17 +01:00
biörn c190a7b50a update some call translator notes (#4256) 2026-03-09 12:08:19 +01:00
biörn 7ce8ccff78 unify status line (#4255)
* less formal duration string

* use standard status footer

* move call icon to call information

* add duration line

* update CHANGELOG
2026-03-09 10:54:54 +01:00
biörn 7eb0a99fc7 add strings for the 'Calls' notification setting (#4249)
* add strings for the 'Calls' notification setting

* Update src/main/res/values/strings.xml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/main/res/values/strings.xml

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 01:21:29 +01:00
adb cbdd8f19ed Merge branch 'main' into wch423/remove-notification-msg-delete 2026-03-06 17:15:28 +01:00
adb 5fdf319cda Merge pull request #4254 from deltachat/Hocuri-patch-1
CI: Change preview APK architecture from 32-bit to 64-bit
2026-03-06 14:55:48 +01:00
wch423 837e2313dd Make notifications rebuild up on message deletion 2026-03-06 00:26:59 +01:00
Hocuri e45fd2545e Change build target from armeabi-v7a to arm64-v8a 2026-03-05 18:27:08 +01:00
wch423 15537ea4b2 Remove notification when message is deleted 2026-03-05 00:40:10 +01:00
B. Petersen df97f4069a remove deprecated strings 2026-03-03 23:57:10 +01:00
B. Petersen dea8b2bed9 tweak 'view count' translator's hint 2026-03-02 16:54:56 +01:00
B. Petersen 0d130a4218 add view-count string 2026-03-01 13:24:38 +01:00
adbenitez b4ee89c1e8 Merge remote-tracking branch 'upstream/main' 2026-02-27 18:56:48 +01:00
adb b2e7b8fdb6 Merge branch 'main' into adb/sticker-picker 2026-02-27 18:51:14 +01:00
adb a494feb272 Merge pull request #4245 from deltachat/update-core-and-stuff-2026-02-27
Update core to 2.44.0
2026-02-27 18:49:20 +01:00
adbenitez 5efce4345a update RPC 2026-02-27 18:45:37 +01:00
adbenitez b7703ce71f update changelog 2026-02-27 17:25:24 +01:00
adbenitez c0ed32b645 update translations 2026-02-27 17:25:11 +01:00
adbenitez 7e4f408059 update deltachat-core-rust to 'chore(release): prepare for 2.44.0' of 'v2.44.0' 2026-02-27 17:18:33 +01:00
adbenitez a1993426de Merge remote-tracking branch 'upstream/main' 2026-02-24 01:30:11 +01:00
adbenitez bbb6ce8def fix ConversationFragment 2026-02-24 01:29:39 +01:00
adb c601595477 Merge pull request #4238 from deltachat/adb/avoid-deprecated-onActivityResult
migrate away from deprecated `Fragment.onActivityResult()`
2026-02-23 19:11:30 +01:00
adbenitez f909174119 tweak ConversationListActivity and RelayListActivity
don't relay in onActivityResult
2026-02-23 18:59:54 +01:00
adbenitez b0762a8b46 Merge remote-tracking branch 'upstream/main' 2026-02-22 13:00:11 +01:00
adb 545f987f31 Merge branch 'main' into adb/avoid-deprecated-onActivityResult 2026-02-21 23:48:11 +01:00
adb b625c57d2d Merge pull request #4240 from deltachat/adb/improve-channel-creation
don't set channel description on channel creation if it is empty
2026-02-21 23:47:57 +01:00
adbenitez 022d24bc5f Merge branch 'adb/improve-channel-creation' of https://github.com/deltachat/deltachat-android into adb/improve-channel-creation 2026-02-21 23:47:20 +01:00
adbenitez c5c09008a6 fix missing parenthesis 2026-02-21 23:47:03 +01:00
adb 7679cc8bba Merge branch 'main' into adb/avoid-deprecated-onActivityResult 2026-02-21 23:34:03 +01:00
adb 4807d05861 Merge branch 'main' into adb/improve-channel-creation 2026-02-21 23:33:20 +01:00
adb 34eedf5f07 Merge pull request #4239 from deltachat/adb/improve-description-changed-info-clicked
when "description changed by Foo" is clicked, open chat profile
2026-02-21 23:32:57 +01:00
adbenitez 941c186142 don't set channel description on channel creation if it is empty
when user creates a channel, only call rpc.setChatDescription if
there is actually some description to set, otherwise there will be a
"you changed the description" info-message when the user didn't set anything
2026-02-21 23:10:37 +01:00
adbenitez b54ac50ea5 when "description changed by Foo" is clicked, open chat profile 2026-02-21 22:59:19 +01:00
adb b99426b7c6 Merge pull request #118 from ArcaneChat/copilot/setup-copilot-instructions-again
Enhance Copilot instructions with build timing, CI/CD details, and troubleshooting
2026-02-19 05:33:38 +01:00
adbenitez de1eedc63f update .github/copilot-instructions.md 2026-02-19 05:32:04 +01:00
adbenitez c3dac043cb remove ScreenLockUtil.applyScreenLock(Activity, String, String, int) 2026-02-19 04:59:24 +01:00
adbenitez 00b52d4fe6 don't call registerForActivityResult in onActivityCreated 2026-02-19 03:34:05 +01:00
adbenitez b66bf595e2 avoid call to fragment.onActivityResult in ApplicationPreferencesActivity 2026-02-19 03:08:46 +01:00
adbenitez 7c24e836fe avoid deprecated ContactSelectionListFragment.onActivityResult() 2026-02-19 02:26:09 +01:00
adbenitez 694f3bf013 remove unused import in ListSummaryPreferenceFragment 2026-02-19 02:08:47 +01:00
adbenitez f6f42991e8 avoid deprecated NotificationsPreferenceFragment.onActivityResult() 2026-02-19 02:08:24 +01:00
adbenitez 23f6803be9 avoid deprecated ChatsPreferenceFragment.onActivityResult()
also remove now unused fields in `ListSummaryPreferenceFragment`
2026-02-19 00:05:39 +01:00
adbenitez cdcb7fab4b avoid deprecated AdvancedPreferenceFragment.onActivityResult() 2026-02-18 23:53:30 +01:00
adbenitez 5ee3607312 avoid deprecated ConversationFragment.onActivityResult() 2026-02-18 23:32:54 +01:00
adbenitez 4b9642f51f add more logging to ProfileFragment 2026-02-18 23:29:54 +01:00
adbenitez 4abbf3091f avoid deprecated in ProfileFragment.onActivityResult() 2026-02-18 22:58:21 +01:00
copilot-swe-agent[bot] ec4db3e58f Enhance Copilot instructions with detailed build, test, and CI/CD information
Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>
2026-02-18 20:52:39 +00:00
copilot-swe-agent[bot] 0d2175b641 Initial plan 2026-02-18 20:49:42 +00:00
adb a821ee363a Merge branch 'main' into adb/sticker-picker 2026-02-18 19:59:07 +01:00
adb f43083acef Merge pull request #4214 from deltachat/adb/chat-description
allow to set chat description
2026-02-18 19:58:02 +01:00
adb 7aed78a935 Update src/main/res/values/strings.xml
Co-authored-by: biörn <r10s@b44t.com>
2026-02-18 19:34:59 +01:00
adbenitez 26c30fe3dc Merge branch 'adb/chat-description' of https://github.com/deltachat/deltachat-android into adb/chat-description 2026-02-18 19:32:49 +01:00
adbenitez 5550b8b1f5 update changelog 2026-02-18 19:32:00 +01:00
adb c94512fb24 Merge branch 'main' into adb/chat-description 2026-02-18 19:30:30 +01:00
B. Petersen d1db6e5a8a apply suggestion from @wchen342 2026-02-18 14:44:56 +01:00
B. Petersen d352583237 avoid 'recode', which is too technical as well 2026-02-18 14:44:56 +01:00
B. Petersen c8469be136 clearify, how to recode multiple videos 2026-02-18 14:44:56 +01:00
adb 97620b8a3c Merge pull request #114 from ArcaneChat/copilot/improve-attachment-selector
Convert attachment selector to horizontal scrollable row with uniform cell sizing
2026-02-18 04:40:13 +01:00
adbenitez 24317b38bf tweak src/main/res/layout/attachment_type_selector.xml 2026-02-18 04:35:01 +01:00
copilot-swe-agent[bot] 6b28ed15e3 Fix cell sizing: uniform width with ellipsized text
Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>
2026-02-18 03:02:49 +00:00
copilot-swe-agent[bot] b8b203e517 Convert attachment selector from fixed grid to scrollable row
Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>
2026-02-18 02:47:04 +00:00
copilot-swe-agent[bot] e5c1e477f0 Initial plan 2026-02-18 02:44:54 +00:00
adbenitez 64752d3bae Merge remote-tracking branch 'upstream/adb/chat-description' 2026-02-17 23:39:53 +01:00
adbenitez 6145e0d2df Merge remote-tracking branch 'upstream/main' 2026-02-17 23:29:06 +01:00
adbenitez b365284743 fix Rpc class 2026-02-17 22:37:56 +01:00
adb af62041c14 Merge branch 'main' into adb/chat-description 2026-02-17 22:36:07 +01:00
adbenitez 910dbf56fd update core 2026-02-17 22:34:55 +01:00
adb 4eca0dea4a Merge pull request #4237 from deltachat/prep-2.43.0
prepare 2.43.0
2026-02-17 22:24:24 +01:00
adbenitez a76c17fd45 prepare 2.43.0 2026-02-17 21:50:36 +01:00
adb b00aeec03a Merge pull request #4236 from deltachat/update-core-and-stuff-2026-02-17
Update core to 2.43.0
2026-02-17 21:15:35 +01:00
adbenitez ffe147fde8 update RPC bindings 2026-02-17 21:09:06 +01:00
adbenitez 02a5bb06a9 update translations 2026-02-17 21:08:44 +01:00
adbenitez a8997738bf update changelog 2026-02-17 20:07:51 +01:00
adbenitez 202690d02e update deltachat-core-rust to 'chore(release): prepare for 2.43.0' of 'v2.43.0' 2026-02-17 20:04:23 +01:00
wchen342 6d14bbdbc7 Merge pull request #4234 from deltachat/wch423/fix-audio-seekbar-reset
Prevent seek bar from being reset when message list changes
2026-02-17 14:03:08 -05:00
adbenitez b0699ab9be sort stickers 2026-02-17 18:04:56 +01:00
wch423 03a0b53eee Update function name 2026-02-17 16:34:33 +01:00
wch423 a044181a75 Update progress bar for playing audio; Clear progress for any other audio that is not playing to avoid confusion 2026-02-17 16:31:06 +01:00
B. Petersen e9ae9dc5bf add more translation context to strings 2026-02-17 15:27:13 +01:00
B. Petersen cbfa3b7e58 clarify 'Audio' string 2026-02-17 13:52:21 +01:00
adbenitez 499f4aafc8 add basic sticker picker 2026-02-17 04:14:16 +01:00
adbenitez bf57d3bd73 add src/main/res/values-eu/strings_arcanechat.xml 2026-02-17 03:47:52 +01:00
adbenitez 6200f354ca set custom icon for debug build 2026-02-17 03:47:30 +01:00
wchen342 c8dfb08dcb Merge pull request #4228 from deltachat/wch423/fix-audio-duration
Add duration extraction for audio files
2026-02-16 16:03:06 -05:00
wch423 543e9d91e4 Make sure longs are always in range 2026-02-16 20:08:31 +01:00
wch423 dec5879919 Add duration extraction for audio files 2026-02-16 19:01:55 +01:00
wchen342 a1d21d8562 Merge pull request #4226 from deltachat/wch423/fix-video-crash
Fix video player crash
2026-02-16 04:55:34 -05:00
adbenitez 253ed877e5 add comment to src/main/res/values/strings_arcanechat.xml
hint to translators to point out that the channel is in English
2026-02-15 17:40:57 +01:00
wch423 b809d24ab1 Change PlayerView to StyledPlayerView to avoid conflict between ExoPlayer2 and Media3 2026-02-13 18:05:37 +01:00
adbenitez 78aee0a487 Merge remote-tracking branch 'upstream/main' 2026-02-13 02:19:21 +01:00
adb d16254c146 Merge pull request #4223 from deltachat/adb/issue-4208
remove old buttons in relays list
2026-02-12 20:10:01 +01:00
adb 7ab3ef8453 Merge pull request #4224 from deltachat/adb/issue-4207-part2
don't tint error icon red in chatlist and info-messages
2026-02-12 20:09:43 +01:00
adbenitez 4b695a3293 update changelog 2026-02-12 00:01:16 +01:00
adbenitez da4c382c9a add context menu to relay items 2026-02-11 23:58:48 +01:00
adbenitez 80973960f5 don't tint error icon red in chatlist and info-messages 2026-02-11 20:54:05 +01:00
adbenitez 7be75f7008 remove old buttons 2026-02-11 20:27:01 +01:00
adbenitez 6fa114c6c0 Merge remote-tracking branch 'upstream/main' 2026-02-11 20:22:37 +01:00
adbenitez 767b5f2bae update channel link 2026-02-11 20:04:59 +01:00
adb ed3a21b992 Merge pull request #4222 from deltachat/prep-2.42.0
prepare 2.42.0
2026-02-10 21:41:59 +01:00
adbenitez 899c2b5647 prepare 2.42.0 2026-02-10 21:24:21 +01:00
adb 61e616a53b Merge pull request #4221 from deltachat/update-core-and-stuff-2026-02-10
Update core to 2.42.0
2026-02-10 21:23:09 +01:00
adbenitez 3bf4504de9 update strings 2026-02-10 21:20:52 +01:00
adbenitez cd0740d895 update changelog 2026-02-10 20:31:58 +01:00
adbenitez 9f99edc159 update deltachat-core-rust to 'chore(release): prepare for 2.42.0' of 'v2.42.0' 2026-02-10 20:26:54 +01:00
wchen342 60568f23f5 Merge pull request #4217 from deltachat/wch423/onboarding-invite-code
Allow scanning invite codes from onboarding
2026-02-09 16:36:23 -05:00
wchen342 6dc8bd7ba8 Merge branch 'main' into wch423/onboarding-invite-code 2026-02-09 16:25:34 -05:00
wch423 ff4ecb3bda Fix missing callback on successful scan 2026-02-09 22:19:11 +01:00
wch423 c71e71359a Remove extra constant 2026-02-09 22:11:13 +01:00
wch423 d5a09fa25e Only show confirmation dialog if it is an invitation link for contact or group 2026-02-09 21:56:43 +01:00
adb f52c2be2c2 Merge pull request #4219 from deltachat/adb/disable-chat-edge-to-edge
disable insets change in setComposePanelVisibility()
2026-02-09 21:46:46 +01:00
wch423 2233b93108 Remove color change on the OK button 2026-02-09 21:42:06 +01:00
adbenitez d76eb3239a disable insets change in setComposePanelVisibility() 2026-02-09 21:05:00 +01:00
adb a982bd2bbb Merge branch 'main' into wch423/onboarding-invite-code 2026-02-09 18:52:33 +01:00
wchen342 9ef3edcc0e Merge pull request #4189 from deltachat/wch423/audio-background-play
Add background audio playback for voice messages
2026-02-09 12:45:01 -05:00
wch423 de7c54b886 Revert changes to rpc 2026-02-09 15:32:37 +01:00
adb 9c9f966597 Merge branch 'main' into wch423/audio-background-play 2026-02-09 02:24:54 +01:00
adb 12e77789d3 Merge branch 'main' into wch423/onboarding-invite-code 2026-02-09 02:24:39 +01:00
adb bd640072ab Merge pull request #4216 from deltachat/adb/avoid-races-loading-chatlist
use conversationListFragment.loadChatlistAsync() to avoid races
2026-02-09 01:00:38 +01:00
adb 0a9c46fbfc Merge branch 'main' into adb/avoid-races-loading-chatlist 2026-02-07 17:37:29 +01:00
wch423 1cc4f11484 Add CHANGELOG 2026-02-07 17:04:27 +01:00
wch423 9386f2f9cb Fix QR scanning not restarted after cancel 2026-02-07 16:56:49 +01:00
wchen342 45d73d4604 Merge pull request #4215 from deltachat/adb/issue-4207
tune down error icon, don't use special bright alarming color
2026-02-07 10:22:32 -05:00
Hocuri a5892330dd Translate stock strings 2026-02-07 11:30:40 +01:00
adbenitez 8a0e2d72a4 use conversationListFragment.loadChatlistAsync() to avoid races 2026-02-07 06:22:31 +01:00
adbenitez 2629c65564 tune down error icon, don't use special bright alarming color 2026-02-07 02:39:37 +01:00
adbenitez 10694a6809 display chat description in chat profile 2026-02-07 01:49:59 +01:00
adbenitez aa3d177243 allow to set chat description 2026-02-07 01:23:26 +01:00
adbenitez 4d35d4edeb temporarily select core branch with new chat description api 2026-02-06 23:08:53 +01:00
wch423 bbaba3cd33 Fix observer not added in a specific case 2026-02-06 22:30:35 +01:00
wch423 d1f002a132 Remove desugar and use AndroidX version of Consumer 2026-02-06 21:04:31 +01:00
wch423 9ce9a91c95 Add confirm dialog for invitation qr codes 2026-02-06 21:01:36 +01:00
wch423 7844e146b1 Join and launch chat directly after creating new account 2026-02-06 18:50:57 +01:00
adbenitez eb997eca00 fix bug introduced by upstream merge 2026-02-06 18:35:30 +01:00
adb 30124de2a8 Merge branch 'main' into wch423/audio-background-play 2026-02-06 18:34:56 +01:00
wch423 1dcf7e4860 Adding new text for scanning invite code when onboarding 2026-02-06 16:50:45 +01:00
B. Petersen 9ffc904ae5 more detailed call strings 2026-02-06 11:45:56 +01:00
wchen342 2704749b44 Merge pull request #4198 from deltachat/wch423/edge-to-edge-device-channel
Make device messages and subscribed channels edge to edge
2026-02-05 15:15:40 -05:00
wch423 1c174b5b70 Stop draft audio playback when (1) the conversation exits; or (2) the message is sent 2026-02-05 21:12:09 +01:00
adbenitez 8b5dd70d75 Merge remote-tracking branch 'upstream/main' 2026-02-05 20:25:35 +01:00
adb f022316ad7 Merge branch 'main' into wch423/audio-background-play 2026-02-05 19:44:50 +01:00
wch423 3386f5c5f7 Make !CanSend -> CanSend still trigger Inset changes 2026-02-05 19:07:43 +01:00
adb 57eead3a34 Merge branch 'main' into wch423/edge-to-edge-device-channel 2026-02-05 18:33:52 +01:00
adb 2868b51835 Merge pull request #4212 from deltachat/prep-2.40.0
prepare 2.40.0
2026-02-05 17:44:28 +01:00
wch423 82118db71b Make inset changes only happen on initialization of activity 2026-02-05 17:27:21 +01:00
adbenitez 14f55ca6b1 prepare 2.40.0 2026-02-05 17:25:20 +01:00
adb cebfa12142 Merge branch 'main' into wch423/edge-to-edge-device-channel 2026-02-05 16:55:30 +01:00
adb 96c8c21b78 Merge pull request #4209 from deltachat/adb/issue-4206
hide delete-contact icon in ContactSelectionListFragment
2026-02-05 16:55:07 +01:00
adb 9ab1b1f3a7 Merge branch 'main' into adb/issue-4206 2026-02-05 16:54:55 +01:00
adb 94a0e426f8 Merge pull request #4210 from deltachat/adb/allow-to-pick-call-mode
show menu to select audio/video call modes
2026-02-05 16:48:27 +01:00
adbenitez 006f8ae826 use hasVideo instead of audioOnly 2026-02-05 16:37:42 +01:00
wch423 2889266522 Force dispatch all inset changes immediately in ConversationFragment 2026-02-05 16:28:38 +01:00
adb 5e6fccf143 Merge branch 'main' into wch423/edge-to-edge-device-channel 2026-02-05 15:41:17 +01:00
adbenitez 3847e20d18 set tint for icons in the call submenu 2026-02-05 02:31:38 +01:00
adbenitez fc69212a51 update changelog 2026-02-05 01:41:29 +01:00
adbenitez 8999f54ba2 upgrade calls web app 2026-02-05 01:40:27 +01:00
adbenitez f470e92300 show different icon depending on voice/video call modes 2026-02-05 01:35:20 +01:00
adbenitez 3ac49e3e58 set the call mode when calling Rpc.placeOutgoingCall 2026-02-05 01:20:11 +01:00
adb 8dd9cfec5b Merge branch 'main' into adb/allow-to-pick-call-mode 2026-02-05 01:17:12 +01:00
adb 0588214ee7 Merge pull request #4211 from deltachat/update-core-and-stuff-2026-02-04
Update core to 2.40.0
2026-02-05 00:37:53 +01:00
adbenitez 4ec49a031c adapt to new Rpc.placeOutgoingCall API 2026-02-05 00:24:51 +01:00
adbenitez a31d7d6d3e update the RPC bindings 2026-02-04 23:39:04 +01:00
adbenitez 64bbe9866d update translations 2026-02-04 23:38:33 +01:00
adbenitez 5d7ab84efc update changelog 2026-02-04 23:35:14 +01:00
adbenitez 11f73a88e8 update deltachat-core-rust to 'chore(release): prepare for 2.40.0' of 'v2.40.0' 2026-02-04 23:31:30 +01:00
adbenitez dd0e847976 take into consideration if the call is audio/video call when accepting it 2026-02-04 23:17:42 +01:00
wch423 71ed333468 Stop playback when attachment preview is removed;
Stop playback when message containing audio is removed
2026-02-04 22:49:18 +01:00
adbenitez 41d94ae3ee if it is an audio-only call start with video disabled 2026-02-04 22:14:50 +01:00
wch423 b66bc1f863 Handle specific case when leaving group; also move floating button to avoid overaapping with system bar 2026-02-04 19:36:51 +01:00
adbenitez df7d80319c show menu to select audio/video call modes 2026-02-04 19:36:34 +01:00
adbenitez 134145d166 update changelog 2026-02-04 17:13:48 +01:00
adbenitez 688a103c10 hide delete-contact icon in ContactSelectionListFragment 2026-02-04 16:45:29 +01:00
adb e2efa1f913 Merge pull request #4201 from deltachat/adb/issue-4195
fix mailto handling and remove unused code
2026-02-03 23:27:48 +01:00
adb aebd5c66f7 Merge branch 'main' into wch423/audio-background-play 2026-02-03 21:51:02 +01:00
adbenitez 15c60c6b12 fix mailto handling 2026-02-03 20:57:47 +01:00
wch423 f319ba2b83 Allow list scrolling to extend to edge 2026-02-03 19:40:02 +01:00
wch423 93f12e7367 Make message list respect bottom bar height 2026-02-03 19:40:00 +01:00
wch423 10acb07f82 Make device messages and subscribed channels edge to edge 2026-02-03 19:39:56 +01:00
adb ee9a8dd53a Merge branch 'main' into adb/issue-4195 2026-02-03 18:22:39 +01:00
adb 0a55023bdb Merge pull request #4205 from deltachat/adb/issue-4202
remove deselected members
2026-02-03 18:22:02 +01:00
adb fec9f8b4d3 Merge pull request #4204 from deltachat/adb/issue-4203
Fix layout problems inside in-chat apps
2026-02-03 17:53:22 +01:00
wch423 13374df709 Bug fixes and minor changes 2026-02-03 17:41:31 +01:00
adbenitez 7fa04dc3c0 update changelog 2026-02-03 01:03:05 +01:00
adbenitez 9d4e0e4e21 remove deselected members 2026-02-03 00:40:00 +01:00
adbenitez 473c28ab07 Fix layout problems inside in-chat apps 2026-02-02 20:31:42 +01:00
adbenitez de47feac40 update changelog 2026-01-30 20:21:48 +01:00
adbenitez 84894ff538 fix mailto handling and remove unused code 2026-01-30 20:17:04 +01:00
adb f254c35749 Merge pull request #4199 from deltachat/r10s/improve-details-strings
message info: title-case the send/received titles
2026-01-30 17:48:37 +01:00
adb 1ff4e069ea Merge branch 'main' into wch423/audio-background-play 2026-01-29 22:17:24 +01:00
B. Petersen d574d33596 title-case the message-info send/received titles
we nowhere in the app use lower case field names
2026-01-29 18:33:57 +01:00
wchen342 f6756fc34b Merge pull request #4191 from deltachat/adb/issue-4157
use event emmiter before DcAccounts creation
2026-01-29 10:34:57 -05:00
wchen342 7c27eb47fc Merge pull request #4196 from deltachat/adb/issue-4194
avoid crash caused by custom Fragment constructors
2026-01-29 10:19:15 -05:00
adbenitez 8d5a55c24c update changelog 2026-01-29 03:47:53 +01:00
adbenitez 2e9aa79b02 simplify changes in AccountSelectionListFragment 2026-01-29 03:44:42 +01:00
adbenitez 1f9264225b remove custom constructor in ReactionsDetailsFragment 2026-01-29 03:30:17 +01:00
adbenitez 18e145faaf avoid custom constructor in AccountSelectionListFragment 2026-01-29 02:17:06 +01:00
adbenitez 47cf70120a add logcat to crash report 2026-01-28 23:21:37 +01:00
adbenitez 86451a00ff Merge remote-tracking branch 'upstream/main' 2026-01-28 22:28:40 +01:00
wch423 34be7aab17 Cleanup imports 2026-01-28 21:30:51 +01:00
wch423 59139ed242 Add support for attachment draft; Distinguish between different messages; Prevent unrelated activities from changing the pending intent 2026-01-28 21:28:43 +01:00
wch423 11f3964bdc Add support for attachment draft; Distinguish between different messages 2026-01-28 21:28:42 +01:00
wch423 7683408d18 Allow going back to previous activity from the notification; Support AllMediaActivity 2026-01-28 21:28:40 +01:00
wch423 b74e793654 Finish ViewModel for audio playback; Refine UI set up for AudioView 2026-01-28 21:28:38 +01:00
wch423 4bd74324d2 Try to decouple view and business logics 2026-01-28 21:28:36 +01:00
wch423 9a121b3039 Fix UI update problems;
Make notification clickable
2026-01-28 21:28:33 +01:00
wch423 a9832c9c53 Make audio view use Media3 for playback 2026-01-28 21:28:31 +01:00
adbenitez 1e4c8bc291 use event emmiter before DcAccounts creation 2026-01-27 19:05:38 +01:00
wchen342 c45a47e53c Merge pull request #4187 from deltachat/adb/issue-4176
show views count in channels (to the admin)
2026-01-27 09:35:25 -05:00
adb a07723d515 Merge branch 'main' into adb/issue-4176 2026-01-27 03:02:39 +01:00
adb 02d7a6fb1f Merge pull request #4190 from deltachat/adb/crash-sooner-in-DcAccounts
throw exception if DcAccounts.createAccountsCPtr() returned null pointer
2026-01-27 03:02:15 +01:00
adb d62e8fa864 Merge branch 'main' into adb/crash-sooner-in-DcAccounts 2026-01-27 01:25:30 +01:00
adbenitez a03fd337ef throw exception if createAccountsCPtr() returned null pointer 2026-01-27 01:20:27 +01:00
72374 27c0f45430 fix: Change maximum height and width of avatar-images to the maximum allowed by Chatmail Core (#4185)
Avatar-images with a resolution larger than 512x512 will be resized by Chatmail Core, while media-quality is set to balanced, which is currently the highest quality-setting.

Co-authored-by: Hocuri <hocuri@gmx.de>
2026-01-26 23:27:56 +00:00
adbenitez a0f1232261 update changelog 2026-01-26 22:30:57 +01:00
adbenitez 5640d31080 remove checkmark from chatlist for outgoing channel messages 2026-01-26 22:29:03 +01:00
adbenitez 1542fc67ca show number of views a channel message have 2026-01-26 21:31:41 +01:00
adbenitez a99a4ec85b hide delivery checkmark in channels 2026-01-26 18:23:55 +01:00
adb fa17b134cf Merge pull request #4180 from deltachat/adb/issue-4055
allow to switch profile while sharing/forwarding
2026-01-26 17:05:49 +01:00
adbenitez 6898a37704 fix WelcomeActivity 2026-01-24 02:44:18 +01:00
adbenitez 45b6a5c565 Merge remote-tracking branch 'upstream/main' 2026-01-24 02:44:04 +01:00
adb 7330e6ba39 Merge branch 'main' into adb/issue-4055 2026-01-24 00:57:40 +01:00
adb 8f405914a2 Merge pull request #4186 from deltachat/update-core-2.39.0
update core to 2.39.0
2026-01-24 00:57:09 +01:00
adbenitez 6d09a6f318 update changelog 2026-01-24 00:34:18 +01:00
adbenitez b349a7e601 update deltachat-core-rust to 'chore(release): prepare for 2.39.0' of 'v2.39.0' 2026-01-24 00:31:58 +01:00
adbenitez 0d610895d2 fix function 2026-01-23 22:13:59 +01:00
adbenitez a65c677ecc update changelog 2026-01-23 22:10:06 +01:00
adbenitez db93aeacc0 fix event listener in ConversationActivity 2026-01-23 22:05:41 +01:00
adb 09ff0d888b Merge branch 'main' into adb/issue-4055 2026-01-23 17:43:51 +01:00
adb b9c5e741e8 Merge pull request #4184 from deltachat/update-core-and-stuff-2026-01-23
Update core to 3.38.0
2026-01-23 17:43:28 +01:00
adbenitez 620d86c903 update RPC bindings 2026-01-23 17:41:25 +01:00
adbenitez 14e31650e7 update translations 2026-01-23 17:35:19 +01:00
adbenitez 9848cb5847 update changelog 2026-01-23 17:27:49 +01:00
adbenitez bf7db005ef update deltachat-core-rust to 'chore(release): prepare for 2.38.0' of 'v2.38.0' 2026-01-23 15:31:28 +01:00
adbenitez aa032dbb37 fix some bugs
* avoid using wrong DcContext after switching account in ConversationListActivity
* avoid getContext() in ConversationFragment, use Rpc instead
2026-01-22 20:45:33 +01:00
adbenitez 9e1b9775e2 fix ConversationListActivity 2026-01-22 18:43:54 +01:00
adbenitez fcd16d9e32 don't allow to delete or create new profile while sharing/forwarding 2026-01-22 17:50:16 +01:00
adbenitez 2a4bd2a001 add device messages on account switching 2026-01-22 17:31:32 +01:00
adbenitez eacd089c8f improve code in ConversationListActivity 2026-01-22 17:18:49 +01:00
adbenitez 9ed355efd1 don't save dcContext in MessageSelectorFragment and derivates 2026-01-21 20:59:39 +01:00
adbenitez d1bb25004d Merge branch 'adb/issue-4055' of https://github.com/deltachat/deltachat-android into adb/issue-4055 2026-01-21 20:21:28 +01:00
adbenitez 8d1b010d1b tweak SendRelayedMessageUtil 2026-01-21 20:21:10 +01:00
adb 8a9b76af3a Merge branch 'main' into adb/issue-4055 2026-01-21 20:13:24 +01:00
adb 4bbd9428e3 Merge pull request #4182 from deltachat/wch423/backpress-migration
Migrate deprecated `onBackPressed` calls
2026-01-21 20:05:14 +01:00
adb 83646003b6 Merge branch 'main' into adb/issue-4055 2026-01-21 19:45:10 +01:00
wch423 947887f335 Migrate deprecated onBackPressed calls 2026-01-21 18:59:56 +01:00
wchen342 69631cd857 Merge pull request #4181 from deltachat/adb/improve-InstantOnboardingActivity
avoid account rollback in InstantOnboardingActivity
2026-01-21 10:30:01 -05:00
adbenitez 0722426425 allow to forward messages to different account 2026-01-21 00:22:43 +01:00
adbenitez 98d54bbe6a prevent returning to old chat after switching account 2026-01-21 00:20:02 +01:00
adbenitez c1dc0cf127 ConversationActivity: use currently selected account
instead of storing dcContext once on creation, the selected account
might change
2026-01-21 00:14:41 +01:00
adbenitez 44a1ce42f0 avoid account rollback in InstantOnboardingActivity 2026-01-20 20:01:40 +01:00
adbenitez a0c6cef0fa add menu item to switch account 2026-01-20 19:44:32 +01:00
adbenitez f96e89956c account switcher: make switching accounts smoother 2026-01-20 16:31:02 +01:00
wchen342 ce9ded9d8b Merge pull request #4178 from deltachat/adb/issue-4174
Properly update menu and other actionMode state in ContactSelectionListFragment
2026-01-20 10:10:45 -05:00
adb cb2d9f16ac Merge branch 'main' into adb/issue-4174 2026-01-20 15:47:44 +01:00
wchen342 c2a13ae9dd Merge pull request #4179 from deltachat/adb/issue-4175
avoid empty profiles after using "add as second device" from welcome screen
2026-01-20 09:35:51 -05:00
adbenitez f8c2403e61 update changelog 2026-01-19 22:26:35 +01:00
adbenitez 616b495426 only create a new account if the selected one is already configured 2026-01-19 22:13:47 +01:00
adbenitez a22baa7fc3 update changelog 2026-01-19 19:29:12 +01:00
adbenitez 0b9bb9ff76 fix: properly update menu and other actionMode state in ContactSelectionListFragment 2026-01-19 19:18:41 +01:00
adb ef96192d8b Merge pull request #4173 from deltachat/wch423/fix-resume-wrong-activity
Do not launch WelcomeActivity as singleTask
2026-01-19 18:32:00 +01:00
B. Petersen 13c34d9480 make clear, the blockage comes from user action 2026-01-19 17:47:48 +01:00
adb 610f4cebc2 Merge pull request #4171 from deltachat/wch423/add-hint-empty-group-search
Show hint during Contact search if results are empty
2026-01-19 17:45:18 +01:00
adbenitez d4d15eee7c avoid showing "no results for null" if search term is empty 2026-01-19 17:39:26 +01:00
wch423 ee3886285b Show "No results found for" during Contact search if results are empty 2026-01-19 15:46:00 +01:00
wchen342 a32c20473f Merge pull request #4172 from deltachat/wch423/blocked-contact-profile-indicator
Add indication for blocked contacts in user profile
2026-01-19 08:19:25 -05:00
wch423 db956d93cf Do not launch WelcomeActivity as singleTask 2026-01-16 19:50:29 +01:00
wch423 6a5a75131e Add indication for blocked contacts in user profile 2026-01-16 17:44:34 +01:00
wchen342 a676a47ed4 Merge pull request #4170 from deltachat/adb/issue-3913
refresh chatlist when going back from chat
2026-01-16 13:51:04 +01:00
adbenitez 2067122d2c update changelog 2026-01-15 23:41:41 +01:00
adbenitez 8a0fe892f4 refresh chatlist when going back from chat 2026-01-15 23:33:57 +01:00
adb 29a6f4eb31 Merge pull request #4167 from deltachat/wch423/mark-external-links
Mark external links with a special character
2026-01-15 19:39:51 +01:00
adb f610592bff Merge branch 'main' into wch423/mark-external-links 2026-01-15 19:20:37 +01:00
adb 898008e2a1 Merge pull request #4168 from deltachat/wch423/larger-qr-code
Use new generation method so the QR code is larger
2026-01-15 19:20:01 +01:00
adb 9eaa3ca182 Merge branch 'main' into wch423/larger-qr-code 2026-01-15 18:59:13 +01:00
adb c98818e5cf Merge pull request #4166 from deltachat/wch423/notification-permission-second-device
Ask for Notification Permission when adding second device
2026-01-15 18:57:49 +01:00
wch423 7643ecd90a Use new generation method so the QR code is larger 2026-01-15 18:25:56 +01:00
wch423 e4993bd302 Add CHANGELOG 2026-01-15 16:58:52 +01:00
wch423 32ee198128 Add util methods to handle RTL/LTR text concatenations;
Add markers to external links
2026-01-15 16:56:29 +01:00
wch423 ab0d33b3c0 Ask for Notification Permission when adding second device 2026-01-15 14:07:58 +01:00
adb 2c8b781817 Merge pull request #4165 from deltachat/wch423/fix-qr-scanner-no-error-dialog
Fix dialogs not showing when pasted QR codes are not valid
2026-01-14 21:31:59 +01:00
wch423 e59655c456 Fix dialogs not showing when pasted QR codes are not valid 2026-01-14 21:21:17 +01:00
adb 2ce7e5a3c7 Merge pull request #4164 from deltachat/wch423/remove-profile-email
Remove email address from profile
2026-01-14 16:28:25 +01:00
wch423 79c7419b71 Update CHANGELOG.md 2026-01-14 16:16:55 +01:00
wch423 2efaf1df93 Remove email address from profile 2026-01-14 15:59:24 +01:00
adb 814ac7d976 Merge pull request #4162 from deltachat/adb/remove-from-welcome-in-CreateProfileActivity
remove FROM_WELCOME in CreateProfileActivity
2026-01-13 20:40:18 +01:00
adbenitez b0e5c1c634 remove FROM_WELCOME in CreateProfileActivity 2026-01-13 20:23:41 +01:00
B. Petersen bae998f811 truncate file names in the middle
that way, the end is always visible,
which contains important information more often than the middle.

this is common knowledge since the 90's or so
however, as quite some previously stable ux patterns, lost on the way.
(cmp. Scott Jensen, https://www.youtube.com/watch?v=1fZTOjd_bOQ )
2026-01-08 17:54:50 +01:00
adbenitez 1b0d3f8583 Merge remote-tracking branch 'upstream/main' 2026-01-08 17:42:54 +01:00
adb d81cb238df Merge pull request #4155 from deltachat/update-core-2026-01-08
Update core to 2.36.0
2026-01-08 17:26:46 +01:00
adbenitez 220ae351ee update CHANGELOG 2026-01-08 17:25:52 +01:00
adbenitez 4b09158535 update deltachat-core-rust to 'chore(release): prepare for 2.36.0' of 'v2.36.0' 2026-01-08 17:18:26 +01:00
adb e3c423cdd4 Merge pull request #4154 from deltachat/prep-2.35.0
prepare 2.35.0 release
2026-01-08 16:18:29 +01:00
adbenitez 7840f5c577 prepare 2.35.0 release 2026-01-08 16:11:00 +01:00
adb 87091c4214 Merge pull request #4153 from deltachat/adb/update-translations-2026-01-08
update translations
2026-01-08 16:09:27 +01:00
adbenitez 4996ca9d93 update translations 2026-01-08 16:02:35 +01:00
adb 9b8511b7f2 Merge pull request #4151 from deltachat/adb/issue-4133
avoid crash in FetchForegroundService.onCreate()
2026-01-08 15:50:01 +01:00
adbenitez a66fc7bf10 tweak fix 2026-01-07 18:19:44 +01:00
adbenitez 75cad1ab9c update changelog 2026-01-07 17:32:46 +01:00
adb be974b3fc8 Merge branch 'main' into adb/issue-4133 2026-01-07 17:22:07 +01:00
adbenitez 777ef609ff avoid crash in FetchForegroundService.onCreate() 2026-01-07 17:13:36 +01:00
adbenitez 224964db95 fix TAG in FetchForegroundService 2026-01-07 16:08:51 +01:00
B. Petersen 5bfc91de1b remove unused strings, add new deprecated strings 2026-01-07 15:57:02 +01:00
B. Petersen b9d1aa4338 clarify position of "Add Second Device" settings
clarify, that the "Add Second Device" settings are within Delta Chat,
not within system or app settings.

we got reports of ppl searching within system settings,
esp. on iOS, some apps have additional settings there,
so it is not so far fetched.

but also for other OS, the hint to start Delta Chat is useful
and not only noise.
2026-01-05 13:29:27 +01:00
B. Petersen e296dad260 update translations, add Kabyl (Taqbaylit) language 2026-01-05 13:26:05 +01:00
adb 4e372511fb Merge pull request #4145 from deltachat/adb/issue-4143
use DC_EVENT_TRANSPORTS_MODIFIED
2026-01-03 16:24:43 +01:00
adbenitez e0a71d0fff use DC_EVENT_TRANSPORTS_MODIFIED to sync changes from remote devices 2026-01-03 16:13:32 +01:00
adb 5bcdd4cf16 Merge pull request #4144 from deltachat/update-core-and-stuff-2026-01-02
Update core to 2.35.0
2026-01-02 14:49:26 +01:00
adbenitez 68b0b365da update translations 2026-01-02 14:42:18 +01:00
adbenitez 227046a739 update changelog 2026-01-02 14:40:03 +01:00
adbenitez f9127341e7 update deltachat-core-rust to 'chore(release): prepare for 2.35.0' of 'v2.35.0' 2026-01-02 14:38:16 +01:00
adb 184da9c20e Merge pull request #4142 from deltachat/r10s/remove-email-from-account-switcher
remove email from account switcher
2026-01-02 13:47:55 +01:00
adb 96b5cabeb6 Merge branch 'main' into r10s/remove-email-from-account-switcher 2026-01-02 13:45:27 +01:00
adb 4a8706b9e3 Merge pull request #4139 from deltachat/adb/issue-4138
avoid NPE accessing location manager, event center and notification center
2025-12-29 23:02:27 +01:00
adb 94a10afac2 Merge pull request #4134 from deltachat/adb/issue-4124
Harden security around relays and profile management
2025-12-29 23:01:43 +01:00
B. Petersen a0660faf07 update CHANGELOG 2025-12-24 13:42:36 +01:00
B. Petersen 26170fc147 no showing email in account switcher
even if that is done for non-chatmail only,
it raises false expectations for other profiles,
and here it is easy to avoid - if that is really an important information for the user,
they can add it to the label.

also, this synchronizes UI which what is done on desktop/iOS
2025-12-24 13:40:18 +01:00
adbenitez 8d6147761b add comment 2025-12-23 20:11:03 +01:00
adbenitez 9d6abfd979 avoid wrongly showing emoji icon while recording audio and event arrives 2025-12-23 20:08:57 +01:00
adbenitez 46f4324478 upload mappings to release 2025-12-22 20:03:44 +01:00
adbenitez bfeab57744 update screenshots 2025-12-22 19:36:26 +01:00
adbenitez 2e99926e82 Fix file_provider_paths.xml to support SD card 2025-12-22 19:21:22 +01:00
adbenitez c28148b843 avoid NPE accessing location manager, event center and notification center 2025-12-22 16:32:27 +01:00
B. Petersen b6b3fe12b6 fix: add members, not subscribers to emails 2025-12-21 16:44:20 +01:00
adbenitez 56c00a7c43 update changelog 2025-12-18 22:11:54 +01:00
adb 4803bcccdd Merge branch 'main' into adb/issue-4124 2025-12-18 22:09:44 +01:00
adb 92f17d5156 Merge pull request #4094 from deltachat/adb/remove-realtime-toggle
remove realtime preference toggle
2025-12-18 22:09:25 +01:00
adbenitez 5310c41694 protect profile deletion 2025-12-18 22:08:26 +01:00
adbenitez a54f3ed1a2 require authorization for relays management 2025-12-18 20:21:52 +01:00
adb 8ceb12370f Update src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
Co-authored-by: Hocuri <hocuri@gmx.de>
2025-12-17 12:07:01 +01:00
adb 0a7839fb7d Update src/main/java/org/thoughtcrime/securesms/ApplicationContext.java
Co-authored-by: Hocuri <hocuri@gmx.de>
2025-12-17 12:06:50 +01:00
adb 76e4c59119 Merge pull request #87 from ArcaneChat/copilot/add-email-subject-field
Add subject field for mailing list chats
2025-12-16 20:31:45 +01:00
adbenitez 33b69b9f3a update scripts 2025-12-16 20:30:50 +01:00
adbenitez b4f5e2d124 allow to set subject in email threads 2025-12-16 20:25:05 +01:00
adb 6853d797f2 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-16 18:58:07 +01:00
adbenitez fa7a3c9c32 Merge remote-tracking branch 'upstream/main' 2025-12-16 18:50:00 +01:00
adb a70c76f7f3 Merge pull request #4132 from deltachat/prep-2.34.0
prepare 2.34.0
2025-12-16 17:55:19 +01:00
adbenitez 87a6a12367 prepare 2.34.0 2025-12-16 17:50:29 +01:00
adb 9bcdcd918e Merge pull request #4130 from deltachat/update-core-and-stuff-2025.12.16
Update core to 2.34.0
2025-12-16 17:39:45 +01:00
adbenitez 7454454b63 update changelog 2025-12-16 17:35:11 +01:00
adbenitez 69a5e42640 update RPC bindings 2025-12-16 17:35:04 +01:00
adbenitez 1e86ed225d update translations 2025-12-16 17:34:28 +01:00
adbenitez 4cd7977ced update deltachat-core-rust to 'chore: prepare 2.34.0 release' of 'v2.34.0' 2025-12-16 17:29:44 +01:00
adb 8d0f1a6602 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-16 17:25:40 +01:00
adb 0ce10cbb35 Merge pull request #4129 from deltachat/adb/issue-4116-p2
do accounts migration in background
2025-12-16 17:23:24 +01:00
adb 7decf02fd3 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-16 14:49:57 +01:00
Hocuri 114731f722 Make sending of statistics into a setting (#3794)
Counterpart of https://github.com/chatmail/core/pull/6851

* Make sending of statistics into a setting

* feat: Count securejoin sources and UI paths

* feat: Rename self_reporting to send_statistics

* Adapt core's API change

* WIP, untested: Adapt to a rename on the core side

* Adapt to generated jsonrpc

* New strings and a new dialog

* Adapt to the API change

* Rewording: `...and support research`

* "More Info" button rather than link

* Small fixes

* Open the correct survey (though it doesn't work yet)

* Changelog

* Update help

* Fix compile error

* Fix compilation

* Revert submodule change

* Don't show a device message yet

* Move "Send Statistics" setting

* Fix compilation error

* Remove unused constant

---------

Co-authored-by: adb <adb@merlinux.eu>
2025-12-16 13:10:51 +01:00
B. Petersen 2a7025ef17 stop using deprecated ask_delete_messages_simple 2025-12-15 18:09:06 +01:00
adb 257003ba09 Merge branch 'main' into adb/issue-4116-p2 2025-12-15 17:29:49 +01:00
adbenitez ca110c6d74 improve code 2025-12-15 17:28:48 +01:00
adbenitez 09f66caadc indent code 2025-12-15 17:23:49 +01:00
B. Petersen 4a73ac19c2 tweak another occurance of 'Chats and Media' 2025-12-15 17:21:04 +01:00
B. Petersen 9c3281e182 chats preferences is called just 'Chats'
it was renamed first on iOS from 'Chats and Media' to 'Chats'
to not confuse with 'All Apps and Media' -
however, that point is also valid for android,
but even if not, it is good for inner consistency and simpler documentation.

moreover, the settings are in reality also about contacts and more,
so just a broad chats is fine.

but also for outer consistency,
this seems better - also in quite some other apps,
it is just called 'chats'
2025-12-15 17:21:04 +01:00
adbenitez a84e17635a Merge branch 'adb/issue-4116-p2' of https://github.com/deltachat/deltachat-android into adb/issue-4116-p2 2025-12-15 17:20:50 +01:00
adbenitez af7d915d14 fix gplay flavor 2025-12-15 17:20:33 +01:00
adb f679376445 Merge branch 'main' into adb/issue-4116-p2 2025-12-15 16:38:00 +01:00
adbenitez 4f32b994fa do accounts migration in background
move accounts migration to background thread and wait for it in
foreground to avoid ANR in background in ApplicationContext
2025-12-15 16:29:13 +01:00
adb dbb9115024 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-15 12:56:15 +01:00
adb af640044c9 Merge pull request #4125 from deltachat/r10s/simplify-delete-wording
simpler 'really delete?' wordings
2025-12-15 12:55:06 +01:00
adb bece13d75e Merge pull request #4126 from deltachat/adb/issue-4059
avoid TransactionTooLargeException in LogViewActivity
2025-12-15 12:54:51 +01:00
adbenitez 1b9c619739 update changelog 2025-12-15 12:53:16 +01:00
adb ccd8df85e4 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-15 12:51:27 +01:00
adbenitez 1195945637 update changelog 2025-12-15 12:48:56 +01:00
adb 2e77ae8f4d Merge branch 'main' into adb/issue-4059 2025-12-15 12:48:08 +01:00
adbenitez c8fefca916 avoid TransactionTooLargeException in LogViewActivity 2025-12-15 12:44:50 +01:00
B. Petersen 6acb2203ef simpler 'really delete?' wordings
this removes the addendum 'on all your devices'
from the 'really delete?' questions.

- after polls, and looking at what other apps are doing,
  it is just the default expectation, that a message is deleted from all devices,
  also, we do not have an option (nor do not want to have)

- so, at that point - fresh user, one device -
  there is no need to clutter with other convepts and relativation.
  also, most user will never have more devices.

- ppl anyway do not read -
  but if they do, it is good to have things as much on point as possible :)

- the question fits better to the "delete for everyone" option

- simplify code and strings,
  as device message deletion is no longer special
  (there, we never said "on all your devices")

the addendum 'from your devices' was added as
one year ago, for technical limitations, deletion was really on one device.
when we removed that limitation, we added to addendum,
so ppl used to old apps have a chance to get the change.
meanwhile, the new default is clear and settled and the addendum
does more harm and raise questions than doing good.
2025-12-15 11:29:02 +01:00
adb 46c627dde1 Merge pull request #4123 from deltachat/adb/issue-4112
don't show `new_classic_contact` option in add-relay mode
2025-12-14 15:29:18 +01:00
adbenitez 1366bc3571 don't show new_classic_contact option in add-relay mode 2025-12-13 20:10:31 +01:00
adb 20c487be7a Merge pull request #4122 from deltachat/adb/update-rpc-bindings-2025.12.13
update RPC bindings
2025-12-13 20:05:40 +01:00
adbenitez ef674746d9 update RPC bindings 2025-12-13 20:04:43 +01:00
adbenitez e65268979c tweak intro image 2025-12-13 19:03:32 +01:00
adbenitez e289432a09 Merge remote-tracking branch 'upstream/main' 2025-12-13 11:51:12 +01:00
adbenitez 8509049791 update intro image 2025-12-13 11:50:35 +01:00
adbenitez d1b490a02d update spanish strings 2025-12-13 11:09:22 +01:00
adb 64d33bebbd Merge pull request #4119 from deltachat/adb/issue-4118
avoid NPE in InstantOnboardingActivity.onCreate
2025-12-12 17:14:38 +01:00
adbenitez 0a44d00451 add comment 2025-12-12 17:04:36 +01:00
adb 353b2c0488 Merge pull request #4121 from deltachat/adb/issue-4114
Allow to add relay from clipboard or image
2025-12-12 16:40:33 +01:00
B. Petersen 85c68d0485 remove dead account-creation-from-qr code 2025-12-12 16:39:27 +01:00
adbenitez 12c2237e00 remove leftover 2025-12-12 16:30:58 +01:00
adbenitez 68f9533392 Allow to add relay from clipboard or image if camera permission is not granted 2025-12-12 16:29:01 +01:00
adb e93efa318a Merge pull request #4117 from deltachat/adb/issue-4116
add more logging
2025-12-12 15:47:15 +01:00
adbenitez fbc01ff0a2 switch to new profile if no URI is available 2025-12-12 15:05:04 +01:00
adbenitez b0ca48740a avoid NPE in InstantOnboardingActivity.onCreate 2025-12-12 15:01:41 +01:00
adbenitez fa795dd149 add more logging 2025-12-12 14:28:17 +01:00
B. Petersen 0a4f1ded54 tune down 'account' wording 2025-12-11 18:40:00 +01:00
adbenitez b2e88d50fd fix typo 2025-12-10 17:24:01 +01:00
adbenitez 2a54867724 improve welcome message and intro graphic 2025-12-10 16:10:48 +01:00
adbenitez 210e5c7fbc Merge remote-tracking branch 'upstream/main' 2025-12-10 13:32:40 +01:00
adb a5818c7cba Merge pull request #4110 from deltachat/prep-2.33.1
prepare 2.33.1
2025-12-10 13:29:32 +01:00
adbenitez 059d517d0d update build.gradle 2025-12-10 12:51:05 +01:00
adbenitez 5c3eb0ac82 update changelog 2025-12-10 12:48:20 +01:00
adbenitez efa04fce18 update translations 2025-12-10 12:48:15 +01:00
adb fb9771adde Merge pull request #4106 from deltachat/adb/issue-4104
remove unnecessary lock
2025-12-10 12:44:42 +01:00
adb 2930d0dc2d Merge branch 'main' into adb/issue-4104 2025-12-10 12:18:39 +01:00
adb e6e85ed812 Merge pull request #4109 from deltachat/adb/add-missing-padding-conversationactivity
fix ConversationActivity on Android <11
2025-12-10 12:16:52 +01:00
adbenitez 7837a99e7b fix ConversationActivity on Android <11 2025-12-10 12:13:46 +01:00
adb 8c546dc358 Merge pull request #4107 from deltachat/adb/improve-add-relay-workflow
improve UX of adding new relays via QR or clicking links
2025-12-10 11:37:18 +01:00
adb f0c75ec3c6 Merge pull request #4108 from deltachat/adb/allow-dcaccount-in_webview
add dcaccount and dclogin to schema whitelist
2025-12-10 11:36:58 +01:00
adbenitez 658283c4e8 add dcaccount and dclogin to schema whitelist 2025-12-10 11:06:15 +01:00
adbenitez 0ef4d645df allow to add relays via link 2025-12-10 10:57:55 +01:00
adbenitez 91713911ee improve UX of adding new relays via QR 2025-12-10 09:58:56 +01:00
adbenitez 1c0a54d75e remove unnecessary lock 2025-12-09 18:39:55 +01:00
B. Petersen 0f82b3ca93 deprecate strings used to create profiles from main scanner
instead, one should be asked whether to add a transport.

- it is very probably the more wanted action -
  when one wants a new profile, it is better to learn first,
  that one has to go over "switch profil"

- less can go wrong -
  if ppl play around,
  adding a transport is less harmful than a new profile
  where they do not know how to switch, send from different ones etc.
2025-12-09 18:27:47 +01:00
adb 1a80187c07 Merge pull request #4103 from deltachat/adb/issue-4102
avoid NPE in WebxdcGarbageCollectionWorker
2025-12-09 18:25:34 +01:00
adbenitez e315d0505c fix startWork 2025-12-09 15:05:42 +01:00
adbenitez 10b966a7c8 store context and get Rpc on startWork 2025-12-09 12:34:39 +01:00
adbenitez 3c65408f25 avoid NPE in WebxdcGarbageCollectionWorker 2025-12-09 11:36:20 +01:00
adb 1e31b479e8 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-09 10:04:37 +01:00
adbenitez 6f1f446aa8 Merge remote-tracking branch 'upstream/main' 2025-12-08 19:17:03 +01:00
adbenitez e5149ac255 Merge remote-tracking branch 'upstream/main' 2025-12-08 19:16:02 +01:00
adb 403539da35 Merge pull request #4100 from deltachat/prep-2.33.0
prepare 2.33.0
2025-12-08 17:40:18 +01:00
adbenitez 443501112d prepare 2.33.0 2025-12-08 17:39:31 +01:00
adb bea2effb89 Merge pull request #4099 from deltachat/adb/update-translations-2025.12.08
update translations
2025-12-08 17:34:41 +01:00
adbenitez b2d875cc61 update translations 2025-12-08 17:30:55 +01:00
B. Petersen e94f571744 remove more deprecated strings 2025-12-08 16:25:19 +01:00
adb cf91468f65 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-08 15:50:44 +01:00
adb 69c6fdd070 Merge pull request #4096 from deltachat/adb/rename-relayutil
Rename RelayUtil to ShareUtil
2025-12-08 15:37:39 +01:00
B. Petersen 1b9bfc37ad remove deprecated strings 2025-12-08 15:20:30 +01:00
B. Petersen 8cb1c195b1 mark unused string as deprecated 2025-12-08 13:38:20 +01:00
B. Petersen 41f963332c remove 'email' from welcome message 2025-12-08 13:38:20 +01:00
B. Petersen dc6dee6a1a reword 'transport' to 'relay' 2025-12-08 13:38:20 +01:00
adbenitez 35becfc63b rename RelayUtil to ShareUtil 2025-12-08 12:54:42 +01:00
adb 6c31d8cf85 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-08 12:48:32 +01:00
adb f6c25a2015 Merge pull request #4085 from deltachat/adb/issue-4082
improve KeepAliveService
2025-12-08 12:47:58 +01:00
adbenitez 4c8d27f4bb Merge branch 'adb/remove-realtime-toggle' of https://github.com/deltachat/deltachat-android into adb/remove-realtime-toggle 2025-12-07 17:33:11 +01:00
adbenitez 87c49dc680 update changelog 2025-12-07 17:29:07 +01:00
adb f0d5695729 Merge branch 'main' into adb/remove-realtime-toggle 2025-12-07 17:27:55 +01:00
adb be01c3b14f Merge branch 'main' into adb/issue-4082 2025-12-07 17:21:50 +01:00
adb bf435f4303 Merge pull request #4090 from deltachat/adb/issue-4089
only save common image formats to Pictures
2025-12-07 17:21:31 +01:00
adbenitez 0289f47adc remove realtime preference toggle 2025-12-07 17:18:39 +01:00
adb 1f455c435f Merge pull request #4093 from deltachat/adb/improve-relay-list-item-layout
improve realy_list_item layout
2025-12-07 12:55:03 +01:00
adbenitez db8d4b5daf improve realy_list_item layout 2025-12-07 12:53:29 +01:00
adb 5ac7f9ee11 Merge branch 'main' into adb/issue-4082 2025-12-07 12:34:43 +01:00
adb 6c80f85290 Merge branch 'main' into adb/issue-4089 2025-12-07 12:34:30 +01:00
adb 744bca93e8 Merge pull request #4092 from deltachat/link2xt/flake-android-36
flake.nix: update Android SDK from 35 to 36
2025-12-07 12:34:13 +01:00
adb 601a65a1cb Merge pull request #4080 from deltachat/adb/add-transport-list-activity
add screen to list/add/remove transports/relays
2025-12-07 12:33:50 +01:00
adbenitez 9f2523da21 use R.string.def, don't add extra string 2025-12-07 11:50:47 +01:00
link2xt c936d51bac flake.nix: update Android SDK from 35 to 36
Closes <https://github.com/deltachat/deltachat-android/issues/4091>
2025-12-06 21:02:00 +00:00
adbenitez b77862c290 update changelog 2025-12-05 23:48:21 +01:00
adbenitez c495c3936b only save common image formats to Pictures 2025-12-05 23:45:27 +01:00
adbenitez a5a5819eec add makefile 2025-12-05 23:18:41 +01:00
adbenitez 429c3fb57c tweak changelog 2025-12-05 23:08:10 +01:00
adb 0c9bec1d3d Merge branch 'main' into adb/add-transport-list-activity 2025-12-05 23:07:06 +01:00
adb 51771669d3 Merge pull request #4088 from deltachat/update-core-and-stuff-2025.12.5
Update core to 2.33.0
2025-12-05 23:06:18 +01:00
adbenitez f32651cd9d update RPC bindings 2025-12-05 23:03:33 +01:00
adbenitez 07a2663591 update translations 2025-12-05 22:59:22 +01:00
adbenitez fe9ee4c484 update changelog 2025-12-05 22:55:12 +01:00
adbenitez 1425815467 update deltachat-core-rust to 'chore(release): prepare for 2.33.0' of 'v2.33.0' 2025-12-05 22:52:47 +01:00
adbenitez eea4a1b124 Merge remote-tracking branch 'upstream/main' 2025-12-05 22:37:50 +01:00
adb 72c7772e89 Merge pull request #4086 from deltachat/adb/set-clipToPadding-in-xml
set clipToPadding in xml instead of dynamically
2025-12-05 22:37:18 +01:00
adb c4f0dc2f2d Merge branch 'main' into adb/set-clipToPadding-in-xml 2025-12-05 22:36:47 +01:00
adb 2d0645465e Merge pull request #4087 from deltachat/adb/make-last-item-visible-in-chatlist
make last item fully visible when scrolling bottom of chat list
2025-12-05 22:27:06 +01:00
adbenitez 5031993289 update changelog 2025-12-05 21:22:07 +01:00
adbenitez 8e944552b3 make last item fully visible in chat list 2025-12-05 21:18:16 +01:00
adbenitez 342b071189 set clipToPadding in xml instead of dynamically 2025-12-05 21:12:11 +01:00
Korb 32248b4635 Adding Russian metadata translation (#62)
* Create ru-RU/title.txt

* Create ru-RU/short_description.txt
2025-12-05 19:00:30 +01:00
adbenitez 89b4be49c8 tweak dialog buttons's color 2025-12-05 01:55:04 +01:00
adbenitez b3230abd68 update changelog 2025-12-05 01:40:17 +01:00
adbenitez e26ac3d264 improve KeepAliveService 2025-12-05 00:29:58 +01:00
adbenitez fcc98e81d5 Merge remote-tracking branch 'upstream/main' 2025-12-04 23:19:42 +01:00
adb bd4fa0b032 Merge branch 'main' into adb/add-transport-list-activity 2025-12-04 23:16:58 +01:00
adb d4675f25ec Merge pull request #4084 from deltachat/adb/fix-log-view
use DcContext.getInfo() in LogViewFragment
2025-12-04 21:49:05 +01:00
adbenitez a2a440e57b use DcContext.getInfo() in LogViewFragment 2025-12-04 21:19:17 +01:00
adbenitez f24b2e2540 update changelog 2025-12-04 20:15:55 +01:00
adbenitez f8d2cd7bf3 Merge branch 'adb/add-transport-list-activity' of https://github.com/deltachat/deltachat-android into adb/add-transport-list-activity 2025-12-04 20:12:14 +01:00
adbenitez 1ff99ddbe4 add "add transport" floating button 2025-12-04 20:11:42 +01:00
adb 13bf0d6f9f Merge branch 'main' into adb/add-transport-list-activity 2025-12-04 18:42:58 +01:00
adbenitez d24f53895e allow to add transport from QR scanner 2025-12-04 18:42:14 +01:00
B. Petersen 66e8fa9d9e clearly say that experiments may be unstable/changed/removed
by the bare title, this is not clear to everyone.
technically, i also tried <PreferenceCategory summary>,
but that does not wrap text.

moved down 'app picker' for better layout and to match
order of other UI.
2025-12-03 20:28:33 +01:00
adbenitez 230fb79584 allow removing transports 2025-12-02 05:32:21 +01:00
adbenitez 9181a9c398 add uncommited/missing import in RelayListActivity 2025-12-02 05:21:02 +01:00
adbenitez 2f05b20b0f allow editing transports 2025-12-02 05:20:42 +01:00
adbenitez 115ffae588 create RelayListActivity with basic listing of relays/transports 2025-12-02 04:46:30 +01:00
adb 7455e56f11 Merge branch 'main' into adb/add-transport-list-activity 2025-12-01 23:34:05 +01:00
adb d4b8e4bafa Merge pull request #4081 from deltachat/adb/remove-superfluous-dynamic-theme-usage
remove superfluous DynamicTheme usage
2025-12-01 23:21:15 +01:00
adbenitez 67a2e3fcd9 Merge remote-tracking branch 'upstream/main' 2025-12-01 22:04:51 +01:00
adbenitez f12d6855e9 remove superfluous DynamicTheme usage 2025-12-01 21:46:09 +01:00
adbenitez 56459e7e7a add TransportListActivity 2025-12-01 21:26:37 +01:00
adb d5244f5f96 Merge pull request #4079 from deltachat/update-core-and-stuff-2025.12.01
update core to 2.29.0
2025-12-01 21:02:16 +01:00
adbenitez c8722ddcc6 update translations 2025-12-01 20:59:37 +01:00
adbenitez 5874001ec2 update changelog 2025-12-01 20:58:00 +01:00
adbenitez b94a4cbe8b update deltachat-core-rust to 'chore(release): prepare for 2.29.0' of 'v2.29.0' 2025-12-01 20:04:20 +01:00
B. Petersen 5d0b5f7947 remove InfoPlist_NSContactsUsageDescription, this should no longer go to InfoPlist files 2025-12-01 17:54:57 +01:00
adbenitez a193ee6cdf add publishing to ZapStore to CI 2025-11-30 03:00:58 +01:00
B. Petersen ff438731d8 mark strings as deprecated 2025-11-29 13:20:55 +01:00
B. Petersen 08913a5e76 adapt wording to 'delete contact' question; we no longer check the address book 2025-11-29 13:19:24 +01:00
adb e7d2656613 Merge pull request #4074 from deltachat/adb/remove-read-contacts-permission
remove need for READ_CONTACS permission
2025-11-29 02:42:58 +01:00
adbenitez f3210f2626 remove need for READ_CONTACS permission 2025-11-29 02:25:23 +01:00
adb 0b1fa7c7d1 Merge pull request #4073 from deltachat/adb/remove-dev-mode
remove mostly unused dev mode
2025-11-29 02:14:27 +01:00
adbenitez 6b6d48f5da remove mostly unused dev mode 2025-11-29 02:02:22 +01:00
adbenitez 3b9e989195 Merge remote-tracking branch 'upstream/main' 2025-11-29 01:56:03 +01:00
adbenitez 4af065aad9 Merge remote-tracking branch 'upstream/main' 2025-11-29 00:46:41 +01:00
B. Petersen b0e918caab remove explains partly refering to shared usage 2025-11-28 23:55:11 +01:00
B. Petersen a6384dc679 clearer category name 2025-11-28 23:55:11 +01:00
B. Petersen 838db45a74 hiding a categoty hides its options 2025-11-28 23:55:11 +01:00
B. Petersen 44328f1086 update advanced settings
- move 'server' up
- move other options down, after experimental
- introduce 'legacy' section
2025-11-28 23:55:11 +01:00
adb 2064a2f0ea Merge pull request #4071 from deltachat/adb/edge-to-edge3
use recommended way of enabling edge-to-edge
2025-11-28 22:01:58 +01:00
adbenitez 6b066d9428 update comment in BaseActionBarActivity 2025-11-28 21:56:25 +01:00
adb d68508c0cf Merge pull request #4070 from deltachat/adb/update-changelog-2025.11.28
update changelog
2025-11-28 18:15:50 +01:00
adbenitez 5f5f303a93 update changelog 2025-11-28 18:14:38 +01:00
adb 71bb0105ab Merge pull request #4066 from deltachat/adb/webview-links-tweaks
add URL schemes whitelist
2025-11-28 18:12:23 +01:00
adb 796c81af61 Merge pull request #4067 from deltachat/adb/target-sdk-36
Target SDK 36
2025-11-28 18:11:39 +01:00
adb 329c7a52a7 Merge pull request #4064 from deltachat/adb/edge-to-edge2
Make  edge-to-edge great again
2025-11-28 18:10:16 +01:00
B. Petersen b19d39b794 use updated texts in tests 2025-11-28 14:27:18 +01:00
B. Petersen b4d8f1e04f remove all png files before help creation 2025-11-28 14:25:03 +01:00
adbenitez febf2cb105 (temporarily) opt-out predictive back 2025-11-28 02:19:00 +01:00
adbenitez ef00e04638 update compileSdk and targetSdkVersion to 36 in build.gradle 2025-11-28 01:49:49 +01:00
adb 1042f4b4f8 Merge branch 'adb/edge-to-edge2' into adb/webview-links-tweaks 2025-11-28 01:38:39 +01:00
adb 0180d63821 Merge branch 'main' into adb/edge-to-edge2 2025-11-28 01:38:20 +01:00
adb 8b8c6b6bbb Merge pull request #4050 from deltachat/adb/issue-4049
garbage-collect storage of deleted webxdc apps
2025-11-28 01:37:31 +01:00
adbenitez fe8ad85f89 assume core will handle unexisting accounts 2025-11-28 01:35:03 +01:00
adbenitez c938c4dcd9 check for existing account IDs 2025-11-28 01:26:51 +01:00
adb 35f6a06406 Merge branch 'main' into adb/issue-4049 2025-11-27 19:28:49 +01:00
adbenitez db7365c3b3 restrict supported URL schemas 2025-11-27 19:10:18 +01:00
adbenitez 51d7e5df62 update changelog 2025-11-27 07:39:51 +01:00
adb 28f7fbf806 Merge branch 'main' into adb/edge-to-edge2 2025-11-27 07:39:00 +01:00
adbenitez d6d3dd8930 enable edge-to-edge only in SDK 30+ 2025-11-27 07:20:05 +01:00
adbenitez 83571ba0bf ConversationListActivity: fix display of searchToolbar 2025-11-26 23:55:51 +01:00
adbenitez 34fc888c5e WebViewActivity: improve integrated map's edge-to-edge 2025-11-26 23:40:23 +01:00
adbenitez 0a7be040c3 NewContactActivity: small tweaks 2025-11-26 23:11:27 +01:00
adbenitez 448334a8a2 ShareActivity: properly implement edge-to-edge 2025-11-26 23:01:28 +01:00
adbenitez 5141116f38 QrShowActivity: properly implement edge-to-edge 2025-11-26 22:54:20 +01:00
adbenitez 310500b8d7 ProfileActivity: properly implement edge-to-edge 2025-11-26 22:20:59 +01:00
adbenitez 7bc0ab858a ContactSelectionActivity: properly implement edge-to-edge 2025-11-26 22:13:49 +01:00
adbenitez ca438ca3a3 AllMediaActivity: properly implement edge-to-edge 2025-11-26 21:55:45 +01:00
adbenitez 2a2cb7c26e QrActivity: properly implement edge-to-edge 2025-11-26 21:24:58 +01:00
adbenitez 9e5a2d30ed WelcomeActivity: properly implement edge-to-edge 2025-11-26 20:57:50 +01:00
adbenitez 5b8c0db287 WebxdcStoreActivity: properly implement edge-to-edge 2025-11-26 20:32:06 +01:00
adbenitez 08864ae250 WebViewActivity: properly implement edge-to-edge 2025-11-26 20:26:48 +01:00
adbenitez ea6bd9283c EditTransportActivity: properly implement edge-to-edge 2025-11-26 20:11:49 +01:00
adbenitez 83dfca249d LogViewActivity: properly implement edge-to-edge 2025-11-26 19:59:23 +01:00
adbenitez c7d41d1b84 InstantOnboardingActivity: properly implement edge-to-edge 2025-11-26 19:38:55 +01:00
adbenitez b09838f033 ConversationListActivity: properly implement edge-to-edge 2025-11-26 07:55:35 +01:00
adbenitez 10164032f0 GroupCreateActivity: properly implement edge-to-edge 2025-11-26 06:28:25 +01:00
adbenitez 7829ff0a83 CreateProfileActivity: properly implement edge-to-edge 2025-11-26 06:01:49 +01:00
adbenitez aaa8a07511 ConversationListArchiveActivity: properly implement edge-to-edge 2025-11-26 05:43:12 +01:00
adbenitez cd2aedcc6b ConversationActivity: properly implement edge-to-edge 2025-11-26 04:05:09 +01:00
adbenitez 553610cfa4 BlockedContactsActivity: properly implement edge-to-edge 2025-11-26 03:14:43 +01:00
adbenitez ceea00e2cc ApplicationPreferencesActivity: properly implement edge-to-edge 2025-11-26 02:41:33 +01:00
adbenitez ef512b0f14 RegistrationQrActivity: properly implement edge-to-edge 2025-11-26 01:10:57 +01:00
adbenitez 83a7e4df3f BackupTransferActivity: properly implement edge-to-edge 2025-11-26 00:49:08 +01:00
adbenitez d4aa90cc0c ProxySettingsActivity: properly implement edge-to-edge 2025-11-26 00:31:12 +01:00
adbenitez 342d820095 ChatBackgroundActivity: properly implement edge-to-edge 2025-11-25 23:29:19 +01:00
adbenitez 18d9c00d13 NewContactActivity: properly implement edge-to-edge 2025-11-25 22:30:20 +01:00
B. Petersen 8df792a8e3 mark strings that are about to be no longer needed as deprecated 2025-11-25 20:25:06 +01:00
B. Petersen 0693f8ad60 mark strings that are about to be no longer needed as deprecated 2025-11-25 13:50:39 +01:00
adbenitez c6ff66ba51 add missing import 2025-11-24 21:36:59 +01:00
adb eaa6a68e4f Merge pull request #4060 from deltachat/adb/issue-4058
add output of `Rpc.getStorageUsageReportString()` to log
2025-11-24 21:16:23 +01:00
adbenitez 6cf044d7c9 Merge remote-tracking branch 'upstream/main' 2025-11-24 19:24:43 +01:00
adbenitez 174170ee4f update changelog 2025-11-24 00:54:09 +01:00
adbenitez 3ee2c3f0be add output of Rpc.getStorageUsageReportString() to log 2025-11-24 00:44:34 +01:00
adbenitez 339ab13f64 update changelog 2025-11-24 00:18:54 +01:00
adbenitez 777e6f40cb use getExistingMsgIds() 2025-11-23 23:39:47 +01:00
adb 577ec92c53 Merge branch 'main' into adb/issue-4049 2025-11-23 23:29:50 +01:00
adb d41679f2c0 Merge pull request #4057 from deltachat/update-core-and-stuff-2025.11.23
Update core to 2.28.0
2025-11-23 23:28:14 +01:00
adbenitez 2bfb2ae58f update translations 2025-11-23 23:25:42 +01:00
adbenitez ca56ca2dd1 update JSON-RPC bindings 2025-11-23 23:04:29 +01:00
adbenitez ca35a0635b update changelog 2025-11-23 23:01:03 +01:00
adbenitez 127f29a17e update deltachat-core-rust to 'chore(release): prepare for 2.28.0' of 'v2.28.0' 2025-11-23 22:55:20 +01:00
adb 9f40d84a51 Merge branch 'main' into adb/issue-4049 2025-11-23 22:50:04 +01:00
adb 21eab6dfe9 Merge pull request #4045 from deltachat/adb/improve-webxdc-link-handling
allow to open all links (asking before with dialog)
2025-11-23 22:48:33 +01:00
adbenitez d8ea2ad273 only ask to open link in webxdc 2025-11-23 22:18:55 +01:00
adbenitez a66b4d8923 allow to open link directly in local/offile help 2025-11-23 22:14:47 +01:00
adbenitez 3c9a289e2d convert URL to ASCII 2025-11-23 19:50:39 +01:00
adbenitez 29daa1ee89 tweak dialog, allow to copy to clipboard 2025-11-23 19:21:20 +01:00
adbenitez 769a07449f update changelog 2025-11-23 18:48:30 +01:00
adbenitez 0993745c33 allow to open all links (asking before with dialog) 2025-11-23 18:41:04 +01:00
adb f1d9ddeed6 Merge branch 'main' into adb/issue-4049 2025-11-23 16:20:05 +01:00
adb 2218ae91e0 Merge branch 'main' into adb/improve-webxdc-link-handling 2025-11-23 16:16:29 +01:00
adb 21a8ba9674 Merge pull request #4053 from deltachat/adb/improve-buinding-and-releasing-docs
improve building and releasing docs
2025-11-23 16:15:01 +01:00
adbenitez 153fe5f1e7 add trailing new line 2025-11-23 16:13:04 +01:00
adbenitez ec49ac8eb6 improve building and releasing docs 2025-11-22 22:43:21 +01:00
adb da1e71b2d2 Merge branch 'main' into adb/issue-4049 2025-11-22 22:28:03 +01:00
adbenitez 00027ad8f3 remove unused imports 2025-11-22 20:05:46 +01:00
adbenitez 81e7f37d61 move WebxdcGarbageCollectionWorker to webxdc package 2025-11-22 20:05:21 +01:00
adb 4e6c1e3eaf Merge pull request #4051 from deltachat/link2xt/webxdc-garbage-collector-worker
Add WebxdcGarbageCollectionWorker
2025-11-22 19:25:01 +01:00
link2xt 77eda90923 Add WebxdcGarbageCollectionWorker 2025-11-22 16:40:58 +00:00
adbenitez 0a7b9e7ea2 add support for gemini links 2025-11-22 15:35:51 +01:00
adb 718bf0d74b Merge pull request #4035 from deltachat/adb/issue-4020
customize phone number regex in Linkifier
2025-11-22 15:07:33 +01:00
adbenitez 82c963c38f update f-droid store description 2025-11-22 00:35:48 +01:00
adbenitez 999a33e77c remove public bot list from menu 2025-11-22 00:35:30 +01:00
adbenitez e96b4db126 Merge branch 'adb/issue-4049' of https://github.com/deltachat/deltachat-android into adb/issue-4049 2025-11-22 00:06:02 +01:00
adbenitez 118d4f864f add startup delay to avoid bottleneck on app start 2025-11-22 00:05:40 +01:00
adb d6259f112e Merge branch 'main' into adb/issue-4049 2025-11-22 00:03:16 +01:00
adbenitez f9eb55170d add zapstore.yaml 2025-11-21 23:42:11 +01:00
adbenitez 2bb104a234 add geo: support in message bubbles 2025-11-21 23:41:56 +01:00
adbenitez b75b29cf08 Merge remote-tracking branch 'upstream/main' 2025-11-21 23:13:00 +01:00
adbenitez 2a3934cbd7 garbage-collect storage of deleted webxdc apps 2025-11-21 22:47:25 +01:00
B. Petersen 9a6abed1e4 'which help' refers to 'statistics', so it should be plural 2025-11-21 19:49:39 +01:00
adb baf5f97e96 Merge branch 'main' into adb/improve-webxdc-link-handling 2025-11-21 19:46:21 +01:00
adb 3426d9cb37 Merge branch 'main' into adb/issue-4020 2025-11-21 19:45:05 +01:00
Hocuri 53f401caf5 feat: Add missing core stock strings (#4044) 2025-11-21 09:54:59 +01:00
adbenitez 4950d0be55 tweak variable name 2025-11-21 03:33:09 +01:00
adbenitez 57ac9d6b91 don't linkify numbers in the middle of text 2025-11-21 03:11:30 +01:00
adb 8723adbfcd Merge branch 'main' into adb/issue-4020 2025-11-21 02:12:56 +01:00
adb 8c5038c20f Merge pull request #4046 from deltachat/adb/rename-registrationactivity
rename RegistrationActivity to EditTransportActivity
2025-11-21 02:12:38 +01:00
adb 6518c22b79 Merge branch 'main' into adb/issue-4020 2025-11-21 02:11:28 +01:00
adbenitez 0027e2c93b rename RegistrationActivity to EditTransportActivity 2025-11-21 00:50:33 +01:00
adb 0b8eaad68a Merge pull request #4039 from deltachat/adb/use-list_transport
use listTransports
2025-11-20 23:27:33 +01:00
adbenitez 16738f053a tweak RegistrationActivity 2025-11-20 23:22:38 +01:00
adbenitez bed9a4d8d4 remove leftover 2025-11-20 23:21:08 +01:00
adbenitez 1ee3d40f37 tweak RegistrationActivity 2025-11-20 23:20:19 +01:00
adbenitez 1c6e9fc391 tweak RegistrationActivity 2025-11-20 23:17:50 +01:00
adb 31c8e8d46b Merge branch 'main' into adb/improve-webxdc-link-handling 2025-11-20 22:42:31 +01:00
adbenitez ff6e0d9fbf improve webxdc link handling
add geo: support and support for i.delta.chat links
2025-11-20 22:33:14 +01:00
adb a92ccd6d43 Merge branch 'main' into adb/use-list_transport 2025-11-20 18:25:36 +01:00
adb 32bdce147a Merge pull request #4037 from deltachat/adb/add-full-rpc-bindings
add full rpc bindings
2025-11-20 18:25:06 +01:00
B. Petersen 1e6d1ed917 shorten QR scan hints and make them work for channels as well 2025-11-20 18:22:57 +01:00
adb 0f9e378923 Merge branch 'main' into adb/use-list_transport 2025-11-20 18:21:32 +01:00
adb 5aaa11a445 Merge pull request #4038 from deltachat/adb/fix-ChatsPreferenceFragment
fix usage of R.string.pref_backup_export_this
2025-11-19 23:05:17 +01:00
adbenitez e77f266da5 fix usage of R.string.pref_backup_export_this 2025-11-19 18:37:38 +01:00
adbenitez dc1be8e07b use Rpc.listTransports() instead of old configs 2025-11-19 18:34:26 +01:00
adbenitez d9daae7f41 update building instructions 2025-11-19 00:08:22 +01:00
adbenitez b30ae06dde add generated JSON-RPC bindings 2025-11-19 00:08:16 +01:00
adbenitez 488ba08e05 use Linkify.sPhoneNumberMatchFilter 2025-11-18 22:02:34 +01:00
adb 7a1db99daa Merge pull request #4017 from deltachat/adb/fix-conversationtitleview
only show three-dots if self is not in chat
2025-11-18 15:17:21 +01:00
B. Petersen 8450349e19 remove deprecated strings and update some translator hints 2025-11-18 12:00:06 +01:00
adb 50a6389b75 Merge pull request #4034 from deltachat/adb/tweak-multidevice-str-keys
use pref_multidevice_* instead of pref_send_copy_to_self
2025-11-18 11:47:20 +01:00
adbenitez aa4b65dbb0 customize phone number regex in Linkifier 2025-11-18 05:30:09 +01:00
adb 96154422c1 Merge branch 'main' into adb/fix-conversationtitleview 2025-11-18 03:27:31 +01:00
adb bc82f56353 Merge branch 'main' into adb/tweak-multidevice-str-keys 2025-11-18 03:26:09 +01:00
adbenitez 1d9c9bb1b6 use pref_multidevice_* instead of pref_send_copy_to_self 2025-11-17 21:48:57 +01:00
B. Petersen 037a468332 update wording after discussion 2025-11-17 21:08:16 +01:00
B. Petersen df41fa7cba showing password is deprected 2025-11-17 21:08:16 +01:00
B. Petersen a48f595cf7 'send background messages' -> 'exchange data'
- 'backgound' term is used in many other contextes
- 'messages' may also be confused with what the user usually thinks of being a 'message',
  similar for 'send'
2025-11-17 21:08:16 +01:00
B. Petersen f221321e6c add missing comment 2025-11-17 21:08:16 +01:00
B. Petersen bf9842e414 we are saying Real-Time as well, so i think that should be upper cased as well, in general we upper case most key words 2025-11-17 21:08:16 +01:00
link2xt 0ee54460ba Update Rust from 1.86.0 to 1.91.1
Next core will require Rust 1.88.0
2025-11-17 16:54:57 +00:00
adbenitez 83a6fc531a tweak code 2025-11-17 17:12:10 +01:00
adb 8989737c71 Merge branch 'main' into adb/fix-conversationtitleview 2025-11-17 16:34:31 +01:00
adb 56f89af121 Merge pull request #4018 from deltachat/adb/issue-4016
implement Service.onTimeout() in FetchForegroundService
2025-11-17 16:34:11 +01:00
adb 97ee01eac1 Merge branch 'main' into adb/issue-4016 2025-11-17 16:02:42 +01:00
adbenitez 8c7e430d4d use stobBackgroundFetch 2025-11-17 15:29:39 +01:00
B. Petersen 2b36b69251 update translations 2025-11-17 15:11:13 +01:00
adb acf8f10f76 Merge branch 'main' into adb/issue-4016 2025-11-16 13:43:16 +01:00
adb e5b890a765 Merge pull request #4026 from deltachat/update-core-and-stuff-2025.11.16
Update core to 2.27.0
2025-11-16 13:42:35 +01:00
adbenitez 3da97acdfd update translations strings and offline help 2025-11-16 13:41:49 +01:00
adbenitez 75fc7c48e9 update changelog 2025-11-16 13:34:52 +01:00
adbenitez 7bdefeab37 update deltachat-core-rust to 'chore(release): prepare for 2.27.0' of 'v2.27.0' 2025-11-16 13:12:00 +01:00
adb f71097f2d2 Merge pull request #4019 from deltachat/adb/issue-3829
unify multi-device into a single setting
2025-11-16 13:09:35 +01:00
adb 90e2229543 Merge branch 'main' into adb/issue-3829 2025-11-16 13:08:55 +01:00
bjoern e8e9987eb3 use app-term instead of webxdc-term; add "About Apps" to three dot menu (#4025)
* deprecate 'what is webxdc?' string"

it is used when an in-app is on the screen (on desktop),
however, instead of helping, immediately raises another question,
as the user just did not know about webxdc at all at that point
(we are not using the term in the apps at all).

better just use the string 'Help' and open
offline help at #webxdc - the entry is also just improved :)

* add 'help' to app-menu

* just 'help' may be confused with 'help about that app', be little more specific

* update CHANGELOG
2025-11-16 12:56:23 +01:00
adbenitez 68b5383dc4 tweak date 2025-11-15 23:27:12 +01:00
adbenitez 5ab215489a tweak to suggestions 2025-11-15 23:24:57 +01:00
adb 8f401e2a09 Merge branch 'main' into adb/issue-3829 2025-11-15 23:12:52 +01:00
adbenitez 572932e92d show dialog before changing "multi-device mode" switch 2025-11-15 23:11:52 +01:00
Hocuri f924a407b3 feat: Add the possibility to withdraw channel invite links and QR codes (#4022) 2025-11-15 18:17:06 +00:00
B. Petersen adcbf118b6 make use of new string, deprecate the old one 2025-11-14 18:35:55 +01:00
B. Petersen 0e185eff4c add more transport strings 2025-11-14 18:35:55 +01:00
B. Petersen ad5df50eb9 tune down the now advanced button 2025-11-14 18:35:55 +01:00
B. Petersen 22921e72e9 reword 'classic email login' to 'use classic email as transport' 2025-11-14 18:35:55 +01:00
Hocuri 199881e3b2 feat: Rephrase "Establishing end-to-end encryption" -> "Establishing connection" 2025-11-14 17:24:35 +01:00
adbenitez 12ec74e835 update changelog 2025-11-12 19:09:02 +01:00
adbenitez 42d0a40f58 unify multi-device into a single setting 2025-11-12 17:47:52 +01:00
adbenitez 68e8b64b47 stop service in onTimeout 2025-11-12 17:00:36 +01:00
adbenitez a06f77b5f8 update changelog 2025-11-12 16:57:32 +01:00
adbenitez b809fc007b implement Service.onTimeout() in FetchForegroundService 2025-11-12 16:46:21 +01:00
adbenitez 334893071b use DcChat.isSelfInChat in ProfileAvatarItem 2025-11-12 00:15:36 +01:00
adbenitez 306064e260 only show three-dots if self is not in chat 2025-11-12 00:09:13 +01:00
adb 85f679c69f Merge pull request #4014 from deltachat/adb/improve-ConversationTitleView
improve ConversationTitleView
2025-11-10 19:16:45 +01:00
adb f23e3d4e22 Merge branch 'main' into adb/improve-ConversationTitleView 2025-11-10 19:16:35 +01:00
adb 59d4c8fbd8 Merge pull request #4015 from deltachat/adb/issue-3980
don't show weird dialog if recoding video fails
2025-11-10 19:16:00 +01:00
adbenitez 5f33c8a56d update changelog 2025-11-10 18:04:45 +01:00
adbenitez 45ba604820 don't show weird dialog if recoding video fails 2025-11-10 18:03:30 +01:00
adbenitez 780df4df46 update changelog 2025-11-10 17:35:14 +01:00
adbenitez 01ac637142 only show group member count if dcChat.canSend() is true 2025-11-10 17:30:32 +01:00
adbenitez 147de536f7 remove deprecated unused profileView parameter in setTitle 2025-11-10 17:22:33 +01:00
adbenitez 9f0596de0a don't linkify numbers 2025-11-10 16:24:25 +01:00
adbenitez 750fbaa6cc Merge remote-tracking branch 'upstream/main' 2025-11-10 15:42:21 +01:00
B. Petersen c623343b04 add dotdotdot to 'share with' 2025-11-10 15:29:40 +01:00
adb b216274b37 Merge pull request #4011 from deltachat/adb/change-link-colors
change link color
2025-11-10 15:27:59 +01:00
adbenitez 843e813593 update changelog 2025-11-10 15:27:29 +01:00
Copilot 9eb0608c89 Add GitHub Copilot instructions (#59)
* Add GitHub Copilot instructions for ArcaneChat Android

Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: adbenitez <24558636+adbenitez@users.noreply.github.com>
2025-11-10 14:11:55 +00:00
adbenitez 560a993972 change link color 2025-11-10 14:53:13 +01:00
adb 8701c72d43 Merge pull request #4005 from deltachat/adb/issue-4004
tweak RegistrationActivity for chatmail profiles
2025-11-07 22:19:33 +01:00
adbenitez 454f8a4628 update changelog 2025-11-07 22:18:33 +01:00
adb 03cc658e7e Merge pull request #4007 from deltachat/adb/remove-deprecated-advanced-section
remove deprecated/broken `send_autocrypt_setup_message` advanced preference
2025-11-07 22:14:36 +01:00
B. Petersen e12081642d unify e-mail to email 2025-11-07 22:12:41 +01:00
adbenitez 9cbdd8d553 remove deprecated/broken send_autocrypt_setup_message advanced preference 2025-11-07 21:58:43 +01:00
adbenitez 65b1d93c70 tweak RegistrationActivity 2025-11-07 21:36:31 +01:00
adbenitez 085eace0cf tweak RegistrationActivity for chatmail profiles 2025-11-07 17:43:21 +01:00
adbenitez 552f6e2975 use subscribers instead of recipients 2025-11-07 16:59:48 +01:00
adbenitez fa75294472 add device message 2025-11-07 11:34:25 +01:00
adbenitez 75498e7fa7 Merge remote-tracking branch 'upstream/main' 2025-11-06 16:21:57 +01:00
adbenitez f57d44cea7 update full_description.txt 2025-11-06 15:34:33 +01:00
adb 242e3beb93 Merge pull request #3999 from deltachat/prep-2.25.0
prepare 2.25.0
2025-11-06 14:52:25 +01:00
B. Petersen 21d4a1604b the whole login is 'advanced', so an 'advanced -> advanced' is a bit weird' 2025-11-06 12:05:20 +01:00
B. Petersen f33805abb0 'For advanced users:' could be misunderstood as if the following points are valid for advanced users, but the login is fine for beginners. clarify this 2025-11-06 12:05:20 +01:00
B. Petersen 5fd4a60af4 in the help and elsewhere, we say 'mail icon' 2025-11-06 11:36:54 +01:00
B. Petersen a59eaea0e4 use term e2ee as elsewhere 2025-11-06 11:36:54 +01:00
adbenitez b11628346f update build.gradle 2025-11-05 22:08:51 +01:00
adbenitez a6f99bdb58 update changelog 2025-11-05 22:08:32 +01:00
adb e44bc65ca2 Merge pull request #3998 from deltachat/update-core-and-stuff-5/11/25
Update core to 2.25.0
2025-11-05 22:03:13 +01:00
adbenitez 77f4e9f116 update changelog 2025-11-05 21:36:54 +01:00
adbenitez b40f98a00e update deltachat-core-rust to 'chore(release): prepare for 2.25.0' of 'v2.25.0' 2025-11-05 21:17:37 +01:00
adb 596983d2c1 Merge pull request #3996 from deltachat/adb/issue-3926
tweak registraction screen and empty chat hints for classic email
2025-11-05 21:11:07 +01:00
adb 78f061bc9d Merge branch 'main' into adb/issue-3926 2025-11-05 20:33:49 +01:00
adbenitez 2f42d3bcd2 update changelog 2025-11-05 20:05:32 +01:00
adbenitez d67b71297d tweak registraction screen and empty chat hints for classic email 2025-11-05 20:01:51 +01:00
Hocuri 629ae0b16e fix: Don't crash when QR code can't be loaded (#3995)
Before this PR, when a QR code couldn't be loaded because of https://github.com/chatmail/core/pull/7399, Delta Chat crashed.

Now, the button does nothing.

It's not perfect, but easy to do, and only about an edge case where the user tried out the experimental broadcast channels in the past, and now tries to add a new member to a broadcast channel created with an old version of DC.

The hollistic alternative would be to switch to RPC for getSecurejoinQrSvg, so that the UI can get a proper error message.

---------

Co-authored-by: adb <adb@merlinux.eu>
2025-11-05 17:26:32 +01:00
adbenitez 7e1930abc5 Merge remote-tracking branch 'upstream/main' 2025-11-05 17:13:44 +01:00
adbenitez e5c9fd05f2 update build.gradle 2025-11-05 16:00:27 +01:00
adb c4427c198e Merge pull request #3994 from deltachat/adb/issue-3993
fix QRShowActivity screen
2025-11-04 23:21:07 +01:00
adbenitez a9d1d2d631 update changelog 2025-11-04 23:20:35 +01:00
adbenitez 3a4bf8eaea fix code indentation 2025-11-04 20:46:38 +01:00
adbenitez 4b903c73dc fix QRShowActivity screen 2025-11-04 20:43:15 +01:00
adb 90a0f75823 Merge pull request #3992 from deltachat/prep-2.24.0
prepare 2.24.0
2025-11-04 19:52:52 +01:00
adbenitez 0546ea2c91 bump version number to 2.24.0 2025-11-04 19:31:59 +01:00
adb 66b619cc48 Merge pull request #3991 from deltachat/adb/issue-3941
remove forcing of LTR
2025-11-04 19:28:54 +01:00
adbenitez fbe8888c71 update changelog 2025-11-04 19:26:30 +01:00
adbenitez 2b156cff17 remove forcing of LTR 2025-11-04 19:08:49 +01:00
adb 90d485ba16 Merge pull request #3978 from deltachat/adb/issue-3918
update flake.nix
2025-11-04 18:35:43 +01:00
adb 4978c555da Merge pull request #3989 from deltachat/adb/issue-3959
allow to export files from "send to chat" (webxdc)
2025-11-04 18:33:30 +01:00
adb 383e50da32 Merge branch 'main' into adb/issue-3959 2025-11-04 18:33:21 +01:00
adb 22af7427cb Merge pull request #3986 from deltachat/adb/optimize-app-build
minify app (reduce app size)
2025-11-04 18:25:04 +01:00
adbenitez 6d7ec658a2 update changelog 2025-11-04 00:47:13 +01:00
adb df175f40e1 Merge branch 'main' into adb/issue-3959 2025-11-04 00:44:26 +01:00
adb 9c2a885553 Merge pull request #3886 from deltachat/hoc/channels-encryption-only-qrcodes
feat: Adapt to channel-invite QR codes
2025-11-04 00:43:43 +01:00
adb 81809f6906 Merge branch 'main' into hoc/channels-encryption-only-qrcodes 2025-11-04 00:42:49 +01:00
adb 19248025ec Merge pull request #3990 from deltachat/update-core-and-stuff-4/11/25
Update core to 2.24.0
2025-11-04 00:42:31 +01:00
adbenitez 54a31722e0 update changelog 2025-11-04 00:34:03 +01:00
adbenitez dde84fc0a3 update translations 2025-11-04 00:33:07 +01:00
adbenitez a6823d2140 update deltachat-core-rust to 'core(release): prepare for v2.24.0' of 'v2.24.0' 2025-11-04 00:20:11 +01:00
adbenitez 9897f286ff allow to export attachment from "send to chat" (webxdc) 2025-11-04 00:02:13 +01:00
Hocuri 2881ea7150 feat: Adapt to channel-invite QR codes 2025-11-03 22:50:19 +01:00
adb 5ab83e71c8 Merge pull request #3988 from deltachat/adb/remove-selfreporting
remove "self report" option for now
2025-11-03 19:32:37 +01:00
adbenitez 993670c7be update changelog 2025-11-03 17:47:40 +01:00
adb 90df47d352 Merge branch 'main' into adb/remove-selfreporting 2025-11-03 17:33:33 +01:00
adb 73ff1560ae Merge pull request #3987 from deltachat/adb/issue-3984
remove address from vcard
2025-11-03 17:28:58 +01:00
adb b0f719e791 Merge pull request #3964 from deltachat/adb/issue-3963
update to new dcaccount scheme
2025-11-03 17:22:45 +01:00
adbenitez ec0ffd3b8e remove "self report" option for now 2025-11-03 15:40:15 +01:00
adbenitez f4dc4ea66d update changelog 2025-11-02 00:45:10 +01:00
adbenitez 867327d34c remove address from vcard 2025-11-02 00:43:46 +01:00
adbenitez 1f1d16d4ed update changelog 2025-11-02 00:31:37 +01:00
adbenitez 776c7d129d add R8 rules and set minifyEnabled true 2025-11-02 00:23:58 +01:00
adb a9be7555de Merge branch 'main' into adb/issue-3963 2025-11-02 00:03:31 +01:00
adb 51a9998848 Merge pull request #3985 from deltachat/update-core-and-stuff-1/11/25
update core to 2.23.0
2025-11-02 00:02:42 +01:00
adbenitez 96068be20b update code at src/androidTest 2025-11-01 23:50:37 +01:00
adbenitez c59a682837 update changelog 2025-11-01 23:32:42 +01:00
adbenitez b4f026b04e remove deprecated chat verification code 2025-11-01 23:32:27 +01:00
adbenitez 4dbd2f23df update deltachat-core-rust to 'chore(release): prepare for 2.23.0' of 'v2.23.0' 2025-11-01 22:32:17 +01:00
B. Petersen b842392555 this really removes the watch-sent option
a kind of sticky option :)
2025-11-01 18:52:44 +01:00
B. Petersen 7e0e6b6cab update CHANGELOG 2025-11-01 00:14:35 +01:00
B. Petersen f1911d3910 Remove "Watch Sent folder" preference
It is going to be removed in the next core release: https://github.com/chatmail/core/pull/7189

counterpart of desktop PR at https://github.com/deltachat/deltachat-desktop/pull/5611
2025-11-01 00:14:35 +01:00
adb f9c675de0e Merge pull request #3981 from deltachat/adb/remove-companion-app-code
remove deprecated companion app
2025-10-31 23:27:40 +01:00
adbenitez 79ded65e47 update changelog 2025-10-31 23:22:21 +01:00
adbenitez d54ae28a73 remove deprecated companion app 2025-10-31 23:16:10 +01:00
adb 6365062275 Merge pull request #3977 from deltachat/adb/remove-oauth
remove deprecated oauth code
2025-10-31 21:22:37 +01:00
B. Petersen 394a749e7f add 'proxy enabled' hints needed by https://github.com/chatmail/core/pull/7359 at some point 2025-10-31 21:10:06 +01:00
adbenitez f082949cab update flake.nix 2025-10-31 17:09:43 +01:00
adbenitez 222e5092d2 remove oauth code from DcContext 2025-10-30 23:44:16 +01:00
adbenitez 69b0e953af remove oauth2 url redirection handling 2025-10-30 23:39:50 +01:00
adbenitez 954ac96069 mark strings as deprecated 2025-10-30 23:39:30 +01:00
adbenitez 91cc79d395 remove deprecated oauth code 2025-10-30 23:35:10 +01:00
adb f5191255fe Merge pull request #3976 from deltachat/adb/issue-3304
improve all media screen
2025-10-30 22:24:16 +01:00
adbenitez a0ffd8b34e update changelog 2025-10-30 22:10:04 +01:00
adbenitez c2ac3dea15 improve all media screen 2025-10-30 22:06:11 +01:00
adb e543827320 Merge pull request #3973 from deltachat/adb/remove-amazon
remove deprecated amazon instructions
2025-10-30 19:57:00 +01:00
adb 916b5f7b8a Merge pull request #3975 from deltachat/adb/issue-3971
don't show email address in export button
2025-10-30 19:49:34 +01:00
adb df2e870025 Merge pull request #3974 from deltachat/adb/update-chatmail-relays-url
update chatmail relays URL
2025-10-30 19:49:09 +01:00
adbenitez 54c3b6bc4c don't show email address in export button 2025-10-30 19:08:41 +01:00
adbenitez 46816b2c0c update chatmail relays URL 2025-10-30 18:41:14 +01:00
adbenitez 4387585ddc remove deprecated amazon instructions 2025-10-30 18:08:10 +01:00
B. Petersen 4f70cd1229 mark systemmsg_unknown_sender_for_chat as deprecated 2025-10-29 12:25:49 +01:00
adb d290acc3ae Merge pull request #3950 from deltachat/adb/issue-3944
don't show badge-counter in app icon for permanent notification
2025-10-29 00:11:39 +01:00
adb dc84613c61 Merge pull request #3968 from deltachat/adb/issue-3948
don't force circle shape for shared shortcuts
2025-10-29 00:02:25 +01:00
adb b98cb839cc Merge pull request #3967 from deltachat/adb/remove-deprecated-stock-string-72
remove deprecated stock string 72
2025-10-29 00:01:13 +01:00
adbenitez 2b798e8126 don't force circle shape for shared shortcuts 2025-10-28 23:46:22 +01:00
adbenitez 3ffc71bc0f remove deprecated stock string 72 2025-10-28 23:24:11 +01:00
adbenitez 4f4e2bb291 update changelog 2025-10-28 23:17:03 +01:00
adbenitez 8a57954eb3 rename permanent channel id, delete old/deprecated one 2025-10-28 23:16:35 +01:00
adb 00ec33b1e8 Merge branch 'main' into adb/issue-3944 2025-10-28 23:00:01 +01:00
adb c4e04cbc71 Merge branch 'main' into adb/issue-3963 2025-10-28 22:59:41 +01:00
B. Petersen cccd6ae225 add missing strings for 'channels' 2025-10-28 20:15:25 +01:00
adbenitez 882aa30e5f update to new dcaccount scheme 2025-10-28 03:47:40 +01:00
B. Petersen bc372d5406 'Start Messaging' does no longer exist; however, the flow is also clear without that hint and the string is anyway only used on older phones 2025-10-24 23:09:10 +02:00
B. Petersen 0f8d4ad8f2 remove unused strings 2025-10-24 22:42:13 +02:00
bjoern c5f98d09f2 cleanup deprecated strings and QR codes (#3958)
* cleanup deprecated strings and QR codes

* more cleanup
2025-10-23 18:55:06 +02:00
adbenitez 091ecc0329 update full_description 2025-10-23 14:22:18 +02:00
adbenitez f76b1cb3d3 change call icon to videocall 2025-10-23 14:15:42 +02:00
adbenitez 98551713ae Merge remote-tracking branch 'upstream/main' 2025-10-23 14:06:32 +02:00
Hocuri bc2e4002c3 refactor: Remove stock string that is rarely used these days (#3957) 2025-10-21 09:09:47 +00:00
adb 40b8f1297e Merge pull request #3955 from deltachat/prep-2.22.0
prepare 2.22.0
2025-10-20 16:24:09 +02:00
adbenitez 84f8a39355 prepare 2.22.0 2025-10-19 18:00:43 +02:00
Hocuri 6874191143 fix: Remove warning about unknown architecture in PR preview builds (#3951)
Co-authored-by: adb <adb@merlinux.eu>
2025-10-18 12:12:03 +02:00
adb 7ecc1d0381 Merge branch 'main' into adb/issue-3944 2025-10-17 14:58:43 +02:00
adb aea7e912e0 Merge pull request #3953 from deltachat/update-core-and-stuff-17/10/25
Update core to 2.22
2025-10-17 14:56:17 +02:00
adbenitez 4f8068f144 update translations 2025-10-17 14:42:30 +02:00
adbenitez 4f4e42e20c update changelog 2025-10-17 14:39:11 +02:00
adbenitez 8ddb51382e update deltachat-core-rust to 'chore(release): prepare for 2.22.0' of 'v2.22.0' 2025-10-17 14:36:53 +02:00
adbenitez 7cba6edca9 update changelog 2025-10-16 19:46:19 +02:00
adbenitez 8fb870c51c don't show badge-counter in app icon for permanent notification 2025-10-16 19:35:14 +02:00
adb 252263e6db Merge pull request #3949 from deltachat/adb/improve-readme
improve readme
2025-10-16 18:04:51 +02:00
adb 4efdc0b1c8 Update BUILDING.md
Co-authored-by: bjoern <r10s@b44t.com>
2025-10-16 16:03:34 +00:00
adb 30858c51d6 Update README.md
Co-authored-by: bjoern <r10s@b44t.com>
2025-10-16 16:02:49 +00:00
adb 42cd1c6ad1 Merge branch 'main' into adb/improve-readme 2025-10-16 17:12:34 +02:00
B. Petersen e6b40adf8a remove 1 year old mute-migration from global-setting to profile-setting; if ppl did not upgrade since then, they do not care much 2025-10-16 16:57:55 +02:00
B. Petersen 500e5a910d verified_one_on_one_chats option was removed in core 2.17 2025-10-16 16:57:55 +02:00
adbenitez fe3f34222d improve downloads hints 2025-10-16 16:54:01 +02:00
adbenitez 408c7ae727 update chatmail core link 2025-10-16 16:44:52 +02:00
adbenitez 5198191728 move building to its own file 2025-10-16 16:44:26 +02:00
adb 6f2cc60017 Merge pull request #3942 from deltachat/adb/remove-duplicate-classes
remove duplicated ListenableFuture and SettableFuture
2025-10-16 14:21:50 +02:00
adb 091cb931d7 Merge branch 'main' into adb/remove-duplicate-classes 2025-10-16 14:10:20 +02:00
adb 26ec26e75c Merge pull request #3946 from deltachat/prep-2.20.0
prepare 2.20.0
2025-10-16 14:08:54 +02:00
adbenitez 1b0b87f148 update build.gradle 2025-10-15 18:19:26 +02:00
adbenitez 9dbb918ed8 update changelog 2025-10-13 16:30:42 +02:00
adbenitez a955d6f2f7 Merge remote-tracking branch 'upstream/main' 2025-10-13 16:28:46 +02:00
adbenitez 42f8eb9153 update version number 2025-10-13 16:08:29 +02:00
adb 2143bc01d1 Merge pull request #3945 from deltachat/update-core-and-stuff-13/10/25
Update core to 2.20.0
2025-10-13 16:07:51 +02:00
adbenitez 5a3728428b update changelog 2025-10-13 15:47:38 +02:00
adbenitez f236085b92 update deltachat-core-rust to 'chore(release): prepare for 2.20.0' of 'v2.20.0' 2025-10-13 15:44:58 +02:00
adb ac6119792f Merge branch 'main' into adb/remove-duplicate-classes 2025-10-10 18:04:47 +02:00
adb b0cea8f099 Merge pull request #3943 from deltachat/update-core-and-stuff-10/10/25
Update core to 2.18.0
2025-10-10 18:04:23 +02:00
adbenitez 7590b21928 update version number and strings 2025-10-10 17:39:05 +02:00
adbenitez ea7fd0ec22 update deltachat-core-rust to 'chore(release): prepare for 2.18.0' of 'v2.18.0' 2025-10-10 15:57:51 +02:00
adbenitez cf4cb2f839 remove duplicated ListenableFuture and SettableFuture 2025-10-10 15:38:25 +02:00
adb 6a4e40d17b Merge pull request #3937 from deltachat/link2xt/recommend-lix-instead-of-determinate-nix-installer
Recommend Lix instead of Determinate Nix Installer
2025-10-10 15:28:02 +02:00
adb 5302e86011 Merge pull request #3938 from deltachat/adb/speedup-ci
speed up the PR's apk preview building
2025-10-10 13:30:18 +02:00
adb 5382e880a9 Merge branch 'main' into adb/speedup-ci 2025-10-10 12:29:24 +02:00
adb 2385b236c7 Merge pull request #3940 from deltachat/prep-2.17.0
update build.gradle
2025-10-10 12:28:30 +02:00
adbenitez 5224119f9e update build.gradle 2025-10-09 20:09:12 +02:00
adb dfef2b4120 Merge pull request #3939 from deltachat/update-translations-9/10/25
update translations
2025-10-09 20:05:55 +02:00
adbenitez 6d7f417233 update translations 2025-10-09 20:04:07 +02:00
adb 05ef95e757 Merge branch 'main' into adb/speedup-ci 2025-10-09 18:45:54 +02:00
adbenitez 8aa45b7bc9 speed up the PR's apk preview building 2025-10-09 16:49:29 +02:00
link2xt 7cea23caf5 Recommend Lix instead of Determinate Nix Installer
Determinate Systems server is installing its own fork of Nix
that is apparently not open source:
<https://lobste.rs/s/be78ef/dropping_upstream_nix_from_determinate#c_m3hq6r>
The company behind it also pushes the users to use FlakeHub
and has other problems.

[Lix] installer is a fork of The Determinate Nix Installer.
I uninstalled Nix preivously installed with The Determinate Nix Installer
and installed Lix, it works just the same for Android builds.

Upstream Nix would also be fine,
but it still has old installer that does not enable Flakes
and breaks on macOS on upgrades apparently,
so we cannot recommend it as the easiest way.

[Lix]: https://lix.systems/
2025-10-09 14:08:03 +00:00
adbenitez 4a2bed3e6c Merge remote-tracking branch 'upstream/main' 2025-10-09 15:39:22 +02:00
adbenitez 3aa2fbf67a Merge remote-tracking branch 'upstream/main' 2025-10-09 15:34:30 +02:00
adb c5d9471f2a Merge pull request #3936 from deltachat/adb/remove-awebp-dep
remove dependency for awebp, it is supported by Android
2025-10-09 15:01:38 +02:00
adb 5117b70c58 Merge pull request #3935 from deltachat/adb/deprecated-videochat-stock
don't set deprecated/unused stock strings
2025-10-09 14:27:54 +02:00
adbenitez da4d17aa14 remove dependency for awebp, it is supported by Android 2025-10-09 14:22:51 +02:00
adbenitez 6135813bff don't set deprecated/unused stock strings 2025-10-09 14:08:08 +02:00
adb 8547f7aab8 Merge pull request #3934 from deltachat/adb/update-calls-webapp-v0.10.0-beta
update calls webapp to v0.10.0-beta
2025-10-08 20:02:41 +02:00
adb 6dca20045c Merge branch 'main' into adb/update-calls-webapp-v0.10.0-beta 2025-10-08 19:17:17 +02:00
adbenitez 58ef777091 update calls webapp to v0.10.0-beta 2025-10-08 19:16:12 +02:00
B. Petersen 4a836b3d82 string 'Calls' not used at all 2025-10-08 19:11:09 +02:00
B. Petersen 363122fd15 clarify some strings 2025-10-08 19:11:09 +02:00
adb b751219c78 Merge pull request #3785 from deltachat/adb/integrated-videocalls
Android calls UI
2025-10-08 18:36:19 +02:00
adbenitez e586fafc54 tweak call footer's date format 2025-10-08 16:58:27 +02:00
adbenitez 2c04319c52 Merge branch 'adb/integrated-videocalls' of https://github.com/deltachat/deltachat-android into adb/integrated-videocalls 2025-10-08 16:45:55 +02:00
adbenitez f9607e4453 tweak call message-type colors 2025-10-08 16:45:17 +02:00
adb 6aec209ebc Update src/main/res/values/strings.xml
Co-authored-by: bjoern <r10s@b44t.com>
2025-10-08 14:31:33 +00:00
adbenitez 9adc9b34e5 fix string 2025-10-08 15:58:32 +02:00
adb 9267501bc1 Merge branch 'main' into adb/integrated-videocalls 2025-10-08 15:47:00 +02:00
adb 924c3f8920 Update src/main/java/org/thoughtcrime/securesms/preferences/AdvancedPreferenceFragment.java
Co-authored-by: bjoern <r10s@b44t.com>
2025-10-08 13:45:21 +00:00
adb 8f93dacbff Update src/main/res/xml/preferences_advanced.xml
Co-authored-by: bjoern <r10s@b44t.com>
2025-10-08 13:40:10 +00:00
adb a07e9312ea Merge pull request #3932 from deltachat/adb/issue-3930
process permissions result in GroupCreateActivity
2025-10-08 12:48:26 +02:00
adbenitez 79f6010d5f update changelog 2025-10-08 12:08:39 +02:00
adbenitez c5af1d4f2b process permissions result in GroupCreateActivity 2025-10-08 12:05:38 +02:00
adb 20a3820871 Merge pull request #3931 from deltachat/adb/media-preview-edge2edge
fix edge-to-edge in MediaPreviewActivity
2025-10-08 11:52:08 +02:00
adb cb0d1106b4 Merge branch 'main' into adb/media-preview-edge2edge 2025-10-08 11:19:52 +02:00
adb 291ef86a4f Merge branch 'main' into adb/integrated-videocalls 2025-10-08 11:17:40 +02:00
adb b0457bc036 Merge pull request #3925 from deltachat/adb/new-rpc-bindings
use auto-generated RPC bindings
2025-10-08 11:17:01 +02:00
adbenitez 4d7107314a fix edge-to-edge in MediaPreviewActivity 2025-10-07 19:15:07 +02:00
adbenitez 4185219088 update calls webapp to v0.9.0-beta 2025-10-07 14:32:18 +02:00
adb ef51492d0b Merge branch 'main' into adb/new-rpc-bindings 2025-10-06 18:20:00 +02:00
adbenitez 4dc10f977e update calls-webapp 0.8.0 2025-10-06 16:06:49 +02:00
adbenitez aaba52dba6 Merge branch 'adb/integrated-videocalls' of https://github.com/deltachat/deltachat-android into adb/integrated-videocalls 2025-10-06 15:51:22 +02:00
adbenitez ca4808aaca tweak strings 2025-10-06 15:51:10 +02:00
adb 66324fe914 Merge branch 'adb/new-rpc-bindings' into adb/integrated-videocalls 2025-10-06 15:49:19 +02:00
adbenitez a5f67e9d9f update core to 2.17.0 2025-10-06 15:48:22 +02:00
B. Petersen 8b5c887402 add 'Save Message' string
the string can be used for the action to put a message to 'Saved Messages'.

it will be useful esp. on desktop,
where plain 'Save' often has the mindset of 'Files',
esp. for older ppl :)
the added noun tries to break that.

additionally, desktop can resort menu items,
but that alone would not solve the issue.

there are also thoughs about renaming that alltogether,
eg. to bookmark, but that is a larger and more breaking change,
also the messages are not just 'bookmarked' on purpose,
to eg. survive auto deletion.
2025-10-03 14:33:20 +02:00
adbenitez 183cb03577 set new calls-related stock strings 2025-10-02 17:09:28 +02:00
adbenitez b1e6d59ba9 now it is CallState.Canceled not CallState.Cancelled 2025-10-02 17:05:43 +02:00
adb 33f38889c1 Merge branch 'adb/new-rpc-bindings' into adb/integrated-videocalls 2025-10-02 15:45:19 +02:00
adbenitez f97e800907 update core 2025-10-02 15:44:49 +02:00
adbenitez 21e597d09e add instructions on JSON-RPC binding generation 2025-10-02 15:28:21 +02:00
adbenitez 6b040b160d update changelog 2025-10-02 15:11:00 +02:00
adbenitez 57e5523bf3 update core to v2.16.0 2025-10-02 15:07:01 +02:00
adbenitez 874492c9ae update calls web-app 2025-10-01 16:16:52 +02:00
adbenitez 8ae6407461 add call duration to message bubble 2025-09-30 22:41:14 +02:00
adbenitez ae8ce94c00 add spaces around == 2025-09-30 22:39:37 +02:00
adbenitez 74208fff69 update CallInfo 2025-09-30 22:37:47 +02:00
adbenitez 7ace2b9baf add spaces arround == 2025-09-30 20:46:01 +02:00
adbenitez f28fffb9df update core 2025-09-30 20:07:47 +02:00
adbenitez 349e8d80c8 hide delivery status if not sending or error 2025-09-30 17:30:38 +02:00
adbenitez 4b9217e3e6 rename calls package 2025-09-30 16:29:47 +02:00
adbenitez 4e6e805ede remove unused old videochat invitation API 2025-09-30 15:59:58 +02:00
adbenitez 02a1c86f01 allow to pick call and call back by clicking call messages 2025-09-27 19:43:00 +02:00
adbenitez b28fb4ac9e update calls webapp 2025-09-27 19:36:35 +02:00
adbenitez fddc80e60b use new call_info RPC API 2025-09-27 01:09:50 +02:00
adb e5b1becf13 Merge branch 'adb/new-rpc-bindings' into adb/integrated-videocalls 2025-09-27 01:02:32 +02:00
adbenitez 01b78e37fd update src/main/java/chat/delta/rpc/types/CallState.java 2025-09-27 01:02:06 +02:00
adbenitez d0b1f36f60 fix imports, import from new Rpc package 2025-09-27 00:17:34 +02:00
adb e388464d28 Merge branch 'adb/new-rpc-bindings' into adb/integrated-videocalls 2025-09-27 00:14:07 +02:00
adbenitez afc7a04b63 revert changes in Rpc class 2025-09-27 00:13:13 +02:00
adbenitez b871e42b86 use auto-generated RPC bindings 2025-09-26 23:40:26 +02:00
adbenitez 3479233f82 offer incoming call when clicking on the notification 2025-09-26 18:00:06 +02:00
adbenitez 7e3e35a9a1 update calls-app to 0.6.0-beta 2025-09-26 17:47:35 +02:00
adbenitez 92711444e4 update calls-app to 0.6.0-beta 2025-09-26 17:25:47 +02:00
adb ec576d7159 Merge branch 'main' into adb/integrated-videocalls 2025-09-24 16:29:51 +02:00
adb 70a05221ab Merge pull request #3924 from deltachat/adb/update-workflows
update workflows and fix adding artifact link as comment to PRs
2025-09-24 16:29:27 +02:00
adbenitez 6335cfa178 update workflows and fix adding artifact link as comment to PRs 2025-09-24 15:35:55 +02:00
adbenitez ebda8c4577 hide calls button in "Saved Messages" and "Device Messages" 2025-09-24 14:23:52 +02:00
adbenitez de9a2df1b4 update DeclineCallReceiver.java 2025-09-22 18:43:20 +02:00
adbenitez a3c7e3db3d use RPC for call API 2025-09-22 18:33:59 +02:00
adbenitez 249fc829be fix constant numbering in ConversationAdapter.java 2025-09-22 17:44:27 +02:00
adb 5b62f7bf25 Merge pull request #3920 from deltachat/adb/issue-3916
improve displaying of call messages
2025-09-19 20:17:54 +02:00
adbenitez df6c858b92 improve displaying of calls messages 2025-09-19 18:44:06 +02:00
adbenitez c9816ae785 don't allow to edit call messages 2025-09-19 14:29:46 +02:00
adbenitez a24069ce3d ask for required permissions in incoming call 2025-09-17 19:27:45 +02:00
adbenitez f770f817d0 tweak preference name 2025-09-17 17:52:00 +02:00
adbenitez bee804e095 update to new calls-app's API 2025-09-12 18:59:34 +02:00
adbenitez 6b1c6b37ac add support for calls.getIceServers() and calls.getAvatar() 2025-09-12 15:59:00 +02:00
adbenitez 881e69c176 remove unused code 2025-09-11 21:58:54 +02:00
adbenitez ac6df2ff85 update changelog 2025-09-11 21:50:03 +02:00
adbenitez 7698ac5c06 some tweaks 2025-09-11 21:44:15 +02:00
adbenitez c2abe42b60 don't reject call on notification dismiss 2025-09-11 16:50:28 +02:00
adbenitez 3e95197d02 tweak calls channel 2025-09-11 16:33:15 +02:00
adbenitez 534a75feaa remove notification on accepted call 2025-09-11 13:22:21 +02:00
adbenitez 7a11234431 go back to chat after finishing call 2025-09-10 21:04:08 +02:00
adbenitez 0e91537a4d allow to decline calls and remove call notification 2025-09-10 20:47:25 +02:00
adbenitez b074bf1819 allow to answer from notification 2025-09-10 18:55:19 +02:00
adbenitez b8d2552aa8 remove unused imports 2025-09-10 16:04:55 +02:00
adbenitez 320c120a61 don't use calls integration API 2025-09-10 13:01:05 +02:00
adbenitez 6c1a3c850a tweak preview-apk workflow 2025-09-09 18:18:05 +02:00
adbenitez 7ec87f55b6 auto-accept calls for testing 2025-09-09 17:39:29 +02:00
adbenitez f6ce98f9a2 remove DC_MSG_VIDEOCHAT_INVITATION 2025-09-09 16:10:42 +02:00
adbenitez cb465ec85e remove outdated info message types 2025-09-09 15:16:56 +02:00
adbenitez 6f10a90c5f update calls webapp 0.4.0-beta 2025-09-09 14:58:05 +02:00
adb 9f439c852f Merge branch 'main' into adb/integrated-videocalls 2025-09-09 13:48:53 +02:00
adbenitez 2cc0451a8a update core 2025-09-09 13:48:40 +02:00
adb 02230d05a1 Merge pull request #3912 from deltachat/update-core-and-stuff-9/9/25
Update core to 2.13.0
2025-09-09 13:47:39 +02:00
adbenitez 9a6f6d7ea6 update strings 2025-09-09 13:45:24 +02:00
adbenitez f4cd299f70 update changelog 2025-09-09 13:35:49 +02:00
adbenitez d0358a4d0c update deltachat-core-rust to 'chore(release): prepare for 2.13.0' of 'v2.13.0' 2025-09-09 13:23:33 +02:00
adbenitez 4fc115b93d add basic notification 2025-09-09 13:22:20 +02:00
adbenitez 0157510c5d don't ask to start call 2025-09-06 21:39:06 +02:00
adbenitez 831ce19689 update core 2025-09-05 18:43:16 +02:00
adbenitez 9431e26696 end call on closing webview 2025-09-05 14:58:10 +02:00
adbenitez 9ef01dd352 add calls button 2025-09-03 16:07:19 +02:00
adbenitez 01c766db41 remove old videochat invitations 2025-09-03 16:02:09 +02:00
adb 364d15442a Merge branch 'main' into adb/integrated-videocalls 2025-09-03 14:21:53 +02:00
adb 32eefaab42 Merge pull request #3908 from deltachat/adb/issue-3893
show warning if background notifications will be unreliable
2025-09-02 18:12:46 +02:00
adb 4b8177f7f0 Merge branch 'main' into adb/issue-3893 2025-09-02 18:12:24 +02:00
B. Petersen 092a5caf8b deprecate another string 2025-09-02 18:11:39 +02:00
B. Petersen bfe4438773 deprecate some strings 2025-09-02 18:11:39 +02:00
adbenitez d251fffc07 update changelog 2025-09-02 17:37:22 +02:00
adb 180c2bc8de Merge branch 'main' into adb/issue-3893 2025-09-02 17:35:57 +02:00
adb 082815f676 Merge pull request #3910 from deltachat/adb/issue-3907
disable clone option for incoming channel
2025-09-02 17:02:07 +02:00
adbenitez 640688d774 update code to new calls app path 2025-09-02 14:59:06 +02:00
adbenitez 30868198a2 update calls webapp 2025-09-02 14:17:30 +02:00
adb 75673ef1ad Merge branch 'main' into adb/integrated-videocalls 2025-09-02 14:15:25 +02:00
adbenitez 478d937b3c tweak behavior 2025-09-02 00:01:36 +02:00
adb 7a5eb6bea6 Update src/main/res/values/strings.xml
Co-authored-by: bjoern <r10s@b44t.com>
2025-09-01 14:46:45 +00:00
adbenitez 0142d51835 update changelog 2025-09-01 16:45:51 +02:00
adbenitez 075bad3638 hide member list on incoming channels 2025-09-01 16:44:51 +02:00
adbenitez 1f173bae9b disable clone option for incoming channel 2025-09-01 16:33:52 +02:00
adbenitez 2deb61477f show warning if background notifications will be unreliable 2025-09-01 15:52:10 +02:00
adb fcc1ab1079 Merge pull request #3899 from deltachat/link2xt/nix-35
nix: update to Android platform 35
2025-08-27 17:14:25 +02:00
link2xt c72207da8a nix: update to Android platform 35 2025-08-27 00:32:50 +00:00
adb 82233d7862 Merge pull request #3898 from deltachat/adb/issue-3894
default to permanent notification if push is not possible
2025-08-26 16:26:28 +02:00
adbenitez 2547a0435c improve preference handling 2025-08-26 15:54:09 +02:00
adbenitez b6ce6d908f Merge branch 'adb/issue-3894' of https://github.com/deltachat/deltachat-android into adb/issue-3894 2025-08-26 13:24:04 +02:00
adbenitez c6bbb0a524 improve code 2025-08-26 13:23:54 +02:00
adb 826258a1be Merge branch 'main' into adb/issue-3894 2025-08-22 17:42:41 +02:00
B. Petersen 05dde13e68 update CHANGELOG 2025-08-22 17:35:32 +02:00
B. Petersen 06130c7cd8 fix initial selection 2025-08-22 17:35:32 +02:00
B. Petersen 5d7c701da8 drop disappearing messages options 1 and 30 minutes
- with the recent change to start the timer when the chat is opened,
  one minute is too easy too short to miss important information

- "30 minutes" does not really fit into the distribution;
  all other option have at least the factor 5 to the previous one,
  from "30 minutes" to "60 minutes", the time is doubled only.

removing the overall number of options and dropping the ones without larger usecases,
does not only simplifies UI;
having less tiny details also reduces noise in groups
where ppl people changing it very often for various weird reasons
(found the latter point somewhere in the Signal forum, btw)
2025-08-22 17:35:32 +02:00
adbenitez 91e898ee96 update changelog 2025-08-22 16:39:33 +02:00
adb 61e9466c59 Merge branch 'main' into adb/issue-3894 2025-08-22 16:38:37 +02:00
adbenitez 39c48d3dcd default to permanent notification if push is not possible 2025-08-22 16:36:00 +02:00
adbenitez 1c7c3f06e6 prototype with TelecomManager and ConnectionService APIs 2025-08-22 15:17:32 +02:00
B. Petersen d4ddb68137 remove deprecated strings 2025-08-20 17:47:07 +02:00
adbenitez c9ac421315 update call.html 2025-08-19 14:00:51 +02:00
adb e14bf24bb1 Merge branch 'main' into adb/integrated-videocalls 2025-08-18 15:22:52 +02:00
adb 700d11f600 Merge pull request #3889 from deltachat/adb/issue-3688
avoid superfluous error message when user cancel configuration
2025-08-18 15:12:16 +02:00
adbenitez fbb33c735c Merge branch 'adb/integrated-videocalls' of https://github.com/deltachat/deltachat-android into adb/integrated-videocalls 2025-08-18 14:58:46 +02:00
adbenitez 7cc9d7ea2f update core 2025-08-18 14:58:35 +02:00
adb ca27be240e Merge branch 'main' into adb/integrated-videocalls 2025-08-18 14:53:03 +02:00
adbenitez 8ab9b92517 update core 2025-08-18 14:47:57 +02:00
adbenitez f95b48ad6a Merge remote-tracking branch 'upstream/main' 2025-08-17 19:31:59 +02:00
adbenitez 8ebdc5414a update changelog 2025-08-17 18:33:03 +02:00
adbenitez a0e07cb2ea avoid superfluous error message when user cancel configuration 2025-08-17 18:30:22 +02:00
adb 152360d94a Merge pull request #3888 from deltachat/adb/issue-3853
fix direct share shortcuts
2025-08-16 21:31:26 +02:00
adbenitez 8513f7cd36 update changelog 2025-08-16 20:18:12 +02:00
adbenitez 17e3f3afdd fix direct share shortcuts 2025-08-16 20:10:53 +02:00
adb 7d7f62dae1 Merge pull request #3814 from deltachat/adb/issue-3795
target SDK 35 and implement edge-to-edge
2025-08-16 19:24:50 +02:00
adb 2bd0a0d935 Merge branch 'main' into adb/issue-3795 2025-08-16 17:08:37 +02:00
B. Petersen cf0414dd66 update CHANGELOG 2025-08-16 17:02:41 +02:00
B. Petersen 5fbd065882 improve info messages for dark theme
this improves readability of info messages
by setting the foreground to while.
`universal_overlay` was made for that;
it is in use like that on iOS/desktop since a long time.

moreover, other parts using the combination of
`conversation_item_update_bg_color`/`conversation_item_update_text_color`
are improved equally, eg. the day titles.
2025-08-16 17:02:41 +02:00
adb 5982a9dd8f Merge branch 'main' into adb/issue-3795 2025-08-16 16:15:59 +02:00
adbenitez 4b20e3f41f update changelog 2025-08-16 16:15:23 +02:00
adb ac8d8886cc Merge pull request #3885 from deltachat/link2xt/build-tools-35
Update Android SDK Build Tools to 35.0.0 in flake.nix
2025-08-16 16:13:58 +02:00
adbenitez a803d472bf don't use setStatusBarColor 2025-08-16 03:19:37 +02:00
adbenitez 396ed14067 adapt activities to edge-to-edge 2025-08-16 02:10:02 +02:00
adbenitez 5faea5e40a revert empty line 2025-08-15 23:24:19 +02:00
adbenitez 08bb248919 revert status bar color hack 2025-08-15 23:23:02 +02:00
link2xt 30dd7a9c33 Update Android SDK Build Tools to 35.0.0 in flake.nix
Since buildToolsVersion is not specified in `build.gradle`,
default version is set by Android Gradle Plugin.
Gradle plugin was updated in a77b1a5dd6,
so build tools version should be updated in flake.nix
to the corresponding version, otherwise building
fails while trying to install 35.0.0 into
read-only path managed by Nix.
2025-08-14 16:13:49 +00:00
adb 28f57a2ccb Merge branch 'main' into adb/issue-3795 2025-08-14 16:25:04 +02:00
adbenitez c0717237ad Merge remote-tracking branch 'upstream/main' 2025-08-13 16:28:56 +02:00
adb 5716372453 Merge pull request #3884 from deltachat/prep-2.11.0
prepare 2.11.0
2025-08-13 14:45:56 +02:00
adbenitez d362cf4467 bump version 2025-08-13 14:45:06 +02:00
adb 56118d3732 Merge pull request #3883 from deltachat/imgbot
[ImgBot] Optimize images
2025-08-13 14:00:48 +02:00
adb a03f51f7c5 Merge pull request #3875 from deltachat/adb/issue-3874
avoid NPE in DecryptableUri
2025-08-13 13:56:49 +02:00
ImgBotApp 6cf59133c2 [ImgBot] Optimize images
*Total -- 3,963.23kb -> 2,946.99kb (25.64%)

/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png -- 981.79kb -> 657.29kb (33.05%)
/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png -- 481.97kb -> 350.50kb (27.28%)
/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png -- 357.58kb -> 272.44kb (23.81%)
/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png -- 967.63kb -> 750.70kb (22.42%)
/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png -- 1,174.26kb -> 916.06kb (21.99%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2025-08-13 11:56:18 +00:00
adb ef8d833f5e Merge branch 'main' into adb/issue-3874 2025-08-13 13:55:37 +02:00
adb b110c1f91e Merge pull request #3467 from deltachat/adb/issue-3437
add "After 1 year" option to disappearing messages
2025-08-13 13:55:04 +02:00
adbenitez e53a1f0b22 update changelog 2025-08-13 13:54:41 +02:00
adb 5a5cbfceb7 Merge branch 'main' into adb/issue-3437 2025-08-13 13:47:42 +02:00
adb 57a557a9b4 Merge pull request #3882 from deltachat/update-core-and-stuff-13/8/25
update core to 2.11.0
2025-08-13 13:45:20 +02:00
adbenitez 2328bf1e2a update translations 2025-08-13 13:44:34 +02:00
adbenitez ce4c9aaba0 update changelog 2025-08-13 13:18:54 +02:00
adbenitez 71a2cb7a5b update deltachat-core-rust to 'chore(release): prepare for 2.11.0' of 'v2.11.0' 2025-08-13 13:11:36 +02:00
adb 79462c0596 Merge branch 'main' into adb/issue-3795 2025-08-12 17:16:36 +02:00
adb 68f5d1ae27 Merge pull request #3881 from deltachat/adb/dont-use-android.R.id.content
don't use android.R.id.content
2025-08-12 16:34:31 +02:00
adbenitez 77caced5ed don't use android.R.id.content 2025-08-12 15:56:25 +02:00
adb 88a4f99cf8 Merge branch 'main' into adb/issue-3795 2025-08-12 15:19:37 +02:00
B. Petersen 42544fd447 update translations 2025-08-12 14:57:13 +02:00
adb 5ff869cd4a Merge pull request #3879 from deltachat/adb/issue-3878
call dcContext.deleteMsgs() in background thread
2025-08-09 16:35:00 +02:00
adbenitez 4af1666a31 call dcContext.deleteMsgs() in background thread 2025-08-09 16:01:46 +02:00
adbenitez 786fd3f47d avoid NPE in DecryptableUri 2025-08-09 15:24:02 +02:00
adb a0d9315ff4 Merge pull request #3873 from deltachat/adb/improve-screenshots
update screenshots
2025-08-09 00:51:07 +02:00
adbenitez 86954a3c42 update screenshots 2025-08-09 00:15:05 +02:00
adb f136b6d7d1 Merge branch 'main' into adb/issue-3795 2025-08-08 15:44:23 +02:00
adbenitez 9e4b744046 set ephemeral timer stock strings for 1 year 2025-08-08 15:36:24 +02:00
adb 8db4604224 Merge branch 'main' into adb/issue-3437 2025-08-08 15:12:01 +02:00
adb 43f9094c04 Merge pull request #3872 from deltachat/r10s/allow-cloning-email-chats
allow to clone email chats
2025-08-08 15:08:56 +02:00
adb 1217e65889 Merge branch 'main' into adb/issue-3437 2025-08-08 15:08:28 +02:00
adb d8eaf0ad4b Merge branch 'main' into adb/issue-3795 2025-08-08 15:04:52 +02:00
adb 4fbb8d2b78 Merge branch 'main' into r10s/allow-cloning-email-chats 2025-08-08 14:50:06 +02:00
adb 7cebd04086 Merge pull request #3867 from deltachat/adb/issue-3608
make apk builds more reproducible
2025-08-08 14:33:22 +02:00
adb b584fdfd89 Merge pull request #3870 from deltachat/adb/issue-3782
improve group image quality
2025-08-08 14:32:51 +02:00
B. Petersen db35fef6db update CHANGELOG 2025-08-08 13:39:15 +02:00
B. Petersen 068102a0d8 allow to clone email chats
this was disallowed at a time where we had no api
to create ad-hoc "new email" chats
2025-08-08 13:36:00 +02:00
adb 02ff8a2a6b Merge branch 'main' into adb/issue-3608 2025-08-08 13:03:28 +02:00
adbenitez 321b5a223b fix comment for 1 year value 2025-08-08 00:42:29 +02:00
adb ab7fd960ca Merge branch 'main' into adb/issue-3437 2025-08-08 00:38:46 +02:00
adbenitez dec685023e use same max. avatar size for groups and profiles, remove superflous class 2025-08-08 00:17:30 +02:00
adbenitez 168d2ae16c improve group image quality 2025-08-07 23:59:05 +02:00
adb e55249182a Merge pull request #3869 from deltachat/adb/update-deps-6/8/25
remove some dependecies and upgrade others
2025-08-07 23:50:43 +02:00
adbenitez 0966487978 pin firebase version 2025-08-07 23:14:06 +02:00
adbenitez fd057485db remove com.annimon:stream dependency 2025-08-07 17:45:01 +02:00
adbenitez a68f3a7024 remove dependecy on com.pnikosis:materialish-progress 2025-08-06 19:40:47 +02:00
adbenitez 1dad6ebf8a remove unused me.leolin:ShortcutBadger and com.jpardogo.materialtabstrip:library 2025-08-06 19:39:49 +02:00
adbenitez a77b1a5dd6 update gradle and some deps 2025-08-06 19:38:41 +02:00
adbenitez c0a65e2e9f properly set the pre-selected option 2025-08-06 15:48:27 +02:00
adbenitez 82ef0560a5 change to 1 year 2025-08-06 15:19:40 +02:00
adb 9166b2a42a Merge branch 'main' into adb/issue-3437 2025-08-06 15:01:14 +02:00
adb 2ef3811a56 Merge branch 'main' into adb/issue-3795 2025-08-06 14:47:41 +02:00
adb 1b91c1c482 Merge branch 'main' into adb/issue-3608 2025-08-06 14:47:13 +02:00
adbenitez 0d8962f76c make apk builds more reproducible 2025-08-06 14:45:25 +02:00
adb e98535418c Merge pull request #3865 from deltachat/adb/issue-3860
update screenshots
2025-08-06 14:06:45 +02:00
adbenitez 5eb9065d89 update screenshots 2025-08-05 18:35:08 +02:00
adb 9e70c43ab8 Merge pull request #3862 from deltachat/prep-2.10.0
Prepare 2.10.0
2025-08-05 12:37:28 +02:00
adbenitez fc8bfabeb2 update changelog 2025-08-05 11:56:40 +02:00
adbenitez 681c22293f update version number 2025-08-05 11:51:14 +02:00
adb bed8d511fe Merge pull request #3861 from deltachat/update-core-and-stuff-5/8/25
Update core to 2.10.0
2025-08-05 11:49:15 +02:00
adbenitez eeeb686868 update strings 2025-08-05 11:33:38 +02:00
adbenitez 76dda10a31 update changelog 2025-08-05 11:26:33 +02:00
adbenitez 6a7c4f24e9 update deltachat-core-rust to 'chore(release): prepare for 2.10.0' of 'v2.10.0' 2025-08-05 11:22:29 +02:00
adb 8cdfafd7c3 Merge pull request #3859 from deltachat/hoc/lookup-key-contacts-too
fix: Lookup key contacts by addr when clicking on a link
2025-08-05 11:20:46 +02:00
Hocuri 1c6faeac04 fix: Lookup key contacts by addr when clicking on a link
Companion PR to https://github.com/chatmail/core/pull/7073
2025-08-04 16:02:39 +02:00
adbenitez 7ecf0a7daa Merge remote-tracking branch 'upstream/main' 2025-08-03 00:25:01 +02:00
adb b2bf7e8ae7 Merge pull request #3858 from deltachat/adb/issue-3850
share address for email contacts
2025-08-02 22:24:15 +00:00
adbenitez 0a34456302 update changelog 2025-08-02 21:51:10 +02:00
adb 3ebcc1dd99 Merge branch 'main' into adb/issue-3850 2025-08-02 19:50:24 +00:00
adb ff7df0e1e6 Merge pull request #3856 from deltachat/adb/issue-3855
don't enlarge avatars for special chats
2025-08-02 19:49:42 +00:00
adbenitez 68cd070b98 share address for email contacts 2025-08-02 21:48:58 +02:00
adb 8ff8cffa15 Merge branch 'main' into adb/issue-3855 2025-08-02 19:31:59 +00:00
adb dc216feb30 Merge pull request #3857 from deltachat/adb/fix-changelog-typos-2/8/25
fix typos in changelog
2025-08-02 19:31:21 +00:00
adbenitez 84fc885617 fix typos in changelog 2025-08-02 21:30:31 +02:00
adbenitez 72bcbe80c0 update changelog 2025-08-02 21:27:49 +02:00
adbenitez b4ed26b842 don't enlarge avatars for special chats 2025-08-02 21:25:45 +02:00
adb 7be6b0a1ee Merge pull request #3854 from deltachat/adb/fix-archived-link-item
fix archived link item's layout
2025-08-01 18:17:43 +00:00
adbenitez 9a2fdcdcbd update changelogC 2025-08-01 19:42:48 +02:00
adbenitez e81960f98a fix "Archived" item's layout in chatlit 2025-08-01 19:41:49 +02:00
adbenitez a37fcfcaf7 Merge remote-tracking branch 'upstream/main' 2025-07-31 23:14:46 +02:00
adb fd4a377752 Merge pull request #3852 from deltachat/prep-2.9.0
prepare 2.9.0
2025-07-31 19:45:21 +00:00
adbenitez d40652d394 prepare 2.9.0 2025-07-31 21:44:18 +02:00
adb aacca5531c Merge pull request #3851 from deltachat/update-core-and-stuff-31/7/25
update to core v2.9.0
2025-07-31 19:17:39 +00:00
adbenitez 51cb844e63 update strings 2025-07-31 21:17:09 +02:00
adbenitez ef0b8efcfa update changelog 2025-07-31 21:13:53 +02:00
adbenitez 3e943483da update deltachat-core-rust to 'chore(release): prepare for 2.9.0' of 'v2.9.0' 2025-07-31 21:10:26 +02:00
adb a9013bb574 Merge pull request #3846 from deltachat/adb/issue-3841
improve footer layout
2025-07-31 19:09:07 +00:00
adbenitez aa5fcb139e update changelog 2025-07-31 17:00:00 +02:00
adb c526c42d19 Merge branch 'main' into adb/issue-3841 2025-07-31 14:56:54 +00:00
adb f66003c6b1 Merge pull request #3847 from deltachat/adb/disable-edit-on-classic-email
improve classic email threads/chats UX
2025-07-31 14:56:31 +00:00
adbenitez cc64142e7b don't enlage email chats avatar placeholder 2025-07-31 16:47:58 +02:00
adbenitez a280407370 update changelog 2025-07-31 16:26:44 +02:00
adb dda5efedc4 Merge branch 'main' into adb/issue-3841 2025-07-31 14:21:14 +00:00
adb 1cd4ec1ec9 Merge branch 'main' into adb/disable-edit-on-classic-email 2025-07-31 14:17:58 +00:00
adb 1a8b905071 Merge pull request #3848 from deltachat/adb/issue-3845
hide address in search results
2025-07-31 14:17:43 +00:00
adbenitez de13a70c66 update changelog 2025-07-31 16:17:15 +02:00
adb 2caa98e08a Merge branch 'main' into adb/issue-3841 2025-07-30 21:54:32 +00:00
adb ba997d9f71 Merge branch 'main' into adb/disable-edit-on-classic-email 2025-07-30 21:54:20 +00:00
B. Petersen 3985f2f468 remove stock strings no longer in use 2025-07-30 23:49:39 +02:00
adbenitez 86bd38bdad hide address in search results 2025-07-30 23:49:36 +02:00
adbenitez ffa1c69be2 improve code efficiency 2025-07-30 23:37:54 +02:00
adbenitez 3a3388ed59 disable non-functional disappearing timer option for email threads 2025-07-30 23:37:16 +02:00
adbenitez 8c04c199e6 disable editing messages on classic email threads 2025-07-30 23:30:59 +02:00
adbenitez ecdbbed8c1 improve footer layout 2025-07-30 23:22:51 +02:00
adbenitez e6f4a616fb Merge remote-tracking branch 'upstream/main' 2025-07-28 22:55:43 +02:00
adb 68f270eea3 Merge pull request #3844 from deltachat/prep-2.8.0
prepare 2.8.0
2025-07-28 20:44:37 +00:00
adbenitez 52aeec8d17 update version number 2025-07-28 22:44:01 +02:00
adb bdcaffde3d Merge pull request #3843 from deltachat/update-core-and-stuff-28/7/25
Update to core 2.8.0
2025-07-28 20:32:27 +00:00
adbenitez d19dcb41ec update translations 2025-07-28 22:31:11 +02:00
adbenitez 5525cfa5a9 update changelog 2025-07-28 22:01:46 +02:00
adbenitez 8715e9eba2 update deltachat-core-rust to 'chore(release): prepare for 2.8.0' of 'v2.8.0' 2025-07-28 21:58:11 +02:00
adbenitez 3cc58c2a0f update readme 2025-07-25 01:12:57 +02:00
adbenitez 5cc5a80990 Merge remote-tracking branch 'upstream/main' 2025-07-24 18:43:44 +02:00
adb 52c0197682 Merge pull request #3837 from deltachat/update-to-core-2.6.0
prepare 2.6.0
2025-07-23 16:07:40 +00:00
adbenitez c75adbe93c update strings 2025-07-23 15:55:02 +02:00
adbenitez f16c59897d update version number 2025-07-23 15:54:44 +02:00
adbenitez 636235148f update deltachat-core-rust to 'chore(release): prepare for 2.6.0' of 'v2.6.0' 2025-07-23 15:51:58 +02:00
adb 46226a7ab5 Merge pull request #3835 from deltachat/prep-2.5.0
prepare 2.5.0
2025-07-22 20:06:40 +00:00
adbenitez f11ae0a5ff prepare 2.5.0 2025-07-22 17:35:42 +02:00
adb 2264e1bf22 Merge pull request #3834 from deltachat/adb/issue-3827
don't show "delete for everyone" in unencrypted chats
2025-07-22 15:33:24 +00:00
adbenitez c095510a42 don't show "delete for everyone" in unnecrypted chats 2025-07-22 16:56:25 +02:00
adbenitez fe6838e315 Merge remote-tracking branch 'upstream/main' 2025-07-22 16:47:51 +02:00
adb 6dbbdae2df Merge pull request #3833 from deltachat/adb/update-core-2.5.0
update core to v2.5.0
2025-07-22 14:46:04 +00:00
adbenitez a5070c879a update changelog 2025-07-22 16:45:45 +02:00
adbenitez 1bbf352c4c update deltachat-core-rust to 'chore(release): prepare for 2.5.0' of 'v2.5.0' 2025-07-22 16:37:58 +02:00
adbenitez 011ba4595b Merge remote-tracking branch 'upstream/main' 2025-07-22 16:08:45 +02:00
adb 10345ab8c3 Merge pull request #3818 from deltachat/adb/tune-down-fetchworker
don't use FetchWorker if we have push notifications
2025-07-22 13:36:08 +00:00
adb b5d0878511 Merge pull request #3832 from deltachat/update-core-and-stuff-22.7.25
Update core to 2.4.0
2025-07-22 13:35:37 +00:00
adbenitez 8a393ad274 update translations 2025-07-22 15:29:41 +02:00
adbenitez 84e8be9776 update changelog 2025-07-22 15:05:05 +02:00
adbenitez da6aa901ca update deltachat-core-rust to 'chore(release): prepare for 2.4.0' of 'v2.4.0' 2025-07-22 15:03:19 +02:00
adb 8b52a99327 tune down green checkmark (#3828)
* remove green checkmarks from chatlist

* remove green checkmark from contact lists

* remove green checkmark from chat-protected info-message (DC_INFO_PROTECTION_ENABLED)

* remove green checkmark from profile title

* add green checkmark to "Introduced by..." line

* when tapping chat-protected or chat-e2ee info-message, open help at #e2ee

* update changelog

* Update CHANGELOG.md

Co-authored-by: Hocuri <hocuri@gmx.de>

* add verified checkmark when verifier is unknown but contact is verified

* Update CHANGELOG.md

---------

Co-authored-by: Hocuri <hocuri@gmx.de>
Co-authored-by: bjoern <r10s@b44t.com>
2025-07-22 14:21:59 +02:00
B. Petersen 9c6271b1d1 update translations 2025-07-22 14:18:39 +02:00
B. Petersen 8564259787 update local help 2025-07-22 14:18:39 +02:00
B. Petersen 9e7ee3170e message about moved profile-switch no longer needed 2025-07-22 00:50:41 +02:00
B. Petersen b2cdff820a deprecate some stock strings; none of them are in use in core any longer 2025-07-22 00:50:41 +02:00
adbenitez f1789950a6 Merge remote-tracking branch 'upstream/main' 2025-07-20 21:29:15 +02:00
adb 0bc8750984 Merge pull request #3826 from deltachat/prep-2.3.0-beta
bump version
2025-07-20 19:18:18 +00:00
adbenitez 6351bcc11e bump version 2025-07-20 21:17:16 +02:00
adb 66ae731a37 Merge pull request #3825 from deltachat/adb/update-translations-20-07-25
update translations and changelog
2025-07-20 19:13:27 +00:00
adbenitez cc1fd53021 update translations and changelog 2025-07-20 21:11:07 +02:00
adbenitez 3937f0e149 remove unnecessary "force encryption" 2025-07-20 20:23:02 +02:00
adbenitez 2839250011 don't show last seen for saved messages and device chats 2025-07-20 01:15:27 +02:00
adbenitez 5844563de4 update core 2025-07-19 19:55:25 +02:00
adbenitez a8698a03df update scripts 2025-07-19 19:53:53 +02:00
adbenitez 6a6044c77d improve profile 2025-07-19 19:52:12 +02:00
adbenitez 2a0be883c2 Merge remote-tracking branch 'upstream/main' 2025-07-19 16:44:15 +02:00
B. Petersen 5ff8101c2c replace 'half blocked' by 'contact request' 2025-07-19 15:02:52 +02:00
B. Petersen 9e87a4b2a8 allow tapping new e2ee-info-messages; remove outdated protection-broken path 2025-07-19 15:02:52 +02:00
B. Petersen 9740921f25 update translations 2025-07-19 15:01:34 +02:00
B. Petersen de2892a4c2 update deltachat-core-rust to 'chore(release): prepare for 2.3.0' of 'v2.3.0' 2025-07-19 15:01:34 +02:00
adb c344b18326 add device message (#3820)
* add device message

* apply tweaks of @hpk42 and @hocuri

* change two emojis, donate as discussed and 🔲 instead of ⌘ which is known as a keyboard shortcut symbol, at least on mac, and adds confusion

---------

Co-authored-by: B. Petersen <r10s@b44t.com>
2025-07-19 14:47:26 +02:00
B. Petersen 54d2516f6c add string 'E-Mail' 2025-07-18 13:32:49 +02:00
B. Petersen 8f61bec805 update translations 2025-07-18 13:32:49 +02:00
B. Petersen 107fe00afa simplify e2ee strings
as discussed with @hpk42, we want to simplify the terms used in UI,
as there is no switch-forth-and-back, the "from now on" is superfluous,
and the "guaranteed" at least noisy and raises questions.

also, this allows us to use the same string when establishing via vcard contacts,
which is a good thing to move forward just now.

the faq will explain nuances then
2025-07-16 23:57:58 +02:00
adbenitez 8642563c86 don't use FetchWorker if we have push notifications 2025-07-16 18:51:57 +02:00
adb c9d4d2bdbc Merge pull request #3815 from deltachat/adb/allow-to-create-new-unencrypted-group
Add new option to create unencrypted email thread
2025-07-16 14:16:04 +00:00
adbenitez 83f5d0793a hide "add contact manually" from "new chat" screen and from group memeber selection 2025-07-16 15:47:27 +02:00
adbenitez 16dd79aa9a hide edit pencil when enlarging avatar of unencrypted group 2025-07-15 22:03:55 +02:00
adbenitez d7c3303cec allow to create new unencrypted group 2025-07-15 22:03:31 +02:00
adbenitez a9541a936e implement edge-to-edge 2025-07-15 17:43:32 +02:00
adb 54f2d2e991 Merge pull request #3810 from deltachat/adb/account-move-to-top
allow to "move to top" accounts in the accounts list
2025-07-15 15:38:37 +00:00
adb 8daaa45aa3 Merge branch 'main' into adb/account-move-to-top 2025-07-15 15:38:24 +00:00
bjoern fa40d4fb44 make donate device message translatable (#3813)
* make donate device message translatable

* update CHANGELOG

* Update CHANGELOG.md

Co-authored-by: Hocuri <hocuri@gmx.de>

* Update src/main/res/values/strings.xml

---------

Co-authored-by: Hocuri <hocuri@gmx.de>
2025-07-14 11:25:45 +02:00
B. Petersen a26ce76964 update translations 2025-07-13 14:05:48 +02:00
B. Petersen 2e798c5b04 add strings missing for 'new email' 2025-07-13 14:05:48 +02:00
adbenitez 9104971baa update changelog 2025-07-12 01:13:37 +02:00
adbenitez 3d6dc80d8a update deltachat-core-rust to 'chore(release): prepare for 2.1.0' of 'v2.1.0' 2025-07-12 01:12:13 +02:00
adbenitez 410072358d temporarily check core's main branch with "set_accounts_order" support 2025-07-11 16:01:32 +02:00
adbenitez 1d7d0dd329 allow to "move to top" accounts in the account selector 2025-07-11 16:01:10 +02:00
adb 15ed570dce Merge pull request #3809 from deltachat/adb/prep-1.59.0
update version number
2025-07-10 20:35:43 +00:00
Hocuri 90cf75421b fix: Small channel fixes (#3807)
* fix: Small channel fixes

- In the profile view of an InBroadcast, the subtitle said "Contact".
  I just removed the subtitle, because it already says "Channel" at the
  top.
- When tapping on the avatar of an InBroadcast, an "Edit" button was shown

* fix: Also disable edit button for mailinglists
2025-07-10 19:30:52 +02:00
adbenitez a8aecea814 update version number 2025-07-10 18:33:55 +02:00
adb fcf98ab7e9 Merge pull request #3808 from deltachat/adb/update-strings
update strings and local help
2025-07-10 16:32:35 +00:00
adbenitez e1d6b8f3b8 update strings and local help 2025-07-10 18:05:41 +02:00
bjoern 629532a996 Update translations 2025 07 10 (#3806)
* pull translations

* update channel hint as discussed

* add some more translator hints

* pull again after uploading new strings
2025-07-10 13:45:14 +02:00
B. Petersen 36798a2f57 fix profile's edit display
this was lost on merging main to channels-pr at
https://github.com/deltachat/deltachat-android/pull/3783/files#diff-4e3273297b4c47b24d3616a9030a5c2de21519ebcfc0c6d5e49c6ded45476a72L117
2025-07-10 13:03:26 +02:00
Hocuri 717777f628 Show channels in a proper "Channel" chat (#3783)
* Rename "broadcast list" to "channel"/"broadcast channel" both in UI and code

* feat: Add new channel types

* Update CHANGELOG.md

* adb's review

* refactor: Rename BroadcastChannel to Broadcast

* Revert accidental change

* Make it possible to leave channels

- In a chat, if the chat is an InBroadcast, and it's not a contact
  request, then the `Leave` menu option is shown with the translated
  stock string `menu_leave_channel` as its label.
- If the user clicks on it, the confirmation dialog has
  `menu_leave_channel` (rather than `menu_leave_group`) as its positive
  option.

Counterpart of https://github.com/chatmail/core/pull/6984.

---------

Co-authored-by: adbenitez <asieldbenitez@gmail.com>
Co-authored-by: adb <adb@merlinux.eu>
2025-07-10 10:32:04 +02:00
adbenitez 5af2d4fa8f Merge remote-tracking branch 'upstream/main' 2025-07-09 23:51:26 +02:00
adb 23d521beed Merge pull request #3793 from deltachat/adb/pgp-contacts2
adapt to new key-contacts
2025-07-09 21:07:00 +00:00
adb b699451c2a Update CHANGELOG.md
Co-authored-by: Hocuri <hocuri@gmx.de>
2025-07-09 20:34:53 +00:00
adbenitez fa6fad5787 update changelog 2025-07-09 22:20:49 +02:00
adbenitez ab641df8f9 update core to 2.0.0 2025-07-09 22:13:08 +02:00
adbenitez 90ced3efb0 Merge remote-tracking branch 'origin/main' into adb/pgp-contacts2 2025-07-09 17:36:10 +02:00
B. Petersen 0d50af1aa5 mailinglist profile: addr in subtitle, no members
this is follow up for #3792 and does the same as before -
showing no members for mailinglists and showing its address in the subtitle
2025-07-09 17:32:27 +02:00
adbenitez 7f982e6302 update core 2025-07-08 23:24:01 +02:00
adb 0ba20e9fc8 Merge branch 'main' into adb/pgp-contacts2 2025-07-08 21:20:15 +00:00
adb cf0df03d9f Merge pull request #3803 from deltachat/adb/issue-3798
modify QR icon
2025-07-08 21:19:34 +00:00
adbenitez 111629ace2 Merge remote-tracking branch 'upstream/main' 2025-07-08 22:14:42 +02:00
adbenitez 8afe5739a8 Merge commit '466329995' 2025-07-08 22:13:38 +02:00
adbenitez b9520c95ed Merge branch 'main' into adb/pgp-contacts2 2025-07-08 18:08:51 +02:00
adb 1cf01c6414 Merge branch 'main' into adb/issue-3798 2025-07-08 15:21:49 +00:00
bjoern 98d5259d0e tweak new profile (#3800)
* adapt divider to style used elsewhere

* offer copy-to-clipboard on long-tap address

* Revert "offer copy-to-clipboard on long-tap address"

This reverts commit 92570b8e1ef5898b99a9a2769eea0e1e16bf25e1.

* show copy-context menu on long pressing address
2025-07-08 05:27:42 +02:00
adb 0945696450 Merge pull request #3802 from deltachat/adb/issue-3801
hidde "chats in common" header when no chats in common
2025-07-07 23:20:27 +00:00
adbenitez 59ec5826aa update changelog 2025-07-07 18:39:51 +02:00
adbenitez e6415abda2 modify QR icon 2025-07-07 17:42:16 +02:00
adbenitez f9885fbcad hidde "chats in common" header when no chats in common 2025-07-07 17:30:45 +02:00
bjoern 4663299951 re-focus profile (#3792)
* duplicate ProfileActivity to AllMediaActivity

* update CHANGELOG

* remove profile stuff from AllMediaActivity

* remove media stuff from ProfileActivity

* remove TabLayout from ProfileActivity

* decouple header from viewType

* easier name editing

* add link to 'apps & media'

* move bio up

* move 'send message' up

* prepare avatar/title/subtitle

* set title

* set subtitle to member count

* add address to profile

* rename ProfileSettings* to just Profile*

* set avatar

* use avatar view

* adaptive avatar cell height

* no endless growing of online-indicator

* simplify

* handle tap on avatars

* rename Profile* to AllMedia*

* set title accordingly

* move 'last seen' up

* edit name by tapping

* Revert "edit name by tapping"

This reverts commit 6727b168302fbe50cbde803fbc83692965d3df59.

Reason is that it introduces uncertainity what happens if the name is tapped -
we do not want to nudge ppl to edit the group name in a similar way.

we may revert this revert,
but for now, let's see if the icon atop isn't sufficient.

* add media count

* space below avatar

* refactor allmedia viewtypes

* select the first tab that has content

* format footer

* remove unused headers

* space above header

* add dividers

* tweak some spacings

* tap on avatar only for enlarge/set avatar

* immediate view of first tap

* tweak value display

* add icons to buttons

* tweak paddings

* no address for self-talk and device-chat

* use signature background for less cluttered UI

* avoid global state modification and showing eg. app-icon tinted also elsewhere

* tweak sizes

* move introduced-by/server down. these information become less important the more chats you have with the contact - and otherwise just clutter UI

* update CHANGELOG

* typo

* use more normal font and spacing for footer

* open "media" deterministically

remove the smart forwarding to "tab with content",
which results in unclear behaviour.

also, we want to push for apps,
which is also the thing that really changes.
when searching for an image, another tap is fine.
2025-07-05 11:16:30 +02:00
adbenitez 0ee08fee42 update core 2025-06-30 20:49:50 +02:00
adbenitez bd8698c3f3 add DcContact.isKeyContact() 2025-06-30 18:58:28 +02:00
adbenitez 0f694876f5 update core submodule 2025-06-27 00:39:10 +02:00
adbenitez 55ea8bbbce Merge branch 'adb/pgp-contacts2' of https://github.com/deltachat/deltachat-android into adb/pgp-contacts2 2025-06-25 14:47:12 +02:00
adbenitez ae2c152382 don't allow to edit mailinglist name
it will get reset on next incoming message anyways
2025-06-25 14:45:22 +02:00
adbenitez 825ee6a79e don't allow to leave email threads 2025-06-25 14:45:05 +02:00
adb edd7938497 Merge branch 'main' into adb/pgp-contacts2 2025-06-24 18:13:01 +00:00
adbenitez f0d62f41c9 show email address for email contacts 2025-06-24 20:12:37 +02:00
adbenitez b5e7f13819 don't allow to edit or clone email threads 2025-06-24 20:05:18 +02:00
adbenitez 9a1c6ce2ad don't show email icon on pending downloads 2025-06-24 18:01:52 +02:00
adbenitez 966d8784f3 adapt to new PGP-contacts 2025-06-24 17:46:51 +02:00
adbenitez 571f49ab13 revert meeting change 2025-06-20 19:04:42 +02:00
adbenitez 365f1dbbe6 basic call 2025-06-20 18:56:45 +02:00
adbenitez 100bb06e20 Merge remote-tracking branch 'origin/r10s/call-api' into adb/integrated-videocalls 2025-06-20 18:54:58 +02:00
adbenitez 27f662707a fix VideochatUtil 2025-06-19 17:20:46 +02:00
adbenitez 3086c72304 undo temporary test 2025-06-19 17:17:53 +02:00
B. Petersen eee218a3b6 add call api 2025-06-19 00:48:59 +02:00
adbenitez fa868077b0 test integrated webxdc 2025-06-18 17:41:09 +02:00
adb e8776177ba Merge branch 'main' into adb/integrated-videocalls 2025-06-18 15:28:04 +00:00
bjoern 9caf94d035 add some DeltaTouch specific strings (#3788)
* add some DeltaTouch specific strings

* typo
2025-06-13 16:43:49 +02:00
B. Petersen 7593ec1831 reword 'Shared Chats' to 'Chats in Common' 2025-06-12 19:36:30 +02:00
adb 677c0592fc Merge branch 'main' into adb/integrated-videocalls 2025-06-12 12:57:07 +00:00
adb 0cc58006ba Merge pull request #3786 from deltachat/adb/improve-reactions-dialog
allow to react with same emoji as others
2025-06-12 12:56:47 +00:00
adbenitez 60e3f475de update build.gradle 2025-06-10 17:45:34 +02:00
adbenitez 8f47783aaf update core 2025-06-10 17:11:34 +02:00
adbenitez a521974b3b Merge remote-tracking branch 'upstream/adb/integrated-videocalls' 2025-06-10 17:10:17 +02:00
adbenitez 2aa71e3eb2 Merge remote-tracking branch 'upstream/adb/improve-reactions-dialog' 2025-06-10 16:35:06 +02:00
adbenitez 005cf835a1 allow to react with same emoji as others 2025-06-10 16:28:56 +02:00
adbenitez 5fb61b008b set name when joining call 2025-06-10 16:05:56 +02:00
adbenitez dd93de3833 improve the videocalls: open in internal webview 2025-06-10 15:20:34 +02:00
adbenitez a13e31a5f7 don't register to open arbitrary files and links 2025-06-10 12:58:20 +02:00
adbenitez 3d891d07a9 undo unnecessary changes 2025-06-10 12:58:04 +02:00
adb bd3c4f9186 Merge pull request #3780 from deltachat/adb/webxdc-tts
add Web API's TTS support to webxdc
2025-05-31 10:46:24 +00:00
adbenitez f4f0df3adb Merge remote-tracking branch 'upstream/adb/webxdc-tts' 2025-05-27 16:08:21 +02:00
adbenitez 6fbe5e2f56 update core 2025-05-27 16:07:30 +02:00
adbenitez edeec415a1 Merge remote-tracking branch 'upstream/main' 2025-05-27 16:05:23 +02:00
adbenitez 90350729d5 Merge branch 'adb/webxdc-tts' of https://github.com/deltachat/deltachat-android into adb/webxdc-tts 2025-05-26 17:40:44 +02:00
adbenitez 7ae4cd4dd3 update changelog 2025-05-26 17:40:03 +02:00
adbenitez 0b50dd445f update changelog 2025-05-26 17:39:01 +02:00
adb bd40f4eb04 Merge branch 'main' into adb/webxdc-tts 2025-05-26 15:38:26 +00:00
adbenitez cfdfab1716 check if lang is empty 2025-05-26 17:37:06 +02:00
adbenitez f8d0fd3f77 update webxdc.js 2025-05-26 17:33:47 +02:00
adbenitez 7186afa321 add Web API's TTS support to webxdc 2025-05-26 17:31:47 +02:00
B. Petersen 201f6e46b0 remove 'metadata' folder again
the 'metadata' folder was already removed at
https://github.com/deltachat/deltachat-android/pull/3211/files ,
however then re-created with unimportant files by weblate,
cmp. https://github.com/deltachat/deltachat-android/issues/3414

as the latter seems to be no longer the case,
remove the folder again and see if it stays away now :)
2025-05-25 11:51:14 +02:00
Yurt Page 813d4324f7 README.md: add link Transifex translations 2025-05-25 11:05:33 +02:00
B. Petersen 27875b83bc unify singular/plural in attach menu
also otherwise, we say "[attach] Contact", "[attach] File", "[attach] Video" etc. -
so it should be "[attach] App" as well.

this is also what desktop/iOS are doing.

the title in the app picker itself, however,
is fine with reading "Apps" - it shows multiple ones
2025-05-24 16:26:08 +02:00
B. Petersen 29d04afc51 update CHANGELOG 2025-05-24 13:24:53 +02:00
B. Petersen e6655fa21d point out that app drafts need to be sent
we got some feedback,
that ppl were wondering if others can use an app
once drafted and opend.

the old title "Tap to open" might even underline that impression.

this PR changes the title to "Tap 'Send' to share"
(we need to be super-short here, "Tap 'Send' to let others use the app" is already too much :)

the sending out of apps is the much more important step than to open,
play a game and then wondering ...
ppl will figure out the latter themselves,
wondering if one can configure eg. a poll before sending -
and if not, then it's that.
2025-05-24 13:24:53 +02:00
adb 7712ada816 Merge pull request #3776 from deltachat/adb/add-direct-action-for-apps-tab
show action button to see the list of apps sent in chat
2025-05-23 14:59:13 +00:00
adbenitez 52788976e3 update changelog 2025-05-23 15:13:24 +02:00
adbenitez 56f55be938 update apps icon 2025-05-23 15:07:19 +02:00
adbenitez 47350b1809 show action button to see the list of apps sent in chat 2025-05-23 14:26:34 +02:00
B. Petersen bb410a1bb1 update CHANGELOG 2025-05-23 13:43:35 +02:00
B. Petersen 04ed9e27c1 remove ambigious time from app list
it is unclear, which time this is - time of adding or time of last update?
it is the prior, however,
both are not important enough to clutter the list,
also desktop/ios do not show them.

i assume, the time display was just kept when adapting from files view.

by making the apps easier accessible,
(cmp https://github.com/deltachat/deltachat-ios/pull/2721 )
we really only want an uncluttered list.
2025-05-23 13:43:35 +02:00
B. Petersen 93c52ec527 remove redundant 'App' subtitle in 'Apps' list 2025-05-23 13:43:35 +02:00
B. Petersen a7b86dd59a update translations 2025-05-21 19:17:20 +02:00
B. Petersen 5587eda657 clearer instructions how to add apps&co to a chat
the instructions are shown when there are no Apps, Images etc. in a chat.

while the "shared in this chat" wording
is maybe more correct on an abstract way
(there are other ways than "attach" to have an app),
the "attached in this chat" points implicitly better to the new app selector -
esp. as the same wording is used for "images",
where the avg user usually knows about how to get that attached.

this little rewording comes from a discussion with @hpk42,
surely, there can be more improvements :)
2025-05-19 22:42:43 +02:00
adb b8a1daff45 Merge pull request #3769 from deltachat/adb/fix-changelog-19/5/25
fix version header
2025-05-19 11:12:17 +00:00
adbenitez deddc5dd29 fix version header 2025-05-19 13:11:31 +02:00
adbenitez 2f371c69cf Merge remote-tracking branch 'upstream/main' 2025-05-19 12:56:38 +02:00
adbenitez c4aa00d40d Merge remote-tracking branch 'upstream/main' 2025-05-15 17:56:41 +02:00
adb 46b5ae4831 Merge pull request #3767 from deltachat/adb/tweak-dcmsg-getWebxdcInfo
avoid causing and logging exception in getWebxdcInfo
2025-05-15 15:38:43 +00:00
adbenitez 16e89bb58a avoid causing and logging exception in getWebxdcInfo if getWebxdcInfoJson returns empty string 2025-05-15 14:19:52 +02:00
adb 1566ea87d3 Merge pull request #3766 from deltachat/prep-1.58.4
prepare 1.58.4
2025-05-15 11:38:11 +00:00
adbenitez cf653f41b7 prepare 1.58.4 2025-05-15 12:49:47 +02:00
adb 785729272a Merge pull request #3765 from deltachat/update-core-and-stuff-15/5/25
Update core to 1.159.5
2025-05-15 10:48:05 +00:00
adbenitez a881f84a03 update changelog 2025-05-15 12:11:09 +02:00
adbenitez d3b2f2df97 update translations 2025-05-15 12:11:01 +02:00
adbenitez f518a3eea9 update deltachat-core-rust to 'chore(release): prepare for 1.159.5' of 'v1.159.5' 2025-05-15 11:56:48 +02:00
l 20819912ee Update Rust to 1.86.0 (#3763) 2025-05-13 15:59:01 +00:00
adb 25ad133e1f Merge pull request #3764 from deltachat/simon/fix-typo-in-full-description
fix typo in full_description
2025-05-13 11:17:19 +00:00
Simon Laux 4eef4a86b5 fix typo in full_description 2025-05-13 00:13:31 +00:00
adb fb50b03af4 Merge pull request #3760 from deltachat/prep-1.58.3
prepare v1.58.3
2025-05-06 14:29:26 +00:00
adbenitez b6ffc8df9e prepare v1.58.3 2025-05-06 16:03:15 +02:00
adb 9a71de6944 Merge pull request #3759 from deltachat/update-core-and-stuff-6/5/25
Update core to 1.159.3
2025-05-06 14:00:59 +00:00
adbenitez f6ab0b18a2 update strings 2025-05-06 15:50:41 +02:00
adbenitez f023961239 update changelog 2025-05-06 15:43:43 +02:00
adbenitez aeb78d579e update deltachat-core-rust to 'chore(release): prepare for 1.159.3' of 'v1.159.3' 2025-05-06 15:37:55 +02:00
B. Petersen cdc47423f9 update translations 2025-05-06 11:47:00 +02:00
B. Petersen 9790730d75 remove deprecated strings 2025-05-06 11:47:00 +02:00
B. Petersen 6cc9a2594f add strings needed for iOS 2025-05-06 11:47:00 +02:00
adb 6814df2976 Merge pull request #3757 from deltachat/adb/add-donate-button
add "Donate" button to main settings
2025-05-05 21:41:30 +00:00
adbenitez 8e8b49508d update changelog 2025-05-05 22:11:15 +02:00
adbenitez 619ac2bb21 put donate and help in category 2025-05-05 21:48:15 +02:00
adbenitez f6750a1583 add "Donate" button to main settings 2025-05-05 19:11:21 +02:00
adb ce895355f5 Merge pull request #3756 from deltachat/r10s/fix-jsonrpc-crash
fix crash in JSONRPC
2025-05-05 14:31:54 +00:00
B. Petersen 17e45fd2ab log error if JSONRPC fails 2025-05-05 13:36:25 +02:00
B. Petersen 8f2b761361 update CHANGELOG 2025-05-03 21:01:15 +02:00
B. Petersen bc72fce060 fix crash in JSONRPC
the fix could have been avoid by checking for null
or not being overly specific with the exception.

as this is a very sensible area,
where any failure is dramatic,
we do both.
2025-05-03 20:39:20 +02:00
Hocuri 501a77e1dc refactor: Rename addTransport -> addOrUpdateTransport() (#3754)
The API was renamed in https://github.com/chatmail/core/pull/6800 (i.e. core v1.159.2)
2025-04-30 14:03:50 +02:00
adbenitez ad6f232d34 undo community hack 2025-04-27 02:11:35 +02:00
adbenitez efbe43ec70 Merge remote-tracking branch 'upstream/main' 2025-04-27 02:09:10 +02:00
B. Petersen 5e38b25c43 make 'microphone' hint fitting for desktop as well
i think, it is even an improvement for Android:
the hint is now also anchored by 'System Settings'
which is more in focus by casual users than 'App Settings' (long tap icon).
also, some android derivates may have different order,
which is captured better by a broader hint.
2025-04-26 17:33:06 +02:00
B. Petersen 6f3f356997 update CHANGELOG 2025-04-26 17:29:55 +02:00
B. Petersen d6f485511c fix selfName if displayname is not set
classic onboarding allows not setting a displayname on purpose,
however, that results in broken webxdc layouts
as the name is then replaced by a 40-or-so-chars-hash-without-spaces.

one can argue, that apps should handle that gracefully,
but most do not and just look buggy.

it seems reasonable,
to use the email address in that case,
same as we do at other places if the name is unknwon.
(tbh, i thought it was like that, but i mixed sth up in OS comparison).
this was also the situation before we changed selfAddr calculation, btw.
it is anyway a cornercase, webxdc cannot send the address somewhere
nor can correlate reasonably, and if the user sets a name, things are fine
(and more often than not we nudge user to set one :)
2025-04-26 17:29:55 +02:00
adb a527b2f404 Merge pull request #3747 from deltachat/prep-1.58.2
prepare 1.58.2
2025-04-24 12:46:41 +00:00
adbenitez 7c77b946ed update version number 2025-04-24 14:45:50 +02:00
adb ca77886012 Merge pull request #3746 from deltachat/update-core-and-stuff-24/4/25
Update core to 1.159.2
2025-04-24 12:42:17 +00:00
adbenitez fa5e305dff update local help 2025-04-24 14:31:01 +02:00
adbenitez 9e70bfb5ae update changelog: fix core version 2025-04-24 14:08:57 +02:00
adbenitez f4c7a9439d update strings 2025-04-24 13:47:09 +02:00
adbenitez 5d05e99ad6 update changelog 2025-04-24 13:45:32 +02:00
adbenitez 79bd1c7cb3 update deltachat-core-rust to 'chore(release): prepare for 1.159.2' of 'v1.159.2' 2025-04-24 13:42:04 +02:00
adb 848a86c718 Merge pull request #3745 from deltachat/adb/fix-warnings-in-profile
fix some linter warnings in classes related to profile
2025-04-23 14:05:43 +00:00
adb e759efc389 Merge pull request #3744 from deltachat/adb/fix-some-linter-warnings-22/4/25
fix some linter warnings
2025-04-22 22:11:40 +00:00
adb 63ea218b98 Merge pull request #3743 from deltachat/adb/fix-lint-warnings-conversationlistitem
fix linter warnings in ConversationListItem
2025-04-22 21:49:16 +00:00
adbenitez 07f4a859f3 fix some linter warnings in classes related to profile 2025-04-22 23:22:57 +02:00
adbenitez 34eeec4a39 fix some linter warnings 2025-04-22 23:02:57 +02:00
adbenitez 7f1734b57c fix linter warnings in ConversationListItem 2025-04-22 22:53:47 +02:00
adbenitez 83fa4c493d Merge remote-tracking branch 'upstream/main' 2025-04-21 23:00:52 +02:00
adb cbc8d2b659 Merge pull request #3741 from deltachat/prep-1.58.1
Prepare 1.58.1
2025-04-19 21:20:25 +00:00
adbenitez 6ff1c7a689 update version number 2025-04-19 22:07:59 +02:00
adbenitez b10185b6b9 update changelog 2025-04-19 22:07:22 +02:00
adb 6ef35c6ce1 Merge pull request #3740 from deltachat/update-core-and-stuff-19/4/25
update core to 1.159.1
2025-04-19 20:05:20 +00:00
adbenitez e04e6dfe06 update changelog 2025-04-19 22:05:01 +02:00
adb 60b322d83e Merge branch 'main' into update-core-and-stuff-19/4/25 2025-04-19 19:59:31 +00:00
adb 94e597d2d1 Merge pull request #3583 from deltachat/adb/issue-3575
show profiles connectivity state
2025-04-19 19:56:14 +00:00
adbenitez c1168566f3 update translations 2025-04-19 21:32:02 +02:00
adbenitez 72fc6ca4dc update deltachat-core-rust to 'chore(release): prepare for 1.159.1' of 'v1.159.1' 2025-04-19 21:27:27 +02:00
adb b2a3042d02 Merge branch 'main' into adb/issue-3575 2025-04-19 19:24:55 +00:00
adb ed4c5e7a72 Merge pull request #3736 from deltachat/adb/issue-3735
fix and update PhotoView dependency
2025-04-17 11:15:47 +00:00
B. Petersen 29a0f3dadb update translations 2025-04-17 11:14:56 +02:00
B. Petersen 1820af288e update translations 2025-04-16 21:06:44 +02:00
B. Petersen be48179a25 update script to grep for strings to chatmail dirs 2025-04-16 21:06:44 +02:00
adbenitez 2aa4245563 fix and update PhotoView dependency 2025-04-15 17:48:55 +02:00
adbenitez 54b5dba6ea update changelog 2025-04-14 19:39:25 +02:00
adb 60fa0c98df Merge branch 'main' into adb/issue-3575 2025-04-14 17:32:37 +00:00
adbenitez ea60418a70 Merge remote-tracking branch 'upstream/main' 2025-04-13 14:34:50 +02:00
adb 2bd1493a42 Merge pull request #3732 from deltachat/prep-1.58.0
prepare 1.58.0
2025-04-13 10:56:34 +00:00
adbenitez 04a22cc8c6 update version number 2025-04-13 12:55:16 +02:00
adbenitez d2780c4c03 Merge remote-tracking branch 'upstream/main' 2025-04-13 12:21:53 +02:00
bjoern bc73e1a2ba open contact in scope when tapping info messages (#3710)
* open contact in scope when tapping info messages

* update CHANGELOG

---------

Co-authored-by: adb <adb@merlinux.eu>
2025-04-12 00:22:24 +02:00
adbenitez 0522aef0fd enable broadcast lists for chatmail again 2025-04-11 20:50:20 +02:00
adbenitez d5a0be0c9c Merge remote-tracking branch 'upstream/main' 2025-04-11 20:21:26 +02:00
adb d66acbb71e Merge pull request #3731 from deltachat/update-core-and-stuff-11/4/25
Update core to 1.159.0
2025-04-11 16:41:56 +00:00
adbenitez 5c06156463 Merge remote-tracking branch 'upstream/main' 2025-04-11 18:40:37 +02:00
adb c07b2b4aa1 Merge branch 'main' into update-core-and-stuff-11/4/25 2025-04-11 16:17:31 +00:00
bjoern 389dddc9ea remove address from primary settings UI (#3730)
* remove address from primary settings UI

showing the address here prominently results in bad UX
as ppl try to pass the address around,
which will not result in e2ee and will often not work.

see https://github.com/deltachat/deltachat-ios/pull/2664
for more resoning and discussion, eg. why remove it unconditionally

* show status

* update changelog

---------

Co-authored-by: adb <adb@merlinux.eu>
Co-authored-by: adbenitez <asieldbenitez@gmail.com>
2025-04-11 18:15:36 +02:00
adbenitez 5dfdc94468 update translations 2025-04-11 18:12:57 +02:00
adbenitez 52d65c1bbb update deltachat-core-rust to 'chore(release): perpare for 1.159.0' of 'v1.159.0' 2025-04-11 18:00:51 +02:00
adbenitez f0f07055cf update changelog 2025-04-11 18:00:35 +02:00
adb c6c66f19f2 Merge pull request #3729 from deltachat/adb/issue-3701
remove address from contact list and group member list
2025-04-11 14:35:05 +00:00
adbenitez fb3d95264a Merge branch 'adb/issue-3701' of https://github.com/deltachat/deltachat-android into adb/issue-3701 2025-04-11 16:33:04 +02:00
adbenitez 92e67bd80a remove unused import 2025-04-11 16:32:53 +02:00
adb 1518bab671 Merge branch 'main' into adb/issue-3701 2025-04-11 14:32:06 +00:00
adb 632da643af Merge pull request #3724 from deltachat/adb/issue-3721
avoid NPE in UriGlideRenderer
2025-04-11 14:31:01 +00:00
adb 7353873281 Merge pull request #3725 from deltachat/adb/issue-3717
avoid SecurityException in NotificationsPreferenceFragment
2025-04-11 14:30:18 +00:00
adb f9ac0375b9 Update src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java
Co-authored-by: bjoern <r10s@b44t.com>
2025-04-11 14:29:14 +00:00
adbenitez 78820ec18a update changelog 2025-04-11 16:25:10 +02:00
adbenitez 3c0e4fd853 don't display last-seen etc. just hide address 2025-04-11 16:22:29 +02:00
adb 31c9de1f03 Merge pull request #3723 from deltachat/adb/issue-3719
catch IllegalArgumentException in InstantOnboardingActivity.progressError()
2025-04-10 21:43:09 +00:00
adbenitez 4240c8b324 remove address from contact list and group member list 2025-04-10 22:09:41 +02:00
B. Petersen f47fff292f update translations 2025-04-08 00:10:17 +02:00
B. Petersen 9106f12b77 remove now unused stock translations 2025-04-08 00:10:17 +02:00
B. Petersen be709fb6df update translations 2025-04-07 16:47:27 +02:00
B. Petersen fca0c03087 add a hint to 'Add Second Device' for ASM 2025-04-07 16:39:28 +02:00
adbenitez 2613be7216 update changelog 2025-04-06 18:34:39 +02:00
adbenitez 43941f9075 avoid SecurityException in NotificationsPreferenceFragment 2025-04-06 18:20:51 +02:00
adbenitez 765e2b490e avoid NPE in UriGlideRenderer 2025-04-06 16:12:49 +02:00
adbenitez cfae361b88 catch IllegalArgumentException in InstantOnboardingActivity.progressError() 2025-04-06 16:03:55 +02:00
B. Petersen bdebd98627 update translations 2025-04-04 20:01:42 +02:00
Hocuri be159407ff feat: In ndk-make.sh, support custom CARGO_TARGET_DIR (#3716)
Running ndk-make.sh triggers a complete rust rebuild, because some compiler flags are changed. Then when you run a normal cargo command again (cargo check etc.), there is another rebuild. My solution is to locally change the target directory. This PR makes ndk-make.sh support such custom target directories.
2025-04-03 12:35:00 +00:00
Hocuri 9daa2d77cd refactor: Remove dead 'configure' code (#3714)
* refactor: Remove dead configure code

* refactor: Remove unnecessary startIo() call; addTransport starts IO itself
2025-04-03 14:12:09 +02:00
Hocuri 05d2d0964f fix: Avoid NPE because of progressDialog (#3715) 2025-04-03 14:11:08 +02:00
Hocuri 10c4a105bb feat: Move to addTransport / addTransportFromQr API (#3676), remove AEAP message (#3698) 2025-04-02 18:14:49 +02:00
adbenitez fe602004c7 Merge remote-tracking branch 'upstream/main' 2025-04-02 17:18:16 +02:00
bjoern e2d7f2c3d3 prefer NAME over NAME (ADDR) (#3699)
* prefer NAME over NAME (ADDR)

this tunes the usage of email addresses further down,
in all cases, the profile should only be a tap away before or afterwards,
so, these mentionings were never really critical

* update CHANGELOG

* Update CHANGELOG.md

Co-authored-by: adb <adb@merlinux.eu>

---------

Co-authored-by: adb <adb@merlinux.eu>
2025-04-02 16:41:36 +02:00
B. Petersen 6996836f80 update translations 2025-04-02 14:44:57 +02:00
bjoern 7d689dc1d6 tune down email wording (#3707)
* tune down usage of 'e-mail' wording, where not needed in primary UI

* strike another provider

* remove e2ee hint for address book, the option was introduced at #2950 where hiding for chatmail (#3050) was not in place

* Update src/main/res/values/strings.xml

Co-authored-by: Hocuri <hocuri@gmx.de>

* Update src/main/res/values/strings.xml

Co-authored-by: Hocuri <hocuri@gmx.de>

* Update src/main/res/values/strings.xml

Co-authored-by: Hocuri <hocuri@gmx.de>

* leave aeap as is, it will be removed anyways

* pick up 'relay' wording

* reword deletion warning

* revert 'messages relayed'; this is not really the experience user can expect

---------

Co-authored-by: Hocuri <hocuri@gmx.de>
2025-04-02 14:34:56 +02:00
B. Petersen 9960423b57 better remove headline alltogether than trying to get an artificial ordering 2025-04-02 12:46:24 +02:00
B. Petersen 06183a9135 'App Access' is not about webxdc as the other options few lines above. use less confusing term 'System Integration' 2025-04-02 12:46:24 +02:00
B. Petersen 796acf1bb0 update translations 2025-04-02 12:45:37 +02:00
bjoern 64e4816f5e add stock string needed when securejoin takes longer than expected (#3709)
* add stock string needed when securejoin takes longer than expected

* apply wording suggestions

* stroke 'as expected', this is not an error, we're offline first, it is fine and continues in bg
2025-04-02 12:35:19 +02:00
bjoern 1680d332f5 hide 'show classic email' for chatmail (#3708)
* hide 'show classic email' for chatmail

* update CHANGELOG
2025-04-01 16:42:48 +02:00
adb 77ee5c6bc0 Merge pull request #3706 from deltachat/adb/update-release-file
remove mention of Apklis
2025-03-30 16:26:01 +00:00
adbenitez f8c678b7ff Merge remote-tracking branch 'upstream/main' 2025-03-30 16:54:49 +02:00
adbenitez cde74ae2e1 remove mention of Apklis 2025-03-30 16:31:31 +02:00
adb 5fd3352d81 Merge pull request #3705 from deltachat/prep-1.56.1
prepare 1.56.1
2025-03-30 14:18:45 +00:00
adbenitez e41b7a4701 update version number 2025-03-30 16:03:45 +02:00
adb dd85322333 Merge pull request #3704 from deltachat/adb/issue-3702
avoid some ANRs in MessageSelectorFragment
2025-03-30 14:00:56 +00:00
adbenitez c7bffb85fd avoid ANR in MessageSelectorFragment.handleDeleteMessages 2025-03-30 15:51:16 +02:00
adbenitez 3518f3d213 avoid ANR in MessageSelectorFragment.handleResendMessage 2025-03-30 15:42:49 +02:00
adbenitez b31774c899 Merge remote-tracking branch 'upstream/main' 2025-03-30 15:28:03 +02:00
adb eebb64ff04 Merge pull request #3700 from deltachat/update-core-and-stuff-30/3/25
Update core  to 1.158.0
2025-03-30 13:17:34 +00:00
adbenitez ee1a6ea5c6 update changelog 2025-03-30 13:22:18 +02:00
adbenitez 063e80bbf7 update translations and built-in help 2025-03-30 13:03:13 +02:00
adbenitez 9f30ebd62c update release instructions 2025-03-30 13:02:49 +02:00
adbenitez ae53415545 update deltachat-core-rust to 'chore(release): prepare for 1.158.0' of 'v1.158.0' 2025-03-30 12:51:46 +02:00
adbenitez 8a495411a3 update release instructions 2025-03-30 12:50:47 +02:00
B. Petersen 2f432bfd3b depreacte the whole string 2025-03-22 21:11:09 +01:00
B. Petersen b2b006c512 improve copy-qr-code success wording; thanks for a translator hint 2025-03-22 21:11:09 +01:00
B. Petersen 7b63d383ee update translations 2025-03-22 14:22:41 +01:00
B. Petersen 2b3a56bb26 remove deprecated asm strings 2025-03-22 14:22:41 +01:00
adb e3408af5be Merge pull request #3694 from deltachat/adb/issue-3692
use Rpc to set contact's name
2025-03-21 13:47:32 +00:00
adbenitez b14b8eea9d use change_contact_name 2025-03-20 18:41:11 +01:00
B. Petersen 5e6c5d7c5e remove unused ASM code; the API calls were only partly removed at #3594 2025-03-20 18:40:29 +01:00
adbenitez c1eff8362f use Rpc.createContact() to set contact's name 2025-03-20 17:38:57 +01:00
B. Petersen fbca401488 update translations 2025-03-19 14:21:17 +01:00
B. Petersen 39fe0dd523 remove unused emoji resources; emoji were refactored at https://github.com/deltachat/deltachat-android/pull/3411 ff 2025-03-19 13:33:05 +01:00
B. Petersen 0491018c24 remove asm input field; importing keys was removed at https://github.com/deltachat/deltachat-android/pull/3594 2025-03-19 13:33:05 +01:00
B. Petersen f91ceb8463 remove quick camera resources; quick camera was removed at https://github.com/deltachat/deltachat-android/pull/3582 2025-03-19 13:33:05 +01:00
B. Petersen 9f1def20cd remove deprecated strings that are no longer in use; mark some strings as deprecated that are in use partly still 2025-03-19 13:33:05 +01:00
adb 64a8c7755d Merge pull request #3689 from deltachat/adb/dont-use-email-address
don't use email address as contact unique identifier
2025-03-19 12:27:56 +00:00
adbenitez 12807763d6 remove TODO comment 2025-03-19 13:03:18 +01:00
adbenitez fbf8637c97 don't use email address as contact unique identifier 2025-03-18 22:56:28 +01:00
adb 8aedbc60a4 Merge pull request #3687 from deltachat/adb/fix-crash-orphan-webxdc-info-msg
avoid crash when clicking orphan info messages from webxdc
2025-03-18 19:17:56 +00:00
adbenitez 38c3b5561b update changelog 2025-03-18 19:44:50 +01:00
adbenitez 3e21f9be4d avoid crash in orphan info messages from webxdc 2025-03-18 19:41:19 +01:00
B. Petersen ad1159c05c remove 'experimental, 1.36 required' hint from add-second-device 2025-03-17 13:51:46 +01:00
adbenitez 314ecf1639 add device message 2025-03-15 23:09:28 +01:00
adbenitez df6ac480c6 Merge remote-tracking branch 'upstream/main' 2025-03-15 22:05:36 +01:00
adb 8974a62a0c Merge pull request #3684 from deltachat/prep-1.56.0
prepare 1.56.0
2025-03-15 19:12:26 +00:00
adbenitez d2c8e2e63a Merge remote-tracking branch 'upstream/main' 2025-03-15 19:08:27 +01:00
adbenitez 11600184be update version number 2025-03-15 18:52:59 +01:00
adb ee78397614 Merge pull request #3594 from deltachat/adb/issue-3591
hide some option in Encryption category
2025-03-15 17:50:49 +00:00
adb b33311b9fb Merge branch 'main' into adb/issue-3591 2025-03-15 17:50:30 +00:00
adb b90f6e296a Merge pull request #3683 from deltachat/update-core-and-stuff-15/3/25
Update core to 1.157.2
2025-03-15 17:49:45 +00:00
adbenitez 5789390451 update changelog 2025-03-15 18:48:34 +01:00
adbenitez 1a84cd05a5 update translations 2025-03-15 18:44:49 +01:00
adbenitez 3578a9bef1 update deltachat-core-rust to 'chore(release): prepare for 1.157.2' of 'v1.157.2' 2025-03-15 18:24:35 +01:00
adbenitez 52280bf744 reduce padding of "or" separator in registration screen 2025-03-15 18:18:07 +01:00
adbenitez 26645da56d Merge remote-tracking branch 'upstream/main' 2025-03-15 17:44:58 +01:00
adbenitez 828ff3d8ca add scroll to registration screen for small screens 2025-03-15 17:25:12 +01:00
adb 7954e94d45 Merge pull request #3680 from deltachat/adb/paste-as-plain-text
force "paste as plain text" in composer
2025-03-15 15:24:42 +00:00
adb c1e47f4a9c Merge pull request #3681 from deltachat/adb/add-symbols-instructions-to-readme
add instructions about decoding symbols in core crash
2025-03-15 15:23:29 +00:00
adbenitez d3193221f6 add instructions about decoding symbols in core crash 2025-03-14 15:54:30 +01:00
adbenitez e7b4accea0 update changelog 2025-03-14 01:04:58 +01:00
adbenitez 67baedc0dc force "paste as plain text" in composer 2025-03-14 00:20:56 +01:00
adbenitez 74c02932c3 Merge remote-tracking branch 'upstream/main' 2025-03-13 18:24:28 +01:00
adbenitez 2968d033f2 update strings.xml 2025-03-13 17:47:43 +01:00
adbenitez 43d48fa510 update changelog 2025-03-13 17:47:36 +01:00
adb 337f353220 Merge branch 'main' into adb/issue-3591 2025-03-13 16:24:18 +00:00
adbenitez 218295c4f3 remove ASM handling 2025-03-13 17:22:53 +01:00
B. Petersen bf86d4f1b7 update CHANGELOG 2025-03-13 16:56:03 +01:00
B. Petersen d383bcc451 add mute option for 8 hours 2025-03-13 16:56:03 +01:00
adb 2e1a40b606 Merge branch 'main' into adb/issue-3591 2025-03-13 15:53:54 +00:00
B. Petersen 10c538ac8e no 'delete on all devices' for device messages
do not say "Delete on all your devices"
when deleting a message in the "Device Messages" chat.

while this is a minor,
it is one of the first things the user may see,
better be correct there to not give a false first impression of correctness :)
2025-03-12 22:25:49 +01:00
adb 35852604ea Merge pull request #3633 from deltachat/adb/allow-to-edit-and-delete-for-all
allow to edit and delete for all
2025-03-12 19:18:43 +00:00
adbenitez 0c8ecaf8df add changelog entry 2025-03-12 20:06:27 +01:00
adb cbe70a93db Merge branch 'main' into adb/allow-to-edit-and-delete-for-all 2025-03-12 18:50:17 +00:00
adb 7768ef3ff9 Merge pull request #3674 from deltachat/adb/issue-3599
add action menu icon option to toggle message bookmark
2025-03-12 18:49:57 +00:00
adbenitez d337230a4b Merge branch 'adb/issue-3599' of https://github.com/deltachat/deltachat-android into adb/issue-3599 2025-03-12 19:31:13 +01:00
adbenitez de76377f3b change bookmark icons 2025-03-12 19:30:45 +01:00
adb f223b22ff8 Merge branch 'main' into adb/issue-3599 2025-03-12 17:56:08 +00:00
adb 9850e6fff7 Merge pull request #3673 from deltachat/adb/avoid-npe-in-processComposeControls
avoid NPE in processComposeControls
2025-03-12 16:56:22 +00:00
adbenitez 6ab94814ca update changelog 2025-03-12 17:32:25 +01:00
adb e0db504b18 Merge branch 'main' into adb/avoid-npe-in-processComposeControls 2025-03-12 16:25:22 +00:00
adb fe44eec6c8 Merge branch 'main' into adb/issue-3599 2025-03-12 16:23:55 +00:00
B. Petersen 7bc595a889 check for CHANGELOG in PRs changing .java files 2025-03-12 17:22:54 +01:00
adbenitez 5133461eb7 set title 2025-03-12 17:12:47 +01:00
adbenitez b4b12862fd add action menu icon option to toggle message bookmark 2025-03-12 17:06:18 +01:00
adbenitez 1340166a91 don't allow to delete info-messages for all 2025-03-12 16:22:45 +01:00
adbenitez 1663502d35 avoid NPE in processComposeControls 2025-03-12 16:16:34 +01:00
adbenitez 9a67f5b32a remove e2ee_enabled and import/export keys from advanced settings 2025-03-12 16:13:04 +01:00
adbenitez 773913409f hide the Encryption category completed for chatmail accounts 2025-03-12 14:47:40 +00:00
link2xt e6988e3f61 Format flake.nix 2025-03-12 02:43:37 +00:00
link2xt 0047259457 Update NDK in flake.nix from 27.0.11902837 to 27.2.12479018 2025-03-12 02:43:37 +00:00
adbenitez 3e9c977b3f Merge remote-tracking branch 'upstream/main' 2025-03-11 22:16:52 +01:00
adb 3a49e30d93 Merge pull request #3671 from deltachat/adb/issue-3670
check if activity is finishing before creating "one moment" dialog
2025-03-11 21:12:02 +00:00
adbenitez 11addb6522 check if activity is finishing before creating "one moment" dialog 2025-03-11 20:40:30 +01:00
adbenitez 6353bb94f4 improve "force encryption" option and warn when disabling 2025-03-11 18:23:12 +01:00
adb 5df2ba4325 Merge pull request #3667 from deltachat/adb/issue-3662
avoid ANR in ConversationActivity.processComposeControls
2025-03-10 23:20:37 +00:00
adbenitez cca9dfb04a avoid ANR in ConversationActivity.processComposeControls 2025-03-10 22:17:47 +01:00
adbenitez 78b3c3883d change offline color 2025-02-05 16:20:29 +01:00
adbenitez e28e6b9b73 don't display dot when connected 2025-02-05 16:20:29 +01:00
adbenitez 4ed51b6b56 show profiles connectivity state 2025-02-05 16:20:29 +01:00
adbenitez 40a79fbad5 add "After 90 days" option to disappearing messages 2024-12-04 17:46:00 +01:00
1017 changed files with 72764 additions and 57908 deletions
+314
View File
@@ -0,0 +1,314 @@
# GitHub Copilot Instructions for ArcaneChat Android
## Project Overview
ArcaneChat is a Delta Chat Android client built on top of the official Delta Chat client with several improvements. It is a messenger app that uses email infrastructure for secure communication.
**Technology Stack:**
- **Language:** Java (Java 8 compatibility)
- **Build System:** Gradle with Android Gradle Plugin 8.11.1
- **Min SDK:** 21 (Android 5.0)
- **Target SDK:** 36 (Android 16)
- **NDK Version:** 27.0.12077973
- **Native Components:** Rust (deltachat-core-rust submodule)
- **UI Framework:** Android SDK, Material Design Components
- **Testing:** JUnit 4, Espresso, Mockito, PowerMock, AssertJ
## Repository Structure
- `src/main/` - Main application source code
- `src/main/java/org/thoughtcrime/securesms/` - Main UI components
- `src/main/java/com/b44t/messenger/` - Delta Chat core integration
- `src/main/java/chat/delta/rpc/` - JSON-RPC bindings (generated, don't edit manually)
- `src/main/res/` - Android resources (layouts, strings, drawables)
- `src/androidTest/` - Instrumented tests (UI tests, benchmarks)
- `src/androidTest/java/com/b44t/messenger/uitests/` - UI tests
- `src/androidTest/java/com/b44t/messenger/uibenchmarks/` - Performance benchmarks
- `src/gplay/` - Google Play flavor-specific code
- `src/foss/` - F-Droid/FOSS flavor-specific code
- `jni/deltachat-core-rust/` - Native Rust core library (submodule, **don't edit directly**)
- `scripts/` - Build and helper scripts
- `scripts/ndk-make.sh` - Build native libraries
- `scripts/install-toolchains.sh` - Install Rust cross-compilation toolchains
- `scripts/generate-rpc-bindings.sh` - Generate JSON-RPC bindings
- `docs/` - Documentation
- `fastlane/` - App store metadata and screenshots
- `.github/workflows/` - CI/CD workflows (GitHub Actions)
## Build Instructions
### Prerequisites
1. **Initialize submodules:**
```bash
git submodule update --init --recursive
```
This MUST be done first before any build attempts.
2. **Set up environment variables:**
```bash
export ANDROID_NDK_ROOT=/path/to/ndk/27.0.12077973
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
Note: Path format varies by OS (linux-x86_64, darwin-x86_64, etc.)
3. **Install Rust toolchains:**
```bash
scripts/install-toolchains.sh
```
Required for building the native Rust components.
4. **Build native libraries:**
```bash
scripts/ndk-make.sh
```
**IMPORTANT:** First run takes 30-60 minutes as it builds for all architectures (armeabi-v7a, arm64-v8a, x86, x86_64).
For faster development builds, build for a single architecture:
```bash
scripts/ndk-make.sh armeabi-v7a
```
5. **Build APK:**
```bash
./gradlew assembleDebug
```
Build time: ~2-5 minutes after native libraries are built.
### Build Flavors
- **gplay:** Google Play version with Firebase Cloud Messaging (applicationId: `com.github.arcanechat`)
- **foss:** F-Droid version without proprietary services (applicationId: `chat.delta.lite`)
### Build Outputs
- Debug APKs: `build/outputs/apk/gplay/debug/` and `build/outputs/apk/fat/debug/`
- Release APKs require signing configuration in `~/.gradle/gradle.properties`
### Common Build Issues
1. **Missing NDK or incorrect version:**
- Error: `ANDROID_NDK_ROOT not set` or native library missing
- Solution: Install NDK 27.0.12077973 and set ANDROID_NDK_ROOT environment variable
2. **Submodules not initialized:**
- Error: Missing deltachat-core-rust files
- Solution: Run `git submodule update --init --recursive`
3. **Gradle wrapper validation:**
- Always validate gradle wrapper before building: `./gradlew wrapper --gradle-version=current`
- Wrapper is validated in CI via `gradle/actions/wrapper-validation@v4`
4. **Clean build issues:**
- If build fails, try: `./gradlew clean && scripts/ndk-make.sh && ./gradlew assembleDebug`
- Remove `build/` directory if clean doesn't work
## Testing
### Running Unit Tests
```bash
./gradlew test
```
Expected duration: 1-3 minutes
### Running Instrumented Tests
1. **Disable animations** on your device/emulator:
- Developer Options → Set "Window animation scale", "Transition animation scale", and "Animator duration scale" to 0x
- **CRITICAL:** Tests will fail if animations are enabled
2. **Run tests:**
```bash
./gradlew connectedAndroidTest
```
Expected duration: 10-30 minutes depending on device/emulator
### Online Tests
Some tests require real email credentials. Configure in `~/.gradle/gradle.properties`:
```properties
TEST_ADDR=youraccount@yourdomain.org
TEST_MAIL_PW=yourpassword
```
### UI Tests and Benchmarks
- Located in `src/androidTest/java/com/b44t/messenger/`
- Test categories: `uitests/online/`, `uitests/offline/`, `uibenchmarks/`
- Run via Android Studio: Run → Edit Configurations → Android Instrumented Test
## Coding Conventions
### General Guidelines
1. **Embrace existing style:** Match the coding style of the file you're editing
2. **Minimize changes:** Don't refactor or rename in the same PR as bug fixes/features
3. **Readable over paradigmatic:** Favor readability over strict Java patterns
4. **Avoid premature optimization:** Keep things simple and on point
5. **No excessive abstraction:** Avoid unnecessary factories, one-liner functions, or abstraction layers
6. **Comments:** Only add comments if they match existing style or explain complex logic
### Architecture
- **UI/Model Separation:** Delta Chat Core (Rust) handles the model layer
- **High-level interface:** Core provides data in UI-ready form; avoid additional transformations in UI layer
- **Direct approach:** Prefer direct implementation over excessive class hierarchies
### Key Principles
- Work hard to avoid options and up-front choices
- Avoid speaking about keys/encryption in primary UI
- App must work offline and with poor network
- Users don't read much text
- Consistency matters
- Primary UI should only show highly useful features
## Common Development Tasks
### Adding New Features
1. Consider the UX philosophy (minimal options, offline-first, simplicity)
2. Check if core library changes are needed before implementing in UI
3. Match existing code style in modified files
4. Add instrumented tests for UI changes when appropriate
5. Update relevant documentation
### Modifying Core Integration
- Core library is in `jni/deltachat-core-rust/` submodule
- Java bindings are in `src/main/java/com/b44t/messenger/Dc*.java`
- JSON-RPC bindings in `chat.delta.rpc.*` package (generated via dcrpcgen)
### Generating JSON-RPC Bindings
To regenerate JSON-RPC bindings after core changes:
```bash
./scripts/generate-rpc-bindings.sh
```
**Note:** Requires Rust tooling and [dcrpcgen tool](https://github.com/chatmail/dcrpcgen) installed
### Working with Translations
- Translations managed via Transifex (not in repository)
- English source strings: `res/values/strings.xml`
- Don't mix string changes with refactoring
### Debugging Native Code
Decode crash symbols:
```bash
$ANDROID_NDK_ROOT/ndk-stack --sym obj/local/armeabi-v7a --dump crash.txt > decoded.txt
```
## Validation and Quality Checks
### Pre-commit Checks
Before committing changes, always run:
1. **Gradle wrapper validation:**
```bash
./gradlew wrapper --gradle-version=current
```
2. **Build verification:**
```bash
./gradlew assembleDebug
```
3. **Unit tests:**
```bash
./gradlew test
```
4. **Code style:** Match existing code style in modified files (no automatic formatter configured)
### When to Rebuild Native Libraries
Rebuild native libraries (`scripts/ndk-make.sh`) when:
- Updating deltachat-core-rust submodule
- Modifying anything in `jni/` directory
- Changing NDK version
- After `git clean -fdx` or fresh clone
**DO NOT** rebuild native libraries for:
- Pure Java/Kotlin code changes
- Resource file changes
- Gradle configuration changes (unless changing native library linking)
- Documentation updates
## WebXDC Support
ArcaneChat has extended WebXDC support:
- `window.webxdc.arcanechat` - Version detection
- `sendToChat()` - Extra properties: `subject`, `html`, `type` (sticker/image/audio/video/file)
- External link support in apps
- `manifest.toml` - `orientation` field for landscape mode
## Important Files
- `build.gradle` - Main build configuration (Android Gradle Plugin 8.11.1, Java 8 compatibility)
- `CONTRIBUTING.md` - Contribution guidelines
- `BUILDING.md` - Detailed build setup instructions
- `RELEASE.md` - Release process
- `proguard-rules.pro` - ProGuard configuration (enabled for both debug and release)
- `google-services.json` - Firebase configuration (gplay flavor only)
- `settings.gradle` - Gradle settings
- `.github/workflows/` - CI/CD configuration
## Dependencies and Constraints
- **Java Version:** Java 8 compatibility (do not use Java 9+ features)
- **Gradle:** Use wrapper (`./gradlew`) to ensure correct Gradle version
- **NDK:** Must use version 27.0.12077973 (specified in build.gradle)
- **Min SDK:** 21 (Android 5.0) - code must be compatible
- **Target SDK:** 36 (Android 16) - test on this API level when possible
- **ProGuard:** Always enabled - ensure ProGuard rules are correct for new dependencies
- **Multi-dex:** Enabled - app exceeds 65k method limit
## Package Structure
- `org.thoughtcrime.securesms.*` - Main UI components (legacy namespace from Signal)
- `com.b44t.messenger.*` - Delta Chat core integration
- `chat.delta.rpc.*` - JSON-RPC bindings (generated)
## Notes for AI Assistants
- This is a fork of Delta Chat Android with ArcaneChat-specific improvements
- Maintain compatibility with Delta Chat core library
- Test on both gplay and foss flavors when making changes
- Native library must be rebuilt after core changes
- ProGuard is enabled in both debug and release builds
- Multi-dex is enabled due to app size
## CI/CD Workflows
### Preview APK Workflow (.github/workflows/preview-apk.yml)
Runs on every pull request to build and upload a preview APK:
1. **Setup steps:**
- Checks out repository with submodules
- Validates Fastlane metadata
- Sets up Rust cache (working-directory: jni/deltachat-core-rust)
- Sets up Java 17 (Temurin distribution)
- Sets up Android SDK
- Caches Gradle dependencies
- Sets up NDK r27
2. **Build process:**
```bash
scripts/install-toolchains.sh && scripts/ndk-make.sh armeabi-v7a
./gradlew --no-daemon -PABI_FILTER=armeabi-v7a assembleFossDebug
```
Note: Builds only armeabi-v7a for faster CI builds
3. **Output:** Uploads APK artifact to GitHub Actions
### Important CI Considerations
- Always validate Gradle wrapper before committing changes
- Fastlane metadata must be valid (validated in CI)
- Use `--no-daemon` flag for Gradle in CI environments
- CI builds use FOSS flavor to avoid Google Services dependencies
- Expected CI build time: 15-25 minutes for full workflow
+22
View File
@@ -0,0 +1,22 @@
version: 2
mergeable:
- when: pull_request.*
name: "Changelog check"
validate:
- do: or
validate:
- do: description
must_include:
regex: '#skip-changelog'
- do: and
validate:
- do: dependent
changed:
file: '**/*.java'
required: ['CHANGELOG.md']
fail:
- do: checks
status: 'action_required'
payload:
title: CHANGELOG.md might need an update
summary: "Please update CHANGELOG.md or add #skip-changelog to the description"
+1 -1
View File
@@ -7,7 +7,7 @@ on:
jobs:
artifacts-url-comments:
name: add artifact links to pull request
runs-on: windows-2019
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: add artifact links to pull request
+50
View File
@@ -0,0 +1,50 @@
name: Core Cache
on:
push:
branches: [main]
paths:
- 'jni/deltachat-core-rust'
- 'jni/Android.mk'
- 'jni/Application.mk'
- 'jni/dc_wrapper.c'
- 'scripts/ndk-make.sh'
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
with:
submodules: recursive
- uses: android-actions/setup-android@v3
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27
- uses: Swatinem/rust-cache@v2
with:
workspaces: jni/deltachat-core-rust
- name: Get deltachat-core-rust submodule hash
id: core-hash
run: echo "hash=$(git rev-parse HEAD:jni/deltachat-core-rust)" >> $GITHUB_OUTPUT
- name: Cache compiled core
id: cache-core
uses: actions/cache@v4
with:
path: |
jni/arm64-v8a
libs/arm64-v8a
key: core-arm64-v8a-${{ steps.core-hash.outputs.hash }}-${{ hashFiles('jni/Android.mk', 'jni/Application.mk', 'jni/dc_wrapper.c', 'scripts/ndk-make.sh') }}-ndk-r27
- name: Compile core
if: steps.cache-core.outputs.cache-hit != 'true'
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export PATH="${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/"
scripts/install-toolchains.sh && scripts/ndk-make.sh arm64-v8a
+35
View File
@@ -0,0 +1,35 @@
name: Code Format
on:
push:
branches: [main]
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
spotless:
name: Check code format (Spotless)
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v5
with:
java-version: 17
distribution: temurin
- uses: actions/cache@v4
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v4
- name: Check formatting
run: ./gradlew spotlessCheck
+35 -16
View File
@@ -2,29 +2,28 @@ name: Upload Preview APK
on: pull_request
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
build:
name: Upload Preview APK
runs-on: ubuntu-latest
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@0.9.1
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v3
- uses: actions/checkout@v5
with:
submodules: recursive
- name: Validate Fastlane Metadata
uses: ashutoshgngwr/validate-fastlane-supply-metadata@v2
- uses: Swatinem/rust-cache@v2
with:
working-directory: jni/deltachat-core-rust
- uses: actions/setup-java@v3
- uses: actions/setup-java@v5
with:
java-version: 17
distribution: 'temurin'
- uses: android-actions/setup-android@v3
- uses: actions/cache@v3
- uses: actions/cache@v4
with:
path: |
~/.gradle/caches
@@ -32,23 +31,43 @@ jobs:
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Validate Gradle Wrapper
uses: gradle/actions/wrapper-validation@v4
- uses: android-actions/setup-android@v3
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27
- uses: Swatinem/rust-cache@v2
with:
workspaces: jni/deltachat-core-rust
- name: Get deltachat-core-rust submodule hash
id: core-hash
run: echo "hash=$(git rev-parse HEAD:jni/deltachat-core-rust)" >> $GITHUB_OUTPUT
- name: Restore compiled core
id: core-cache
uses: actions/cache/restore@v4
with:
path: |
jni/arm64-v8a
libs/arm64-v8a
key: core-arm64-v8a-${{ steps.core-hash.outputs.hash }}-${{ hashFiles('jni/Android.mk', 'jni/Application.mk', 'jni/dc_wrapper.c', 'scripts/ndk-make.sh') }}-ndk-r27
- name: Compile core
if: steps.core-cache.outputs.cache-hit != 'true'
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export PATH="${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/"
scripts/install-toolchains.sh && scripts/ndk-make.sh armeabi-v7a
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
scripts/install-toolchains.sh && scripts/ndk-make.sh arm64-v8a
- name: Build APK
run: ./gradlew --no-daemon -PABI_FILTER=armeabi-v7a assembleFossDebug
run: ./gradlew --no-daemon -PABI_FILTER=arm64-v8a assembleFossDebug
- name: Upload APK
uses: actions/upload-artifact@v4
+6 -2
View File
@@ -59,12 +59,16 @@ jobs:
rm build/outputs/apk/foss/release/*universal*
./gradlew assembleGplayRelease
mv build/outputs/apk/gplay/release/*universal* build/outputs/apk/foss/release/ArcaneChat-gplay.apk
mv build/outputs/mapping/fossRelease/mapping.txt build/outputs/mapping/fossRelease/mapping-foss.txt
mv build/outputs/mapping/gplayRelease/mapping.txt build/outputs/mapping/fossRelease/mapping-gplay.txt
- name: Release
- name: Release on GitHub
uses: softprops/action-gh-release@v1
with:
token: "${{ secrets.GITHUB_TOKEN }}"
body: '[<img src="store/get-it-on-gplay.png" alt="Get it on Google Play" height="48">](https://play.google.com/store/apps/details?id=com.github.arcanechat) [<img src="store/get-it-on-fdroid.png" alt="Get it on F-Droid" height="48">](https://f-droid.org/packages/chat.delta.lite) [<img src="store/get-it-on-github.png" alt="Get it on GitHub" height="48">](https://github.com/ArcaneChat/android/releases/latest/download/ArcaneChat-gplay.apk)'
prerelease: ${{ contains(github.event.ref, '-beta') }}
fail_on_unmatched_files: true
files: build/outputs/apk/foss/release/*.apk
files: |
build/outputs/apk/foss/release/*.apk
build/outputs/mapping/fossRelease/mapping-*.txt
+245
View File
@@ -0,0 +1,245 @@
# Building and Testing
This document describes how to set up the build environment,
build and test the app. Before diving into developing, please
first read [CONTRIBUTING.md](./CONTRIBUTING.md) for general
contribution hints and conventions.
Please follow all steps precisely.
If you run into troubles,
ask on one of the [communication channels](https://delta.chat/contribute) for help
## Check Out Repository
When checking out _deltachat-android_, make sure also to check out the
subproject _deltachat-core-rust_:
- When using Git, you can do this initially by
`$ git clone --recursive https://github.com/deltachat/deltachat-android`
or later by `git submodule update --init --recursive`. If you do this in your
home directory, this results in the folder `~/deltachat-android` which is just fine.
## Generate JSON-RPC bindings
To generate/update the JSON-RPC bindings (ex. `chat.delta.rpc.*` package)
install Rust tooling (read sections below) and the [dcrpcgen tool](https://github.com/chatmail/dcrpcgen)
then generate the code running the script:
```
./scripts/update-rpc-bindings.sh
```
## Build Using Nix
The repository contains [Nix](https://nixos.org/) development environment
described in `flake.nix` file.
If you don't have Nix installed,
the easiest way is to follow the [Lix installation instructions](https://lix.systems/install/)
as this results in a setup with [Flakes](https://nixos.wiki/wiki/Flakes) feature enabled out of the box
and can be cleanly uninstalled with `/nix/nix-installer uninstall` once you don't need it anymore.
Once you have Nix with Flakes feature set up start the development environment shell:
```
nix develop
```
Nix development environment contains Rust with cross-compilation toolchains and Android SDK.
To [build an APK](https://developer.android.com/studio/build/building-cmdline) run the following 2 steps.
Note that the first step may take some time to build for all architectures. You can optionally read
[the first comment block in the `ndk-make.sh` script](https://github.com/deltachat/deltachat-android/blob/master/scripts/ndk-make.sh)
for pointers on how to build for a specific architecture.
```
$ scripts/ndk-make.sh
$ ./gradlew assembleDebug
```
Resulting APK files can be found in
`build/outputs/apk/gplay/debug/` and
`build/outputs/apk/fat/debug/`.
## Build Using Dockerfile
Another way to build APK is to use provided `Dockerfile`
with [Docker](https://www.docker.com/) or [Podman](https://podman.io/).
Podman is a drop-in replacement for Docker that does not require root privileges.
If you don't have Docker or Podman setup yet, read [how to setup Podman](#setup-podman)
below. If you don't want to use Docker or Podman, read [how to manually install the
build environment](#install-build-environment).
First, build the image `deltachat-android` by running
```
podman build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
```
or
```
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
```
Then, run the image:
```
podman run --userns=keep-id -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
```
or
```
docker run -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
```
You can leave the container with Ctrl+D or by typing `exit` and re-enter it with
`docker start -ia deltachat` or `podman start -ia deltachat`.
Within the container, install toolchains and build the native library:
```
deltachat@6012dcb974fe:/home/app$ scripts/install-toolchains.sh
deltachat@6012dcb974fe:/home/app$ scripts/ndk-make.sh
```
Then, [build an APK](https://developer.android.com/studio/build/building-cmdline):
```
deltachat@6012dcb974fe:/home/app$ ./gradlew assembleDebug
```
### Troubleshooting
- Executing `./gradlew assembleDebug` inside the container fails with `The SDK directory '/home/user/Android/Sdk' does not exist.`:
The problem is that Android Studio (outside the container) automatically creates a file `local.properties` with a content like `sdk.dir=/home/username/Android/Sdk`,
so, Gradle-inside-the-container looks for the Sdk at `/home/username/Android/Sdk`, where it can't find it.
You could:
- either: remove the file or just the line starting with `sdk.dir`
- or: run `./gradlew assembleDebug` from outside the container (however, there may be incompatibility issues if different versions are installed inside and outside the container)
- Running the image fails with `ERRO[0000] The storage 'driver' option must be set in /etc/containers/storage.conf, guarantee proper operation.`:
In /etc/containers/storage.conf, replace the line: `driver = ""` with: `driver = "overlay"`.
You can also set the `driver` option to something else, you just need to set it to _something_.
[Read about possible options here](https://github.com/containers/storage/blob/master/docs/containers-storage.conf.5.md#storage-table).
## <a name="setup-podman"></a>Setup Podman
These instructions were only tested on a Manjaro machine so far. If anything doesn't work, please open an issue.
First, [Install Podman](https://podman.io/getting-started/installation).
Then, if you want to run Podman without root, run:
```
sudo touch /etc/subgid
sudo touch /etc/subuid
sudo usermod --add-subuids 165536-231072 --add-subgids 165536-231072 yourusername
```
(replace `yourusername` with your username).
See https://wiki.archlinux.org/index.php/Podman#Rootless_Podman for more information.
## <a name="install-build-environment"></a>Install Build Environment (without Docker or Podman)
To setup build environment manually:
- _Either_, in Android Studio, go to "Tools / SDK Manager / SDK Tools", enable "Show Package Details",
select "CMake" and the desired NDK (install the same NDK version as the [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile)), hit "Apply".
- _Or_ read [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile) and mimic what it does.
Then, in both cases, install Rust using [rustup](https://rustup.rs/)
and Rust toolchains for cross-compilation by executing `scripts/install-toolchains.sh`.
Then, configure `ANDROID_NDK_ROOT` environment variable to point to the Android NDK
installation directory e.g. by adding this to your `.bashrc`:
```bash
export ANDROID_NDK_ROOT=${HOME}/Android/Sdk/ndk/[version] # (or wherever your NDK is) Note that there is no `/` at the end!
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
After that, call `scripts/ndk-make.sh` in the root directory to build core-rust.
Afterwards run the project in Android Studio. The project requires API 25.
With chance, that's it :) - if not, read on how to set up a proper development
environment.
## Install Development Environment
1. Some libs required by Android Studio may be missing on 64 bit Linux machines
[Source](https://developer.android.com/studio/install.html)], so for Ubuntu execute
`$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386`
and for Fedora execute
`$ sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686`.
2. Download Android Studio from <https://developer.android.com> (android-studio-ide-...-linux.zip)
and unpack the archive which contains a single folder called `android-studio`;
move this folder e.g. to `~/android-studio`.
3. To launch Android Studio for the first time, open a terminal, navigate to
`~/android-studio/bin`, execute `./studio.sh` and use all the standard values
from the wizard.
4. Android Studio now asks you if you want to open an existing project;
choose `~/deltachat-android` as created in the "Build" chapter (Android Studio starts to
build the project, however, there are some steps missing before this will
succeed).
5. If components are missing, click on the corresponding error
message and install eg. required SDKs and the "Build-Tools" (you should
also find the option at "Tools / Android / SDK Manager / SDK Platforms").
Now the build should succeed - but the app still misses the native part.
6. Download Android NDK from
[NDK Archives](https://developer.android.com/ndk/downloads)
and extract the archive containing a single folder
called something like `android-ndk-r23b-linux`; move this folder e.g. to `~/android-ndk`.
7. Export the folder path to your environment as `ANDROID_NDK_ROOT` and add it to `PATH`.
You can achieve this e.g. by adding this to your `.bashrc`
```bash
export ANDROID_NDK_ROOT=${HOME}/android-ndk
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
## Run UI Tests and Benchmarks
- You don't necessarily need a dedicated testing device.
Backup your current account first, maybe there are some bugs in switching accounts.
- You can run benchmarks on either an emulated device or a real device.
You need at least Android 9. For better benchmark results,
you should run the benchmark on a real device and make sure that the core is compiled in release mode.
- Disable animations on your device, otherwise the test may fail:
at "Developer options"
set all of "Window animation scale", "Transition animation scale" and "Animator duration scale" to 0x
- In Android Studio: "File" / "Sync project with gradle files"
- In Android Studio: "Run" / "Edit configurations" / "+" / "Android Instrumented test":
Either select a specific class or select "All in Module" / "OK" /
Select your configuration in the toolbar / Click on the green "run" button in the toolbar to run the tests
### Get the benchmark results
When the benchmark is done, you will get a result like
`MEASURED RESULTS (Benchmark) - Going thorough all 10 chats: 11635,11207,11363,11352,11279,11183,11137,11145,11032,11057`.
You can paste `11635,11207,11363,11352,11279,11183,11137,11145,11032,11057`
into a cell in a LibreOffice spreadsheet, do "Data" / "Text to columns",
choose `,` as a separator, hit "OK", and create a diagram.
### Run online tests
For some tests, you need to provide the credentials to an actual email account.
You have 2 ways to do this:
1. (Recommended): Put them into the file ~/.gradle/gradle.properties (create it if it doesn't exist):
```
TEST_ADDR=youraccount@yourdomain.org
TEST_MAIL_PW=youpassword
```
2. Or set them via environment variables.
## Decoding Symbols in Crash Reports
```
$ANDROID_NDK_ROOT/ndk-stack --sym obj/local/armeabi-v7a --dump crash.txt > decoded.txt
```
`obj/local/armeabi-v7a` is the extracted path from `deltachat-gplay-release-X.X.X.apk-symbols.zip` file from https://download.delta.chat/android/symbols/
Replace `armeabi-v7a` by the correct architecture the logs come from (can be guessed by trial and error)
+281
View File
@@ -1,5 +1,286 @@
# Delta Chat Android Changelog
## Unreleased
* Better incoming call system integration
* Calls are not experimental anymore and don't need to be manually enabled
## v2.49.0
2026-04
* Fix file sharing to certain apps (e.g. Material Files, etc.)
* Fix problem with calls when microphone permission is not granted
* Fix taking pictures and videos in devices with SD cards
* Fix flipped orientation for some images
* Fix: avoid empty contact request chats when using invite links in a multi-device setup
* Remove proxy toggle from profile editing to avoid confusion
* Updated translations
* Update to core 2.49.0
## v2.48.0
2026-03
* Add a warning when editing relays
* Fix message reordering problems in multi-relay setups
* Some more bug fixes and updated translations
* Update to core 2.48.0
## v2.47.0
2026-03
* Allow to set chat description
* Unified date display in call bubbles
* Explain at "Settings / Chats / Outgoing Media Quality" how to send original quality
* Add a basic sticker picker
* Leave groups and channels before deletion
* Further minimize metadata in messages and while getting in contact.
* Increase resilience of multi-relay usage: if on relay goes down, messages are still received in the others.
* Allow to hide a relay from contacts instead of removing, allowing smoother relay changes
* HTML emails: allow to review and copy links before opening them
* Mark call message as seen when accepting/declining a call
* Fix: keep original sent timestamp for resent messages
* Fix: make clicking on broadcast member-added messages work always
* Fix: remove notification when a message is deleted by sender
* Fix: avoid "reply privately" not quoting the selected message sometimes
* Fix: properly hide the calls button
* Some more bug fixes and updated translations
* Update to core 2.47.0
## v2.43.0
2026-02
* Improve switch speed when changing profiles
* Allow to switch profile when sharing or forwarding
* Display message views count for channel owners
* Don't notify notification-to-all from in-chat apps if the chat is muted
* Allow to see inbox quota for all relays in connectivity screen
* Truncate file names in the middle, not at the end; important information are more often at the end
* Remove email address from user profile
* Mark external links with " ↗" to make them clear
* Make QR code larger on "Add Second Device" screen
* Add indication for blocked contacts in user profile
* Allow to start calls with video disabled
* Show hint for empty contact search results
* Add background playing for voice messages and other audio files
* Allow scanning Invitation Code when creating a new profile
* Add context menu in long-pressing relays items instead of showing buttons
* Enhanced video player UI
* Fix: Show dialog if pasted QR codes are invalid
* Fix: Refresh chat list when returning from conversation if selected profile changed
* Fix: Update menu when using "select all" in contact selection
* Fix: Avoid empty profiles after using "add as second device" from welcome screen
* Fix: Remove from group deselected members in the contact selection list
* Fix multi-device seen messages synchronization when using multiple relays
* Fix mailto handling
* Fix layout problems inside in-chat apps
* Fix real-time for in-chat apps that need it
* Avoid crash when the app is minimized with profile switcher or reactions dialogs open
* Remove "trash icon" option from contact selection list when adding members to group
* Update to core 2.43.0
## v2.35.0
2026-01
* Protect profile deletion and relays management with system lock/pin
* Fix: Remove address from profile switcher
* Fix: Avoid crash if the system doesn't allow to start foreground service
* Remove deprecated "real-time apps" switch
* Update to core 2.35.0
## v2.34.0
2025-12
* Allow to add relay from clipboard or image if camera permission is not granted
* Avoid crash in the "View Log" screen
* Update to core 2.34.0
## v2.33.1
2025-12
* Target Android 16
* Change color of links in text messages
* Improve edge-to-edge support
* Add the option (opt-in) to send anonymous statistics to Delta Chat's developers
* Metadata protection: protect message recipients
* Allow to withdraw channel invite links and QR codes
* Allow to open externally links clicked inside in-chat apps
* Do not show "1 member" when the process of joining the group is not finished
* Make search case-insensitive for non-ASCII chat and contact names
* Improve handling of video recoding
* Send .webm videos as file, they are not supported by all platforms
* Tweak advanced section and wording of some advanced options
* Fix: avoid crash in push notifications handling
* Fix: avoid freezing in background
* Fix: clean up web storage of deleted in-chat apps
* Fix: avoid crash when exporting some files with wrong image MIME type
* Expose new "Multi-device mode" option instead of "Delete from server" for chatmail profiles
* Opened in-chat apps got a 'About Apps' menu item
* Avoid gray avatar on profile creation
* Avoid last item in chat list being covered by the floating button
* Add disk usage statistics to log
* New experimental feature: several addresses per profile
* Update to core 2.33.0
## v2.25.0
2025-11
* Make it possible to invite members into a channel via a QR code,
and make channels more secure
* metadata protection: protect Date header
* metadata protection: protect Autocrypt header
* better multi-device: synchronize group creation across devices
* data saving: do not send Autocrypt header in read receipts
* improve onboarding speed
* allow to save to storage files shared from inside in-chat apps
* reduce app size
* don't show badge counter in app icon for the permanent background notification
* fix sorting of old media in gallery
* fix text direction in "x members" subtitle for RTL languages
* fix group invite QR screen's layout
* tweak text hints in advanced classic e-mail configuration
* remove deprecated "companion app" code
* remove deprecated "Watch Sent Folder" preference
* remove deprecated "send self-report" preference
* don't show email address in shared vcard
* update to core 2.25.0
## v2.22.0
2025-10
* target Android 15
* improve readability of info messages in dark mode
* drop too short disappearing messages options
* fix Direct Share shortcuts
* fix: don't show error message when cancelling profile creation
* enable permanent notification by default if push notifications are not available
* hide "clone chat" and member list for incoming channels
* show warning if background notifications will be unreliable
* warn if the app has not been updated after 6 months instead of 1 year
* avoid "unknown sender for this chat" error
* properly display "Messages are end-to-end encrypted." in all encrypted groups
* show dialog if user has permanently denied camera permission and tries to take picture for group avatar
* several small fixes and improvements
* add experimental built-in calls
* update to core 2.22.0
## v2.11.0
2025-08
* add "After 1 year" option to disappearing messages
* improve image quality when setting group avatars
* add Estonian translation, update other translations
* allow to clone email chats
* fix some small bugs
* update to core 2.11.0
## v2.10.0
2025-08
* fix "Archived" item's layout in chat-list
* don't enlarge "Saved Messages" and "Devices Messages" avatars on click
* share email address for email contacts instead of vCard
* open existing encrypted chat when opening a mailto link or clicking an email address in a message bubble
* update to core 2.10.0
## v2.9.0
2025-07
* hide contact email addresses in search results
* disable non-functional message editing and ephemeral messages timer settings in classic email thread chat
* don't enlarge email chats avatar placeholder
* improve message date/status footer layout, also in RTL languages
* display correct text when receiving a "Disappearing messages enabled" system message
* Update to core 2.9.0
## v2.8.0
2025-07
* Profiles focus on recognizing contacts
* See the number of media directly in the profile, no need to tap around
* Clearer app lists by removing redundant "App" subtitle
* New button for quick access to the apps sent in current chat
* New icon for the in-chat apps button
* Improve hint for app drafts
* Add Text-To-Speech (TTS) support for in-chat apps
* New icon for the QR icon
* Start rebuilding the experimental broadcast lists
into proper channels - note that this is work-in-progress
* Improved separation between unencrypted chats/contacts and encrypted ones, avoiding mixing of encrypted and unencrypted messages in the same chat
* Removed padlocks, as encrypted is the default "normal" state. Instead, unencrypted email is marked with a small email / letter (✉️) icon
* Classic email chats/threads get a big email / letter icon making it easy to recognize
* After some time, add a device message asking to donate. Can't wait? Donate today at https://delta.chat/donate
* Allow to sort profiles up in the profile switcher
* Add new option to create unencrypted email thread
* Green checkmarks are removed where they mostly refer to guaranteed encryption, which is the default now. They are still used for profile's "Introduced by"
* Update to core 2.8.0
## v1.58.4
2025-05
* make in-chat apps properly work when they are not sent yet, in draft mode
* better avatar quality
* some more bug fixes and updated translations
* update to core 1.159.5
## v1.58.3
2025-05
* fix: webxdc.selfName uses the name otherwise displayed
* fix potential crash on startup
* add donation link to app settings
* update to core 1.159.3
## v1.58.2
2025-04
* fix draft writing area disappearing for some chats
* update to core 1.159.2
## v1.58.1
2025-04
* tapping info messages with contacts open the contact's profile
* hide superfluous "Show Classic E-mails" advanced setting for chatmail
* show profile bio/status under name in main settings screen
* remove mostly non-telling transport addresses when referring to a contact;
the contact's profile gives a much better overview
* Disable AEAP to enable us to overhaul some things - there are big changes underway in this area, which will come in a few months
* don't display email address in contact list and member list for contacts with green-checkmark
* avoid crash in Notifications preferences if ringtone title can't be read
* don't display forwarded messages as "edited" if original message was edited
* support importing contact from ProtonMail vCard attachments received in chats
* send encrypted in the experimental broadcast lists feature
* wait for QR scan (or invite link click) process to complete before allowing to send messages
* show connectivity status dot when profile is connecting or not connected
* never send Autocrypt-Gossip in broadcast lists.
* update to core 1.159.1
## v1.56.1
2025-03
* ignore click in info-messages from deleted in-chat apps
* data saving: do not send messages to the server if user is the only member of the chat in single-device usage
* protect metadata: encrypt message's sent date
* do not fail to send messages in groups if some encryption keys are missing
* synchronize contact name changes across devices
* fix changing group names that was not working in some situations
* fix: do not show outdated message text in "Message Info" of an edited message
* some more small bug fixes and updated translations
* update to core 1.158.0
## v1.56.0
2025-03
* allow to edit messages
* allow to delete messages for everyone
* add mute option "8 hours"
* add menu option to easily save/unsave selected message
* improve deletion confirmation for "Device Messages"
* remove dangerous encryption options
* always paste as plain text in message draft area
* some small bug fixes and updated translations
* update to core 1.157.2
## v1.54.4
2025-03
+8 -11
View File
@@ -45,7 +45,7 @@ Some rough ideas, that may be helpful when thinking about how to enhance things:
## Contributing Code
The [README](./README.md) explains in detail how to set up the build environment.
The [BUILDING.md](./BUILDING.md) file explains in detail how to set up the build environment.
Please follow all steps precisely.
If you run into troubles,
ask on one of the [communication channels](https://delta.chat/contribute) for help.
@@ -73,18 +73,15 @@ esp. before/after screenshots.
### Coding Conventions
Source files are partly derived from different other open source projects
and may follow different coding styles and conventions.
If you do a PR fixing a bug or adding a feature,
please embrace the coding convention you see in the corresponding files,
so that the result fits well together.
Do not refactor or rename things in the same PR
to make the diff small and the PR easy to review.
Project language is Java.
Code formatting is enforced via [Spotless](https://github.com/diffplug/spotless) Gradle plugin.
Auto-format all files by running `./gradlew spotlessApply` before opening a PR.
CI will fail if files are not formatted correctly so make sure to run the formatter before pushing.
If you do a PR fixing a bug or adding a feature, do not refactor or rename things in the same PR
to make the diff small and the PR easy to review.
By using [Delta Chat Core](https://github.com/deltachat/deltachat-core-rust)
there is already a strong separation between "UI" and "Model".
Further separations and abstraction layers are often not helpful
+1 -2
View File
@@ -15,7 +15,6 @@ This app has some extended support for WebXDC apps:
- `window.webxdc.arcanechat` a string with the ArcaneChat version and can be used by app developers
to detect when they can use the ArcaneChat-specific features.
- `window.webxdc.isCommunity` true if the current account is a community account
- `sendToChat()`: extra property `subject` can be set to a text string to set message/email's subject.
- `sendToChat()`: extra property `html` can be set to a string of html markup to set the HTML part of the email/message.
- `sendToChat()`: the file object parameter also accepts a `type` field that can be one of:
@@ -31,4 +30,4 @@ This app has some extended support for WebXDC apps:
This app is based on the [official Delta Chat client](https://github.com/deltachat/deltachat-android) with several improvements.
This app uses a [modified](https://github.com/ArcaneChat/core) version of the [Delta Chat Core Library](https://github.com/deltachat/deltachat-core-rust).
This app uses a [modified](https://github.com/ArcaneChat/core) version of the [Chatmail Core Library](https://github.com/chatmail/core).
+20 -23
View File
@@ -3,6 +3,8 @@
## Generate APKs
### Update core and translations
on the command-line, in a PR called "update-core-and-stuff-DATE":
1. update core:
@@ -13,25 +15,31 @@ on the command-line, in a PR called "update-core-and-stuff-DATE":
./scripts/ndk-make.sh
```
2. update translations and local help:
a) Update `CHANGELOG.md`
from <https://github.com/chatmail/core/blob/main/CHANGELOG.md>,
do not just copy and avoid technical terms.
The changelog is for the end user and shall show impacts form that angle.
Add used core version to end of changelog entry
as `update to core 1.2.3` or `using core 1.2.3`
2. update JSON-RPC bindings:
```
./scripts/update-rpc-bindings.sh
```
3. update translations and local help:
```
./scripts/tx-pull-translations.sh
./scripts/create-local-help.sh # requires deltachat-pages checked out at ../deltachat-pages
```
the "update-core-and-stuff-DATE" PR can be merged without review
(as everything was already reviewed in their repos).
### Prepare release
the following steps are done in a PR called `prep-VERSION` (no leading "v"):
3. a) update `CHANGELOG.md`
from <https://github.com/chatmail/core/blob/main/CHANGELOG.md>
and <https://github.com/deltachat/deltachat-android/pulls?q=is%3Apr+is%3Aclosed+sort%3Aupdated-desc>.
do not just copy and avoid technical terms.
the changelog is for the end user and shall show impacts form that angle.
b) update changelog date as `YYYY-MM`
c) add used core version to end of changelog entry
as `update to core 1.2.3` or `using core 1.2.3`
3. Update `CHANGELOG.md`:
Rename header with version number and add date as `YYYY-MM`
in case previous entries of the changelog refer to betas or to not officially released versions,
the entries can be summarized.
@@ -110,17 +118,6 @@ This may take some days.
c) tap "Publish release"
## Release on Amazon Appstore
on <https://developer.amazon.com/dashboard>:
12. a) click "App List", for "Delta Chat", select "Add upcoming version" on the left
b) at "Step 1 / Existing file(s)" hit "Replace", upload the APK from above
c) on the "Step 1" page, add "Release notes" from CHANGELOG.md, hit "Next"
d) on "Step 2" and "Step 3" pages, hit "Next"
e) on "Step 4" page: "Submit app"
## Release on Huawei AppGallery
on <https://developer.huawei.com/consumer/en/appgallery>:
@@ -131,7 +128,7 @@ on <https://developer.huawei.com/consumer/en/appgallery>:
d) Hit "Submit"; on the next page, confirm version and language
## Releases on Apklis, Passkoocheh
## Releases on other stores (ex. Passkoocheh)
These stores are not under our control.
On important updates **ping store maintainers** and ask to update.
+97 -52
View File
@@ -1,6 +1,7 @@
plugins {
id 'com.android.application' version '8.5.2'
id 'com.android.application' version '8.11.1'
id 'com.google.gms.google-services' version '4.4.1'
id 'com.diffplug.spotless' version '8.3.0'
}
repositories {
@@ -21,7 +22,7 @@ android {
}
namespace "org.thoughtcrime.securesms"
flavorDimensions "none"
compileSdk 34
compileSdk 36
// Set NDK version to strip native libraries.
// Even though we compile our libraries outside Gradle with `scripts/ndk-make.sh`,
@@ -33,14 +34,14 @@ android {
useLibrary 'org.apache.http.legacy'
defaultConfig {
versionCode 30000715
versionName "1.54.5"
versionCode 30000742
versionName "2.49.0"
applicationId "chat.delta.lite"
multiDexEnabled true
minSdkVersion 21
targetSdkVersion 34
targetSdkVersion 36
vectorDrawables.useSupportLibrary = true
@@ -72,10 +73,20 @@ android {
packagingOptions {
jniLibs {
doNotStrip '**/*.so'
keepDebugSymbols += ['*/mips/*.so', '*/mips64/*.so']
keepDebugSymbols += [
'*/mips/*.so',
'*/mips64/*.so'
]
}
resources {
excludes += ['LICENSE.txt', 'LICENSE', 'NOTICE', 'asm-license.txt', 'META-INF/LICENSE', 'META-INF/NOTICE']
excludes += [
'LICENSE.txt',
'LICENSE',
'NOTICE',
'asm-license.txt',
'META-INF/LICENSE',
'META-INF/NOTICE'
]
}
}
@@ -130,7 +141,9 @@ android {
buildTypes {
debug {
minifyEnabled false
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
testProguardFiles 'test-proguard-rules.pro'
applicationIdSuffix ".beta"
}
release {
@@ -144,21 +157,22 @@ android {
// nb: it is highly recommended to use the same settings in debug+release -
// otherwise problems might be noticed delayed only
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
testProguardFiles 'test-proguard-rules.pro'
productFlavors.foss.signingConfig signingConfigs.releaseFdroid
productFlavors.gplay.signingConfig signingConfigs.releaseApk
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
if(!project.hasProperty("ABI_FILTER")) {
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
universalApk true
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
universalApk true
}
}
}
}
project.ext.versionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4]
@@ -166,16 +180,16 @@ android {
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
output.outputFileName = output.outputFileName
.replace("android", "ArcaneChat")
.replace("-release", "")
.replace(".apk", "-${variant.versionName}.apk")
.replace("android", "ArcaneChat")
.replace("-release", "")
.replace(".apk", "-${variant.versionName}.apk")
if(project.hasProperty("ABI_FILTER")) {
output.versionCodeOverride =
variant.versionCode * 10 + project.ext.versionCodes.get(ABI_FILTER)
output.versionCodeOverride =
variant.versionCode * 10 + project.ext.versionCodes.get(ABI_FILTER)
} else {
output.versionCodeOverride =
variant.versionCode * 10 + project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 4)
}
output.versionCodeOverride =
variant.versionCode * 10 + project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 4)
}
}
}
@@ -196,7 +210,31 @@ android {
renderScript true
aidl true
}
}
spotless {
java {
target 'src/*/java/**/*.java'
targetExclude 'src/main/java/chat/delta/**' // ignore auto-generated code
googleJavaFormat() // Google style = 2-space indent, matches Android Studio defaults
removeUnusedImports()
trimTrailingWhitespace()
endWithNewline()
}
format 'xml', {
target 'src/*/res/**/*.xml', 'src/*/AndroidManifest.xml'
targetExclude 'src/*/res/values*/strings.xml' // line-break changes invalidate translations
eclipseWtp('xml').configFile('spotless/eclipse-wtp-xml.prefs')
trimTrailingWhitespace()
endWithNewline()
}
groovyGradle {
target '*.gradle'
greclipse()
leadingTabsToSpaces(4)
trimTrailingWhitespace()
endWithNewline()
}
}
final def markwon_version = '4.6.2'
@@ -208,10 +246,18 @@ dependencies {
implementation "io.noties.markwon:inline-parser:$markwon_version"
implementation 'com.airbnb.android:lottie:4.2.2' // Lottie animations support.
def media3_version = "1.8.0" // 1.9.0 need minSdkVersion 23
implementation 'androidx.concurrent:concurrent-futures:1.3.0'
implementation 'androidx.core:core:1.17.0'
implementation 'androidx.core:core-telecom:1.0.1'
implementation 'im.conversations.webrtc:webrtc-android:129.0.0'
// For Kotlin->Java interpolation
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.9.4'
implementation 'androidx.sharetarget:sharetarget:1.2.0'
implementation 'androidx.webkit:webkit:1.12.1'
implementation 'androidx.webkit:webkit:1.14.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation ('androidx.preference:preference:1.2.1') {
@@ -219,7 +265,7 @@ dependencies {
exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel-ktx'
}
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
implementation 'androidx.exifinterface:exifinterface:1.3.7'
implementation 'androidx.exifinterface:exifinterface:1.4.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.6.2'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
@@ -227,58 +273,57 @@ dependencies {
implementation 'androidx.work:work-runtime:2.9.1'
implementation 'androidx.emoji2:emoji2-emojipicker:1.5.0'
implementation 'com.google.guava:guava:31.1-android'
implementation 'com.google.android.exoplayer:exoplayer-core:2.19.1' // plays video and audio
implementation 'com.google.android.exoplayer:exoplayer-core:2.19.1' // FIXME: exoplayer dependencies kept for Video, but we shall migrate them at some point
implementation 'com.google.android.exoplayer:exoplayer-ui:2.19.1'
implementation "androidx.media3:media3-exoplayer:$media3_version"
implementation "androidx.media3:media3-session:$media3_version"
implementation "androidx.media3:media3-ui:$media3_version"
implementation 'androidx.constraintlayout:constraintlayout:2.2.0'
implementation 'com.google.zxing:core:3.3.0' // fixed version to support SDK<24
implementation ('com.journeyapps:zxing-android-embedded:4.3.0') { transitive = false } // QR Code scanner
implementation 'com.fasterxml.jackson.core:jackson-databind:2.11.1' // used as JSON library
implementation 'com.google.code.gson:gson:2.12.1' // used as JSON library.
implementation "me.leolin:ShortcutBadger:1.1.16" // display messagecount on the home screen icon.
implementation 'com.jpardogo.materialtabstrip:library:1.0.9' // used in the emoji selector for the tab selection.
implementation 'com.github.chrisbanes:PhotoView:2.1.3' // does the zooming on photos / media
implementation 'com.github.penfeizhou.android.animation:awebp:3.0.2' // animated webp support.
implementation 'com.github.Baseflow:PhotoView:2.3.0' // does the zooming on photos / media
implementation 'com.caverock:androidsvg-aar:1.4' // SVG support.
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
implementation 'com.github.bumptech.glide:glide:4.16.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.16.0'
annotationProcessor 'androidx.annotation:annotation:1.9.1'
implementation 'com.makeramen:roundedimageview:2.1.0' // crops the avatars to circles
implementation 'com.pnikosis:materialish-progress:1.5' // used only in the "Progress Wheel" in Share Activity.
implementation 'com.makeramen:roundedimageview:2.3.0' // crops the avatars to circles
implementation 'com.github.amulyakhare:TextDrawable:558677ea31' // number of unread messages,
// the one-letter circle for the contacts (when there is not avatar) and a white background.
implementation 'com.googlecode.mp4parser:isoparser:1.0.6' // MP4 recoding; upgrading eg. to 1.1.22 breaks recoding, however, i have not investigated further, just reset to 1.0.6
implementation ('com.davemorrissey.labs:subsampling-scale-image-view:3.6.0') { // for the zooming on photos / media
implementation ('com.davemorrissey.labs:subsampling-scale-image-view:3.10.0') {
// for the zooming on photos / media
exclude group: 'com.android.support', module: 'support-annotations'
}
implementation 'com.annimon:stream:1.1.8' // brings future java streams api to SDK Version < 24
// Replacement for ContentResolver
// that protects against the Surreptitious Sharing attack.
// <https://github.com/cketti/SafeContentResolver>
implementation 'de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0'
gplayImplementation('com.google.firebase:firebase-messaging:24.1.0') { // for PUSH notifications
gplayImplementation('com.google.firebase:firebase-messaging:24.1.2') {
// for PUSH notifications, don't upgrade: v25.0.0 requires minSdk>=23
exclude group: 'com.google.firebase', module: 'firebase-core'
exclude group: 'com.google.firebase', module: 'firebase-analytics'
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
}
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.assertj:assertj-core:1.7.1'
testImplementation 'org.mockito:mockito-core:1.9.5'
testImplementation 'org.powermock:powermock-api-mockito:1.6.1'
testImplementation 'org.powermock:powermock-module-junit4:1.6.1'
testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.1'
testImplementation 'org.powermock:powermock-classloading-xstream:1.6.1'
testImplementation 'org.assertj:assertj-core:3.27.3'
testImplementation 'org.mockito:mockito-core:5.18.0'
testImplementation 'org.powermock:powermock-api-mockito:1.7.4'
testImplementation 'org.powermock:powermock-module-junit4:2.0.9'
testImplementation 'org.powermock:powermock-module-junit4-rule:2.0.9'
testImplementation 'org.powermock:powermock-classloading-xstream:2.0.9'
androidTestImplementation 'androidx.test:runner:1.6.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.6.1'
androidTestImplementation 'androidx.test:rules:1.6.1'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
androidTestImplementation 'androidx.test:runner:1.7.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.7.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.7.0'
androidTestImplementation 'androidx.test:rules:1.7.0'
androidTestImplementation 'androidx.test.ext:junit:1.3.0'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation ('org.assertj:assertj-core:1.7.1') {
androidTestImplementation ('org.assertj:assertj-core:3.27.3') {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
}
@@ -1,12 +1,14 @@
ArcaneChat is a decentralized and secure instant messenger that is easy to use for friends and family.
Anonymous. Instant onboarding without a phone number, e-mail or other private data.
Private. Instant on-boarding without a phone number or other private data.
• Friends & Family: Only chat with people you know. Unknown users cannot message or follow you without mutual consent.
• Flexible. Supports multiple chat profiles and is easy to setup on multiple devices.
• Extensible. Use mini-apps in chats like shopping lists, calendars or games.
• Reliable. Works under bad and adverserial network conditions.
• Reliable. Works under bad and adversarial network conditions.
• Secure. Audited End-to-End encryption safe against network and server attacks.
@@ -23,17 +25,14 @@ ArcaneChat is a Delta Chat client and was created with a focus on usability, goo
<li>Multiple color themes/skins</li>
<li>It is possible to disable profiles to completely disconnect them saving data/bandwidth</li>
<li>You can easily see the connection status of all your profiles in the profile switcher</li>
<li>A videochat instance is set by default</li>
<li>Extra option to share location for 12 hours</li>
<li>Clicking on a message with a POI location, will open the POI on the map</li>
<li>Last-seen status of contacts is shown in your contact list, like in WhatsApp, Telegram, etc.</li>
<li>Videos are played in loop, useful for short GIF videos</li>
<li>Verified icon is shown in the chat list for the "Device Messages" chat</li>
<li>Verified icon is shown in the chat list for the "Device Messages" and "Saved Messages" chat to avoid fishing attempts by scammer pretending to be the official chats</li>
<li>Voice messages have more aggressive compression in "worse quality" mode to save data plan</li>
<li>Automatic download of messages limited to 640KB by default</li>
<li>Profile's display name is always shown in the app's title bar instead of the name of the app</li>
<li>Your avatar is visible to other users in Mailing Lists</li>
<li>Can be selected as app to open .xdc files</li>
<li>For mini-apps developers: there are some extra features in the WebXDC API, check https://github.com/ArcaneChat/android/#webxdc</li>
<li>Better settings organization with additional "Privacy" section</li>
</ul>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

After

Width:  |  Height:  |  Size: 283 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 KiB

After

Width:  |  Height:  |  Size: 446 KiB

@@ -0,0 +1,36 @@
ArcaneChat — децентрализованный и защищённый мессенджер, удобный для друзей и семьи.
• Анонимность. Мгновенный вход без номера телефона, e-mail или других личных данных.
• Гибкость. Поддерживает несколько профилей чатов и легко настраивается на нескольких устройствах.
• Расширяемость. В чатах можно использовать мини-приложения: списки покупок, календари или игры.
• Надёжность. Работает даже при плохом соединении и в сложных сетевых условиях.
• Безопасность. Проверенное сквозное шифрование, защищённое от сетевых и серверных атак.
• Самостоятельность. Может работать с вашим собственным e-mail-адресом или сервером.
ArcaneChat — клиент Delta Chat, разработанный с акцентом на удобство, качественный UX и экономию трафика. Также приложение часто экспериментирует с новыми функциями, которые со временем могут быть добавлены в официальный клиент Delta Chat.
<b>Основные отличия от официального клиента Delta Chat:</b>
<ul>
<li>Поддержка некоторых стилей markdown в текстовых сообщениях (жирный, курсив, зачёркнутый и т.д.)</li>
<li>Поддержка отображения анимированных стикеров Telegram (.tgs-файлы)</li>
<li>Поддержка предпросмотра SVG-изображений</li>
<li>Несколько цветовых тем/скинов</li>
<li>Возможность отключать профили, полностью отключая им доступ в сеть для экономии трафика</li>
<li>На панели переключения профилей видно состояние подключения каждого профиля</li>
<li>Дополнительная опция для обмена местоположением на 12 часов</li>
<li>Нажатие на сообщение с POI открывает его на карте</li>
<li>Статус «был(а) в сети» отображается в списке контактов, как в WhatsApp, Telegram и т.д.</li>
<li>Видео воспроизводятся по кругу — удобно для коротких GIF-видео</li>
<li>У чата «Device Messages» в списке чатов отображается значок подтверждения</li>
<li>В режиме «низкое качество» голосовые сообщения сжимаются сильнее для экономии трафика</li>
<li>Автоматическая загрузка сообщений по умолчанию ограничена 640KB</li>
<li>Отображаемое имя профиля всегда видно в заголовке приложения вместо названия приложения</li>
<li>Для разработчиков мини-приложений: доступны дополнительные возможности WebXDC API, см. https://github.com/ArcaneChat/android/#webxdc</li>
<li>Более удобная организация настроек с дополнительным разделом «Privacy»</li>
</ul>
@@ -0,0 +1 @@
⚡ Быстрые зашифрованные чаты для семьи 🎉
@@ -0,0 +1 @@
ArcaneChat
Generated
+18 -18
View File
@@ -7,11 +7,11 @@
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1733948466,
"narHash": "sha256-o/uq/tU458Ykudi8Zk3sRga5iazkuSczt9wDOCUDOSU=",
"lastModified": 1775939535,
"narHash": "sha256-Zq1U7Vhw5ctvhJQy+3ShqIv7Mplf3XkgJY+QJnhfUGQ=",
"owner": "tadfisher",
"repo": "android-nixpkgs",
"rev": "0bf99ffaea6a7c0948ae10cf2e40c2905e4e4d6b",
"rev": "d2e16192309bf3101e4998ffa62e914819dee077",
"type": "github"
},
"original": {
@@ -28,11 +28,11 @@
]
},
"locked": {
"lastModified": 1728330715,
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
"lastModified": 1768818222,
"narHash": "sha256-460jc0+CZfyaO8+w8JNtlClB2n4ui1RbHfPTLkpwhU8=",
"owner": "numtide",
"repo": "devshell",
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
"rev": "255a2b1725a20d060f566e4755dbf571bbbb5f76",
"type": "github"
},
"original": {
@@ -79,11 +79,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1733759999,
"narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=",
"lastModified": 1775710090,
"narHash": "sha256-ar3rofg+awPB8QXDaFJhJ2jJhu+KqN/PRCXeyuXR76E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56",
"rev": "4c1018dae018162ec878d42fec712642d214fdfa",
"type": "github"
},
"original": {
@@ -95,11 +95,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1733749988,
"narHash": "sha256-+5qdtgXceqhK5ZR1YbP1fAUsweBIrhL38726oIEAtDs=",
"lastModified": 1775823930,
"narHash": "sha256-ALT447J7FcxP/97J01A/gp/hgdO5lXRsm+zLMt+gIjc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bc27f0fde01ce4e1bfec1ab122d72b7380278e68",
"rev": "8c11f88bb9573a10a7d6bf87161ef08455ac70b9",
"type": "github"
},
"original": {
@@ -111,11 +111,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1728538411,
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
@@ -138,11 +138,11 @@
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1733970833,
"narHash": "sha256-sPEKtSaZk2CtfF9cdhtbY93S6qGq+d2PKI1fcoDfDaI=",
"lastModified": 1775877051,
"narHash": "sha256-wpSQm2PD/w4uRo2wb8utk0b5hOBkkg/CZ1xICY+qB7M=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "f7f4c59ccdf1bec3f1547d27398e9589aa94e3e8",
"rev": "08b4f3633471874c8894632ade1b78d75dbda002",
"type": "github"
},
"original": {
+10 -6
View File
@@ -15,19 +15,23 @@
pkgs = import nixpkgs { inherit system overlays; };
android-sdk = android.sdk.${system} (sdkPkgs:
with sdkPkgs; [
build-tools-34-0-0
build-tools-35-0-0
cmdline-tools-latest
platform-tools
platforms-android-34
ndk-27-0-11902837
platforms-android-36
ndk-27-2-12479018
]);
rust-version = pkgs.lib.removeSuffix "\n"
(builtins.readFile ./scripts/rust-toolchain);
in {
devShells.default = pkgs.mkShell {
in
{
formatter = pkgs.nixpkgs-fmt;
devShells.default = pkgs.mkShell rec {
ANDROID_SDK_ROOT = "${android-sdk}/share/android-sdk";
ANDROID_NDK_ROOT =
"${android-sdk}/share/android-sdk/ndk/27.0.11902837";
"${android-sdk}/share/android-sdk/ndk/27.2.12479018";
GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${ANDROID_SDK_ROOT}/build-tools/35.0.0/aapt2";
buildInputs = [
android-sdk
pkgs.openjdk17
+2 -2
View File
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionSha256Sum=20f1b1176237254a6fc204d8434196fa11a4cfb387567519c61556e8710aed78
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
+65 -86
View File
@@ -153,6 +153,42 @@ static uint32_t* jintArray2uint32Pointer(JNIEnv* env, jintArray ja, int* ret_icn
}
/************************************************************
* DcEventChannel
************************************************************/
static dc_event_channel_t* get_dc_event_channel(JNIEnv *env, jobject obj)
{
static jfieldID fid = 0;
if (fid==0) {
jclass cls = (*env)->GetObjectClass(env, obj);
fid = (*env)->GetFieldID(env, cls, "eventChannelCPtr", "J" /*Signature, J=long*/);
}
if (fid) {
return (dc_event_channel_t*)(*env)->GetLongField(env, obj, fid);
}
return NULL;
}
JNIEXPORT jlong Java_com_b44t_messenger_DcEventChannel_createEventChannelCPtr(JNIEnv *env, jobject obj)
{
return (jlong)dc_event_channel_new();
}
JNIEXPORT void Java_com_b44t_messenger_DcEventChannel_unrefEventChannelCPtr(JNIEnv *env, jobject obj)
{
dc_event_channel_unref(get_dc_event_channel(env, obj));
}
JNIEXPORT jlong Java_com_b44t_messenger_DcEventChannel_getEventEmitterCPtr(JNIEnv *env, jobject obj)
{
return (jlong)dc_event_channel_get_event_emitter(get_dc_event_channel(env, obj));
}
/*******************************************************************************
* DcAccounts
******************************************************************************/
@@ -172,11 +208,11 @@ static dc_accounts_t* get_dc_accounts(JNIEnv *env, jobject obj)
}
JNIEXPORT jlong Java_com_b44t_messenger_DcAccounts_createAccountsCPtr(JNIEnv *env, jobject obj, jstring dir)
JNIEXPORT jlong Java_com_b44t_messenger_DcAccounts_createAccountsCPtr(JNIEnv *env, jobject obj, jstring dir, jobject chanObj)
{
CHAR_REF(dir);
int writable = 1;
jlong accountsCPtr = (jlong)dc_accounts_new(dirPtr, writable);
jlong accountsCPtr = (jlong)dc_accounts_new_with_event_channel(dirPtr, writable, get_dc_event_channel(env, chanObj));
CHAR_UNREF(dir);
return accountsCPtr;
}
@@ -231,6 +267,12 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcAccounts_backgroundFetch(JNIEnv *en
}
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_stopBackgroundFetch(JNIEnv *env, jobject obj)
{
dc_accounts_stop_background_fetch(get_dc_accounts(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcAccounts_migrateAccount(JNIEnv *env, jobject obj, jstring dbfile)
{
CHAR_REF(dbfile);
@@ -536,10 +578,10 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_createChatByContactId(JNIEnv *e
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createGroupChat(JNIEnv *env, jobject obj, jboolean verified, jstring name)
JNIEXPORT jint Java_com_b44t_messenger_DcContext_createGroupChat(JNIEnv *env, jobject obj, jstring name)
{
CHAR_REF(name);
jint ret = (jint)dc_create_group_chat(get_dc_context(env, obj), verified, namePtr);
jint ret = (jint)dc_create_group_chat(get_dc_context(env, obj), 0, namePtr);
CHAR_UNREF(name);
return ret;
}
@@ -735,12 +777,6 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendTextMsg(JNIEnv *env, jobjec
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendVideochatInvitation(JNIEnv *env, jobject obj, jint chat_id)
{
return (jint)dc_send_videochat_invitation(get_dc_context(env, obj), chat_id);
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_sendWebxdcStatusUpdate(JNIEnv *env, jobject obj, jint msg_id, jstring payload)
{
CHAR_REF(payload);
@@ -910,27 +946,6 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getContactEncrInfo(JNIEnv *e
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_initiateKeyTransfer(JNIEnv *env, jobject obj)
{
jstring setup_code = NULL;
char* temp = dc_initiate_key_transfer(get_dc_context(env, obj));
if (temp) {
setup_code = JSTRING_NEW(temp);
dc_str_unref(temp);
}
return setup_code;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_continueKeyTransfer(JNIEnv *env, jobject obj, jint msg_id, jstring setupCode)
{
CHAR_REF(setupCode);
jboolean ret = dc_continue_key_transfer(get_dc_context(env, obj), msg_id, setupCodePtr);
CHAR_UNREF(setupCode);
return ret;
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_imex(JNIEnv *env, jobject obj, jint what, jstring dir)
{
CHAR_REF(dir);
@@ -1246,6 +1261,12 @@ JNIEXPORT jint Java_com_b44t_messenger_DcChat_getColor(JNIEnv *env, jobject obj)
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_isEncrypted(JNIEnv *env, jobject obj)
{
return dc_chat_is_encrypted(get_dc_chat(env, obj))!=0;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_isUnpromoted(JNIEnv *env, jobject obj)
{
return dc_chat_is_unpromoted(get_dc_chat(env, obj))!=0;
@@ -1270,16 +1291,6 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_canSend(JNIEnv *env, jobject o
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_isProtected(JNIEnv *env, jobject obj)
{
return dc_chat_is_protected(get_dc_chat(env, obj))!=0;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_isProtectionBroken(JNIEnv *env, jobject obj)
{
return dc_chat_is_protection_broken(get_dc_chat(env, obj))!=0;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_isSendingLocations(JNIEnv *env, jobject obj)
{
@@ -1382,11 +1393,6 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getId(JNIEnv *env, jobject obj)
return dc_msg_get_id(get_dc_msg(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getSenderColor(JNIEnv *env, jobject obj)
{
return dc_msg_get_sender_color(get_dc_msg(env, obj));
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getText(JNIEnv *env, jobject obj)
{
char* temp = dc_msg_get_text(get_dc_msg(env, obj));
@@ -1441,6 +1447,12 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getInfoType(JNIEnv *env, jobject ob
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getInfoContactId(JNIEnv *env, jobject obj)
{
return dc_msg_get_info_contact_id(get_dc_msg(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getState(JNIEnv *env, jobject obj)
{
return dc_msg_get_state(get_dc_msg(env, obj));
@@ -1600,42 +1612,12 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isInfo(JNIEnv *env, jobject obj
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isSetupMessage(JNIEnv *env, jobject obj)
{
return dc_msg_is_setupmessage(get_dc_msg(env, obj));
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_hasHtml(JNIEnv *env, jobject obj)
{
return dc_msg_has_html(get_dc_msg(env, obj))!=0;
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getSetupCodeBegin(JNIEnv *env, jobject obj)
{
char* temp = dc_msg_get_setupcodebegin(get_dc_msg(env, obj));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getVideochatUrl(JNIEnv *env, jobject obj)
{
char* temp = dc_msg_get_videochat_url(get_dc_msg(env, obj));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getVideochatType(JNIEnv *env, jobject obj)
{
return (jint)dc_msg_get_videochat_type(get_dc_msg(env, obj));
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setSubject(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
@@ -1823,15 +1805,6 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContact_getAddr(JNIEnv *env, jobject
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContact_getNameNAddr(JNIEnv *env, jobject obj)
{
char* temp = dc_contact_get_name_n_addr(get_dc_contact(env, obj));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContact_getProfileImage(JNIEnv *env, jobject obj)
{
char* temp = dc_contact_get_profile_image(get_dc_contact(env, obj));
@@ -1879,6 +1852,12 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcContact_isVerified(JNIEnv *env, job
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContact_isKeyContact(JNIEnv *env, jobject obj)
{
return dc_contact_is_key_contact(get_dc_contact(env, obj))==1;
}
JNIEXPORT jint Java_com_b44t_messenger_DcContact_getVerifierId(JNIEnv *env, jobject obj)
{
return dc_contact_get_verifier_id(get_dc_contact(env, obj));
@@ -1993,7 +1972,7 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcBackupProvider_getQr(JNIEnv *env, jo
JNIEXPORT jstring Java_com_b44t_messenger_DcBackupProvider_getQrSvg(JNIEnv *env, jobject obj)
{
char* temp = dc_backup_provider_get_qr_svg(get_dc_backup_provider(env, obj));
char* temp = dc_create_qr_svg(dc_backup_provider_get_qr(get_dc_backup_provider(env, obj)));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
+83
View File
@@ -0,0 +1,83 @@
.PHONY: apk
apk:
./scripts/rebrand.sh
./gradlew --offline assembleGplayRelease
./scripts/undo_rebrand.sh
.PHONY: aab
aab:
./scripts/rebrand.sh
sed -i 's/signingConfigs.releaseApk/signingConfigs.releaseBundle/g' build.gradle
./gradlew --offline bundleGplayRelease
sed -i 's/signingConfigs.releaseBundle/signingConfigs.releaseApk/g' build.gradle
./scripts/undo_rebrand.sh
.PHONY: foss
foss:
./scripts/rebrand.sh
./gradlew --offline assembleFossRelease
./scripts/undo_rebrand.sh
.PHONY: install
install:
adb -d install -r build/outputs/apk/gplay/release/*universal*.apk
.PHONY: emulator-install
emulator-install:
adb install -r build/outputs/apk/gplay/release/*universal*.apk
.PHONY: fetch
fetch:
git fetch upstream
.PHONY: clean
clean:
./gradlew --offline clean
# CORE:
.PHONY: fetch-core
fetch-core:
cd ../core && git fetch upstream
.PHONY: core
core:
rmdir jni/deltachat-core-rust; mv ../core jni/deltachat-core-rust; true
./scripts/ndk-make.sh; true
./scripts/undo_rebrand.sh
mv jni/deltachat-core-rust ../core
mkdir jni/deltachat-core-rust
.PHONY: core-fast
core-fast:
rmdir jni/deltachat-core-rust; mv ../core jni/deltachat-core-rust; true
./scripts/ndk-make.sh arm64-v8a; true
./scripts/undo_rebrand.sh
mv jni/deltachat-core-rust ../core
mkdir jni/deltachat-core-rust
.PHONY: core-v7
core-v7:
rmdir jni/deltachat-core-rust; mv ../core jni/deltachat-core-rust; true
./scripts/ndk-make.sh armeabi-v7a; true
./scripts/undo_rebrand.sh
mv jni/deltachat-core-rust ../core
mkdir jni/deltachat-core-rust
.PHONY: core-x86
core-x86:
rmdir jni/deltachat-core-rust; mv ../core jni/deltachat-core-rust; true
./scripts/ndk-make.sh x86; true
./scripts/undo_rebrand.sh
mv jni/deltachat-core-rust ../core
mkdir jni/deltachat-core-rust
.PHONY: link
link:
rmdir jni/deltachat-core-rust; mv ../core jni/deltachat-core-rust; true
.PHONY: unlink
unlink:
mv jni/deltachat-core-rust ../core
mkdir jni/deltachat-core-rust
-1
View File
@@ -1 +0,0 @@
Schreibe Nachrichten mit E-Mails. Retro, Offen. Privatsphäre im Design.
-12
View File
@@ -1,12 +0,0 @@
Delta Chat é um aplicativo de mensagens que é completamente compatível com a infraestrutura de email já existente.
Assim, com o Delta Chat você tem a facilidade de muitos aplicativos de mensagens com o alcance de email. Além disso, você é independente de outras companhias e sercviços -- já que suas informações e dados não estão relacionadas com o Delta Chat, você não vai nem adicionar novas permissões aqui.
Resumo de alguns recursos:
* Seguro com criptografia de ponta a ponta, com suporte ao novo padrão <a href="https://autocrypt.org">Autocrypt</a>
* Rápido usando Push-IMAP
* Maior base de usuários -- destinatários que não estiverem usando Delta Chat podem ser alcançados também
* Compatívle -- não apenas consigo mesmo
* Interface de usuário elegante e simples
* Sistema distribuído
* Sem spam -- apenas mensages de usuários conhecidos são mostradas por padrão
* Confiável -- pode até ser usado para mensagens comerciais
* Completamente OpenSource e baseado em padrões
+9 -9
View File
@@ -1,15 +1,10 @@
# native methods
-keep class com.b44t.messenger.** { * ; }
# Gson uses generic type information stored in a class file when working with
# fields. Proguard removes such information by default, keep it.
-keepattributes Signature
# This is also needed for R8 in compat mode since multiple
# optimizations will remove the generic signature such as class
# merging and argument removal. See:
# https://r8.googlesource.com/r8/+/refs/heads/main/compatibility-faq.md#troubleshooting-gson-gson
-keep class com.google.gson.reflect.TypeToken { *; }
-keep class * extends com.google.gson.reflect.TypeToken
# Keep metadata needed by the JSON parser
-keep class chat.delta.rpc.** { * ; }
-keepattributes *Annotation*,EnclosingMethod,Signature
-keepnames class com.fasterxml.jackson.** { *; }
# bug with video recoder
-keep class com.coremedia.iso.** { *; }
@@ -18,3 +13,8 @@
-keep class org.thoughtcrime.securesms.crypto.KeyStoreHelper* { *; }
-dontwarn com.google.firebase.analytics.connector.AnalyticsConnector
# Keep WebRTC classes
-keep class org.webrtc.** { *; }
-keepclassmembers class org.webrtc.** { *; }
-keepattributes InnerClasses
+1
View File
@@ -1 +1,2 @@
rm src/main/assets/help/*.png
../deltachat-pages/tools/create-local-help.py ../deltachat-pages/result src/main/assets/help
+2 -2
View File
@@ -11,13 +11,13 @@ echo "==================== ANDROID USAGE ===================="
grep --exclude={*.apk,*.a,*.o,*.so,strings.xml,*symbols.zip} --exclude-dir={.git,.gradle,obj,release,.idea,build,deltachat-core-rust} -ri $TEXT .
echo "==================== IOS USAGE ===================="
grep --exclude=*.strings --exclude-dir={.git,libraries,Pods,deltachat-ios.xcodeproj,deltachat-ios.xcworkspace} -ri $TEXT ../deltachat-ios/
grep --exclude=*.strings* --exclude-dir={.git,libraries,Pods,deltachat-ios.xcodeproj,deltachat-ios.xcworkspace} -ri $TEXT ../deltachat-ios/
echo "==================== DESKTOP USAGE ===================="
grep --exclude-dir={.cache,.git,html-dist,node_modules,_locales} -ri $TEXT ../deltachat-desktop/
echo "==================== JSONRPC USAGE ===================="
grep --exclude-dir={.git} -ri $TEXT ../deltachat-core-rust/deltachat-jsonrpc
grep --exclude-dir={.git} -ri $TEXT ../chatmail/core/deltachat-jsonrpc
echo "==================== UBUNTU TOUCH USAGE ===================="
grep --exclude-dir={.git} -ri $TEXT ../deltatouch/
+15 -12
View File
@@ -53,7 +53,6 @@ fi
# for reproducible build:
export RUSTFLAGS="-C link-args=-Wl,--build-id=none --remap-path-prefix=$HOME/.cargo= --remap-path-prefix=$(realpath $(dirname $(dirname "$0")))="
export SOURCE_DATE_EPOCH=1
export CARGO_TARGET_DIR=/tmp/arcanechat-build
# always use the same path to NDK:
rm -f /tmp/android-ndk-root
ln -s "$ANDROID_NDK_ROOT" /tmp/android-ndk-root
@@ -74,6 +73,10 @@ if test -z "$NDK_HOST_TAG"; then
NDK_HOST_TAG="$KERNEL-$ARCH"
fi
if test -z "$CARGO_TARGET_DIR"; then
export CARGO_TARGET_DIR=/tmp/arcanechat-build
fi
TOOLCHAIN="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$NDK_HOST_TAG"
export CARGO_TARGET_ARMV7_LINUX_ANDROIDEABI_LINKER="$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang"
export CARGO_TARGET_AARCH64_LINUX_ANDROID_LINKER="$TOOLCHAIN/bin/aarch64-linux-android21-clang"
@@ -127,7 +130,7 @@ if test -z $1 || test $1 = armeabi-v7a; then
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi
cp $CARGO_TARGET_DIR/armv7-linux-androideabi/$RELEASE/libdeltachat.a $jnidir/armeabi-v7a
cp "$CARGO_TARGET_DIR/armv7-linux-androideabi/$RELEASE/libdeltachat.a" "$jnidir/armeabi-v7a"
fi
if test -z $1 || test $1 = arm64-v8a; then
@@ -136,7 +139,7 @@ if test -z $1 || test $1 = arm64-v8a; then
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi
cp $CARGO_TARGET_DIR/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a
cp "$CARGO_TARGET_DIR/aarch64-linux-android/$RELEASE/libdeltachat.a" "$jnidir/arm64-v8a"
fi
if test -z $1 || test $1 = x86; then
@@ -145,17 +148,17 @@ if test -z $1 || test $1 = x86; then
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi
cp $CARGO_TARGET_DIR/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86
cp "$CARGO_TARGET_DIR/i686-linux-android/$RELEASE/libdeltachat.a" "$jnidir/x86"
fi
if test -z $1 || test $1 = x86_64; then
echo "-- cross compiling to x86_64-linux-android (x86_64) --"
TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi
cp $CARGO_TARGET_DIR/x86_64-linux-android/$RELEASE/libdeltachat.a $jnidir/x86_64
fi
if test -z $1 || test $1 = x86_64; then
echo "-- cross compiling to x86_64-linux-android (x86_64) --"
TARGET_CC="$TOOLCHAIN/bin/x86_64-linux-android21-clang" \
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target x86_64-linux-android -p deltachat_ffi
cp "$CARGO_TARGET_DIR/x86_64-linux-android/$RELEASE/libdeltachat.a" "$jnidir/x86_64"
fi
echo -- ndk-build --
+3 -1
View File
@@ -1,7 +1,9 @@
#!/bin/sh
# replace Delta Chat with ArcaneChat
find ./src/main/assets/help/ -type f -name '*.html' | xargs sed -i 's/get.delta.chat/github.com\/ArcaneChat/g'
find ./src/main/assets/help/ -type f -name '*.html' | xargs sed -i 's/Delta Chat/ArcaneChat/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/get.delta.chat/github.com\/ArcaneChat/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/delta.chat\/donate/arcanechat.me\/#contribute/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/Delta Chat/ArcaneChat/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/❤️/💜/g'
+1 -1
View File
@@ -1 +1 @@
1.83.0
1.91.1
+5
View File
@@ -2,6 +2,11 @@
find ./src/main/assets/help/ -type f -name '*.html' | xargs sed -i 's/github.com\/ArcaneChat/get.delta.chat/g'
find ./src/main/assets/help/ -type f -name '*.html' | xargs sed -i 's/ArcaneChat/Delta Chat/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/github.com\/ArcaneChat/get.delta.chat/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/arcanechat.me\/#contribute/delta.chat\/donate/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/ArcaneChat/Delta Chat/g'
find ./src/ -type f -name 'strings.xml' | xargs sed -i 's/💜/❤️/g'
# don't revert the app name
sed -i 's/>Delta Chat</>ArcaneChat</g' ./src/main/res/values/strings.xml
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
# you need to have dcrpcgen
# generate schema.json
ROOT_DIR=$PWD
cd ./jni/deltachat-core-rust/deltachat-rpc-server
cargo run -- --openrpc > "$ROOT_DIR/schema.json"
cd "$ROOT_DIR"
# generate code
dcrpcgen java --schema schema.json -o ./src/main/java/
rm schema.json
+1
View File
@@ -1,5 +1,6 @@
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
+7
View File
@@ -0,0 +1,7 @@
eclipse.preferences.version=1
lineWidth=100
splitMultiAttrs=true
indentMultipleAttributes=true
indentationChar=space
indentationSize=4
spaceBeforeEmptyCloseTag=true
@@ -11,7 +11,6 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.test.espresso.NoMatchingViewException;
import androidx.test.espresso.UiController;
@@ -19,7 +18,6 @@ import androidx.test.espresso.ViewAction;
import androidx.test.espresso.ViewInteraction;
import androidx.test.espresso.util.TreeIterables;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import org.hamcrest.Matcher;
import org.thoughtcrime.securesms.ConversationListActivity;
import org.thoughtcrime.securesms.R;
@@ -60,10 +58,12 @@ public class TestUtils {
}
@NonNull
public static ActivityScenarioRule<ConversationListActivity> getOfflineActivityRule(boolean useExistingChats) {
public static ActivityScenarioRule<ConversationListActivity> getOfflineActivityRule(
boolean useExistingChats) {
Intent intent =
Intent.makeMainActivity(
new ComponentName(getInstrumentation().getTargetContext(), ConversationListActivity.class));
Intent.makeMainActivity(
new ComponentName(
getInstrumentation().getTargetContext(), ConversationListActivity.class));
if (!useExistingChats) {
createOfflineAccount();
}
@@ -72,18 +72,22 @@ public class TestUtils {
}
@NonNull
public static <T extends Activity> ActivityScenarioRule<T> getOnlineActivityRule(Class<T> activityClass) {
public static <T extends Activity> ActivityScenarioRule<T> getOnlineActivityRule(
Class<T> activityClass) {
Context context = getInstrumentation().getTargetContext();
AccountManager.getInstance().beginAccountCreation(context);
prepare();
return new ActivityScenarioRule<>(new Intent(getInstrumentation().getTargetContext(), activityClass));
return new ActivityScenarioRule<>(
new Intent(getInstrumentation().getTargetContext(), activityClass));
}
private static void prepare() {
Prefs.setBooleanPreference(getInstrumentation().getTargetContext(), Prefs.DOZE_ASKED_DIRECTLY, true);
Prefs.setBooleanPreference(
getInstrumentation().getTargetContext(), Prefs.DOZE_ASKED_DIRECTLY, true);
if (!AccessibilityUtil.areAnimationsDisabled(getInstrumentation().getTargetContext())) {
throw new RuntimeException("To run the tests, disable animations at Developer options' " +
"-> 'Window/Transition/Animator animation scale' -> Set all 3 to 'off'");
throw new RuntimeException(
"To run the tests, disable animations at Developer options' "
+ "-> 'Window/Transition/Animator animation scale' -> Set all 3 to 'off'");
}
}
@@ -116,26 +120,22 @@ public class TestUtils {
}
throw new NoMatchingViewException.Builder()
.withRootView(view)
.withViewMatcher(matcher)
.build();
.withRootView(view)
.withViewMatcher(matcher)
.build();
}
};
}
/**
* Perform action of implicitly waiting for a certain view.
* This differs from EspressoExtensions.searchFor in that,
* upon failure to locate an element, it will fetch a new root view
* in which to traverse searching for our @param match
* Perform action of implicitly waiting for a certain view. This differs from
* EspressoExtensions.searchFor in that, upon failure to locate an element, it will fetch a new
* root view in which to traverse searching for our @param match
*
* @param viewMatcher ViewMatcher used to find our view
*/
public static ViewInteraction waitForView(
Matcher<View> viewMatcher,
int waitMillis,
int waitMillisPerTry
) {
Matcher<View> viewMatcher, int waitMillis, int waitMillisPerTry) {
// Derive the max tries
int maxTries = (int) (waitMillis / waitMillisPerTry);
@@ -164,12 +164,11 @@ public class TestUtils {
}
/**
* Normally, you would do
* onView(withId(R.id.send_button)).perform(click());
* to send the draft message. However, in order to change the send button to the attach button
* while there is no draft, the send button is made invisible and the attach button is made
* visible instead. This confuses the test framework.<br/><br/>
*
* Normally, you would do onView(withId(R.id.send_button)).perform(click()); to send the draft
* message. However, in order to change the send button to the attach button while there is no
* draft, the send button is made invisible and the attach button is made visible instead. This
* confuses the test framework.<br>
* <br>
* So, this is a workaround for pressing the send button.
*/
public static void pressSend() {
@@ -10,14 +10,11 @@ import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import android.util.Log;
import androidx.test.espresso.contrib.RecyclerViewActions;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import com.b44t.messenger.TestUtils;
import org.junit.After;
import org.junit.Ignore;
import org.junit.Rule;
@@ -34,18 +31,19 @@ public class EnterChatsBenchmark {
// ==============================================================================================
// Set this to true if you already have at least 10 chats on your existing DeltaChat installation
// and want to traverse through them instead of 10 newly created chats
private final static boolean USE_EXISTING_CHATS = false;
private static final boolean USE_EXISTING_CHATS = false;
// ==============================================================================================
private final static int GO_THROUGH_ALL_CHATS_N_TIMES = 8;
private static final int GO_THROUGH_ALL_CHATS_N_TIMES = 8;
// ==============================================================================================
// PLEASE BACKUP YOUR ACCOUNT BEFORE RUNNING THIS!
// ==============================================================================================
private final static String TAG = EnterChatsBenchmark.class.getSimpleName();
private static final String TAG = EnterChatsBenchmark.class.getSimpleName();
@Rule
public ActivityScenarioRule<ConversationListActivity> activityRule = TestUtils.getOfflineActivityRule(USE_EXISTING_CHATS);
public ActivityScenarioRule<ConversationListActivity> activityRule =
TestUtils.getOfflineActivityRule(USE_EXISTING_CHATS);
@Test
public void createAndEnter10FilledChats() {
@@ -55,7 +53,9 @@ public class EnterChatsBenchmark {
for (int i = 0; i < GO_THROUGH_ALL_CHATS_N_TIMES; i++) {
times[i] = "" + timeGoToNChats(10); // 10 group chats were created
}
Log.i(TAG, "MEASURED RESULTS (Benchmark) - Going thorough all 10 chats: " + String.join(",", times));
Log.i(
TAG,
"MEASURED RESULTS (Benchmark) - Going thorough all 10 chats: " + String.join(",", times));
}
@Test
@@ -66,13 +66,17 @@ public class EnterChatsBenchmark {
for (int i = 0; i < GO_THROUGH_ALL_CHATS_N_TIMES; i++) {
times[i] = "" + timeGoToNChats(1);
}
Log.i(TAG, "MEASURED RESULTS (Benchmark) - Entering and leaving 1 empty chat: " + String.join(",", times));
Log.i(
TAG,
"MEASURED RESULTS (Benchmark) - Entering and leaving 1 empty chat: "
+ String.join(",", times));
}
@Test
public void enterFilledChat() {
if (!USE_EXISTING_CHATS) {
createChatAndGoBack("Group #1", true, "Hello!", "Some links: https://testrun.org", "And a command: /help");
createChatAndGoBack(
"Group #1", true, "Hello!", "Some links: https://testrun.org", "And a command: /help");
}
String[] times = new String[50];
@@ -82,7 +86,18 @@ public class EnterChatsBenchmark {
long end = System.currentTimeMillis();
long diff = end - start;
pressBack();
Log.i(TAG, "Measured (Benchmark) " + (i+1) + "/" + times.length + ": Entering 1 filled chat took " + diff + "ms " + "(going back took " + (System.currentTimeMillis() - end) + "ms)");
Log.i(
TAG,
"Measured (Benchmark) "
+ (i + 1)
+ "/"
+ times.length
+ ": Entering 1 filled chat took "
+ diff
+ "ms "
+ "(going back took "
+ (System.currentTimeMillis() - end)
+ "ms)");
times[i] = "" + diff;
}
@@ -91,16 +106,37 @@ public class EnterChatsBenchmark {
private void create10Chats(boolean fillWithMsgs) {
if (!USE_EXISTING_CHATS) {
createChatAndGoBack("Group #1", fillWithMsgs, "Hello!", "Some links: https://testrun.org", "And a command: /help");
createChatAndGoBack("Group #2", fillWithMsgs, "example.org, alice@example.org", "aaaaaaa", "bbbbbb");
createChatAndGoBack("Group #3", fillWithMsgs, repeat("Some string ", 600), repeat("Another string", 200), "Hi!!!");
createChatAndGoBack(
"Group #1",
fillWithMsgs,
"Hello!",
"Some links: https://testrun.org",
"And a command: /help");
createChatAndGoBack(
"Group #2", fillWithMsgs, "example.org, alice@example.org", "aaaaaaa", "bbbbbb");
createChatAndGoBack(
"Group #3",
fillWithMsgs,
repeat("Some string ", 600),
repeat("Another string", 200),
"Hi!!!");
createChatAndGoBack("Group #4", fillWithMsgs, "xyzabc", "Hi!!!!", "Let's meet!");
createChatAndGoBack("Group #5", fillWithMsgs, repeat("aaaa", 40), "bbbbbbbbbbbbbbbbbb", "ccccccccccccccc");
createChatAndGoBack("Group #6", fillWithMsgs, "aaaaaaaaaaa", repeat("Hi! ", 1000), "bbbbbbbbbb");
createChatAndGoBack("Group #7", fillWithMsgs, repeat("abcdefg ", 500), repeat("xxxxx", 100), "yrrrrrrrrrrrrr");
createChatAndGoBack("Group #8", fillWithMsgs, "and a number: 037362/384756", "ccccc", "Nice!");
createChatAndGoBack("Group #9", fillWithMsgs, "ddddddddddddddddd", "zuuuuuuuuuuuuuuuu", "ccccc");
createChatAndGoBack("Group #10", fillWithMsgs, repeat("xxxxxxyyyyy", 100), repeat("String!!", 10), "abcd");
createChatAndGoBack(
"Group #5", fillWithMsgs, repeat("aaaa", 40), "bbbbbbbbbbbbbbbbbb", "ccccccccccccccc");
createChatAndGoBack(
"Group #6", fillWithMsgs, "aaaaaaaaaaa", repeat("Hi! ", 1000), "bbbbbbbbbb");
createChatAndGoBack(
"Group #7",
fillWithMsgs,
repeat("abcdefg ", 500),
repeat("xxxxx", 100),
"yrrrrrrrrrrrrr");
createChatAndGoBack(
"Group #8", fillWithMsgs, "and a number: 037362/384756", "ccccc", "Nice!");
createChatAndGoBack(
"Group #9", fillWithMsgs, "ddddddddddddddddd", "zuuuuuuuuuuuuuuuu", "ccccc");
createChatAndGoBack(
"Group #10", fillWithMsgs, repeat("xxxxxxyyyyy", 100), repeat("String!!", 10), "abcd");
}
}
@@ -130,10 +166,10 @@ public class EnterChatsBenchmark {
onView(withContentDescription(R.string.group_create_button)).perform(click());
if (fillWithMsgs) {
for (String t: texts) {
for (String t : texts) {
sendText(t);
}
for (String t: texts) {
for (String t : texts) {
sendText(t);
}
}
@@ -14,11 +14,10 @@ import androidx.test.espresso.contrib.RecyclerViewActions;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.TestUtils;
import java.util.concurrent.TimeUnit;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
@@ -29,8 +28,6 @@ import org.thoughtcrime.securesms.ConversationListActivity;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.connect.DcHelper;
import java.util.concurrent.TimeUnit;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class ForwardingTest {
@@ -43,7 +40,8 @@ public class ForwardingTest {
}
@Rule
public final ActivityScenarioRule<ConversationListActivity> activityRule = TestUtils.getOfflineActivityRule(false);
public final ActivityScenarioRule<ConversationListActivity> activityRule =
TestUtils.getOfflineActivityRule(false);
@Before
public void createChats() {
@@ -51,10 +49,13 @@ public class ForwardingTest {
dcContext.createChatByContactId(DcContact.DC_CONTACT_ID_SELF);
// Disable bcc_self so that DC doesn't try to send messages to the server.
// If we didn't do this, messages would stay in DC_STATE_OUT_PENDING forever.
// The thing is, DC_STATE_OUT_PENDING show a rotating circle animation, and Espresso doesn't work
// The thing is, DC_STATE_OUT_PENDING show a rotating circle animation, and Espresso doesn't
// work
// with animations, and the tests would hang and never finish.
dcContext.setConfig("bcc_self", "0");
activityRule.getScenario().onActivity(a -> createdGroupId = DcHelper.getContext(a).createGroupChat(false, "group"));
activityRule
.getScenario()
.onActivity(a -> createdGroupId = DcHelper.getContext(a).createGroupChat("group"));
}
@After
@@ -68,7 +69,8 @@ public class ForwardingTest {
// The group is at position 0, self chat is at position 1, device talk is at position 2
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(2, click()));
onView(withId(R.id.title)).check(matches(withText(R.string.device_talk)));
onView(withId(android.R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, longClick()));
onView(withId(android.R.id.list))
.perform(RecyclerViewActions.actionOnItemAtPosition(0, longClick()));
onView(withId(R.id.menu_context_forward)).perform(click());
// Send it to self chat (which is sorted to the top because we're forwarding)
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
@@ -77,11 +79,13 @@ public class ForwardingTest {
pressBack();
onView(withId(R.id.toolbar_title)).check(matches(withText(R.string.connectivity_not_connected)));
onView(withId(R.id.toolbar_title))
.check(matches(withText(R.string.connectivity_not_connected)));
// Self chat moved up because we sent a message there
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
onView(withId(R.id.title)).check(matches(withText(R.string.saved_messages)));
onView(withId(android.R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, longClick()));
onView(withId(android.R.id.list))
.perform(RecyclerViewActions.actionOnItemAtPosition(0, longClick()));
onView(withId(R.id.menu_context_forward)).perform(click());
// Send it to the group
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(1, click()));
@@ -89,6 +93,7 @@ public class ForwardingTest {
onView(withId(R.id.title)).check(matches(withText("group")));
pressBack();
onView(withId(R.id.toolbar_title)).check(matches(withText(R.string.connectivity_not_connected)));
onView(withId(R.id.toolbar_title))
.check(matches(withText(R.string.connectivity_not_connected)));
}
}
@@ -14,15 +14,13 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import androidx.test.espresso.contrib.RecyclerViewActions;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.TestUtils;
import java.io.File;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
@@ -34,9 +32,6 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.ShareActivity;
import org.thoughtcrime.securesms.connect.DcHelper;
import java.io.File;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class SharingTest {
@@ -48,26 +43,34 @@ public class SharingTest {
private static int createdSingleChatId;
@Rule
public final ActivityScenarioRule<ConversationListActivity> activityRule = TestUtils.getOfflineActivityRule(false);
public final ActivityScenarioRule<ConversationListActivity> activityRule =
TestUtils.getOfflineActivityRule(false);
@Before
public void createGroup() {
activityRule.getScenario().onActivity(a -> createdGroupId = DcHelper.getContext(a).createGroupChat(false, "group"));
activityRule
.getScenario()
.onActivity(a -> createdGroupId = DcHelper.getContext(a).createGroupChat("group"));
}
@Before
public void createSingleChat() {
activityRule.getScenario().onActivity(a -> {
int contactId = DcHelper.getContext(a).createContact("", "abc@example.org");
createdSingleChatId = DcHelper.getContext(a).createChatByContactId(contactId);
});
activityRule
.getScenario()
.onActivity(
a -> {
int contactId = DcHelper.getContext(a).createContact("", "abc@example.org");
createdSingleChatId = DcHelper.getContext(a).createChatByContactId(contactId);
});
}
@Test
public void testNormalSharing() {
Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_TEXT, "Hello!");
i.setComponent(new ComponentName(getInstrumentation().getTargetContext().getApplicationContext(), ShareActivity.class));
i.setComponent(
new ComponentName(
getInstrumentation().getTargetContext().getApplicationContext(), ShareActivity.class));
activityRule.getScenario().onActivity(a -> a.startActivity(i));
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click()));
@@ -77,9 +80,9 @@ public class SharingTest {
}
/**
* Test direct sharing from a screenshot.
* Also, this is the regression test for https://github.com/deltachat/deltachat-android/issues/2040
* where network changes during sharing lead to a bug
* Test direct sharing from a screenshot. Also, this is the regression test for
* https://github.com/deltachat/deltachat-android/issues/2040 where network changes during sharing
* lead to a bug
*/
@Test
public void testShareFromScreenshot() {
@@ -92,20 +95,25 @@ public class SharingTest {
pngImage = file;
}
}
Uri uri = Uri.parse("content://" + BuildConfig.APPLICATION_ID + ".attachments/" + Uri.encode(pngImage));
Uri uri =
Uri.parse(
"content://" + BuildConfig.APPLICATION_ID + ".attachments/" + Uri.encode(pngImage));
DcHelper.sharedFiles.put(pngImage, "image/png");
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("image/png");
i.putExtra(Intent.EXTRA_SUBJECT, "Screenshot (Sep 27, 2021 00:00:00");
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
i.setFlags(
Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
| Intent.FLAG_ACTIVITY_FORWARD_RESULT
| Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP
| Intent.FLAG_RECEIVER_FOREGROUND
| Intent.FLAG_GRANT_READ_URI_PERMISSION);
i.putExtra(Intent.EXTRA_STREAM, uri);
i.putExtra(ShareActivity.EXTRA_CHAT_ID, createdGroupId);
i.setComponent(new ComponentName(getInstrumentation().getTargetContext().getApplicationContext(), ShareActivity.class));
i.setComponent(
new ComponentName(
getInstrumentation().getTargetContext().getApplicationContext(), ShareActivity.class));
activityRule.getScenario().onActivity(a -> a.startActivity(i));
TestUtils.waitForView(withId(R.id.send_button), 10000, 50);
@@ -121,16 +129,32 @@ public class SharingTest {
}
/**
* Tests https://github.com/deltachat/interface/blob/master/user-testing/mailto-links.md#mailto-links:
* Tests
* https://github.com/deltachat/interface/blob/master/user-testing/mailto-links.md#mailto-links:
*
* <ul dir="auto">
* <li><a href="mailto:abc@example.org">Just an email address</a> - should open a chat with <code>abc@example.org</code> (and maybe ask whether a chat should be created if it does not exist already)</li>
* <li><a href="mailto:abc@example.org?subject=testing%20mailto%20uris">email address with subject</a> - should open a chat with <code>abc@example.org</code> and fill <code>testing mailto uris</code>; as we created the chat in the previous step, it should not ask <code>Chat with </code> but directly open the chat</li>
* <li><a href="mailto:abc@example.org?body=this%20is%20a%20test">email address with body</a> - should open a chat with <code>abc@example.org</code>, draft <code>this is a test</code></li>
* <li><a href="mailto:abc@example.org?subject=testing%20mailto%20uris&amp;body=this%20is%20a%20test">email address with subject and body</a> - should open a chat with <code>abc@example.org</code>, draft <code>testing mailto uris</code> &lt;newline&gt; <code>this is a test</code></li>
* <li><a href="mailto:%20info@example.org">HTML encoding</a> - should open a chat with <code>info@example.org</code></li>
* <li><a href="mailto:simplebot@example.org?body=!web%20https%3A%2F%2Fduckduckgo.com%2Flite%3Fq%3Dduck%2520it">more HTML encoding</a> - should open a chat with <code>simplebot@example.org</code>, draft <code>!web https://duckduckgo.com/lite?q=duck%20it</code></li>
* <li><a href="mailto:?subject=bla&amp;body=blub">no email, just subject&amp;body</a> - this should let you choose a chat and create a draft <code>bla</code> &lt;newline&gt; <code>blub</code> there</li>
* <li><a href="mailto:abc@example.org">Just an email address</a> - should open a chat with
* <code>abc@example.org</code> (and maybe ask whether a chat should be created if it does
* not exist already)
* <li><a href="mailto:abc@example.org?subject=testing%20mailto%20uris">email address with
* subject</a> - should open a chat with <code>abc@example.org</code> and fill <code>
* testing mailto uris</code>; as we created the chat in the previous step, it should not
* ask <code>Chat with </code> but directly open the chat
* <li><a href="mailto:abc@example.org?body=this%20is%20a%20test">email address with body</a> -
* should open a chat with <code>abc@example.org</code>, draft <code>this is a test</code>
* <li><a
* href="mailto:abc@example.org?subject=testing%20mailto%20uris&amp;body=this%20is%20a%20test">email
* address with subject and body</a> - should open a chat with <code>abc@example.org</code>,
* draft <code>testing mailto uris</code> &lt;newline&gt; <code>this is a test</code>
* <li><a href="mailto:%20info@example.org">HTML encoding</a> - should open a chat with <code>
* info@example.org</code>
* <li><a
* href="mailto:simplebot@example.org?body=!web%20https%3A%2F%2Fduckduckgo.com%2Flite%3Fq%3Dduck%2520it">more
* HTML encoding</a> - should open a chat with <code>simplebot@example.org</code>, draft
* <code>!web https://duckduckgo.com/lite?q=duck%20it</code>
* <li><a href="mailto:?subject=bla&amp;body=blub">no email, just subject&amp;body</a> - this
* should let you choose a chat and create a draft <code>bla</code> &lt;newline&gt; <code>
* blub</code> there
* </ul>
*/
@Test
@@ -140,7 +164,8 @@ public class SharingTest {
openLink("mailto:abc@example.org?subject=testing%20mailto%20uris");
onView(withId(R.id.subtitle)).check(matches(withText("abc@example.org")));
onView(withHint(R.string.chat_input_placeholder)).check(matches(withText("testing mailto uris")));
onView(withHint(R.string.chat_input_placeholder))
.check(matches(withText("testing mailto uris")));
openLink("mailto:abc@example.org?body=this%20is%20a%20test");
onView(withId(R.id.subtitle)).check(matches(withText("abc@example.org")));
@@ -148,17 +173,22 @@ public class SharingTest {
openLink("mailto:abc@example.org?subject=testing%20mailto%20uris&body=this%20is%20a%20test");
onView(withId(R.id.subtitle)).check(matches(withText("abc@example.org")));
onView(withHint(R.string.chat_input_placeholder)).check(matches(withText("testing mailto uris\nthis is a test")));
onView(withHint(R.string.chat_input_placeholder))
.check(matches(withText("testing mailto uris\nthis is a test")));
openLink("mailto:%20abc@example.org");
onView(withId(R.id.subtitle)).check(matches(withText("abc@example.org")));
openLink("mailto:abc@example.org?body=!web%20https%3A%2F%2Fduckduckgo.com%2Flite%3Fq%3Dduck%2520it");
openLink(
"mailto:abc@example.org?body=!web%20https%3A%2F%2Fduckduckgo.com%2Flite%3Fq%3Dduck%2520it");
onView(withId(R.id.subtitle)).check(matches(withText("abc@example.org")));
onView(withHint(R.string.chat_input_placeholder)).check(matches(withText("!web https://duckduckgo.com/lite?q=duck%20it")));
onView(withHint(R.string.chat_input_placeholder))
.check(matches(withText("!web https://duckduckgo.com/lite?q=duck%20it")));
openLink("mailto:?subject=bla&body=blub");
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
onView(withId(R.id.list))
.perform(
RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
onView(withId(R.id.subtitle)).check(matches(withText("abc@example.org")));
onView(withHint(R.string.chat_input_placeholder)).check(matches(withText("bla\nblub")));
}
@@ -170,49 +200,61 @@ public class SharingTest {
}
/**
*
*
* <ul dir="auto">
* <li>Open Saved Messages chat (could be any other chat too)</li>
* <li>Go to another app and share some text to DC</li>
* <li>In DC select Saved Messages. Edit the shared text if you like. <em>Don't</em> hit the Send button.</li>
* <li>Leave DC</li>
* <li>Open DC again from the "Recent apps"</li>
* <li>Check that your draft is still there</li>
* <li>Open Saved Messages chat (could be any other chat too)
* <li>Go to another app and share some text to DC
* <li>In DC select Saved Messages. Edit the shared text if you like. <em>Don't</em> hit the
* Send button.
* <li>Leave DC
* <li>Open DC again from the "Recent apps"
* <li>Check that your draft is still there
* </ul>
*/
@Test
public void testOpenAgainFromRecents() {
// Open a chat
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
onView(withId(R.id.list))
.perform(
RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
// Share some text to DC
Intent i = new Intent(Intent.ACTION_SEND);
i.putExtra(Intent.EXTRA_TEXT, "Veeery important draft");
i.setComponent(new ComponentName(getInstrumentation().getTargetContext().getApplicationContext(), ShareActivity.class));
i.setComponent(
new ComponentName(
getInstrumentation().getTargetContext().getApplicationContext(), ShareActivity.class));
activityRule.getScenario().onActivity(a -> a.startActivity(i));
// In DC, select the same chat you opened before
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
onView(withId(R.id.list))
.perform(
RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
// Leave DC and go back to the previous activity
pressBack();
// Here, we can't exactly replicate the "steps to reproduce". Previously, the other activity
// stayed open in the background, but since it doesn't anymore, we need to open it again:
onView(withId(R.id.list)).perform(RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
onView(withId(R.id.list))
.perform(
RecyclerViewActions.actionOnItem(hasDescendant(withText("abc@example.org")), click()));
// Check that the draft is still there
// Util.sleep(2000); // Uncomment for debugging
onView(withHint(R.string.chat_input_placeholder)).check(matches(withText("Veeery important draft")));
onView(withHint(R.string.chat_input_placeholder))
.check(matches(withText("Veeery important draft")));
}
/**
* Regression test:
*
* If you save your contacts's emails in the contacts app of the phone, there are buttons to call
* them and also to write an email to them.
* <p>If you save your contacts's emails in the contacts app of the phone, there are buttons to
* call them and also to write an email to them.
*
* If you click the email button, ArcaneChat opened but instead of opening a chat with that contact,
* the chat list was show and "share with" was displayed at the top
* <p>If you click the email button, Delta Chat opened but instead of opening a chat with that
* contact, the chat list was show and "share with" was displayed at the top
*/
@Test
public void testOpenChatFromContacts() {
@@ -1,6 +1,5 @@
package com.b44t.messenger.uitests.online;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.replaceText;
@@ -11,13 +10,10 @@ import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import android.text.TextUtils;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.LargeTest;
import com.b44t.messenger.TestUtils;
import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
@@ -30,18 +26,20 @@ import org.thoughtcrime.securesms.WelcomeActivity;
@LargeTest
public class OnboardingTest {
@Rule
public ActivityScenarioRule<WelcomeActivity> activityRule = TestUtils.getOnlineActivityRule(WelcomeActivity.class);
public ActivityScenarioRule<WelcomeActivity> activityRule =
TestUtils.getOnlineActivityRule(WelcomeActivity.class);
@Test
public void testAccountCreation() {
if (TextUtils.isEmpty(BuildConfig.TEST_ADDR) || TextUtils.isEmpty(BuildConfig.TEST_MAIL_PW)) {
throw new RuntimeException("You need to set TEST_ADDR and TEST_MAIL_PW; " +
"either in gradle.properties or via an environment variable. " +
"See README.md for more details.");
throw new RuntimeException(
"You need to set TEST_ADDR and TEST_MAIL_PW; "
+ "either in gradle.properties or via an environment variable. "
+ "See README.md for more details.");
}
onView(withText(R.string.scan_invitation_code)).check(matches(isClickable()));
onView(withText(R.string.import_backup_title)).check(matches(isClickable()));
onView(withText(R.string.login_header)).perform(click());
onView(withText(R.string.manual_account_setup_option)).perform(click());
onView(withHint(R.string.email_address)).perform(replaceText(BuildConfig.TEST_ADDR));
onView(withHint(R.string.existing_password)).perform(replaceText(BuildConfig.TEST_MAIL_PW));
onView(withContentDescription(R.string.ok)).perform(click());
@@ -0,0 +1,19 @@
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="228"
android:viewportHeight="280">
<group
android:scaleX="0.35014287"
android:scaleY="0.43"
android:translateX="74.08372"
android:translateY="79.8">
<path
android:pathData="m10.03,234.14c0.3,-0.01 0.6,-0.02 0.9,-0.04 -0.07,-0.49 -0.14,-0.97 -0.2,-1.46 -0.15,-1.34 -0.26,-2.69 -0.25,-4.04 -0.02,-0.86 -0.05,-1.71 -0.07,-2.57 -0.09,-0.06 -0.18,-0.13 -0.27,-0.19 -0.02,-0.02 -0.04,-0.03 -0.07,-0.05zM44.87,232.95c11.71,-8.35 26.86,-14.79 46.21,-15.9 0,0 39.93,-0.27 47.91,-3.53 7.98,-3.26 68.68,-14.69 82.94,-98.43 14.26,-83.74 -1.06,-115.09 -1.06,-115.09 0,0 -21.14,55.68 -81.02,59.81 0,0 -14.5,1.03 -38.82,1.42 -24.32,0.39 -75.77,20.65 -90.55,85.62l-0.22,43.44c2.5,4.22 5.49,8.12 8.91,11.66 3.99,4.11 8.11,8.12 12.79,11.45 2.26,1.65 4.65,3.2 6.51,5.33 1.94,2.34 3.33,5 4.2,7.93 0.71,2.1 1.45,4.2 2.2,6.28z"
android:fillColor="@color/ic_launcher_background" />
<path
android:pathData="m217.97,45.86c-0.3,0.01 -0.6,0.02 -0.9,0.04 0.07,0.49 0.14,0.97 0.2,1.46 0.15,1.34 0.26,2.69 0.25,4.04 0.02,0.86 0.05,1.71 0.07,2.57 0.09,0.06 0.18,0.13 0.27,0.19 0.02,0.02 0.04,0.03 0.07,0.05zM183.13,47.05c-11.71,8.35 -26.86,14.79 -46.21,15.9 0,0 -39.93,0.27 -47.91,3.53 -7.98,3.26 -68.68,14.69 -82.94,98.43 -14.26,83.74 1.06,115.09 1.06,115.09 0,0 21.14,-55.68 81.02,-59.81 0,0 14.5,-1.03 38.82,-1.42 24.32,-0.39 75.77,-20.65 90.55,-85.62l0.22,-43.44c-2.5,-4.22 -5.49,-8.12 -8.91,-11.66 -3.99,-4.11 -8.11,-8.12 -12.79,-11.45 -2.26,-1.65 -4.65,-3.2 -6.51,-5.33 -1.94,-2.34 -3.33,-5 -4.2,-7.93 -0.71,-2.1 -1.45,-4.2 -2.2,-6.28z"
android:fillColor="@color/ic_launcher_background" />
</group>
</vector>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/white" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/white" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission
android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
<application>
<service
android:name=".connect.KeepAliveService"
android:foregroundServiceType="specialUse"
android:enabled="true" />
</application>
</manifest>
@@ -1,7 +1,6 @@
package org.thoughtcrime.securesms.notifications;
import android.content.Context;
import androidx.annotation.Nullable;
/*
@@ -10,6 +9,11 @@ import androidx.annotation.Nullable;
*/
public class FcmReceiveService {
public static void register(Context context) {}
public static void waitForRegisterFinished() {}
@Nullable public static String getToken() { return null; }
@Nullable
public static String getToken() {
return null;
}
}
+31 -22
View File
@@ -1,29 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- force compiling emojipicker on sdk<21 and firebase on sdk<19; runtime checks are required then -->
<uses-sdk tools:overrideLibrary="androidx.emoji2.emojipicker, com.google.firebase.messaging, com.google.android.gms.cloudmessaging"/>
<meta-data
android:name="firebase_analytics_collection_deactivated"
android:value="true" />
<meta-data
android:name="google_analytics_adid_collection_enabled"
android:value="false" />
<meta-data
android:name="firebase_messaging_auto_init_enabled"
android:value="false" />
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />
<meta-data android:name="firebase_messaging_auto_init_enabled" android:value="false" />
<application>
<service
android:name=".connect.KeepAliveService"
android:foregroundServiceType="dataSync"
android:enabled="true" />
<application>
<service
android:name=".notifications.FcmReceiveService"
android:foregroundServiceType="dataSync"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name=".notifications.FcmReceiveService"
android:foregroundServiceType="dataSync"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="${applicationId}.firebaseinitprovider"
tools:node="remove">
</provider>
</application>
<provider
android:name="com.google.firebase.provider.FirebaseInitProvider"
android:authorities="${applicationId}.firebaseinitprovider"
tools:node="remove">
</provider>
</application>
</manifest>
@@ -1,20 +1,16 @@
package org.thoughtcrime.securesms.notifications;
import android.content.Context;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import com.google.android.gms.tasks.Tasks;
import com.google.firebase.FirebaseApp;
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.BuildConfig;
import org.thoughtcrime.securesms.service.FetchForegroundService;
@@ -35,36 +31,38 @@ public class FcmReceiveService extends FirebaseMessagingService {
return;
}
Util.runOnAnyBackgroundThread(() -> {
final String rawToken;
Util.runOnAnyBackgroundThread(
() -> {
final String rawToken;
try {
synchronized (INIT_LOCK) {
if (!initialized) {
// manual init: read tokens from `./google-services.json`;
// automatic init disabled in AndroidManifest.xml to skip FCM code completely.
FirebaseApp.initializeApp(context);
try {
synchronized (INIT_LOCK) {
if (!initialized) {
// manual init: read tokens from `./google-services.json`;
// automatic init disabled in AndroidManifest.xml to skip FCM code completely.
FirebaseApp.initializeApp(context);
}
initialized = true;
}
rawToken = Tasks.await(FirebaseMessaging.getInstance().getToken());
} catch (Exception e) {
// we're here usually when FCM is not available and initializeApp() or getToken()
// failed.
Log.w(TAG, "cannot get FCM token for " + BuildConfig.APPLICATION_ID + ": " + e);
triedRegistering = true;
return;
}
if (TextUtils.isEmpty(rawToken)) {
Log.w(TAG, "got empty FCM token for " + BuildConfig.APPLICATION_ID);
triedRegistering = true;
return;
}
initialized = true;
}
rawToken = Tasks.await(FirebaseMessaging.getInstance().getToken());
} catch (Exception e) {
// we're here usually when FCM is not available and initializeApp() or getToken() failed.
Log.w(TAG, "cannot get FCM token for " + BuildConfig.APPLICATION_ID + ": " + e);
triedRegistering = true;
return;
}
if (TextUtils.isEmpty(rawToken)) {
Log.w(TAG, "got empty FCM token for " + BuildConfig.APPLICATION_ID);
triedRegistering = true;
return;
}
prefixedToken = addPrefix(rawToken);
Log.i(TAG, "FCM token: " + prefixedToken);
ApplicationContext.dcAccounts.setPushDeviceToken(prefixedToken);
triedRegistering = true;
});
prefixedToken = addPrefix(rawToken);
Log.i(TAG, "FCM token: " + prefixedToken);
ApplicationContext.getDcAccounts().setPushDeviceToken(prefixedToken);
triedRegistering = true;
});
}
// wait a until FCM registration got a token or not.
@@ -91,7 +89,20 @@ public class FcmReceiveService extends FirebaseMessagingService {
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
Log.i(TAG, "FCM push notification received");
FetchForegroundService.start(this);
// Note: The system can downgrade the high priority messages to normal priority
// if the app is not using the high priority messages for surfacing time sensitive
// content to the user. If the message's priority is downgraded, your app cannot
// start a foreground service and attempting to start one results in a
// ForegroundServiceStartNotAllowedException.
// So, it's recommended to check the result of RemoteMessage.getPriority() and
// confirm it's PRIORITY_HIGH() before attempting to start a foreground service.
// source:
// https://developer.android.com/develop/background-work/services/fgs/restrictions-bg-start
if (remoteMessage.getPriority() == RemoteMessage.PRIORITY_HIGH) {
FetchForegroundService.start(this);
} else {
FetchForegroundService.fetchSynchronously();
}
}
@Override
@@ -104,6 +115,6 @@ public class FcmReceiveService extends FirebaseMessagingService {
public void onNewToken(@NonNull String rawToken) {
prefixedToken = addPrefix(rawToken);
Log.i(TAG, "new FCM token: " + prefixedToken);
ApplicationContext.dcAccounts.setPushDeviceToken(prefixedToken);
ApplicationContext.getDcAccounts().setPushDeviceToken(prefixedToken);
}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 300 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

+4
View File
@@ -6,6 +6,10 @@ a {
text-decoration: none;
}
a[href^='http']::after {
content: " ↗";
}
h2, h3, h4 {
margin-top: 2rem;
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 778 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 138 B

File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 232 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 286 B

File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,129 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc;
import chat.delta.util.SettableFuture;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
/* Basic RPC Transport implementation */
public abstract class BaseRpcTransport implements Rpc.RpcTransport {
private final Map<Integer, SettableFuture<JsonNode>> requestFutures = new ConcurrentHashMap<>();
private int requestId = 0;
private final ObjectMapper mapper = new ObjectMapper();
private Thread worker;
/* Send a Request as raw JSON String to the RPC server */
protected abstract void sendRequest(String jsonRequest);
/* Get next Response as raw JSON String from the RPC server */
protected abstract String getResponse();
public ObjectMapper getObjectMapper() {
return mapper;
}
public void call(String method, JsonNode... params) throws RpcException {
innerCall(method, params);
}
public <T> T callForResult(TypeReference<T> resultType, String method, JsonNode... params) throws RpcException {
try {
JsonNode node = innerCall(method, params);
if (node.isNull()) return null;
return mapper.readValue(node.traverse(), resultType);
} catch (IOException e) {
throw new RpcException(e.getMessage());
}
}
private JsonNode innerCall(String method, JsonNode... params) throws RpcException {
int id;
synchronized (this) {
id = ++requestId;
ensureWorkerThread();
}
try {
String jsonRequest = mapper.writeValueAsString(new Request(method, params, id));
SettableFuture<JsonNode> future = new SettableFuture<>();
requestFutures.put(id, future);
sendRequest(jsonRequest);
return future.get();
} catch (ExecutionException e) {
throw (RpcException)e.getCause();
} catch (InterruptedException e) {
throw new RpcException(e.getMessage());
} catch (JsonProcessingException e) {
throw new RpcException(e.getMessage());
}
}
private void ensureWorkerThread() {
if (worker != null) return;
worker = new Thread(() -> {
while (true) {
try {
processResponse();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
}, "jsonrpcThread");
worker.start();
}
private void processResponse() throws JsonProcessingException {
String jsonResponse = getResponse();
Response response = mapper.readValue(jsonResponse, Response.class);
if (response.id == 0) { // Got JSON-RPC notification/event, ignore
return;
}
SettableFuture<JsonNode> future = requestFutures.remove(response.id);
if (future == null) { // Got a response with unknown ID, ignore
return;
}
if (response.error != null) {
future.setException(new RpcException(response.error.message));
} else if (response.result != null) {
future.set(response.result);
} else {
future.setException(new RpcException("Got JSON-RPC response without result or error: " + jsonResponse));
}
}
private static class Request {
private final String jsonrpc = "2.0";
public final String method;
public final JsonNode[] params;
public final int id;
public Request(String method, JsonNode[] params, int id) {
this.method = method;
this.params = params;
this.id = id;
}
}
private static class RpcError {
public int code;
public String message;
}
private static class Response {
public String jsonrpc;
public int id;
public JsonNode result;
public RpcError error;
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,8 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc;
public class RpcException extends Exception {
public RpcException(String message) { super(message); }
}
@@ -0,0 +1,32 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
@JsonTypeInfo(use=Id.NAME, include=As.PROPERTY, property="kind")
@JsonSubTypes({@Type(value = Account.Configured.class, name="Configured"), @Type(value = Account.Unconfigured.class, name="Unconfigured")})
public abstract class Account {
public static class Configured extends Account {
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String addr;
public String color;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String displayName;
public Integer id;
/** Optional tag as "Work", "Family". Meant to help profile owner to differ between profiles with similar names. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String privateTag;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String profileImage;
}
public static class Unconfigured extends Account {
public Integer id;
}
}
@@ -0,0 +1,35 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
/**
* cheaper version of fullchat, omits: - contact_ids - fresh_message_counter - ephemeral_timer - self_in_group - was_seen_recently - can_send
* <p>
* used when you only need the basic metadata of a chat like type, name, profile picture
*/
public class BasicChat {
public Boolean archived;
public ChatType chatType;
public String color;
public Integer id;
public Boolean isContactRequest;
public Boolean isDeviceChat;
/**
* True if the chat is encrypted. This means that all messages in the chat are encrypted, and all contacts in the chat are "key-contacts", i.e. identified by the PGP key fingerprint.
* <p>
* False if the chat is unencrypted. This means that all messages in the chat are unencrypted, and all contacts in the chat are "address-contacts", i.e. identified by the email address. The UI should mark this chat e.g. with a mail-letter icon.
* <p>
* Unencrypted groups are called "ad-hoc groups" and the user can't add/remove members, create a QR invite code, or set an avatar. These options should therefore be disabled in the UI.
* <p>
* Note that it can happen that an encrypted chat contains unencrypted messages that were received in core <= v1.159.* and vice versa.
* <p>
* See also `is_key_contact` on `Contact`.
*/
public Boolean isEncrypted;
public Boolean isMuted;
public Boolean isSelfTalk;
public Boolean isUnpromoted;
public String name;
public Boolean pinned;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String profileImage;
}
@@ -0,0 +1,19 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public class CallInfo {
/** True if the call is started as a video call. */
public Boolean hasVideo;
/**
* SDP offer.
* <p>
* Can be used to manually answer the call even if incoming call event was missed.
*/
public String sdpOffer;
/**
* Call state.
* <p>
* For example, if the call is accepted, active, canceled, declined etc.
*/
public CallState state;
}
@@ -0,0 +1,48 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
@JsonTypeInfo(use=Id.NAME, include=As.PROPERTY, property="kind")
@JsonSubTypes({@Type(value = CallState.Alerting.class, name="Alerting"), @Type(value = CallState.Active.class, name="Active"), @Type(value = CallState.Completed.class, name="Completed"), @Type(value = CallState.Missed.class, name="Missed"), @Type(value = CallState.Declined.class, name="Declined"), @Type(value = CallState.Canceled.class, name="Canceled")})
public abstract class CallState {
/**
* Fresh incoming or outgoing call that is still ringing.
* <p>
* There is no separate state for outgoing call that has been dialled but not ringing on the other side yet as we don't know whether the other side received our call.
*/
public static class Alerting extends CallState {
}
/** Active call. */
public static class Active extends CallState {
}
/** Completed call that was once active and then was terminated for any reason. */
public static class Completed extends CallState {
/** Call duration in seconds. */
public Integer duration;
}
/** Incoming call that was not picked up within a timeout or was explicitly ended by the caller before we picked up. */
public static class Missed extends CallState {
}
/** Incoming call that was explicitly ended on our side before picking up or outgoing call that was declined before the timeout. */
public static class Declined extends CallState {
}
/**
* Outgoing call that has been canceled on our side before receiving a response.
* <p>
* Incoming calls cannot be canceled, on the receiver side canceled calls usually result in missed calls.
*/
public static class Canceled extends CallState {
}
}
@@ -0,0 +1,71 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
@JsonTypeInfo(use=Id.NAME, include=As.PROPERTY, property="kind")
@JsonSubTypes({@Type(value = ChatListItemFetchResult.ChatListItem.class, name="ChatListItem"), @Type(value = ChatListItemFetchResult.ArchiveLink.class, name="ArchiveLink"), @Type(value = ChatListItemFetchResult.Error.class, name="Error")})
public abstract class ChatListItemFetchResult {
public static class ChatListItem extends ChatListItemFetchResult {
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String avatarPath;
public ChatType chatType;
public String color;
/** contact id if this is a dm chat (for view profile entry in context menu) */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer dmChatContact;
public Integer freshMessageCounter;
public Integer id;
public Boolean isArchived;
public Boolean isContactRequest;
public Boolean isDeviceTalk;
/**
* True if the chat is encrypted. This means that all messages in the chat are encrypted, and all contacts in the chat are "key-contacts", i.e. identified by the PGP key fingerprint.
* <p>
* False if the chat is unencrypted. This means that all messages in the chat are unencrypted, and all contacts in the chat are "address-contacts", i.e. identified by the email address. The UI should mark this chat e.g. with a mail-letter icon.
* <p>
* Unencrypted groups are called "ad-hoc groups" and the user can't add/remove members, create a QR invite code, or set an avatar. These options should therefore be disabled in the UI.
* <p>
* Note that it can happen that an encrypted chat contains unencrypted messages that were received in core <= v1.159.* and vice versa.
* <p>
* See also `is_key_contact` on `Contact`.
*/
public Boolean isEncrypted;
/** deprecated 2025-07, use chat_type instead */
public Boolean isGroup;
public Boolean isMuted;
public Boolean isPinned;
public Boolean isSelfInGroup;
public Boolean isSelfTalk;
public Boolean isSendingLocation;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer lastMessageId;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Viewtype lastMessageType;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer lastUpdated;
public String name;
/** showing preview if last chat message is image */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String summaryPreviewImage;
public Integer summaryStatus;
public String summaryText1;
public String summaryText2;
public Boolean wasSeenRecently;
}
public static class ArchiveLink extends ChatListItemFetchResult {
public Integer freshMessageCounter;
}
public static class Error extends ChatListItemFetchResult {
public String error;
public Integer id;
}
}
@@ -0,0 +1,10 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public enum ChatType {
Single,
Group,
Mailinglist,
OutBroadcast,
InBroadcast,
}
@@ -0,0 +1,8 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public enum ChatVisibility {
Normal,
Archived,
Pinned,
}
@@ -0,0 +1,52 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public class Contact {
public String address;
public String authName;
public String color;
public String displayName;
/**
* Is encryption available for this contact.
* <p>
* This can only be true for key-contacts. However, it is possible to have a key-contact for which encryption is not available because we don't have a key yet, e.g. if we just scanned the fingerprint from a QR code.
*/
public Boolean e2eeAvail;
public Integer id;
public Boolean isBlocked;
/** If the contact is a bot. */
public Boolean isBot;
/** Is the contact a key contact. */
public Boolean isKeyContact;
/**
* True if the contact can be added to protected chats because SELF and contact have verified their fingerprints in both directions.
* <p>
* See [`Self::verifier_id`]/`Contact.verifierId` for a guidance how to display these information.
*/
public Boolean isVerified;
/** the contact's last seen timestamp */
public Integer lastSeen;
public String name;
public String nameAndAddr;
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String profileImage;
public String status;
/**
* The contact ID that verified a contact.
* <p>
* As verifier may be unknown, use [`Self::is_verified`]/`Contact.isVerified` to check if a contact can be added to a protected chat.
* <p>
* UI should display the information in the contact's profile as follows:
* <p>
* - If `verifierId` != 0, display text "Introduced by ..." with the name of the contact. Prefix the text by a green checkmark.
* <p>
* - If `verifierId` == 0 and `isVerified` != 0, display "Introduced" prefixed by a green checkmark.
* <p>
* - if `verifierId` == 0 and `isVerified` == 0, display nothing
* <p>
* This contains the contact ID of the verifier. If it is `DC_CONTACT_ID_SELF`, we verified the contact ourself. If it is None/Null, we don't have verifier information or the contact is not verified.
*/
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer verifierId;
public Boolean wasSeenRecently;
}
@@ -0,0 +1,10 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public enum DownloadState {
Done,
Available,
Failure,
Undecipherable,
InProgress,
}
@@ -0,0 +1,13 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public enum EnteredCertificateChecks {
/** `Automatic` means that provider database setting should be taken. If there is no provider database setting for certificate checks, check certificates strictly. */
automatic,
/** Ensure that TLS certificate is valid for the server hostname. */
strict,
/** Accept certificates that are expired, self-signed or otherwise not valid for the server hostname. */
acceptInvalidCertificates,
}
@@ -0,0 +1,51 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
/**
* Login parameters entered by the user.
* <p>
* Usually it will be enough to only set `addr` and `password`, and all the other settings will be autoconfigured.
*/
public class EnteredLoginParam {
/** Email address. */
public String addr;
/** TLS options: whether to allow invalid certificates and/or invalid hostnames. Default: Automatic */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public EnteredCertificateChecks certificateChecks;
/** Imap server port. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer imapPort;
/** Imap socket security. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Socket imapSecurity;
/** Imap server hostname or IP address. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String imapServer;
/** Imap username. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String imapUser;
/** If true, login via OAUTH2 (not recommended anymore). Default: false */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Boolean oauth2;
/** Password. */
public String password;
/**
* SMTP Password.
* <p>
* Only needs to be specified if different than IMAP password.
*/
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String smtpPassword;
/** SMTP server port. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Integer smtpPort;
/** SMTP socket security. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public Socket smtpSecurity;
/** SMTP server hostname or IP address. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String smtpServer;
/** SMTP username. */
@com.fasterxml.jackson.annotation.JsonSetter(nulls = com.fasterxml.jackson.annotation.Nulls.SET)
public String smtpUser;
}
@@ -0,0 +1,28 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeInfo.Id;
import com.fasterxml.jackson.annotation.JsonTypeInfo.As;
@JsonTypeInfo(use=Id.NAME, include=As.PROPERTY, property="kind")
@JsonSubTypes({@Type(value = EphemeralTimer.Disabled.class, name="Disabled"), @Type(value = EphemeralTimer.Enabled.class, name="Enabled")})
public abstract class EphemeralTimer {
/** Timer is disabled. */
public static class Disabled extends EphemeralTimer {
}
/** Timer is enabled. */
public static class Enabled extends EphemeralTimer {
/**
* Timer duration in seconds.
* <p>
* The value cannot be 0.
*/
public Integer duration;
}
}
@@ -0,0 +1,9 @@
/* Autogenerated file, do not edit manually */
package chat.delta.rpc.types;
public class Event {
/** Account ID. */
public Integer contextId;
/** Event payload. */
public EventType event;
}

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