Compare commits

..

901 Commits

Author SHA1 Message Date
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
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
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 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 2f79310db6 update strings 2025-03-11 00:12:29 +01:00
adbenitez 129278443d Merge remote-tracking branch 'upstream/main' 2025-03-10 23:45:08 +01:00
adbenitez 0e27692c32 rename changelog 2025-03-10 23:39:35 +01:00
adbenitez 92be6947db update changelog 2025-03-10 23:39:03 +01:00
adb 884ba32ce9 Merge pull request #3669 from deltachat/prep-1.54.4
prepare 1.54.4
2025-03-10 22:22:14 +00:00
adbenitez fe2ac243c7 update changelog and increase version number 2025-03-10 22:20:26 +00:00
adb 4b978c0124 Merge pull request #3656 from deltachat/adb/use-chat-deleted-event
remove notifications from chat that was deleted from other device
2025-03-10 22:20:03 +00:00
adb 8bf799ec2a Merge pull request #3668 from deltachat/update-core-and-stuff-10/3/25
Update core to 1.156.3
2025-03-10 22:17:33 +00:00
adbenitez f92225528c update translations 2025-03-10 22:45:02 +01:00
adbenitez 796b723be7 update core submodule URL 2025-03-10 22:39:13 +01:00
adbenitez 544ab41aa4 update deltachat-core-rust to 'chore(release): prepare for 1.156.3' of 'v1.156.3' 2025-03-10 22:37:13 +01:00
adbenitez cca9dfb04a avoid ANR in ConversationActivity.processComposeControls 2025-03-10 22:17:47 +01:00
adb faa94acbcb Merge pull request #3666 from deltachat/adb/issue-3660
avoid ANR in ProfileSettingsFragment.onActivityResult
2025-03-10 19:46:00 +00:00
adbenitez e7517c23ad avoid ANR in ProfileSettingsFragment.onActivityResult 2025-03-10 18:20:28 +01:00
adb 370afbf2ce Merge pull request #3665 from deltachat/adb/issue-3664
call rpc.start() before it is used
2025-03-10 17:07:00 +00:00
adbenitez bcee64317d call rpc.start() before it is used 2025-03-10 17:30:59 +01:00
adbenitez 6fe4d57b48 remove IzzyOnDroid 2025-03-09 00:55:45 +01:00
B. Petersen 906db9155a bring back 'add attachment later', which was removed at #3601 2025-03-08 20:41:11 +01:00
l 9b7b35acb1 Merge pull request #3655 from deltachat/weblate
Translations update from Hosted Weblate
2025-03-07 22:56:43 +00:00
adbenitez 5d25ed7715 remove notifications from chat that was deleted from other device 2025-03-07 23:22:34 +01:00
Andrea Enzo Lattmann 5691ab9e84 Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/
2025-03-07 23:13:19 +01:00
adb 64aa0fb49c Merge pull request #3652 from deltachat/adb/issue-3651
avoid IllegalArgumentException in BaseConversationListFragment.handleAddToHomeScreen
2025-03-07 19:01:43 +00:00
l d3fe672ec0 Merge https://hosted.weblate.org/git/deltachat/android-metadata/ 2025-03-07 02:53:08 +00:00
link2xt 4e199c0080 Merge https://hosted.weblate.org/git/deltachat/android-metadata/ 2025-03-07 02:50:58 +00:00
adbenitez 8fd8927293 avoid IllegalArgumentException in BaseConversationListFragment.handleAddToHomeScreen 2025-03-06 20:12:55 +00:00
Hosted Weblate 320f0ba27d Merge remote-tracking branch 'origin/main' 2025-03-06 19:23:44 +01:00
l c7d903f64a Merge pull request #3649 from deltachat/link2xt/merge-weblate
Manually merge weblate
2025-03-06 18:23:39 +00:00
link2xt f394b22e45 Merge remote-tracking branch 'weblate/main'
Merging from https://hosted.weblate.org/git/deltachat/android-metadata/
into main.

Weblate stopped making PRs because there were conflicts.
2025-03-06 18:15:44 +00:00
adbenitez e7ced91670 Merge remote-tracking branch 'upstream/main' 2025-03-06 01:38:42 +01:00
adbenitez 35836ad18f update translations 2025-03-05 21:28:12 +01:00
Hosted Weblate 2e99f6ee93 Merge remote-tracking branch 'origin/main' 2025-03-05 20:58:49 +01:00
B. Petersen 5c551cb2a8 go for 'Profile Label' 2025-03-05 20:58:42 +01:00
B. Petersen 6490a641da reword 'Private Tag' to 'Profile Description' 2025-03-05 20:58:42 +01:00
adbenitez 06164d240d add back "reply" option to menu 2025-03-05 20:19:11 +01:00
Максим Горпиніч b729e93b8a Translated using Weblate (Ukrainian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/uk/
2025-03-04 22:37:41 +01:00
Hosted Weblate d7345f75e2 Merge remote-tracking branch 'origin/main' 2025-03-03 21:10:05 +00:00
adbenitez 695e1e06dd update f-droid description 2025-03-03 22:09:58 +01:00
adbenitez ccedf31b96 update core 2025-03-03 17:16:15 +01:00
adbenitez 31f89cec02 Merge remote-tracking branch 'upstream/main' 2025-03-03 15:49:30 +01:00
Hosted Weblate 42561266ba Merge remote-tracking branch 'origin/main' 2025-03-03 15:31:12 +01:00
adb 17a182625d Merge pull request #3644 from deltachat/prep-1.54.3
prepare 1.54.3
2025-03-03 15:31:06 +01:00
adbenitez 625d0ed66c update changelog and version number 2025-03-03 13:58:33 +01:00
Hosted Weblate f7f1f29531 Merge remote-tracking branch 'origin/main' 2025-03-03 13:57:24 +01:00
adb 134fbc7188 Merge pull request #3643 from deltachat/update-core-and-stuff-3/3/25
Update core to 1.156.2
2025-03-03 13:57:14 +01:00
adbenitez 5d26387aa3 update translations 2025-03-03 13:36:33 +01:00
adbenitez 4a3070bb54 update deltachat-core-rust to 'chore(release): prepare for 1.156.2' of 'v1.156.2' 2025-03-03 13:35:14 +01:00
Hosted Weblate 8377f23c58 Merge remote-tracking branch 'origin/main' 2025-03-02 23:03:31 +01:00
B. Petersen ec4c96dd92 clarify chat deletion impact 2025-03-02 23:03:24 +01:00
adbenitez f0fb8e62f8 show trash/delete icon when selecting a message 2025-03-02 02:09:32 +01:00
adbenitez 823e6b6e1f update build.gradle 2025-03-02 01:58:59 +01:00
adbenitez 49a59fbebe allow to access map 2025-03-02 01:58:13 +01:00
adbenitez 3424d60ea4 Merge remote-tracking branch 'upstream/main' 2025-03-02 01:49:54 +01:00
adbenitez 1ead71c87a update core 2025-03-02 01:49:27 +01:00
Hosted Weblate 7a44182c3f Merge remote-tracking branch 'origin/main' 2025-02-28 20:25:07 +01:00
adb 75c111cb0b Merge pull request #3641 from deltachat/adb/tweak-release-instructions
update amazon instructions
2025-02-28 20:25:04 +01:00
adbenitez 1c9b51f5dc update amazon instructions 2025-02-28 20:01:45 +01:00
Hosted Weblate 5e88059283 Merge remote-tracking branch 'origin/main' 2025-02-28 16:43:31 +01:00
B. Petersen 76307706f1 update translations 2025-02-28 16:43:22 +01:00
adbenitez 4db770b1f8 Merge remote-tracking branch 'upstream/main' 2025-02-28 15:38:30 +01:00
Hosted Weblate 96e635f0bd Merge remote-tracking branch 'origin/main' 2025-02-28 14:37:01 +00:00
adb 7dd3176a06 Merge pull request #3637 from deltachat/prep-1.54.2
prepare 1.54.2
2025-02-28 15:36:55 +01:00
adbenitez 16037e7693 update version number and changelog 2025-02-28 14:35:59 +01:00
adbenitez 6f5756c331 Merge remote-tracking branch 'upstream/main' 2025-02-28 14:12:59 +01:00
Hosted Weblate 8aa7dfabe6 Merge remote-tracking branch 'origin/main' 2025-02-28 14:00:55 +01:00
adb 13c45f37e7 Merge pull request #3636 from deltachat/update-core-28/2/25
update core to  1.156.1
2025-02-28 14:00:49 +01:00
adbenitez c45b5fe9e4 update deltachat-core-rust to 'chore(release): prepare for 1.156.1' of 'v1.156.1' 2025-02-28 13:54:03 +01:00
adbenitez 0a9d042747 fix colors 2025-02-28 02:32:10 +01:00
adbenitez 6cbbb9608e Merge remote-tracking branch 'upstream/adb/allow-to-edit-and-delete-for-all' 2025-02-28 00:10:20 +01:00
adbenitez f8766820db Merge remote-tracking branch 'upstream/main' 2025-02-27 23:46:10 +01:00
adbenitez a2847ea45e allow to edit messages 2025-02-27 23:10:16 +01:00
adbenitez 841e5ee30a show "delete for everyone" in MediaPreviewActivity 2025-02-27 22:55:44 +01:00
adbenitez 624f797888 allow to "delete for everyone" outgoing messages 2025-02-27 22:30:31 +01:00
adbenitez a640c81c73 add bindings for new "delete for everyone" API 2025-02-27 22:29:58 +01:00
Hosted Weblate cd344daf5a Merge remote-tracking branch 'origin/main' 2025-02-27 22:29:28 +01:00
adb 247ddfcf1a Merge pull request #3635 from deltachat/adb/update-some-strings-usage
avoid using some deprecated strings
2025-02-27 22:29:25 +01:00
adbenitez d09ad5748d deprecate cannot_delete_contacts_in_use 2025-02-27 22:28:48 +01:00
Hosted Weblate 4658adc2cd Merge remote-tracking branch 'origin/main' 2025-02-27 22:24:57 +01:00
B. Petersen 30ddf2b03e clarify deletion impact 2025-02-27 22:24:54 +01:00
adbenitez edb2c963c6 avoid using some deprecated strings 2025-02-27 22:24:23 +01:00
adbenitez cf2f6bd2ec Merge remote-tracking branch 'upstream/main' 2025-02-27 20:51:22 +01:00
Hosted Weblate 62ad0e942f Merge remote-tracking branch 'origin/main' 2025-02-27 19:31:25 +00:00
adb 8cc8ee404d Merge pull request #3632 from deltachat/prep-1.54.1
prepare 1.54.1
2025-02-27 20:31:20 +01:00
adbenitez 180b278a95 bump version 2025-02-27 19:29:26 +01:00
adbenitez e91671b958 update changelog 2025-02-27 19:28:32 +01:00
Hosted Weblate 7e0fc59687 Merge remote-tracking branch 'origin/main' 2025-02-27 17:54:48 +00:00
adb 255a96d393 Merge pull request #3631 from deltachat/adb/issue-3627
don't allow editing for now
2025-02-27 18:54:43 +01:00
adbenitez dfed8aec00 Merge remote-tracking branch 'upstream/main' 2025-02-27 18:53:58 +01:00
adbenitez a498d58c2a don't allow editing for now 2025-02-27 18:48:09 +01:00
Hosted Weblate 4ec02a59de Merge remote-tracking branch 'origin/main' 2025-02-27 17:38:52 +00:00
B. Petersen 276c0785fa update local help 2025-02-27 18:38:45 +01:00
B. Petersen 6a4efb3358 update translations 2025-02-27 18:38:45 +01:00
Hosted Weblate bcad4a7302 Merge remote-tracking branch 'origin/main' 2025-02-27 18:30:11 +01:00
B. Petersen 120007d87a add a warning when scanning a backup QR code from a too new delta chat version 2025-02-27 18:30:05 +01:00
Hosted Weblate 55eab9dd0b Merge remote-tracking branch 'origin/main' 2025-02-27 18:26:49 +01:00
adb ea99f0cd48 Merge pull request #3621 from deltachat/adb/cleanup-ContactSelectionListAdapter
cleanup ContactSelectionListAdapter
2025-02-27 18:26:43 +01:00
Hosted Weblate 6f6cd80516 Merge remote-tracking branch 'origin/main' 2025-02-27 18:25:30 +01:00
adb 2bb63878b1 Merge pull request #3601 from deltachat/adb/allow-to-edit-msg
allow to edit message
2025-02-27 18:25:27 +01:00
adbenitez c5d7ec0946 don't allow to edit html messages 2025-02-27 17:41:53 +01:00
adbenitez da7a3fc50a tweak menu 2025-02-27 17:41:53 +01:00
adbenitez 9c36749619 remove unnecessary icon for reply menu item 2025-02-27 17:41:53 +01:00
adbenitez cb3fd74af9 move delete-messages to the end and make it red 2025-02-27 17:41:53 +01:00
adbenitez 7b11c5dd79 re-organize menu and add pencil icon 2025-02-27 17:41:53 +01:00
adbenitez e3c108c773 use new strings 2025-02-27 17:41:53 +01:00
adbenitez 6621046d6d cancel editing when user swipe-to-reply a message 2025-02-27 17:41:53 +01:00
adbenitez ed23c93526 fix: don't discard draft if not in editing mode 2025-02-27 17:41:53 +01:00
adbenitez 19cd640dc8 tweak code style 2025-02-27 17:41:53 +01:00
adbenitez f1fe3e0807 allow to edit any normal message with text, not only "text viewtype" 2025-02-27 17:41:53 +01:00
adbenitez fce62453d1 show "Edit Message" instead of "Me" in edition mode 2025-02-27 17:41:53 +01:00
adbenitez 441f943190 add "edited" label 2025-02-27 17:41:53 +01:00
adbenitez fb759e12f0 fix bindings 2025-02-27 17:41:53 +01:00
adbenitez d1737cb69f allow to edit outgoing text messages 2025-02-27 17:41:51 +01:00
adbenitez c94f9371fe add C bindings 2025-02-27 17:32:56 +01:00
Hosted Weblate c88a1b53b0 Merge remote-tracking branch 'origin/main' 2025-02-27 16:25:35 +00:00
B. Petersen 2e2aeed127 update deltachat-core-rust to 'chore(release): prepare for 1.156.0' of 'v1.156.0' 2025-02-27 17:25:10 +01:00
adbenitez 6e764a6f2f Merge remote-tracking branch 'upstream/main' 2025-02-27 00:10:57 +01:00
Hosted Weblate 669d8f4cba Merge remote-tracking branch 'origin/main' 2025-02-27 00:04:13 +01:00
adb d8cdc21880 Merge pull request #3624 from deltachat/adb/cleanup-AdvancedPreferenceFragment
cleanup AdvancedPreferenceFragment
2025-02-27 00:04:07 +01:00
Hosted Weblate c083195acf Merge remote-tracking branch 'origin/main' 2025-02-27 00:03:02 +01:00
adb 139dafab7a Merge pull request #3625 from deltachat/adb/cleanup-ChatsPreferenceFragment
cleanup ChatsPreferenceFragment
2025-02-27 00:02:56 +01:00
adbenitez ef8ac7ae04 Merge remote-tracking branch 'upstream/main' 2025-02-27 00:02:20 +01:00
Hosted Weblate 7c6d47bfae Merge remote-tracking branch 'origin/main' 2025-02-26 23:14:09 +01:00
adb 185fd5d730 Merge pull request #3623 from deltachat/adb/code-cleanup3
fix some more linter warnings
2025-02-26 23:14:04 +01:00
Hosted Weblate ef4f79b4a3 Merge remote-tracking branch 'origin/main' 2025-02-26 23:13:22 +01:00
adb c09be6c35b Merge pull request #3626 from deltachat/adb/cleanup-NotificationsPreferenceFragment
cleanup NotificationsPreferenceFragment
2025-02-26 23:13:13 +01:00
adbenitez 2a385c6768 cleanup NotificationsPreferenceFragment 2025-02-26 22:27:25 +01:00
adbenitez 93a114cff4 cleanup ChatsPreferenceFragment 2025-02-26 22:26:02 +01:00
adbenitez 49dab181aa cleanup AdvancedPreferenceFragment 2025-02-26 22:24:14 +01:00
adbenitez 3ad9ffd94f fix some linter warnings 2025-02-26 22:21:27 +01:00
adbenitez 53f1c73e52 cleanup ContactSelectionListAdapter 2025-02-26 20:17:10 +01:00
adbenitez 641c3da629 Merge remote-tracking branch 'upstream/main' 2025-02-26 19:57:23 +01:00
Hosted Weblate 491bbfade0 Merge remote-tracking branch 'origin/main' 2025-02-26 18:55:00 +00:00
adb f8dc6bb3db Merge pull request #3618 from deltachat/adb/code-cleanup-26/2/25
fix some linter warnings
2025-02-26 19:54:55 +01:00
adbenitez b0d842b3c4 Merge remote-tracking branch 'upstream/main' 2025-02-26 19:54:43 +01:00
adbenitez 9cc4422f9e Merge remote-tracking branch 'upstream/main' 2025-02-26 19:54:22 +01:00
Hosted Weblate dce7d56fb2 Merge remote-tracking branch 'origin/main' 2025-02-26 19:37:48 +01:00
adb 9b9a546e69 Merge pull request #3619 from deltachat/adb/remove-RepeatableImageKey
remove unused class RepeatableImageKey
2025-02-26 19:37:43 +01:00
Hosted Weblate 1787d8665c Merge remote-tracking branch 'origin/main' 2025-02-26 18:37:27 +00:00
adb f29f8bf5f9 Merge pull request #3617 from deltachat/adb/cleanup-ImageDivet
cleanup ImageDivet
2025-02-26 19:37:21 +01:00
adbenitez 3b7fd24fcb delete ImageDivet 2025-02-26 17:12:57 +01:00
adbenitez acdbba6351 cleanup ImageDivet 2025-02-26 17:12:57 +01:00
Hosted Weblate 2134f97956 Merge remote-tracking branch 'origin/main' 2025-02-26 16:57:08 +01:00
B. Petersen f45fd60ccd update translations 2025-02-26 16:57:01 +01:00
adbenitez dabe68fbf8 remove unused class RepeatableImageKey 2025-02-26 16:54:19 +01:00
adbenitez 7193b4d64e fix some linter warnings 2025-02-26 16:53:46 +01:00
Hosted Weblate bf138aa2e7 Merge remote-tracking branch 'origin/main' 2025-02-26 16:49:08 +01:00
B. Petersen b5000e2fb9 add second device: warn about 3rd parties
this PR adds a hint about making sure no 3rd party
can see the "Add Second Device" QR code.

the dialog and the hint are already used on all OS,
so that is a low hanging fruit -
(compared to other ideas of changing flow direction etc,
which we might go for at some point;
however, that would be lots of effort on all UI,
is tricky UX wise, will come with new bugs and other cornercases,
and are also not bullet save against careless users,
"hey, scan my QR code ... no, from 'Add Second Device, Next, Next ...'" :)
2025-02-26 16:49:04 +01:00
Hosted Weblate cbd4e2b520 Merge remote-tracking branch 'origin/main' 2025-02-26 12:00:18 +00:00
B. Petersen bf4087792d add strings 'delete for me/everyone' 2025-02-26 13:00:12 +01:00
B. Petersen 25164af440 tweak wording 2025-02-26 13:00:12 +01:00
B. Petersen 9579bd5bc8 reword message deletion string 2025-02-26 13:00:12 +01:00
Hosted Weblate 713623c11d Merge remote-tracking branch 'origin/main' 2025-02-25 23:48:31 +01:00
adb f2ee08a7f1 Merge pull request #3616 from deltachat/adb/cleanup-AvatarImageView
cleanup AvatarImageView
2025-02-25 23:48:25 +01:00
Hosted Weblate 66339d77bf Merge remote-tracking branch 'origin/main' 2025-02-25 22:48:14 +00:00
adb 1da80e9264 Merge pull request #3615 from deltachat/adb/fix-warnings-AccountSelectionListFragment
fix linter warnings in AccountSelectionListFragment
2025-02-25 23:48:07 +01:00
adbenitez f501c41d16 cleanup AvatarImageView 2025-02-25 23:18:17 +01:00
adbenitez ec7e3fc91a remove unused import 2025-02-25 22:22:04 +01:00
adbenitez 5e91902a26 fix linter warnings in AccountSelectionListFragment 2025-02-25 22:19:20 +01:00
Hosted Weblate 8b5b2d2f95 Merge remote-tracking branch 'origin/main' 2025-02-25 21:01:43 +01:00
adb 523b62cfeb Merge pull request #3614 from deltachat/adb/update-gson
update gson lib that was pinned for android4 compat
2025-02-25 21:01:37 +01:00
Hosted Weblate 19c158d1c4 Merge remote-tracking branch 'origin/main' 2025-02-25 20:54:49 +01:00
adb af1cbd09ce Merge pull request #3613 from deltachat/adb/optimize-imports
optimize imports
2025-02-25 20:54:45 +01:00
adbenitez 9b3dc7d434 update gson lib that was pinned for android4 compat 2025-02-25 18:57:48 +01:00
adbenitez 4547f771f5 optimize imports 2025-02-25 18:43:23 +01:00
Hosted Weblate be6f30da24 Merge remote-tracking branch 'origin/main' 2025-02-25 17:22:15 +00:00
adb bb0ae0772e Merge pull request #3612 from deltachat/adb/non-final-resource-ids
fix warning about non-final resource IDs
2025-02-25 18:22:09 +01:00
Hosted Weblate c38c5a5d36 Merge remote-tracking branch 'origin/main' 2025-02-25 16:55:01 +00:00
adb bd3ab20981 Merge pull request #3611 from deltachat/adb/cleanup-AccountSelectionListAdapter
cleanup AccountSelectionListAdapter
2025-02-25 17:54:53 +01:00
adbenitez 3dc216ca7f fix warning about non-final resource IDs 2025-02-25 17:46:09 +01:00
Hosted Weblate 9d9630041e Merge remote-tracking branch 'origin/main' 2025-02-25 17:40:14 +01:00
adb 5095892847 Merge pull request #3610 from deltachat/adb/remove-android4-deps
remove some android4 depenedencies
2025-02-25 17:40:05 +01:00
adbenitez 25d0f4d017 cleanup AccountSelectionListAdapter 2025-02-25 17:10:08 +01:00
adbenitez 3306c3e8d1 remove some android4 depenedencies 2025-02-25 16:53:49 +01:00
adbenitez fa0c59d01c add force encryption toggle 2025-02-24 23:07:50 +01:00
adbenitez 94291bd0ab Merge remote-tracking branch 'upstream/main' 2025-02-24 17:24:36 +01:00
Hosted Weblate ff0e004e20 Merge remote-tracking branch 'origin/main' 2025-02-22 20:07:55 +01:00
B. Petersen 415785b59d update translations 2025-02-22 20:07:52 +01:00
Hosted Weblate a8f17d618b Merge remote-tracking branch 'origin/main' 2025-02-22 20:00:56 +01:00
B. Petersen c0e45abd3d remove 'server' part from asking about message deletion 2025-02-22 20:00:52 +01:00
Hosted Weblate ca8767e0b0 Merge remote-tracking branch 'origin/main' 2025-02-20 23:47:10 +01:00
adb de96a4dc6e Merge pull request #3603 from deltachat/adb/update-forward-icon
update forward icon
2025-02-20 23:47:06 +01:00
Hosted Weblate 04d8437b89 Merge remote-tracking branch 'origin/main' 2025-02-20 23:28:49 +01:00
B. Petersen 38ed95003f removed unused setFile()
the corresponding cffi function will be removed soon,
see https://github.com/deltachat/deltachat-core-rust/pull/6558
2025-02-20 23:28:43 +01:00
adbenitez ca174e82a2 update forward icon 2025-02-20 22:05:32 +01:00
XblateX f08d5a64b0 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/uk/
2025-02-20 17:59:36 +01:00
Hosted Weblate d467285036 Merge remote-tracking branch 'origin/main' 2025-02-20 14:17:01 +00:00
B. Petersen 7b833b43d7 remove deprecated strings 2025-02-20 12:05:42 +01:00
B. Petersen f8cee59e28 use new 'edit message' strings 2025-02-20 12:05:42 +01:00
B. Petersen 2f85654567 update translations 2025-02-20 12:05:42 +01:00
Hosted Weblate 205a7fd10e Merge remote-tracking branch 'origin/main' 2025-02-19 16:50:19 +00:00
adb b0ab464ef8 Merge pull request #3600 from deltachat/adb/use-rpc-for-add-account
use JSON-RPC for addAccount
2025-02-19 17:50:11 +01:00
adbenitez c1a49332d0 use JSON-RPC for addAccount 2025-02-19 16:33:31 +01:00
adbenitez a69ff20ac4 point to Lemmy community for changelogs 2025-02-17 15:49:37 +01:00
Hosted Weblate ddd4cacd1d Merge remote-tracking branch 'origin/main' 2025-02-17 05:30:42 +01:00
adbenitez 836e11ca27 update build.gradle 2025-02-17 00:04:35 +01:00
adbenitez 4fc53a4632 Merge remote-tracking branch 'upstream/adb/issue-3591' 2025-02-16 22:42:13 +01:00
adbenitez 1391a902b0 update core 2025-02-16 22:36:45 +01:00
adbenitez 876bdcacf1 remove apklis store 2025-02-16 22:26:22 +01:00
adbenitez 37e6bbc53c Merge remote-tracking branch 'upstream/main' 2025-02-16 22:22:59 +01:00
adb ab05222c32 Merge pull request #3596 from deltachat/adb/cleanup-ApplicationPreferencesActivity
cleanup ApplicationPreferencesActivity
2025-02-16 22:19:04 +01:00
adbenitez e87a3de296 add "Donate" to settings 2025-02-16 22:18:36 +01:00
adbenitez 9d96d7311c revert removal of comments 2025-02-16 21:47:25 +01:00
adbenitez 52b7f10c1b cleanup ApplicationPreferencesActivity 2025-02-16 21:25:19 +01:00
adbenitez 3ae4bf238e Merge remote-tracking branch 'upstream/main' 2025-02-16 21:03:25 +01:00
adbenitez a630fad9b0 disable broadcast lists for chatmail 2025-02-14 01:50:23 +01:00
adbenitez 6543ad0893 update metadata 2025-02-13 23:54:11 +01:00
Hosted Weblate 4ca4d81345 Merge remote-tracking branch 'origin/main' 2025-02-12 20:32:50 +01:00
adb 3b8a3e10ad Merge pull request #3595 from deltachat/adb/allow-to-add-chat-to-home-screen
allow to add any chat to the home screen
2025-02-12 20:32:44 +01:00
adbenitez 814f892e98 allow to add any chat to the home screen 2025-02-12 18:05:22 +01:00
adbenitez 8a2149b67d hide the Encryption category completed for chatmail accounts 2025-02-11 21:54:50 +01:00
adbenitez ebfd9ca122 Merge remote-tracking branch 'upstream/main' 2025-02-11 15:33:30 +01:00
Hosted Weblate ba34971d2b Merge remote-tracking branch 'origin/main' 2025-02-11 13:08:53 +00:00
adb 91f8e88db3 Merge pull request #3592 from deltachat/prep-1.54.0
Prep 1.54.0
2025-02-11 14:08:47 +01:00
adb a93b12909d Update CHANGELOG.md
Co-authored-by: bjoern <r10s@b44t.com>
2025-02-11 14:07:59 +01:00
adbenitez 8403abc5b9 update version number 2025-02-11 11:49:17 +01:00
adbenitez c49599f9c8 update changelog 2025-02-11 11:48:55 +01:00
Hosted Weblate deed7a569c Merge remote-tracking branch 'origin/main' 2025-02-11 10:31:37 +00:00
adb ec590613d0 Merge pull request #3590 from deltachat/update-core-and-stuff-10/2/25
Update core and stuff 10/2/25
2025-02-11 11:31:31 +01:00
Hosted Weblate 24d1ca9015 Merge remote-tracking branch 'origin/main' 2025-02-11 11:31:01 +01:00
adb 0c914b3771 Merge pull request #3589 from deltachat/adb/fix-2957
direcly use awebp lib instead of broad glide plugin
2025-02-11 11:30:56 +01:00
adbenitez 24e363e130 update internal help and translations 2025-02-11 00:27:10 +01:00
adbenitez 85b9444f86 update deltachat-core-rust to 'chore(release): prepare for 1.155.4' of 'v1.155.4' 2025-02-10 23:43:01 +01:00
adbenitez 19f6bd3b5c use WebPDecoderResource instead of SimpleResource 2025-02-10 17:23:04 +01:00
adbenitez 1999bab9a0 direcly use awebp lib instead of broad glide plugin 2025-02-10 17:13:06 +01:00
Hosted Weblate e6325578ca Merge remote-tracking branch 'origin/main' 2025-02-08 20:25:30 +01:00
B. Petersen 44eb9b32fd fix: hide 'clone chat' if there is no chat
before, 'clone chat' was hidden for contacts having a one-to-one-chats,
but not for contacts _without_ a one-to-one-chat
2025-02-08 20:25:25 +01:00
adbenitez c5cf11d36a update core 2025-02-07 19:08:49 +01:00
adbenitez fc36c6793e Merge remote-tracking branch 'upstream/main' 2025-02-07 19:08:10 +01:00
Hosted Weblate 669a1a769d Merge remote-tracking branch 'origin/main' 2025-02-07 18:43:47 +01:00
adb 257e200c9c Merge pull request #3073 from deltachat/r10s/improve-saved-messages
improve saved messages
2025-02-07 18:43:41 +01:00
adb 2c2bd2bf48 Merge branch 'main' into r10s/improve-saved-messages 2025-02-07 18:15:37 +01:00
adbenitez 95fbe25b0a rename variables to "bookmark" instead "stared" 2025-02-07 18:14:21 +01:00
Hosted Weblate ab7b2f4b1b Merge remote-tracking branch 'origin/main' 2025-02-07 15:51:32 +01:00
link2xt 97552bc751 Add "Past Members" string 2025-02-07 15:51:26 +01:00
adb a81cdb79ad Merge pull request #3586 from deltachat/adb/improve-saved-messages
improve improved saved messages
2025-02-07 15:22:55 +01:00
adbenitez 1b8de09c41 replace star with bookmark icon 2025-02-07 13:58:31 +01:00
adbenitez db427a036e use drawable for the stared footer mark 2025-02-07 13:02:53 +01:00
adbenitez ab2151b974 fix indentation 2025-02-07 12:40:55 +01:00
adbenitez 0fa59fa22d remove save/unsave action 2025-02-07 12:39:55 +01:00
adbenitez ec7807e662 use save API for msgs forwarded to "saved messages" 2025-02-07 12:26:16 +01:00
adbenitez d47196d899 add "jump to original" button to stared messages 2025-02-06 23:43:43 +01:00
adbenitez b692abc235 don't allow to star video-call messages 2025-02-06 20:44:09 +01:00
Hosted Weblate 07b55b739e Merge remote-tracking branch 'origin/main' 2025-02-06 12:46:26 +00:00
Hocuri e3809cf1f8 fix: Opening files in external apps always works now (#3585)
The problem was that we returned `null` from `getType()`.

fix #3517
2025-02-06 13:46:19 +01:00
adbenitez 564c0fe27d don't show staring option in saved messages chat 2025-02-05 22:38:16 +01:00
adbenitez 705e283cf5 Merge remote-tracking branch 'upstream/main' 2025-02-05 21:56:21 +01:00
adbenitez 40b5e10999 remove unused code 2025-02-05 21:54:18 +01:00
B. Petersen d1f77d9de5 add 'save' option to chat's action bar 2025-02-05 16:34:43 +01:00
B. Petersen 0704f7f1e7 render saved messages accordingly 2025-02-05 16:34:43 +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
Hosted Weblate 084707eb67 Merge remote-tracking branch 'origin/main' 2025-02-05 15:55:23 +01:00
adb 0eb02b59a3 Merge pull request #3582 from deltachat/adb/remove-deprecated-half-camera-dep
remove deprecated half-camera dependency
2025-02-05 15:55:19 +01:00
Hosted Weblate 00d411dd5a Merge remote-tracking branch 'origin/main' 2025-02-05 12:36:19 +01:00
bjoern 770861d6db update translations (#3584)
* remove deprecated strings, usage was checked with ./scripts/grep-string.sh

* add new 'Chat with...', needed currently only for iOS

* update translations
2025-02-05 12:36:14 +01:00
adb 17986e9d86 Merge branch 'main' into adb/remove-deprecated-half-camera-dep 2025-02-04 18:45:49 +01:00
adbenitez 5ce1f415ce remove deprecated half-camera dependency 2025-02-04 18:40:02 +01:00
adbenitez e1c92712a0 Merge remote-tracking branch 'upstream/main' 2025-02-04 16:18:00 +01:00
Hosted Weblate 1816a50dee Merge remote-tracking branch 'origin/main' 2025-02-03 23:41:19 +01:00
adb 6ec0f1bfce Merge pull request #3580 from deltachat/adb/issue-3566
align avatar to message bubble instead of parent bottom
2025-02-03 23:41:12 +01:00
adbenitez db410d8b44 align avatar to message bubble instead of parent bottom 2025-02-03 23:08:32 +01:00
Hosted Weblate 6c6c04ba53 Merge remote-tracking branch 'origin/main' 2025-02-03 10:58:11 +00:00
B. Petersen cd07f3de96 update translations 2025-02-03 11:58:06 +01:00
Hosted Weblate 145432a57d Merge remote-tracking branch 'origin/main' 2025-02-03 11:52:01 +01:00
B. Petersen 12072a0342 'exiting' may be misleading as others can create new groups with blocked contacts. try to clarify that aspect 2025-02-03 11:51:58 +01:00
B. Petersen c6f3761bb9 simplify unblock wording, it is somehow clear it is the opposite, other apps do not even clarify one way 2025-02-03 11:51:58 +01:00
B. Petersen 673f0e78b1 be more clear about the impact of blocked contacts 2025-02-03 11:51:58 +01:00
Hosted Weblate 20acd38ab4 Merge remote-tracking branch 'origin/main' 2025-02-03 11:45:23 +01:00
B. Petersen 65c8960ec8 update translations 2025-02-03 11:45:19 +01:00
Hosted Weblate bf7095d0ee Merge remote-tracking branch 'origin/main' 2025-02-03 00:49:08 +01:00
adb 089ecc67d1 Merge pull request #3576 from deltachat/r10s/empty-apps-wording
tweak wording in empty "all apps" and "all files" views
2025-02-03 00:49:01 +01:00
B. Petersen 0f84af5b32 adapt empty-hint also for 'files' 2025-02-02 18:52:31 +01:00
B. Petersen 710ed6dd56 in 'All Apps' tap, do not say 'Media will be shared here', but 'Apps will be shown here' 2025-02-02 18:37:49 +01:00
Hosted Weblate a6b168f4eb Merge remote-tracking branch 'origin/main' 2025-02-01 00:24:51 +01:00
adb 335aabd4ff Merge pull request #3570 from deltachat/adb/update-changelog-31/1/25
update changelog header for v1.52.1
2025-02-01 00:24:47 +01:00
adbenitez 98c97a8aed update changelog header for v1.52.1 2025-01-31 22:24:44 +01:00
adbenitez 23d18d2ac5 Merge remote-tracking branch 'upstream/main' 2025-01-31 21:28:47 +01:00
adbenitez a136b8b1e5 update version 2025-01-31 21:28:08 +01:00
adbenitez 7f8b71cf28 tweak attachment selector layout temporarily 2025-01-31 21:27:19 +01:00
adbenitez 9e5f2b18b9 update .github/FUNDING.yml 2025-01-31 19:50:37 +01:00
adbenitez bdfeddecd5 add "get it on google play" 2025-01-31 14:19:32 +01:00
Hosted Weblate 883536a3a5 Merge remote-tracking branch 'origin/main' 2025-01-31 12:38:01 +01:00
B. Petersen 23cbe63cd4 update translations 2025-01-31 12:37:57 +01:00
Hosted Weblate 3013af2a7a Merge remote-tracking branch 'origin/main' 2025-01-31 11:26:16 +00:00
B. Petersen f0f53455a5 do not deprecate string for smoother adaption of other OS 2025-01-31 12:26:09 +01:00
B. Petersen d8b49f57a9 always colorize 'Reset' as destructive-red 2025-01-31 12:26:09 +01:00
B. Petersen 7eaaf3bbb4 refine QR reset wording 2025-01-31 12:26:09 +01:00
adbenitez d4f83cd38b Merge remote-tracking branch 'upstream/main' 2025-01-30 02:03:47 +01:00
adbenitez 9eca5f518e disable location streaming for now 2025-01-30 02:02:42 +01:00
Hosted Weblate 7b52bb6c85 Merge remote-tracking branch 'origin/main' 2025-01-29 13:47:12 +00:00
B. Petersen d17bed02e6 update translations 2025-01-29 14:47:03 +01:00
B. Petersen b4b194a59b add app-picker-strings needed for iOS 2025-01-29 14:47:03 +01:00
Hosted Weblate 1439bc0a86 Merge remote-tracking branch 'origin/main' 2025-01-28 17:24:30 +01:00
adb c6f62a2b81 Merge pull request #3565 from deltachat/prep-1.52.1
Prep 1.52.1
2025-01-28 17:24:22 +01:00
adbenitez e3a9f42a56 update changelog 2025-01-28 17:23:56 +01:00
adb 323bcef1fe Update CHANGELOG.md
Co-authored-by: Hocuri <hocuri@gmx.de>
2025-01-28 17:13:54 +01:00
adbenitez 095b92b498 bump version number 2025-01-28 16:50:46 +01:00
adbenitez 18c2ccd66c update changelog 2025-01-28 16:36:39 +01:00
Hosted Weblate 9a5415eb66 Merge remote-tracking branch 'origin/main' 2025-01-28 15:31:22 +00:00
adb 28fdeac01c Merge pull request #3564 from deltachat/update-core-and-stuff-28/1/25
Update translations and core to 1.155.1
2025-01-28 16:31:11 +01:00
adbenitez a7e4267b9b update translations 2025-01-28 16:28:24 +01:00
adbenitez d6837aa121 update deltachat-core-rust to 'chore(release): prepare for 1.155.1' of 'v1.155.1' 2025-01-28 16:25:23 +01:00
adbenitez 5a2913b36f delete unused file 2025-01-28 02:37:25 +01:00
adbenitez 20180fa89c Merge remote-tracking branch 'upstream/main' 2025-01-27 22:06:04 +01:00
Hosted Weblate 5da3748a6a Merge remote-tracking branch 'origin/main' 2025-01-27 17:40:51 +00:00
Hocuri c6b89055d8 File deduplication, Android part (#3513) 2025-01-27 18:40:44 +01:00
Hosted Weblate 2308feea8c Merge remote-tracking branch 'origin/main' 2025-01-27 18:13:08 +01:00
adb bfda7ab2c3 Merge pull request #3562 from deltachat/adb/remove-android-crop-dep
remove unused com.soundcloud.android:android-crop dependency
2025-01-27 18:13:04 +01:00
adb 953ce32bea Merge branch 'main' into adb/remove-android-crop-dep 2025-01-27 17:40:34 +01:00
adbenitez 961fa5ffe6 remove unused com.soundcloud.android:android-crop dependency 2025-01-27 17:37:14 +01:00
adbenitez b1b2959bcb add .github/FUNDING.yml 2025-01-26 05:23:27 +01:00
Hosted Weblate a3b0ee1ef9 Merge remote-tracking branch 'origin/main' 2025-01-25 13:48:46 +00:00
link2xt 70ef715dc6 build(nix): update build tools from 33.0.1 to 34.0.0 2025-01-25 13:48:41 +00:00
adbenitez ffa58aae34 update bots index 2025-01-24 22:09:54 +01:00
adbenitez 24f5209c03 always create protected groups 2025-01-24 20:34:49 +01:00
adbenitez 7fd96732d6 Merge remote-tracking branch 'upstream/main' 2025-01-24 20:27:40 +01:00
Hosted Weblate 4fa5f1f5c6 Merge remote-tracking branch 'origin/main' 2025-01-23 23:37:05 +01:00
adb 6e0759f719 Merge pull request #3560 from deltachat/prep-1.52.0
prepare 1.52.0
2025-01-23 23:37:01 +01:00
adbenitez 63434e1e2f prepare 1.52.0 2025-01-23 20:03:59 +01:00
Hosted Weblate f4701b92e2 Merge remote-tracking branch 'origin/main' 2025-01-23 19:28:06 +01:00
adb 9c17bc412a Merge pull request #3559 from deltachat/update-core-and-stuff-23/1/25
Update core and stuff 23/1/25
2025-01-23 19:21:15 +01:00
adb d40144d50c Merge branch 'main' into update-core-and-stuff-23/1/25 2025-01-23 19:19:43 +01:00
adbenitez 131c0f5a37 update strings 2025-01-23 19:17:18 +01:00
adbenitez 7086314d8b update deltachat-core-rust to 'chore(release): prepare for 1.155.0' of 'v1.155.0' 2025-01-23 19:11:11 +01:00
Hosted Weblate 6649165b56 Merge remote-tracking branch 'origin/main' 2025-01-23 13:23:08 +01:00
adb d75b2c2bb7 Merge pull request #3558 from deltachat/adb/issue-3557
pass account ID in chat shortcuts and properly switch to account
2025-01-23 13:23:00 +01:00
adbenitez c46d174869 update strings 2025-01-23 05:37:55 +01:00
adbenitez 17e03f2903 update buid.gradle 2025-01-23 04:38:58 +01:00
adbenitez 2c12a34051 improve instant onboarding 2025-01-23 04:33:23 +01:00
adbenitez 2d3dde2101 pass account ID in chat shortcuts and properly switch to account 2025-01-23 03:45:57 +01:00
adbenitez d539f5ecf2 Merge remote-tracking branch 'upstream/main' 2025-01-23 02:45:56 +01:00
adbenitez b17d6be4fc update build.gradle 2025-01-23 00:52:48 +01:00
Hosted Weblate 1c9b5977a8 Merge remote-tracking branch 'origin/main' 2025-01-23 00:51:15 +01:00
B. Petersen 3c737f2360 streamline help menu
- use clear "Delta Chat Homepage" for opening our homepage
  (instead of unclear "Learn more about Delta Chat",
  which is esp. weird, when used from inside the help)

- do not "promote" GitHub in our menu entry,
  instead of "Contribute on GitHub", just say "Contribute".
  destination URL is our contribute page then -
  that is also more useful for ppl doing eg. translations
2025-01-23 00:51:06 +01:00
Hosted Weblate 49471999b9 Merge remote-tracking branch 'origin/main' 2025-01-22 13:40:13 +01:00
adb 9ac5e714b8 Merge pull request #3555 from deltachat/adb/update-deps-22/1/25
update some dependencies
2025-01-22 13:40:08 +01:00
adbenitez 94defa3091 update some dependencies 2025-01-22 01:43:21 +01:00
adbenitez 052ada221e update some deps 2025-01-22 01:42:21 +01:00
adbenitez 1d5e4cf2a9 update README 2025-01-22 00:54:00 +01:00
adbenitez c46aef3ea0 Merge remote-tracking branch 'upstream/main' 2025-01-22 00:52:57 +01:00
Hosted Weblate 86a8fbf463 Merge remote-tracking branch 'origin/main' 2025-01-21 20:09:55 +01:00
adb d30e141693 Merge pull request #3554 from deltachat/adb/issue-3542
avoid crash in MediaPreviewActivity.onPageUnselected
2025-01-21 20:09:51 +01:00
adb 305940396e Merge branch 'main' into adb/issue-3542 2025-01-21 19:39:33 +01:00
adbenitez 2ab567a9d3 use Log instead of stack trace 2025-01-21 19:38:43 +01:00
Hosted Weblate 238ec5b299 Merge remote-tracking branch 'origin/main' 2025-01-21 19:01:25 +01:00
adb a9c488ff03 Merge pull request #3365 from deltachat/adb/issue-3361
revert #3177
2025-01-21 19:01:18 +01:00
adbenitez 8817b50c95 avoid crash in MediaPreviewActivity.onPageUnselected 2025-01-21 18:56:59 +01:00
Hosted Weblate 4c810c2b50 Merge remote-tracking branch 'origin/main' 2025-01-21 18:51:22 +01:00
adb 84c3710a35 Merge pull request #3553 from deltachat/adb/issue-3550
avoid ANR in ConversationFragment.manageMessageSeenState()
2025-01-21 18:51:00 +01:00
adbenitez be7be9bba4 avoid ANR in ConversationFragment.manageMessageSeenState() 2025-01-21 18:13:54 +01:00
Hosted Weblate f4d5547da7 Merge remote-tracking branch 'origin/main' 2025-01-21 16:47:35 +00:00
adb b50ae284fb Merge pull request #3551 from deltachat/adb/issue-3549
fix: make animated webp animated again
2025-01-21 17:38:52 +01:00
adbenitez 97716d5c26 fix: make animated webp animated again 2025-01-21 16:57:03 +01:00
Hosted Weblate 52850c25b0 Merge remote-tracking branch 'origin/main' 2025-01-20 15:15:02 +01:00
bjoern e77253c843 update translations (#3548)
* add string 'Unsave'

* pull translations
2025-01-20 15:14:54 +01:00
adbenitez 6aed8d003f deprecate string 2025-01-18 20:53:56 +01:00
adbenitez 0083e60c49 revert #3177 2025-01-18 20:53:56 +01:00
adbenitez 0fc79fd845 Merge remote-tracking branch 'upstream/main' 2025-01-18 20:39:03 +01:00
Hosted Weblate 5117e103bb Merge remote-tracking branch 'origin/main' 2025-01-17 16:40:42 +00:00
B. Petersen a7c3bc7ac5 add missing desktop strings 2025-01-17 17:40:35 +01:00
Hosted Weblate 056f9bd4fb Merge remote-tracking branch 'origin/main' 2025-01-17 09:39:28 +00:00
B. Petersen 83b16e5f4b do not force ppl to create blank issues
see https://github.com/deltachat/deltachat-ios/pull/2525
for screenshots and reasoning
2025-01-17 10:39:10 +01:00
adbenitez ee17c6d75e Merge remote-tracking branch 'upstream/main' 2025-01-16 21:10:25 +01:00
Hosted Weblate 877989b5c1 Merge remote-tracking branch 'origin/main' 2025-01-16 20:42:46 +01:00
adb c0525ac69c Merge pull request #3544 from deltachat/adb/issue-3543
avoid null in attachment filename
2025-01-16 20:42:41 +01:00
adbenitez e9d2a39098 avoid null in attachment filename 2025-01-16 20:03:43 +01:00
Hosted Weblate eef8609a66 Merge remote-tracking branch 'origin/main' 2025-01-16 14:55:13 +01:00
adb 4d6fd16767 Merge pull request #3541 from deltachat/adb/issue-3540
avoid race condition in onPlayerStateChanged inside AudioSlidePlayer.requestDuration
2025-01-16 14:55:07 +01:00
Andrea Enzo Lattmann b43685bcdf Translated using Weblate (Italian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/it/
2025-01-16 06:58:09 +01:00
Hosted Weblate 794062b9ed Merge remote-tracking branch 'origin/main' 2025-01-15 21:02:08 +01:00
adb b398870823 Merge pull request #3535 from deltachat/adb/issue-3534
fix IntentUtils.showBrowserIntent() and use it everywhere
2025-01-15 21:02:01 +01:00
adbenitez e68c50d614 avoid race condition in onPlayerStateChanged inside AudioSlidePlayer.requestDuration 2025-01-15 20:56:32 +01:00
adbenitez f6a27718a2 rename showBrowserIntent to showInBrowser 2025-01-15 20:33:16 +01:00
Hosted Weblate 876721fae5 Merge remote-tracking branch 'origin/main' 2025-01-15 16:18:50 +00:00
Hocuri f136fa3e3a Update the core submodule so that we can have nightlies again (#3539)
* Remove jsonrpc feature

* Update submodule to latest main
2025-01-15 16:18:43 +00:00
Hosted Weblate 0fdac57c68 Merge remote-tracking branch 'origin/main' 2025-01-15 16:40:55 +01:00
Hocuri 8e55a3dbf3 fix: Use getFilename() instead of the actual filename on disk (#3521)
* fix: Use msg.getFilename() instead of the file's name in some cases

* fix: Use msg.getFilename() instead of the file's name in initializeDraft()

* fix: Use msg.getFilename() instead of the file's name in MediaItem

* fix: Use the correct file name in MediaView

* refactor: `msg` param of `getManuallyCalculatedSlideInfo()` was always null

* Improve comment

* Revert "refactor: `msg` param of `getManuallyCalculatedSlideInfo()` was always null"

We will unfortunately need getManuallyCalculatedSlideInfo() with `msg`
param

This reverts commit 60e8248db32dc22812d3f23da194bab644802045.

* fix: Fix drafting images

This fixes a bug introduced in 14f69f87e8b11a7d0568e58593946a1f1c01e75e:
When you drafted an image, pressed Back, and opened the chat again, then
the height of the drafted image was wrong and tapping the image opened a
preview for the wrong image.

I do think that theoretically it would be nicer to use getSlideForMsg
here, because we already have a DcMsg, but this didn't work because a)
the width and height wasn't gotten from the msg and instead 0 was passed
and b) the code tries to save a msgId instead of the message instead,
and loading the message from the database fails later since it's just a
draft.

I didn't want to try and fix these things, because they might be bigger
refactorings and I don't know the code.

* fix: Use the original message's filemime if there is one

...instead of trying to guess the mimetype from the uri
2025-01-15 16:40:23 +01:00
Hosted Weblate b3375f4f19 Merge remote-tracking branch 'origin/main' 2025-01-14 11:49:13 +01:00
B. Petersen 923227a0e8 update translations 2025-01-14 11:49:07 +01:00
adbenitez 14ecafe0e2 fix IntentUtils.showBrowserIntent() and use it everywhere 2025-01-11 19:45:37 +01:00
Hosted Weblate b607ca21ff Merge remote-tracking branch 'origin/main' 2025-01-10 18:37:43 +00:00
adb b93f8323ab Merge pull request #3532 from deltachat/prep-1.50.5
prepare 1.50.5 release
2025-01-10 19:37:38 +01:00
adbenitez 77f43cde9a prepare 1.50.5 release 2025-01-10 18:48:53 +01:00
Hosted Weblate d6efa3c7e5 Merge remote-tracking branch 'origin/main' 2025-01-10 18:45:16 +01:00
adb e4d018393d Merge pull request #3531 from deltachat/adb/update-translations-10/01/25
update translations
2025-01-10 18:44:58 +01:00
adbenitez 9a816090de Merge remote-tracking branch 'upstream/main' 2025-01-10 18:44:47 +01:00
adbenitez 4b04aa65be update translations 2025-01-10 18:42:31 +01:00
Hosted Weblate e461e2f7f1 Merge remote-tracking branch 'origin/main' 2025-01-10 17:26:19 +01:00
B. Petersen 489bb55788 detach Android and iOS releases 2025-01-10 17:26:16 +01:00
Hosted Weblate 684f8834fa Merge remote-tracking branch 'origin/main' 2025-01-10 15:06:19 +00:00
adb 9d244611bc Merge pull request #3526 from deltachat/adb/issue-3525
use synchronized block to avoid IllegalMonitorStateException
2025-01-10 16:06:13 +01:00
Hocuri 3533916149 Put the synchronized around the whole while loop 2025-01-10 11:05:44 +01:00
adbenitez 46bc3e7f72 Merge remote-tracking branch 'upstream/main' 2025-01-10 01:36:50 +01:00
adbenitez ed0f0107e3 update to new gplay app id and key 2025-01-10 01:31:42 +01:00
adbenitez a855d7043a fix FetchForegroundService 2025-01-10 00:49:30 +01:00
adbenitez 66fd795763 try to fix CI 2025-01-09 19:06:15 +01:00
Hosted Weblate b440a31820 Merge remote-tracking branch 'origin/main' 2025-01-09 19:03:24 +01:00
B. Petersen 05da43484f remove deprecated strings 2025-01-09 19:03:21 +01:00
adbenitez a58de2278b use synchronized block to avoid IllegalMonitorStateException 2025-01-09 18:36:12 +01:00
adbenitez 6743df23e9 update google-services.json 2025-01-09 18:01:16 +01:00
Hosted Weblate 568a3f383f Merge remote-tracking branch 'origin/main' 2025-01-09 15:08:25 +00:00
bjoern 35ec0d05e2 update translations (#3524)
* add new iOS notification strings

* update translations
2025-01-09 16:08:18 +01:00
Hosted Weblate 6c212a5d3d Merge remote-tracking branch 'origin/main' 2025-01-09 15:26:46 +01:00
bjoern 6ead7207ec update translations (#3522)
* update translations

* add new iOS widget strings

* add hints for terms 'Shortcut' and 'Widget'

* update translations
2025-01-09 15:26:42 +01:00
adbenitez 0d5223036d Merge remote-tracking branch 'upstream/main' 2025-01-07 16:36:45 +01:00
adbenitez 640fc433b8 add gdpr.md 2025-01-07 16:29:03 +01:00
adbenitez 35d814c3f6 update build.gradle 2025-01-06 21:26:22 +01:00
adbenitez f8b9d2b0d9 update core 2025-01-06 20:50:30 +01:00
Hosted Weblate b6e43a6994 Merge remote-tracking branch 'origin/main' 2025-01-06 14:40:59 +00:00
adb 3390b865e0 Merge pull request #3519 from deltachat/prep-1.50.4
Prep 1.50.4
2025-01-06 15:40:55 +01:00
adbenitez 883486da9c tweak changelog 2025-01-06 15:26:49 +01:00
adbenitez d048203f45 update version number 2025-01-06 15:19:17 +01:00
adbenitez f9d70d1196 update changelog 2025-01-06 15:18:54 +01:00
Hosted Weblate d1f85e6dc4 Merge remote-tracking branch 'origin/main' 2025-01-06 14:58:18 +01:00
adb 4413b7b4fb Merge pull request #3518 from deltachat/update-core-and-stuff-6/1/25
Update translations and core to v1.153.0
2025-01-06 14:58:14 +01:00
adbenitez 7a4f263a62 update translations 2025-01-06 14:55:55 +01:00
adbenitez 1a360d5282 update deltachat-core-rust to 'chore(release): prepare for 1.153.0' of 'v1.153.0' 2025-01-06 14:16:09 +01:00
Hosted Weblate 74ef8dc1c6 Merge remote-tracking branch 'origin/main' 2025-01-04 18:13:50 +00:00
Hocuri dc785fc116 fix: Remove long stacktrace that flooded the logcat (#3512)
Everytime I attached an image, I got a super long stacktrace in the
logcat. I found it to be [this problem](https://stackoverflow.com/questions/71746801/getting-failed-to-inflate-colorstatelist-leaving-it-to-the-framework-when-usi)
and applied the fix described there.
2025-01-04 19:13:45 +01:00
adbenitez 009593f7cc remove dead code 2025-01-04 16:06:40 +01:00
Hosted Weblate 1da2d35af4 Merge remote-tracking branch 'origin/main' 2025-01-04 16:02:53 +01:00
adb 884be3a93e Merge pull request #3516 from deltachat/adb/avoid-npe-in-reactions
avoid NullPointerException when using result of Rpc.getMsgReactions
2025-01-04 16:02:49 +01:00
adbenitez 9a25328787 avoid NullPointerException when using result of Rpc.getMsgReactions 2025-01-04 12:50:25 +01:00
adbenitez 2d8ec490b1 Merge remote-tracking branch 'upstream/main' 2025-01-04 12:21:28 +01:00
Hosted Weblate bb3f4a2e06 Merge remote-tracking branch 'origin/main' 2025-01-03 19:58:58 +01:00
B. Petersen 3b19ca99e1 simpler copyright, it is anyways questionable by law, it is just a hint, that there is 'sth', this will do also without year 2025-01-03 19:58:55 +01:00
Hosted Weblate 8e4c5d6b63 Merge remote-tracking branch 'origin/main' 2025-01-03 16:48:55 +01:00
B. Petersen f751a48568 update local help 2025-01-03 16:48:52 +01:00
B. Petersen 4549989a63 update translations 2025-01-03 16:48:52 +01:00
Hosted Weblate 1b46edaddf Merge remote-tracking branch 'origin/main' 2025-01-03 14:04:14 +00:00
B. Petersen 19e2c4e051 add info string that is shown by iOS system when asking for accessing Face ID 2025-01-03 15:03:54 +01:00
தமிழ்நேரம் aa0c72356f Translated using Weblate (Tamil)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/ta/
2024-12-21 09:00:22 +01:00
adbenitez 6f5e90be53 update build.gradle 2024-12-21 03:11:47 +01:00
adbenitez 34fa0620ab update full_description 2024-12-21 03:04:53 +01:00
adbenitez fe37af1a3f allow to jump to POI 2024-12-21 02:54:54 +01:00
adbenitez 3459802d67 update core 2024-12-20 19:52:40 +01:00
adbenitez b8bf847941 fix contact selection list 2024-12-20 19:51:59 +01:00
adbenitez 5b6024584a force sending sticker 2024-12-20 17:47:45 +01:00
Hosted Weblate ee8fd429f4 Merge remote-tracking branch 'origin/main' 2024-12-20 11:41:04 +00:00
adb 4833a44542 Merge pull request #3509 from deltachat/adb/issue-3488
try to avoid FILL500 getting stuck in some devices
2024-12-20 12:40:59 +01:00
adbenitez eb93e2bb7e add comment 2024-12-19 16:39:52 +01:00
adbenitez 291700dfc7 update lastOpenTime in onDestroy() 2024-12-19 16:30:58 +01:00
adbenitez 7a4913b394 tweak code 2024-12-19 15:52:16 +01:00
adbenitez 0dae71f4b7 try to avoid FILL500 getting stuck in some devices 2024-12-19 15:48:57 +01:00
Hosted Weblate bc022f5196 Merge remote-tracking branch 'origin/main' 2024-12-19 13:30:30 +01:00
Hocuri 08e4229533 Make the attachment background the same as the input bar background (#3477)
* Make the attachment background the same as the input bar background

Two different users recently complained that they find drafting images confusing. One of them thought that they had already sent it, the other one didn't know how to send it (both of them figured it out after ~10s, but still, it's nicer to avoid such confusion). In both cases, the problem was that the background of the attached file is the same as the chat background, not the same as the input bar, even though the attached file belongs to the input bar and not to the chat.

* Add a stroke around the to-be attachment
2024-12-19 13:30:24 +01:00
adbenitez 101a31628d lowercase Bot string for English and Spanish 2024-12-18 19:34:29 +01:00
adbenitez 2a2ce883b4 Merge remote-tracking branch 'upstream/main' 2024-12-18 19:33:04 +01:00
adbenitez 5a0e26bdb5 show last-seen status in contact list 2024-12-18 19:20:34 +01:00
Hosted Weblate d4dcdcf3bd Merge remote-tracking branch 'origin/main' 2024-12-18 17:31:48 +00:00
B. Petersen 0c9277dfd0 remove email-address unconditionally from title
the email-address was removed for guaranteed-e2ee chats quite a while ago
(https://github.com/deltachat/deltachat-android/pull/2916) reason was, among others,
that these addresses are often chatmail and therefore random.
(despite expecting otherwise, that was fine for most users).

this PR removes the email-adress unconditionally:

- having the email-address sometimes shown and sometimes not is confusing,
  and easily looks like a bug.
  this has become worse with the added vcard-support
  (before, there were rare non-guaranteed chats in chatmail) -
  resulting in more random addresses being shown

- _always_ protect against over-the-shoulder attacks

- better privacy in screenshots sent around without thinking much before
  (cmp. https://github.com/deltachat/deltachat-ios/pull/2329)

- wrt impersonation attacks:
  the pure email address in the subtitle did never protect against impersonation,
  one could always get sth. trustworthy looking there,
  it is better to check the profile with additional information (eg. other chats) if in doubt

- general cleaner, uncluttered layout

- pave the way of the upcoming multi-addresses

drawback is that sometimes one more tap is needed to access the email-address -
however, as it is _always_ one tap away now,
this can also go easily to the finger memory.
2024-12-18 18:31:43 +01:00
Hosted Weblate 74b2369ca9 Merge remote-tracking branch 'origin/main' 2024-12-18 17:19:37 +01:00
adb 37886cf296 Merge pull request #3506 from deltachat/adb/issue-3502
run SendRelayedMessageUtil.sendMultipleMsgs() in background
2024-12-18 17:19:34 +01:00
adbenitez df5ba2eced call SendRelayedMessageUtil.sendMultipleMsgs() in background 2024-12-18 17:17:46 +01:00
adbenitez 3c2ddb96b3 update full_description 2024-12-18 16:04:30 +01:00
Hosted Weblate 9eafdbd817 Merge remote-tracking branch 'origin/main' 2024-12-18 15:41:48 +01:00
Hocuri e2a825dfb2 fix(ANR): Mark messages as seen asynchronously (#3505)
Mark messages as seen in a background thread instead of on the UI
thread in order to fix #3504.
2024-12-18 15:41:44 +01:00
Hosted Weblate 0a21d1d1b4 Merge remote-tracking branch 'origin/main' 2024-12-18 13:19:55 +01:00
Hocuri 8d49c7e595 fix: Fetch synchronously in the background if no foreground service is allowed (#3501)
Fix #3500.
2024-12-18 13:19:47 +01:00
Hosted Weblate b0cb6c73ba Merge remote-tracking branch 'origin/main' 2024-12-17 17:43:26 +01:00
B. Petersen 966d5dac24 do not lowercase string 'Bot'
it is regarded as a bug
and esp. weird in translations.

it was regarded to be a bit 'nerdy' that time to write it lowercase,
but it seems we have to get more serious now.
2024-12-17 17:43:21 +01:00
Максим Горпиніч b6367416e5 Translated using Weblate (Ukrainian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/uk/
2024-12-17 17:21:37 +01:00
Hosted Weblate 0b582dd287 Merge remote-tracking branch 'origin/main' 2024-12-17 17:07:06 +01:00
adb 7f684f4d2e Merge pull request #3499 from deltachat/adb/issue-3498
avoid IllegalArgumentException dismissing dialog
2024-12-17 17:07:03 +01:00
Hosted Weblate d5cf919bcb Merge remote-tracking branch 'origin/main' 2024-12-17 16:32:48 +01:00
adb 1510f7f3a8 Merge pull request #3497 from deltachat/adb/issue-3496
avoid NPE in ConversationListActivity.onNewIntent()
2024-12-17 16:32:45 +01:00
adbenitez 6916becf7f avoid IllegalArgumentException dismissing dialog 2024-12-17 16:13:37 +01:00
adbenitez ad5b496f5c avoid NPE in ConversationListActivity.onNewIntent() 2024-12-17 15:00:25 +01:00
Hosted Weblate 490f1efe36 Merge remote-tracking branch 'origin/main' 2024-12-17 14:47:49 +01:00
adb e647401db4 Merge pull request #3491 from deltachat/adb/issue-3490
improve emoji pickers
2024-12-17 14:47:43 +01:00
adbenitez 3113f9c3ab optimize onConfigurationChanged() 2024-12-16 17:19:34 +01:00
adbenitez a1e47865c5 improve emoji pickers 2024-12-16 15:27:13 +01:00
adbenitez 3a5f9b3fed update app name to avoid confusion in f-droid 2024-12-13 22:48:31 +01:00
adbenitez 5ffbc19d03 Merge remote-tracking branch 'upstream/main' 2024-12-13 22:42:20 +01:00
Hosted Weblate c125d4fa24 Merge remote-tracking branch 'origin/main' 2024-12-13 20:12:12 +01:00
adb d9db4b818a Merge pull request #3487 from deltachat/prep-1.50.3
Prepare 1.50.3
2024-12-13 20:12:04 +01:00
adbenitez 693efdbd0f add back device message 2024-12-13 20:10:45 +01:00
adbenitez 399b783437 update changelog 2024-12-13 19:30:34 +01:00
adbenitez 4bc574dfbe change version name 2024-12-13 19:29:47 +01:00
adbenitez 294af0981d disable previous version's device message 2024-12-13 18:28:25 +01:00
adbenitez e8c7014993 update changelog 2024-12-13 18:27:25 +01:00
adbenitez 0edc8303c1 update version number 2024-12-13 14:21:20 +01:00
Hosted Weblate 389098699a Merge remote-tracking branch 'origin/main' 2024-12-13 13:12:47 +00:00
adb 8c89c3e225 Merge pull request #3484 from deltachat/adb/issue-3479
download .xdc files in background
2024-12-13 14:12:42 +01:00
Hosted Weblate df696e5fab Merge remote-tracking branch 'origin/main' 2024-12-13 14:00:16 +01:00
adb a93c8ab055 Merge pull request #3485 from deltachat/adb/issue-3481
add missing webxdc api
2024-12-13 14:00:12 +01:00
adbenitez c5cb79d116 add missing webxdc api 2024-12-13 13:42:39 +01:00
adbenitez b3c50b9571 download .xdc files in background 2024-12-13 13:18:40 +01:00
Hosted Weblate e8801d1b64 Merge remote-tracking branch 'origin/main' 2024-12-13 12:51:00 +01:00
adb 41579de502 Merge pull request #3483 from deltachat/update-core-and-stuff-13/12/24
Update core to 1.152.0
2024-12-13 12:50:54 +01:00
adbenitez e6f735b8bc update scripts/update-core.sh 2024-12-13 12:50:24 +01:00
adbenitez 70b6f2cdfa update strings 2024-12-13 12:36:09 +01:00
adbenitez c1e716d6a3 update deltachat-core-rust to 'chore(release): prepare for 1.152.0' of 'v1.152.0' 2024-12-13 12:36:09 +01:00
Hosted Weblate 8bfc44c8ca Merge remote-tracking branch 'origin/main' 2024-12-13 11:33:57 +00:00
adb dde59b4673 Merge pull request #3482 from deltachat/link2xt/update-rust-1.83
Update Rust to 1.83.0
2024-12-13 12:33:51 +01:00
김인수 36e963e717 Translated using Weblate (Korean)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/ko/
2024-12-13 05:00:33 +01:00
link2xt 9d77920adf build: update Rust to 1.83.0 2024-12-12 13:28:33 +00:00
link2xt 6f50ee0cfb build(nix): remove ndk-bundle 2024-12-12 13:28:33 +00:00
link2xt 4c86d6d49e chore: nix flake update 2024-12-12 12:47:08 +00:00
Eryk Michalak 9e8fcf8ed7 Translated using Weblate (Polish)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/pl/
2024-12-11 23:00:32 +00:00
Hosted Weblate 6412d25420 Merge remote-tracking branch 'origin/main' 2024-12-11 12:53:42 +00:00
Hocuri 963327dd64 Remove prepareMsg (and OUT_PREPARING message state) (#3468)
This PR removes prepareMsg, which put messages into the OUT_PREPARING state and was used while videos were recoded. It also removes the now-unused method isIncreation().
- It was buggy because when you forwarded a message while it was InPreparation, or when the app was killed while a message is InPreparation, the message would stay InPreparation forever.
- Android is the only UI using this InPreparation (according to @r10s, I didn't check this myself), so we can simplify some things in core, which will also make it easier to deduplicate blob files.
2024-12-11 13:53:36 +01:00
adbenitez 5cba1ccd98 remove duplicate realtime preference 2024-12-09 11:57:51 +01:00
adbenitez de8e6b6852 remove store from main menu 2024-12-07 17:37:01 +01:00
Hosted Weblate a470366f03 Merge remote-tracking branch 'origin/main' 2024-12-07 16:59:38 +01:00
Hosted Weblate 1434ce6f57 Merge remote-tracking branch 'origin/main' 2024-12-07 14:19:34 +01:00
Hosted Weblate 654ba5b460 Merge remote-tracking branch 'origin/main' 2024-12-06 15:33:58 +01:00
Hosted Weblate e3835f70f7 Merge remote-tracking branch 'origin/main' 2024-12-06 09:57:59 +00:00
Hosted Weblate bbb803f91c Merge remote-tracking branch 'origin/main' 2024-12-06 07:47:14 +01:00
Hosted Weblate 6a4c73c821 Merge remote-tracking branch 'origin/main' 2024-12-06 06:40:34 +00:00
Hosted Weblate 853ce3c7a3 Merge remote-tracking branch 'origin/main' 2024-12-06 00:19:50 +00:00
Hosted Weblate d2ab4817b1 Merge remote-tracking branch 'origin/main' 2024-12-05 20:40:44 +00:00
Hosted Weblate 9ff1cafd5e Merge remote-tracking branch 'origin/main' 2024-12-05 17:47:38 +01:00
Hosted Weblate bf6b678e2b Merge remote-tracking branch 'origin/main' 2024-12-04 15:54:42 +00:00
Hosted Weblate 6c1f787a38 Merge remote-tracking branch 'origin/main' 2024-12-03 14:08:04 +01:00
Hosted Weblate b059741161 Merge remote-tracking branch 'origin/main' 2024-12-03 13:22:33 +01:00
Hosted Weblate fdd5cc5d4b Merge remote-tracking branch 'origin/main' 2024-12-03 11:02:52 +01:00
Hosted Weblate 77465b5802 Merge remote-tracking branch 'origin/main' 2024-12-02 18:40:35 +01:00
Hosted Weblate d17567029d Merge remote-tracking branch 'origin/main' 2024-12-02 14:41:08 +01:00
Hosted Weblate 4610a64732 Merge remote-tracking branch 'origin/main' 2024-12-02 13:30:44 +01:00
Hosted Weblate 0358e8ffcb Merge remote-tracking branch 'origin/main' 2024-11-27 20:36:50 +01:00
Hosted Weblate 406c263d82 Merge remote-tracking branch 'origin/main' 2024-11-27 20:36:33 +01:00
Hosted Weblate 6ed070e437 Merge remote-tracking branch 'origin/main' 2024-11-27 18:15:46 +00:00
Hosted Weblate 1e4cfa124e Merge remote-tracking branch 'origin/main' 2024-11-27 18:02:12 +01:00
Hosted Weblate c42ba0f599 Merge remote-tracking branch 'origin/main' 2024-11-27 14:37:32 +01:00
Hosted Weblate 8798275170 Merge remote-tracking branch 'origin/main' 2024-11-27 14:36:54 +01:00
Hosted Weblate ac6495ff20 Merge remote-tracking branch 'origin/main' 2024-11-26 15:23:14 +00:00
Hosted Weblate 8ae47e97cf Merge remote-tracking branch 'origin/main' 2024-11-26 11:35:27 +00:00
Hosted Weblate 6a1ff0bace Merge remote-tracking branch 'origin/main' 2024-11-25 20:42:51 +01:00
Hosted Weblate 047cd9a121 Merge remote-tracking branch 'origin/main' 2024-11-25 14:44:35 +01:00
Hosted Weblate 555547b6cc Merge remote-tracking branch 'origin/main' 2024-11-25 00:56:20 +01:00
Hosted Weblate 5fe355fe90 Merge remote-tracking branch 'origin/main' 2024-11-24 20:37:20 +00:00
Hosted Weblate 6af3b0d985 Merge remote-tracking branch 'origin/main' 2024-11-24 21:20:39 +01:00
Hosted Weblate 92d6147644 Merge remote-tracking branch 'origin/main' 2024-11-23 23:34:05 +00:00
Hosted Weblate 72fb9992a1 Merge remote-tracking branch 'origin/main' 2024-11-23 23:05:09 +01:00
Hosted Weblate e8413019ff Merge remote-tracking branch 'origin/main' 2024-11-23 18:22:54 +01:00
Hosted Weblate 289118e671 Merge remote-tracking branch 'origin/main' 2024-11-22 22:07:18 +00:00
Hosted Weblate 286a84b1d4 Merge remote-tracking branch 'origin/main' 2024-11-21 00:31:16 +00:00
Hosted Weblate 8c8c003f2b Merge remote-tracking branch 'origin/main' 2024-11-20 12:59:55 +00:00
Hosted Weblate a06e36993d Merge remote-tracking branch 'origin/main' 2024-11-19 13:24:13 +01:00
Hosted Weblate ce054d93a8 Merge remote-tracking branch 'origin/main' 2024-11-19 10:38:14 +00:00
hsfg6 cabc159cd8 Translated using Weblate (Chinese (Traditional Han script))
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/zh_Hant/
2024-11-18 23:00:26 +01:00
Hosted Weblate c78cbbe145 Merge remote-tracking branch 'origin/main' 2024-11-15 22:01:58 +01:00
Hosted Weblate a297c71a90 Merge remote-tracking branch 'origin/main' 2024-11-15 04:27:38 +01:00
Hosted Weblate 247de63362 Merge remote-tracking branch 'origin/main' 2024-11-13 20:08:39 +01:00
Hosted Weblate 20f7c7c616 Merge remote-tracking branch 'origin/main' 2024-11-13 00:16:57 +01:00
Hosted Weblate 6364903a28 Merge remote-tracking branch 'origin/main' 2024-11-12 20:35:03 +01:00
Hosted Weblate 48bb77cfae Merge remote-tracking branch 'origin/main' 2024-11-12 15:29:21 +01:00
Hosted Weblate 53bfe52797 Merge remote-tracking branch 'origin/main' 2024-11-12 09:02:21 +00:00
Hosted Weblate a8bc01e6c1 Merge remote-tracking branch 'origin/main' 2024-11-11 17:23:02 +01:00
Hosted Weblate 3fbccf3408 Merge remote-tracking branch 'origin/main' 2024-11-11 16:11:47 +01:00
Hosted Weblate 86656f1155 Merge remote-tracking branch 'origin/main' 2024-11-11 15:09:03 +00:00
Hosted Weblate 89473b8067 Merge remote-tracking branch 'origin/main' 2024-11-11 15:05:12 +00:00
Hosted Weblate 887f5881f0 Merge remote-tracking branch 'origin/main' 2024-11-09 17:33:23 +01:00
Hosted Weblate aee757e71c Merge remote-tracking branch 'origin/main' 2024-11-08 11:54:31 +00:00
Hosted Weblate 30d5eeeb45 Merge remote-tracking branch 'origin/main' 2024-11-05 15:32:37 +01:00
Hosted Weblate d2c2f2cf07 Merge remote-tracking branch 'origin/main' 2024-11-05 15:28:53 +01:00
bittin1ddc447d824349b2 f83d5a0dbb Translated using Weblate (Swedish)
Currently translated at 66.6% (2 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://hosted.weblate.org/projects/deltachat/android-metadata/sv/
2024-11-03 13:00:36 +01:00
Priit Jõerüüt c30ddf9c77 Translated using Weblate (Estonian)
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://translate.codeberg.org/projects/delta-chat/android-metadata/et/
2024-08-16 08:36:46 +00:00
Outbreak2096 e14b878aef Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (3 of 3 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://translate.codeberg.org/projects/delta-chat/android-metadata/zh_Hans/
2024-08-16 08:36:46 +00:00
NicholasV 9e3ebda12a Translated using Weblate (Portuguese (Brazil))
Currently translated at 16.6% (3 of 18 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://translate.codeberg.org/projects/delta-chat/android-metadata/pt_BR/
2024-08-16 08:36:46 +00:00
gitcookie-1 4bb42b9995 Translated using Weblate (German)
Currently translated at 58.8% (10 of 17 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://translate.codeberg.org/projects/delta-chat/android-metadata/de/
2024-08-16 08:36:46 +00:00
German 59b158fe09 Translated using Weblate (German)
Currently translated at 17.6% (3 of 17 strings)

Translation: Delta Chat/Android metadata
Translate-URL: https://translate.codeberg.org/projects/delta-chat/android-metadata/de/
2024-08-16 08:36:46 +00:00
510 changed files with 14910 additions and 14725 deletions
+3
View File
@@ -0,0 +1,3 @@
ko_fi: adbenitez
liberapay: adbenitez
custom: "https://arcanechat.me/#contribute"
+1 -1
View File
@@ -1 +1 @@
blank_issues_enabled: true
blank_issues_enabled: false
+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
@@ -51,7 +51,7 @@ jobs:
run: ./gradlew --no-daemon -PABI_FILTER=armeabi-v7a assembleFossDebug
- name: Upload APK
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: app-preview.apk
path: 'build/outputs/apk/foss/debug/*.apk'
+7 -6
View File
@@ -49,11 +49,12 @@ jobs:
- name: Build APK
run: |
mkdir -p ~/.gradle
echo -n ${{ secrets.SIGNING_KEY }} | base64 -d >> ~/app.keystore
echo "DC_RELEASE_STORE_FILE=$HOME/app.keystore" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_STORE_PASSWORD=${{ secrets.KEY_STORE_PASSWORD }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_ALIAS=${{ secrets.ALIAS }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> ~/.gradle/gradle.properties
echo -n ${{ secrets.KEYSTORE_FILE }} | base64 -d >> ~/keystore.jks
echo "DC_RELEASE_STORE_FILE=$HOME/keystore.jks" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_STORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_ALIAS_FDROID=${{ secrets.ALIAS_FDROID }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_ALIAS_GPLAY=${{ secrets.ALIAS_GPLAY }}" >> ~/.gradle/gradle.properties
echo "DC_RELEASE_KEY_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}" >> ~/.gradle/gradle.properties
./gradlew assembleFossRelease
rm build/outputs/apk/foss/release/*universal*
./gradlew assembleGplayRelease
@@ -63,7 +64,7 @@ jobs:
uses: softprops/action-gh-release@v1
with:
token: "${{ secrets.GITHUB_TOKEN }}"
body: '[<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-IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="48">](https://apt.izzysoft.de/fdroid/index/apk/chat.delta.lite) [<img src="store/get-it-on-apklis.png" alt="Disponible en Apklis" height="48">](https://www.apklis.cu/application/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)'
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
+186 -1
View File
@@ -1,4 +1,189 @@
# ArcaneChat Android Changelog
# Delta Chat Android Changelog
## v2.6.0
* 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 unencryted 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.6.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
* allow better avatar (profile picture) quality
* remove notifications from chat that was deleted from other device
* when a chat is deleted, also delete its messages from server
* avoid freezing when opening the app for the first time after install
* avoid crash when adding chat shortcut to home screen
* some small bug fixes and updated translations
* update to core 1.156.3
## v1.54.3
2025-03
* allow to add any chat to the home screen
* update "forward message" icon and organize the messages actions bar
* do not allow non-members to change ephemeral timer settings of groups
* properly display padlock when the message is not sent over the network
* sync message deletion to other devices
* sync chat deletion across devices
* Show sender in "Saved Messages"
* allow scanning multiple QR-invitation codes without needing to wait for completion to scan the next one
* when reactions are seen in one device, remove notification from your other devices
* don't disturb with notification when someone leave a group
* detect incompatible profiles from newer app version when importing them
* prepare the app for receiving edited messages
* prepare the app for receiving message deletion requests
* do some small bug fixes
* update translations
* update to core 1.156.2
## v1.54.0
2025-02
* enhanced "Saved Messages" feature, now when forwarding a message to "Saved Messages" chat, it retains the sender information and a button to jump to the original message
* Saved messages are marked by a bookmark sign
* improve explanation when blocking a contact
* improve wording in empty "apps" and "files" tabs in chat media screen
* remove deprecated/legacy built-in "half-camera"
* UI improvement: keep avatars aligned to message bubble when message has reactions
* fix problems when opening attachments in external apps
* fix a bug with some big images appearing as blank/transparent
* some other small bug fixes
* update translations
* update to core 1.155.4
## v1.52.1
2025-01
* the app now requires less storage on your SD card by deduplicating newly received/sent files
* some small bug fixes
* update translations
* update to core 1.155.1
## v1.52.0
2025-01
* new group consistency algorithm
* fix: don't show animated .webp stickers as static stickers
* fix the chat shortcuts (created via long-press in launcher) to properly support multi-profile
* fix some small bugs in certain android versions and special situations
* avoid the app freezing in slow phones in some situations
* improve menu in the help screen
* update translations
* update to core 1.155.0
## v1.50.5
2025-01
* fix push-notifications handling for certain devices where it was not working correctly
* update translations
* using core 1.153.0
## v1.50.4
2025-01
* properly send as animated stickers GIF files selected from keyboard
* improve emoji picker in landscape mode and when changing from landscape to portrait
* avoid crash when receiving push notifications if the user restricted the app from working in background
* improve UI when attaching a file or image to easily recognize it is attached but not sent yet
* avoid slow loading of in-chat apps in some devices when quickly re-opening an app after closing it
* allow to select multiple images at once in the media picker via "Gallery" button
* mark holiday notice messages as bot-generated
* don't mark contacts as bot when receiving location-only and sync messages
* prefer to encrypt even if peers have their preference to "no preference"
* start ephemeral messages timers when the chat is archived or noticed
* several bug fixes and updated translations
* update to core 1.153.0
## v1.50.3
2024-12
* Add in-chat apps picker to attachments options
* Notify replies and reactions to your messages in muted chats (can be disabled in settings)
* Cache HTTP GET requests (ex. when loading images from HTML messages)
* update to core 1.152.0
## v1.50.2
2024-12
+2 -4
View File
@@ -1,10 +1,9 @@
## ArcaneChat Android Client
A [Delta Chat](https://delta.chat/) client for Android.
A [Delta Chat](https://delta.chat/) client for Android. Learn more at: https://arcanechat.me
[<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-IzzyOnDroid.png" alt="Get it on IzzyOnDroid" height="48">](https://apt.izzysoft.de/fdroid/index/apk/chat.delta.lite)
[<img src="store/get-it-on-apklis.png" alt="Disponible en Apklis" height="48">](https://www.apklis.cu/application/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)
@@ -16,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:
+12 -13
View File
@@ -13,25 +13,24 @@ on the command-line, in a PR called "update-core-and-stuff-DATE":
./scripts/ndk-make.sh
```
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 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).
the following steps are done in a PR called `prep-VERSION` (no leading "v"):
3. a) update `CHANGELOG.md`
from <https://github.com/deltachat/deltachat-core-rust/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.
@@ -114,7 +113,7 @@ This may take some days.
on <https://developer.amazon.com/dashboard>:
12. a) for "Delta Chat", select "Add upcoming version" on the left
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"
@@ -131,7 +130,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.
+46 -29
View File
@@ -1,5 +1,5 @@
plugins {
id 'com.android.application' version '8.1.4'
id 'com.android.application' version '8.5.2'
id 'com.google.gms.google-services' version '4.4.1'
}
@@ -33,8 +33,8 @@ android {
useLibrary 'org.apache.http.legacy'
defaultConfig {
versionCode 30000699
versionName "1.50.3"
versionCode 30000725
versionName "2.6.0"
applicationId "chat.delta.lite"
multiDexEnabled true
@@ -87,15 +87,45 @@ android {
storeFile file(DC_DEBUG_STORE_FILE )
}
}
release {
releaseFdroid {
// can be defined at `~/.gradle/gradle.properties` or at "Build/Generate signed APK"
if(project.hasProperty("DC_RELEASE_STORE_FILE")) {
storeFile file(DC_RELEASE_STORE_FILE)
storePassword DC_RELEASE_STORE_PASSWORD
keyAlias DC_RELEASE_KEY_ALIAS
keyAlias DC_RELEASE_KEY_ALIAS_FDROID
keyPassword DC_RELEASE_KEY_PASSWORD
}
}
releaseApk {
// can be defined at `~/.gradle/gradle.properties` or at "Build/Generate signed APK"
if(project.hasProperty("DC_RELEASE_STORE_FILE")) {
storeFile file(DC_RELEASE_STORE_FILE)
storePassword DC_RELEASE_STORE_PASSWORD
keyAlias DC_RELEASE_KEY_ALIAS_GPLAY
keyPassword DC_RELEASE_KEY_PASSWORD
}
}
releaseBundle {
if(project.hasProperty("DC_BUNDLE_STORE_FILE")) {
storeFile file(DC_BUNDLE_STORE_FILE)
storePassword DC_BUNDLE_STORE_PASSWORD
keyAlias DC_BUNDLE_KEY_ALIAS
keyPassword DC_BUNDLE_STORE_PASSWORD
}
}
}
productFlavors {
foss {
dimension "none"
buildConfigField "boolean", "USE_PLAY_SERVICES", "false"
}
gplay {
dimension "none"
apply plugin: "com.google.gms.google-services"
buildConfigField "boolean", "USE_PLAY_SERVICES", "true"
applicationId "com.github.arcanechat"
}
}
buildTypes {
@@ -114,23 +144,12 @@ android {
// nb: it is highly recommended to use the same settings in debug+release -
// otherwise problems might be noticed delayed only
minifyEnabled true
signingConfig signingConfigs.release
productFlavors.foss.signingConfig signingConfigs.releaseFdroid
productFlavors.gplay.signingConfig signingConfigs.releaseApk
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
productFlavors {
foss {
dimension "none"
buildConfigField "boolean", "USE_PLAY_SERVICES", "false"
}
gplay {
dimension "none"
apply plugin: "com.google.gms.google-services"
buildConfigField "boolean", "USE_PLAY_SERVICES", "true"
}
}
if(!project.hasProperty("ABI_FILTER")) {
splits {
abi {
@@ -190,7 +209,7 @@ dependencies {
implementation 'com.airbnb.android:lottie:4.2.2' // Lottie animations support.
implementation 'androidx.sharetarget:sharetarget:1.2.0'
implementation 'androidx.webkit:webkit:1.11.0'
implementation 'androidx.webkit:webkit:1.12.1'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'com.google.android.material:material:1.12.0'
@@ -210,22 +229,21 @@ dependencies {
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-ui:2.19.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
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.9.1' // used as JSON library. Don't upgrade to 2.10.1: https://github.com/deltachat/deltachat-android/pull/2610
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:glide-plugin:2.25.0' // APNG & animated webp support.
implementation 'com.github.Baseflow:PhotoView:2.3.0' // does the zooming on photos / media
implementation 'com.github.penfeizhou.android.animation:awebp:3.0.2' // animated webp support.
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'
annotationProcessor 'androidx.annotation:annotation:1.8.2'
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.soundcloud.android:android-crop:1.0.1@aar' // used for profile and group avatar selection in Android SDK<19
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
@@ -234,13 +252,12 @@ dependencies {
}
implementation 'com.annimon:stream:1.1.8' // brings future java streams api to SDK Version < 24
implementation 'com.getkeepsafe.relinker:relinker:1.4.4' // needed to avoid safe-content-resolver-v14 trying to fetch older non-existing version
// Replacement for ContentResolver
// that protects against the Surreptitious Sharing attack.
// <https://github.com/cketti/SafeContentResolver>
implementation 'de.cketti.safecontentresolver:safe-content-resolver-v14:1.0.0'
implementation 'de.cketti.safecontentresolver:safe-content-resolver-v21:1.0.0'
gplayImplementation('com.google.firebase:firebase-messaging:24.0.0') { // for PUSH notifications
gplayImplementation('com.google.firebase:firebase-messaging:24.1.0') { // for PUSH notifications
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'
@@ -254,7 +271,7 @@ dependencies {
testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.1'
testImplementation 'org.powermock:powermock-classloading-xstream:1.6.1'
androidTestImplementation 'androidx.test:runner:1.6.1'
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'
@@ -1,35 +1,37 @@
ArcaneChat is a decentralized and secure messenger app that is compatible with the existing e-mail infrastructure.
ArcaneChat is a decentralized and secure instant messenger that is easy to use for friends and family.
Some features at a glance:
• Anonymous. Instant onboarding without a phone number, e-mail or other private data.
💬 Reliable instant messaging with multi-profile and multi-device support.
• Flexible. Supports multiple chat profiles and is easy to setup on multiple devices.
⚡️ Sign-up easily using secure fast chatmail servers. You dont need a phone number or any private data.
• Extensible. Use mini-apps in chats like shopping lists, calendars or games.
📧 Alternatively, use your existing classic e-mail address to read your inbox as chats.
• Reliable. Works under bad and adversarial network conditions.
🎮 Interactive mini-apps in chats for gaming and collaboration.
• Secure. Audited End-to-End encryption safe against network and server attacks.
🔒 Audited end-to-end encryption safe against network and server attacks.
• Sovereign. Can be run with your own e-mail address or server.
ArcaneChat is a Delta Chat client and was created with a focus on usability, good user experience, and saving data plan. Also the app usually experiments with new features that eventually might get added to the official Delta Chat client.
<b>Main differences with official Delta Chat client:</b>
<ul>
<li>Basic markdown support (bold, italic, strike, etc.)</li>
<li>Support for some markdown styles in text messages (bold, italic, strike, etc.)</li>
<li>Support for displaying Telegram's animated stickers (.tgs files)</li>
<li>Support for SVG images previews</li>
<li>Multiple color themes/skins</li>
<li>It is possible to disable accounts to completely disconnect them to save data/bandwidth</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>Replies to your messages in muted groups trigger notifications</li>
<li>Location streaming feature enabled by default and extra option to share location for 12 hours</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>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>Account's display name is always shown in the app's title bar instead of the name of the app</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>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

After

Width:  |  Height:  |  Size: 137 KiB

Generated
+26 -60
View File
@@ -3,15 +3,15 @@
"android": {
"inputs": {
"devshell": "devshell",
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1720988215,
"narHash": "sha256-nQ0Zx0vAWJo0IOGNFjCOdIkDSgOpMa//GalR8tbTl3A=",
"lastModified": 1733948466,
"narHash": "sha256-o/uq/tU458Ykudi8Zk3sRga5iazkuSczt9wDOCUDOSU=",
"owner": "tadfisher",
"repo": "android-nixpkgs",
"rev": "5a052c62cdb51b210bc0717177d5bd014cba3df1",
"rev": "0bf99ffaea6a7c0948ae10cf2e40c2905e4e4d6b",
"type": "github"
},
"original": {
@@ -22,18 +22,17 @@
},
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"android",
"nixpkgs"
]
},
"locked": {
"lastModified": 1717408969,
"narHash": "sha256-Q0OEFqe35fZbbRPPRdrjTUUChKVhhWXz3T9ZSKmaoVY=",
"lastModified": 1728330715,
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
"owner": "numtide",
"repo": "devshell",
"rev": "1ebbe68d57457c8cae98145410b164b5477761f4",
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
"type": "github"
},
"original": {
@@ -47,11 +46,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@@ -65,29 +64,11 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_3": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1710146030,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
@@ -98,11 +79,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1720768451,
"narHash": "sha256-EYekUHJE2gxeo2pM/zM9Wlqw1Uw2XTJXOSAO79ksc4Y=",
"lastModified": 1733759999,
"narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "7e7c39ea35c5cdd002cd4588b03a3fb9ece6fad9",
"rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56",
"type": "github"
},
"original": {
@@ -114,11 +95,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1723221148,
"narHash": "sha256-7pjpeQlZUNQ4eeVntytU3jkw9dFK3k1Htgk2iuXjaD8=",
"lastModified": 1733749988,
"narHash": "sha256-+5qdtgXceqhK5ZR1YbP1fAUsweBIrhL38726oIEAtDs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "154bcb95ad51bc257c2ce4043a725de6ca700ef6",
"rev": "bc27f0fde01ce4e1bfec1ab122d72b7380278e68",
"type": "github"
},
"original": {
@@ -130,11 +111,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1718428119,
"narHash": "sha256-WdWDpNaq6u1IPtxtYHHWpl5BmabtpmLnMAx0RdJ/vo8=",
"lastModified": 1744536153,
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e6cea36f83499eb4e9cd184c8a8e823296b50ad5",
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
"type": "github"
},
"original": {
@@ -147,7 +128,7 @@
"root": {
"inputs": {
"android": "android",
"flake-utils": "flake-utils_3",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
}
@@ -157,11 +138,11 @@
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1723429325,
"narHash": "sha256-4x/32xTCd+xCwFoI/kKSiCr5LQA2ZlyTRYXKEni5HR8=",
"lastModified": 1747017456,
"narHash": "sha256-C/U12fcO+HEF071b5mK65lt4XtAIZyJSSJAg9hdlvTk=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "65e3dc0fe079fe8df087cd38f1fe6836a0373aad",
"rev": "5b07506ae89b025b14de91f697eba23b48654c52",
"type": "github"
},
"original": {
@@ -199,21 +180,6 @@
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
+7 -5
View File
@@ -15,20 +15,22 @@
pkgs = import nixpkgs { inherit system overlays; };
android-sdk = android.sdk.${system} (sdkPkgs:
with sdkPkgs; [
build-tools-33-0-1
build-tools-34-0-0
cmdline-tools-latest
ndk-bundle
platform-tools
platforms-android-34
ndk-27-0-11902837
ndk-27-2-12479018
]);
rust-version = pkgs.lib.removeSuffix "\n"
(builtins.readFile ./scripts/rust-toolchain);
in {
in
{
formatter = pkgs.nixpkgs-fmt;
devShells.default = pkgs.mkShell {
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";
buildInputs = [
android-sdk
pkgs.openjdk17
+4 -4
View File
@@ -28,7 +28,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:6f54e2c4e49405673e2bb9",
"android_client_info": {
"package_name": "chat.delta.lite.beta"
"package_name": "com.github.arcanechat.beta"
}
},
"oauth_client": [],
@@ -47,7 +47,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:aff82fbc40c8172e3e2bb9",
"android_client_info": {
"package_name": "chat.delta.lite"
"package_name": "com.github.arcanechat"
}
},
"oauth_client": [],
@@ -66,7 +66,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:92b4cf12669cc2083e2bb9",
"android_client_info": {
"package_name": "com.github.arcanechat"
"package_name": "chat.delta.lite"
}
},
"oauth_client": [],
@@ -85,7 +85,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:228a205b8aa2bacc3e2bb9",
"android_client_info": {
"package_name": "com.github.arcanechat.beta"
"package_name": "chat.delta.lite.beta"
}
},
"oauth_client": [],
-1
View File
@@ -1,6 +1,5 @@
android.defaults.buildfeatures.buildconfig=true
android.enableJetifier=true
android.nonFinalResIds=false
android.nonTransitiveRClass=false
android.useAndroidX=true
org.gradle.jvmargs=-Xmx4608m
+2 -2
View File
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=ff7bf6a86f09b9b2c40bb8f48b25fc19cf2b2664fd1d220cd7ab833ec758d0d7
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
+76 -60
View File
@@ -231,12 +231,6 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcAccounts_backgroundFetch(JNIEnv *en
}
JNIEXPORT jint Java_com_b44t_messenger_DcAccounts_addAccount(JNIEnv *env, jobject obj)
{
return dc_accounts_add_account(get_dc_accounts(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcAccounts_migrateAccount(JNIEnv *env, jobject obj, jstring dbfile)
{
CHAR_REF(dbfile);
@@ -659,6 +653,14 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getMsgInfo(JNIEnv *env, jobj
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_sendEditRequest(JNIEnv *env, jobject obj, jint msg_id, jstring text)
{
CHAR_REF(text);
dc_send_edit_request(get_dc_context(env, obj), msg_id, textPtr);
CHAR_UNREF(text);
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getMsgHtml(JNIEnv *env, jobject obj, jint msg_id)
{
char* temp = dc_get_msg_html(get_dc_context(env, obj), msg_id);
@@ -683,6 +685,15 @@ JNIEXPORT void Java_com_b44t_messenger_DcContext_deleteMsgs(JNIEnv *env, jobject
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_sendDeleteRequest(JNIEnv *env, jobject obj, jintArray msg_ids)
{
int msg_ids_cnt = 0;
uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
dc_send_delete_request(get_dc_context(env, obj), msg_ids_ptr, msg_ids_cnt);
free(msg_ids_ptr);
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_forwardMsgs(JNIEnv *env, jobject obj, jintArray msg_ids, jint chat_id)
{
int msg_ids_cnt = 0;
@@ -691,6 +702,13 @@ JNIEXPORT void Java_com_b44t_messenger_DcContext_forwardMsgs(JNIEnv *env, jobjec
free(msg_ids_ptr);
}
JNIEXPORT void Java_com_b44t_messenger_DcContext_saveMsgs(JNIEnv *env, jobject obj, jintArray msg_ids)
{
int msg_ids_cnt = 0;
uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
dc_save_msgs(get_dc_context(env, obj), msg_ids_ptr, msg_ids_cnt);
free(msg_ids_ptr);
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_resendMsgs(JNIEnv *env, jobject obj, jintArray msg_ids)
{
@@ -702,12 +720,6 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_resendMsgs(JNIEnv *env, job
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_prepareMsg(JNIEnv *env, jobject obj, jint chat_id, jobject msg)
{
return dc_prepare_msg(get_dc_context(env, obj), chat_id, get_dc_msg(env, msg));
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendMsg(JNIEnv *env, jobject obj, jint chat_id, jobject msg)
{
return dc_send_msg(get_dc_context(env, obj), chat_id, get_dc_msg(env, msg));
@@ -910,15 +922,6 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_initiateKeyTransfer(JNIEnv *
}
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);
@@ -1234,6 +1237,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;
@@ -1263,11 +1272,6 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcChat_isProtected(JNIEnv *env, jobje
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)
{
@@ -1370,17 +1374,6 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getId(JNIEnv *env, jobject obj)
return dc_msg_get_id(get_dc_msg(env, obj));
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isOutgoing(JNIEnv *env, jobject obj)
{
return (jboolean)(dc_msg_is_outgoing(get_dc_msg(env, obj))!=0);
}
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));
@@ -1435,6 +1428,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));
@@ -1588,24 +1587,12 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isForwarded(JNIEnv *env, jobjec
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isIncreation(JNIEnv *env, jobject obj)
{
return dc_msg_is_increation(get_dc_msg(env, obj))!=0;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isInfo(JNIEnv *env, jobject obj)
{
return dc_msg_is_info(get_dc_msg(env, obj))!=0;
}
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;
@@ -1660,12 +1647,35 @@ JNIEXPORT void Java_com_b44t_messenger_DcMsg_setHtml(JNIEnv *env, jobject obj, j
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setFile(JNIEnv *env, jobject obj, jstring file, jstring filemime)
JNIEXPORT void Java_com_b44t_messenger_DcMsg_forceSticker(JNIEnv *env, jobject obj)
{
dc_msg_force_sticker(get_dc_msg(env, obj));
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getPOILocation(JNIEnv *env, jobject obj)
{
char* temp = dc_msg_get_poi_location(get_dc_msg(env, obj));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isEdited(JNIEnv *env, jobject obj)
{
return dc_msg_is_edited(get_dc_msg(env, obj));
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setFileAndDeduplicate(JNIEnv *env, jobject obj, jstring file, jstring name, jstring filemime)
{
CHAR_REF(file);
CHAR_REF(name);
CHAR_REF(filemime);
dc_msg_set_file(get_dc_msg(env, obj), filePtr, filemimePtr);
dc_msg_set_file_and_deduplicate(get_dc_msg(env, obj), filePtr, namePtr, filemimePtr);
CHAR_UNREF(filemime);
CHAR_UNREF(name);
CHAR_UNREF(file);
}
@@ -1714,6 +1724,15 @@ JNIEXPORT jlong Java_com_b44t_messenger_DcMsg_getParentCPtr(JNIEnv *env, jobject
return (jlong)dc_msg_get_parent(get_dc_msg(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getOriginalMsgId(JNIEnv *env, jobject obj)
{
return (jint)dc_msg_get_original_msg_id(get_dc_msg(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getSavedMsgId(JNIEnv *env, jobject obj)
{
return (jint)dc_msg_get_saved_msg_id(get_dc_msg(env, obj));
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getError(JNIEnv *env, jobject obj)
{
@@ -1791,15 +1810,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));
@@ -1847,6 +1857,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));
-7
View File
@@ -1,7 +0,0 @@
- nuovo inserimento: puoi creare un nuovo profilo con un tocco su "Crea Nuovo Profilo" - oppure utilizzare un accesso esistente o la configurazione del secondo dispositivo come al solito
i contatti possono essere allegati come "Schede" in "Allega/Contatto"; quando il destinatario tocca le carte, è possibile stabilire la crittografia end-to-end garantita
- aggiungi contatti manualmente in "Nuova Chat / Nuovo Contatto / Aggiungi Contatto Manualmente"
- invia qualsiasi emoji come reazione
- mostrare le reazioni nei riepiloghi
- blocca/archivia/ecc. le chat direttamente dai risultati di ricerca
- Risolti bug e altro ancora
-4
View File
@@ -1,4 +0,0 @@
- aggiungi un'opzione per contrassegnare tutte le chat selezionate come "Lette" (tocca a lungo una chat per avviare la modalità di selezione)
- i nuovi profili chatmail per dispositivo singolo hanno come impostazione predefinita "Elimina Messaggi Dopo il Download"
- quando si utilizza un profilo chatmail su più dispositivi, la cancellazione viene modificata in "Automatica" (la strategia di cancellazione dipende quindi dal server)
- Risolti bug e altro ancora
+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/
+18 -15
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"
@@ -126,8 +129,8 @@ if test -z $1 || test $1 = armeabi-v7a; then
TARGET_CC="$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang" \
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi --features jsonrpc
cp $CARGO_TARGET_DIR/armv7-linux-androideabi/$RELEASE/libdeltachat.a $jnidir/armeabi-v7a
cargo build $RELEASEFLAG --target armv7-linux-androideabi -p deltachat_ffi
cp "$CARGO_TARGET_DIR/armv7-linux-androideabi/$RELEASE/libdeltachat.a" "$jnidir/armeabi-v7a"
fi
if test -z $1 || test $1 = arm64-v8a; then
@@ -135,8 +138,8 @@ if test -z $1 || test $1 = arm64-v8a; then
TARGET_CC="$TOOLCHAIN/bin/aarch64-linux-android21-clang" \
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi --features jsonrpc
cp $CARGO_TARGET_DIR/aarch64-linux-android/$RELEASE/libdeltachat.a $jnidir/arm64-v8a
cargo build $RELEASEFLAG --target aarch64-linux-android -p deltachat_ffi
cp "$CARGO_TARGET_DIR/aarch64-linux-android/$RELEASE/libdeltachat.a" "$jnidir/arm64-v8a"
fi
if test -z $1 || test $1 = x86; then
@@ -144,18 +147,18 @@ if test -z $1 || test $1 = x86; then
TARGET_CC="$TOOLCHAIN/bin/i686-linux-android21-clang" \
TARGET_AR="$TOOLCHAIN/bin/llvm-ar" \
TARGET_RANLIB="$TOOLCHAIN/bin/llvm-ranlib" \
cargo build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi --features jsonrpc
cp $CARGO_TARGET_DIR/i686-linux-android/$RELEASE/libdeltachat.a $jnidir/x86
cargo build $RELEASEFLAG --target i686-linux-android -p deltachat_ffi
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 --features jsonrpc
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 --
+2 -1
View File
@@ -1,7 +1,8 @@
#!/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'
+1 -1
View File
@@ -1 +1 @@
1.77.0
1.86.0
+5
View File
@@ -2,5 +2,10 @@
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'
# don't revert the app name
sed -i 's/>Delta Chat</>ArcaneChat</g' ./src/main/res/values/strings.xml
+2
View File
@@ -1,3 +1,5 @@
#!/usr/bin/env bash
set -e # stop on all errors
git submodule update --init --recursive
-1
View File
@@ -30,7 +30,6 @@ echo ""
echo "and now: here is Delta Chat $VERSION - choose your flavour and mind your backups:"
echo "- 🍋 https://download.delta.chat/android/beta/deltachat-gplay-release-$VERSION.apk (google play candidate, overwrites existing installs, should keep data)"
echo "- 🍉 https://download.delta.chat/android/beta/deltachat-foss-debug-$VERSION.apk (f-droid candidate, can be installed beside google play)"
echo "- 🍏 https://testflight.apple.com/join/uEMc1NxS (ios, update to $VERSION may take a day or so)"
echo ""
echo "what to test: PLEASE_FILL_OUT"
@@ -1,5 +1,11 @@
package com.b44t.messenger;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.matcher.ViewMatchers.isRoot;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
@@ -23,12 +29,6 @@ import org.thoughtcrime.securesms.util.AccessibilityUtil;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.matcher.ViewMatchers.isRoot;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
public class TestUtils {
private static int createdAccountId = 0;
private static boolean resetEnterSends = false;
@@ -1,5 +1,14 @@
package com.b44t.messenger.uibenchmarks;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.Espresso.pressBack;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.replaceText;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
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;
@@ -17,15 +26,6 @@ import org.junit.runner.RunWith;
import org.thoughtcrime.securesms.ConversationListActivity;
import org.thoughtcrime.securesms.R;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.Espresso.pressBack;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.replaceText;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
@Ignore("This is not a test, but a benchmark. Remove the @Ignore to run it.")
@RunWith(AndroidJUnit4.class)
@LargeTest
@@ -1,5 +1,16 @@
package com.b44t.messenger.uitests.offline;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.Espresso.pressBack;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
import static androidx.test.espresso.matcher.ViewMatchers.isClickable;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
@@ -25,17 +36,6 @@ import org.thoughtcrime.securesms.connect.DcHelper;
import java.io.File;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.Espresso.pressBack;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.hasDescendant;
import static androidx.test.espresso.matcher.ViewMatchers.isClickable;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
@RunWith(AndroidJUnit4.class)
@LargeTest
@@ -93,7 +93,7 @@ public class SharingTest {
}
}
Uri uri = Uri.parse("content://" + BuildConfig.APPLICATION_ID + ".attachments/" + Uri.encode(pngImage));
DcHelper.sharedFiles.put("/" + pngImage, 1);
DcHelper.sharedFiles.put(pngImage, "image/png");
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("image/png");
@@ -1,6 +1,15 @@
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;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isClickable;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
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;
@@ -17,15 +26,6 @@ import org.thoughtcrime.securesms.BuildConfig;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.WelcomeActivity;
import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.click;
import static androidx.test.espresso.action.ViewActions.replaceText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isClickable;
import static androidx.test.espresso.matcher.ViewMatchers.withContentDescription;
import static androidx.test.espresso.matcher.ViewMatchers.withHint;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class OnboardingTest {
@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.notifications;
import android.content.Context;
import androidx.annotation.Nullable;
/*
+14 -16
View File
@@ -20,7 +20,6 @@
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
@@ -79,17 +78,6 @@
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.GET_CONTENT"/>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="content"/>
<data android:scheme="file"/>
<data android:mimeType="*/*" />
<data android:mimeType="application/octet-stream" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT"/>
@@ -225,8 +213,6 @@
<intent-filter>
<data android:scheme="mailto"/>
<data android:scheme="http"/>
<data android:scheme="https"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
@@ -301,6 +287,10 @@
android:theme="@style/TextSecure.LightNoActionBar"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".AllMediaActivity"
android:theme="@style/TextSecure.LightNoActionBar"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name=".DummyActivity"
android:theme="@android:style/Theme.NoDisplay"
android:enabled="true"
@@ -329,8 +319,6 @@
android:theme="@style/TextSecure.ScribbleTheme"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
<activity android:name="com.soundcloud.android.crop.CropImageActivity" />
<activity android:name=".InstantOnboardingActivity"
android:theme="@style/TextSecure.LightTheme"
android:windowSoftInputMode="stateHidden|adjustResize"
@@ -382,6 +370,13 @@
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
</activity>
<activity android:name=".videochat.VideochatActivity"
android:label=""
android:theme="@style/TextSecure.LightTheme"
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize|uiMode"
android:exported="true">
</activity>
<activity android:name=".WebxdcActivity"
android:label=""
android:theme="@style/TextSecure.LightTheme"
@@ -514,5 +509,8 @@
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
</manifest>
+279 -357
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="cs"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#co-je-delta-chat">Co je Delta Chat?</a>
<ul>
<li><a href="#jak-najít-lidi-k-hovoru">Jak najít lidi k hovoru?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#kdo-uvidí-můj-profilový-obrázek">Kdo uvidí můj profilový obrázek?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#what-do-pinning-muting-and-archiving-mean">What do Pinning, Muting and Archiving mean?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#what-does-the-green-dot-mean">What does the green dot mean?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#encryption-and-security">Encryption and Security</a>
<li><a href="#e2ee">Encryption and Security</a>
<ul>
<li><a href="#which-standards-are-used-for-end-to-end-encryption">Which standards are used for end-to-end encryption?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">Is OpenPGP secure?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#is-delta-chat-vulnerable-to-efail">Is Delta Chat vulnerable to EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">How does Delta Chat protect metadata in messages?</a></li>
<li><a href="#device-seizure">How to protect metadata and contacts when a device is seized?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#how-can-i-check-the-encryption-status-of-messages">How can I check the encryption status of messages?</a></li>
<li><a href="#why-do-i-see-unencrypted-messages">Why do I see unencrypted messages?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Lze znovu použít můj stávající soukromý klíč?</a></li>
<li><a href="#nemohu-do-delta-chatu-zavést-můj-stávající-pgp-klíč">Nemohu do Delta Chatu zavést můj stávající PGP klíč.</a></li>
<li><a href="#security-audits">Was Delta Chat independently audited for security vulnerabilities?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#lze-delta-chat-používat-souběžně-na-více-zařízeních">Lze Delta Chat používat souběžně na více zařízeních?</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#je-v-plánu-vytvořit-webovou-verzi-delta-chatu">Je v plánu vytvořit webovou verzi Delta Chatu?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#jaká-oprávnění-delta-chat-potřebuje">Jaká oprávnění Delta Chat potřebuje?</a></li>
<li><a href="#pracuje-delta-chat-s-mým-poskytovatelem-e-mailu">Pracuje Delta Chat s <em>mým</em> poskytovatelem e-mailu?</a></li>
<li><a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">I want to manage my own e-mail server for Delta Chat. What do you recommend?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#proč-musím-delta-chatu-zadat-mé-e-mailové-heslo-je-to-bezpečné">Proč musím Delta Chatu zadat mé e-mailové heslo? Je to bezpečné?</a></li>
<li><a href="#jaké-zprávy-delta-chat-zobrazuje">Jaké zprávy Delta Chat zobrazuje?</a></li>
<li><a href="#umí-delta-chat-pracovat-s-e-maily-v-html">Umí Delta Chat pracovat s e-maily v HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#k-čemu-je-dobré-nastavení-posílat-si-kopii">K čemu je dobré nastavení “Posílat si kopii”?</a></li>
<li><a href="#proč-můžu-nastavit-sledování-složky-odeslané">Proč můžu nastavit sledování složky Odeslané?</a></li>
<li><a href="#proč-mohu-zvolit-nesledovat-složku-deltachat">Proč mohu zvolit nesledovat složku DeltaChat?</a></li>
<li><a href="#lze-delta-chat-používat-s-protonmail--tutanota--criptext">Lze Delta Chat používat s Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#lze-delta-chat-používat-s-proton-mail--tutanota--criptext">Lze Delta Chat používat s Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">How can I delete my account?</a></li>
<li><a href="#mám-zájem-o-technické-podrobnosti-kde-najdu-víc">Mám zájem o technické podrobnosti. Kde najdu víc?</a></li>
<li><a href="#where-can-my-friends-find-delta-chat">Where can my friends find Delta Chat?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>If a message comes from an unknown contact, it appears as a <strong>request</strong>.</p>
<ul>
<li>If a message comes from an unknown contact, it appears as a <strong>request</strong>. You
need to accept the request before you can reply.</li>
<li>You can also “delete” it if you dont want to chat with them for now. This
does <em>not</em> delete the message on the server, only on your device. So you can
still deal with the message in a different mail app.</li>
<li>If you delete a request, future messages from that contact will still appear
<li>
<p>You need to <strong>accept</strong> the request before you can reply.</p>
</li>
<li>
<p>You can also <strong>delete</strong> it if you dont want to chat with them for now.</p>
</li>
<li>
<p>If you delete a request, future messages from that contact will still appear
as message request, so you can change your mind. If you really dont want to
receive messages from this person, consider <em>blocking</em> them.</li>
receive messages from this person, consider <strong>blocking</strong> them.</p>
</li>
</ul>
<h3 id="podporuje-delta-chat-obrázky-videa-a-jiné-přílohy">
@@ -300,6 +303,41 @@ Archived chats remain accessible above the chat list or via search.</p>
<p>To use the functions, long tap or right click a chat in the chat list.</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="what-does-the-green-dot-mean">
@@ -308,25 +346,53 @@ Archived chats remain accessible above the chat list or via search.</p>
</h3>
<p>You can sometimes see a <strong>green dot</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" />
next to the avatar of a contact.
It means they were <strong>recently seen</strong> in the last 10 minutes:</p>
<ul>
<li>Since Delta Chat 1.34 you can sometimes see a “green dot” next to the avatar
of a contact. It means they were “recently seen”.</li>
<li>In detail: it means, that in the last 10 minutes, Delta Chat has seen them:
<ul>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>or because they sent data to your Delta Chat app by using a
<a href="#webxdc">webxdc app</a>.</li>
</ul>
</li>
<li>So this is not a real time online status - and if someone doesnt answer
right away even though they seem to be online, dont worry and give them some
space ;-)</li>
<li>On the other hand, others will not always “see that you are online”. If you
have turned off read receipts, they will not see the green dot until you
message them or write to a group theyre in as well.</li>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>because they edit or delete a message in a chat shared with you,</li>
<li>or because they use an <a href="#webxdc">app</a> in a chat shared with you.</li>
</ul>
<p>So this is not a real time online status -
and if someone doesnt answer right away even though they seem to be online,
dont worry and give them some space :)</p>
<p>On the other hand, others will not always “see that you are online”.
If you have turned off read receipts,
they will not see the green dot
until one of the above conditions are met.</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -599,16 +665,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -621,14 +687,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -643,7 +710,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -651,10 +718,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="encryption-and-security">
<h2 id="e2ee">
Encryption and Security <a href="#encryption-and-security" class="anchor"></a>
Encryption and Security <a href="#e2ee" class="anchor"></a>
</h2>
@@ -667,18 +734,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -688,28 +763,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -718,141 +802,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -877,19 +880,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -899,7 +901,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -942,17 +944,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -964,10 +964,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1030,74 +1026,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="how-can-i-check-the-encryption-status-of-messages">
How can I check the encryption status of messages? <a href="#how-can-i-check-the-encryption-status-of-messages" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="why-do-i-see-unencrypted-messages">
Why do I see unencrypted messages? <a href="#why-do-i-see-unencrypted-messages" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>If you dont need a longer-lived copy of your messages on the server,
you can also turn on <a href="#delold">“delete messages from server automatically”</a>.</p>
<h3 id="pfs">
@@ -1106,45 +1034,35 @@ you can also turn on <a href="#delold">“delete messages from server automatica
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Yes.</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1154,40 +1072,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Yes.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Alternatively, you can import the key manually in “Settings -&gt; Advanced settings -&gt; Import secret keys”.
Caution: Make sure the key is not protected by a password, or remove the password beforehand.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>If you dont have a key or dont even know you would need one - dont worry: Delta Chat generates keys as needed, you dont have to hit a button for it.</p>
<h3 id="nemohu-do-delta-chatu-zavést-můj-stávající-pgp-klíč">
Nemohu do Delta Chatu zavést můj stávající PGP klíč. <a href="#nemohu-do-delta-chatu-zavést-můj-stávající-pgp-klíč" class="anchor"></a>
</h3>
<p>Nejpravděpodobnější příčinou jsou zašifrované klíče, nebo klíče s heslem.
Takové klíče Delta Chat nepodporuje.  Můžeš odstranit šifrování nebo heslo a
zkusit to znovu. Pokud je potřeba použít zaheslovaný klíč vytvoř / použij zástupnou
adresua a pak přidej nový Delta Chat účet s tímto klíčem.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>Delta Chat podporuje běžné formáty OpenPGP klíčů, nicméně neočekáváme,
že soukromé klíče ze všech aplikací budou fungovat. To není cíl, a
ve skutečnosti věttšina nových uživatelů Delta Chatu nemá žádný stávající klíč.
Přesto se snažíme podporovat soukromé klíče z co nejvíce možných zdrojů.</p>
<p>Odstranění hesla ze soukromého klíče závisí na programu ze kterého PGP klíč pochází.
Enigmail umí nastavit prázdnou hodnotu hesla v okně Key Management.
U GnuPG lze to samé nastavit <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">z příkazové řádky</a>.
Pro ostatní programy by mělo jít nalézt řešení na Interentu.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1197,10 +1089,25 @@ Pro ostatní programy by mělo jít nalézt řešení na Interentu.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1266,7 +1173,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
</h3>
<p>Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Yes. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1323,6 +1230,10 @@ which is known to cause problems (especially on Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Ensure there is <strong>enough storage</strong> on the destination device</p>
@@ -1370,6 +1281,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Yes.</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="je-v-plánu-vytvořit-webovou-verzi-delta-chatu">
@@ -1415,9 +1343,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="where-can-i-get-webxdc-apps">
@@ -1490,7 +1419,7 @@ will not get interrupted by a video chat invite.</li>
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
this way, you will have a new random Jitsi room every time you call someone.</li>
</ul>
<h3 id="what-are-broadcast-lists-and-how-can-i-use-them">
@@ -1501,21 +1430,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>With a Broadcast List you can send a message to many recipents at once; when
they reply to you, you get the reply in your direct 1:1 chat with them. The
recipients cant see each other.</li>
<li>Technically, it is an E-Mail with many recipients in BCC.</li>
<li>You can turn on the feature in the “experimental features” section in the
advanced settings. Then you can create a Broadcast List from the “New Chat”
dialog.</li>
<li>In case you are using more than one device, Broadcast Lists are currently not
synced between them.</li>
<li>Messages sent to broadcast lists are not encrypted. Encryption would break
anonymity, because then all recipients would know who else received it
(Sending individual mails to everyone would be worse for rate limit and network
consumption reason).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="how-can-i-share-my-location-with-my-chat-partners">
@@ -1572,6 +1490,11 @@ DeltaChat. To je něco co za běžných okolností dělá Delta Chat sám.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1674,19 +1597,19 @@ Nicméně, někteří poskytovatelé vyžadují ke správnému chodu speciální
podrobnější popis je na <a href="https://providers.delta.chat">Provider Overview</a></li>
</ul>
<h3 id="i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
I want to manage my own e-mail server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Most mail servers will work well. But what we personally recommend is a
combination of mailcow and mailadm, as described <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">in this
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://delta.chat/cs/serverguide">installation guide on our website</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="proč-musím-delta-chatu-zadat-mé-e-mailové-heslo-je-to-bezpečné">
@@ -1702,7 +1625,7 @@ program potřebuje heslo k tomu aby mohl posílat e-maily. Samozřejmě, že
heslo je uloženo pouze na tvém přístroji. Heslo je přenášeno pouze při přihlašení
k e-mailovému serveru, který má i beztak přístup k tvým e-mailům.</p>
<p>Delta Chat má otevřený <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">zdrojový kód</a>,
<p>Delta Chat má otevřený <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">zdrojový kód</a>,
ze kterého lze ověřit, že program s osobními daty zachází bezpečně. Jsme rádi
za každou odezvu, která udělá Delta Chat bezpečnější pro všechny.</p>
@@ -1815,25 +1738,24 @@ složku Příchozí / Inbox pro všechny zprávy i místo složky DeltaChat. Pok
“Sleduj složku DeltaChat”, zruš také “přesouvat zprávy do složky DeltaChat”. Jinak
hrozí, že mazání zpráv či nastavení na několika zařízeních nebude správně fungovat.</p>
<h3 id="lze-delta-chat-používat-s-protonmail--tutanota--criptext">
<h3 id="lze-delta-chat-používat-s-proton-mail--tutanota--criptext">
Lze Delta Chat používat s Protonmail / Tutanota / Criptext? <a href="#lze-delta-chat-používat-s-protonmail--tutanota--criptext" class="anchor"></a>
Lze Delta Chat používat s Proton Mail / Tutanota / Criptext? <a href="#lze-delta-chat-používat-s-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
encrypted, though. The end-to-end encryption those providers offer is not
compatible with <a href="https://autocrypt.org/">Autocrypt</a>, the standard Delta Chat
uses.</li>
<li>Delta Chat can end-to-end-encrypt through any e-mail provider with any
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
<li>Ano a Ne.</li>
<li>Nelze používat účty na Proton Mail, Tutanota, či Criptext z aplikace Delta
Chat; protože neposkytují příjem e-mailů pomocí IMAPu.</li>
<li>Každopádně ale lze Delta Chat použít k posílání zpráv lidem užívající
Protonmail, Tutanota, či Criptext. Tyto zprávy však nebudou šifrované end-to-end.
End-to-end šifrování nabízené těmito poskytovateli funguje pouze na jejich platformě,
a není slučitelné s chodem běžných E-mail serverů.</li>
<li>Delta Chat je schopen výměny end-to-end šifrovaných zpráv s jakýmkoli poskytovatelem
e-mailu s podporou <a href="https://autocrypt.org/dev-status.html">Autocryptu</a>.</li>
</ul>
<h3 id="remove-account">
@@ -1878,7 +1800,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>Dobrý začátek je <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Standards used in Delta Chat</a>.</li>
<li>Dobrý začátek je <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standards used in Delta Chat</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -2000,9 +1922,9 @@ stavu.</p>
Freiburg (Germany), and is distributed to more than a dozen contributors world-wide.</p>
<p>Please see <a href="https://delta.chat/cs/contribute">Delta Chat Contribution channels</a>
for both monetary and and other contribution possibilities.</p>
for both monetary and other contribution possibilities.</p>
</body></html>
</body></html>
File diff suppressed because it is too large Load Diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 349 B

+272 -351
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#what-is-delta-chat">What is Delta Chat?</a>
<ul>
<li><a href="#how-can-i-find-people-to-chat-with">How can I find people to chat with?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#who-sees-my-profile-picture">Who sees my profile picture?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#what-do-pinning-muting-and-archiving-mean">What do Pinning, Muting and Archiving mean?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#what-does-the-green-dot-mean">What does the green dot mean?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#encryption-and-security">Encryption and Security</a>
<li><a href="#e2ee">Encryption and Security</a>
<ul>
<li><a href="#which-standards-are-used-for-end-to-end-encryption">Which standards are used for end-to-end encryption?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">Is OpenPGP secure?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#is-delta-chat-vulnerable-to-efail">Is Delta Chat vulnerable to EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">How does Delta Chat protect metadata in messages?</a></li>
<li><a href="#device-seizure">How to protect metadata and contacts when a device is seized?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#how-can-i-check-the-encryption-status-of-messages">How can I check the encryption status of messages?</a></li>
<li><a href="#why-do-i-see-unencrypted-messages">Why do I see unencrypted messages?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Can I reuse my existing private key?</a></li>
<li><a href="#i-cant-import-my-existing-pgp-key-into-delta-chat">I cant import my existing PGP key into Delta Chat.</a></li>
<li><a href="#security-audits">Was Delta Chat independently audited for security vulnerabilities?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#can-i-use-delta-chat-on-multiple-devices-at-the-same-time">Can I use Delta Chat on multiple devices at the same time?</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#are-there-any-plans-for-introducing-a-delta-chat-web-client">Are there any plans for introducing a Delta Chat Web Client?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#which-permissions-does-delta-chat-need">Which permissions does Delta Chat need?</a></li>
<li><a href="#does-delta-chat-work-with-my-e-mail-provider">Does Delta Chat work with <em>my</em> e-mail-provider?</a></li>
<li><a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">I want to manage my own e-mail server for Delta Chat. What do you recommend?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#why-do-i-have-to-enter-my-e-mail-password-into-delta-chat-is-this-secure">Why do I have to enter my E-Mail password into Delta Chat? Is this secure?</a></li>
<li><a href="#which-messages-do-appear-in-delta-chat">Which messages do appear in Delta Chat?</a></li>
<li><a href="#does-delta-chat-support-html-e-mails">Does Delta Chat support HTML e-mails?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#what-is-the-send-copy-to-self-setting-good-for">What is the “Send Copy to Self” setting good for?</a></li>
<li><a href="#why-can-i-choose-to-watch-the-sent-folder">Why can I choose to watch the “Sent” folder?</a></li>
<li><a href="#why-can-i-choose-not-to-watch-the-deltachat-folder">Why can I choose not to watch the DeltaChat folder?</a></li>
<li><a href="#is-delta-chat-compatible-with-protonmail--tutanota--criptext">Is Delta Chat compatible with Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#is-delta-chat-compatible-with-proton-mail--tutanota--criptext">Is Delta Chat compatible with Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">How can I delete my account?</a></li>
<li><a href="#im-interested-in-the-technical-details-can-you-tell-me-more">Im interested in the technical details. Can you tell me more?</a></li>
<li><a href="#where-can-my-friends-find-delta-chat">Where can my friends find Delta Chat?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>If a message comes from an unknown contact, it appears as a <strong>request</strong>.</p>
<ul>
<li>If a message comes from an unknown contact, it appears as a <strong>request</strong>. You
need to accept the request before you can reply.</li>
<li>You can also “delete” it if you dont want to chat with them for now. This
does <em>not</em> delete the message on the server, only on your device. So you can
still deal with the message in a different mail app.</li>
<li>If you delete a request, future messages from that contact will still appear
<li>
<p>You need to <strong>accept</strong> the request before you can reply.</p>
</li>
<li>
<p>You can also <strong>delete</strong> it if you dont want to chat with them for now.</p>
</li>
<li>
<p>If you delete a request, future messages from that contact will still appear
as message request, so you can change your mind. If you really dont want to
receive messages from this person, consider <em>blocking</em> them.</li>
receive messages from this person, consider <strong>blocking</strong> them.</p>
</li>
</ul>
<h3 id="does-delta-chat-support-images-videos-and-other-attachments">
@@ -203,7 +206,7 @@ receive messages from this person, consider <em>blocking</em> them.</li>
<ul>
<li>
<p>Yes. Beside the plain text, all e-mail attachments are displayed as separate messages. Outgoing messages get attachments as needed automatically.</p>
<p>Yes. Images, videos, files, voice messages etc. are handled as usual.</p>
</li>
<li>
<p>For performance, images are optimized and sent at a smaller size by default, but you can send it as a “file” to preserve the original.</p>
@@ -304,6 +307,41 @@ Archived chats remain accessible above the chat list or via search.</p>
<p>To use the functions, long tap or right click a chat in the chat list.</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="what-does-the-green-dot-mean">
@@ -312,25 +350,53 @@ Archived chats remain accessible above the chat list or via search.</p>
</h3>
<p>You can sometimes see a <strong>green dot</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" />
next to the avatar of a contact.
It means they were <strong>recently seen</strong> in the last 10 minutes:</p>
<ul>
<li>Since Delta Chat 1.34 you can sometimes see a “green dot” next to the avatar
of a contact. It means they were “recently seen”.</li>
<li>In detail: it means, that in the last 10 minutes, Delta Chat has seen them:
<ul>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>or because they sent data to your Delta Chat app by using a
<a href="#webxdc">webxdc app</a>.</li>
</ul>
</li>
<li>So this is not a real time online status - and if someone doesnt answer
right away even though they seem to be online, dont worry and give them some
space ;-)</li>
<li>On the other hand, others will not always “see that you are online”. If you
have turned off read receipts, they will not see the green dot until you
message them or write to a group theyre in as well.</li>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>because they edit or delete a message in a chat shared with you,</li>
<li>or because they use an <a href="#webxdc">app</a> in a chat shared with you.</li>
</ul>
<p>So this is not a real time online status -
and if someone doesnt answer right away even though they seem to be online,
dont worry and give them some space :)</p>
<p>On the other hand, others will not always “see that you are online”.
If you have turned off read receipts,
they will not see the green dot
until one of the above conditions are met.</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -603,16 +669,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -625,14 +691,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -647,7 +714,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -655,10 +722,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="encryption-and-security">
<h2 id="e2ee">
Encryption and Security <a href="#encryption-and-security" class="anchor"></a>
Encryption and Security <a href="#e2ee" class="anchor"></a>
</h2>
@@ -671,18 +738,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -692,28 +767,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -722,141 +806,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -881,19 +884,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -903,7 +905,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -946,17 +948,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -968,10 +968,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1034,74 +1030,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="how-can-i-check-the-encryption-status-of-messages">
How can I check the encryption status of messages? <a href="#how-can-i-check-the-encryption-status-of-messages" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="why-do-i-see-unencrypted-messages">
Why do I see unencrypted messages? <a href="#why-do-i-see-unencrypted-messages" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>If you dont need a longer-lived copy of your messages on the server,
you can also turn on <a href="#delold">“delete messages from server automatically”</a>.</p>
<h3 id="pfs">
@@ -1110,45 +1038,35 @@ you can also turn on <a href="#delold">“delete messages from server automatica
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Yes.</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1158,42 +1076,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Yes.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Alternatively, you can import the key manually in “Settings -&gt; Advanced settings -&gt; Import secret keys”.
Caution: Make sure the key is not protected by a password, or remove the password beforehand.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>If you dont have a key or dont even know you would need one - dont worry: Delta Chat generates keys as needed, you dont have to hit a button for it.</p>
<h3 id="i-cant-import-my-existing-pgp-key-into-delta-chat">
I cant import my existing PGP key into Delta Chat. <a href="#i-cant-import-my-existing-pgp-key-into-delta-chat" class="anchor"></a>
</h3>
<p>The most likely cause is that your key is encrypted and/or uses a password.
Such keys are not supported by Delta Chat.
You could remove the passphrase encryption and the password and try the import again.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>Delta Chat supports common OpenPGP private key formats, however, it
is unlikely that private keys from all sources will be fully supported. This
is not the main goal of Delta Chat. In fact, the majority of new users
will not have any key prior to using Delta Chat.
We do, however, try to support private keys from as many sources as possible.</p>
<p>Removing the password from the private key will depend on the
software you use to manage your PGP keys. With Enigmail, you can set your
password to an empty value in the Key Management window. With GnuPG you can set
it <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">via the command
line</a>.
For other programs, you should be able to find a solution online.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1203,10 +1093,25 @@ For other programs, you should be able to find a solution online.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1272,7 +1177,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
</h3>
<p>Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Yes. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1329,6 +1234,10 @@ which is known to cause problems (especially on Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Ensure there is <strong>enough storage</strong> on the destination device</p>
@@ -1376,6 +1285,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Yes.</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="are-there-any-plans-for-introducing-a-delta-chat-web-client">
@@ -1422,9 +1348,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="where-can-i-get-webxdc-apps">
@@ -1497,7 +1424,7 @@ will not get interrupted by a video chat invite.</li>
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
this way, you will have a new random Jitsi room every time you call someone.</li>
</ul>
<h3 id="what-are-broadcast-lists-and-how-can-i-use-them">
@@ -1508,21 +1435,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>With a Broadcast List you can send a message to many recipents at once; when
they reply to you, you get the reply in your direct 1:1 chat with them. The
recipients cant see each other.</li>
<li>Technically, it is an E-Mail with many recipients in BCC.</li>
<li>You can turn on the feature in the “experimental features” section in the
advanced settings. Then you can create a Broadcast List from the “New Chat”
dialog.</li>
<li>In case you are using more than one device, Broadcast Lists are currently not
synced between them.</li>
<li>Messages sent to broadcast lists are not encrypted. Encryption would break
anonymity, because then all recipients would know who else received it
(Sending individual mails to everyone would be worse for rate limit and network
consumption reason).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="how-can-i-share-my-location-with-my-chat-partners">
@@ -1579,6 +1495,11 @@ would be done by the Delta Chat app.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1681,19 +1602,19 @@ However, some providers need special options to work properly,
see <a href="https://providers.delta.chat">Provider Overview</a></li>
</ul>
<h3 id="i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
I want to manage my own e-mail server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Most mail servers will work well. But what we personally recommend is a
combination of mailcow and mailadm, as described <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">in this
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://delta.chat/en/serverguide">installation guide on our website</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="why-do-i-have-to-enter-my-e-mail-password-into-delta-chat-is-this-secure">
@@ -1709,7 +1630,7 @@ program needs the password so you can use it to send and receive mails. Of cours
password is stored only on your device. The password is only transmitted to
your E-Mail provider (when you login), which has access to your mails anyway.</p>
<p>As Delta Chat is Open Source, you can check the <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Source
<p>As Delta Chat is Open Source, you can check the <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Source
Code</a>
if you want to verify that your credentials are handled securely. We are happy
about feedback which makes the app more secure for all of our users.</p>
@@ -1824,17 +1745,17 @@ folder for their mail, instead of the DeltaChat folder. If you disable “Watch
DeltaChat folder”, you should also disable “move chat messages to DeltaChat”.
Otherwise, deleting messages or multi-device setups might not work properly.</p>
<h3 id="is-delta-chat-compatible-with-protonmail--tutanota--criptext">
<h3 id="is-delta-chat-compatible-with-proton-mail--tutanota--criptext">
Is Delta Chat compatible with Protonmail / Tutanota / Criptext? <a href="#is-delta-chat-compatible-with-protonmail--tutanota--criptext" class="anchor"></a>
Is Delta Chat compatible with Proton Mail / Tutanota / Criptext? <a href="#is-delta-chat-compatible-with-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
<li>No, you can not use your Proton Mail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
@@ -1887,7 +1808,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>See <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Standards used in Delta Chat</a>.</li>
<li>See <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standards used in Delta Chat</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -2009,9 +1930,9 @@ even close.</p>
Freiburg (Germany), and is distributed to more than a dozen contributors world-wide.</p>
<p>Please see <a href="https://delta.chat/en/contribute">Delta Chat Contribution channels</a>
for both monetary and and other contribution possibilities.</p>
for both monetary and other contribution possibilities.</p>
</body></html>
</body></html>
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

+270 -349
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="id"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#apa-itu-delta-chat">Apa itu Delta Chat?</a>
<ul>
<li><a href="#bagaimana-saya-bisa-menemukan-orang-untuk-diajak-ngobrol">Bagaimana Saya bisa menemukan orang untuk diajak ngobrol?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#siapa-yang-dapat-melihat-foto-profil-saya">Siapa yang dapat melihat Foto Profil saya?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#what-do-pinning-muting-and-archiving-mean">What do Pinning, Muting and Archiving mean?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#what-does-the-green-dot-mean">What does the green dot mean?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#encryption-and-security">Encryption and Security</a>
<li><a href="#e2ee">Encryption and Security</a>
<ul>
<li><a href="#which-standards-are-used-for-end-to-end-encryption">Which standards are used for end-to-end encryption?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">Is OpenPGP secure?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#is-delta-chat-vulnerable-to-efail">Is Delta Chat vulnerable to EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">How does Delta Chat protect metadata in messages?</a></li>
<li><a href="#device-seizure">How to protect metadata and contacts when a device is seized?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#how-can-i-check-the-encryption-status-of-messages">How can I check the encryption status of messages?</a></li>
<li><a href="#why-do-i-see-unencrypted-messages">Why do I see unencrypted messages?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Can I reuse my existing private key?</a></li>
<li><a href="#i-cant-import-my-existing-pgp-key-into-delta-chat">I cant import my existing PGP key into Delta Chat.</a></li>
<li><a href="#security-audits">Was Delta Chat independently audited for security vulnerabilities?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#can-i-use-delta-chat-on-multiple-devices-at-the-same-time">Can I use Delta Chat on multiple devices at the same time?</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#are-there-any-plans-for-introducing-a-delta-chat-web-client">Are there any plans for introducing a Delta Chat Web Client?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#izin-apa-yang-dibutuhkan-delta-chat">Izin apa yang dibutuhkan Delta Chat?</a></li>
<li><a href="#does-delta-chat-work-with-my-e-mail-provider">Does Delta Chat work with <em>my</em> e-mail-provider?</a></li>
<li><a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">I want to manage my own e-mail server for Delta Chat. What do you recommend?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#mengapa-saya-harus-memasukkan-kata-sandi-e-mail-saya-ke-delta-chat-apakah-ini-aman">Mengapa saya harus memasukkan kata sandi E-Mail saya ke Delta Chat? Apakah ini aman?</a></li>
<li><a href="#pesan-mana-yang-muncul-di-delta-chat">Pesan mana yang muncul di Delta Chat?</a></li>
<li><a href="#apakah-delta-chat-mendukung-email-html">Apakah Delta Chat mendukung email HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#what-is-the-send-copy-to-self-setting-good-for">What is the “Send Copy to Self” setting good for?</a></li>
<li><a href="#why-can-i-choose-to-watch-the-sent-folder">Why can I choose to watch the “Sent” folder?</a></li>
<li><a href="#why-can-i-choose-not-to-watch-the-deltachat-folder">Why can I choose not to watch the DeltaChat folder?</a></li>
<li><a href="#is-delta-chat-compatible-with-protonmail--tutanota--criptext">Is Delta Chat compatible with Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#is-delta-chat-compatible-with-proton-mail--tutanota--criptext">Is Delta Chat compatible with Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">How can I delete my account?</a></li>
<li><a href="#im-interested-in-the-technical-details-can-you-tell-me-more">Im interested in the technical details. Can you tell me more?</a></li>
<li><a href="#where-can-my-friends-find-delta-chat">Where can my friends find Delta Chat?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>If a message comes from an unknown contact, it appears as a <strong>request</strong>.</p>
<ul>
<li>If a message comes from an unknown contact, it appears as a <strong>request</strong>. You
need to accept the request before you can reply.</li>
<li>You can also “delete” it if you dont want to chat with them for now. This
does <em>not</em> delete the message on the server, only on your device. So you can
still deal with the message in a different mail app.</li>
<li>If you delete a request, future messages from that contact will still appear
<li>
<p>You need to <strong>accept</strong> the request before you can reply.</p>
</li>
<li>
<p>You can also <strong>delete</strong> it if you dont want to chat with them for now.</p>
</li>
<li>
<p>If you delete a request, future messages from that contact will still appear
as message request, so you can change your mind. If you really dont want to
receive messages from this person, consider <em>blocking</em> them.</li>
receive messages from this person, consider <strong>blocking</strong> them.</p>
</li>
</ul>
<h3 id="apakah-delta-chat-mendukung-gambar-vidio-dan-lampiran-lainnya">
@@ -304,6 +307,41 @@ Archived chats remain accessible above the chat list or via search.</p>
<p>To use the functions, long tap or right click a chat in the chat list.</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="what-does-the-green-dot-mean">
@@ -312,25 +350,53 @@ Archived chats remain accessible above the chat list or via search.</p>
</h3>
<p>You can sometimes see a <strong>green dot</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" />
next to the avatar of a contact.
It means they were <strong>recently seen</strong> in the last 10 minutes:</p>
<ul>
<li>Since Delta Chat 1.34 you can sometimes see a “green dot” next to the avatar
of a contact. It means they were “recently seen”.</li>
<li>In detail: it means, that in the last 10 minutes, Delta Chat has seen them:
<ul>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>or because they sent data to your Delta Chat app by using a
<a href="#webxdc">webxdc app</a>.</li>
</ul>
</li>
<li>So this is not a real time online status - and if someone doesnt answer
right away even though they seem to be online, dont worry and give them some
space ;-)</li>
<li>On the other hand, others will not always “see that you are online”. If you
have turned off read receipts, they will not see the green dot until you
message them or write to a group theyre in as well.</li>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>because they edit or delete a message in a chat shared with you,</li>
<li>or because they use an <a href="#webxdc">app</a> in a chat shared with you.</li>
</ul>
<p>So this is not a real time online status -
and if someone doesnt answer right away even though they seem to be online,
dont worry and give them some space :)</p>
<p>On the other hand, others will not always “see that you are online”.
If you have turned off read receipts,
they will not see the green dot
until one of the above conditions are met.</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -603,16 +669,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -625,14 +691,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -647,7 +714,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -655,10 +722,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="encryption-and-security">
<h2 id="e2ee">
Encryption and Security <a href="#encryption-and-security" class="anchor"></a>
Encryption and Security <a href="#e2ee" class="anchor"></a>
</h2>
@@ -671,18 +738,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -692,28 +767,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -722,141 +806,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -881,19 +884,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -903,7 +905,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -946,17 +948,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -968,10 +968,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1034,74 +1030,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="how-can-i-check-the-encryption-status-of-messages">
How can I check the encryption status of messages? <a href="#how-can-i-check-the-encryption-status-of-messages" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="why-do-i-see-unencrypted-messages">
Why do I see unencrypted messages? <a href="#why-do-i-see-unencrypted-messages" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>If you dont need a longer-lived copy of your messages on the server,
you can also turn on <a href="#delold">“delete messages from server automatically”</a>.</p>
<h3 id="pfs">
@@ -1110,45 +1038,35 @@ you can also turn on <a href="#delold">“delete messages from server automatica
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Yes.</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1158,42 +1076,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Yes.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Alternatively, you can import the key manually in “Settings -&gt; Advanced settings -&gt; Import secret keys”.
Caution: Make sure the key is not protected by a password, or remove the password beforehand.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>If you dont have a key or dont even know you would need one - dont worry: Delta Chat generates keys as needed, you dont have to hit a button for it.</p>
<h3 id="i-cant-import-my-existing-pgp-key-into-delta-chat">
I cant import my existing PGP key into Delta Chat. <a href="#i-cant-import-my-existing-pgp-key-into-delta-chat" class="anchor"></a>
</h3>
<p>The most likely cause is that your key is encrypted and/or uses a password.
Such keys are not supported by Delta Chat.
You could remove the passphrase encryption and the password and try the import again.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>Delta Chat supports common OpenPGP private key formats, however, it
is unlikely that private keys from all sources will be fully supported. This
is not the main goal of Delta Chat. In fact, the majority of new users
will not have any key prior to using Delta Chat.
We do, however, try to support private keys from as many sources as possible.</p>
<p>Removing the password from the private key will depend on the
software you use to manage your PGP keys. With Enigmail, you can set your
password to an empty value in the Key Management window. With GnuPG you can set
it <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">via the command
line</a>.
For other programs, you should be able to find a solution online.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1203,10 +1093,25 @@ For other programs, you should be able to find a solution online.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1272,7 +1177,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
</h3>
<p>Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Yes. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1329,6 +1234,10 @@ which is known to cause problems (especially on Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Ensure there is <strong>enough storage</strong> on the destination device</p>
@@ -1376,6 +1285,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Yes.</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="are-there-any-plans-for-introducing-a-delta-chat-web-client">
@@ -1422,9 +1348,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="where-can-i-get-webxdc-apps">
@@ -1497,7 +1424,7 @@ will not get interrupted by a video chat invite.</li>
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
this way, you will have a new random Jitsi room every time you call someone.</li>
</ul>
<h3 id="what-are-broadcast-lists-and-how-can-i-use-them">
@@ -1508,21 +1435,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>With a Broadcast List you can send a message to many recipents at once; when
they reply to you, you get the reply in your direct 1:1 chat with them. The
recipients cant see each other.</li>
<li>Technically, it is an E-Mail with many recipients in BCC.</li>
<li>You can turn on the feature in the “experimental features” section in the
advanced settings. Then you can create a Broadcast List from the “New Chat”
dialog.</li>
<li>In case you are using more than one device, Broadcast Lists are currently not
synced between them.</li>
<li>Messages sent to broadcast lists are not encrypted. Encryption would break
anonymity, because then all recipients would know who else received it
(Sending individual mails to everyone would be worse for rate limit and network
consumption reason).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="how-can-i-share-my-location-with-my-chat-partners">
@@ -1579,6 +1495,11 @@ would be done by the Delta Chat app.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1681,19 +1602,19 @@ However, some providers need special options to work properly,
see <a href="https://providers.delta.chat">Provider Overview</a></li>
</ul>
<h3 id="i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
I want to manage my own e-mail server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Most mail servers will work well. But what we personally recommend is a
combination of mailcow and mailadm, as described <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">in this
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://delta.chat/id/serverguide">installation guide on our website</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="mengapa-saya-harus-memasukkan-kata-sandi-e-mail-saya-ke-delta-chat-apakah-ini-aman">
@@ -1709,7 +1630,7 @@ program membutuhkan kata sandi sehingga Anda dapat menggunakannya untuk mengirim
kata sandi hanya disimpan di perangkat Anda. Kata sandi hanya dikirimkan ke
penyedia E-Mail Anda (saat Anda login), yang tetap memiliki akses ke email Anda.</p>
<p>Karena Delta Chat adalah Open Source, Anda dapat memeriksa file <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Source
<p>Karena Delta Chat adalah Open Source, Anda dapat memeriksa file <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Source
Code</a>
jika Anda ingin memverifikasi bahwa kredensial Anda ditangani dengan aman. Kami bahagia
tentang umpan balik yang membuat aplikasi lebih aman untuk semua pengguna kami.</p>
@@ -1824,17 +1745,17 @@ folder for their mail, instead of the DeltaChat folder. If you disable “Watch
DeltaChat folder”, you should also disable “move chat messages to DeltaChat”.
Otherwise, deleting messages or multi-device setups might not work properly.</p>
<h3 id="is-delta-chat-compatible-with-protonmail--tutanota--criptext">
<h3 id="is-delta-chat-compatible-with-proton-mail--tutanota--criptext">
Is Delta Chat compatible with Protonmail / Tutanota / Criptext? <a href="#is-delta-chat-compatible-with-protonmail--tutanota--criptext" class="anchor"></a>
Is Delta Chat compatible with Proton Mail / Tutanota / Criptext? <a href="#is-delta-chat-compatible-with-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
<li>No, you can not use your Proton Mail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
@@ -1887,7 +1808,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>See <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Standards used in Delta Chat</a>.</li>
<li>See <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standards used in Delta Chat</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -2014,4 +1935,4 @@ untuk mengetahui kemungkinan kontribusi moneter dan kontribusi lainnya.</p>
</body></html>
</body></html>
+291 -363
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="it"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#cosè-delta-chat">Cos’è Delta Chat?</a>
<ul>
<li><a href="#come-posso-trovare-persone-con-cui-messaggiare">Come posso trovare persone con cui messaggiare?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#chi-vede-la-mia-immagine-del-profilo">Chi vede la mia immagine del profilo?</a></li>
<li><a href="#signature">Posso impostare una Bio/Firma/Stato/Motto con Delta Chat?</a></li>
<li><a href="#cosa-significa-fissare-silenziare-archiviare">Cosa significa Fissare, Silenziare, Archiviare?</a></li>
<li><a href="#save">Come funziona “Messaggi Salvati”?</a></li>
<li><a href="#cosa-significa-il-punto-verde">Cosa significa il punto verde?</a></li>
<li><a href="#edit">Correggi gli errori e cancella i messaggi dopo averli inviati</a></li>
<li><a href="#ephemeralmsgs">Come funzionano i messaggi a scomparsa?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#perché-delta-chat-si-integra-con-i-servizi-push-centralizzati-proprietari-di-applegoogle">Perché Delta Chat si integra con i servizi push centralizzati proprietari di Apple/Google?</a></li>
</ul>
</li>
<li><a href="#crittografia-e-sicurezza">Crittografia e Sicurezza</a>
<li><a href="#e2ee">Crittografia e Sicurezza</a>
<ul>
<li><a href="#quali-standards-vengono-utilizzati-per-la-crittografia-end-to-end">Quali standards vengono utilizzati per la crittografia end-to-end?</a></li>
<li><a href="#whene2e">Come posso sapere se i messaggi sono crittografati end-to-end?</a></li>
<li><a href="#howtoe2ee">Come posso ottenere la crittografia end-to-end garantita e i segni di spunta verdi?</a></li>
<li><a href="#e2eeguarantee">Cosa significano il segno di spunta verde e la “crittografia end-to-end garantita”?</a></li>
<li><a href="#nocryptanymore">Un contatto “ha inviato un messaggio da un altro dispositivo”, cosa posso fare?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#gli-allegati-immagini-file-audio-ecc-sono-crittografati-end-to-end">Gli allegati (immagini, file, audio, ecc.) sono crittografati end-to-end?</a></li>
<li><a href="#openpgp-secure">OpenPGP è sicuro?</a></li>
<li><a href="#openpgp-alternative">Avete considerato lutilizzo di alternative a OpenPGP per la crittografia end-to-end?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#delta-chat-è-vulnerabile-agli-efail">Delta Chat è vulnerabile agli EFAIL?</a></li>
<li><a href="#tls">Un messaggio viene esposto in chiaro se la crittografia end-to-end non è disponibile?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">In che modo Delta Chat protegge i metadati nei messaggi?</a></li>
<li><a href="#device-seizure">Come proteggere i metadati e contatti quando un dispositivo viene sequestrato?</a></li>
<li><a href="#come-posso-verificare-le-informazioni-di-crittografia">Come posso verificare le informazioni di crittografia?</a></li>
<li><a href="#come-posso-verificare-lo-stato-di-crittografia-dei-messaggi">Come posso verificare lo stato di crittografia dei messaggi?</a></li>
<li><a href="#perché-vedo-messaggi-non-crittografati">Perché vedo messaggi non crittografati?</a></li>
<li><a href="#come-posso-ottenere-una-chat-crittografata-end-to-end-con-un-contatto-delta-chat-che-a-volte-utilizza-la-webmail-o-unaltra-app-e-mail-non-autocrypt">Come posso ottenere una chat crittografata end-to-end con un contatto Delta Chat che a volte utilizza la webmail o unaltra app e-mail non Autocrypt?</a></li>
<li><a href="#come-posso-garantire-la-crittografia-e-leliminazione-end-to-end-dei-messaggi">Come posso garantire la crittografia e leliminazione end-to-end dei messaggi?</a></li>
<li><a href="#pfs">Delta Chat supporta Perfect Forward Secrecy?</a></li>
<li><a href="#la-crittografia-end-to-end-di-delta-chat-è-sicura-quanto-quella-di-signal">La crittografia end-to-end di Delta Chat è sicura quanto quella di Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Posso riutilizzare la mia chiave privata esistente?</a></li>
<li><a href="#non-riesco-a-importare-la-mia-chiave-pgp-esistente-in-delta-chat">Non riesco a importare la mia chiave PGP esistente in Delta Chat.</a></li>
<li><a href="#security-audits">Delta Chat è stata verificata in modo indipendente per le vulnerabilità di sicurezza?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#posso-utilizzare-delta-chat-su-più-dispositivi-contemporaneamente">Posso utilizzare Delta Chat su più dispositivi contemporaneamente?</a></li>
<li><a href="#risoluzione-dei-problemi">Risoluzione dei problemi</a></li>
<li><a href="#backup">Trasferimento manuale</a></li>
<li><a href="#cancella-fissa-archivia-salva-silenzia-ecc-sono-sincronizzate-su-tutti-i-dispositivi">Cancella, Fissa, Archivia, Salva, Silenzia ecc. sono sincronizzate su tutti i dispositivi?</a></li>
<li><a href="#sono-previsti-piani-per-lintroduzione-di-un-client-web-delta-chat">Sono previsti piani per lintroduzione di un client Web Delta Chat?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#di-quali-autorizzazioni-ha-bisogno-delta-chat">Di quali autorizzazioni ha bisogno Delta Chat?</a></li>
<li><a href="#delta-chat-funziona-con-il-mio-fornitore-e-mail">Delta Chat funziona con il <em>mio</em> fornitore e-mail?</a></li>
<li><a href="#voglio-gestire-il-mio-server-di-posta-elettronica-per-delta-chat-che-cosa-mi-consigliate">Voglio gestire il mio server di posta elettronica per Delta Chat. Che cosa mi consigliate?</a></li>
<li><a href="#vorrei-gestire-il-mio-server-per-delta-chat-cosa-mi-consigliate">Vorrei gestire il mio server per Delta Chat. Cosa mi consigliate?</a></li>
<li><a href="#perché-devo-inserire-la-mia-password-e-mail-in-delta-chat-è-sicuro">Perché devo inserire la mia password E-Mail in Delta Chat? È sicuro?</a></li>
<li><a href="#quali-messaggi-vengono-mostrati-in-delta-chat">Quali messaggi vengono mostrati in Delta Chat?</a></li>
<li><a href="#delta-chat-supporta-le-e-mail-html">Delta Chat supporta le e-mail HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#a-cosa-serve-limpostazione-invia-copia-a-se-stessi">A cosa serve limpostazione “Invia copia a se stessi”?</a></li>
<li><a href="#perché-posso-scegliere-di-guardare-la-cartella-inviata">Perché posso scegliere di guardare la cartella “Inviata”?</a></li>
<li><a href="#perché-posso-scegliere-di-non-guardare-la-cartella-deltachat">Perché posso scegliere di non guardare la cartella DeltaChat?</a></li>
<li><a href="#delta-chat-è-compatibile-con-protonmail--tutanota--criptext">Delta Chat è compatibile con Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#delta-chat-è-compatibile-con-proton-mail--tutanota--criptext">Delta Chat è compatibile con Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">Come posso eliminare il mio profilo?</a></li>
<li><a href="#sono-interessato-ai-dettagli-tecnici-mi-puoi-dire-di-più">Sono interessato ai dettagli tecnici. Mi puoi dire di più?</a></li>
<li><a href="#dove-possono-trovare-delta-chat-i-miei-amici">Dove possono trovare Delta Chat i miei amici?</a></li>
@@ -169,7 +167,7 @@ sicuro contro gli attacchi alla rete e al server.</p>
</li>
<li>
<p>Software Libero e Open Source, sia lato app che lato server.
Basato su <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">Standard E-mail e Web Internet</a>,
Basato su <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standard E-mail e Web Internet</a>,
<a href="https://xkcd.com/927/">per evitare “lennesima sindrome standard (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Basato su <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/
</h3>
<p>Se un messaggio proviene da un contatto sconosciuto, appare come una <strong>richiesta</strong>.</p>
<ul>
<li>Se un messaggio proviene da un contatto sconosciuto, appare come una <strong>richiesta</strong>. È necessario
accettare la richiesta prima di poter rispondere.</li>
<li>Si può anche “cancellare” il messaggio se non si vuole più chattare con esso. Questo
non cancella il messaggio sul server, ma solo sul dispositivo. Quindi è possibile
continuare a gestire il messaggio in unaltra applicazione di posta.</li>
<li>Se si elimina una richiesta, i futuri messaggi di quel contatto continueranno a essere visualizzati come richieste di contatto
<li>
<p>È necessario <strong>accettare</strong> la richiesta prima di poter rispondere.</p>
</li>
<li>
<p>Si può anche <strong>cancellare</strong> il messaggio se non si vuole più chattare con esso.</p>
</li>
<li>
<p>Se si elimina una richiesta, i futuri messaggi di quel contatto continueranno a essere visualizzati come richieste di contatto
in modo da poter cambiare idea. Se non si vuole davvero ricevere
messaggi da questa persona, prendete in considerazione la possibilità di <em>bloccarla</em>.</li>
messaggi da questa persona, prendete in considerazione la possibilità di <strong>bloccarla</strong>.</p>
</li>
</ul>
<h3 id="delta-chat-supporta-immagini-video-e-altri-allegati">
@@ -304,6 +307,41 @@ Le chat archiviate rimangono accessibili sopra lelenco delle chat o tramite l
<p>Per archiviare o fissare una chat, premi a lungo (Android), usa il menu della chat (Android/Desktop) o striscia verso sinistra (iOS);
per silenziare una chat, usa il menu della chat (Android/Desktop) o il profilo della chat (iOS).</p>
<h3 id="save">
Come funziona “Messaggi Salvati”? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Messaggi Salvati</strong> è una chat che puoi usare per ricordare e trovare facilmente i messaggi.</p>
<ul>
<li>
<p>in qualunque chat, premi a lungo o click destro sul messaggio e seleziona <strong>Salva</strong></p>
</li>
<li>
<p>I messaggi salvati sono marcati col simbolo
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
accanto allora dinvio</p>
</li>
<li>
<p>Successivamente, apri la chat “Messaggi Salvati” - e vedrai là i messaggi che hai salvato.
Toccando<img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
puoi tornare al messaggio originale nella chat di provenienza.</p>
</li>
<li>
<p>Infine, puoi anche usare “Messaggi Salvati” per prendere <strong>appunti</strong> - apri la chat, digita qualcosa, aggiungi una foto o un messaggio vocale, ecc.</p>
</li>
<li>
<p>Dato che i “Messaggi Salvati” sono sincronizzati, possono essere molto comodi per trasferire dati tra i dispositivi</p>
</li>
</ul>
<p>I messaggi restano salvati anche se vengono modificati o eliminati -
che sia dal <a href="#edit">mittente</a>, <a href="#delold">ripulendo il dispositivo</a> o per i <a href="#ephemeralmsgs">messaggi a scomparsa di altre chat</a>.</p>
<h3 id="cosa-significa-il-punto-verde">
@@ -312,23 +350,52 @@ per silenziare una chat, usa il menu della chat (Android/Desktop) o il profilo d
</h3>
<p>A volte puoi vedere un <strong>punto verde</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" /> accanto allavatar</p>
<ul>
<li>A partire da Delta Chat 1.34 a volte puoi vedere un “punto verde” accanto allavatar
di un contatto. Significa che è stato “visto di recente”.</li>
<li>Nel dettaglio: significa che negli ultimi 10 minuti Delta Chat lo ha visto:</li>
<li>
<p>di un contatto. Significa che è stato “visto di recente”. Nel dettaglio: significa che negli ultimi 10 minuti Delta Chat lo ha visto:</p>
</li>
<li>o perché ti ha inviato un messaggio direttamente,</li>
<li>perché ha scritto qualcosa a un gruppo di cui siete entrambi membri,</li>
<li>perché ti ha inviato una conferma di lettura per un messaggio che hai scritto,</li>
<li>o perché ha inviato dati alla tua app Delta Chat utilizzando l
<a href="#webxdc">applicazione webxdc</a>.</li>
<li>Quindi questo non è uno stato online in tempo reale - e se qualcuno non risponde
subito anche se sembra online, non preoccuparti e dagli un po
di spazio ;-)</li>
<li>
<p>o perché ha inviato dati alla tua app Delta Chat utilizzando l<a href="#webxdc">applicazione webxdc</a>.</p>
</li>
<li>
<p>Quindi questo non è uno stato online in tempo reale - e se qualcuno non risponde subito anche se sembra online, non preoccuparti e dagli un po di spazio :)</p>
</li>
<li>Daltra parte, non sempre gli altri “vedranno che sei online”. Se tu
hai disattivato le conferme di lettura, non vedranno il punto verde finché non lo farai tu
invia loro un messaggio o scrivi anche a un gruppo a cui appartengono.</li>
</ul>
<h3 id="edit">
Correggi gli errori e cancella i messaggi dopo averli inviati <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>Puoi modificare il testo dei tuoi messaggi già inviati.
Per farlo, premi a lungo o click destro sul messaggio e seleziona <strong>Edit</strong>
o <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>Se hai inviato un messaggio accidentalmente,
dallo stesso menu, seleziona <strong>Elimina</strong> e quindi <strong>Cancella per Tutti</strong>.</p>
</li>
</ul>
<p>Una volta modificati i messaggi avranno scritto “Modificato” accanto allorario dinvio,
i messaggi eliminati saranno rimossi senza alcun avviso in chat.
Non vengono inviate notifiche e non c’è limite di tempo.</p>
<p>Nota che il messaggio originale potrebbe essere ancora sui dispositivi dei membri della chat
che avrebbero già potuto rispondere, inoltrare, salvare, scattare una schermata o copiare il messaggio in altri modi.</p>
<h3 id="ephemeralmsgs">
@@ -597,17 +664,15 @@ a qualsiasi sistema coinvolto nella consegna di Notifiche Push.</p>
<ul>
<li>
<p>Unapp Delta Chat ottiene un “gettone del dispositivo” localmente e lo memorizza
sul server <a href="https://delta.chat/chatmail">chatmail</a>.</p>
<p>Unapp Delta Chat ottiene un “token del dispositivo” localmente, lo crittografa e lo memorizza sul server <a href="https://delta.chat/chatmail">chatmail</a>.</p>
</li>
<li>
<p>Quando un server <a href="https://delta.chat/chatmail">chatmail</a> riceve une-mail per un utente Delta Chat
inoltra il “gettone del dispositivo” al proxy di notifica centrale di Delta Chat.</p>
<p>Quando un server <a href="https://delta.chat/chatmail">chatmail</a> riceve une-mail per un utente Delta Chat, inoltra il token del dispositivo crittografato al proxy di notifica centrale Delta Chat.</p>
</li>
<li>
<p>Il proxy di notifica centrale di Delta Chat inoltra
il “gettone del dispositivo” al rispettivo servizio Push (Apple, Google, ecc.),
senza mai conoscere lIP o lindirizzo e-mail degli utenti Delta Chat.</p>
<p>Il proxy di notifica centrale di Delta Chat decifra il token del dispositivo
e lo inoltra al rispettivo servizio Push (Apple, Google, ecc.),
senza mai conoscere lIP o lindirizzo e-mail degli utenti di Delta Chat.</p>
</li>
<li>
<p>Il Servizio Push centrale (Apple, Google, ecc.)
@@ -619,14 +684,15 @@ e inoltre non vedono mai il contenuto del messaggio (anche non in forma crittogr
</li>
</ul>
<p>A partire da Maggio 2024, i server chatmail conoscono i “gettoni del dispositivo”
ma prevediamo di crittografare queste informazioni nel proxy di notifica
in modo tale che il server chatmail non apprenda mai il gettone del dispositivo.</p>
<p>Il proxy di notifica centrale di Delta Chat <a href="https://github.com/deltachat/notifiers">è piccolo e completamente implementato in Rust</a>
e si dimentica dei gettoni del dispositivo non appena Apple/Google/ecc li elabora,
di solito nel giro di pochi millisecondi.</p>
<p>Si noti che il token del dispositivo è crittografato tra le app e il proxy di notifica
ma non è firmato.
Il proxy di notifica quindi non vede mai indirizzi e-mail, indirizzi IP o
alcune informazioni di identità crittografica associate al dispositivo di un utente (token).</p>
<p>Come risultato di questo disegno complessivo sulla riservatezza, anche il sequestro di un server chatmail,
o il sequestro totale del proxy di notifica centrale di Delta Chat
non rivelerebbe informazioni private che i servizi Push non abbiano già.</p>
@@ -649,10 +715,10 @@ che consente la “consegna istantanea” dei messaggi a tutti i server chatmail
incluso uno potenziale <a href="https://delta.chat/chatmail#selfhosted">potresti configurarlo tu stesso senza la nostra autorizzazione</a>.
Benvenuti nella potenza del sistema interoperabile e massiccio di chatmail ed e-mail :)</p>
<h2 id="crittografia-e-sicurezza">
<h2 id="e2ee">
Crittografia e Sicurezza <a href="#crittografia-e-sicurezza" class="anchor"></a>
Crittografia e Sicurezza <a href="#e2ee" class="anchor"></a>
</h2>
@@ -665,15 +731,26 @@ Benvenuti nella potenza del sistema interoperabile e massiccio di chatmail ed e-
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> viene utilizzato automaticamente per stabilire la crittografia end-to-end con contatti e chat di gruppo. Autocrypt utilizza un <a href="#openpgp-secure">sottoinsieme limitato e sicuro dello standard OpenPGP</a>. I messaggi crittografati end-to-end sono contrassegnati da un lucchetto
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Protocolli Secure-Join</a>
vengono utilizzati per stabilire chat con crittografia end-to-end garantita
che protegge dagli attacchi di rete e dai server compromessi.
Chat contrassegnata da un segno di spunta verde
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
garantisce messaggi crittografati end-to-end.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -683,28 +760,37 @@ garantisce messaggi crittografati end-to-end.</p>
</h3>
<p>Tutti i messaggi crittografati end-to-end portano un lucchetto:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>La crittografia end-to-end è garantita se è presente un segno di spunta verde accanto al titolo della chat:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
Come posso ottenere la crittografia end-to-end garantita e i segni di spunta verdi? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>Se disponi di un secondo canale di comunicazione con il tuo partner di chat,
come una chat video o un altro messenger,
puoi generare un link dinvito.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>Se siete insieme di persona,
puoi mostrare un codice QR al tuo partner di chat.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -713,139 +799,60 @@ tocca il titolo del gruppo di chat per vedere lelenco dei membri,
e seleziona “Codice QR di Invito”.</p>
</li>
<li>
<p>Per <strong>inviti diretti alla chat 1:1</strong>,
tocca licona del codice QR <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
nella schermata principale dellapp Delta Chat.</p>
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Lascia che il tuo partner di chat esegua la scansione dellimmagine QR
con la loro app Delta Chat,
oppure fai clic su “Copia” o “Condividi” per creare un collegamento di invito
e condividilo con il tuo partner di chat.</p>
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” orShare” to create an invite link
and share it with your chat partner.</p>
<p>Ora attendi che <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">i messaggi di rete Secure-Join vengano scambiati</a> tra entrambi i dispositivi.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>Se entrambi i dispositivi sono online,
entrambe le parti vedranno eventualmente una chat (di gruppo o diretta) con un segno di spunta verde
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
accanto al titolo.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>Se uno dei dispositivi è offline, verranno visualizzati solo i segni di spunta verdi
verranno visualizzati in seguito quando il dispositivo sarà nuovamente connesso a Internet
e il protocollo di rete Secure-Join è stato completato.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulazioni!
Ora utilizzerai automaticamente la crittografia end-to-end garantita
con questo contatto potete aggiungervi a vicenda nei gruppi contrassegnati da un segno di spunta verde
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
diffondendo così automaticamente la crittografia end-to-end garantita tra i suoi membri.</p>
<p>Congratulations!
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
Cosa significano il segno di spunta verde e la “crittografia end-to-end garantita”? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Titoli di chat con segni di spunta verde
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
significa che tutti i messaggi nella chat saranno crittografati end-to-end
e non possono essere letti o modificati da server di e-mail o provider Internet compromessi.
Partecipare alle chat di gruppo contrassegnate da un segno di spunta verde diffonde in modo sicuro le informazioni di crittografia di tutti (e i segni di spunta verdi)
in modo da garantire la crittografia end-to-end nel gruppo e tra i membri.</p>
<p>Profili di contatto con segni di spunta verdi
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
significa che attualmente è garantita la crittografia end-to-end dei messaggi a un contatto.
Ogni contatto contrassegnato dal segno di spunta verde ha effettuato una <a href="#howtoe2ee">scansione QR</a> diretta con te
o è stato presentato da un altro contatto contrassegnato da un segno di spunta verde.
Le presentazioni avvengono automaticamente quando si aggiungono membri ai gruppi.
Chi aggiunge un contatto a un gruppo contrassegnato da un segno di spunta verde diventa un introduttore
a quei membri che non erano ancora a conoscenza del contatto aggiunto. In un profilo di contatto è possibile toccare ripetutamente il testo “Presentato da…”.
fino ad arrivare a quello con cui hai effettuato direttamente una <a href="#howtoe2ee">scansione QR</a>.</p>
<p>Tieni presente che nel profilo di un contatto potresti vedere e toccare gli introduttori
ma non c’è il segno di spunta verde nel titolo del profilo.
Questo di solito significa che il contatto <a href="#nocryptanymore">“ha inviato un messaggio da un altro dispositivo”</a>.</p>
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Per una discussione più approfondita sulla “crittografia end-to-end garantita”
consultare <a href="https://securejoin.delta.chat/en/latest/new.html">Protocolli Secure-Join</a>
e leggi nello specifico i “Gruppi Verificati”, il termine tecnico
di quelle che qui vengono chiamate chat “con segno di spunta verde” o “crittografate end-to-end garantite”.</p>
<h3 id="nocryptanymore">
Un contatto “ha inviato un messaggio da un altro dispositivo”, cosa posso fare? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>La tua chat con un contatto che ha perso la crittografia end-to-end garantita.
Il segno di spunta verde è stato rimosso per questa chat e per questo contatto quando vedi questo avviso.
<strong>Se riscontri limprovvisa rimozione della crittografia end-to-end garantita
inaspettatamente per questo contatto allora non accettare lavviso!</strong>
Verifica invece con il tuo contatto attraverso un secondo canale
come una videochiamata, un altro messenger o una telefonata,
per scoprire cosa è successo.</p>
<p>Se il tuo contatto ha effettivamente causato la rimozione della crittografia end-to-end garantita
consultare i paragrafi successivi per i motivi comuni e le relative attenuazioni.
Indipendentemente da ciò, tutte le altre chat contrassegnate da un segno di spunta verde rimangono garantite con crittografia end-to-end
anche se il contatto è un membro.</p>
<p><strong>Il tuo contatto sta utilizzando Delta Chat su un secondo dispositivo (telefono o laptop)</strong></p>
<p>Se hanno un altro dispositivo con lapp Delta Chat in esecuzione,
dovrebbero rimuovere il profilo dal nuovo dispositivo
e aggiungerlo <a href="#multiclient">come secondo dispositivo come descritto qui</a>.
Non appena ti invieranno un messaggio, lavviso scomparirà
e la crittografia garantita viene stabilita con entrambi i dispositivi del tuo contatto.</p>
<p><strong>Il tuo contatto ha reinstallato Delta Chat utilizzando il vecchio login del profilo</strong></p>
<p>Se hanno <a href="#backup">un file di backup</a>,
dovrebbero rimuovere il profilo dal nuovo dispositivo
e piuttosto importare il file di backup per ricreare il proprio profilo.
Non appena ti invieranno un messaggio, lavviso scomparirà
e la crittografia garantita viene ristabilita per questo contatto.</p>
<p>Se non hanno un file di backup, è meglio eseguire una <a href="#howtoe2ee">scansione QR</a>
con il tuo partner di chat per ristabilire la crittografia end-to-end garantita.</p>
<p><strong>Il tuo contatto ha inviato une-mail tramite uninterfaccia webmail o unaltra app di posta elettronica
e presto tornerà a utilizzare Delta Chat.</strong></p>
<p>Se sei sicuro che il contatto a volte utilizza la webmail,
o unaltra app di posta priva di crittografia end-to-end,
allora puoi accettare lavvertimento.
Non appena il tuo contatto utilizzerà nuovamente Delta Chat,
la crittografia end-to-end garantita verrà ristabilita automaticamente.</p>
<p><strong>Il tuo contatto ha smesso completamente di utilizzare Delta Chat</strong></p>
<p>A volte rimanere in contatto è più importante della crittografia end-to-end.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> può comunque proteggere in modo significativo
la riservatezza dei tuoi messaggi tra il tuo dispositivo e il server di posta elettronica.
Ma senza la crittografia end-to-end tu e il tuo contratto vi fidate del vostro server di posta elettronica
a non leggere o manipolare i tuoi messaggi e a non trasmetterli a terzi.</p>
<p>In ogni caso, non puoi fare molto altro che accettare lavvertimento.
Rimuovi anche il contatto da qualsiasi gruppo attivo contrassegnato da un segno di spunta verde
che puoi trovare in “Chat condivise” nel profilo dei contatti.
Ciò evita che il tuo contatto riceva messaggi “illeggibili”.</p>
<p>Se il contatto ha rimosso Delta Chat a causa di bug o di comportamenti indesiderati,
ti invitiamo a pubblicare post sul nostro <a href="https://support.delta.chat">forum di supporto</a>
per aiutarci a identificare e affrontare i problemi comuni. Grazie!</p>
<h3 id="gli-allegati-immagini-file-audio-ecc-sono-crittografati-end-to-end">
@@ -869,29 +876,27 @@ e metadati degli allegati come i nomi dei file.</p>
</h3>
<p>, Delta Chat utilizza un sottoinsieme sicuro di OpenPGP
e visualizza solo un indicatore di sicurezza lucchetto su un messaggio
se lintero messaggio è crittografato e firmato correttamente.
Ad esempio, le “Firme distaccate” non sono considerate sicure.</p>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP non è insicuro di per sé.
I problemi di sicurezza di OpenPGP più discussi pubblicamente
in realtà derivano da una cattiva usabilità o da cattive implementazioni di strumenti o app (o entrambi).
La maggior parte dei problemi di sicurezza di OpenPGP discussi pubblicamentederivano in realtà da una cattiva usabilità o da cattive implementazioni di strumenti o app (o entrambi).
È particolarmente importante distinguere tra OpenPGP, lo standard di crittografia IETF,
e GnuPG (GPG), uno strumento da riga di comando che implementa OpenPGP.
Molte critiche pubbliche di OpenPGP in realtà discutono di GnuPG che Delta Chat non ha mai utilizzato.
Delta Chat utilizza piuttosto limplementazione OpenPGP Rust <a href="https://github.com/rpgp/rpgp">rPGP</a>,
Delta Chat utilizza piuttosto limplementazione Rust di OpenPGP <a href="https://github.com/rpgp/rpgp">rPGP</a>,
disponibile come <a href="https://crates.io/crates/pgp">un pacchetto “pgp” indipendente</a>,
e <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">controllato sulla sicurezza nel 2019</a>.</p>
e <a href="#security-audits">verificato per la sicurezza nel 2019 e nel 2024</a>.</p>
<p>Puntiamo, insieme ad altri implementatori di OpenPGP,
per migliorare ulteriormente le caratteristiche di sicurezza implementando il
<a href="https://datatracker.ietf.org/doc/draft-ietf-openpgp-crypto-refresh/">nuovo aggiornamento crittografico IETF OpenPGP</a> che per fortuna è stato adottato nellestate 2023.</p>
<h3 id="openpgp-alternative">
<h3 id="openpgp-alternatives">
Avete considerato lutilizzo di alternative a OpenPGP per la crittografia end-to-end? <a href="#openpgp-alternative" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -934,20 +939,18 @@ come definito dalla specifica Autocrypt Level 1.</p>
<h3 id="tls">
Un messaggio viene esposto in chiaro se la crittografia end-to-end non è disponibile? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Anche se non è garantito che i tuoi messaggi siano crittografati end-to-end,
sono ancora protetti dai fornitori di Internet come le società di telefonia mobile o via cavo.
Tuttavia, i provider di posta elettronica tuoi e del destinatario
potranno leggere, analizzare o addirittura modificare i tuoi messaggi,
compresi eventuali allegati,
se non sono crittografati end-to-end.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat per impostazione predefinita utilizza
[Crittografia TLS] rigorosa (https://en.wikipedia.org/wiki/Transport_Layer_Security)
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">Crittografia TLS</a> rigorosa
che protegge le connessioni tra il tuo dispositivo e il tuo provider e-mail.
Tutta la gestione TLS di Delta Chat è stata sottoposta a <a href="#security-audits">controlli di sicurezza</a> in modo indipendente.
Inoltre, la connessione tra il tuo provider e-mail e quello del destinatario
@@ -956,10 +959,6 @@ Se i server e-mail coinvolti supportano <a href="https://datatracker.ietf.org/do
verrà applicata la crittografia del trasporto tra i provider e-mail
in tal caso le comunicazioni Delta Chat non verranno mai esposte in chiaro su Internet
anche se il messaggio non sarà crittografato end-to-end.</p>
<p>Tieni presente che <a href="#howtoe2ee">mantenere la crittografia end-to-end garantita</a> oltre alla crittografia TLS
fornisce una sicurezza pervasiva tra i tuoi dispositivi e quelli del destinatario.
Nemmeno il tuo provider e-mail o Internet sarà in grado di leggere o modificare i tuoi messaggi.</p>
<h3 id="message-metadata">
@@ -1022,74 +1021,6 @@ Delta Chat mostra due impronte digitali.
Se sul tuo dispositivo e su quello del tuo contatto vengono visualizzate le stesse impronte digitali,
la connessione è sicura.</p>
<h3 id="come-posso-verificare-lo-stato-di-crittografia-dei-messaggi">
Come posso verificare lo stato di crittografia dei messaggi? <a href="#come-posso-verificare-lo-stato-di-crittografia-dei-messaggi" class="anchor"></a>
</h3>
<p>Un piccolo <strong>lucchetto</strong> in un fumetto denota
che il messaggio è stato correttamente crittografato end-to-end dal mittente specificato.
Se <strong>non è presente alcun lucchetto</strong>, il messaggio non è stato crittografato correttamente end-to-end
molto probabilmente perché il mittente utilizza unapp o uninterfaccia webmail
senza supporto per la crittografia end-to-end.</p>
<h3 id="perché-vedo-messaggi-non-crittografati">
Perché vedo messaggi non crittografati? <a href="#perché-vedo-messaggi-non-crittografati" class="anchor"></a>
</h3>
<p>Se un contatto utilizza unapp e-mail non Autocrypt,
tutti i messaggi che coinvolgono questo contatto (in un gruppo o in una chat 1:1)
non sarà crittografato end-to-end e quindi non mostrerà un “lucchetto” con i messaggi.
Tieni presente che anche se i tuoi contatti utilizzano Delta Chat sul proprio profilo,
potrebbero anche utilizzare unapp di posta elettronica non Autocrypt su quel profilo
che quindi potrebbe causare messaggi non crittografati in modo intermittente.
La risposta non crittografata a messaggi non crittografati è richiesta da Autocrypt
per evitare messaggi illeggibili tra i tuoi contatti
e la loro app e-mail non Autocrypt.</p>
<h3 id="come-posso-ottenere-una-chat-crittografata-end-to-end-con-un-contatto-delta-chat-che-a-volte-utilizza-la-webmail-o-unaltra-app-e-mail-non-autocrypt">
Come posso ottenere una chat crittografata end-to-end con un contatto Delta Chat che a volte utilizza la webmail o unaltra app e-mail non Autocrypt? <a href="#come-posso-ottenere-una-chat-crittografata-end-to-end-con-un-contatto-delta-chat-che-a-volte-utilizza-la-webmail-o-unaltra-app-e-mail-non-autocrypt" class="anchor"></a>
</h3>
<p>Se hai bisogno di una chat crittografata end-to-end sicura con un contatto
chi utilizza il proprio profilo sia con Delta Chat che con app non Autocrypt (ad esempio webmail),
è meglio configurare <a href="#howtoe2ee">la crittografia end-to-end garantita con loro</a>
e quindi crea una chat di gruppo crittografata end-to-end garantita con voi due come membri.
In questa chat di gruppo tutti i messaggi verranno crittografati end-to-end
anche se la chat diretta tra voi due ha a
<a href="#nocryptanymore">“… inviato un messaggio da un altro dispositivo”</a> avviso.</p>
<h3 id="come-posso-garantire-la-crittografia-e-leliminazione-end-to-end-dei-messaggi">
Come posso garantire la crittografia e leliminazione end-to-end dei messaggi? <a href="#come-posso-garantire-la-crittografia-e-leliminazione-end-to-end-dei-messaggi" class="anchor"></a>
</h3>
<p>Il modo migliore per garantire che ogni messaggio sia crittografato end-to-end,
e i metadati vengono eliminati il più rapidamente possibile
è <a href="#howtoe2ee">utilizzare chat con crittografia end-to-end garantita</a>
e lattivazione dei <a href="#ephemeralmsgs">messaggi a scomparsa</a>.</p>
<p>Le chat crittografate end-to-end garantiscono la protezione dagli <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">attacchi MITM</a>
e lattivazione dei “messaggi che scompaiono” elimina i messaggi
sul server dopo un tempo configurato dallutente.</p>
<p>Se non hai bisogno di una copia più longeva dei tuoi messaggi sul server,
puoi anche attivare <a href="#delold">“elimina messaggi dal server”</a>.</p>
<h3 id="pfs">
@@ -1098,45 +1029,35 @@ puoi anche attivare <a href="#delold">“elimina messaggi dal server”</a>.</p>
</h3>
<p>No, Delta Chat non supporta Perfect Forward Secrecy (PFS).
Ciò significa che se la tua chiave di decrittazione privata Delta Chat viene divulgata,
e qualcuno ha raccolto i tuoi precedenti messaggi in transito,
sarà in grado di decrittografarli e leggerli utilizzando la chiave di decrittazione trapelata.</p>
<p>No, not yet.</p>
<p>Tieni presente, tuttavia, che se qualcuno ottiene le tue chiavi di decrittazione,
in genere saranno anche in grado di ricevere i tuoi messaggi,
indipendentemente dal fatto che Perfect Forward Secrecy sia attivo o meno.
La tipica situazione reale in caso di fuga di chiavi di decrittazione è il sequestro del dispositivo
di cui discutiamo nella nostra risposta <a href="#device-seizure">sui metadati e sul sequestro dei dispositivi</a>.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>È possibile che Delta Chat si evolva per supportare Perfect Forward Secrecy,
perché OpenPGP è solo un contenitore per messaggi crittografati
ma la gestione delle chiavi di crittografia (e quindi la rotazione delle chiavi o “cricchetto”)
potrebbero essere organizzati in modo flessibile.
Vedi <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">prototipo PFS di Seqouia</a>
per gli esperimenti esistenti nella comunità degli implementatori di OpenPGP.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="la-crittografia-end-to-end-di-delta-chat-è-sicura-quanto-quella-di-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
La crittografia end-to-end di Delta Chat è sicura quanto quella di Signal? <a href="#la-crittografia-end-to-end-di-delta-chat-è-sicura-quanto-quella-di-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>Dipende da cosa è importante per te.
Delta Chat <a href="#pfs">non supporta PFS</a> come fa Signal
ma fornisce <a href="#e2eeguarantee">chat crittografate end-to-end garantite</a>
che sono sicuri contro server compromessi o reti danneggiate.
Signal e la maggior parte degli altri servizi di messaggistica che supportano PFS non forniscono
uno schema pratico per proteggere i gruppi di chat dagli attacchi di rete
che sono probabilmente più preoccupanti
di un potenziale utente malintenzionato che si impadronisce del tuo telefono e della configurazione di crittografia privata
ma in qualche modo non i tuoi messaggi, ma ha un registro completo di tutti
messaggi crittografati precedenti.</p>
<p>Sì.</p>
<p>In ogni caso, la crittografia end-to-end di Delta Chat utilizza un <a href="#openpgp-secure">sottoinsieme sicuro di OpenPGP</a>
che è stato <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">controllato in modo indipendente sulla sicurezza</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1146,42 +1067,14 @@ che è stato <a href="https://delta.chat/assets/blog/2019-first-security-review.
</h3>
<p>Sì.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>In alternativa è possibile importare manualmente la chiave in “Impostazioni -&gt; Avanzate -&gt; Gestisci Chiavi -&gt; Importa Chiavi Segrete”.
Attenzione: assicurarsi che la chiave non sia protetta da password oppure rimuovere prima la password.</p>
<p>Delta Chat genera chiavi OpenPGP sicure in conformità alle specifiche di Autocrypt 1.1.
Puoi esportare le tue chiavi private ma non puoi importare chiavi private aggiuntive.</p>
<p>Se non hai una chiave o non sai nemmeno che ne avrai bisogno - non preoccuparti: Delta Chat genera le chiavi secondo necessità, non devi premere un pulsante per ottenerle.</p>
<h3 id="non-riesco-a-importare-la-mia-chiave-pgp-esistente-in-delta-chat">
Non riesco a importare la mia chiave PGP esistente in Delta Chat. <a href="#non-riesco-a-importare-la-mia-chiave-pgp-esistente-in-delta-chat" class="anchor"></a>
</h3>
<p>Con molta probabilità, il problema sta nel fatto che la tua chiave è cifata e/o usa
una password. Queste chiavi non sono supportate da Delta Chat. Rimuovi la
cifratura e la password e prova ad importarla nuovamente.</p>
<p>Un altro errore comune è avere la fine del file sbagliata.
Utilizza il formato corazzato ASCII e lestensione del file “.asc”.</p>
<p>Delta Chat supporta i formati di chiave privata OpenPGP comuni, tuttavia,
è improbabile che le chiavi private di tutte le fonti siano completamente supportate. Questo
non è lobiettivo principale di Delta Chat. In effetti, la maggior parte dei nuovi utenti
non avrà alcuna chiave prima di utilizzare Delta Chat.
Tuttavia, cerchiamo di supportare le chiavi private dal maggior numero possibile di fonti.</p>
<p>La rimozione della password dalla chiave privata dipenderà dal
software che usi per gestire le tue chiavi PGP. Con Enigmail puoi impostare la tua
password su un valore vuoto nella finestra Gestione chiavi. Con GnuPG puoi impostarla
<a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">tramite la linea
di comando</a>.
Per altri programmi, dovresti essere in grado di trovare una soluzione online.</p>
<p>In generale, non raccomandiamo on proponiamo agli utenti di gestire manualmente le chiavi.
Noi vogliamo assicurare che gli audit di sicurezza si possano focalizzare su pochi algoritmi crittografici comprovati
invece che sullintera estensione dei possibili algoritmi consentiti con OpenPGP.</p>
<h3 id="security-audits">
@@ -1191,10 +1084,26 @@ Per altri programmi, dovresti essere in grado di trovare una soluzione online.</
</h3>
<p>Il progetto Delta Chat è stato sottoposto a quattro controlli di sicurezza indipendenti e
unanalisi di sicurezza indipendente, dal più recente al più vecchio:</p>
<p>Sì, più volte.
Il progetto Delta Chat è sottoposto costantemente a verifiche e analisi di sicurezza indipendenti,
dal più recente al più vecchio:</p>
<ul>
<li>
<p>Dicembre 2024, un <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">Valutazione commissionata da NLNET di
rPGP</a> di <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> ha preso parte.
rPGP serves as the end-to-end encyption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Sono stati rilasciati due avvisi relativi ai risultati di questa verifica:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panico per Input non Attendibili e Malformati”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potenziale Esaurimento delle Risorse durante la gestione di Messaggi non Attendibili”</a> CVE-2024-53857</li>
</ul>
<p>I problemi descritti in questi avvisi sono stati risolti e fanno
parte delle versioni di Delta Chat
su tutti gli appstore da Dicembre 2024.</p>
</li>
<li>
<p>Marzo 2024, abbiamo ricevuto unanalisi approfondita della sicurezza dalla Crittografia Applicata
gruppo di ricerca dellETH di Zurigo e ha affrontato tutte le questioni sollevate.
@@ -1260,7 +1169,7 @@ Puoi leggere il <a href="https://delta.chat/assets/blog/2019-first-security-revi
</h3>
<p>Sì. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Sì. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1317,6 +1226,10 @@ che è noto per causare problemi (soprattutto su Windows).
<li>
<p><strong>Reti Ospite</strong> potrebbero non consentire ai dispositivi di comunicare tra loro.
Se possibile, utilizza una rete non ospite.</p>
</li>
<li>
<p>Se continui ad aver problemi usando la stessa rete,
prova ad aprire l <strong>Hotspot</strong> su uno dei dispositivi e collegati al quel Wi-Fi con laltro</p>
</li>
<li>
<p>Assicurarsi che sul dispositivo di destinazione ci sia <strong>disponibilità di memoria sufficiente</strong>.</p>
@@ -1361,6 +1274,23 @@ Aiutarti.</li>
messaggi crittografati end-to-end con i tuoi partner di comunicazione.</li>
</ul>
<h3 id="cancella-fissa-archivia-salva-silenzia-ecc-sono-sincronizzate-su-tutti-i-dispositivi">
Cancella, Fissa, Archivia, Salva, Silenzia ecc. sono sincronizzate su tutti i dispositivi? <a href="#cancella-fissa-archivia-salva-silenzia-ecc-sono-sincronizzate-su-tutti-i-dispositivi" class="anchor"></a>
</h3>
<p>Sì.</p>
<p>Se per esempio cancelli una chat o un messaggio dal tuo telefono,
sarà cancellato sul tuo desktop non appena tornerà in linea di nuovo.</p>
<p>Eccezioni rilevanti sono <a href="#delold">Elimina vecchi messaggi dal Dispositivo</a>,
poiché diversi dispositivi possono avere differenti capacità di memoria,
e impostazioni di sistema specifiche come i suoni di notifica.</p>
<h3 id="sono-previsti-piani-per-lintroduzione-di-un-client-web-delta-chat">
@@ -1401,15 +1331,16 @@ un messenger estensibile.</p>
</h3>
<ul>
<li>Le apps webxdc non possono inviare dati a Internet o scaricare nulla.</li>
<li>Unapp webxdc può scambiare dati solo allinterno di una chat Delta Chat, con la sua
copia sui dispositivi dei tuoi partner di chat. A parte questo, è completamente
isolato da Internet.</li>
<li>La privacy offerta da unapp webxdc è la privacy della tua chat, purché tu
ti fidi delle persone con cui chatti e quindi puoi fidarti anche dellapp webxdc.</li>
<li>Ciò significa anche: può essere un rischio per la privacy aprire le app webxdc nelle chat dove
non ti fidi dei membri, come sai dagli allegati di posta elettronica, dove
apri solo gli allegati provenienti dai mittenti di cui ti fidi e non da spammer.</li>
<li>Le app webxdc non possono inviare dati in internet, o scaricare niente.</li>
<li>Unapp webxdc può solo scambiare dati allinterno di una chat di Delta Chat, con le sue
copie sui dispositivi dei tuoi corrispondenti. Oltre a questo, è completamente
isolata da internet.</li>
<li>La privacy che unapp webxdc offre è la privacy della tua chat - fino a che ti
fidi delle persone con cui ti scrivi, ti puoi fidare dellapp webxdc allo stesso modo.</li>
<li>Questo inoltre significa: può esserci un rischio per la privacy ad usare le app in chat con utenti non fidati.
Esattamente come per gli allegati delle e-mail, le videochiamate o i collegamenti in chiaro:
aprile solo da mittenti di cui ti fidi e non dagli spammer.
Gli spammer possono riuscire ad ottenere qualunque dato tu mandi loro, come il tuo indirizzo IP.</li>
</ul>
<h3 id="dove-posso-trovare-le-apps-webxdc">
@@ -1492,18 +1423,10 @@ in questo modo, avrai una nuova stanza jitsi casuale ogni volta che chiami qualc
</h3>
<ul>
<li>Con una Lista di Trasmissione è possibile inviare un messaggio a molti destinatari contemporaneamente; quando questi vi rispondono, ricevete la risposta nella vostra chat diretta 1:1 con loro.
I destinatari non possono vedersi a vicenda.</li>
<li>Tecnicamente, si tratta di un messaggio di posta elettronica con molti destinatari in BCC.</li>
<li>È possibile attivare questa funzione nella sezione “Funzionalità Sperimentali” delle impostazioni avanzate.
Quindi è possibile creare una Lista di Trasmissione dalla finestra di dialogo “Nuova chat”.</li>
<li>Nel caso in cui si utilizzi più di un dispositivo, le Liste di Trasmissione non sono attualmente sincronizzate tra loro.</li>
<li>I messaggi inviati alle Liste di Trasmissione non sono crittografate. La crittografia romperebbe lanonimato, perché
tutti i destinatari saprebbero chi altro ha ricevuto il messaggio.
(linvio di singoli messaggi di posta elettronica a tutti sarebbe peggiore per il limite di velocità e il
consumo di rete).</li>
</ul>
<p>Con le Liste Trasmissioni puoi inviare un messaggio a più indirizzi contemporaneamente;
i destinatari non possono rispondere in quella chat.
Le Liste Trasmissioni sono ancora altamente sperimentali
e saranno molto probabilmente rimpiazzate con qualcosaltro, restate sintonizzati :)</p>
<h3 id="come-posso-condividere-la-mia-posizione-con-i-miei-partner-di-chat">
@@ -1560,6 +1483,11 @@ verrebbe eseguito dallapp Delta Chat.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Cambia il tuo indirizzo in “Impostazioni → Avanzate → Password e Profilo” e
@@ -1644,19 +1572,19 @@ Tuttavia, alcuni provider necessitano di opzioni speciali per funzionare corrett
vedi <a href="https://providers.delta.chat">Panoramica fornitore</a></li>
</ul>
<h3 id="voglio-gestire-il-mio-server-di-posta-elettronica-per-delta-chat-che-cosa-mi-consigliate">
<h3 id="vorrei-gestire-il-mio-server-per-delta-chat-cosa-mi-consigliate">
Voglio gestire il mio server di posta elettronica per Delta Chat. Che cosa mi consigliate? <a href="#voglio-gestire-il-mio-server-di-posta-elettronica-per-delta-chat-che-cosa-mi-consigliate" class="anchor"></a>
Vorrei gestire il mio server per Delta Chat. Cosa mi consigliate? <a href="#vorrei-gestire-il-mio-server-per-delta-chat-cosa-mi-consigliate" class="anchor"></a>
</h3>
<ul>
<li>La maggior parte dei server di posta funzionerà bene. Ma quello che raccomandiamo personalmente è una
combinazione di mailcow e mailadm, come descritto <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">in questo
blogpost</a>.</li>
<li>È possibile trovare una <a href="https://delta.chat/it/serverguide">guida allinstallazione sul nostro sito Web</a>.</li>
<li>La maggior parte dei server di posta funzionerà bene. Ma quello che personalmente consigliamo è un
server relay di chatmail, come descritto <a href="https://delta.chat/en/2023-12-13-chatmail">in questo
articolo del blog</a>.</li>
<li>Puoi trovare una <a href="https://github.com/chatmail/relay">guida allinstallazione su GitHub</a>.</li>
</ul>
<h3 id="perché-devo-inserire-la-mia-password-e-mail-in-delta-chat-è-sicuro">
@@ -1672,7 +1600,7 @@ programma ha bisogno della password in modo da poterla utilizzare per inviare ma
password è memorizzata solo sul tuo dispositivo. La password viene trasmessa solo a
il tuo fornitore E-Mail (quando effettui il login), che ha comunque accesso alla tua posta.</p>
<p>Poiché Delta Chat è Open Source, puoi controllare il <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Codice
<p>Poiché Delta Chat è Open Source, puoi controllare il <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Codice
Sorgente</a>
se vuoi verificare che le tue credenziali siano gestite in modo sicuro. Siamo felici dei feedback che rendono lapp più sicura per tutti i nostri utenti.</p>
@@ -1786,17 +1714,17 @@ per la loro posta, invece della cartella DeltaChat. Se disabiliti “Controlla
cartella DeltaChat”, dovresti anche disabilitare “sposta messaggi chat in DeltaChat”.
In caso contrario, leliminazione dei messaggi o configurazioni multi-dispositivo potrebbero non funzionare correttamente.</p>
<h3 id="delta-chat-è-compatibile-con-protonmail--tutanota--criptext">
<h3 id="delta-chat-è-compatibile-con-proton-mail--tutanota--criptext">
Delta Chat è compatibile con Protonmail / Tutanota / Criptext? <a href="#delta-chat-è-compatibile-con-protonmail--tutanota--criptext" class="anchor"></a>
Delta Chat è compatibile con Proton Mail / Tutanota / Criptext? <a href="#delta-chat-è-compatibile-con-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Sì e no.</li>
<li>No, non puoi utilizzare il tuo profilo Protonmail, Tutanota o Criptext con Delta
<li>No, non puoi utilizzare il tuo profilo Proton Mail, Tutanota o Criptext con Delta
Chat; non offrono la ricezione di posta tramite IMAP.</li>
<li>In ogni caso puoi utilizzare Delta Chat per inviare messaggi alle persone che lo utilizzano
Protonmail, Tutanota o Criptext. Tali messaggi non saranno end-to-end
@@ -1849,7 +1777,7 @@ Altrimenti potresti ricevere messaggi non decifrabili da quelle chat di gruppo.<
</h3>
<ul>
<li>Vedi <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Standard usati in Delta Chat</a>.</li>
<li>Vedi <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standard usati in Delta Chat</a>.</li>
</ul>
<h3 id="dove-possono-trovare-delta-chat-i-miei-amici">
@@ -1911,7 +1839,7 @@ tramite <a href="https://autocrypt.org">Autocrypt</a>.</p>
prima sovvenzione 2018/2019 (~$200K) durante la quale abbiamo notevolmente migliorato lapp Android
e ha rilasciato una prima versione beta dellapp desktop, e che inoltre
ancorato i nostri sviluppi delle funzionalità nella ricerca sulla UX nei contesti dei diritti umani,
vedete il nostro [Rapporto Needfinding e UX] conclusivo (https://delta.chat/en/2019-07-19-uxreport).
vedete il nostro <a href="https://delta.chat/en/2019-07-19-uxreport">Rapporto Needfinding e UX</a> conclusivo.
La seconda sovvenzione 2019/2020 (~$300K) ci ha aiutato a farlo
rilasciare nelle versioni Delta/iOS, per convertire la nostra libreria principale in Rust, e
per fornire nuove funzionalità per tutte le piattaforme.</p>
@@ -1935,7 +1863,7 @@ e fornendo “inserimento immediato” in tutte le app rilasciate da aprile 2024
</li>
<li>
<p>Nel 2023 e nel 2024 siamo stati accettati nel programma Next Generation Internet (NGI)
per il nostro lavoro in [webxdc PUSH].(https://nlnet.nl/project/WebXDC-Push/),
per il nostro lavoro in <a href="https://nlnet.nl/project/WebXDC-Push/">webxdc PUSH</a>,
insieme ai partner di collaborazione che lavorano su
<a href="https://nlnet.nl/project/Webxdc-Evolve/">webxdc evolve</a>,
<a href="https://nlnet.nl/project/WebXDC-XMPP/">webxdc XMPP</a>,
@@ -1971,4 +1899,4 @@ sia per le possibilità monetarie che contributive.</p>
</body></html>
</body></html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

+280 -359
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="nl"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#wat-is-delta-chat">Wat is Delta Chat?</a>
<ul>
<li><a href="#hoe-kan-ik-gesprekspartners-vinden">Hoe kan ik gesprekspartners vinden?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#wie-kan-mijn-profielfoto-zien">Wie kan mijn profielfoto zien?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#wat-is-vastmaken-negeren-en-archiveren">Wat is vastmaken, negeren en archiveren?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#wat-betekent-die-groene-stip">Wat betekent die groene stip?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#beveiliging-en-versleuteling">Beveiliging en versleuteling</a>
<li><a href="#e2ee">Beveiliging en versleuteling</a>
<ul>
<li><a href="#welke-standaarden-worden-gebruikt-bij-eind-tot-eindversleuteling">Welke standaarden worden gebruikt bij eind-tot-eindversleuteling?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">Is OpenPGP secure?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#is-delta-chat-vulnerable-to-efail">Is Delta Chat vulnerable to EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">How does Delta Chat protect metadata in messages?</a></li>
<li><a href="#device-seizure">How to protect metadata and contacts when a device is seized?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#how-can-i-check-the-encryption-status-of-messages">How can I check the encryption status of messages?</a></li>
<li><a href="#why-do-i-see-unencrypted-messages">Why do I see unencrypted messages?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Kan ik mijn bestaande privésleutel hergebruiken?</a></li>
<li><a href="#ik-kan-mijn-bestaande-pgp-sleutel-niet-importeren">Ik kan mijn bestaande PGP-sleutel niet importeren</a></li>
<li><a href="#security-audits">Heeft Delta Chat ooit onafhankelijke beveiligingscontroles ondergaan?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#kan-ik-delta-chat-op-meerdere-apparaten-tegelijk-gebruiken">Kan ik Delta Chat op meerdere apparaten tegelijk gebruiken?</a></li>
<li><a href="#probleemoplossing">Probleemoplossing</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#bestaan-er-plannen-om-een-delta-chat-webclient-te-maken">Bestaan er plannen om een Delta Chat-webclient te maken?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#welke-android-rechten-heeft-delta-chat-nodig">Welke Android-rechten heeft Delta Chat nodig?</a></li>
<li><a href="#wordt-mijn-e-mailprovider-ondersteund-door-delta-chat">Wordt <em>mijn</em> e-mailprovider ondersteund door Delta Chat?</a></li>
<li><a href="#ik-wil-mijn-eigen-e-mailserver-opzetten-hoe-kan-ik-dat-het-beste-doen">Ik wil mijn eigen e-mailserver opzetten. Hoe kan ik dat het beste doen?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#waarom-moet-ik-mijn-e-mailwachtwoord-invoeren-in-delta-chat-is-dat-wel-veilig">Waarom moet ik mijn e-mailwachtwoord invoeren in Delta Chat? Is dat wel veilig?</a></li>
<li><a href="#welke-berichten-vind-ik-terug-in-delta-chat">Welke berichten vind ik terug in Delta Chat?</a></li>
<li><a href="#ondersteunt-delta-chat-html-e-mails">Ondersteunt Delta Chat HTML-e-mails?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#waarvoor-dient-de-optie-kopie-versturen-aan-mijzelf">Waarvoor dient de optie Kopie versturen aan mijzelf?</a></li>
<li><a href="#waarom-kan-ik-kiezen-om-de-map-verzonden-te-controleren">Waarom kan ik kiezen om de map Verzonden te controleren?</a></li>
<li><a href="#waarom-kan-ik-kiezen-om-de-deltachat-map-te-negeren">Waarom kan ik kiezen om de DeltaChat-map te negeren?</a></li>
<li><a href="#is-delta-chat-compatibel-met-protonmailtutanotacriptext">Is Delta Chat compatibel met Protonmail/Tutanota/Criptext?</a></li>
<li><a href="#is-delta-chat-compatible-with-proton-mail--tutanota--criptext">Is Delta Chat compatible with Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">Hoe kan ik mijn account verwijderen?</a></li>
<li><a href="#ik-wil-graag-meer-weten-over-de-gebruikte-technieken-waar-kan-ik-meer-informatie-vinden">Ik wil graag meer weten over de gebruikte technieken. Waar kan ik meer informatie vinden?</a></li>
<li><a href="#where-can-my-friends-find-delta-chat">Where can my friends find Delta Chat?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,14 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>Als een bericht afkomstig is van een onbekende contactpersoon, dan wordt er een <strong>verzoek</strong> getoond.</p>
<ul>
<li>Als een bericht afkomstig is van een onbekende contactpersoon, dan wordt er een <strong>verzoek</strong> getoond.
Accepteer het verzoek om te kunnen antwoorden.</li>
<li>Ook kun je het verzoek verwijderen als je op dat moment geen gesprek met ze wilt voeren.
Hierdoor wordt het bericht in kwestie niet op de server verwijderd, maar alleen op je apparaat, zodat je in een andere app kunt antwoorden.</li>
<li>Als je een verzoek verwijderd, dan worden toekomstige berichten nog steeds als verzoek getoond,
zodat je te allen tijde kunt bepalen of je het alsnog wilt accepteren. Als je écht geen contact wilt leggen, overweeg dan
om de persoon in kwestie te <strong>blokkeren</strong>.</li>
<li>
<p><strong>Accepteer</strong> het verzoek om te kunnen antwoorden.</p>
</li>
<li>
<p>Ook kun je het verzoek <strong>verwijderen</strong> als je op dat moment geen gesprek met ze wilt voeren.</p>
</li>
<li>
<p>Als je een verzoek verwijderd, dan worden toekomstige berichten nog steeds als verzoek getoond,
zodat je te allen tijde kunt bepalen of je het alsnog wilt accepteren. Als je écht geen contact wilt leggen, overweeg dan
om de persoon in kwestie te <strong>blokkeren</strong>.</p>
</li>
</ul>
<h3 id="ondersteunt-delta-chat-afbeeldingen-videos-en-ander-soort-bijlagen">
@@ -303,6 +307,41 @@ Gearchiveerde gesprekken zijn te allen tijde te bekijken boven de lijst of via e
<p>Archiveer of maak een gesprek vast door het gesprek in kwestie lang ingedrukt te houden (Android), via het gespreksmenu (Android/computer) of door het naar links te vegen (iOS).
Negeer een gesprek via het gespreksmenu (Android/computer) of het gespreksprofiel (iOS).</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="wat-betekent-die-groene-stip">
@@ -311,23 +350,49 @@ Negeer een gesprek via het gespreksmenu (Android/computer) of het gespreksprofie
</h3>
<ul>
<li>Sinds Delta Chat 1.34 wordt er soms een groen stipje naast een profielfoto van een
<p>Wordt er soms een <strong>groen stipje</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" /> naast een profielfoto van een
contactpersoon getoond. Dit betekent dat ze onlangs actief waren,
dat wil zeggen: in de afgelopen 10 minuten. Dit komt omdat ze
<ul>
<li>je een bericht hebben gestuurd;</li>
<li>iets in een van je groepen hebben geplaatst;</li>
<li>een leesbevestiging hebben verstuurd;</li>
<li>gegevens naar je Delta Chat-app middels een zogeheten
<a href="#webxdc">privé-app</a> hebben verstuurd.</li>
</ul>
</li>
<li>De online-status is dus <strong>niet</strong> realtime. Geef ze dus even de tijd om te antwoorden. ;-)</li>
<li>Anderen kunnen ook niet altijd zien dat je actief was. Als je
leesbevestigingen hebt uitgeschakeld, dan wordt er geen groen stipje getoond totdat je
iemand benaderd of iets in een groep plaatst..</li>
dat wil zeggen: in de afgelopen 10 minuten. Dit komt omdat ze</p>
<ul>
<li>je een bericht hebben gestuurd;</li>
<li>iets in een van je groepen hebben geplaatst;</li>
<li>een leesbevestiging hebben verstuurd;</li>
<li>gegevens naar je Delta Chat-app middels een zogeheten <a href="#webxdc">privé-app</a> hebben verstuurd.</li>
</ul>
<p>De online-status is dus <strong>niet</strong> realtime. Geef ze dus even de tijd om te antwoorden :)</p>
<p>Anderen kunnen ook niet altijd zien dat je actief was. Als je
leesbevestigingen hebt uitgeschakeld, dan wordt er geen groen stipje getoond totdat je
iemand benaderd of iets in een groep plaatst..</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -597,16 +662,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -619,14 +684,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -641,7 +707,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -649,10 +715,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="beveiliging-en-versleuteling">
<h2 id="e2ee">
Beveiliging en versleuteling <a href="#beveiliging-en-versleuteling" class="anchor"></a>
Beveiliging en versleuteling <a href="#e2ee" class="anchor"></a>
</h2>
@@ -665,18 +731,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -686,28 +760,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -716,141 +799,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -875,19 +877,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -897,7 +898,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -940,17 +941,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -962,10 +961,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1028,74 +1023,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="how-can-i-check-the-encryption-status-of-messages">
How can I check the encryption status of messages? <a href="#how-can-i-check-the-encryption-status-of-messages" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="why-do-i-see-unencrypted-messages">
Why do I see unencrypted messages? <a href="#why-do-i-see-unencrypted-messages" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>If you dont need a longer-lived copy of your messages on the server,
you can also turn on <a href="#delold">“delete messages from server automatically”</a>.</p>
<h3 id="pfs">
@@ -1104,45 +1031,35 @@ you can also turn on <a href="#delold">“delete messages from server automatica
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Yes.</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1152,41 +1069,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Yes.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Alternatively, you can import the key manually in “Settings -&gt; Advanced settings -&gt; Import secret keys”.
Caution: Make sure the key is not protected by a password, or remove the password beforehand.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>If you dont have a key or dont even know you would need one - dont worry: Delta Chat generates keys as needed, you dont have to hit a button for it.</p>
<h3 id="ik-kan-mijn-bestaande-pgp-sleutel-niet-importeren">
Ik kan mijn bestaande PGP-sleutel niet importeren <a href="#ik-kan-mijn-bestaande-pgp-sleutel-niet-importeren" class="anchor"></a>
</h3>
<p>Het is goed mogelijk dat je sleutel versleuteld is en/of een wachtwoord
vereist. Zulke sleutels worden niet ondersteund. Verwijder de versleuteling
en het wachtwoord en probeer het opnieuw.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>Delta Chat heeft ondersteuning voor alle veelvoorkomende OpenPGP-privésleutelformaten. Echter,
het in onmogelijk om álle soorten sleutels te ondersteunen. Onze
aandacht gaat hier dan ook niet naar uit. Sterker nog: de meeste gebruikers hebben
(nog) geen sleutel. We doen ons best om zo veel mogelijk sleutels te ondersteunen.</p>
<p>Door het verwijderen van het wachtwoord kan de sleutels afhankelijk
van de gebruikte software, veranderd zijn. In Enigmail kun je je wachtwoord
leeglaten in het sleutelbeheervenster. Met GnuPG kun je het
instellen <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">middels de opdracht-
regel</a>.
Voor andere programmas kun je zélf een oplossing zoeken op internet.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1196,10 +1086,25 @@ Voor andere programmas kun je zélf een oplossing zoeken op internet.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1265,7 +1170,7 @@ Het <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">voll
</h3>
<p>Ja, Delta Chat 1.36 bevat een nieuwe, experimentele functie om hetzelfde account op meerdere apparaten te gebruiken:</p>
<p>Yes. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1321,6 +1226,10 @@ welke problemen kan veroorzaken (met name op Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Zorg voor <strong>voldoende ruimte</strong> op het bestemmingsapparaat</p>
@@ -1368,6 +1277,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Yes.</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="bestaan-er-plannen-om-een-delta-chat-webclient-te-maken">
@@ -1414,9 +1340,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="where-can-i-get-webxdc-apps">
@@ -1478,18 +1405,18 @@ another rather stable experiment we run on the side (sic!).</p>
</h3>
<ul>
<li>To turn on audio/video calls, go to the experimental features” section in
the advanced settings and choose a “Video Chat Instance”.</li>
<li>When you invite others to a video chat, it is opened in your browser/app at
once. The others receive an e-mail with a link to the video chat.
This way, it is also compatible if your chat partners dont use Delta Chat.</li>
<li>Note that there is no ring tone on the other side, and your chat partners
will not get interrupted by a video chat invite.</li>
<li>You can use any video chat service which allows joining by link. Just add the
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
<li>Audio-/Videogesprekken kunnen worden ingeschakeld in de sectie experimentele functies in de
geavanceerde instellingen. Kies daar een instantie.</li>
<li>Als je anderen uitnodigt, dan wordt het gesprek meteen in je webbrowser of een app
geopend. Anderen ontvangen een e-mail met een link naar de jitsi-/BBB-kamer. Op deze
manier is het gesprek compatibel met gesprekspartners die geen gebruikmaken van Delta Chat.</li>
<li>Let op: de ander hoort geen beltoon en je gesprekspartners
worden niet gestoord door de uitnodiging.</li>
<li>Je kunt kiezen uit verschillende videogespreksdiensten die op basis van links werken. Voeg hiervoor de
link toe in de instellingen.</li>
<li>Voorbeeld: als je gebruik wilt maken van Jitsi Meet, dan kun je
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$KAMER</code> invoeren. <code class="language-plaintext highlighter-rouge">$KAMER</code> is hierbij een willekeurige waarde,
zodat er telkens een nieuwe jitsi-kamer als je iemand belt.</li>
</ul>
<h3 id="wat-zijn-verzendlijsten-en-hoe-gebruik-ik-deze">
@@ -1500,21 +1427,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>Met behulp van verzendlijsten kun je berichten naar meerdere ontvangers tegelijk versturen. Als zij vervolgens
antwoorden, dan wordt het antwoord in het een-op-eengesprek getoond. De
ontvangers kunnen elkaar niet zien.</li>
<li>Technisch gezien is een verzendlijst een e-mail met meerdere ontvangers in de bcc.</li>
<li>Schakel deze functie in in de sectie experimentele functies in de
geavanceerde instellingen. Vervolgens kun je in het venster Nieuw gesprek een verzendlijst
samenstellen.</li>
<li>Let op: als je gebruikmaakt van meer dan één apparaat, dan worden verzendlijsten momenteel
niet gesynchroniseerd.</li>
<li>Ook zijn zulke berichten niet versleuteld. Versleuteling zou immers de
anonimiteit doorbreken omdat iedereen van elkaar kan zien wie de berichten ontvangt.
(En het versturen van meerdere individuele e-mails tegelijk zou funest zijn voor de beperkingen van sommige e-maildiensten en het
netwerkverbruik).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="hoe-kan-ik-mijn-locatie-delen-met-anderen">
@@ -1571,6 +1487,11 @@ Normaal doet de Delta Chat-app dit uit zichzelf.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1672,19 +1593,19 @@ Delta Chat doet het volgende met deze rechten:</p>
Sommige providers verwachten echter bepaalde opties. Bekijk hiervoor het <a href="https://providers.delta.chat">provideroverzicht</a></li>
</ul>
<h3 id="ik-wil-mijn-eigen-e-mailserver-opzetten-hoe-kan-ik-dat-het-beste-doen">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
Ik wil mijn eigen e-mailserver opzetten. Hoe kan ik dat het beste doen? <a href="#ik-wil-mijn-eigen-e-mailserver-opzetten-hoe-kan-ik-dat-het-beste-doen" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>De meeste e-mailservers werken prima, maar wij raden een
combinatie van mailcow en mailadm aan, zoals uitgelegd op <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">ons
blog</a>.</li>
<li>In de <a href="https://delta.chat/nl/serverguide">installatiehandleiding op onze website</a> lees je hoe je dit opzet.</li>
<li>Most mail servers will work well. But what we personally recommend is a
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="waarom-moet-ik-mijn-e-mailwachtwoord-invoeren-in-delta-chat-is-dat-wel-veilig">
@@ -1697,7 +1618,7 @@ blog</a>.</li>
<p>Delta Chat heeft, net zoals andere e-mailprogrammas (Thunderbird, K9-Mail, Outlook, etc.), je wachtwoord nodig om berichten te versturen. Het wordt alleen opgeslagen op je apparaat en alleen uitgewisseld met je e-mailprovider, die toch al toegang heeft tot je mails.</p>
<p>Delta Chat is open source. Dit betekent dat je de <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">bron-
<p>Delta Chat is open source. Dit betekent dat je de <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">bron-
code</a>
kunt bekijken om er zeker van te zijn dat er veilig wordt omgegaan met je inloggegevens. We ontvangen graag feedback hierover.</p>
@@ -1810,17 +1731,17 @@ gebruiken voor hun e-mail in plaats van de DeltaChat-map. Als je deze optie uits
schakel dan ook de optie Berichten verplaatsen naar de DeltaChat-map uit.
Anders kun je mogelijk geen berichten verwijderen of problemen ervaren op andere apparaten.</p>
<h3 id="is-delta-chat-compatibel-met-protonmailtutanotacriptext">
<h3 id="is-delta-chat-compatible-with-proton-mail--tutanota--criptext">
Is Delta Chat compatibel met Protonmail/Tutanota/Criptext? <a href="#is-delta-chat-compatibel-met-protonmailtutanotacriptext" class="anchor"></a>
Is Delta Chat compatible with Proton Mail / Tutanota / Criptext? <a href="#is-delta-chat-compatible-with-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
<li>No, you can not use your Proton Mail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
@@ -1873,7 +1794,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>Bekijk de pagina <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Door Delta Chat gebruikte standaarden</a>.</li>
<li>Bekijk de pagina <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Door Delta Chat gebruikte standaarden</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -1999,4 +1920,4 @@ om te zien hoe je een financiële of andere bijdrage kunt leveren.</p>
</body></html>
</body></html>
+243 -195
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="pl"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#czym-jest-delta-chat">Czym jest Delta Chat?</a>
<ul>
<li><a href="#jak-mogę-znaleźć-ludzi-z-którymi-mogę-czatować">Jak mogę znaleźć ludzi, z którymi mogę czatować?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#kto-widzi-moje-zdjęcie-profilowe">Kto widzi moje zdjęcie profilowe?</a></li>
<li><a href="#signature">Czy w Delta Chat mogę ustawić Biografię/Podpis/Status/Motto?</a></li>
<li><a href="#co-oznacza-przypinanie-wyciszanie-i-archiwizowanie">Co oznacza przypinanie, wyciszanie i archiwizowanie?</a></li>
<li><a href="#save">Jak działają „Zapisane wiadomości”?</a></li>
<li><a href="#co-oznacza-zielona-kropka">Co oznacza zielona kropka?</a></li>
<li><a href="#edit">Poprawianie literówek i usuwanie wiadomości po wysłaniu</a></li>
<li><a href="#ephemeralmsgs">Jak działają znikające wiadomości?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#dlaczego-delta-chat-integruje-się-ze-scentralizowanymi-zastrzeżonymi-usługami-push-applegoogle">Dlaczego Delta Chat integruje się ze scentralizowanymi, zastrzeżonymi usługami push Apple/Google?</a></li>
</ul>
</li>
<li><a href="#szyfrowanie-i-bezpieczeństwo">Szyfrowanie i bezpieczeństwo</a>
<li><a href="#e2ee">Szyfrowanie i bezpieczeństwo</a>
<ul>
<li><a href="#jakie-standardy-są-stosowane-do-szyfrowania-end-to-end">Jakie standardy są stosowane do szyfrowania end-to-end?</a></li>
<li><a href="#whene2e">Skąd mogę wiedzieć, czy wiadomości są szyfrowane metodą e2e?</a></li>
<li><a href="#howtoe2ee">Jak mogę uzyskać gwarancję kompleksowego szyfrowania i zielone znaczniki wyboru?</a></li>
<li><a href="#e2eeguarantee">Co oznacza zielony znacznik wyboru i „gwarantowane kompleksowe szyfrowanie”?</a></li>
<li><a href="#nocryptanymore">Kontakt „wysłał wiadomość z innego urządzenia”, co mogę zrobić?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#czy-załączniki-zdjęcia-pliki-pliki-audio-itp-są-szyfrowane-metodą-end-to-end">Czy załączniki (zdjęcia, pliki, pliki audio itp.) są szyfrowane metodą end-to-end?</a></li>
<li><a href="#openpgp-secure">Czy OpenPGP jest bezpieczny?</a></li>
<li><a href="#openpgp-alternatives">Czy rozważałeś użycie alternatyw dla OpenPGP do szyfrowania typu end-to-end?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#czy-delta-chat-jest-podatny-na-efail">Czy Delta Chat jest podatny na EFAIL?</a></li>
<li><a href="#tls">Czy wiadomość jest udostępniana w postaci zwykłego tekstu, jeśli szyfrowanie end-to-end nie jest dostępne?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">W jaki sposób Delta Chat chroni metadane w wiadomościach?</a></li>
<li><a href="#device-seizure">Jak chronić metadane i kontakty w przypadku przejęcia urządzenia?</a></li>
<li><a href="#jak-mogę-sprawdzić-informacje-o-szyfrowaniu">Jak mogę sprawdzić informacje o szyfrowaniu?</a></li>
<li><a href="#jak-mogę-sprawdzić-stan-szyfrowania-wiadomości">Jak mogę sprawdzić stan szyfrowania wiadomości?</a></li>
<li><a href="#dlaczego-widzę-niezaszyfrowane-wiadomości">Dlaczego widzę niezaszyfrowane wiadomości?</a></li>
<li><a href="#jak-mogę-uzyskać-zaszyfrowany-ened-to-end-czat-z-kontaktem-delta-chat-który-czasami-korzysta-z-poczty-internetowej-lub-innej-aplikacji-e-mail-bez-autocrypt">Jak mogę uzyskać zaszyfrowany ened-to-end czat z kontaktem Delta Chat, który czasami korzysta z poczty internetowej lub innej aplikacji e-mail bez Autocrypt?</a></li>
<li><a href="#jak-mogę-zapewnić-kompleksowe-szyfrowanie-i-usuwanie-wiadomości">Jak mogę zapewnić kompleksowe szyfrowanie i usuwanie wiadomości?</a></li>
<li><a href="#pfs">Czy Delta Chat obsługuje funkcję Perfect Forward Secrecy?</a></li>
<li><a href="#czy-szyfrowanie-end-to-end-delta-chat-jest-tak-samo-bezpieczne-jak-signal">Czy szyfrowanie end-to-end Delta Chat jest tak samo bezpieczne jak Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Czy mogę ponownie wykorzystać mój istniejący klucz prywatny?</a></li>
<li><a href="#nie-mogę-zaimportować-istniejącego-klucza-pgp-do-delta-chat">Nie mogę zaimportować istniejącego klucza PGP do Delta Chat.</a></li>
<li><a href="#security-audits">Czy Delta Chat był niezależnie kontrolowany pod kątem luk w zabezpieczeniach?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#czy-mogę-korzystać-z-delta-chat-na-wielu-urządzeniach-w-tym-samym-czasie">Czy mogę korzystać z Delta Chat na wielu urządzeniach w tym samym czasie?</a></li>
<li><a href="#rozwiązywanie-problemów">Rozwiązywanie problemów</a></li>
<li><a href="#backup">Ręczny transfer</a></li>
<li><a href="#czy-usuwanie-przypinanie-archiwizowanie-zapisywanie-wyciszanie-itp-jest-synchronizowane-ze-wszystkimi-urządzeniami">Czy usuwanie, przypinanie, archiwizowanie, zapisywanie, wyciszanie itp. jest synchronizowane ze wszystkimi urządzeniami?</a></li>
<li><a href="#czy-są-jakieś-plany-wprowadzenia-klienta-web-delta-chat">Czy są jakieś plany wprowadzenia klienta Web Delta Chat?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#jakich-uprawnień-potrzebuje-delta-chat">Jakich uprawnień potrzebuje Delta Chat?</a></li>
<li><a href="#czy-delta-chat-działa-z-moim-dostawcą-poczty-e-mail">Czy Delta Chat działa z <em>moim</em> dostawcą poczty e-mail?</a></li>
<li><a href="#chcę-zarządzać-własnym-serwerem-e-mail-dla-delta-chat-co-polecacie">Chcę zarządzać własnym serwerem e-mail dla Delta Chat. Co polecacie?</a></li>
<li><a href="#chcę-zarządzać-własnym-serwerem-dla-delta-chat-co-polecacie">Chcę zarządzać własnym serwerem dla Delta Chat. Co polecacie?</a></li>
<li><a href="#dlaczego-muszę-wpisać-moje-hasło-e-mail-do-delta-chat-czy-to-jest-bezpieczne">Dlaczego muszę wpisać moje hasło e-mail do Delta Chat? Czy to jest bezpieczne?</a></li>
<li><a href="#jakie-wiadomości-pojawiają-się-w-delta-chat">Jakie wiadomości pojawiają się w Delta Chat?</a></li>
<li><a href="#czy-delta-chat-obsługuje-wiadomości-e-mail-w-formacie-html">Czy Delta Chat obsługuje wiadomości e-mail w formacie HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#do-czego-służy-ustawienie-wyślij-kopię-do-siebie">Do czego służy ustawienie „Wyślij kopię do siebie”?</a></li>
<li><a href="#po-co-mam-wybrać-opcję-oglądania-folderu-wysłane">Po co mam wybrać opcję oglądania folderu „Wysłane”?</a></li>
<li><a href="#dlaczego-mogę-nie-widzieć-folderu-deltachat">Dlaczego mogę nie widzieć folderu DeltaChat?</a></li>
<li><a href="#czy-delta-chat-jest-kompatybilny-z-protonmail--tutanota--criptext">Czy Delta Chat jest kompatybilny z Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#czy-delta-chat-jest-kompatybilny-z-proton-mail--tutanota--criptext">Czy Delta Chat jest kompatybilny z Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">Jak mogę usunąć swoje konto?</a></li>
<li><a href="#interesują-mnie-szczegóły-techniczne-możesz-powiedzieć-mi-coś-więcej">Interesują mnie szczegóły techniczne. Możesz powiedzieć mi coś więcej?</a></li>
<li><a href="#gdzie-moi-znajomi-mogą-znaleźć-delta-chat">Gdzie moi znajomi mogą znaleźć Delta Chat?</a></li>
@@ -154,7 +152,7 @@
<p><a href="#security-audits">Audytowne szyfrowanie end-to-end</a> zabezpieczające przed atakami sieciowymi i serwerowymi.</p>
</li>
<li>
<p>Bezpłatne i otwartoźródłowe oprogramowanie zarówno po stronie aplikacji, jak i serwera. Stworzone w oparciu o <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">standardy e-mail i internetowe</a>, <a href="https://xkcd.com/927/">aby uniknąć „kolejnego standardowego syndromu (xkcd 927)”</a>.</p>
<p>Bezpłatne i otwartoźródłowe oprogramowanie zarówno po stronie aplikacji, jak i serwera. Stworzone w oparciu o <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">standardy e-mail i internetowe</a>, <a href="https://xkcd.com/927/">aby uniknąć „kolejnego standardowego syndromu (xkcd 927)”</a>.</p>
</li>
</ul>
@@ -166,10 +164,18 @@
</h3>
<p>Jeśli wiadomość pochodzi od nieznanego kontaktu, wyświetla się jako <strong>prośba</strong>.</p>
<ul>
<li>Jeśli wiadomość przychodzi od nieznanego kontaktu, pojawia się jako <strong>prośba</strong>. Musisz zaakceptować prośbę, zanim będziesz mógł odpowiedzieć.</li>
<li>Możesz również „usunąć” ją, jeśli nie chcesz na razie z nią rozmawiać. To <em>nie</em> usuwa wiadomości na serwerze, tylko na Twoim urządzeniu. Możesz więc nadal zajmować się tą wiadomością w innej aplikacji pocztowej.</li>
<li>Jeśli usuniesz prośbę, przyszłe wiadomości od tego kontaktu będą nadal wyświetlane jako prośba o wiadomość, więc możesz zmienić zdanie. Jeśli naprawdę nie chcesz otrzymywać wiadomości od tej osoby, rozważ <em>zablokowanie</em> jej.</li>
<li>
<p>Musisz <strong>zaakceptować</strong> prośbę, zanim będziesz mógł odpowiedzieć.</p>
</li>
<li>
<p>Możesz także <strong>usunąć</strong> wiadomość, jeśli nie chcesz w tej chwili z nią rozmawiać.</p>
</li>
<li>
<p>Jeśli usuniesz prośbę, przyszłe wiadomości od tego kontaktu nadal będą wyświetlane jako prośba o wiadomość, więc możesz zmienić zdanie. Jeśli naprawdę nie chcesz otrzymywać wiadomości od tej osoby, rozważ <strong>zablokowanie</strong> jej.</p>
</li>
</ul>
<h3 id="czy-delta-chat-obsługuje-obrazy-filmy-i-inne-załączniki">
@@ -182,7 +188,7 @@
<ul>
<li>
<p>Tak. Oprócz zwykłego tekstu wszystkie załączniki wiadomości e-mail są wyświetlane jako oddzielne wiadomości. Wiadomości wychodzące automatycznie otrzymują załączniki w razie potrzeby.</p>
<p>Tak. Obrazy, filmy, pliki, wiadomości głosowe itp. są obsługiwane jak zwykle.</p>
</li>
<li>
<p>Ze względu na wydajność obrazy są domyślnie optymalizowane i wysyłane w mniejszym rozmiarze, ale można je wysłać jako „plik”, aby zachować oryginał.</p>
@@ -268,6 +274,36 @@
<p>Aby skorzystać z tych funkcji, przytrzymaj dłużej lub kliknij prawym przyciskiem myszy czat na liście czatów.</p>
<h3 id="save">
Jak działają „Zapisane wiadomości”? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Zapisane wiadomości</strong> to czat, którego możesz użyć, aby łatwo zapisać i znaleźć wiadomości.</p>
<ul>
<li>
<p>W dowolnym czacie naciśnij i przytrzymaj lub kliknij prawym przyciskiem myszy wiadomość i wybierz <strong>Zapisz</strong></p>
</li>
<li>
<p>Zapisane wiadomości są oznaczone symbolem <img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="ikona Zapisz" /> obok znacznika czasu</p>
</li>
<li>
<p>Później otwórz czat „Zapisane wiadomości” — zobaczysz tam zapisane wiadomości. Naciskając <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="ikona strzałki w prawo" />, możesz wrócić do oryginalnej wiadomości w oryginalnym czacie</p>
</li>
<li>
<p>Na koniec możesz również użyć „Zapisz wiadomości”, aby robić <strong>osobiste notatki</strong> — otwórz czat, wpisz coś, dodaj zdjęcie lub wiadomość głosową itp.</p>
</li>
<li>
<p>Ponieważ „Zapisane wiadomości” są zsynchronizowane, mogą być bardzo przydatne do przesyłania danych między urządzeniami</p>
</li>
</ul>
<p>Wiadomości pozostają zapisane, nawet jeśli zostaną edytowane lub usunięte — może to być przez <a href="#edit">nadawcę</a>, <a href="#delold">czyszczenie urządzenia</a> lub <a href="#ephemeralmsgs">znikające wiadomości z innych czatów</a>.</p>
<h3 id="co-oznacza-zielona-kropka">
@@ -276,16 +312,40 @@
</h3>
<p>Czasami można zobaczyć <strong>zieloną kropkę</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" /> obok awatara kontaktu. Oznacza to, że był on „niedawno widziany” w ciągu ostatnich 10 minut:</p>
<ul>
<li>Od wersji Delta Chat 1.34 czasami można zobaczyć „zieloną kropkę” obok awatara kontaktu. Oznacza to, że był on „niedawno widziany”.</li>
<li>Dokładnie oznacza to, że w ciągu ostatnich 10 minut Delta Chat widział go:</li>
<li>dlatego, że wysłał Ci bezpośrednio wiadomość,</li>
<li>ponieważ napisał coś do grupy, której oboje jesteście członkami,</li>
<li>ponieważ wysłał Ci potwierdzenie przeczytania napisanej przez Ciebie wiadomości,</li>
<li>lub dlatego, że wysłał dane do Twojej aplikacji Delta Chat za pomocą <a href="#webxdc">Webxdc aplikacji</a>.</li>
<li>Nie jest to więc status online w czasie rzeczywistym a jeśli ktoś nie odpowie od razu, mimo że wydaje się, że jest online, nie martw się i daj mu trochę miejsca ;-)</li>
<li>Z drugiej strony inni nie zawsze „zobaczą, że jesteś online”. Jeśli wyłączyłeś potwierdzenia odczytu, nie zobaczą oni zielonej kropki, dopóki nie wyślesz do nich wiadomości lub nie napiszesz do grupy, w której również się znajdują.</li>
<li>ponieważ edytował lub usunął wiadomość w udostępnionym Tobie czacie,</li>
<li>lub dlatego, że używał <a href="#webxdc">aplikacji</a> w udostępnionym Tobie czacie.</li>
</ul>
<p>Nie jest to więc status online w czasie rzeczywistym a jeśli ktoś nie odpowie od razu, mimo że wydaje się, że jest online, nie martw się i daj mu trochę czasu :)</p>
<p>Z drugiej strony, inni nie zawsze „zauważą, że jesteś online”. Jeśli wyłączyłeś potwierdzenia odczytu, nie zobaczą zielonej kropki, dopóki nie zostanie spełniony jeden z powyższych warunków.</p>
<h3 id="edit">
Poprawianie literówek i usuwanie wiadomości po wysłaniu <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>Możesz edytować tekst wiadomości po wysłaniu. W tym celu naciśnij i przytrzymaj lub kliknij prawym przyciskiem myszy wiadomość i wybierz Edytuj, lub<img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="ikona Edytuj" />.</p>
</li>
<li>
<p>Jeśli wysłałeś wiadomość przypadkowo, z tego samego menu wybierz <strong>Usuń</strong>, a następnie <strong>Usuń u wszystkich</strong>.</p>
</li>
</ul>
<p>Podczas gdy edytowane wiadomości będą miały słowo „Edytowana” obok znacznika czasu, usunięte wiadomości zostaną usunięte bez znacznika na czacie. Powiadomienia nie są wysyłane i nie ma limitu czasowego.</p>
<p>Pamiętaj, że oryginalną wiadomość nadal mogą otrzymać członkowie czatu, którzy mogli już odpowiedzieć, przesłać dalej, zapisać, wykonać zrzut ekranu lub w inny sposób skopiować wiadomość.</p>
<h3 id="ephemeralmsgs">
@@ -494,23 +554,23 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
<ul>
<li>
<p>Aplikacja Delta Chat uzyskuje lokalnie „token urządzenia” i przechowuje go na serwerze <a href="https://delta.chat/chatmail">chatmail</a>.</p>
<p>Aplikacja Delta Chat uzyskuje lokalnie „token urządzenia”, szyfruje i przechowuje go na serwerze <a href="https://delta.chat/chatmail">chatmail</a>.</p>
</li>
<li>
<p>Kiedy serwer <a href="https://delta.chat/chatmail">chatmail</a> odbierze wiadomość e-mail od użytkownika Delta Chat, przekazuje token urządzenia do centralnego serwera proxy powiadomień Delta Chat.</p>
<p>Kiedy serwer <a href="https://delta.chat/chatmail">chatmail</a> odbierze wiadomość e-mail od użytkownika Delta Chat, przekazuje zaszyfrowany token urządzenia do centralnego serwera proxy powiadomień Delta Chat.</p>
</li>
<li>
<p>Centralny serwer proxy powiadomień Delta Chat przekazuje token urządzenia do odpowiedniej usługi Push (Apple, Google itp.), nie znając nawet adresu IP ani adresu e-mail użytkowników Delta Chat.</p>
<p>Centralny serwer proxy powiadomień Delta Chat deszyfruje token urządzenia i przekazuje go do odpowiedniej usługi Push (Apple, Google itp.), nie znając nawet adresu IP ani adresu e-mail użytkowników Delta Chat.</p>
</li>
<li>
<p>Centralna usługa Push (Apple, Google itp.) budzi aplikację Delta Chat na twoim urządzeniu, aby sprawdzić w tle nowe wiadomości. Nie zna chatmaila ani adresu e-mail urządzenia, na którym się budzi. Centralne usługi push Apple/Google nigdy nie widzą adresu e-mail (nadawcy ani odbiorcy), a także nigdy nie widzą treści wiadomości (również w formie zaszyfrowanej).</p>
</li>
</ul>
<p>Od maja 2024 r. serwery chatmail znają „tokeny urządzenia”, ale planujemy szyfrować te informacje na serwerze proxy powiadomień, tak aby serwer chatmail nigdy nie poznał tokena urządzenia.</p>
<p>Centralny serwer proxy powiadomień Delta Chat <a href="https://github.com/deltachat/notifiers">jest mały i w pełni zaimplementowany w Rust</a> i zapomina o tokenach urządzeń zaraz po ich przetworzeniu przez Apple/Google/itp, zwykle w ciągu kilku milisekund.</p>
<p>Pamiętaj, że token urządzenia jest szyfrowany między aplikacjami a serwerem proxy powiadomień, ale nie jest podpisany. Serwer proxy powiadomień nigdy nie widzi adresów e-mail, adresów IP ani żadnych kryptograficznych informacji identyfikujących powiązanych z urządzeniem użytkownika (tokenem).</p>
<p>W wyniku tego ogólnego projektu ochrony prywatności nawet przejęcie serwera chatmail lub pełne przejęcie centralnego serwera proxy powiadomień Delta Chat nie spowodowałoby ujawnienia prywatnych informacji, których usługi Push jeszcze nie posiadają.</p>
<h3 id="dlaczego-delta-chat-integruje-się-ze-scentralizowanymi-zastrzeżonymi-usługami-push-applegoogle">
@@ -525,10 +585,10 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
<p>Pamiętaj, że Delta Chat posiada <a href="#privacy-notifications">mały i chroniący prywatność system powiadomień push</a>, który zapewnia „natychmiastowe dostarczanie” wiadomości ze wszystkich serwerów chatmail, w tym potencjalnego, który <a href="https://delta.chat/chatmail#selfhosted">możesz skonfigurować samodzielnie bez naszej zgody</a>. Witamy w potędze interoperacyjnego i ogromnego systemu chatmail i e-mail :)</p>
<h2 id="szyfrowanie-i-bezpieczeństwo">
<h2 id="e2ee">
Szyfrowanie i bezpieczeństwo <a href="#szyfrowanie-i-bezpieczeństwo" class="anchor"></a>
Szyfrowanie i bezpieczeństwo <a href="#e2ee" class="anchor"></a>
</h2>
@@ -541,9 +601,26 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> służy do automatycznego ustanawiania szyfrowania end-to-end kontaktów i czatów grupowych. Autocrypt wykorzystuje ograniczony i <a href="#openpgp-secure">bezpieczny podzbiór standardu OpenPGP</a>. W pełni zaszyfrowane wiadomości są oznaczone kłódką <img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Protokoły Secure-Join</a> służą do nawiązywania rozmów z gwarantowanym szyfrowaniem typu end-to-end, które chroni przed atakami sieciowymi i zagrożonymi serwerami. Czaty oznaczone zielonym znacznikiem wyboru <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> gwarantują szyfrowanie end-to-end wiadomości.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -553,100 +630,94 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p>Wszystkie całkowicie zaszyfrowane wiadomości są oznaczone kłódką:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>Pełne szyfrowanie jest gwarantowane, jeśli obok tytułu czatu znajduje się zielony znacznik wyboru:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
Jak mogę uzyskać gwarancję kompleksowego szyfrowania i zielone znaczniki wyboru? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>Jeśli masz drugi kanał komunikacji ze swoim partnerem na czacie, np. czat wideo lub inny komunikator, możesz wygenerować link zaproszenia.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>Jeśli jesteście razem osobiście, możesz pokazać kod QR swojemu rozmówcy.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
<p>W przypadku <strong>zaproszeń grupowych</strong> dotknij tytułu czatu grupy, aby wyświetlić listę jej członków, i wybierz „Kod QR zaproszenia”.</p>
</li>
<li>
<p>Aby uzyskać <strong>bezpośrednie zaproszenia na czat 1:1</strong>, dotknij ikony kodu QR <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" /> na ekranie głównym aplikacji Delta Chat.</p>
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Pozwól swojemu partnerowi czatu zeskanować obraz QR za pomocą aplikacji Delta Chat lub dotknij „Kopiuj” lub „Udostępnij”, aby utworzyć link zaproszenia i udostępnić go swojemu partnerowi czatu.</p>
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Teraz poczekaj, aż między obydwoma urządzeniami <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">nastąpi wymiana wiadomości sieciowych Secure-Join</a>.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>Jeśli oba urządzenia są w trybie online, obie strony ostatecznie zobaczą czat (grupowy lub bezpośredni) z zielonym znacznikiem wyboru <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> obok tytułu.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>Jeśli jedno z urządzeń jest w trybie offline, zielone znaczniki wyboru pojawią się później, dopiero gdy urządzenie zostanie ponownie połączone z Internetem i zostanie zrealizowany protokół sieciowy Secure-Join.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Gratulacje! Teraz będziecie automatycznie korzystać z gwarantowanego kompleksowego szyfrowania tego kontaktu i oboje będziecie mogli dodawać się nawzajem do grup oznaczonych zielonym znacznikiem wyboru <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> , w ten sposób automatycznie rozpowszechniając gwarantowane kompleksowe szyfrowanie wśród swoich członków.</p>
<p>Congratulations!
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
Co oznacza zielony znacznik wyboru i „gwarantowane kompleksowe szyfrowanie”? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Tytuły czatów z zielonymi znacznikami wyboru <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> oznaczają, że wszystkie wiadomości na czacie będą w pełni szyfrowane i nie będą mogły zostać odczytane ani zmodyfikowane przez zhakowane serwery poczty e-mail lub dostawców Internetu. Dołączanie do czatów grupowych oznaczonych zielonym znacznikiem bezpiecznie rozpowszechnia informacje o szyfrowaniu wszystkich osób (i zielone znaczniki wyboru) w sposób gwarantujący kompleksowe szyfrowanie w grupie i pomiędzy członkami.</p>
<p>Profile kontaktów z zielonymi znacznikami wyboru <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> oznaczają, że obecnie gwarantujemy, że wiadomości kontaktu będą szyfrowane metodą end-to-end. Każdy kontakt oznaczony zielonym znacznikiem albo wykonał z tobą bezpośrednie <a href="#howtoe2ee">skanowanie QR</a>, albo został zweryfikowany przez inny kontakt oznaczony zielonym znacznikiem. Weryfikacje odbywają się automatycznie podczas dodawania członków do grup. Ktokolwiek doda kontakt do grupy oznaczonej zielonym znacznikiem, staje się osobą weryfikującą dla tych członków, którzy jeszcze nie wiedzieli o dodanym kontakcie. W profilu kontaktu możesz wielokrotnie dotykać tekstu „Zweryfikowano przez…”, aż dojdziesz do osoby, z którą bezpośrednio wykonałeś <a href="#howtoe2ee">skanowanie QR</a>.</p>
<p>Pamiętaj, że w profilu kontaktu możesz widzieć i klikać osoby weryfikujące, ale w tytule profilu nie ma zielonego znacznika wyboru. Zwykle oznacza to, że kontakt <a href="#nocryptanymore">„wysłał wiadomość z innego urządzenia”</a>.</p>
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Aby uzyskać bardziej szczegółowe omówienie „gwarantowanego szyfrowania typu end-to-end”, zobacz <a href="https://securejoin.delta.chat/en/latest/new.html">Protokoły Secure-Join</a>, a w szczególności przeczytaj o „zweryfikowanych grupach”, technicznym określeniu tak zwanego tutaj „zielonego znacznika wyboru” lub „gwarantowanego szyfrowania end-to-end” czatów.</p>
<h3 id="nocryptanymore">
Kontakt „wysłał wiadomość z innego urządzenia”, co mogę zrobić? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Twój czat z kontaktem utracił gwarantowane szyfrowanie typu end-to-end. Gdy zobaczysz to ostrzeżenie, zielony znacznik wyboru dla tego czatu i kontaktu został usunięty. <strong>Jeśli zdziwi cię nagły spadek gwarantowanego szyfrowania end-to-end tego kontaktu, nie akceptuj ostrzeżenia!</strong> Zamiast tego skontaktuj się ze swoim kontaktem za pośrednictwem drugiego kanału, takiego jak rozmowa wideo, inny komunikator lub rozmowa telefoniczna, aby dowiedzieć się, co się stało.</p>
<p>Jeśli twój kontakt rzeczywiście spowodował spadek gwarantowanego szyfrowania typu end-to-end, zapoznaj się z kolejnymi akapitami, aby poznać typowe przyczyny i sposoby ich łagodzenia. Niezależnie od tego, wszystkie inne czaty oznaczone zielonym znacznikiem są w pełni szyfrowane, nawet jeśli kontakt jest ich członkiem.</p>
<p><strong>Twój kontakt korzysta z Delta Chat na drugim urządzeniu (telefonie lub laptopie)</strong></p>
<p>Jeśli ma inne urządzenie z uruchomioną aplikacją Delta Chat, powinien usunąć konto z nowego urządzenia i dodać je <a href="#multiclient">jako drugie urządzenie zgodnie z opisem tutaj</a>. Gdy tylko skontaktuje się z tobą później, ostrzeżenie zniknie, a na obu urządzeniach twojego kontaktu zostanie ustanowione gwarantowane szyfrowanie.</p>
<p><strong>Twój kontakt ponownie zainstalował Delta Chat, używając swojego starego loginu do konta</strong></p>
<p>Jeśli ma <a href="#backup">plik kopii zapasowej</a>, powinien usunąć konto z nowego urządzenia i zamiast tego zaimportować plik kopii zapasowej, aby ponownie utworzyć konto. Gdy tylko skontaktuje się z tobą później, ostrzeżenie zniknie, a dla tego kontaktu zostanie przywrócone gwarantowane szyfrowanie.</p>
<p>Jeśli nie ma pliku kopii zapasowej, najlepiej wykonać <a href="#howtoe2ee">skanowanie QR</a> ze swoim partnerem czatu, aby przywrócić gwarantowane szyfrowanie end-to-end.</p>
<p><strong>Twój kontakt wysłał wiadomość e-mail za pośrednictwem interfejsu poczty internetowej lub innej aplikacji e-mail i wkrótce ponownie zacznie korzystać z Delta Chat.</strong></p>
<p>Jeśli masz pewność, że kontakt czasami korzysta z poczty internetowej lub innej aplikacji pocztowej, która nie zapewnia szyfrowania end-to-end, możesz zaakceptować ostrzeżenie. Gdy tylko twój kontakt ponownie skorzysta z Delta Chat, gwarantowane szyfrowanie end-to-end zostanie automatycznie przywrócone.</p>
<p><strong>Twój kontakt całkowicie przestał korzystać z Delta Chat</strong></p>
<p>Czasami utrzymanie kontaktu jest ważniejsze niż szyfrowanie end-to-end. <a href="#tls">„Szyfrowanie warstwy transportowej” (TLS)</a> może w dalszym ciągu w znaczący sposób chronić poufność wiadomości przesyłanych między urządzeniem a serwerem poczty e-mail. Jednak bez kompleksowego szyfrowania Ty i Twój kontakt ufacie swojemu serwerowi poczty e-mail, że nie będzie czytać ani manipulować waszymi wiadomościami i nie będzie przekazywać ich osobom trzecim.</p>
<p>W każdym razie nie możesz zrobić nic innego, jak zaakceptować ostrzeżenie. Usuń także kontakt z aktywnej grupy oznaczonej zielonym znacznikiem, którą znajdziesz w sekcji „Współdzielone czaty” w profilu kontaktu. Dzięki temu twój kontakt nie otrzyma „nieczytelnych” wiadomości.</p>
<p>Jeśli kontakt usunął Delta Chat z powodu błędów lub niepożądanego zachowania, rozważ opublikowanie postu na naszym <a href="https://support.delta.chat">forum pomocy</a>, aby pomóc nam zidentyfikować i rozwiązać typowe problemy. Dzięki!</p>
<h3 id="czy-załączniki-zdjęcia-pliki-pliki-audio-itp-są-szyfrowane-metodą-end-to-end">
@@ -667,16 +738,18 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p>Tak, Delta Chat korzysta z bezpiecznego podzbioru OpenPGP i wyświetla wskaźnik bezpieczeństwa kłódki na wiadomości tylko wtedy, gdy cała wiadomość jest prawidłowo zaszyfrowana i podpisana. Na przykład „Odłączone podpisy” nie są traktowane jako bezpieczne.</p>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP samo w sobie nie jest niebezpieczne. Większość publicznie omawianych problemów związanych z bezpieczeństwem OpenPGP tak naprawdę wynika ze złej użyteczności lub złej implementacji narzędzi, lub aplikacji (lub obu). Szczególnie ważne jest rozróżnienie pomiędzy OpenPGP, standardem szyfrowania IETF, a GnuPG (GPG), narzędziem wiersza poleceń implementującym OpenPGP. Wiele publicznych komentarzy krytycznych na temat OpenPGP tak naprawdę omawia GnuPG, którego Delta Chat nigdy nie używał. Delta Chat korzysta raczej z implementacji OpenPGP Rust <a href="https://github.com/rpgp/rpgp">rPGP</a>, dostępnej jako <a href="https://crates.io/crates/pgp">niezależny pakiet „pgp”</a> i poddanej <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">audytowi bezpieczeństwa w 2019 roku</a>.</p>
<p>OpenPGP samo w sobie nie jest niebezpieczne. Większość publicznie omawianych problemów związanych z bezpieczeństwem OpenPGP tak naprawdę wynika ze złej użyteczności lub złej implementacji narzędzi, lub aplikacji (lub obu). Szczególnie ważne jest rozróżnienie pomiędzy OpenPGP, standardem szyfrowania IETF, a GnuPG (GPG), narzędziem wiersza poleceń implementującym OpenPGP. Wiele publicznych komentarzy krytycznych na temat OpenPGP tak naprawdę omawia GnuPG, którego Delta Chat nigdy nie używał. Delta Chat korzysta raczej z implementacji OpenPGP Rust <a href="https://github.com/rpgp/rpgp">rPGP</a>, dostępnej jako <a href="https://crates.io/crates/pgp">niezależny pakiet „pgp”</a> i poddanej <a href="#security-audits">audytowi bezpieczeństwa w 2019 i 2024 roku</a>.</p>
<p>Naszym celem, wraz z innymi wdrażającymi OpenPGP, jest dalsza poprawa parametrów bezpieczeństwa poprzez wdrożenie <a href="https://datatracker.ietf.org/doc/draft-ietf-openpgp-crypto-refresh/">nowego IETF OpenPGP Crypto-Refresh</a>, który na szczęście został przyjęty latem 2023 roku.</p>
<h3 id="openpgp-alternatives">
Czy rozważałeś użycie alternatyw dla OpenPGP do szyfrowania typu end-to-end? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -700,16 +773,17 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
<h3 id="tls">
Czy wiadomość jest udostępniana w postaci zwykłego tekstu, jeśli szyfrowanie end-to-end nie jest dostępne? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Nawet jeśli nie ma gwarancji, że twoje wiadomości będą zaszyfrowane metodą end-to-end, nadal są chronione przed dostawcami Internetu, takimi jak operatorzy komórkowi lub telewizji kablowej. Jednakże dostawcy poczty e-mail zarówno twoi, jak i twojego odbiorcy mogą czytać, analizować, a nawet modyfikować twoje wiadomości, w tym wszelkie załączniki, jeśli nie są one w pełni zaszyfrowane.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat domyślnie korzysta ze ścisłego <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">szyfrowania TLS</a>, które zabezpiecza połączenia pomiędzy twoim urządzeniem a dostawcą poczty e-mail. Cała obsługa TLS Delta Chat została poddana niezależnemu <a href="#security-audits">audytowi bezpieczeństwa</a>. Co więcej, połączenie między tobą a dostawcą poczty e-mail odbiorcy będzie zazwyczaj również szyfrowane. Jeśli zaangażowane serwery poczty e-mail obsługują <a href="https://datatracker.ietf.org/doc/html/rfc8461">MTA-STS</a>, pomiędzy dostawcami poczty e-mail będzie egzekwowane szyfrowanie transportu. W takim przypadku komunikacja Delta Chat nigdy nie będzie udostępniana w Internecie w postaci zwykłego tekstu, nawet jeśli wiadomość nie została zaszyfrowana metodą end-to-end.</p>
<p>Pamiętaj, że <a href="#howtoe2ee">utrzymywanie gwarantowanego szyfrowania typu end-to-end</a> oprócz szyfrowania TLS zapewnia wszechstronne bezpieczeństwo między urządzeniami twoimi i odbiorców. Nawet twój dostawca poczty e-mail lub Internetu nie będzie w stanie przeczytać ani zmodyfikować twoich wiadomości.</p>
<h3 id="message-metadata">
@@ -754,50 +828,6 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
<p>Możesz sprawdzić stan szyfrowania end-to-end ręcznie w oknie dialogowym „Szyfrowanie” (profil użytkownika w systemie Android/iOS lub kliknij prawym przyciskiem myszy element listy czatu użytkownika na komputerze). Delta Chat pokazuje tam dwa odciski palców. Jeśli te same odciski palców pojawią się u ciebie i urządzeniu twojego kontaktu, połączenie jest bezpieczne.</p>
<h3 id="jak-mogę-sprawdzić-stan-szyfrowania-wiadomości">
Jak mogę sprawdzić stan szyfrowania wiadomości? <a href="#jak-mogę-sprawdzić-stan-szyfrowania-wiadomości" class="anchor"></a>
</h3>
<p>Mała <strong>kłódka</strong> w dymku wiadomości oznacza, że wiadomość od danego nadawcy została prawidłowo zaszyfrowana. Jeśli <strong>nie ma kłódki</strong>, wiadomość nie została prawidłowo zaszyfrowana metodą end-to-end, najprawdopodobniej dlatego, że nadawca korzysta z aplikacji lub interfejsu poczty internetowej bez obsługi szyfrowania typu end-to-end.</p>
<h3 id="dlaczego-widzę-niezaszyfrowane-wiadomości">
Dlaczego widzę niezaszyfrowane wiadomości? <a href="#dlaczego-widzę-niezaszyfrowane-wiadomości" class="anchor"></a>
</h3>
<p>Jeśli kontakt korzysta z aplikacji e-mail bez Autocrypt, wszystkie wiadomości od tego kontaktu (w czacie grupowym lub 1:1) nie będą w pełni szyfrowane, w związku z czym nie będą wyświetlane z „kłódką” przy wiadomościach. Pamiętaj, że nawet jeśli twoje kontakty korzystają z Delta Chat na swoim koncie, mogą również używać na tym koncie aplikacji e-mail bez Autocrypt, co może powodować sporadyczne wysyłanie niezaszyfrowanych wiadomości. Odpowiadanie niezaszyfrowanych wiadomości na niezaszyfrowane wiadomości jest wymagane przez funkcję Autocrypt, aby zapobiec nieczytelnym wiadomościom po stronie twoich kontaktów i ich aplikacji e-mail bez Autocrypt.</p>
<h3 id="jak-mogę-uzyskać-zaszyfrowany-ened-to-end-czat-z-kontaktem-delta-chat-który-czasami-korzysta-z-poczty-internetowej-lub-innej-aplikacji-e-mail-bez-autocrypt">
Jak mogę uzyskać zaszyfrowany ened-to-end czat z kontaktem Delta Chat, który czasami korzysta z poczty internetowej lub innej aplikacji e-mail bez Autocrypt? <a href="#jak-mogę-uzyskać-zaszyfrowany-ened-to-end-czat-z-kontaktem-delta-chat-który-czasami-korzysta-z-poczty-internetowej-lub-innej-aplikacji-e-mail-bez-autocrypt" class="anchor"></a>
</h3>
<p>Jeśli potrzebujesz bezpiecznie, kompleksowo zaszyfrowanego czatu z kontaktem, który korzysta ze swojego konta zarówno w Delta Chat, jak i w aplikacjach bez Autocrypt (np. poczta internetowa), najlepiej skonfigurować z nim gwarantowane szyfrowanie typu end-to-end, a następnie utworzyć <a href="#howtoe2ee">gwarantowany zaszyfrowany end-to-end</a> czat grupowy z wami dwoma jako członkami. W tym czacie grupowym wszystkie wiadomości będą w pełni szyfrowane, nawet jeśli bezpośredni czat między wami zawiera ostrzeżenie <a href="#nocryptanymore">„…wysłano wiadomość z innego urządzenia”</a>.</p>
<h3 id="jak-mogę-zapewnić-kompleksowe-szyfrowanie-i-usuwanie-wiadomości">
Jak mogę zapewnić kompleksowe szyfrowanie i usuwanie wiadomości? <a href="#jak-mogę-zapewnić-kompleksowe-szyfrowanie-i-usuwanie-wiadomości" class="anchor"></a>
</h3>
<p>Najlepszym sposobem, aby mieć pewność, że każda wiadomość jest kompleksowo zaszyfrowana, a metadane usunięte tak szybko, jak to możliwe, jest <a href="#howtoe2ee">korzystanie z czatów z gwarantowanym szyfrowaniem end-to-end</a> i włączonymi <a href="#ephemeralmsgs">znikającymi wiadomościami</a>.</p>
<p>Gwarantowane szyfrowane metodą end-to-end czaty chronią przed atakami <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>, a włączenie znikających wiadomości powoduje usunięcie wiadomości z serwera po upływie czasu skonfigurowanego przez użytkownika.</p>
<p>Jeśli nie potrzebujesz dłuższej kopii wiadomości na serwerze, możesz także włączyć opcję <a href="#delold">„automatycznie usuń wiadomości z serwera”</a>.</p>
<h3 id="pfs">
@@ -806,23 +836,35 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p>Nie, Delta Chat nie obsługuje funkcji Perfect Forward Secrecy (PFS). Oznacza to, że jeśli twój prywatny klucz deszyfrujący Delta Chat wycieknie i ktoś zdobędzie twoje wcześniejsze wiadomości w trakcie przesyłania, będzie mógł je odszyfrować i odczytać przy użyciu ujawnionego klucza deszyfrowania.</p>
<p>No, not yet.</p>
<p>Należy jednak pamiętać, że jeśli ktoś zdobędzie twoje klucze deszyfrujące, zazwyczaj będzie mógł również uzyskać twoje wiadomości, niezależnie od tego, czy obowiązuje zasada Perfect Forward Secrecy, czy nie. Typową sytuacją w świecie rzeczywistym w przypadku wycieku kluczy deszyfrujących jest przejęcie urządzenia, które omawiamy w naszej odpowiedzi na temat <a href="#device-seizure">przejęcia metadanych i urządzenia</a>.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Możliwe, że Delta Chat ewoluuje, aby wspierać Perfect Forward Secrecy, ponieważ OpenPGP to tylko kontener na zaszyfrowane wiadomości, ale zarządzanie kluczami szyfrowania (a tym samym rotacja kluczy lub „zapadanie kluczy”) mogłoby być zorganizowane w elastyczny sposób. Zobacz <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">prototyp PFS firmy Seqouia</a>, aby zapoznać się z istniejącymi eksperymentami w społeczności implementatorów OpenPGP.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="czy-szyfrowanie-end-to-end-delta-chat-jest-tak-samo-bezpieczne-jak-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Czy szyfrowanie end-to-end Delta Chat jest tak samo bezpieczne jak Signal? <a href="#czy-szyfrowanie-end-to-end-delta-chat-jest-tak-samo-bezpieczne-jak-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>To zależy od tego, co jest dla ciebie ważne. Delta Chat <a href="#pfs">nie obsługuje PFS</a> tak jak Signal, ale zapewnia <a href="#e2eeguarantee">gwarantowane szyfrowane end-to-end czatów</a>, które jest zabezpieczeniem przed zaatakowanymi serwerami lub uszkodzonymi sieciami. Signal i większość innych komunikatorów obsługujących PFS nie zapewniają praktycznego schematu ochrony czatów grupowych przed atakami sieciowymi, które są prawdopodobnie bardziej niepokojące niż potencjalny atakujący, który przejmuje twój telefon i prywatne ustawienia szyfrowania i w ten sposób nie twoje wiadomości i mimo to ma pełny zapis wszystkich poprzednio zaszyfrowanych wiadomości.</p>
<p>Tak.</p>
<p>W każdym razie szyfrowanie end-to-end Delta Chat wykorzystuje <a href="#openpgp-secure">bezpieczny podzbiór OpenPGP</a>, który został poddany <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">niezależnemu audytowi bezpieczeństwa</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -832,33 +874,11 @@ nadal będziesz mógł pisać, ale nie będziesz już powiadamiany o żadnych no
</h3>
<p>Tak.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>Nie.</p>
<p>Alternatywnie możesz zaimportować klucz ręcznie w „Ustawienia » Zaawansowane » Importuj tajne klucze”. Uwaga: Upewnij się, że klucz nie jest chroniony hasłem lub wcześniej usuń hasło.</p>
<p>Delta Chat generuje bezpieczne klucze OpenPGP zgodnie ze specyfikacją Autocrypt 1.1. Możesz wyeksportować swój prywatny klucz, ale nie możesz zaimportować dodatkowych kluczy prywatnych.</p>
<p>Jeśli nie masz klucza lub nawet nie wiesz, że go potrzebujesz nie przejmuj się: Delta Chat generuje go w razie potrzeby, nie trzeba naciskać przycisku, aby to zrobić.</p>
<h3 id="nie-mogę-zaimportować-istniejącego-klucza-pgp-do-delta-chat">
Nie mogę zaimportować istniejącego klucza PGP do Delta Chat. <a href="#nie-mogę-zaimportować-istniejącego-klucza-pgp-do-delta-chat" class="anchor"></a>
</h3>
<p>Jest wielce prawdopodobne, że problemem jest klucz, który jest zaszyfrowany i/lub używa hasła. Takie klucze nie są obsługiwane przez Delta Chat. Usuń szyfrowanie i hasło i spróbować ponownie zaimportować klucz.</p>
<p>Innym częstym błędem jest nieprawidłowe zakończenie pliku.
Użyj opancerzonego formatu ASCII i końcówki pliku <code class="language-plaintext highlighter-rouge">.asc</code>.</p>
<p>Rozsądny format, Delta Chat obsługuje popularne formaty kluczy prywatnych OpenPGP, jednak jest mało prawdopodobne, że będziemy obsługiwać 100% wszystkich kluczy prywatnych z dowolnych źródeł. To również nie jest głównym celem Delta Chat (w rzeczywistości, znaczna większość użytkowników Delta Chat nie będzie miała żadnego klucza przed rozpoczęciem korzystania z Delta). Jednak staramy się wspierać klucze prywatne z innych źródeł tak dobrze jak to tylko możliwe.</p>
<p>Usunięcie hasła z klucza prywatnego będzie się różnić w zależności od
oprogramowania używanego do zarządzania kluczami PGP. Za pomocą programu Enigmail można ustawić
hasło na pustą wartość w oknie zarządzania kluczami. Z GnuPG możesz ustawić je <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">z linii poleceń</a>.
W przypadku innych programów można znaleźć rozwiązanie online.</p>
<p>Generalnie nie zalecamy ani nie oferujemy użytkownikom wykonywania ręcznego zarządzania kluczami. Chcemy się upewnić, że audyty bezpieczeństwa mogą skupić się na kilku sprawdzonych algorytmach kryptograficznych, a nie na pełnym zakresie możliwych algorytmów dozwolonych w OpenPGP.</p>
<h3 id="security-audits">
@@ -868,7 +888,18 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
</h3>
<p>Projekt Delta Chat przeszedł cztery niezależne audyty bezpieczeństwa i jedną niezależną analizę bezpieczeństwa, od najnowszego do najstarszego:</p>
<p>Tak, wielokrotnie.
Projekt Delta Chat stale przechodzi niezależne audyty bezpieczeństwa i analizy,
od najnowszych do najstarszych:</p>
<p>W grudniu 2024 r. <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET</a> wykonała ocenę rPGP zleconą przez <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a>. rPGP służy jako kompleksowy silnik szyfrowania <a href="https://openpgp.org">OpenPGP</a> w Delta Chat. Wydano dwa ostrzeżenia związane z wynikami tego audytu:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">„Paniki przy nieprawidłowym wprowadzaniu niezaufanych danych wejściowych”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">„Potencjalne wyczerpanie zasobów podczas obsługi niezaufanych wiadomości”</a> CVE-2024-53857</li>
</ul>
<p>Problemy opisane w tych ostrzeżeniach zostały naprawione i są częścią wydań Delta Chat we wszystkich sklepach z aplikacjami od grudnia 2024 r.</p>
<ul>
<li>
@@ -904,7 +935,7 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
</h3>
<p>Tak. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Tak. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -945,7 +976,7 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
<p>W systemie <strong>iOS</strong> upewnij się, że jest przydzielony dostęp do opcji „Ustawienia » Aplikacje » Delta Chat » <strong>Sieć lokalna</strong></p>
</li>
<li>
<p>W systemie <strong>macOS</strong> włącz „Ustawienia systemowe » Prywatność i bezpieczeństwo » <strong>Sieć lokalna</strong> » Delta Chat”</p>
<p>W systemie <strong>macOS</strong> włącz „Preferencje systemowe » Ochrona i prywatność » <strong>Sieć lokalna</strong> » Delta Chat”</p>
</li>
<li>
<p>Twój system może mieć „zaporę ogniową”, o której wiadomo, że powoduje problemy (szczególnie w systemie Windows).
@@ -954,6 +985,9 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
<li>
<p><strong>Sieci dla gości</strong> mogą nie pozwalać urządzeniom na komunikację między sobą. Jeśli to możliwe, korzystaj z sieci innej niż gość.</p>
</li>
<li>
<p>Jeśli nadal masz problemy z korzystaniem z tej samej sieci, spróbuj otworzyć <strong>Hotspot</strong> na jednym urządzeniu i połączyć się z tą siecią Wi-Fi z drugiego urządzenia</p>
</li>
<li>
<p>Upewnij się, że na urządzeniu docelowym jest <strong>wystarczająca ilość miejsca</strong></p>
</li>
@@ -988,6 +1022,20 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
<li>Jesteś teraz zsynchronizowany i możesz używać obu urządzeń do wysyłania i odbierania wiadomości zaszyfrowanych end-to-end w komunikacji ze swoimi partnerami.</li>
</ul>
<h3 id="czy-usuwanie-przypinanie-archiwizowanie-zapisywanie-wyciszanie-itp-jest-synchronizowane-ze-wszystkimi-urządzeniami">
Czy usuwanie, przypinanie, archiwizowanie, zapisywanie, wyciszanie itp. jest synchronizowane ze wszystkimi urządzeniami? <a href="#czy-usuwanie-przypinanie-archiwizowanie-zapisywanie-wyciszanie-itp-jest-synchronizowane-ze-wszystkimi-urządzeniami" class="anchor"></a>
</h3>
<p>Tak.</p>
<p>Jeśli np. usuniesz czat lub wiadomość z telefonu, zostaną one usunięte z aplikacji na komputer, gdy tylko ponownie będą online.</p>
<p>Wyjątkiem jest <a href="#delold">usuwanie starych wiadomości z urządzenia</a>, ponieważ różne urządzenia mogą mieć różne pojemności pamięci i ustawienia specyficzne dla systemu, takie jak dźwięki powiadomień.</p>
<h3 id="czy-są-jakieś-plany-wprowadzenia-klienta-web-delta-chat">
@@ -1024,7 +1072,7 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
<li>Aplikacje webxdc nie mogą wysyłać danych do Internetu ani niczego pobierać.</li>
<li>Aplikacja webxdc może wymieniać dane wyłącznie w ramach czatu Delta Chat, a ich kopie znajdują się na urządzeniach twoich partnerów czatu. Poza tym jest całkowicie odizolowana od Internetu.</li>
<li>Prywatność, jaką oferuje aplikacja webxdc, to prywatność twojego czatu jeśli ufasz osobom, z którymi rozmawiasz, możesz ufać także aplikacji webxdc.</li>
<li>Oznacza to również: otwieranie aplikacji webxdc na czatach, w przypadku których nie ufa się członkom, może stanowić ryzyko dla prywatności tak jak załączniki do wiadomości e-mail, gdzie otwiera się tylko załączniki od nadawców, którym ufasz, a nie od spamerów.</li>
<li>Oznacza to również: otwieranie aplikacji w czatach z niezaufanymi członkami, co może stanowić ryzyko dla prywatności. Podobnie jak w przypadku załączników do wiadomości e-mail, połączeń wideo lub zwykłych linków: otwieraj je tylko od nadawców, którym ufasz, a nie od spamerów. Spamerzy mogą poznać wszelkie dane, które im wysyłasz, a także twój adres IP.</li>
</ul>
<h3 id="gdzie-mogę-zdobyć-aplikacje-webxdc">
@@ -1091,13 +1139,8 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
</h3>
<ul>
<li>Dzięki liście rozgłoszeniowej możesz wysłać wiadomość do wielu odbiorców jednocześnie; kiedy ci odpowiedzą, otrzymasz odpowiedź w bezpośrednim czacie 1: 1 z nimi. Odbiorcy nie widzą siebie nawzajem.</li>
<li>Technicznie, jest to e-mail z wieloma odbiorcami w „ukrytej kopii”.</li>
<li>Możesz włączyć tę funkcję w sekcji „Funkcje eksperymentalne” w ustawieniach zaawansowanych. Następnie możesz utworzyć listę rozgłoszeniową z okna dialogowego „Nowy czat”.</li>
<li>Jeśli używasz więcej niż jednego urządzenia, listy rozgłoszeniowe nie są obecnie synchronizowane między nimi.</li>
<li>Wiadomości wysyłane do list rozgłoszeniowych nie są szyfrowane. Szyfrowanie złamałoby anonimowość, ponieważ wtedy wszyscy odbiorcy wiedzieliby, kto jeszcze je otrzymał (wysyłanie indywidualnych wiadomości do wszystkich byłoby gorsze z powodu limitu prędkości i zużycia sieci).</li>
</ul>
<p>Za pomocą listy rozgłoszeniowej możesz wysłać wiadomość do wielu odbiorców naraz; odbiorcy nie mogą odpowiedzieć na tej liście.
Listy rozgłoszeniowe są nadal wysoce eksperymentalne i bardzo prawdopodobne, że zostaną zastąpione czymś innym, bądźcie czujni :)</p>
<h3 id="jak-mogę-udostępnić-swoją-lokalizację-moim-rozmówcom">
@@ -1143,6 +1186,11 @@ W przypadku innych programów można znaleźć rozwiązanie online.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Zmień swój adres w „Ustawienia → Zaawansowane → Hasło i konto” i wprowadź hasło do swojego nowego konta (i jeśli to konieczne, ustawienia serwera). Otrzymasz informację o przeniesieniu na nowy adres. Dodatkowe powiadomienie pojawi się również na czacie „Komunikaty urządzenia”.</p>
@@ -1216,17 +1264,17 @@ Oto, co robi Delta Chat z tymi uprawnieniami:</p>
Jednak niektórzy dostawcy potrzebują specjalnych opcji, aby działać poprawnie, zobacz <a href="https://providers.delta.chat">Przegląd dostawców</a></li>
</ul>
<h3 id="chcę-zarządzać-własnym-serwerem-e-mail-dla-delta-chat-co-polecacie">
<h3 id="chcę-zarządzać-własnym-serwerem-dla-delta-chat-co-polecacie">
Chcę zarządzać własnym serwerem e-mail dla Delta Chat. Co polecacie? <a href="#chcę-zarządzać-własnym-serwerem-e-mail-dla-delta-chat-co-polecacie" class="anchor"></a>
Chcę zarządzać własnym serwerem dla Delta Chat. Co polecacie? <a href="#chcę-zarządzać-własnym-serwerem-dla-delta-chat-co-polecacie" class="anchor"></a>
</h3>
<ul>
<li>Większość serwerów pocztowych będzie działać dobrze. Ale to, co osobiście polecamy, to połączenie mailcow i mailadm, jak opisano <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">w tym poście na blogu</a>.</li>
<li>Instrukcję instalacji można znaleźć <a href="https://delta.chat/pl/serverguide">na naszej stronie internetowej</a>.</li>
<li>Większość serwerów pocztowych będzie działać dobrze. Ale my osobiście polecamy serwer przekaźnikowy chatmail, jak opisano <a href="https://delta.chat/en/2023-12-13-chatmail">w tym wpisie na blogu</a>.</li>
<li>Możesz znaleźć <a href="https://github.com/chatmail/relay">przewodnik instalacji na GitHub</a>.</li>
</ul>
<h3 id="dlaczego-muszę-wpisać-moje-hasło-e-mail-do-delta-chat-czy-to-jest-bezpieczne">
@@ -1239,7 +1287,7 @@ Jednak niektórzy dostawcy potrzebują specjalnych opcji, aby działać poprawni
<p>Podobnie jak w przypadku innych programów pocztowych, takich jak Thunderbird, K9-Mail lub Outlook, program potrzebuje hasła, aby można było go używać do wysyłania i odbierania e-maili. Oczywiście hasło jest przechowywane tylko na Twoim urządzeniu. Hasło jest przesyłane tylko do Twojego dostawcy poczty e-mail (po zalogowaniu), który i tak ma dostęp do Twojej poczty</p>
<p>Ponieważ Delta Chat jest Open Source, możesz sprawdzić <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Kod źródłowy</a>
<p>Ponieważ Delta Chat jest Open Source, możesz sprawdzić <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Kod źródłowy</a>
jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny sposób. Cieszymy się z opinii, które sprawiają, że aplikacja jest bezpieczniejsza dla wszystkich naszych użytkowników.</p>
<h3 id="jakie-wiadomości-pojawiają-się-w-delta-chat">
@@ -1318,17 +1366,17 @@ jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny
<p>Niektórzy używają Delta Chat jako zwykłego klienta poczty e-mail i chcą używać folderu Skrzynka odbiorcza dla swojej poczty zamiast folderu DeltaChat. Jeśli wyłączysz opcję „Oglądaj folder DeltaChat”, powinieneś również wyłączyć opcję „Automatyczne przenoszenie do folderu DeltaChat”. W przeciwnym razie usuwanie wiadomości lub konfiguracja wielu urządzeń może nie działać poprawnie.</p>
<h3 id="czy-delta-chat-jest-kompatybilny-z-protonmail--tutanota--criptext">
<h3 id="czy-delta-chat-jest-kompatybilny-z-proton-mail--tutanota--criptext">
Czy Delta Chat jest kompatybilny z Protonmail / Tutanota / Criptext? <a href="#czy-delta-chat-jest-kompatybilny-z-protonmail--tutanota--criptext" class="anchor"></a>
Czy Delta Chat jest kompatybilny z Proton Mail / Tutanota / Criptext? <a href="#czy-delta-chat-jest-kompatybilny-z-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>I tak i nie.</li>
<li>Nie, nie możesz używać swojego konta Protonmail, Tutanota lub Criptext z Delta Chat; nie oferują one odbierania poczty przez IMAP.</li>
<li>Nie, nie możesz używać swojego konta Proton Mail, Tutanota lub Criptext z Delta Chat; nie oferują one odbierania poczty przez IMAP.</li>
<li>W każdym przypadku możesz użyć Delta Chat do wysyłania wiadomości do osób, które używają Protonmail, Tutanota lub Criptext. Te wiadomości nie będą jednak szyfrowane metodą end-to-end. Szyfrowanie typu end-to-end, które oferują ci dostawcy, nie jest kompatybilne z <a href="https://autocrypt.org/">Autocrypt</a> stosowanym standardowo w Delta Chat.</li>
<li>Delta Chat może zaszyfrować metodą end-to-end za pośrednictwem dowolnego dostawcy poczty e-mail z dowolną <a href="https://autocrypt.org/dev-status.html">aplikacją e-mail z włączoną funkcją Autocrypt</a>.</li>
</ul>
@@ -1360,7 +1408,7 @@ jeśli chcesz sprawdzić, czy Twoje poświadczenia są przetwarzane w bezpieczny
</h3>
<ul>
<li>Zobacz <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Standardy używane w Delta Chat</a>.</li>
<li>Zobacz <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standardy używane w Delta Chat</a>.</li>
</ul>
<h3 id="gdzie-moi-znajomi-mogą-znaleźć-delta-chat">
@@ -1445,4 +1493,4 @@ Fundusze te wspierają nasze długofalowe cele, aby uczynić Delta Chat bardziej
</body></html>
</body></html>
+271 -350
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="pt"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#o-que-é-o-delta-chat">O que é o Delta Chat</a>
<ul>
<li><a href="#como-encontro-as-pessoas-para-conversar">Como encontro as pessoas para conversar?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#quem-consegue-ver-a-imagem-do-meu-perfil">Quem consegue ver a imagem do meu perfil?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#what-do-pinning-muting-and-archiving-mean">What do Pinning, Muting and Archiving mean?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#what-does-the-green-dot-mean">What does the green dot mean?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#encryption-and-security">Encryption and Security</a>
<li><a href="#e2ee">Encryption and Security</a>
<ul>
<li><a href="#which-standards-are-used-for-end-to-end-encryption">Which standards are used for end-to-end encryption?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">Is OpenPGP secure?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#is-delta-chat-vulnerable-to-efail">Is Delta Chat vulnerable to EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">How does Delta Chat protect metadata in messages?</a></li>
<li><a href="#device-seizure">How to protect metadata and contacts when a device is seized?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#how-can-i-check-the-encryption-status-of-messages">How can I check the encryption status of messages?</a></li>
<li><a href="#why-do-i-see-unencrypted-messages">Why do I see unencrypted messages?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Posso reutilizar minha chave privada existente?</a></li>
<li><a href="#eu-não-posso-importar-minha-chave-pgp-existente-para-o-delta-chat">Eu não posso importar minha chave PGP existente para o Delta Chat.</a></li>
<li><a href="#security-audits">Was Delta Chat independently audited for security vulnerabilities?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#posso-usar-o-delta-chat-em-vários-dispositivos-ao-mesmo-tempo">Posso usar o Delta Chat em vários dispositivos ao mesmo tempo?</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#existe-algum-plano-para-a-introdução-de-um-cliente-web-para-delta-chat">Existe algum plano para a introdução de um cliente Web para Delta Chat?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#quais-permissões-o-delta-chat-precisa">Quais permissões o Delta Chat precisa?</a></li>
<li><a href="#o-delta-chat-funciona-com-meu-provedor-de-e-mail">O Delta Chat funciona com <em>meu</em> provedor de e-mail?</a></li>
<li><a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">I want to manage my own e-mail server for Delta Chat. What do you recommend?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#por-que-preciso-entrar-com-a-senha-do-meu-email-no-delta-chat-isso-é-seguro">Por que preciso entrar com a senha do meu email no Delta Chat? Isso é seguro?</a></li>
<li><a href="#quais-mensagens-aparecem-no-delta-chat">Quais mensagens aparecem no Delta Chat?</a></li>
<li><a href="#o-delta-chat-suporta-emails-html">O Delta Chat suporta emails HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#para-que-serve-o-ajuste-enviar-cópia-para-si-mesmo">Para que serve o ajuste “Enviar cópia para si mesmo”?</a></li>
<li><a href="#por-que-eu-posso-escolher-assistir-à-pasta-enviado">Por que eu posso escolher assistir à pasta “Enviado”?</a></li>
<li><a href="#por-que-eu-posso-escolher-não-observar-a-pasta-deltachat">Por que eu posso escolher não observar a pasta DeltaChat?</a></li>
<li><a href="#o-delta-chat-é-compatível-com-protonmail--tutanota--criptext">O Delta Chat é compatível com Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#o-delta-chat-é-compatível-com-proton-mail--tutanota--criptext">O Delta Chat é compatível com Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">How can I delete my account?</a></li>
<li><a href="#estou-interessado-nos-detalhes-técnicos-pode-me-dizer-mais">Estou interessado nos detalhes técnicos. Pode me dizer mais?</a></li>
<li><a href="#where-can-my-friends-find-delta-chat">Where can my friends find Delta Chat?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>If a message comes from an unknown contact, it appears as a <strong>request</strong>.</p>
<ul>
<li>If a message comes from an unknown contact, it appears as a <strong>request</strong>. You
need to accept the request before you can reply.</li>
<li>You can also “delete” it if you dont want to chat with them for now. This
does <em>not</em> delete the message on the server, only on your device. So you can
still deal with the message in a different mail app.</li>
<li>If you delete a request, future messages from that contact will still appear
<li>
<p>You need to <strong>accept</strong> the request before you can reply.</p>
</li>
<li>
<p>You can also <strong>delete</strong> it if you dont want to chat with them for now.</p>
</li>
<li>
<p>If you delete a request, future messages from that contact will still appear
as message request, so you can change your mind. If you really dont want to
receive messages from this person, consider <em>blocking</em> them.</li>
receive messages from this person, consider <strong>blocking</strong> them.</p>
</li>
</ul>
<h3 id="dá-para-mandar-imagens-vídeos-e-outros-anexos-pelo-delta-chat">
@@ -300,6 +303,41 @@ Archived chats remain accessible above the chat list or via search.</p>
<p>To use the functions, long tap or right click a chat in the chat list.</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="what-does-the-green-dot-mean">
@@ -308,25 +346,53 @@ Archived chats remain accessible above the chat list or via search.</p>
</h3>
<p>You can sometimes see a <strong>green dot</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" />
next to the avatar of a contact.
It means they were <strong>recently seen</strong> in the last 10 minutes:</p>
<ul>
<li>Since Delta Chat 1.34 you can sometimes see a “green dot” next to the avatar
of a contact. It means they were “recently seen”.</li>
<li>In detail: it means, that in the last 10 minutes, Delta Chat has seen them:
<ul>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>or because they sent data to your Delta Chat app by using a
<a href="#webxdc">webxdc app</a>.</li>
</ul>
</li>
<li>So this is not a real time online status - and if someone doesnt answer
right away even though they seem to be online, dont worry and give them some
space ;-)</li>
<li>On the other hand, others will not always “see that you are online”. If you
have turned off read receipts, they will not see the green dot until you
message them or write to a group theyre in as well.</li>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>because they edit or delete a message in a chat shared with you,</li>
<li>or because they use an <a href="#webxdc">app</a> in a chat shared with you.</li>
</ul>
<p>So this is not a real time online status -
and if someone doesnt answer right away even though they seem to be online,
dont worry and give them some space :)</p>
<p>On the other hand, others will not always “see that you are online”.
If you have turned off read receipts,
they will not see the green dot
until one of the above conditions are met.</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -597,16 +663,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -619,14 +685,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -641,7 +708,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -649,10 +716,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="encryption-and-security">
<h2 id="e2ee">
Encryption and Security <a href="#encryption-and-security" class="anchor"></a>
Encryption and Security <a href="#e2ee" class="anchor"></a>
</h2>
@@ -665,18 +732,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -686,28 +761,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -716,141 +800,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -875,19 +878,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -897,7 +899,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -940,17 +942,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -962,10 +962,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1028,74 +1024,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="how-can-i-check-the-encryption-status-of-messages">
How can I check the encryption status of messages? <a href="#how-can-i-check-the-encryption-status-of-messages" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="why-do-i-see-unencrypted-messages">
Why do I see unencrypted messages? <a href="#why-do-i-see-unencrypted-messages" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>If you dont need a longer-lived copy of your messages on the server,
you can also turn on <a href="#delold">“delete messages from server automatically”</a>.</p>
<h3 id="pfs">
@@ -1104,45 +1032,35 @@ you can also turn on <a href="#delold">“delete messages from server automatica
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Sim.</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1152,42 +1070,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Sim.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Alternatively, you can import the key manually in “Settings -&gt; Advanced settings -&gt; Import secret keys”.
Caution: Make sure the key is not protected by a password, or remove the password beforehand.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>If you dont have a key or dont even know you would need one - dont worry: Delta Chat generates keys as needed, you dont have to hit a button for it.</p>
<h3 id="eu-não-posso-importar-minha-chave-pgp-existente-para-o-delta-chat">
Eu não posso importar minha chave PGP existente para o Delta Chat. <a href="#eu-não-posso-importar-minha-chave-pgp-existente-para-o-delta-chat" class="anchor"></a>
</h3>
<p>A causa mais provável é que sua chave está criptografada e/ou usa
uma senha. Tais chaves não são suportadas pelo Delta Chat. Você poderia remover a
criptografia por senha e a senha e tentar a importação novamente.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>O Delta Chat apoia formatos comuns de chave privada OpenPGP, porém,
é improvável que chaves privadas de todas as fontes sejam totalmente suportadas. Isso
não é o objetivo principal do Delta Chat. Na verdade, a maioria dos novos usuários
não terá nenhuma chave antes de usar o Delta Chat.
Tentamos, entretanto, apoiar chaves privadas do maior número possível de fontes.</p>
<p>Eliminar a senha da chave privada dependerá do
software usado para gerenciar suas chaves PGP. Com o Enigmail, você pode configurar seu
senha para um valor vazio na janela Gerenciamento de chaves. Com GnuPG você pode definir
ele <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">através do comando
linha</a>.
Para outros programas, você deveria achar uma solução online.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1197,10 +1087,25 @@ Para outros programas, você deveria achar uma solução online.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1266,7 +1171,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
</h3>
<p>Sim. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Sim. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1323,6 +1228,10 @@ which is known to cause problems (especially on Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Ensure there is <strong>enough storage</strong> on the destination device</p>
@@ -1370,6 +1279,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Sim.</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="existe-algum-plano-para-a-introdução-de-um-cliente-web-para-delta-chat">
@@ -1416,9 +1342,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="where-can-i-get-webxdc-apps">
@@ -1491,7 +1418,7 @@ will not get interrupted by a video chat invite.</li>
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
this way, you will have a new random Jitsi room every time you call someone.</li>
</ul>
<h3 id="what-are-broadcast-lists-and-how-can-i-use-them">
@@ -1502,21 +1429,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>With a Broadcast List you can send a message to many recipents at once; when
they reply to you, you get the reply in your direct 1:1 chat with them. The
recipients cant see each other.</li>
<li>Technically, it is an E-Mail with many recipients in BCC.</li>
<li>You can turn on the feature in the “experimental features” section in the
advanced settings. Then you can create a Broadcast List from the “New Chat”
dialog.</li>
<li>In case you are using more than one device, Broadcast Lists are currently not
synced between them.</li>
<li>Messages sent to broadcast lists are not encrypted. Encryption would break
anonymity, because then all recipients would know who else received it
(Sending individual mails to everyone would be worse for rate limit and network
consumption reason).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="how-can-i-share-my-location-with-my-chat-partners">
@@ -1573,6 +1489,11 @@ seria feito pelo aplicativo Delta Chat.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1673,19 +1594,19 @@ No entanto, alguns provedores precisam de opções especiais para funcionar corr
ver <a href="https://providers.delta.chat">Visão Geral dos Provedores</a></li>
</ul>
<h3 id="i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
I want to manage my own e-mail server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Most mail servers will work well. But what we personally recommend is a
combination of mailcow and mailadm, as described <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">in this
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://delta.chat/pt/serverguide">installation guide on our website</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="por-que-preciso-entrar-com-a-senha-do-meu-email-no-delta-chat-isso-é-seguro">
@@ -1698,7 +1619,7 @@ blogpost</a>.</li>
<p>Como acontece em qualquer outro programa de comunicação que usa email, como Thunderbird, K9-Mail ou Outlook, sua senha é necessária para poder receber e enviar emails. Obviamente, sua senha fica guardada no seu dispositivo. E ela só é transmitida para o seu provedor de email (no momento que você faz login), que é quem já tem inevitavelmente acesso aos seus emails.</p>
<p>Como o Delta Chat é um programa de Código Aberto, você pode revisar seu <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Código Fonte</a> se você quiser verificar que as suas credenciais estão sendo manuseadas de forma segura. Ficaremos felizes de receber comentários que contribuam para fazer o aplicativo mais seguro para todos os nossos usuários.</p>
<p>Como o Delta Chat é um programa de Código Aberto, você pode revisar seu <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Código Fonte</a> se você quiser verificar que as suas credenciais estão sendo manuseadas de forma segura. Ficaremos felizes de receber comentários que contribuam para fazer o aplicativo mais seguro para todos os nossos usuários.</p>
<h3 id="quais-mensagens-aparecem-no-delta-chat">
@@ -1810,17 +1731,17 @@ pasta para seus correios, em vez da pasta DeltaChat. Se você desativar o “Obs
pasta DeltaChat”, você também deve desativar “mover mensagens de conversa para DeltaChat”.
Caso contrário, apagar mensagens ou configurações de vários dispositivos pode não funcionar corretamente.</p>
<h3 id="o-delta-chat-é-compatível-com-protonmail--tutanota--criptext">
<h3 id="o-delta-chat-é-compatível-com-proton-mail--tutanota--criptext">
O Delta Chat é compatível com Protonmail / Tutanota / Criptext? <a href="#o-delta-chat-é-compatível-com-protonmail--tutanota--criptext" class="anchor"></a>
O Delta Chat é compatível com Proton Mail / Tutanota / Criptext? <a href="#o-delta-chat-é-compatível-com-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
<li>No, you can not use your Proton Mail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
@@ -1873,7 +1794,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>Veja <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">As normas usadas no Delta Chat</a>.</li>
<li>Veja <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">As normas usadas no Delta Chat</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -1995,9 +1916,9 @@ mesmo perto.</p>
Freiburg (Germany), and is distributed to more than a dozen contributors world-wide.</p>
<p>Please see <a href="https://delta.chat/pt/contribute">Delta Chat Contribution channels</a>
for both monetary and and other contribution possibilities.</p>
for both monetary and other contribution possibilities.</p>
</body></html>
</body></html>
+293 -375
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="ru"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#что-такое-delta-chat">Что такое Delta Chat?</a>
<ul>
<li><a href="#как-мне-найти-людей-для-общения">Как мне найти людей для общения?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#кто-видит-изображение-моего-профиля">Кто видит изображение моего профиля?</a></li>
<li><a href="#signature">Можно ли добавить информацию о себе/подпись/статус/девиз в Delta Chat?</a></li>
<li><a href="#что-означают-закрепить-отключить-уведомления-и-отправить-в-архив">Что означают: Закрепить, Отключить уведомления и Отправить в архив?</a></li>
<li><a href="#save">Как работают “Сохраненные сообщения”?</a></li>
<li><a href="#что-означает-зеленая-точка">Что означает зеленая точка?</a></li>
<li><a href="#edit">Исправление опечаток и удаление сообщений после отправки</a></li>
<li><a href="#ephemeralmsgs">Как работают исчезающие сообщения?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#почему-delta-chat-интегрируется-с-централизованными-проприетарными-push-сервисами-applegoogle">Почему Delta Chat интегрируется с централизованными проприетарными Push-сервисами Apple/Google?</a></li>
</ul>
</li>
<li><a href="#шифрование-и-безопасность">Шифрование и безопасность</a>
<li><a href="#e2ee">Шифрование и безопасность</a>
<ul>
<li><a href="#какие-стандарты-используются-для-сквозного-шифрования">Какие стандарты используются для сквозного шифрования?</a></li>
<li><a href="#whene2e">Как узнать зашифрованы ли сообщения сквозным шифрованием?</a></li>
<li><a href="#howtoe2ee">Как получить гарантированное сквозное шифрование и зелёные галочки?</a></li>
<li><a href="#e2eeguarantee">Что означает зелёная галочка и “гарантированное сквозное шифрование”?</a></li>
<li><a href="#nocryptanymore">Контакт “отправил сообщение с другого устройства”, что делать?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#зашифрованы-ли-вложения-изображения-файлы-аудио-и-т-д-сквозным-шифрованием">Зашифрованы ли вложения (изображения, файлы, аудио и т. д.) сквозным шифрованием?</a></li>
<li><a href="#openpgp-secure">OpenPGP безопасен?</a></li>
<li><a href="#openpgp-alternatives">Рассматривали ли вы альтернативы OpenPGP для сквозного шифрования?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#подвержен-ли-delta-chat-уязвимости-efail">Подвержен ли Delta Chat уязвимости EFAIL?</a></li>
<li><a href="#tls">Будет ли сообщение передано в открытом виде, если сквозное шифрование недоступно?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">Как Delta Chat защищает метаданные в сообщениях?</a></li>
<li><a href="#device-seizure">Как защитить метаданные и контакты при изъятии устройства?</a></li>
<li><a href="#как-я-могу-проверить-информацию-о-шифровании">Как я могу проверить информацию о шифровании?</a></li>
<li><a href="#как-я-могу-проверить-статус-шифрования-сообщений">Как я могу проверить статус шифрования сообщений?</a></li>
<li><a href="#почему-я-вижу-незашифрованные-сообщения">Почему я вижу незашифрованные сообщения?</a></li>
<li><a href="#как-я-могу-получить-зашифрованный-сквозным-шифрованием-чат-с-контактом-delta-chat-который-иногда-использует-веб-почту-или-другое-приложение-электронной-почты-не-поддерживающее-autocrypt">Как я могу получить зашифрованный сквозным шифрованием чат с контактом Delta Chat, который иногда использует веб-почту или другое приложение электронной почты, не поддерживающее Autocrypt?</a></li>
<li><a href="#как-я-могу-обеспечить-сквозное-шифрование-и-удаление-сообщений">Как я могу обеспечить сквозное шифрование и удаление сообщений?</a></li>
<li><a href="#pfs">Поддерживает ли Delta Chat совершенную прямую секретность (Perfect forward secrecy, PFS)?</a></li>
<li><a href="#является-ли-сквозное-шифрование-delta-chat-таким-же-безопасным-как-signal">Является ли сквозное шифрование Delta Chat таким же безопасным как Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Можно ли повторно использовать существующий секретный ключ?</a></li>
<li><a href="#я-не-могу-импортировать-мой-существующий-ключ-pgp-в-delta-chat">Я не могу импортировать мой существующий ключ PGP в Delta Chat.</a></li>
<li><a href="#security-audits">Проходил ли Delta Chat независимую проверку на наличие уязвимостей безопасности?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#можно-ли-использовать-delta-chat-на-нескольких-устройствах-одновременно">Можно ли использовать Delta Chat на нескольких устройствах одновременно?</a></li>
<li><a href="#устранение-неполадок">Устранение неполадок</a></li>
<li><a href="#backup">Ручная передача</a></li>
<li><a href="#синхронизируются-ли-функции-удаления-закрепления-архивирования-сохранения-отключения-звука-и-тд-на-всех-устройствах">Синхронизируются ли функции удаления, закрепления, архивирования, сохранения, отключения звука и т.д. на всех устройствах?</a></li>
<li><a href="#есть-ли-какие-либо-планы-по-внедрению-веб-клиента-delta-chat">Есть ли какие-либо планы по внедрению веб-клиента Delta Chat?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#какие-разрешения-нужны-delta-chat">Какие разрешения нужны Delta Chat?</a></li>
<li><a href="#работает-ли-delta-chat-с-моим-провайдером-электронной-почты">Работает ли Delta Chat с <em>моим</em> провайдером электронной почты?</a></li>
<li><a href="#я-хочу-управлять-своим-собственным-почтовым-сервером-для-delta-chat-что-вы-посоветуете">Я хочу управлять своим собственным почтовым сервером для Delta Chat. Что вы посоветуете?</a></li>
<li><a href="#я-хочу-управлять-своим-собственным-сервером-для-delta-chat-что-вы-посоветуете">Я хочу управлять своим собственным сервером для Delta Chat. Что вы посоветуете?</a></li>
<li><a href="#почему-я-должен-вводить-свой-пароль-от-электронной-почты-в-delta-chat-это-безопасно">Почему я должен вводить свой пароль от электронной почты в Delta Chat? Это безопасно?</a></li>
<li><a href="#какие-сообщения-отображаются-в-delta-chat">Какие сообщения отображаются в Delta Chat?</a></li>
<li><a href="#может-ли-delta-chat-работать-с-электронными-письмами-в-формате-html">Может ли Delta Chat работать с электронными письмами в формате HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#для-чего-предназначена-настройка-отправлять-копию-себе">Для чего предназначена настройка “Отправлять копию себе”?</a></li>
<li><a href="#для-чего-предназначена-настройка-следить-за-папкой-исходящие">Для чего предназначена настройка “Следить за папкой Исходящие”?</a></li>
<li><a href="#почему-я-могу-отключить-следить-за-папкой-delta-chat">Почему я могу отключить “Следить за папкой Delta Chat”?</a></li>
<li><a href="#совместим-ли-delta-chat-с-protonmail--tutanota--criptext">Совместим ли Delta Chat с Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#совместим-ли-delta-chat-с-proton-mail--tutanota--criptext">Совместим ли Delta Chat с Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">Как я могу удалить свой аккаунт?</a></li>
<li><a href="#меня-интересуют-технические-детали-можете-рассказать-больше">Меня интересуют технические детали. Можете рассказать больше?</a></li>
<li><a href="#где-мои-друзья-могут-найти-delta-chat">Где мои друзья могут найти Delta Chat?</a></li>
@@ -118,7 +116,7 @@
<p>Delta Chat — надежное, децентрализованное и безопасное приложение для обмена сообщениями,
доступное для мобильных и настольных платформ.</p>
<p>Delta Chat напоминает Whatsapp или Telegram, но его можно использовать и приложение электронной почты.
<p>Delta Chat напоминает Whatsapp или Telegram, но его можно использовать и как приложение электронной почты.
Вы можете анонимно зарегистрироваться на различных <a href="https://delta.chat/chatmail">совместимых с chatmail серверах</a>,
которые представляют собой минимальные почтовые серверы, оптимизированные для быстрой и безопасной работы.
Или вы можете использовать обычные почтовые серверы и существующий почтовый аккаунт,
@@ -134,7 +132,7 @@
</h3>
<p>Чтобы безопасно настроить связь с другими <a href="#howtoe2ee">отсканируйте QR-код приглашения
<p>Чтобы безопасно настроить связь с другими, <a href="#howtoe2ee">отсканируйте QR-код приглашения
или поделитесь ссылкой-приглашением</a>.
Это необходимо при использовании профиля чата на основе почты chatmail (по умолчанию),
потому что серверы chatmail отклоняют незашифрованные исходящие сообщения.</p>
@@ -169,7 +167,7 @@
</li>
<li>
<p>Бесплатное программное обеспечение с открытым исходным кодом, как на стороне приложения, так и на стороне сервера.
Разработано на основе <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">стандартов электронной почты и интернета</a>,
Разработано на основе <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">стандартов электронной почты и интернета</a>,
<a href="https://xkcd.com/927/">чтобы избежать “синдрома нового стандарта (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,16 @@
</h3>
<p>Если сообщение поступает от неизвестного контакта, оно отображается как <strong>запрос</strong>.</p>
<p>— Нужно <strong>принять</strong> запрос, прежде чем ответить.</p>
<p>— Вы также можете <strong>удалить</strong> его, если не хотите общаться с этим человеком.</p>
<ul>
<li>Если сообщение приходит от неизвестного контакта, оно отображается как <strong>запрос</strong>. Чтобы
ответить, вам необходимо сначала принять запрос.</li>
<li>Вы также можете “удалить” его, если не хотите общаться с ним в данный момент. Это
<em>не</em> удаляет сообщение с сервера, а только с вашего устройства. Таким образом,
вы все еще можете обработать сообщение в другом почтовом клиенте.</li>
<li>Если вы удалите запрос, будущие сообщения от этого контакта по-прежнему будут отображаться
как запрос, поэтому вы можете изменить свое решение. Если вы действительно не хотите
получать сообщения от этого человека, подумайте о его блокировке.</li>
<li>Если вы удалите запрос, будущие сообщения от этого контакта все равно будут появляться
как запрос сообщения, так что вы можете передумать. Если вы действительно не хотите
получать сообщения от этого человека, подумайте о его <strong>блокировке</strong>.</li>
</ul>
<h3 id="поддерживает-ли-delta-chat-изображения-видео-и-другие-вложения">
@@ -203,7 +202,7 @@
<ul>
<li>
<p>Да. Помимо простого текста, все вложения электронной почты отображаются как отдельные сообщения. Исходящие сообщения автоматически получают необходимые вложения.</p>
<p>Да. Изображения, видео, файлы, голосовые сообщения и т.д. обрабатываются как обычно.</p>
</li>
<li>
<p>Для лучшей производительности изображения по умолчанию оптимизируются и отправляются в меньшем размере, но вы можете отправить их как “файл”, чтобы сохранить оригинал.</p>
@@ -304,6 +303,41 @@
<p>Чтобы использовать функции, нажмите долгим нажатием или щелкните правой кнопкой мыши по чату в списке чатов.</p>
<h3 id="save">
Как работают “Сохраненные сообщения”? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Сохраненные сообщения</strong> - это чат, который можно использовать, чтобы легко запоминать и находить сообщения.</p>
<ul>
<li>
<p>В любом чате нажмите и удерживайте или щелкните правой кнопкой мыши на сообщении и выберите <strong>Сохранить</strong></p>
</li>
<li>
<p>Сохраненные сообщения отмечаются символом
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Иконка сохранения" />
рядом с меткой времени</p>
</li>
<li>
<p>Затем, зайдите в чат “Сохраненные сообщения” - и вы увидите там все сохраненные сообщения.
Нажав <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Значок со стрелкой вправо" />,
вы можете вернуться к этому сообщению в исходном чате</p>
</li>
<li>
<p>Наконец, вы также можете использовать “Сохраненные сообщения” для создания <strong>личных заметок</strong> - откройте чат, введите что-то, добавьте фото или голосовое сообщение и т.д.</p>
</li>
<li>
<p>Поскольку “Сохраненные сообщения” синхронизируются, они могут стать удобным способом передачи данных между устройствами</p>
</li>
</ul>
<p>Сообщения остаются сохраненными, даже если они были отредактированы или удалены -
будь то <a href="#edit">отправителем</a>, <a href="#delold">очисткой устройства</a> или <a href="#ephemeralmsgs">исчезающими сообщениями из других чатов</a>.</p>
<h3 id="что-означает-зеленая-точка">
@@ -312,25 +346,53 @@
</h3>
<p>Иногда вы можете видеть <strong>зеленую точку</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" />
рядом с аватаром контакта.
Это означает, что их <strong>недавно видели</strong> за последние 10 минут:</p>
<ul>
<li>Начиная с Delta Chat 1.34, вы можете иногда видеть “зеленую точку” рядом с аватаром
контакта. Это означает, что они были “недавно активны”.</li>
<li>Подробнее: это означает, что в течение последних 10 минут Delta Chat обнаружил их:
<ul>
<li>либо потому, что они отправили вам личное сообщение,</li>
<li>либо потому, что они написали что-то в группу, участником которой вы оба являетесь,</li>
<li>либо потому, что они отправили вам подтверждение о прочтении сообщения, которое вы написали,</li>
<li>либо потому, что они отправили данные в ваше приложение Delta Chat, используя
<a href="#webxdc">webxdc app</a>.</li>
</ul>
</li>
<li>Таким образом, это не реальный онлайн-статус в режиме реального времени - и если кто-то не отвечает
сразу же, даже если кажется, что они онлайн, не волнуйтесь и дайте им немного
свободы ;-)</li>
<li>С другой стороны, другие не всегда будут “видеть, что вы онлайн”. Если вы
отключили подтверждения о прочтении, они не увидят зеленую точку, пока вы
не отправите им сообщение или не напишете в группу, в которой они также являются участником.</li>
<li>либо потому, что они отправили вам сообщение напрямую,</li>
<li>либо потому, что они написали что-то в группе, где вы оба являетесь участниками,</li>
<li>либо потому, что они подтвердили прочтение вашего сообщения,</li>
<li>либо потому, что они изменили или удалили сообщение в общем чате,</li>
<li>либо потому, что они используют <a href="#webxdc">приложение</a> в чате, который вы оба используете.</li>
</ul>
<p>Так что это не статус в режиме реального времени -
и если кто-то не отвечает сразу, даже если кажется, что он в сети,
не волнуйтесь и дайте ему немного времени :)</p>
<p>С другой стороны, другие не всегда “увидят, что вы в сети”.
Если вы отключили уведомления о прочтении,
они не увидят зеленую точку
пока не будет выполнено одно из вышеуказанных условий.</p>
<h3 id="edit">
Исправление опечаток и удаление сообщений после отправки <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>Вы можете редактировать текст сообщений после отправки.
Для этого нажмите и удерживайте или щелкните правой кнопкой мыши сообщение и выберите <strong>Редактировать</strong>
или <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Редактировать" />.</p>
</li>
<li>
<p>Если вы отправили сообщение случайно,
в том же меню выберите <strong>Удалить</strong> и затем <strong>Удалить для всех</strong>.</p>
</li>
</ul>
<p>При этом отредактированные сообщения будут иметь слово “Отредактировано” рядом с временной меткой,
удаленные сообщения будут удалены без каких-либо маркеров в чате.
Уведомления не отправляются, и нет ограничений по времени.</p>
<p>Обратите внимание, что исходное сообщение все еще может быть получено участниками чата
которые могли уже ответить, переслать, сохранить, сделать скриншот или иным образом скопировать сообщение.</p>
<h3 id="ephemeralmsgs">
@@ -600,16 +662,16 @@ Push-уведомления недоступны.</p>
<ul>
<li>
<p>Приложение Delta Chat локально получает “токен устройства” и сохраняет его
<p>Приложение Delta Chat локально получает “токен устройства” шифрует его и сохраняет
на сервере <a href="https://delta.chat/chatmail">chatmail</a>.</p>
</li>
<li>
<p>Когда сервер <a href="https://delta.chat/chatmail">chatmail</a> получает электронную почту для пользователя Delta Chat
он пересылает “токен устройства” центральному прокси-серверу уведомлений Delta Chat.</p>
он пересылает “зашифрованный токен устройства” центральному прокси-серверу уведомлений Delta Chat.</p>
</li>
<li>
<p>Центральный прокси-сервер уведомлений Delta Chat пересылает
“токен устройства” в соответствующую службу Push (Apple, Google и т. д.),
<p>Центральный прокси-сервер уведомлений Delta Chat расшифровывает “токен устройства” и
пересылает его в соответствующую службу Push (Apple, Google и т. д.),
даже не зная IP-адрес или адрес электронной почты пользователей Delta Chat.</p>
</li>
<li>
@@ -622,14 +684,15 @@ Push-уведомления недоступны.</p>
</li>
</ul>
<p>По состоянию на май 2024 года серверы chatmail знают о “токенах устройства”,
но мы планируем зашифровать эту информацию для прокси-сервера уведомлений
так, чтобы сервер chatmail не смог получить доступ к токену устройства.</p>
<p>Центральный прокси-сервер уведомлений Delta Chat <a href="https://github.com/deltachat/notifiers">небольшой и полностью реализован на Rust</a>
забывает о токенах устройств, как только Apple/Google/и т. д. обработали их,
обычно за несколько миллисекунд.</p>
<p>Обратите внимание, что токен устройства шифруется между приложениями и прокси-сервером уведомлений,
но не подписывается.
Прокси-сервер уведомлений не получает доступ к адресам электронной почты, IP-адресам
или криптографическим идентификационным данным устройства пользователя (токену).</p>
<p>В результате такого общего подхода к обеспечению конфиденциальности, даже захват почтового сервера chatmail,
или полный захват центрального прокси-сервера уведомлений Delta Chat
не раскроет конфиденциальную информацию, которой сервисы Push уже не обладают.</p>
@@ -652,10 +715,10 @@ Push-уведомления недоступны.</p>
включая потенциальный сервер, который <a href="https://delta.chat/chatmail#selfhosted">вы можете настроить самостоятельно без нашего разрешения.</a>.
Добро пожаловать в мир мощной и совместимой системы chatmail и электронной почты :)</p>
<h2 id="шифрование-и-безопасность">
<h2 id="e2ee">
Шифрование и безопасность <a href="#шифрование-и-безопасность" class="anchor"></a>
Шифрование и безопасность <a href="#e2ee" class="anchor"></a>
</h2>
@@ -668,18 +731,26 @@ Push-уведомления недоступны.</p>
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> используется для автоматической
установки сквозного шифрования при работе с контактами и групповыми чатами.
Autocrypt использует ограниченное и <a href="#openpgp-secure">безопасное подмножество стандарта OpenPGP</a>.
Сообщения, зашифрованные сквозным шифрованием, помечаются замком
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Протоколы Secure-Join</a>
используются для создания чатов с гарантированным сквозным шифрованием,
которое защищает от сетевых атак и скомпрометированных серверов.
Чаты, отмеченные зелёной галочкой
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
гарантируют сквозное шифрование сообщений.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -689,28 +760,37 @@ Autocrypt использует ограниченное и <a href="#openpgp-sec
</h3>
<p>Все сообщения, зашифрованные сквозным шифрованием, имеют значок замка:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="Значок замка в пузырьке" /></p>
<p>Сквозное шифрование гарантировано, если рядом с заголовком чата стоит зелёная галочка:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="Зелёная галочка в заголовке" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
Как получить гарантированное сквозное шифрование и зелёные галочки? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>Если у вас есть второй канал связи с вашим собеседником,
например, видеочат или другой мессенджер,
вы можете создать ссылку-приглашение.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>Если вы встретились лично с собеседником,
вы можете показать ему свой QR-код.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -719,141 +799,60 @@ Autocrypt использует ограниченное и <a href="#openpgp-sec
и выберите “QR-код приглашения”.</p>
</li>
<li>
<p>Для <strong>приглашений в прямой чат 1:1</strong>,
коснитесь значка QR-кода <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
на главном экране приложения Delta Chat.</p>
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Позвольте вашему собеседнику отсканировать QR-код
с помощью приложения Delta Chat,
или нажмите “Копировать” или “Поделиться”, чтобы создать ссылку-приглашение
и отправьте её вашему собеседнику.</p>
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Теперь ожидайте, пока <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">сообщения Secure-Join</a> будут переданы между обоими устройствами.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>Если оба устройства находятся в сети,
обе стороны в конечном итоге увидят (групповой или прямой) чат с зелёной галочкой
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="зелёная галочка" />
рядом с названием.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>Если одно из устройств не подключено к сети, зелёные галочки появятся только после того,
как устройство снова подключится к Интернету
и сетевой протокол Secure-Join будет завершён.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Поздравляем!
Теперь вы будете автоматически использовать гарантированное сквозное шифрование
с этим контактом, и вы оба сможете добавлять друг друга в группы, отмеченные зелёной галочкой
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="зелёная галочка" />,
тем самым автоматически распространяя гарантированное сквозное шифрование среди её участников.</p>
<p>Congratulations!
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
Что означает зелёная галочка и “гарантированное сквозное шифрование”? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Чаты, помеченные зелёными галочками
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="зелёная галочка" />
означают, что все сообщения в чате будут зашифрованы сквозным шифрованием
и не могут быть прочитаны или изменены скомпрометированными серверами электронной почты или интернет-провайдерами.
Присоединение к групповым чатам с зелёной галочкой
безопасно распространяет информацию о шифровании всех участников (и зелёные галочки)
таким образом, чтобы гарантировать сквозное шифрование в группе и между её участниками.</p>
<p>Профили контактов с зелёной галочкой
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="зелёная галочка" />
означают, что отправка сообщений контакту в настоящее время гарантированно зашифрована сквозным шифрованием.
Каждый контакт с зелёной галочкой либо совершил с вами прямое <a href="#howtoe2ee">QR-сканирование</a>,
либо был представлен другим контактом с зелёной галочкой.
Знакомство происходит автоматически при добавлении участников в группы.
Тот, кто добавляет контакт в группу, отмеченную зелёной галочкой, становится представителем
для тех участников, которые еще не знают о добавленном контакте.
В профиле контакта можно несколько раз нажать на текст “Представлен …” несколько раз
пока не дойдёте до того, с кем вы непосредственно провели <a href="#howtoe2ee">QR-сканирование</a>.</p>
<p>Обратите внимание, что в профиле контакта вы можете увидеть и присоединённых знакомых,
но в заголовке профиля нет зелёной галочки.
Обычно это означает, что контакт <a href="#nocryptanymore">“отправил сообщение с другого устройства”</a>.</p>
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Для более подробного обсуждения “гарантированного сквозного шифрования”
пожалуйста, обратитесь к <a href="https://securejoin.delta.chat/en/latest/new.html">протоколам Secure-Join</a>
и прочитайте о “Проверенных группах”, техническом термине,
который здесь называется “группами с зелёной галочкой” или чатами с “гарантированным сквозным шифрованием”.</p>
<h3 id="nocryptanymore">
Контакт “отправил сообщение с другого устройства”, что делать? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Ваш чат с контактом утратил гарантированное сквозное шифрование.
Зелёная галочка была удалена для этого чата и контакта, и когда вы увидели предупреждение.
<strong>Если вы обнаружили внезапное прекращение гарантированного сквозного шифрования
для этого контакта, не принимайте предупреждение!</strong>
Вместо этого свяжитесь со своим контактом по второму каналу,
например, видеозвонок, другой мессенджер или телефонный звонок,
чтобы узнать, что произошло.</p>
<p>Если ваш контакт стал причиной потери гарантированного сквозного шифрования,
пожалуйста, ознакомьтесь с распространёнными причинами и способами их устранения в следующих параграфах.
Независимо от этого, все остальные чаты, отмеченные зелёной галочкой, остаются гарантированно зашифрованными сквозным шифрованием,
даже если этот контакт является его участником.</p>
<p><strong>Ваш контакт использует Delta Chat на втором устройстве (телефоне или ноутбуке)</strong></p>
<p>Если у него есть другое устройство с запущенным приложением Delta Chat,
ему следует удалить учётную запись с нового устройства
и добавить его <a href="#multiclient">как второе устройство, как описано здесь</a>.
После того, как он отправит вам сообщение, предупреждение исчезнет
и гарантированное шифрование будет установлено на обоих устройствах вашего собеседника.</p>
<p><strong>Ваш контакт переустановил Delta Chat, используя старые учетные данные для входа</strong></p>
<p>Если у него есть <a href="#backup">файл резервной копии</a>,
ему следует удалить профиль с нового устройства
и вместо этого импортировать резервную копию для восстановления своего профиля.
После того, как он отправит вам сообщение, предупреждение исчезнет,
и гарантированное шифрование будет восстановлено для этого контакта.</p>
<p>Если у него нет файла резервной копии, лучше всего выполнить <a href="#howtoe2ee">сканирование QR-кода</a>
с вашим собеседником, чтобы восстановить гарантированное сквозное шифрование.</p>
<p><strong>Ваш контакт отправил письмо через интерфейс веб-почты или другое приложение электронной почты
и снова вернулся к использованию Delta Chat.</strong></p>
<p>Если вы уверены, что ваш контакт иногда использует веб-почту
или другое приложение электронной почты, в котором отсутствует сквозное шифрование,
то вы можете принять предупреждение.
Как только контакт снова начнёт использовать Delta Chat,
гарантированное сквозное шифрование будет автоматически восстановлено.</p>
<p><strong>Ваш контакт полностью прекратил использование Delta Chat</strong></p>
<p>Иногда оставаться на связи важнее, чем сквозное шифрование.
<a href="#tls">“Протокол защиты транспортного уровня” (TLS)</a> всё ещё может существенно защитить
конфиденциальность ваших сообщений между вашим устройством и сервером электронной почты.
Но без сквозного шифрования вы и ваш контакт должны доверять серверу электронной почты,
который не должен читать и манипулировать вашими сообщениями, и не передавать их третьим лицам.</p>
<p>В любом случае, вы ничего не можете сделать, кроме как принять предупреждение.
Также удалите контакт из любой активной группы, отмеченной зелёной галочкой,
которую можно найти в разделе “Общие чаты” в профиле контакта.
Это избавит ваш контакт от получения “не читаемых” сообщений.</p>
<p>Если контакт удалил Delta Chat из-за ошибок или нежелательного поведения,
пожалуйста, подумайте о том, чтобы поделиться этой информацией на нашем <a href="https://support.delta.chat">форуме поддержки</a>,
чтобы помочь нам выявить и устранить общие проблемы. Спасибо!</p>
<h3 id="зашифрованы-ли-вложения-изображения-файлы-аудио-и-т-д-сквозным-шифрованием">
@@ -877,10 +876,9 @@ Autocrypt использует ограниченное и <a href="#openpgp-sec
</h3>
<p>Да, Delta Chat использует безопасное подмножество OpenPGP
и отображает индикатор безопасности в виде замка только,
если всё сообщение правильно зашифровано и подписано.
Например, “Отдельные подписи” не считаются безопасными.</p>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP сам по себе не является небезопасным.
Большинство обсуждаемых в публичной сфере проблем безопасности OpenPGP
@@ -890,7 +888,7 @@ Autocrypt использует ограниченное и <a href="#openpgp-sec
Многие публичные критические замечания по OpenPGP фактически касаются GnuPG, который Delta Chat никогда не использовал.
Delta Chat вместо этого использует реализацию OpenPGP на Rust <a href="https://github.com/rpgp/rpgp">rPGP</a>,
доступную как <a href="https://crates.io/crates/pgp">независимый пакет “pgp”</a>,
и <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">проверенную на безопасность в 2019 году</a>.</p>
и <a href="#security-audits">проверенную на безопасность в 2019 и 2024 годах</a>.</p>
<p>Вместе с другими разработчиками OpenPGP мы стремимся,
повысить характеристики безопасности путём реализации
@@ -900,7 +898,7 @@ Delta Chat вместо этого использует реализацию Ope
<h3 id="openpgp-alternatives">
Рассматривали ли вы альтернативы OpenPGP для сквозного шифрования? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -943,17 +941,15 @@ Delta Chat вместо этого использует реализацию Ope
<h3 id="tls">
Будет ли сообщение передано в открытом виде, если сквозное шифрование недоступно? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Даже если не гарантируется сквозное шифрование ваших сообщений,
они все равно защищены от интернет-провайдеров, сотовых операторов или кабельных компаний.
Однако провайдеры электронной почты, ваш и ваших получателей
могут читать, анализировать или даже изменять ваши сообщения,
включая любые вложения,
если они не зашифрованы сквозным шифрованием.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat по умолчанию использует строгое
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS-шифрование</a>,
@@ -965,10 +961,6 @@ Delta Chat вместо этого использует реализацию Ope
то между провайдерами электронной почты будет применяться протокол защиты транспортного уровня.
В этом случае сообщения Delta Chat никогда не будут переданы в открытом виде через Интернет,
даже если сообщение не было зашифровано сквозным шифрованием.</p>
<p>Обратите внимание, что <a href="#howtoe2ee">поддержание гарантированного сквозного шифрования</a> поверх шифрования TLS
обеспечивает полную безопасность между вашими устройствами и устройствами получателя.
Ни ваш провайдер электронной почты, ни провайдер Интернета не смогут прочитать или изменить ваши сообщения.</p>
<h3 id="message-metadata">
@@ -1032,74 +1024,6 @@ Delta Chat показывает там два отпечатка.
Если на вашем устройстве и на устройстве вашего контакта показаны одинаковые отпечатки,
соединение безопасно.</p>
<h3 id="как-я-могу-проверить-статус-шифрования-сообщений">
Как я могу проверить статус шифрования сообщений? <a href="#как-я-могу-проверить-статус-шифрования-сообщений" class="anchor"></a>
</h3>
<p>Маленький <strong>значок замка</strong> в сообщении означает,
что сообщение было правильно зашифровано сквозным шифрованием от данного отправителя.
Если <strong>замка нет</strong>, сообщение не было правильно зашифровано,
возможно, потому что отправитель использует приложение или веб-интерфейс электронной почты
без поддержки сквозного шифрования.</p>
<h3 id="почему-я-вижу-незашифрованные-сообщения">
Почему я вижу незашифрованные сообщения? <a href="#почему-я-вижу-незашифрованные-сообщения" class="anchor"></a>
</h3>
<p>Если контакт использует приложение электронной почты, не поддерживающее Autocrypt,
все сообщения, включающие этого контакта (в групповом или личном 1:1 чате),
не будут зашифрованы сквозным шифрованием, и поэтому не будут иметь “значок замка” в сообщениях.
Обратите внимание, что даже если ваши контакты используют Delta Chat на своем аккаунте,
они также могут использовать приложение электронной почты, не поддерживающее Autocrypt,
на том же аккаунте, что может привести к периодически незашифрованным сообщениям.
Ответ на незашифрованные сообщения незашифрованным сообщением является обязательным в Autocrypt,
чтобы предотвратить появление нечитаемых сообщений на стороне ваших контактов
и их приложении электронной почты, которое не поддерживает Autocrypt.</p>
<h3 id="как-я-могу-получить-зашифрованный-сквозным-шифрованием-чат-с-контактом-delta-chat-который-иногда-использует-веб-почту-или-другое-приложение-электронной-почты-не-поддерживающее-autocrypt">
Как я могу получить зашифрованный сквозным шифрованием чат с контактом Delta Chat, который иногда использует веб-почту или другое приложение электронной почты, не поддерживающее Autocrypt? <a href="#как-я-могу-получить-зашифрованный-сквозным-шифрованием-чат-с-контактом-delta-chat-который-иногда-использует-веб-почту-или-другое-приложение-электронной-почты-не-поддерживающее-autocrypt" class="anchor"></a>
</h3>
<p>Если вам нужен зашифрованный сквозным шифрованием чат с контактом,
который использует свой адрес электронной почты как с Delta Chat, так и с приложениями, не поддерживающими Autocrypt (например, веб-почтой),
лучше всего настроить с ним <a href="#howtoe2ee">гарантированное сквозное шифрование</a>
и затем создать гарантированно зашифрованный сквозным шифрованием групповой чат с вами двумя как участниками.
В этом групповом чате все сообщения будут зашифрованы сквозным шифрованием,
даже если прямой чат между вами двумя имеет предупреждение
<a href="#nocryptanymore">“… отправил сообщение с другого устройства”</a>.</p>
<h3 id="как-я-могу-обеспечить-сквозное-шифрование-и-удаление-сообщений">
Как я могу обеспечить сквозное шифрование и удаление сообщений? <a href="#как-я-могу-обеспечить-сквозное-шифрование-и-удаление-сообщений" class="anchor"></a>
</h3>
<p>Лучший способ обеспечить сквозное шифрование каждого сообщения,
где метаданные удаляются как можно быстрее,
это <a href="#howtoe2ee">использовать чаты с гарантированным сквозным шифрованием</a>
и включить <a href="#ephemeralmsgs">исчезающие сообщения</a>.</p>
<p>Чаты с гарантированным сквозным шифрованием защищают от <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">атак “человек посередине”</a>,
а включение исчезающих сообщений удаляет сообщения
на сервере через заданное пользователем время.</p>
<p>Если вам не нужна долгоживущая копия ваших сообщений на сервере,
вы также можете включить <a href="#delold">“удалять сообщения с сервера автоматически”</a>.</p>
<h3 id="pfs">
@@ -1108,44 +1032,35 @@ Delta Chat показывает там два отпечатка.
</h3>
<p>Нет, Delta Chat не поддерживает совершенную прямую секретность (PFS).
Это означает, что если ваш личный ключ дешифрования Delta Chat будет скомпрометирован,
и кто-то собрал ваши предыдущие сообщения, переданные по сети,
то они смогут расшифровать и прочитать их с помощью скомпрометированного ключа дешифрования.</p>
<p>No, not yet.</p>
<p>Обратите внимание, если кто-то получит доступ к вашим ключам дешифрования,
они, как правило, также смогут получить доступ к вашим сообщениям,
независимо от того, используется ли совершенная прямая секретность или нет.
Типичная реальная ситуация для утечки ключей дешифрования - это изъятие устройства,
о чём мы говорим в нашем ответе <a href="#device-seizure">о метаданных и изъятии устройства</a>.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Возможно, Delta Chat будет развиваться в направлении поддержки совершенной прямой секретности (PFS),
поскольку OpenPGP является всего лишь контейнером для зашифрованных сообщений,
но управление ключами шифрования (и, следовательно, ротация ключей или “переключение” ключей)
могут быть организованы гибкими способами.
См. <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">прототип PFS Seqouia</a>
для существующих экспериментов в сообществе разработчиков OpenPGP.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="является-ли-сквозное-шифрование-delta-chat-таким-же-безопасным-как-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Является ли сквозное шифрование Delta Chat таким же безопасным как Signal? <a href="#является-ли-сквозное-шифрование-delta-chat-таким-же-безопасным-как-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>Это зависит от того, что для вас важно.
Delta Chat <a href="#pfs">не поддерживает PFS</a>, как Signal,
но обеспечивает <a href="#e2eeguarantee">гарантированно зашифрованные сквозным шифрованием чаты</a>
защищенные от скомпрометированных серверов или поврежденных сетей.
Signal и большинство других мессенджеров, поддерживающих PFS,
не предоставляют практической схемы защиты групповых чатов от сетевых атак,
которые, возможно, вызывают большее беспокойство,
чем потенциальный злоумышленник, который захватывает ваш телефон и настройки персонального шифрования,
но почему-то не ваши сообщения, но при этом имеет полный отчет обо всех прошлых зашифрованных сообщениях.</p>
<p>Да.</p>
<p>В любом случае, сквозное шифрование Delta Chat использует <a href="#openpgp-secure">безопасное подмножество OpenPGP</a>
которое прошло <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">независимую проверку безопасности</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1155,42 +1070,14 @@ Signal и большинство других мессенджеров, подд
</h3>
<p>Да.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>Нет.</p>
<p>Вместо этого, вы можете импортировать ключ вручную в разделе “Настройки -&gt; Дополнительные параметры -&gt; Импорт секретных ключей”.
Предупреждение: Убедитесь, что ключ не защищён паролем, или удалите пароль заранее.</p>
<p>Delta Chat генерирует безопасные ключи OpenPGP в соответствии со спецификацией Autocrypt 1.1.
Вы можете экспортировать свой закрытый ключ, но не можете импортировать дополнительные закрытые ключи.</p>
<p>Если у вас нет ключа или вы даже не знали, что он вам нужен - не волнуйтесь: Delta Chat генерирует ключи по мере необходимости, вам не нужно для этого нажимать кнопку.</p>
<h3 id="я-не-могу-импортировать-мой-существующий-ключ-pgp-в-delta-chat">
Я не могу импортировать мой существующий ключ PGP в Delta Chat. <a href="#я-не-могу-импортировать-мой-существующий-ключ-pgp-в-delta-chat" class="anchor"></a>
</h3>
<p>Наиболее вероятная причина — это то, что ваш ключ зашифрован и/или имеет пароль.
Delta Chat не поддерживает такие ключи.
Вы можете снять шифрование пароля и пароль, а затем повторить попытку импорта.</p>
<p>Другая распространенная ошибка - неправильное расширение файла.
Используйте формат ASCII armored и расширение файла <code class="language-plaintext highlighter-rouge">.asc</code>.</p>
<p>Delta Chat поддерживает распространённые форматы закрытых ключей OpenPGP, однако
маловероятно, что мы будем поддерживать все закрытые ключи из любых источников. Это
не является основной целью Delta Chat. На самом деле, подавляющее большинство пользователей
Delta Chat не будут иметь никакого ключа, прежде чем они начнут использовать его.
Однако мы стремимся поддерживать закрытые ключи из как можно большего числа источников.</p>
<p>Удаление пароля закрытого ключа будет отличаться в зависимости от
программного обеспечения, используемого для управления ключами PGP. В Enigmail вы можете установить пустой
пароль в окне управления ключами. В GnuPG вы можете установить его
<a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">через командную
строку</a>.
Для других программ, вы можете найти решение в интернете.</p>
<p>В целом, мы не рекомендуем и не предлагаем пользователям выполнять ручное управление ключами.
Мы стремимся к тому, чтобы аудиты безопасности могли сосредоточиться на нескольких проверенных криптографических алгоритмах,
а не на всем разнообразии возможных алгоритмов, доступных с OpenPGP.</p>
<h3 id="security-audits">
@@ -1200,10 +1087,25 @@ Delta Chat не будут иметь никакого ключа, прежде
</h3>
<p>Проект Delta Chat прошёл четыре независимых аудита безопасности и один
независимый анализ безопасности, от самого последнего к более старому:</p>
<p>Да, множество раз.
Проект Delta Chat находится в постоянном режиме аудита безопасности и анализа,
от последних до более ранних:</p>
<ul>
<li>
<p>Декабрь 2024 года, <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">экспертиза rPGP, организованная
NLNET</a> выполненная <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a>.
rPGP является движком сквозного шифрования OpenPGP <a href="https://openpgp.org">OpenPGP</a> в Delta Chat.
В результате этого аудита были подготовлены два отчета по безопасности:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Паника при обработке некорректных, недоверенных входных данных”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Возможная нехватка ресурсов при обработке непроверенных сообщений”</a> CVE-2024-53857</li>
</ul>
<p>Проблемы, описанные в этих рекомендациях, были исправлены и включены в релизы Delta Chat,
во всех магазинах приложений с декабря 2024 года.</p>
</li>
<li>
<p>В марте 2024 года мы получили подробный анализ безопасности от исследовательской группы
Applied Cryptography в ETH Цюрихе и устранили все выявленные проблемы.
@@ -1269,7 +1171,7 @@ Chat <a href="https://github.com/rpgp/rpgp">PGP</a> и
</h3>
<p>Да. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Да. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1326,6 +1228,10 @@ Chat <a href="https://github.com/rpgp/rpgp">PGP</a> и
<li>
<p><strong>Гостевые сети</strong> могут блокировать взаимодействие между устройствами.
Если возможно, используйте не гостевую сеть.</p>
</li>
<li>
<p>Если у вас всё ещё возникают проблемы с использованием одной и той же сети,
попробуйте создать <strong>Мобильную точку доступа</strong> на одном устройстве и подключиться к этой сети Wi-Fi с другого устройства</p>
</li>
<li>
<p>Убедитесь, что на устройстве-приемнике имеется <strong>достаточно места</strong></p>
@@ -1373,6 +1279,23 @@ PIN-код разблокировки экрана, графический кл
зашифрованных сквозным шифрованием сообщений с вашими собеседниками.</li>
</ul>
<h3 id="синхронизируются-ли-функции-удаления-закрепления-архивирования-сохранения-отключения-звука-и-тд-на-всех-устройствах">
Синхронизируются ли функции удаления, закрепления, архивирования, сохранения, отключения звука и т.д. на всех устройствах? <a href="#синхронизируются-ли-функции-удаления-закрепления-архивирования-сохранения-отключения-звука-и-тд-на-всех-устройствах" class="anchor"></a>
</h3>
<p>Да.</p>
<p>Например, если вы удалите чат или сообщение со своего телефона,
оно также будет удалено на вашем настольном компьютере, когда он подключится к интернету.</p>
<p>Исключениями из этого правила являются <a href="#delold">Удаление старых сообщений с устройства</a>,
поскольку устройства могут иметь разные объёмы памяти,
и системные настройки, характерные для каждого устройства, например, звуки оповещений.</p>
<h3 id="есть-ли-какие-либо-планы-по-внедрению-веб-клиента-delta-chat">
@@ -1413,16 +1336,16 @@ PIN-код разблокировки экрана, графический кл
</h3>
<ul>
<li>Приложения webxdc не могут отправлять данные в Интернет или скачивать что-либо.</li>
<li>Приложение webxdc может обмениваться данными только внутри чата Delta Chat, с его
копиями на устройствах ваших собеседников по чату.
В остальном, оно полностью
<li>Приложения webxdc не имеют доступа к Интернету и не могут ничего загружать.</li>
<li>Обмен данными в webxdc-приложении возможен только внутри чата Delta Chat, между
копиями приложения на устройствах участников чата. В остальном оно полностью
изолировано от Интернета.</li>
<li>Конфиденциальность, которую обеспечивает приложение webxdc — это конфиденциальность вашего чата - пока
вы доверяете людям, с которыми вы общаетесь, вы можете доверять приложению webxdc.</li>
<li>Это также означает, что открытие приложений webxdc в чатах с участниками, которым вы
не доверяете, тоже самое, что и с вложениями электронной почты, когда вы открываете
вложения только от тех отправителей, которым доверяете, а не от спамеров.</li>
<li>Уровень приватности webxdc-приложения соответствует приватности вашего чата — если вы
доверяете собеседникам, можете доверять и приложению.</li>
<li>Это значит, что открывать такие приложения в чатах с незнакомыми или подозрительными участниками может быть небезопасно.
Как и с вложениями, видеозвонками или ссылками:
открывайте их только от тех, кому доверяете, и не открывайте от спамеров.
Спамеры могут получить любые данные, которые вы им отправите, а также узнать ваш IP-адрес.</li>
</ul>
<h3 id="где-я-могу-получить-приложения-webxdc">
@@ -1505,20 +1428,10 @@ Delta Chat</a>.</li>
</h3>
<ul>
<li>С помощью списка рассылки вы можете отправить сообщение сразу нескольким получателям; когда
они ответят вам, вы получите ответ в прямом чате с ними 1:1.
Получатели не смогут видеть друг друга.</li>
<li>Технически, это электронное письмо с несколькими получателями в поле BCC (скрытая копия).</li>
<li>Включить функцию можно в разделе “Экспериментальные функции” в
“Дополнительных параметрах”. Затем вы можете создать список рассылки в диалоге “Новый чат”.</li>
<li>Если вы используете более одного устройства, списки рассылки в настоящее время не
синхронизируются между ними.</li>
<li>Сообщения, отправленные в списки рассылки, не шифруются. Шифрование нарушит
анонимность, потому что тогда все получатели узнают, кто еще получил сообщение.
(Отправка отдельных писем каждому будет хуже из-за ограничений скорости и
потребления сети).</li>
</ul>
<p>Список рассылки позволяет отправлять сообщения сразу нескольким адресатам;
получатели не могут отвечать в этом списке.
Функция списков рассылки пока что экспериментальная
и, скорее всего, в будущем будет заменена на что-то другое — следите за новостями. :)</p>
<h3 id="как-я-могу-поделиться-своим-местоположением-с-собеседниками-в-чате">
@@ -1575,6 +1488,11 @@ Delta Chat</a>.</li>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Измените свой адрес в разделе “Настройки → Дополнительные параметры → Пароль и аккаунт” и
@@ -1676,19 +1594,19 @@ Delta Chat</a>.</li>
см. <a href="https://providers.delta.chat">Обзор провайдеров</a></li>
</ul>
<h3 id="я-хочу-управлять-своим-собственным-почтовым-сервером-для-delta-chat-что-вы-посоветуете">
<h3 id="я-хочу-управлять-своим-собственным-сервером-для-delta-chat-что-вы-посоветуете">
Я хочу управлять своим собственным почтовым сервером для Delta Chat. Что вы посоветуете? <a href="#я-хочу-управлять-своим-собственным-почтовым-сервером-для-delta-chat-что-вы-посоветуете" class="anchor"></a>
Я хочу управлять своим собственным сервером для Delta Chat. Что вы посоветуете? <a href="#я-хочу-управлять-своим-собственным-сервером-для-delta-chat-что-вы-посоветуете" class="anchor"></a>
</h3>
<ul>
<li>Большинство почтовых серверов будут работать хорошо. Но лично мы рекомендуем,
это сочетание mailcow и mailadm, как описано <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">в этом
<li>Большинство почтовых серверов будут работать хорошо. Однако мы советуем использовать,
relay-сервер chatmail, как описано <a href="https://delta.chat/en/2023-12-13-chatmail">в этом
блоге</a>.</li>
<li>Вы можете найти <a href="https://delta.chat/ru/serverguide">руководство по установке на нашем сайте</a>.</li>
<li>Вы можете найти <a href="https://github.com/chatmail/relay">руководство по установке на GitHub</a>.</li>
</ul>
<h3 id="почему-я-должен-вводить-свой-пароль-от-электронной-почты-в-delta-chat-это-безопасно">
@@ -1704,10 +1622,10 @@ Delta Chat необходим пароль, чтобы использовать
хранится только на вашем устройстве и передается только вашему
провайдеру электронной почты (при входе в систему), который и так имеет доступ к вашей почте.</p>
<p>Поскольку Delta Chat является программой открытым исходным кодом, вы
можете изучить <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">исходный код</a>, если хотите убедиться, что ваши
учётные данные обрабатываются безопасно. Мы рады получить обратную связь,
которая поможет сделать приложение более безопасным для всех наших пользователей.</p>
<p>Поскольку Delta Chat — это проект с открытым исходным кодом, вы
можете проверить <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">исходный код</a>, если хотите убедиться, что ваши
учётные данные обрабатываются безопасно. Мы будем рады отзывам,
которые сделают приложение более безопасным для всех наших пользователей.</p>
<h3 id="какие-сообщения-отображаются-в-delta-chat">
@@ -1819,17 +1737,17 @@ Delta Chat необходим пароль, чтобы использовать
папкой DeltaChat”, вы также должны отключить “Переместить сообщения чата в DeltaChat”.
В противном случае удаление сообщений или настройки нескольких устройств могут не работать правильно.</p>
<h3 id="совместим-ли-delta-chat-с-protonmail--tutanota--criptext">
<h3 id="совместим-ли-delta-chat-с-proton-mail--tutanota--criptext">
Совместим ли Delta Chat с Protonmail / Tutanota / Criptext? <a href="#совместим-ли-delta-chat-с-protonmail--tutanota--criptext" class="anchor"></a>
Совместим ли Delta Chat с Proton Mail / Tutanota / Criptext? <a href="#совместим-ли-delta-chat-с-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Да и нет.</li>
<li>Нет, вы не можете использовать свой аккаунт Protonmail, Tutanota или Criptext с Delta
<li>Нет, вы не можете использовать свой аккаунт Proton Mail, Tutanota или Criptext с Delta
Chat; они не поддерживают получение писем через IMAP.</li>
<li>В любом случае вы можете использовать Delta Chat для отправки сообщений людям, которые используют
Protonmail, Tutanota, или Criptext. Однако, эти сообщения не будут зашифрованы
@@ -1882,7 +1800,7 @@ Chat.</li>
</h3>
<ul>
<li>Смотрите <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Стандарты, используемые в Delta Chat</a>.</li>
<li>Смотрите <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Стандарты, используемые в Delta Chat</a>.</li>
</ul>
<h3 id="где-мои-друзья-могут-найти-delta-chat">
@@ -2009,4 +1927,4 @@ U.S. Bureau of Democracy, Human Rights and Labor (DRL) для поддержки
</body></html>
</body></html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

+282 -365
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="sk"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#čo-je-to-delta-chat">Čo je to Delta Chat?</a>
<ul>
<li><a href="#ako-nájdem-ľudí-s-ktorými-môžem-chatovať">Ako nájdem ľudí s ktorými môžem chatovať?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#kto-vidí-moju-profilovú-fotku">Kto vidí moju profilovú fotku?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#what-do-pinning-muting-and-archiving-mean">What do Pinning, Muting and Archiving mean?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#what-does-the-green-dot-mean">What does the green dot mean?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#encryption-and-security">Encryption and Security</a>
<li><a href="#e2ee">Encryption and Security</a>
<ul>
<li><a href="#which-standards-are-used-for-end-to-end-encryption">Which standards are used for end-to-end encryption?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">Is OpenPGP secure?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#is-delta-chat-vulnerable-to-efail">Is Delta Chat vulnerable to EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">How does Delta Chat protect metadata in messages?</a></li>
<li><a href="#device-seizure">How to protect metadata and contacts when a device is seized?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#how-can-i-check-the-encryption-status-of-messages">How can I check the encryption status of messages?</a></li>
<li><a href="#why-do-i-see-unencrypted-messages">Why do I see unencrypted messages?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Môžem znova použiť svoj existujúci súkromný kľúč?</a></li>
<li><a href="#nemôžem-importovať-môj-existujúci-pgp-kľúč-do-delta-chat">Nemôžem importovať môj existujúci PGP kľúč do Delta Chat.</a></li>
<li><a href="#security-audits">Was Delta Chat independently audited for security vulnerabilities?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#môžem-používať-delta-chat-na-viacerých-zariadeniach-súčasne">Môžem používať Delta Chat na viacerých zariadeniach súčasne?</a></li>
<li><a href="#troubleshooting">Troubleshooting</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#máte-nejaké-plány-na-zavedenie-webového-klienta-delta-chat">Máte nejaké plány na zavedenie webového klienta Delta Chat?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#aké-povolenia-potrebuje-delta-chat">Aké povolenia potrebuje Delta Chat?</a></li>
<li><a href="#funguje-delta-chat-s-mojím-poskytovateľom-e-mailov">Funguje Delta Chat s mojím poskytovateľom e-mailov?</a></li>
<li><a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">I want to manage my own e-mail server for Delta Chat. What do you recommend?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#prečo-musím-zadávať-svoje-e-mailové-heslo-do-delta-chat-je-to-bezpečné">Prečo musím zadávať svoje e-mailové heslo do Delta Chat? Je to bezpečné?</a></li>
<li><a href="#ktoré-správy-sa-zobrazujú-v-delta-chate">Ktoré správy sa zobrazujú v Delta Chate?</a></li>
<li><a href="#podporuje-delta-chat-e-maily-html">Podporuje Delta Chat e-maily HTML?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#na-čo-je-dobré-nastavenie-odoslať-kópiu-sebe">Na čo je dobré nastavenie „Odoslať kópiu sebe“?</a></li>
<li><a href="#prečo-si-môžem-vybrať-sledovanie-priečinka-odoslané">Prečo si môžem vybrať sledovanie priečinka „Odoslané“?</a></li>
<li><a href="#prečo-sa-môžem-rozhodnúť-nesledovať-priečinok-deltachat">Prečo sa môžem rozhodnúť nesledovať priečinok DeltaChat?</a></li>
<li><a href="#je-delta-chat-kompatibilný-s-protonmail--tutanota--criptext">Je Delta Chat kompatibilný s Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#je-delta-chat-kompatibilný-s-proton-mail--tutanota--criptext">Je Delta Chat kompatibilný s Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">How can I delete my account?</a></li>
<li><a href="#zaujímajú-ma-technické-detaily-môžete-mi-povedať-viac">Zaujímajú ma technické detaily. Môžete mi povedať viac?</a></li>
<li><a href="#where-can-my-friends-find-delta-chat">Where can my friends find Delta Chat?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>If a message comes from an unknown contact, it appears as a <strong>request</strong>.</p>
<ul>
<li>If a message comes from an unknown contact, it appears as a <strong>request</strong>. You
need to accept the request before you can reply.</li>
<li>You can also “delete” it if you dont want to chat with them for now. This
does <em>not</em> delete the message on the server, only on your device. So you can
still deal with the message in a different mail app.</li>
<li>If you delete a request, future messages from that contact will still appear
<li>
<p>You need to <strong>accept</strong> the request before you can reply.</p>
</li>
<li>
<p>You can also <strong>delete</strong> it if you dont want to chat with them for now.</p>
</li>
<li>
<p>If you delete a request, future messages from that contact will still appear
as message request, so you can change your mind. If you really dont want to
receive messages from this person, consider <em>blocking</em> them.</li>
receive messages from this person, consider <strong>blocking</strong> them.</p>
</li>
</ul>
<h3 id="podporuje-delta-chat-obrázky-videá-a-iné-prílohy">
@@ -201,13 +204,10 @@ receive messages from this person, consider <em>blocking</em> them.</li>
</h3>
<p>Áno. Okrem čistého textu sa všetky prílohy e-mailov zobrazujú ako samostatné správy. Odchádzajúce správy dostávajú prílohy podľa potreby automaticky.</p>
<ul>
<li>
<p>Áno. Okrem čistého textu sa všetky prílohy e-mailov zobrazujú ako samostatné správy. Odchádzajúce správy dostávajú prílohy podľa potreby automaticky.</p>
</li>
<li>
<p>For performance, images are optimized and sent at a smaller size by default, but you can send it as a “file” to preserve the original.</p>
</li>
<li>For performance, images are optimized and sent at a smaller size by default, but you can send it as a “file” to preserve the original.</li>
</ul>
<h3 id="multiple-accounts">
@@ -304,6 +304,41 @@ Archived chats remain accessible above the chat list or via search.</p>
<p>To use the functions, long tap or right click a chat in the chat list.</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="what-does-the-green-dot-mean">
@@ -312,25 +347,53 @@ Archived chats remain accessible above the chat list or via search.</p>
</h3>
<p>You can sometimes see a <strong>green dot</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" />
next to the avatar of a contact.
It means they were <strong>recently seen</strong> in the last 10 minutes:</p>
<ul>
<li>Since Delta Chat 1.34 you can sometimes see a “green dot” next to the avatar
of a contact. It means they were “recently seen”.</li>
<li>In detail: it means, that in the last 10 minutes, Delta Chat has seen them:
<ul>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>or because they sent data to your Delta Chat app by using a
<a href="#webxdc">webxdc app</a>.</li>
</ul>
</li>
<li>So this is not a real time online status - and if someone doesnt answer
right away even though they seem to be online, dont worry and give them some
space ;-)</li>
<li>On the other hand, others will not always “see that you are online”. If you
have turned off read receipts, they will not see the green dot until you
message them or write to a group theyre in as well.</li>
<li>either because they messaged you directly,</li>
<li>because they wrote something to a group you are both a member of,</li>
<li>because they sent you a read receipt for a message you wrote,</li>
<li>because they edit or delete a message in a chat shared with you,</li>
<li>or because they use an <a href="#webxdc">app</a> in a chat shared with you.</li>
</ul>
<p>So this is not a real time online status -
and if someone doesnt answer right away even though they seem to be online,
dont worry and give them some space :)</p>
<p>On the other hand, others will not always “see that you are online”.
If you have turned off read receipts,
they will not see the green dot
until one of the above conditions are met.</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -603,16 +666,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -625,14 +688,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -647,7 +711,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -655,10 +719,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="encryption-and-security">
<h2 id="e2ee">
Encryption and Security <a href="#encryption-and-security" class="anchor"></a>
Encryption and Security <a href="#e2ee" class="anchor"></a>
</h2>
@@ -671,18 +735,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -692,28 +764,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -722,141 +803,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -881,19 +881,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -903,7 +902,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -946,17 +945,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -968,10 +965,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1034,74 +1027,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="how-can-i-check-the-encryption-status-of-messages">
How can I check the encryption status of messages? <a href="#how-can-i-check-the-encryption-status-of-messages" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="why-do-i-see-unencrypted-messages">
Why do I see unencrypted messages? <a href="#why-do-i-see-unencrypted-messages" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>If you dont need a longer-lived copy of your messages on the server,
you can also turn on <a href="#delold">“delete messages from server automatically”</a>.</p>
<h3 id="pfs">
@@ -1110,45 +1035,35 @@ you can also turn on <a href="#delold">“delete messages from server automatica
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Yes.</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1158,42 +1073,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Yes.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Alternatively, you can import the key manually in “Settings -&gt; Advanced settings -&gt; Import secret keys”.
Caution: Make sure the key is not protected by a password, or remove the password beforehand.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>If you dont have a key or dont even know you would need one - dont worry: Delta Chat generates keys as needed, you dont have to hit a button for it.</p>
<h3 id="nemôžem-importovať-môj-existujúci-pgp-kľúč-do-delta-chat">
Nemôžem importovať môj existujúci PGP kľúč do Delta Chat. <a href="#nemôžem-importovať-môj-existujúci-pgp-kľúč-do-delta-chat" class="anchor"></a>
</h3>
<p>Najpravdepodobnejšou príčinou je, že váš kľúč je zašifrovaný a/alebo používa
heslo. Delta Chat takéto kľúče nepodporuje. Mohli by ste odstrániť
zašifrovanie prístupovej frázy a heslo a skúsiť import znova.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>Delta Chat podporuje bežné formáty súkromných kľúčov OpenPGP
avšak je nepravdepodobné, že budú plne podporované súkromné kľúče zo všetkých zdrojov. Toto
nie je hlavným cieľom Delta Chat. V skutočnosti väčšina nových používateľov
nebude mať pred použitím Delta Chat žiadny kľúč.
Snažíme sa však podporovať súkromné kľúče z čo najväčšieho počtu zdrojov.</p>
<p>Odstránenie hesla zo súkromného kľúča bude závisieť od
softvéru, ktorý používate na správu kľúčov PGP. S Enigmailom si môžete nastaviť svoje
heslo na prázdnu hodnotu v okne Key Management. Pomocou GnuPG to môžete nastaviť
<a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">prostredníctvom príkazu
riadok</a>.
Pre iné programy by ste mali vedieť nájsť riešenie online.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1203,10 +1090,25 @@ Pre iné programy by ste mali vedieť nájsť riešenie online.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1272,7 +1174,7 @@ You can read the <a href="https://delta.chat/assets/blog/2019-first-security-rev
</h3>
<p>Yes. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Yes. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1329,6 +1231,10 @@ which is known to cause problems (especially on Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Ensure there is <strong>enough storage</strong> on the destination device</p>
@@ -1376,6 +1282,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Yes.</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="máte-nejaké-plány-na-zavedenie-webového-klienta-delta-chat">
@@ -1422,9 +1345,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="where-can-i-get-webxdc-apps">
@@ -1497,7 +1421,7 @@ will not get interrupted by a video chat invite.</li>
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
this way, you will have a new random Jitsi room every time you call someone.</li>
</ul>
<h3 id="what-are-broadcast-lists-and-how-can-i-use-them">
@@ -1508,21 +1432,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>With a Broadcast List you can send a message to many recipents at once; when
they reply to you, you get the reply in your direct 1:1 chat with them. The
recipients cant see each other.</li>
<li>Technically, it is an E-Mail with many recipients in BCC.</li>
<li>You can turn on the feature in the “experimental features” section in the
advanced settings. Then you can create a Broadcast List from the “New Chat”
dialog.</li>
<li>In case you are using more than one device, Broadcast Lists are currently not
synced between them.</li>
<li>Messages sent to broadcast lists are not encrypted. Encryption would break
anonymity, because then all recipients would know who else received it
(Sending individual mails to everyone would be worse for rate limit and network
consumption reason).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="how-can-i-share-my-location-with-my-chat-partners">
@@ -1579,6 +1492,11 @@ vykonáva aplikácia Delta Chat.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1681,19 +1599,19 @@ Niektorí poskytovatelia však potrebujú na správne fungovanie špeciálne mo
pozrite si <a href="https://providers.delta.chat">Prehľad poskytovateľa</a></li>
</ul>
<h3 id="i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
I want to manage my own e-mail server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-e-mail-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Most mail servers will work well. But what we personally recommend is a
combination of mailcow and mailadm, as described <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">in this
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://delta.chat/sk/serverguide">installation guide on our website</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="prečo-musím-zadávať-svoje-e-mailové-heslo-do-delta-chat-je-to-bezpečné">
@@ -1708,7 +1626,7 @@ blogpost</a>.</li>
program potrebuje heslo, aby ste ho mohli používať na odosielanie e-mailov. Samozrejme,
heslo je uložené iba vo vašom zariadení. Heslo sa prenáša iba na vášho poskytovateľa e-mailu (keď sa prihlásite), ktorý má aj tak prístup k vašim e-mailom.</p>
<p>Keďže Delta Chat je Open Source, môžete skontrolovať <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Zdrojový
<p>Keďže Delta Chat je Open Source, môžete skontrolovať <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Zdrojový
Kód</a>
ak chcete overiť, že vaše poverenia sú spracované bezpečne. Sme radi
o spätnej väzbe, vďaka ktorej je aplikácia bezpečnejšia pre všetkých našich používateľov.</p>
@@ -1820,25 +1738,24 @@ pre ich mail, namiesto priečinku DeltaChat. Ak zakážete „Sledovať
priečinok DeltaChat“, mali by ste tiež zakázať „presunúť chatové správy do DeltaChat“.
V opačnom prípade nemusí odstraňovanie správ alebo nastavenia viacerých zariadení fungovať správne.</p>
<h3 id="je-delta-chat-kompatibilný-s-protonmail--tutanota--criptext">
<h3 id="je-delta-chat-kompatibilný-s-proton-mail--tutanota--criptext">
Je Delta Chat kompatibilný s Protonmail / Tutanota / Criptext? <a href="#je-delta-chat-kompatibilný-s-protonmail--tutanota--criptext" class="anchor"></a>
Je Delta Chat kompatibilný s Proton Mail / Tutanota / Criptext? <a href="#je-delta-chat-kompatibilný-s-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
encrypted, though. The end-to-end encryption those providers offer is not
compatible with <a href="https://autocrypt.org/">Autocrypt</a>, the standard Delta Chat
uses.</li>
<li>Delta Chat can end-to-end-encrypt through any e-mail provider with any
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
<li>Áno a nie.</li>
<li>Nie, nemôžete používať svoj účet Proton Mail, Tutanota alebo Criptext s Delta
Chat; neponúkajú prijímanie pošty cez IMAP.</li>
<li>V každom prípade môžete použiť Delta Chat na odosielanie správ ľuďom, ktorí to používajú
Protonmail, Tutanota alebo Criptext. Avšak tieto správy nebudú End-to-End
zašifrované. Šifrovanie typu End-to-End, ktoré títo poskytovatelia ponúkajú, funguje iba <br />
na ich platformách a nie sú kompatibilné s nikým mimo.</li>
<li>Delta Chat môže e2e šifrovať prostredníctvom akéhokoľvek poskytovateľa e-mailu s ktoroukoľvek
<a href="https://autocrypt.org/dev-status.html">E-mailovou aplikáciou s povoleným automatickým šifrovaním</a>.</li>
</ul>
<h3 id="remove-account">
@@ -1883,7 +1800,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>Pozrite si <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Štandardy používané v Delta Chate</a>.</li>
<li>Pozrite si <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Štandardy používané v Delta Chate</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -2005,9 +1922,9 @@ as a contributor community.</p>
Freiburg (Germany), and is distributed to more than a dozen contributors world-wide.</p>
<p>Please see <a href="https://delta.chat/sk/contribute">Delta Chat Contribution channels</a>
for both monetary and and other contribution possibilities.</p>
for both monetary and other contribution possibilities.</p>
</body></html>
</body></html>
+274 -358
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="sq"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#çështë-delta-chat-i">Ç’është Delta Chat-i?</a>
<ul>
<li><a href="#si-mund-të-gjej-persona-për-të-biseduar-me-ta">Si mund të gjej persona për të biseduar me ta?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#kush-e-sheh-profilin-tim">Kush e sheh profilin tim?</a></li>
<li><a href="#signature">Can I set a Bio/Signature/Status/Motto with Delta Chat?</a></li>
<li><a href="#çdo-të-thotë-fiksim-heshtim-arkivim">Ç’do të thotë Fiksim, Heshtim, Arkivim?</a></li>
<li><a href="#save">How do “Saved Messages” work?</a></li>
<li><a href="#çdo-të-thotë-pika-e-gjelbër">Ç’do të thotë pika e gjelbër?</a></li>
<li><a href="#edit">Correct typos and delete messages after sending</a></li>
<li><a href="#ephemeralmsgs">How do disappearing messages work?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#why-does-delta-chat-integrate-with-centralized-proprietary-applegoogle-push-services">Why does Delta Chat integrate with centralized proprietary Apple/Google push services?</a></li>
</ul>
</li>
<li><a href="#fshehtëzim-dhe-siguri">Fshehtëzim dhe Siguri</a>
<li><a href="#e2ee">Fshehtëzim dhe Siguri</a>
<ul>
<li><a href="#cilët-standarde-përdoren-për-fshehtëzim-skaj-më-skaj">Cilët standarde përdoren për fshehtëzim skaj-më-skaj?</a></li>
<li><a href="#whene2e">How can i know if messages are end-to-end encrypted?</a></li>
<li><a href="#howtoe2ee">How can I get guaranteed end-to-end encryption and green checkmarks?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark and “guaranteed end-to-end encryption” mean?</a></li>
<li><a href="#nocryptanymore">A contact “sent a message from another device”, what can i do?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#are-attachments-pictures-files-audio-etc-end-to-end-encrypted">Are attachments (pictures, files, audio etc.) end-to-end encrypted?</a></li>
<li><a href="#openpgp-secure">A është i siguruar OpenPGP?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end -encryption?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#a-mund-të-preket-delta-chat-i-nga-efail">A mund të preket Delta Chat-i nga EFAIL?</a></li>
<li><a href="#tls">Is a message exposed in cleartext if end-to-end encryption is not available?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">Si i mbron Delta Chat-i tejtëdhënat në mesazhe?</a></li>
<li><a href="#device-seizure">Si të mbrohen tejtëdhënat dhe kontaktet, kur shtien në dorë një pajisje?</a></li>
<li><a href="#how-can-i-check-encryption-information">How can i check encryption information?</a></li>
<li><a href="#si-mund-ta-kontrolloj-gjendjen-e-fshehtëzimit-të-mesazheve">Si mund ta kontrolloj gjendjen e fshehtëzimit të mesazheve?</a></li>
<li><a href="#pse-shoh-mesazhe-të-pafshehtëzuar">Pse shoh mesazhe të pafshehtëzuar?</a></li>
<li><a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app?</a></li>
<li><a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion">How can I ensure message end-to-end encryption and deletion?</a></li>
<li><a href="#pfs">Does Delta Chat support Perfect Forward Secrecy?</a></li>
<li><a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">Is end-to-end encryption of Delta Chat as safe as Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">A mund të ripërdor kyçin tim ekzistues privat?</a></li>
<li><a href="#seksportoj-dot-kyçet-e-mi-ekzistues-pgp-në-delta-chat">Seksportoj dot kyçet e mi ekzistues PGP në Delta Chat.</a></li>
<li><a href="#security-audits">A është bërë auditim i pavarur i Delta Chat-it për cenueshmëri sigurie?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#a-mund-ta-përdor-delta-chat-in-në-shumë-pajisje-njëherësh-në-të-njëjtën-kohë">A mund ta përdor Delta Chat-in në shumë pajisje njëherësh në të njëjtën kohë?</a></li>
<li><a href="#diagnostikim">Diagnostikim</a></li>
<li><a href="#backup">Manual Transfer</a></li>
<li><a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices?</a></li>
<li><a href="#a-ka-ndonjë-plan-për-të-sjellë-një-klient-web-delta-chat">A ka ndonjë plan për të sjellë një Klient Web Delta Chat?</a></li>
</ul>
</li>
@@ -88,7 +86,7 @@
<ul>
<li><a href="#çleje-lyp-delta-chat-i">Ç’leje lyp Delta Chat-i?</a></li>
<li><a href="#a-funksionon-delta-chat-me-shërbimin-tim-email">A funksionon Delta Chat me shërbimin <em>tim</em> email?</a></li>
<li><a href="#dua-të-administroj-shërbyesin-tim-email-për-delta-chat-çrekomandoni">Dua të administroj shërbyesin tim email për Delta Chat. Ç’rekomandoni?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#pse-më-duhet-të-jap-fjalëkalimin-e-email-it-tim-në-delta-chat-a-është-e-sigurt-kjo">Pse më duhet të jap fjalëkalimin e email-it tim në Delta Chat? A është e sigurt kjo?</a></li>
<li><a href="#cilat-mesazhe-shfaqen-në-delta-chat">Cilat mesazhe shfaqen në Delta Chat?</a></li>
<li><a href="#a-mbulon-delta-chat-i-email-e-html">A mbulon Delta Chat-i email-e HTML?</a></li>
@@ -169,7 +167,7 @@ safe against network and server attacks.</p>
</li>
<li>
<p>Free and Open Source software, both app and server side.
Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">E-mail and Web Internet Standards</a>,
Built on <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">E-mail and Web Internet Standards</a>,
<a href="https://xkcd.com/927/">to avoid “yet another standard syndrome (xkcd 927)”</a></p>
</li>
</ul>
@@ -182,15 +180,20 @@ Built on <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/s
</h3>
<p>Nëse një mesazh vjen prej një kontakti të panjohur, shfaqet si <strong>kërkesë</strong>.</p>
<ul>
<li>Nëse një mesazh vjen prej një kontakti të panjohur, shfaqet si <strong>kërkesë</strong>.
Duhet të pranoni kërkesën, para se të mund të përgjigjeni.</li>
<li>Mundeni edhe ta “fshini”, nëse sdoni të bisedoni me të tani. Kjo <strong>nuk</strong>
fshin mesazhin te shërbyesi, vetëm te pajisja juaj. Kështu, mundeni
të merreni me mesazhin që nga një tjetër aplikacion email-esh.</li>
<li>Nëse fshini një kërkesë, mesazhet e ardhshëm prej atij kontakti do të shfaqen
<li>
<p>Duhet të <strong>pranoni</strong> kërkesën, para se të mund të përgjigjeni.</p>
</li>
<li>
<p>Mundeni edhe ta <strong>fshini</strong>, nëse sdoni të bisedoni me të tani.</p>
</li>
<li>
<p>Nëse fshini një kërkesë, mesazhet e ardhshëm prej atij kontakti do të shfaqen
ende si kërkesë për mesazh, që të mund të ndërroni mendje. Nëse vërtet
sdoni të merrni mesazhe prej këtij personi, shihni mundësinë e <em>bllokimit</em> të tij.</li>
sdoni të merrni mesazhe prej këtij personi, shihni mundësinë e <strong>bllokimit</strong> të tij.</p>
</li>
</ul>
<h3 id="a-mbulon-delta-chat-i-figura-video-dhe-bashkëngjitje-të-tjera">
@@ -305,6 +308,41 @@ Fjalosjet e arkivuara mbesin të përdorshme mbi listën e fjalosjeve, ose përm
<p>Që të arkivoni ose fiksoni një fjalosje, prekeni gjatë (në Android), përdorni menunë e fjalosjes (në Android/Desktop), ose fërkojeni për majtas (në iOS);
që të heshtoni një fjalosje, përdorni menunë e fjalosjes (në Android/Desktop), ose profilin e fjalosjes (në iOS).</p>
<h3 id="save">
How do “Saved Messages” work? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Saved Messages</strong> is a chat that you can use to easily remember and find messages.</p>
<ul>
<li>
<p>In any chat, long tap or right click a message and select <strong>Save</strong></p>
</li>
<li>
<p>Saved messages are marked by the symbol
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" />
next to the timestamp</p>
</li>
<li>
<p>Later, open the “Saved Messages” chat - and you will see the saved messages there.
By tapping <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />,
you can go back to the original message in the original chat</p>
</li>
<li>
<p>Finally, you can also use “Save Messages” to take <strong>personal notes</strong> - open the chat, type something, add a photo or a voice message etc.</p>
</li>
<li>
<p>As “Saved Message” are synced, they can become very handy for transferring data between devices</p>
</li>
</ul>
<p>Messages stay saved even if they are edited or deleted -
may it be by <a href="#edit">sender</a>, by <a href="#delold">device cleanup</a> or by <a href="#ephemeralmsgs">disappearing messages of other chats</a>.</p>
<h3 id="çdo-të-thotë-pika-e-gjelbër">
@@ -313,25 +351,49 @@ që të heshtoni një fjalosje, përdorni menunë e fjalosjes (në Android/Deskt
</h3>
<p>Këtej mundeni të shihni ndonjëherë një <strong>pikë të gjelbër</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" /> në krah të avatarit të një kontakti. Hollësisht: do të thotë se, në 10 minutat e fundit, Delta Chat-i i ka parë:</p>
<ul>
<li>Nga Delta Chat 1.34 e këtej mundeni të shihni ndonjëherë një “pikë të gjelbër”
në krah të avatarit të një kontakti. Ajo do të thotë se është “parë së fundi”.</li>
<li>Hollësisht: do të thotë se, në 10 minutat e fundit, Delta Chat-i i ka parë:
<ul>
<li>ose pse ju dërguan mesazh drejtpërsëdrejti,</li>
<li>ngaqë shkruan diçka te një grup ku jeni pjesë të dy palët,</li>
<li>ngaqë ju dërguan një dëftesë leximi për një mesazh që shkruat,</li>
<li>ose ngaqë dërguan të dhëna te aplikacioni juaj Delta Chat përmes një
<a href="#webxdc">aplikacioni webxdc</a>.</li>
</ul>
</li>
<li>Pra, kjo s’është gjendje e njëmendtë aty për aty për qenie në linjë - dhe
nëse dikush nuk përgjigjet menjëherë, edhe pse duket të jetë në linjë, mos
u merakosni dhe lëruni ca kohë ;-)</li>
<li>Më anë tjetër, të tjerët jo përherë “do të shohin se jeni në linjë”. Nëse keni
çaktivizuar dëftesa leximesh, sdo të shohin pikën e gjelbër para se ju
tu dërgoni një mesazh, ose të shkruani te një grup ku bëjnë pjesë edhe ata.</li>
<li>ose pse ju dërguan mesazh drejtpërsëdrejti,</li>
<li>ngaqë shkruan diçka te një grup ku jeni pjesë të dy palët,</li>
<li>ngaqë ju dërguan një dëftesë leximi për një mesazh që shkruat,</li>
<li>ose ngaqë dërguan të dhëna te aplikacioni juaj Delta Chat përmes një <a href="#webxdc">aplikacioni webxdc</a>.</li>
</ul>
<p>Pra, kjo s’është gjendje e njëmendtë aty për aty për qenie në linjë - dhe
nëse dikush nuk përgjigjet menjëherë, edhe pse duket të jetë në linjë, mos
u merakosni dhe lëruni ca kohë :)</p>
<p>Më anë tjetër, të tjerët jo përherë “do të shohin se jeni në linjë”. Nëse keni
çaktivizuar dëftesa leximesh, sdo të shohin pikën e gjelbër para se ju
tu dërgoni një mesazh, ose të shkruani te një grup ku bëjnë pjesë edhe ata.</p>
<h3 id="edit">
Correct typos and delete messages after sending <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>You can edit the text of your messages after sending.
For that, long tap or right click the message and select <strong>Edit</strong>
or <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>If you have sent a message accidentally,
from the same menu, select <strong>Delete</strong> and then <strong>Delete for Everyone</strong>.</p>
</li>
</ul>
<p>While edited messages will have the word “Edited” next to the timestamp,
deleted messages will be removed without a marker in the chat.
Notifications are not sent and there is no time limit.</p>
<p>Note, that the original message may still be received by chat members
who could have already replied, forwarded, saved, screenshotted or otherwise copied the message.</p>
<h3 id="ephemeralmsgs">
@@ -605,16 +667,16 @@ to any system involved in the delivery of Push Notifications.</p>
<ul>
<li>
<p>A Delta Chat app obtains a “device token” locally and stores it
<p>A Delta Chat app obtains a “device token” locally, encrypts it and stores it
on the <a href="https://delta.chat/chatmail">chatmail</a> server.</p>
</li>
<li>
<p>When a <a href="https://delta.chat/chatmail">chatmail</a> server receives an e-mail for a Delta Chat user
it forwards the device token to the central Delta Chat notification proxy.</p>
it forwards the encrypted device token to the central Delta Chat notification proxy.</p>
</li>
<li>
<p>The central Delta Chat notification proxy forwards
the “device token” to the respective Push service (Apple, Google, etc.),
<p>The central Delta Chat notification proxy decrypts the device token
and forwards it to the respective Push service (Apple, Google, etc.),
without ever knowing the IP or e-mail address of Delta Chat users.</p>
</li>
<li>
@@ -627,14 +689,15 @@ and also never see any message content (also not in encrypted forms).</p>
</li>
</ul>
<p>As of May 2024, chatmail servers know about “device tokens”
but we plan to encrypt this information to the notification proxy
such that the chatmail server never learns the device token.</p>
<p>The central Delta Chat notification proxy <a href="https://github.com/deltachat/notifiers">is small and fully implemented in Rust</a>
and forgets about device-tokens as soon as Apple/Google/etc processed them,
usually in a matter of milliseconds.</p>
<p>Note that the device token is encrypted between apps and notification proxy
but it is not signed.
The notification proxy thus never sees e-mail addresses, IP-addresses or
any cryptographic identity information associated with a users device (token).</p>
<p>Resulting from this overall privacy design, even the seizure of a chatmail server,
or the full seizure of the central Delta Chat notification proxy
would not reveal private information that Push services do not already have.</p>
@@ -649,7 +712,7 @@ would not reveal private information that Push services do not already have.</p>
<p>Delta Chat is a free and open source decentralized messenger with free server choice,
but we want users to reliably experience “instant delivery” of messages,
like they experience from Whatsapp, Signal or Telegram apps,
like they experience from WhatsApp, Signal or Telegram apps,
without asking questions up-front that are more suited to expert users or developers.</p>
<p>Note that Delta Chat has a <a href="#privacy-notifications">small and privacy-preserving Push Notification system</a>
@@ -657,10 +720,10 @@ that achieves “instant delivery” of messages for all chatmail servers
including a potential one <a href="https://delta.chat/chatmail#selfhosted">you might setup yourself without our permission</a>.
Welcome to the power of the interoperable and massive chatmail and e-mail system :)</p>
<h2 id="fshehtëzim-dhe-siguri">
<h2 id="e2ee">
Fshehtëzim dhe Siguri <a href="#fshehtëzim-dhe-siguri" class="anchor"></a>
Fshehtëzim dhe Siguri <a href="#e2ee" class="anchor"></a>
</h2>
@@ -673,18 +736,26 @@ Welcome to the power of the interoperable and massive chatmail and e-mail system
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption with contacts and group chats.
Autocrypt uses a limited and <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>.
End-to-End encrypted messages are marked with a padlock
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
are used for establishing chats with guaranteed end-to-end encryption
which protects against network attacks and compromised servers.
Chats marked with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
guarantee end-to-end encrypted messages.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -694,28 +765,37 @@ guarantee end-to-end encrypted messages.</p>
</h3>
<p>All end-to-end encrypted messages carry a padlock:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>End-to-end encryption is guaranteed if there is a green checkmark next to the chat title:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
How can I get guaranteed end-to-end encryption and green checkmarks? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>If you have a second communication channel with your chat partner,
like a video chat or a different messenger,
you can generate an invite link.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>If you are together in person,
you can show a QR code to your chat partner.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
@@ -724,141 +804,60 @@ tap the chat group title to see its member list,
and select “QR Invite code”.</p>
</li>
<li>
<p>For <strong>direct 1:1 chat invitations</strong>,
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Let your chat partner scan the QR image
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">Secure-Join network messages are exchanged</a> between both devices.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>If both devices are online,
both sides will eventually see a (group or direct) chat with a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
next to the title.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>If one of the devices is offline, the green checkmarks will only
appear later when the device is internet-connected again
and the Secure-Join network protocol completed.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Congratulations!
You now will automatically use guaranteed end-to-end encryption
with this contact and both of you can add each other to green-checkmarked groups
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />,
thereby automatically spreading guaranteed end-to-end encryption among its members.</p>
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
What does the green checkmark and “guaranteed end-to-end encryption” mean? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Chat titles with green checkmarks
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that all messages in the chat will be end-to-end encrypted
and can not be read or altered by compromised e-mail servers or Internet providers.
Joining green-checkmarked group chats
safely spreads everybodys encryption information (and green checkmarks)
in a manner that guarantees end-to-end encryption in the group and among members.</p>
<p>Contact profiles with green checkmarks
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
mean that messaging a contact is currently guaranteed to be end-to-end encrypted.
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a contact to a green-checkmarked group becomes an introducer
to those members who didnt yet know about the added contact.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Note that in a contact profile you may see and tap introducers
but there is no green checkmark in the profile title.
This usually means that the contact <a href="#nocryptanymore">“sent a message from another device”</a>.</p>
<p>For more in-depth discussion of “guaranteed end-to-end encryption”
please see <a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join protocols</a>
and specifically read about “Verified Groups”, the technical term
of what is called here “green-checkmarked” or “guaranteed end-to-end encrypted” chats.</p>
<h3 id="nocryptanymore">
A contact “sent a message from another device”, what can i do? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Your chat with a contact lost guaranteed end-to-end encryption.
The green checkmark was removed for this chat and contact when you see this warning.
<strong>If you find the sudden drop of guaranteed end-to-end encryption
surprising for this contact then dont accept the warning!</strong>
Instead check with your contact through a second channel
like a video call, other messenger or a phone call,
to find out what happened.</p>
<p>If your contact actually caused the drop of guaranteed end-to-end encryption
please see the next paragraphs for common reasons and their mitigations.
Regardless, all other green-checkmarked chats remain guaranteed end-to-end encrypted
even if the contact is a member there.</p>
<p><strong>Your contact is using Delta Chat on a second device (phone or laptop)</strong></p>
<p>If they have another device with a Delta Chat app running,
they should remove the profile from the new device
and add it <a href="#multiclient">as a second device as described here</a>.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is established with both devices of your contact.</p>
<p><strong>Your contact reinstalled Delta Chat using their old account login</strong></p>
<p>If they have <a href="#backup">a backup file</a>,
they should remove the profile from the new device
and rather import the backup file to re-create their profile.
As soon as they message you afterwards, the warning will be gone
and guaranteed encryption is re-established for this contact.</p>
<p>If they dont have a backup file, its best to perform a <a href="#howtoe2ee">QR scan</a>
with your chat partner to re-establish guaranteed end-to-end encryption.</p>
<p><strong>Your contact sent a mail through a webmail interface or another e-mail app
and will get back to using Delta Chat soon again.</strong></p>
<p>If you are sure that the contact sometimes uses webmail,
or another mail app lacking end-to-end encryption,
then you may accept the warning.
As soon as your contact uses Delta Chat again,
guaranteed end-to-end encryption will be automatically re-established.</p>
<p><strong>Your contact stopped using Delta Chat entirely</strong></p>
<p>Sometimes remaining in contact is more important than end-to-end encryption.
<a href="#tls">“Transport Layer Encryption” (TLS)</a> may still meaningfully protect
the confidentiality of your messages between your device and the e-mail server.
But without end-to-end encryption you and your contact are trusting your e-mail server
to not read or manipulate your messages, and to not hand them to third parties.</p>
<p>In any case, you can not do much else than accept the warning.
Please also remove the contact from any active green-checkmarked group
which you can find in “Shared chats” in the Contact profile.
This spares your contact from getting “unreadable” messages.</p>
<p>If the contact removed Delta Chat because of buggy or undesirable behaviour,
please consider posting to our <a href="https://support.delta.chat">support forum</a>
to help us identify and address common problems. Thanks!</p>
<h3 id="are-attachments-pictures-files-audio-etc-end-to-end-encrypted">
@@ -883,19 +882,18 @@ and attachment metadata such as filenames.</p>
</h3>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
and only displays a padlock security indicator on a message
if the whole message is properly encrypted and signed.
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP is not insecure by itself.
Most publically discussed OpenPGP security problems
Most publicly discussed OpenPGP security problems
actually stem from bad usability or bad implementations of tools or apps (or both).
It is particularly important to distinguish between OpenPGP, the IETF encryption standard,
and GnuPG (GPG), a command line tool implementing OpenPGP.
Many public critiques of OpenPGP actually discuss GnuPG which Delta Chat has never used.
Delta Chat rather uses the OpenPGP Rust implementation <a href="https://github.com/rpgp/rpgp">rPGP</a>,
available as <a href="https://crates.io/crates/pgp">an independent “pgp” package</a>,
and <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">security-audited in 2019</a>.</p>
and <a href="#security-audits">security-audited in 2019 and 2024</a>.</p>
<p>We aim, along with other OpenPGP implementors,
to further improve security characteristics by implementing the
@@ -905,7 +903,7 @@ which was thankfully adopted in summer 2023.</p>
<h3 id="openpgp-alternatives">
Did you consider using alternatives to OpenPGP for end-to-end -encryption? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -948,17 +946,15 @@ as defined by the Autocrypt Level 1 specification.</p>
<h3 id="tls">
Is a message exposed in cleartext if end-to-end encryption is not available? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Even if your messages are not guaranteed to be end-to-end encrypted,
they are still protected from Internet providers like cell or cable companies.
However, your and your recipients e-mail providers
may read, analyze or even modify your messages,
including any attachments,
if they are not end-to-end encrypted.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>Delta Chat by default uses strict
<a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS encryption</a>
@@ -970,10 +966,6 @@ If the involved e-mail servers support <a href="https://datatracker.ietf.org/doc
then transport encryption will be enforced between e-mail providers
in which case Delta Chat communications will never be exposed in cleartext to the Internet
even if the message was not end-to-end encrypted.</p>
<p>Note that <a href="#howtoe2ee">maintaining guaranteed end-to-end encryption</a> on top of TLS encryption
provides pervasive safety between your and the recipients devices.
Not even your e-mail or Internet provider will be able to read or modify your messages.</p>
<h3 id="message-metadata">
@@ -1036,74 +1028,6 @@ Delta Chat shows two fingerprints there.
If the same fingerprints appear on your own and your contacts device,
the connection is safe.</p>
<h3 id="si-mund-ta-kontrolloj-gjendjen-e-fshehtëzimit-të-mesazheve">
Si mund ta kontrolloj gjendjen e fshehtëzimit të mesazheve? <a href="#si-mund-ta-kontrolloj-gjendjen-e-fshehtëzimit-të-mesazheve" class="anchor"></a>
</h3>
<p>A little <strong>padlock</strong> in a message bubble denotes
that the message was properly end-to-end encrypted from the given sender.
If there is <strong>no padlock</strong>, the message was not properly end-to-end encrypted
most likely because the sender uses an app or webmail interface
without support for end-to-endencryption.</p>
<h3 id="pse-shoh-mesazhe-të-pafshehtëzuar">
Pse shoh mesazhe të pafshehtëzuar? <a href="#pse-shoh-mesazhe-të-pafshehtëzuar" class="anchor"></a>
</h3>
<p>If a contact uses a non-Autocrypt e-mail app,
all messages involving this contact (in a group or 1:1 chat)
will not be end-to-end encrypted, and thus not show a “padlock” with messages.
Note that even if your contacts use Delta Chat on their account,
they might also use a non-Autocrypt e-mail app on that account
which then may cause intermittently unencrypted messages.
Replying unencrypted to unencrypted messages is mandated by Autocrypt
to prevent unreadable messages on the side of your contacts
and their non-Autocrypt e-mail app.</p>
<h3 id="how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app">
How can i get an end-to-end encrypted chat with a Delta Chat contact who sometimes uses webmail or another non-Autocrypt e-mail app? <a href="#how-can-i-get-an-end-to-end-encrypted-chat-with-a-delta-chat-contact-who-sometimes-uses-webmail-or-another-non-autocrypt-e-mail-app" class="anchor"></a>
</h3>
<p>If you need a safely end-to-end encrypted chat with a contact
who is using their e-mail account both with Delta Chat and non-Autocrypt apps (e.g. webmail),
its best to setup <a href="#howtoe2ee">guaranteed end-to-end encryption with them</a>
and then create a guaranteed end-to-end encrypted group chat with you two as members.
In this group chat all messages will be end-to-end encrypted
even if the direct chat between you two has a
<a href="#nocryptanymore">“… sent a message from another device”</a> warning.</p>
<h3 id="how-can-i-ensure-message-end-to-end-encryption-and-deletion">
How can I ensure message end-to-end encryption and deletion? <a href="#how-can-i-ensure-message-end-to-end-encryption-and-deletion" class="anchor"></a>
</h3>
<p>The best way to ensure every message is end-to-end encrypted,
and metadata deleted as quickly as possible
is <a href="#howtoe2ee">using chats with guaranteed end-to-end encryption</a>
and turning on <a href="#ephemeralmsgs">disappearing messages</a>.</p>
<p>Guaranteed end-to-end encrypted chats protect against <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM attacks</a>
and turning on disappearing messages deletes the messages
on the server after a user-configured time.</p>
<p>Nëse sju duhet te shërbyesi një kopje jetëgjatë e mesazheve tuaj,
mund edhe të aktivizoni <a href="#delold">“fshiji automatikisht nga shërbyesi mesazhe”</a>.</p>
<h3 id="pfs">
@@ -1112,45 +1036,35 @@ mund edhe të aktivizoni <a href="#delold">“fshiji automatikisht nga shërbyes
</h3>
<p>No, Delta Chat doesnt support Perfect Forward Secrecy (PFS).
<p>No, not yet.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Note, however, that if anyone obtains to your decryption keys,
they will typically also be able to obtain your messages,
irrespective if Perfect Forward Secrecy is in place or not.
The typical real-world situation for leaked decryption keys is device seizure
which we discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>It is possible that Delta Chat evolves to support Perfect Forward Secrecy,
because OpenPGP is just a container for encrypted messages
but encryption key management (and thus key rotation or key “ratcheting”)
could be organized in flexible ways.
See <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Seqouias PFS prototype</a>
for existing experiments in the OpenPGP implementor community.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="is-end-to-end-encryption-of-delta-chat-as-safe-as-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Is end-to-end encryption of Delta Chat as safe as Signal? <a href="#is-end-to-end-encryption-of-delta-chat-as-safe-as-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>It depends on what is important to you.
Delta Chat <a href="#pfs">does not support PFS</a> like Signal does
but it provides <a href="#e2eeguarantee">guaranteed end-to-end encrypted chats</a>
that are safe against compromised servers or corrupted networks.
Signal and most other PFS-supporting messengers do not provide
a practical scheme for protecting chat groups from network attacks
which are arguably more worrysome
than a potential attacker who seizes your phone and private encryption setup
but somehow not your messages, yet has a full record of all
past encrypted messages.</p>
<p>Po</p>
<p>In any case, Delta Chats end-to-end encryption uses a <a href="#openpgp-secure">secure subset of OpenPGP</a>
which has been <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">independently security-audited</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -1160,42 +1074,14 @@ which has been <a href="https://delta.chat/assets/blog/2019-first-security-revie
</h3>
<p>Po
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>No.</p>
<p>Ndryshe, mund ta importoni kyçin dorazi te “Rregullime -&gt; Rregullime të mëtejshme -&gt; Importoni kyçe të fshehtë”.
Kujdes: Sigurohuni se kyçi s’është i mbrojtur me fjalëkalim, ose hiqeni fjalëkalimin që më parë.</p>
<p>Delta Chat generates secure OpenPGP keys according to the Autocrypt specification 1.1.
You can export your private key but you can not import additional private keys.</p>
<p>Nëse skeni kyç, ose as që e dinit se mund tju duhej një i tillë… mos u bëni merak: Delta Chat-i prodhon një të tillë, kur duhet dhe sju duhet të shtypni një buton për këtë.</p>
<h3 id="seksportoj-dot-kyçet-e-mi-ekzistues-pgp-në-delta-chat">
Seksportoj dot kyçet e mi ekzistues PGP në Delta Chat. <a href="#seksportoj-dot-kyçet-e-mi-ekzistues-pgp-në-delta-chat" class="anchor"></a>
</h3>
<p>Ka shumë mundësi që problemi të jetë se kyçi juaj është i fshehtëzuar dhe/ose
përdor një fjalëkalim. Kyçe të tillë nuk mbulohen nga Delta Chat. Ju lutemi,
hiqeni fshehtëzimin dhe fjalëkalimin dhe riprovoni importimin.</p>
<p>Another common error is having the wrong file ending.
Use the ASCII armored format and an <code class="language-plaintext highlighter-rouge">.asc</code> file ending.</p>
<p>Për sa u takon formateve, Delta Chat-i mbulon formate të rëndomtë OpenPGP
kyçesh private, megjithatë, ka pak gjasa që të mbulojmë 100% të krejt kyçeve
private të çfarëdo burimi. Kjo gjithashtu s’është fokusi kryesor i Delta Chat-it
(në fakt, shumica dërrmuese e përdoruesve të Delta Chat-it sdo të kenë ndonjë
kyç përpara se të zënë të përdorin Delta-n). Sidofoqtë, përpiqemi të mbulojmë
kyçe private prej burimesh të tjera sa më mirë që të mundet.</p>
<p>Heqja e fjalëkalimi nga kyçi privat do të jetë e ndryshme, varet nga software-i
që ju përdorni për administrim kyçesh PGP. Me Enigmail-in, mund ti jepni
fjalëkalimit tuaj një vlerë të zbrazët, që nga dritarja Administrim Kyçesh. Me
GnuPG-në mund ta bëni <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">përmes rreshti urdhrash</a>.
Për programe të tjera, mund të gjeni një zgjidhje në internet.</p>
<p>In general, we do not recommend or offer users to perform manual key management.
We want to ensure that security audits can focus on a few proven cryptographic algorithms
instead of the full breadth of possible algorithms allowed with OpenPGP.</p>
<h3 id="security-audits">
@@ -1205,10 +1091,25 @@ Për programe të tjera, mund të gjeni një zgjidhje në internet.</p>
</h3>
<p>The Delta Chat project underwent four independent security audits and one
independent security analysis, from most recent to older:</p>
<p>Yes, multiple times.
The Delta Chat project continuously undergoes independent security audits and analysis,
from most recent to older:</p>
<ul>
<li>
<p>2024 December, an <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">NLNET-commissioned Evaluation of
rPGP</a> by <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a> took place.
rPGP serves as the end-to-end encryption <a href="https://openpgp.org">OpenPGP</a> engine of Delta Chat.
Two advisories were released related to the findings of this audit:</p>
<ul>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Panics on Malformed Untrusted Input”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Potential Resource Exhaustion when handling Untrusted Messages”</a> CVE-2024-53857</li>
</ul>
<p>The issues outlined in these advisories have been fixed and are part of Delta Chat
releases on all appstores since December 2024.</p>
</li>
<li>
<p>2024 March, we received a deep security analysis from the Applied Cryptography
research group at ETH Zuerich and addressed all raised issues.
@@ -1273,7 +1174,7 @@ Mund të lexoni <a href="https://delta.chat/assets/blog/2019-first-security-revi
</h3>
<p>Po Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Po You can use the same profile on different devices:</p>
<ul>
<li>
@@ -1330,6 +1231,10 @@ që dihet se shkakton probleme (veçanërisht në Windows).
<li>
<p><strong>Guest Networks</strong> may not allow devices to communicate with each other.
If possible, use a non-guest network.</p>
</li>
<li>
<p>If you still have troubles using the same network,
try to open <strong>Mobile Hotspot</strong> on one device and join that Wi-Fi from the other one</p>
</li>
<li>
<p>Garantoni se ka <strong>depozitë të mjaftueshme</strong> te pajisja vendmbërritje</p>
@@ -1377,6 +1282,23 @@ help you.</li>
end-to-end encrypted messages with your communication partners.</li>
</ul>
<h3 id="is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices">
Is Deletion, Pinning, Archiving, Saving, Muting etc. synced to all devices? <a href="#is-deletion-pinning-archiving-saving-muting-etc-synced-to-all-devices" class="anchor"></a>
</h3>
<p>Po</p>
<p>If you e.g. delete a chat or a message from your phone,
it will be deleted on your desktop as soon as it comes online again.</p>
<p>Notable exceptions are <a href="#delold">Delete old messages from Device</a>,
as different devices may have different storage capacities,
and system specific settings as notification sounds.</p>
<h3 id="a-ka-ndonjë-plan-për-të-sjellë-një-klient-web-delta-chat">
@@ -1425,9 +1347,10 @@ copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open webxdc apps in chats where
you dont trust the members - as you know it from e-mail attachments, where
you only open attachments from senders you trust, and not from spammers.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="ku-mund-të-marr-aplikacione-webxdc">
@@ -1498,7 +1421,7 @@ will not get interrupted by a video chat invite.</li>
link in the settings.</li>
<li>For example, to use the flagship Jitsi Meet instance, you could enter
<code class="language-plaintext highlighter-rouge">https://meet.jit.si/$ROOM</code>. The <code class="language-plaintext highlighter-rouge">$ROOM</code> variable will be a random value;
this way, you will have a new random jitsi room every time you call someone.</li>
this way, you will have a new random Jitsi room every time you call someone.</li>
</ul>
<h3 id="çjanë-listat-e-transmetimeve-dhe-si-mund-ti-përdor">
@@ -1509,22 +1432,10 @@ this way, you will have a new random jitsi room every time you call someone.</li
</h3>
<ul>
<li>Me një Listë Transmetimi mund të dërgoni një mesazh te shumë marrës njëherësh;
kur ju përgjigjen, përgjigjen e merrni një fjalosjen tuaj të drejtpërdrejt tek për tek
Marrësit smund të shohin njëri-tjetrin.</li>
<li>Teknikisht, është një email me shumë marrës si BCC.</li>
<li>Veçorinë mund ta aktivizoni te ndarja “veçori eksperimentale”, te rregullimet
e mëtejshme. Mandej mund të krijoni një Listë Transmetimi që nga dialogu
“Fjalosje e Re”.</li>
<li>Në rast se përdorni më shumë se një pajisje, Listat e Transmetimit aktualisht nuk
njëkohësohen mes tyre.</li>
<li>Mesazhet e dërguar te lista transmetimi sjanë të fshehtëzuar. Fshehtëzimi
do të dëmtonte anonimitetin, ngaqë atëherë krejt marrësit do të dinin se cili tjetër
e mori mesazhin.
(Dërgimi i email-eve individualë për këdo do të ishte edhe më keq, për shkak
kufizimesh sasie email-esh që dërgohen dhe konsum trafiku në rrjet).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="si-mund-tu-tregoj-partnerëve-të-mi-në-fjalosje-vendndodhjen-time">
@@ -1581,6 +1492,11 @@ DeltaChat. Zakonisht kjo do të bëhej nga aplikacioni Delta Chat.</p>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Change your address in “Settings → Advanced → Password and Account” and
@@ -1683,19 +1599,19 @@ Sidoqoftë, disa furnizues shërbimesh kanë nevojë për mundësi speciale, që
të funksionojnë si duhet, shihni <a href="https://providers.delta.chat">Provider Overview</a></li>
</ul>
<h3 id="dua-të-administroj-shërbyesin-tim-email-për-delta-chat-çrekomandoni">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
Dua të administroj shërbyesin tim email për Delta Chat. Ç’rekomandoni? <a href="#dua-të-administroj-shërbyesin-tim-email-për-delta-chat-çrekomandoni" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Shumica e shërbyesve email do të funksionojnë mirë. Por çka
rekomandojmë personalisht është një ndërthurje e Mailcow-ut dhe Mailadm-it,
siç përshkruhet <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">në këtë postim blogu</a>.</li>
<li>Mund të gjeni një <a href="https://delta.chat/sq/serverguide">udhërrëfyes instalimi në sajtin tonë</a>.</li>
<li>Most mail servers will work well. But what we personally recommend is a
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="pse-më-duhet-të-jap-fjalëkalimin-e-email-it-tim-në-delta-chat-a-është-e-sigurt-kjo">
@@ -1712,7 +1628,7 @@ Sigurisht, fjalëkalimi depozitohet vetëm në pajisjen tuaj. Fjalëkalimi i tra
vetëm furnizuesit të email-it tuaj (kur bëni hyrjen), i cili mund të hyjë te email-et
tuaj, sido qoftë.</p>
<p>Ngaqë Delta Chat-i është Me Burim të Hapur, mund të kontrolloni <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">Kodin
<p>Ngaqë Delta Chat-i është Me Burim të Hapur, mund të kontrolloni <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">Kodin
Burim</a>,
nëse doni të verifikoni se a trajtohen me siguri kredencialet tuaja. Na gëzojnë
përshtypjet që e bëjn aplikacionin më të sigurt për krejt përdoruesit tanë.</p>
@@ -1840,16 +1756,16 @@ shumë pajisje mund të mos punojë si duhet.</p>
</h3>
<ul>
<li>Yes and No.</li>
<li>No, you can not use your Protonmail, Tutanota, or Criptext account with Delta
Chat; they do not offer receiving mails via IMAP.</li>
<li>In any case you can use Delta Chat to send Messages to people who use
Protonmail, Tutanota, or Criptext. Those messages will not be end-to-end
encrypted, though. The end-to-end encryption those providers offer is not
compatible with <a href="https://autocrypt.org/">Autocrypt</a>, the standard Delta Chat
uses.</li>
<li>Delta Chat can end-to-end-encrypt through any e-mail provider with any
<a href="https://autocrypt.org/dev-status.html">Autocrypt-enabled e-mail app</a>.</li>
<li>Po dhe Jo.</li>
<li>Jo, me Delta Chat-in smund të përdorni llogarinë tuaj Protonmail, Tutanota,
ose Criptext; ato nuk ofrojnë marrje email-esh përmes IMAP-it.</li>
<li>Sidoqoftë, mund të përdorni Delta Chat-in të dërgoni Mesazhe për persona që
përdorin Protonmail, Tutanota, ose Criptext. Këto mesazhe ama sdo të jenë
të fshehtëzuara Skaj-më-Skaj. Fshehtëzimi Skaj-më-Skaj që japin këto shërbime
s’është i përputhshëm me <a href="https://autocrypt.org/">Autocrypt-in</a>, standardin që
përdor Delta Chat-i.</li>
<li>Delta Chat-i mund të kryejë fshehtëzim skaj-më-skaj përmes cilitdo shërbim
email-i me çfarëdo <a href="https://autocrypt.org/dev-status.html">aplikacioni email që punon me Autocrypt</a>.</li>
</ul>
<h3 id="remove-account">
@@ -1894,7 +1810,7 @@ Otherwise you might receive undecryptable messages from those group chats.</p>
</h3>
<ul>
<li>Shihni <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Standarde të përdorur në Delta Chat</a>.</li>
<li>Shihni <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Standarde të përdorur në Delta Chat</a>.</li>
</ul>
<h3 id="where-can-my-friends-find-delta-chat">
@@ -2025,4 +1941,4 @@ Frajburg (Gjermani) dhe u shpërndahet më tepër se një duzine kontribuesish n
</body></html>
</body></html>
+273 -216
View File
@@ -1,5 +1,5 @@
<!DOCTYPE html>
<html><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<html lang="uk"><head><meta charset="UTF-8" /><meta name="viewport" content="initial-scale=1.0" /><link rel="stylesheet" href="../help.css" /></head><body><ul id="top">
<li><a href="#що-таке-delta-chat">Що таке Delta Chat?</a>
<ul>
<li><a href="#як-мені-знайти-людей-для-спілкування">Як мені знайти людей для спілкування?</a></li>
@@ -10,7 +10,9 @@
<li><a href="#хто-бачить-моє-зображення-профілю">Хто бачить моє зображення профілю?</a></li>
<li><a href="#signature">Чи можу я встановити текст підпису/статусу/девізу у Delta Chat?</a></li>
<li><a href="#що-значить-закріплення-приглушення-архівування">Що значить Закріплення, Приглушення, Архівування?</a></li>
<li><a href="#save">Як працюють “Збережені повідомлення”?</a></li>
<li><a href="#що-означає-зелена-точка">Що означає зелена точка?</a></li>
<li><a href="#edit">Виправлення помилок та видалення повідомлень після надсилання</a></li>
<li><a href="#ephemeralmsgs">Як працюють повідомлення, що зникають?</a></li>
</ul>
</li>
@@ -34,29 +36,24 @@
<li><a href="#чому-delta-chat-інтегрується-з-централізованими-пропрієтарними-push-сервісами-applegoogle">Чому Delta Chat інтегрується з централізованими пропрієтарними push-сервісами Apple/Google?</a></li>
</ul>
</li>
<li><a href="#шифрування-та-безпека">Шифрування та безпека</a>
<li><a href="#e2ee">Шифрування та безпека</a>
<ul>
<li><a href="#які-стандарти-використовуються-для-наскрізного-шифрування">Які стандарти використовуються для наскрізного шифрування?</a></li>
<li><a href="#whene2e">Як дізнатися, чи повідомлення зашифровано наскрізним шифруванням?</a></li>
<li><a href="#howtoe2ee">Як отримати гарантоване наскрізне шифрування та зелені галочки?</a></li>
<li><a href="#e2eeguarantee">Що означає зелена галочка і “гарантоване наскрізне шифрування”?</a></li>
<li><a href="#nocryptanymore">Контакт “надіслав повідомлення з іншого пристрою”, що робити?</a></li>
<li><a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption">Can i still receive or send mails without end-to-end encryption?</a></li>
<li><a href="#howtoe2ee">How can I establish a chat with a new contact?</a></li>
<li><a href="#e2eeguarantee">What does the green checkmark in a contact profile mean?</a></li>
<li><a href="#чи-зашифровані-наскрізно-вкладення-зображення-файли-аудіо-тощо">Чи зашифровані наскрізно вкладення (зображення, файли, аудіо тощо)?</a></li>
<li><a href="#openpgp-secure">Чи безпечний OpenPGP?</a></li>
<li><a href="#openpgp-alternatives">Чи розглядали ви можливість використання альтернатив OpenPGP для наскрізного шифрування?</a></li>
<li><a href="#openpgp-alternatives">Did you consider using alternatives to OpenPGP for end-to-end-encryption?</a></li>
<li><a href="#чи-вразливий-delta-chat-до-efail">Чи вразливий Delta Chat до EFAIL?</a></li>
<li><a href="#tls">Чи буде показано повідомлення відкритим текстом, якщо наскрізне шифрування недоступне?</a></li>
<li><a href="#tls">Are messages marked with the mail icon exposed on the Internet?</a></li>
<li><a href="#message-metadata">Як Delta Chat захищає метадані у повідомленнях?</a></li>
<li><a href="#device-seizure">Як захистити метадані та контакти якщо пристрій вилучено?</a></li>
<li><a href="#як-перевірити-інформацію-про-шифрування">Як перевірити інформацію про шифрування?</a></li>
<li><a href="#як-перевірити-стан-шифрування-повідомлень">Як перевірити стан шифрування повідомлень?</a></li>
<li><a href="#чому-я-бачу-незашифровані-повідомлення">Чому я бачу незашифровані повідомлення?</a></li>
<li><a href="#як-я-можу-отримати-наскрізно-зашифрований-чат-з-контактом-delta-chat-який-іноді-користується-веб-поштою-або-іншим-додатком-електронної-пошти-що-не-підтримує-autocrypt">Як я можу отримати наскрізно зашифрований чат з контактом Delta Chat, який іноді користується веб-поштою або іншим додатком електронної пошти, що не підтримує Autocrypt?</a></li>
<li><a href="#як-забезпечити-наскрізне-шифрування-та-видалення-повідомлень">Як забезпечити наскрізне шифрування та видалення повідомлень?</a></li>
<li><a href="#pfs">Чи підтримує Delta Chat цілковиту пряму секретність (Perfect Forward Secrecy)?</a></li>
<li><a href="#чи-є-наскрізне-шифрування-delta-chat-таким-же-безпечним-як-signal">Чи є наскрізне шифрування Delta Chat таким же безпечним, як Signal?</a></li>
<li><a href="#will-delta-chat-support-forward-secrecy">Will Delta Chat support Forward Secrecy?</a></li>
<li><a href="#importkey">Чи можна повторно використовувати існуючий закритий ключ?</a></li>
<li><a href="#я-не-можу-імпортувати-свій-існуючий-pgp-ключ-у-delta-chat">Я не можу імпортувати свій існуючий PGP ключ у Delta Chat.</a></li>
<li><a href="#security-audits">Чи проходив Delta Chat незалежний аудит на наявність вразливостей у безпеці?</a></li>
</ul>
</li>
@@ -65,6 +62,7 @@
<li><a href="#чи-можна-використовувати-delta-chat-на-декількох-пристроях-одночасно">Чи можна використовувати Delta Chat на декількох пристроях одночасно?</a></li>
<li><a href="#вирішення-проблем">Вирішення проблем</a></li>
<li><a href="#backup">Ручне перенесення</a></li>
<li><a href="#чи-синхронізовані-видалення-закріплення-архівування-збереження-вимкнення-сповіщень-тощо-з-усіма-пристроями">Чи синхронізовані видалення, закріплення, архівування, збереження, вимкнення сповіщень тощо з усіма пристроями?</a></li>
<li><a href="#чи-планується-впровадження-веб-клієнта-delta-chat">Чи планується впровадження веб-клієнта Delta Chat?</a></li>
</ul>
</li>
@@ -81,14 +79,14 @@
<li><a href="#що-таке-списки-широкомовлення-та-як-ними-користуватися">Що таке списки широкомовлення та як ними користуватися?</a></li>
<li><a href="#як-я-можу-поділитися-своїм-місцезнаходженням-зі-своїми-співрозмовниками-в-чаті">Як я можу поділитися своїм місцезнаходженням зі своїми співрозмовниками в чаті?</a></li>
<li><a href="#чому-я-можу-вибрати-лише-стеження-за-папкою-deltachat">Чому я можу вибрати лише стеження за папкою DeltaChat?</a></li>
<li><a href="#як-я-можу-змінити-мій-обліковий-запис-на-іншу-адресу-електронної-пошти">Як я можу змінити мій обліковий запис на іншу адресу електронної пошти?</a></li>
<li><a href="#як-я-можу-використовувати-іншу-адресу-електронної-пошти-у-своєму-профілі">Як я можу використовувати іншу адресу електронної пошти у своєму профілі?</a></li>
</ul>
</li>
<li><a href="#інше">Інше</a>
<ul>
<li><a href="#яких-дозволів-потребує-delta-chat">Яких дозволів потребує Delta Chat?</a></li>
<li><a href="#чи-підтримує-delta-chat-роботу-з-моїм-провайдером-електронної-пошти">Чи підтримує Delta Chat роботу з <em>моїм</em> провайдером електронної пошти?</a></li>
<li><a href="#я-хочу-керувати-власним-сервером-електронної-пошти-для-delta-chat-що-ви-порадите">Я хочу керувати власним сервером електронної пошти для Delta Chat. Що ви порадите?</a></li>
<li><a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">I want to manage my own server for Delta Chat. What do you recommend?</a></li>
<li><a href="#чому-я-маю-вводити-пароль-до-моєї-електронної-пошти-у-delta-chat-чи-це-безпечно">Чому я маю вводити пароль до моєї електронної пошти у Delta Chat? Чи це безпечно?</a></li>
<li><a href="#які-повідомлення-відображаються-у-delta-chat">Які повідомлення відображаються у Delta Chat?</a></li>
<li><a href="#чи-підтримує-delta-chat-html-листи">Чи підтримує Delta Chat HTML-листи?</a></li>
@@ -96,7 +94,7 @@
<li><a href="#для-чого-потрібне-налаштування-відправити-копію-собі">Для чого потрібне налаштування “Відправити копію собі”?</a></li>
<li><a href="#чому-я-можу-обрати-стеження-за--папкою-надіслані">Чому я можу обрати стеження за папкою “Надіслані”?</a></li>
<li><a href="#чому-я-можу-відмовитись-від-стеження-за--папкою-deltachat">Чому я можу відмовитись від стеження за папкою DeltaChat?</a></li>
<li><a href="#чи-сумісний-delta-chat-із-protonmail--tutanota--criptext">Чи сумісний Delta Chat із Protonmail / Tutanota / Criptext?</a></li>
<li><a href="#чи-сумісний-delta-chat-із-proton-mail--tutanota--criptext">Чи сумісний Delta Chat із Proton Mail / Tutanota / Criptext?</a></li>
<li><a href="#remove-account">Як мені видалити свій обліковий запис?</a></li>
<li><a href="#мене-цікавлять-технічні-деталі-можете-розповісти-більше">Мене цікавлять технічні деталі. Можете розповісти більше?</a></li>
<li><a href="#де-мої-друзі-можуть-знайти-delta-chat">Де мої друзі можуть знайти Delta Chat?</a></li>
@@ -117,7 +115,7 @@
<p>Delta Chat - це надійний, децентралізований та безпечний додаток для обміну повідомленнями, доступний для мобільних і десктопних платформ.</p>
<p>Delta Chat схожий на Whatsapp або Telegram, але ви також можете використовувати його як додаток електронної пошти. Ви можете анонімно зареєструватися на різних <a href="https://delta.chat/chatmail">сумісних chatmail-серверах</a> які є мінімальними поштовими серверами, оптимізованими для швидкої та безпечної роботи. Або ви можете використовувати класичні поштові сервери та існуючий обліковий запис електронної пошти в цьому випадку Delta Chat буде працювати як поштовий додаток.</p>
<p>Delta Chat схожий на Whatsapp або Telegram, але ви також можете використовувати його як додаток електронної пошти. Ви можете анонімно зареєструватися на різних <a href="https://delta.chat/chatmail">сумісних chatmail-серверах</a> які є мінімальними поштовими серверами, оптимізованими для швидкої та безпечної роботи. Або ви можете використовувати класичні поштові сервери та існуючий профіль електронної пошти в цьому випадку Delta Chat буде працювати як поштовий додаток.</p>
<p><img style="float:right; width:50%; max-width:360%; margin:1em;" src="../delta-what-optim.png" /></p>
@@ -155,7 +153,7 @@
<p><a href="#security-audits">Аудитоване наскрізне шифрування</a> захищене від мережевих та серверних атак.</p>
</li>
<li>
<p>Вільне програмне забезпечення з відкритим вихідним кодом, як для додатків, так і для сервера. Побудовано на основі <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md">Стандартів електронної пошти та інтернету</a>, <a href="https://xkcd.com/927/">щоб уникнути “синдрому ще одного стандарту (xkcd 927)”</a></p>
<p>Вільне програмне забезпечення з відкритим вихідним кодом, як для додатків, так і для сервера. Побудовано на основі <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Стандартів електронної пошти та інтернету</a>, <a href="https://xkcd.com/927/">щоб уникнути “синдрому ще одного стандарту (xkcd 927)”</a></p>
</li>
</ul>
@@ -167,10 +165,18 @@
</h3>
<p>Якщо повідомлення приходить від невідомого контакту, воно відображається як <strong>запит</strong>.</p>
<ul>
<li>Якщо повідомлення приходить від невідомого контакту, воно відображається як <strong>запит</strong>. ви потрібно прийняти запит, перш ніж ви зможете відповісти.</li>
<li>Ви також можете “видалити” його, якщо ви не хочете зараз спілкуватися з ними. Це <em>не</em> видаляє повідомлення на сервері, лише на вашому пристрої. Отже, ви можете як і раніше обробляти повідомлення в іншій поштовій програмі.</li>
<li>Якщо ви видалите запит, майбутні повідомлення від цього контакту все одно відображатимуться як запит на повідомлення, щоб ви могли змінити свою думку. Якщо дуже не хочеться отримувати повідомлення від цієї особи, подумайте про її <em>блокування</em>.</li>
<li>
<p>ви потрібно прийняти запит, перш ніж ви зможете відповісти.</p>
</li>
<li>
<p>Ви також можете “видалити” його, якщо ви не хочете зараз спілкуватися з ними.</p>
</li>
<li>
<p>Якщо ви видалите запит, майбутні повідомлення від цього контакту все одно відображатимуться як запит на повідомлення, щоб ви могли змінити свою думку. Якщо дуже не хочеться отримувати повідомлення від цієї особи, подумайте про її <em>блокування</em>.</p>
</li>
</ul>
<h3 id="чи-підтримує-delta-chat-вкладення-у-вигляді-фото-відео-тощо">
@@ -270,6 +276,36 @@
<p>Щоб скористатися функціями, утримуйте натиснутою клавішу або клацніть правою кнопкою миші на чаті у списку чатів.</p>
<h3 id="save">
Як працюють “Збережені повідомлення”? <a href="#save" class="anchor"></a>
</h3>
<p><strong>Збережені повідомлення</strong> - це чат, за допомогою якого ви можете легко запам’ятовувати та знаходити повідомлення.</p>
<ul>
<li>
<p>У будь-якому чаті натисніть і утримуйте повідомлення або клацніть правою кнопкою миші та виберіть <strong>Зберегти</strong>.</p>
</li>
<li>
<p>Збережені повідомлення позначені символом <img style="vertical-align:middle; width:1.2em; margin:1px" src="../saved-icon.png" alt="Saved icon" /> поруч з міткою часу</p>
</li>
<li>
<p>Пізніше відкрийте чат “Збережені повідомлення” - і ви побачите там збережені повідомлення. Натиснувши <img style="vertical-align:middle; width:1.2em; margin:1px" src="../go-to-original.png" alt="Arrow-right icon" />, ви можете повернутися до початкового повідомлення в оригінальному чаті</p>
</li>
<li>
<p>Нарешті, ви також можете використовувати “Зберегти повідомлення”, щоб робити <strong>особисті нотатки</strong> - відкрити чат, набрати щось, додати фотографію або голосове повідомлення тощо.</p>
</li>
<li>
<p>Оскільки “Збережені повідомлення” синхронізуються, вони можуть стати дуже зручними для передачі даних між пристроями</p>
</li>
</ul>
<p>Повідомлення залишаються збереженими, навіть якщо вони були відредаговані або видалені - чи то через <a href="#edit">відправника</a>, чи то через <a href="#delold">очищення пристрою</a>, чи то через <a href="#ephemeralmsgs">зникнення повідомлень інших чатів</a>.</p>
<h3 id="що-означає-зелена-точка">
@@ -278,16 +314,40 @@
</h3>
<p>Іноді ви можете бачити <strong>зелену крапку</strong> <img style="vertical-align:middle; width:1.2em; margin:1px" src="../green-dot.png" alt="" /> поруч з аватаркою контакту. Це означає, що його <strong>недавно бачили</strong> протягом останніх 10 хвилин:</p>
<ul>
<li>Починаючи з Delta Chat 1.34, ви іноді можете бачити “зелену крапку” поруч із аватаром контакту. Це означає, що контакт «нещодавно бачили».</li>
<li>Детально: це означає, що за останні 10 хвилин Delta Chat бачив їх:</li>
<li>або тому, що вони надіслали вам повідомлення безпосередньо,</li>
<li>тому що вони написали щось групі, учасником якої є ви обоє,</li>
<li>тому що вони надіслали вам сповіщення про прочитання повідомлення, яке ви написали,</li>
<li>або тому, що вони надіслали дані до вашої програми Delta Chat за допомогою a <a href="#webxdc">приватна програма</a>.
– Отже, це не онлайн-статус у реальному часі – і якщо хтось не відповідає відразу, навіть якщо вони, здаються, онлайн, не хвилюйтесь і дайте їм трохи простору ;-)
– З іншого боку, інші не завжди «побачать, що ви онлайн». Якщо ви вимкнули сповіщення про прочитання, вони не побачать зелену крапку, доки ви не надішлете їм повідомлення або напишете у групу, до якої вони входять.</li>
<li>або тому, що вони написали вам безпосередньо,</li>
<li>тому що вони написали щось у групі, в якій ви обидва є учасниками,</li>
<li>тому що вони надіслали вам квитанцію про прочитання повідомлення, яке ви написали,</li>
<li>тому що вони відредагували або видалили повідомлення у спільному з вами чаті,</li>
<li>або тому, що вони використовують <a href="#webxdc">app</a> у спільному з вами чаті.</li>
</ul>
<p>Отже, це не онлайн статус в реальному часі - і якщо хтось не відповідає одразу, хоча здається, що вони онлайн, не хвилюйтеся і дайте їм трохи часу :)</p>
<p>З іншого боку, інші не завжди “бачать, що ви онлайн”. Якщо ви вимкнули звіти про прочитання, вони не побачать зелену крапку доки не буде виконано одну з вищезазначених умов.</p>
<h3 id="edit">
Виправлення помилок та видалення повідомлень після надсилання <a href="#edit" class="anchor"></a>
</h3>
<ul>
<li>
<p>Ви можете редагувати текст ваших повідомлень після відправлення. Для цього натисніть на повідомлення довгим натисканням або правою кнопкою миші і виберіть <strong>Редагувати</strong> або <img style="vertical-align:middle; width:1.2em; margin:1px" src="../edit-icon.png" alt="Edit icon" />.</p>
</li>
<li>
<p>Якщо ви випадково надіслали повідомлення, в тому ж меню виберіть <strong>Видалити</strong>, а потім <strong>Видалити для всіх</strong>.</p>
</li>
</ul>
<p>Відредаговані повідомлення матимуть позначку “Відредаговано” поруч з міткою часу, видалені повідомлення будуть видалені без позначки в чаті. Сповіщення не надсилаються і відсутнє часове обмеження.</p>
<p>Зауважте, що початкове повідомлення все ще може бути отримане учасниками чату які могли вже відповісти, переслати, зберегти, зробити знімок екрану або іншим чином скопіювати повідомлення.</p>
<h3 id="ephemeralmsgs">
@@ -400,7 +460,7 @@
<p>Щоб увімкнути його, перейдіть до <strong>Видалити старі повідомлення → Видалити повідомлення з сервера</strong> в налаштуваннях «Чати та медіа». Ви можете встановити часові рамки між «Одразу» та «Через 1 рік». Усі електронні листи, отримані Delta Chat, будуть видалені з сервера після закінчення цього терміну.</p>
</li>
<li>
<p>Зауважте, що якщо ви використовуєте Delta Chat на кількох пристроях, вам слід залишити повідомлення на сервері, доки інший пристрій не зможе завантажити їх. У цьому випадку вам слід встановити для автоматичного видалення значення «через день» або щось подібне, залежно від того, як часто ви вмикаєте інший пристрій.</p>
<p>Зверніть увагу, що якщо ви використовуєте Delta Chat на декількох пристроях, вам потрібно залишити повідомлення на сервері з достатнім проміжком часу щоб інші пристрої також могли їх завантажити.</p>
</li>
</ul>
@@ -498,23 +558,23 @@ Push-сповіщення автоматично активуються для
<ul>
<li>
<p>Додаток Delta Chat отримує “токен пристрою” локально і зберігає його на сервері <a href="https://delta.chat/chatmail">chatmail</a>.</p>
<p>Додаток Delta Chat отримує “токен пристрою” локально, шифрує його і зберігає на сервері <a href="https://delta.chat/chatmail">chatmail</a>.</p>
</li>
<li>
<p>Коли <a href="https://delta.chat/chatmail">chatmail</a>-сервер отримує електронний лист від користувача Delta Chat він пересилає токен пристрою до центрального проксі-сповіщення Delta Chat.</p>
<p>Коли сервер <a href="https://delta.chat/chatmail">chatmail</a> отримує електронний лист від користувача Delta Chat він пересилає зашифрований токен пристрою до центрального проксі-сервера сповіщень Delta Chat.</p>
</li>
<li>
<p>Центральний проксі-сервер сповіщень Delta Chat пересилає токен пристрою до відповідного Push-сервісу (Apple, Google тощо), навіть не знаючи IP-адреси чи електронної пошти користувачів Delta Chat.</p>
<p>Центральний проксі-сервер сповіщень Delta Chat розшифровує токен пристрою і пересилає його до відповідного Push-сервісу (Apple, Google тощо), навіть не знаючи IP-адреси або електронної пошти користувачів Delta Chat.</p>
</li>
<li>
<p>Центральний Push-сервіс (Apple, Google тощо) запускає додаток Delta Chat на вашому пристрої щоб перевірити наявність нових повідомлень у фоновому режимі. Він не знає про пошту чату або адресу електронної пошти пристрою, який він пробуджує. Центральні служби Apple/Google Push ніколи не бачать адресу електронної пошти (відправника або одержувача) а також ніколи не бачать жодного вмісту повідомлення (навіть в зашифрованому вигляді).</p>
</li>
</ul>
<p>Станом на травень 2024 року chatmail-сервери знають про “токени пристроїв” але ми плануємо зашифрувати цю інформацію для проксі-сповіщень таким чином, щоб сервер чату ніколи не дізнався токен пристрою.</p>
<p>Центральний проксі для сповіщень Delta Chat <a href="https://github.com/deltachat/notifiers">невеликий і повністю реалізований на Rust</a> забуває про токени пристроїв, як тільки Apple/Google/etc обробили їх, зазвичай за лічені мілісекунди.</p>
<p>Зверніть увагу, що токен пристрою шифрується між програмами та проксі-сповіщеннями але не підписується. Таким чином, проксі-служба сповіщень ніколи не бачить адреси електронної пошти, IP-адреси або будь-яку криптографічну ідентифікаційну інформацію, пов’язану з пристроєм користувача (токеном).</p>
<p>В результаті цього загального дизайну конфіденційності, навіть захоплення chatmail-сервера, або повне вилучення центрального проксі-сервера повідомлень Delta Chat не призведе до розкриття приватної інформації, якої ще не мають Push-сервіси.</p>
<h3 id="чому-delta-chat-інтегрується-з-централізованими-пропрієтарними-push-сервісами-applegoogle">
@@ -525,14 +585,14 @@ Push-сповіщення автоматично активуються для
</h3>
<p>Delta Chat - це безкоштовний децентралізований месенджер з відкритим вихідним кодом і вільним вибором сервера, але ми хочемо, щоб користувачі отримували надійну “миттєву доставку” повідомлень, як у додатках Whatsapp, Signal або Telegram, без попередніх запитань, які більше підходять для досвідчених користувачів або розробників.</p>
<p>Delta Chat - це безкоштовний децентралізований месенджер з відкритим вихідним кодом і вільним вибором сервера, але ми хочемо, щоб користувачі отримували надійну “миттєву доставку” повідомлень, як у додатках WhatsApp, Signal або Telegram, без попередніх запитань, які більше підходять для досвідчених користувачів або розробників.</p>
<p>Зверніть увагу, що Delta Chat має <a href="#privacy-notifications">невелику систему push-повідомлень, що зберігає конфіденційність</a> яка забезпечує “миттєву доставку” повідомлень на всі chatmail-сервери включаючи потенційний <a href="https://delta.chat/chatmail#selfhosted">який ви можете налаштувати самостійно без нашого дозволу</a>. Ласкаво просимо до потужності сумісної та масової системи чат-пошти та електронної пошти :)</p>
<h2 id="шифрування-та-безпека">
<h2 id="e2ee">
Шифрування та безпека <a href="#шифрування-та-безпека" class="anchor"></a>
Шифрування та безпека <a href="#e2ee" class="anchor"></a>
</h2>
@@ -545,10 +605,26 @@ Push-сповіщення автоматично активуються для
</h3>
<p><a href="https://autocrypt.org">Autocrypt</a> використовується для автоматичного встановлення наскрізного шифрування з контактами та груповими чатами.
Autocrypt використовує обмежену і <a href="#openpgp-secure">безпечну підмножину стандарту OpenPGP</a>. Зашифровані наскрізним шифруванням повідомлення позначаються замком <img style="vertical-align:middle; width:1.2em; margin:1px" src="../lock-icon.png" alt="padlock" />.</p>
<p>Delta Chat uses a <a href="#openpgp-secure">secure subset of the OpenPGP standard</a>
to provide automatic end-to-end encryption using these protocols:</p>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Протоколи Secure-Join</a> використовуються для створення чатів з гарантованим наскрізним шифруванням що захищає від мережевих атак і скомпрометованих серверів. Чати, відмічені зеленою галочкою <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> гарантують наскрізне шифрування повідомлень.</p>
<ul>
<li>
<p><a href="https://securejoin.delta.chat/en/latest/new.html">Secure-Join</a>
to exchange encryption setup information through QR-code scanning or “invite links”.</p>
</li>
<li>
<p><a href="https://autocrypt.org">Autocrypt</a> is used for automatically
establishing end-to-end encryption between contacts and all members of a group chat.</p>
</li>
<li>
<p><a href="https://github.com/chatmail/core/blob/main/spec.md#attaching-a-contact-to-a-message">Sharing a contact to a
chat</a>
enables receivers to use end-to-end encryption with the contact.</p>
</li>
</ul>
<p>Delta Chat does not query, publish or interact with any OpenPGP key servers.</p>
<h3 id="whene2e">
@@ -558,102 +634,94 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
</h3>
<p>Всі наскрізні зашифровані повідомлення мають навісний замок:</p>
<p><img style="width:160px; margin:1px" src="../lock-screenshot.png" alt="padlock in bubble" /></p>
<p>Наскрізне шифрування гарантується, якщо поруч із заголовком чату стоїть зелена галочка:</p>
<p><img style="width:211px; margin:1px" src="../green-checkmark-screenshot.png" alt="green checkmark in title" /></p>
<p>All messages in Delta Chat are <strong>end-to-end encrypted by default</strong>.
Since the Delta Chat Version 2 release series (July 2025)
there are no lock or similar markers on end-to-end encrypted messages, anymore.</p>
<h3 id="howtoe2ee">
<h3 id="can-i-still-receive-or-send-mails-without-end-to-end-encryption">
Як отримати гарантоване наскрізне шифрування та зелені галочки? <a href="#howtoe2ee" class="anchor"></a>
Can i still receive or send mails without end-to-end encryption? <a href="#can-i-still-receive-or-send-mails-without-end-to-end-encryption" class="anchor"></a>
</h3>
<p>Якщо у вас є другий канал зв’язку з вашим партнером по чату, наприклад, відеочат або інший месенджер, ви можете згенерувати посилання-запрошення.</p>
<p>If you use default <a href="https://chatmail.at/relays">chatmail relays</a>,
it is impossible to receive or send messages without end-to-end encryption.</p>
<p>Якщо ви разом особисто, ви можете показати QR-код своєму співрозмовнику.</p>
<p>If you instead create a profile using a classic e-mail server,
you can send and receive messages without end-to-end encryption.
Such messages lacking end-to-end encryption are marked with an e-mail icon
<img style="vertical-align:middle; width:1.2em; margin:1px" src="../email-icon.png" alt="email" />.</p>
<h3 id="howtoe2ee">
How can I establish a chat with a new contact? <a href="#howtoe2ee" class="anchor"></a>
</h3>
<p>You can send an invite link through another private chat,
show an invitation QR code when next to each other or in a video call,
or click on a “contact” that was shared in a chat.</p>
<ul>
<li>
<p>Для <strong>Запрошення до групи</strong>, торкніться назви групи чату, щоб побачити список її учасників, і виберіть “QR-код запрошення”.</p>
</li>
<li>
<p>Для <strong>прямих запрошень у чат 1:1</strong>, торкніться іконки QR-коду <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" /> на головному екрані програми Delta Chat.</p>
<p>For <strong>direct 1:1 chat invitations</strong>,
tap the QR Code icon <img style="vertical-align:middle; width:1.8em; margin:1px" src="../qr-icon.png" />
on the Delta Chat app main screen.</p>
</li>
</ul>
<p>Дозвольте вашому партнеру по чату відсканувати QR-зображення
у своєму додатку Delta Chat, або натисніть “Копіювати” чи “Поділитися”, щоб створити посилання-запрошення і поділитися ним з вашим співрозмовником.</p>
<p>Ask your chat partner to scan the QR image
with their Delta Chat app,
or click “Copy” or “Share” to create an invite link
and share it with your chat partner.</p>
<p>Тепер зачекайте, поки між обома пристроями <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">відбудеться обмін мережевими повідомленнями Secure-Join</a>.</p>
<p>Now wait while <a href="https://securejoin.delta.chat/en/latest/new.html#setup-contact-protocol">end-to-end encryption is getting established</a>.</p>
<ul>
<li>
<p>Якщо обидва пристрої онлайн, обидві сторони зрештою побачать (груповий або прямий) чат із зеленою галочкою <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> поруч із заголовком.</p>
<p>If both sides are online, they will soon see a (group or direct) chat
and can start messaging securely.</p>
</li>
<li>
<p>Якщо один з пристроїв не в мережі, зелені галочки з’являться пізніше, коли пристрій знову буде підключено до Інтернету а мережевий протокол Secure-Join буде завершено.</p>
<p>If one side is offline or in bad network,
the ability to chat is delayed until connectivity is restored.</p>
</li>
</ul>
<p>Вітаємо! Тепер ви автоматично використовуватимете гарантоване наскрізне шифрування з цим контактом, і ви обидва можете додавати один одного в групи, позначені зеленою галочкою <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />, таким чином автоматично поширюючи гарантоване наскрізне шифрування серед її членів.</p>
<p>Congratulations!
You now will automatically use end-to-end encryption
with this contact.
If you add each other to chat groups,
end-to-end encryption will be established among all members.</p>
<h3 id="e2eeguarantee">
Що означає зелена галочка і “гарантоване наскрізне шифрування”? <a href="#e2eeguarantee" class="anchor"></a>
What does the green checkmark in a contact profile mean? <a href="#e2eeguarantee" class="anchor"></a>
</h3>
<p>Назви чатів із зеленими галочками <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> означають, що всі повідомлення в чаті будуть наскрізно зашифровані і не можуть бути прочитані або змінені скомпрометованими поштовими серверами або інтернет-провайдерами.
Приєднання до групових чатів із зеленими галочками безпечно поширює інформацію про шифрування (і зелені галочки) всіх учасників таким чином, що гарантує наскрізне шифрування в групі та між її учасниками.</p>
<p>Профілі контактів із зеленими галочками <img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" /> означають, що повідомлення контакту наразі гарантовано зашифровані наскрізним шифруванням. Кожен контакт із зеленою галочкою або зробив пряме <a href="#howtoe2ee">QR-сканування</a> з вами або був представлений іншим контактом, позначеним зеленою галочкою. Знайомство відбувається автоматично під час додавання учасників до груп. Той, хто додає контакт до групи, позначеної зеленою галочкою, стає представником для тих учасників, які ще не знали про доданий контакт. У профілі контакту ви можете кілька разів натиснути на текст “Представлений …” поки не потрапите до того, з ким ви безпосередньо зробили <a href="#howtoe2ee">QR-сканування</a>.</p>
<p>Зверніть увагу, що в профілі контакту ви можете бачити і натискати рекомендувачів але в заголовку профілю немає зеленої галочки. Зазвичай це означає, що контакт <a href="#nocryptanymore">“надіслав повідомлення з іншого пристрою”</a>.</p>
<p>A contact profile might show a green checkmark
<img style="vertical-align:middle; width:1.5em; margin:1px" src="../green-checkmark.png" alt="green checkmark" />
and an “Introduced by” line.
Every green-checkmarked contact either did a direct <a href="#howtoe2ee">QR-scan</a> with you
or was introduced by a another green-checkmarked contact.
Introductions happen automatically when adding members to groups.
Whoever adds a green-checkmarked contact to a group with only green-checkmarked members
becomes an introducer.
In a contact profile you can tap on the “Introduced by …” text repeatedly
until you get to the one with whom you directly did a <a href="#howtoe2ee">QR-scan</a>.</p>
<p>Для більш детального обговорення “гарантованого наскрізного шифрування” будь ласка, перегляньте <a href="https://securejoin.delta.chat/en/latest/new.html">Протоколи безпечного приєднання</a> і, зокрема, прочитайте про “Перевірені групи”, технічний термін того, що тут називається чатами з “зеленою галочкою” або “гарантованим наскрізним шифруванням”.</p>
<h3 id="nocryptanymore">
Контакт “надіслав повідомлення з іншого пристрою”, що робити? <a href="#nocryptanymore" class="anchor"></a>
</h3>
<p>Ваш чат з контактом втратив гарантоване наскрізне шифрування. Зелену галочку було знято для цього чату та контакту, коли ви побачили це попередження. **Якщо ви вважаєте раптове зникнення гарантованого наскрізного шифрування несподіваним для цього контакту, не приймайте попередження! Замість цього зв’яжіться з контактом через другий канал наприклад, відеодзвінок, інший месенджер або телефонний дзвінок, щоб з’ясувати, що сталося.</p>
<p>Якщо ваш контакт дійсно спричинив втрату гарантованого наскрізного шифрування будь ласка, зверніться до наступних параграфів, щоб дізнатися про типові причини та способи їх усунення. Незважаючи на це, всі інші чати, позначені зеленою галочкою, залишаються гарантовано зашифрованими з кінця в кінець навіть якщо контакт є їхнім учасником.</p>
<p><strong>Ваш контакт використовує Delta Chat на другому пристрої (телефоні або ноутбуці)</strong>.</p>
<p>Якщо у них є інший пристрій із запущеним додатком Delta Chat, вони повинні видалити обліковий запис з нового пристрою і додати його <a href="#multiclient">як другий пристрій, як описано тут</a>. Як тільки вони напишуть вам повідомлення, попередження зникне і гарантоване шифрування буде встановлено на обох пристроях вашого контакту.</p>
<p><strong>Ваш контакт перевстановив Delta Chat, використовуючи свій старий логін</strong></p>
<p>Якщо у них є <a href="#backup">файл резервної копії</a>, вони повинні видалити обліковий запис з нового пристрою і, замість цього, імпортувати файл резервної копії для відновлення свого облікового запису. Як тільки вони напишуть вам повідомлення, попередження зникне і гарантоване шифрування буде відновлено для цього контакту.</p>
<p>Якщо у них немає резервної копії файлу, найкраще виконати <a href="#howtoe2ee">QR-сканування</a> з вашим співрозмовником, щоб відновити гарантоване кінцеве шифрування.</p>
<p><strong>Ваш контакт надіслав листа через веб-інтерфейс або іншу поштову програму і незабаром повернеться до використання Delta Chat.</strong></p>
<p>Якщо ви впевнені, що контакт іноді користується веб-поштою, або іншу поштову програму без наскрізного шифрування, ви можете прийняти попередження. Як тільки ваш контакт знову скористається Delta Chat, гарантоване наскрізне шифрування буде автоматично відновлено.</p>
<p><strong>Ваш контакт повністю припинив користуватися Delta Chat</strong>.</p>
<p>Іноді залишатися на зв’язку важливіше, ніж наскрізне шифрування. <a href="#tls">“Шифрування на транспортному рівні” (TLS)</a> все ще може ефективно захищати конфіденційність ваших повідомлень між вашим пристроєм і сервером електронної пошти. Але без наскрізного шифрування ви та ваш контакт довіряєте серверу електронної пошти не читати і не маніпулювати вашими повідомленнями, а також не передавати їх третім особам.</p>
<p>У будь-якому випадку, ви не можете зробити нічого іншого, окрім як прийняти попередження. Будь ласка, також видаліть контакт з будь-якої активної групи, позначеної зеленою галочкою які ви можете знайти в розділі “Загальні чати” в профілі контакту. Це позбавить ваш контакт від отримання “нечитабельних” повідомлень.</p>
<p>Якщо контакт видалив Delta Chat через помилки або небажану поведінку, будь ласка, розгляньте можливість написати повідомлення на нашому <a href="https://support.delta.chat">форумі підтримки</a> щоб допомогти нам виявити та вирішити загальні проблеми. Дякуємо!</p>
<h3 id="чи-зашифровані-наскрізно-вкладення-зображення-файли-аудіо-тощо">
@@ -674,16 +742,21 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
</h3>
<p>Так, Delta Chat використовує безпечну підмножину OpenPGP і відображає індикатор безпеки у вигляді замка в повідомленні лише тоді, коли все повідомлення належним чином зашифровано і підписано. Наприклад, “Відокремлені підписи” не вважаються безпечними.</p>
<p>Yes, Delta Chat uses a secure subset of OpenPGP
requiring the whole message to be properly encrypted and signed.
For example, “Detached signatures” are not treated as secure.</p>
<p>OpenPGP не є небезпечним сам по собі. Більшість публічно обговорюваних проблем безпеки OpenPGP насправді виникають через погане використання або погану реалізацію інструментів або програм (або і те, і інше). Особливо важливо розрізняти OpenPGP, стандарт шифрування IETF, і GnuPG (GPG), інструментом командного рядка, що реалізує OpenPGP. Багато публічних критиків OpenPGP насправді обговорюють GnuPG, який Delta Chat ніколи не використовував. Натомість Delta Chat використовує реалізацію OpenPGP на Rust <a href="https://github.com/rpgp/rpgp">rPGP</a>, доступну як <a href="https://crates.io/crates/pgp">незалежний пакет “pgp”</a>, і <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">пройшов аудит безпеки у 2019 році</a>.</p>
<p>OpenPGP сам по собі не є небезпечним. Більшість публічно обговорюваних проблем безпеки OpenPGP насправді виникають через недостатню зручність використання або погану реалізацію інструментів чи програм (або обох).
Особливо важливо розрізняти OpenPGP, стандарт шифрування IETF, і GnuPG (GPG), інструмент командного рядка, що реалізує OpenPGP.
Багато публічних критиків OpenPGP насправді обговорюють GnuPG, який Delta Chat ніколи не використовував.
Delta Chat скоріше використовує реалізацію OpenPGP Rust <a href="https://github.com/rpgp/rpgp">rPGP</a>, доступну як <a href="https://crates.io/crates/pgp">незалежний пакет «pgp»</a> і <a href="#security-audits">перевірку безпеки в 2019 і 2024 роках</a>.</p>
<p>Ми прагнемо, разом з іншими розробниками OpenPGP, подальше покращення характеристик безпеки шляхом впровадження <a href="https://datatracker.ietf.org/doc/draft-ietf-openpgp-crypto-refresh/">нового IETF OpenPGP Crypto-Refresh</a> який, на щастя, був прийнятий влітку 2023 року.</p>
<h3 id="openpgp-alternatives">
Чи розглядали ви можливість використання альтернатив OpenPGP для наскрізного шифрування? <a href="#openpgp-alternatives" class="anchor"></a>
Did you consider using alternatives to OpenPGP for end-to-end-encryption? <a href="#openpgp-alternatives" class="anchor"></a>
</h3>
@@ -707,16 +780,17 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
<h3 id="tls">
Чи буде показано повідомлення відкритим текстом, якщо наскрізне шифрування недоступне? <a href="#tls" class="anchor"></a>
Are messages marked with the mail icon exposed on the Internet? <a href="#tls" class="anchor"></a>
</h3>
<p>Навіть якщо ваші повідомлення не гарантовано зашифровані наскрізним шифруванням, вони все одно захищені від інтернет-провайдерів, таких як мобільні або кабельні компанії. Однак, ваші провайдери та провайдери електронної пошти одержувача можуть читати, аналізувати або навіть змінювати ваші повідомлення, включаючи будь-які вкладення, якщо вони не зашифровані наскрізним шифруванням.</p>
<p>If you are sending or receiving e-mail messages without end-to-end encryption (using a classic e-mail server),
they are still protected from cell or cable companies who can not read or modify your e-mail messages.
But both your and your recipients e-mail providers
may read, analyze or modify your messages, including any attachments.</p>
<p>За замовчуванням Delta Chat використовує суворе <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security">TLS-шифрування</a> яке захищає з’єднання між вашим пристроєм і провайдером електронної пошти. Вся робота з TLS-шифруванням Delta Chat пройшла незалежний <a href="#security-audits">аудит безпеки</a>. Крім того, з’єднання між вашим провайдером та провайдером електронної пошти одержувача зазвичай також шифрується при передачі даних. Якщо задіяні поштові сервери підтримують <a href="https://datatracker.ietf.org/doc/html/rfc8461">MTA-STS</a> то між провайдерами електронної пошти буде застосовуватися транспортне шифрування в цьому випадку повідомлення Delta Chat ніколи не будуть доступні в Інтернеті у вигляді відкритого тексту навіть якщо повідомлення не було наскрізь зашифровано.</p>
<p>Зверніть увагу, що <a href="#howtoe2ee">підтримка гарантованого наскрізного шифрування</a>, на додаток до шифрування TLS, забезпечує повну безпеку між вашим пристроєм і пристроєм одержувача. Навіть ваш провайдер електронної пошти або інтернет-провайдер не зможуть прочитати або змінити ваші повідомлення.</p>
<h3 id="message-metadata">
@@ -749,7 +823,7 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
</h3>
<p>Як для захисту від поштових серверів, що збирають метадані, так і для захисту від загрози вилучення пристрою ми рекомендуємо використовувати оптимізований для Delta Chat <a href="https://delta.chat/serverguide">екземпляр поштового сервера</a> для створення псевдонімних тимчасових акаунтів за допомогою сканування QR-коду. Зверніть увагу, що додатки Delta Chat на всіх платформах підтримують кілька облікових записів тому ви можете легко використовувати “1-тижневі” або “1-місячні” акаунти поруч з вашим “основним” акаунтом знаючи, що всі дані тимчасових акаунтів разом з усіма метаданими будуть видалені. Більше того, якщо пристрій вилучається, то контакти, які використовують тимчасові електронні скриньки, не можуть бути легко ідентифіковані, на відміну від месенджерів, які розкривають телефонні номери в групах чату, які, в свою чергу, часто пов’язані з юридичними особами.</p>
<p>Як для захисту від поштових серверів, що збирають метадані а також для захисту від загрози вилучення пристрою ми рекомендуємо використовувати <a href="https://delta.chat/chatmail">chatmail-сервер</a> для створення псевдонімних тимчасових профілів за допомогою сканування QR-коду. Зверніть увагу, що додатки Delta Chat на всіх платформах підтримують кілька профілів тому ви можете легко використовувати ситуативні профілі поруч з вашим “основним” профілем знаючи, що всі їхні дані, разом з усіма метаданими, будуть видалені. Більше того, якщо пристрій вилучено, то контакти, які використовують тимчасові профілі не можна буде легко ідентифікувати, на відміну від месенджерів, які розкривають номери телефонів у групах чату, які, в свою чергу, часто пов’язані з юридичними особами.</p>
<h3 id="як-перевірити-інформацію-про-шифрування">
@@ -761,51 +835,6 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
<p>Ви можете перевірити стан наскрізного шифрування вручну в діалоговому вікні “Шифрування” (профіль користувача на Android/iOS або клацніть правою кнопкою миші на елементі списку чату користувача на робочому столі). Delta Chat показує там два відбитки. Якщо на вашому пристрої та пристрої вашого співрозмовника з’являються однакові відбитки, з’єднання безпечне.</p>
<h3 id="як-перевірити-стан-шифрування-повідомлень">
Як перевірити стан шифрування повідомлень? <a href="#як-перевірити-стан-шифрування-повідомлень" class="anchor"></a>
</h3>
<p>Маленький <strong>замок</strong> в бульбашці повідомлення позначає, що повідомлення було належним чином наскрізно зашифроване від відправника. Якщо <strong>немає замка</strong>, повідомлення не було належним чином наскрізно зашифровано, найімовірніше, тому що відправник використовує додаток або інтерфейс веб-пошти без підтримки кінцевого шифрування.</p>
<h3 id="чому-я-бачу-незашифровані-повідомлення">
Чому я бачу незашифровані повідомлення? <a href="#чому-я-бачу-незашифровані-повідомлення" class="anchor"></a>
</h3>
<p>Якщо контакт використовує поштову програму, яка не підтримує Autocrypt всі повідомлення за участю цього контакту (в групі або чаті 1:1) не будуть наскрізно зашифровані, а отже, не показуватимуть “висячого замка” з повідомленнями. Зверніть увагу, що навіть якщо ваші контакти використовують Delta Chat у своєму акаунті, вони також можуть використовувати програму електронної пошти без функції шифрування, що може спричинити періодичні незашифровані повідомлення. Відповідати незашифрованими на незашифровані повідомлення вимагає Autocrypt щоб запобігти отриманню нечитабельних повідомлень на стороні ваших контактів та їхніх поштових програм, які не підтримують Autocrypt.</p>
<h3 id="як-я-можу-отримати-наскрізно-зашифрований-чат-з-контактом-delta-chat-який-іноді-користується-веб-поштою-або-іншим-додатком-електронної-пошти-що-не-підтримує-autocrypt">
Як я можу отримати наскрізно зашифрований чат з контактом Delta Chat, який іноді користується веб-поштою або іншим додатком електронної пошти, що не підтримує Autocrypt? <a href="#як-я-можу-отримати-наскрізно-зашифрований-чат-з-контактом-delta-chat-який-іноді-користується-веб-поштою-або-іншим-додатком-електронної-пошти-що-не-підтримує-autocrypt" class="anchor"></a>
</h3>
<p>Якщо вам потрібен безпечний наскрізно зашифрований чат з контактом який використовує свій акаунт як у Delta Chat, так і в інших додатках (наприклад, веб-пошті), що не підтримують автошифрування, найкраще налаштувати <a href="#howtoe2ee">гарантоване наскрізне шифрування з ними</a>, а потім створити груповий чат з гарантованим наскрізним шифруванням, учасниками якого будете ви двоє. У цьому груповому чаті всі повідомлення будуть наскрізно зашифровані навіть якщо в прямому чаті між вами буде <a href="#nocryptanymore">“… надіслано повідомлення з іншого пристрою”</a>.</p>
<h3 id="як-забезпечити-наскрізне-шифрування-та-видалення-повідомлень">
Як забезпечити наскрізне шифрування та видалення повідомлень? <a href="#як-забезпечити-наскрізне-шифрування-та-видалення-повідомлень" class="anchor"></a>
</h3>
<p>Найкращий спосіб забезпечити наскрізне шифрування кожного повідомлення, а метадані видалялися якнайшвидше, це <a href="#howtoe2ee">використання чатів з гарантованим наскрізним шифруванням</a>
та увімкнення <a href="#ephemeralmsgs">зникаючих повідомлень</a>.</p>
<p>Гарантований наскрізно шифрований чат захищає від <a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack">MITM-атак</a>, а увімкнення функції зникнення повідомлень видаляє повідомлення на сервері через певний час, налаштований користувачем.</p>
<p>Якщо вам не потрібне більш довготривале зберігання копій ваших повідомлень на сервері, ви також можете увімкнути <a href="#delold">“автоматично видаляти повідомлення з сервера”</a>.</p>
<h3 id="pfs">
@@ -814,23 +843,35 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
</h3>
<p>Ні, Delta Chat не підтримує ідеальну пряму секретність (PFS). Це означає, що якщо ваш приватний ключ дешифрування Delta Chat витік, і хтось зібрав ваші попередні транзитні повідомлення, він зможе розшифрувати і прочитати їх за допомогою витоку ключа розшифрування.</p>
<p>No, not yet.</p>
<p>Зауважте, однак, що якщо хтось отримає ваші ключі розшифрування, вони, як правило, також зможуть отримати ваші повідомлення, незалежно від того, чи працює Perfect Forward Secrecy чи ні. Типовою реальною ситуацією для витоку ключів дешифрування є вилучення пристрою яку ми обговорюємо в нашій відповіді <a href="#device-seizure">про метадані та вилучення пристрою</a>.</p>
<p>Delta Chat today doesnt support Perfect Forward Secrecy (PFS).
This means that if your Delta Chat private decryption key is leaked,
and someone has collected your prior in-transit messages,
they will be able to decrypt and read them using the leaked decryption key.</p>
<p>Можливо, що Delta Chat розвивається для підтримки Perfect Forward Secrecy, тому що OpenPGP - це лише контейнер для зашифрованих повідомлень, але керування ключами шифрування (і, відповідно, ротація ключів або “храповик” ключів) може бути організоване у гнучкий спосіб. Дивіться <a href="https://gitlab.com/sequoia-pgp/openpgp-dr">Прототип PFS від Seqouia</a> щодо існуючих експериментів у спільноті реалізаторів OpenPGP.</p>
<p>Note however, that Forward Secrecy only increases your security
if you delete messages or use ephemeral deletion timers.
Otherwise, if anyone obtains your decryption keys,
they are typically also able to get all your non-deleted messages
and dont need to decrypt any previously collected messages.</p>
<p>The typical real-world situation for leaked decryption keys is device seizure
which we also discuss in our answer <a href="#device-seizure">on metadata and device seizure</a>.</p>
<h3 id="чи-є-наскрізне-шифрування-delta-chat-таким-же-безпечним-як-signal">
<h3 id="will-delta-chat-support-forward-secrecy">
Чи є наскрізне шифрування Delta Chat таким же безпечним, як Signal? <a href="#чи-є-наскрізне-шифрування-delta-chat-таким-же-безпечним-як-signal" class="anchor"></a>
Will Delta Chat support Forward Secrecy? <a href="#will-delta-chat-support-forward-secrecy" class="anchor"></a>
</h3>
<p>Це залежить від того, що для вас важливо. Delta Chat <a href="#pfs">не підтримує PFS</a>, як Signal але він забезпечує <a href="#e2eeguarantee">гарантовано наскрізні зашифровані чати</a> які захищені від скомпрометованих серверів або пошкоджених мереж. Signal та більшість інших месенджерів, що підтримують PFS, не надають практичної схеми захисту чат-груп від мережевих атак які, можливо, викликають більше занепокоєння ніж потенційний зловмисник, який заволодіє вашим телефоном і приватними налаштуваннями шифрування, але чомусь не ваші повідомлення, але має повний запис усіх минулих зашифрованих повідомлень.</p>
<p>Так.</p>
<p>У будь-якому випадку, наскрізне шифрування Delta Chat використовує <a href="#openpgp-secure">безпечну підмножину OpenPGP</a> який пройшов <a href="https://delta.chat/assets/blog/2019-first-security-review.pdf">незалежний аудит безпеки</a>.</p>
<p>We devised a forward secrecy scheme that withstood initial scrutiny from cryptographers and usable security experts.
Our tentative scheme is designed to reliably work in federated messaging networks and with multi-device usage.
However, an implementation has not been scheduled yet (as of Mid 2025).</p>
<h3 id="importkey">
@@ -840,29 +881,11 @@ Autocrypt використовує обмежену і <a href="#openpgp-secure"
</h3>
<p>Так.
The best way is to send an Autocrypt Setup Message from the other e-mail client.
Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the settings of the other client and follow the instructions shown there.</p>
<p>Ні.</p>
<p>Крім того, ви можете імпортувати ключ вручну в “Налаштування -&gt; Додаткові налаштування -&gt; Імпорт секретних ключів”. Застереження: Переконайтеся, що ключ не захищено паролем, або видаліть його заздалегідь.</p>
<p>Delta Chat генерує безпечні ключі OpenPGP відповідно до специфікації Autocrypt 1.1. Ви можете експортувати свій приватний ключ, але не можете імпортувати додаткові приватні ключі.</p>
<p>Якщо у вас немає ключа або ви навіть не знаєте, що він вам знадобиться – не хвилюйтеся: Delta Chat генерує ключі в міру необхідності, вам не потрібно натискати кнопку для цього.</p>
<h3 id="я-не-можу-імпортувати-свій-існуючий-pgp-ключ-у-delta-chat">
Я не можу імпортувати свій існуючий PGP ключ у Delta Chat. <a href="#я-не-можу-імпортувати-свій-існуючий-pgp-ключ-у-delta-chat" class="anchor"></a>
</h3>
<p>Найімовірнішою причиною є те, що ваш ключ зашифрований та/або використовується пароль. Такі ключі не підтримуються Delta Chat. Ви можете видалити шифрування парольної фрази та пароль і спробувати імпорт знову.</p>
<p>Ще одна поширена помилка – неправильне закінчення файлу. Використовуйте захищений формат ASCII і закінчення файлу <code class="language-plaintext highlighter-rouge">.asc</code>.</p>
<p>Delta Chat підтримує поширені формати приватних ключів OpenPGP, однак навряд чи приватні ключі з усіх джерел будуть повністю підтримуватися. Це не головна мета Delta Chat. Фактично, більшість нових користувачів не матимуть жодного ключа до використання Delta Chat. Однак ми намагаємось підтримувати приватні ключі з якомога більшої кількості джерел.</p>
<p>Видалення пароля з приватного ключа буде залежати від програмного забезпечення, яке використовується для управління ключами PGP. За допомогою Enigmail ви можете встановити для порожній пароль у вікні Керування ключами. За допомогою GnuPG ви можете встановити його <a href="https://github.com/deltachat/deltachat-android/issues/98#issuecomment-378383429">через командний рядок</a>. Для інших програм ви зможете знайти рішення в інтернеті.</p>
<p>Загалом, ми не рекомендуємо і не пропонуємо користувачам керувати ключами вручну. Ми хочемо гарантувати, що аудит безпеки може зосередитися на декількох перевірених криптографічних алгоритмах а не на всій широті можливих алгоритмів, дозволених у OpenPGP.</p>
<h3 id="security-audits">
@@ -872,7 +895,17 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
</h3>
<p>Проект Delta Chat пройшов чотири незалежні аудити безпеки та один незалежний аналіз безпеки, від найновіших до найстаріших:</p>
<p>Так, багаторазово. Проект Delta Chat постійно проходить незалежні перевірки та аналіз безпеки, а саме, від останніх і закінчуючи старішими:</p>
<ul>
<li>
<p>2024 грудня відбулася <a href="https://github.com/rpgp/docs/blob/main/audits/NGI%20Core%20rPGP%20penetration%20test%20report%202024%201.0.pdf">оцінка rPGP на замовлення NLNET</a> від <a href="https://www.radicallyopensecurity.com/">Radically Open Security</a>. rPGP слугує рушієм наскрізного шифрування <a href="https://openpgp.org">OpenPGP</a> для Delta Chat. За результатами цього аудиту було випущено дві рекомендації:</p>
</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-9rmp-2568-59rv">“Паніка через неправильне ненадійне введення”</a> CVE-2024-53856</li>
<li><a href="https://github.com/rpgp/rpgp/security/advisories/GHSA-4grw-m28r-q285">“Потенційне виснаження ресурсів під час обробки ненадійних повідомлень”</a> CVE-2024-53857</li>
</ul>
<p>Проблеми, описані в цих рекомендаціях, виправлено, і вони є частиною випусків Delta Chat у всіх магазинах додатків з грудня 2024 року.</p>
<ul>
<li>
@@ -908,7 +941,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
</h3>
<p>Так. Delta Chat 1.36 comes with a new, experimental function for using the same profile on different devices:</p>
<p>Так. You can use the same profile on different devices:</p>
<ul>
<li>
@@ -957,6 +990,9 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<li>
<p><strong>Гостьові мережі</strong> можуть не дозволяти пристроям зв’язуватися один з одним. Якщо можливо, використовуйте негостьову мережу.</p>
</li>
<li>
<p>Якщо у вас все ще виникають проблеми з використанням однієї мережі, спробуйте відкрити <strong>Мобільну точку доступу</strong> на одному пристрої та приєднатися до цього Wi-Fi з іншого</p>
</li>
<li>
<p>Переконайтеся, що на цільовому пристрої <strong>достатньо пам’яті</strong></p>
</li>
@@ -964,7 +1000,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<p>Якщо передача почалася, переконайтеся, що пристрої <strong>залишаються активними</strong> і не засинають. Не виходьте з Delta Chat. (ми докладаємо всіх зусиль, щоб програма працювала у фоновому режимі, але <a href="https://dontkillmyapp.com">системи, як правило, вбивають програми</a>, на жаль)</p>
</li>
<li>
<p>Delta Chat <strong>уже ввійшов</strong> на цільовому пристрої? Ви можете використовувати кілька облікових записів на одному пристрої, просто <a href="#multiple-accounts">додайте інший обліковий запис</a></p>
<p>Delta Chat <strong>вже зареєстрований</strong> на цільовому пристрої? Ви можете використовувати кілька профілів на одному пристрої, просто <a href="#multiple-accounts">додайте ще один профіль</a></p>
</li>
<li>
<p>Якщо у вас усе ще виникають проблеми або якщо ви <strong>не можете відсканувати QR-код</strong> спробуйте <strong>перенесення вручну</strong>, описане нижче</p>
@@ -982,15 +1018,26 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<p>Цей спосіб рекомендований, лише якщо «Додати другий пристрій», як описано вище, не працює.</p>
<ul>
<li>На старому пристрої перейдіть до “Налаштування -&gt; Чати та медіа -&gt; Експортувати резервну копію”. Введіть свій PIN-код, графічний ключ або пароль розблокування екрана. Потім ви можете натиснути на “Почати Резервне копіювання”. Це збереже файл резервної копії на вашому пристрої. Тепер вам потрібно якось перенести його на інший пристрій.</li>
<li>На новому пристрої на екрані входу замість того, щоб увійти до свого облікового запису електронної пошти, виберіть “Імпортувати резервну копію” виберіть “Імпортувати резервну копію”. Після імпорту ваші листування, ключі шифрування ключі шифрування та медіа повинні бути скопійовані на новий пристрій.
<ul>
<li>Якщо ви користуєтеся iOS:** і у вас виникли труднощі, можливо <a href="https://support.delta.chat/t/import-backup-to-ios/1628">цей посібник</a> допоможе вам.</li>
</ul>
</li>
<li>Тепер ви синхронізовані і можете використовувати обидва пристрої для надсилання та отримання наскрізно зашифрованих повідомлень зі своїми партнерами по спілкуванню.</li>
<li>На старому пристрої перейдіть до “Налаштування -&gt; Чати та медіа -&gt; Експортувати резервну копію”. Введіть свій PIN-код, графічний ключ або пароль розблокування екрана. Потім ви можете натиснути на “Почати резервне копіювання”. Це збереже файл резервної копії на вашому пристрої. Тепер вам потрібно якось перенести його на інший пристрій.</li>
<li>На новому пристрої в меню “У мене вже є профіль” виберіть “Відновити з резервної копії”. Після імпорту ваші розмови, ключі шифрування ключі шифрування та медіа повинні бути скопійовані на новий пристрій.</li>
<li>Якщо ви користуєтеся iOS:** і у вас виникли труднощі, можливо <a href="https://support.delta.chat/t/import-backup-to-ios/1628">цей посібник</a> допоможе вам.</li>
<li>Тепер ви синхронізовані і можете використовувати обидва пристрої для надсилання та отримання наскрізних зашифрованих повідомлень зі своїми партнерами по спілкуванню.</li>
</ul>
<h3 id="чи-синхронізовані-видалення-закріплення-архівування-збереження-вимкнення-сповіщень-тощо-з-усіма-пристроями">
Чи синхронізовані видалення, закріплення, архівування, збереження, вимкнення сповіщень тощо з усіма пристроями? <a href="#чи-синхронізовані-видалення-закріплення-архівування-збереження-вимкнення-сповіщень-тощо-з-усіма-пристроями" class="anchor"></a>
</h3>
<p>Так.</p>
<p>Якщо ви, наприклад, видалите чат або повідомлення з телефону, воно буде видалено на вашому робочому столі, щойно ви знову з’явитесь в мережі.</p>
<p>Винятком є <a href="#delold">Видалення старих повідомлень з пристрою</a>, оскільки різні пристрої можуть мати різний обсяг пам’яті, а також системні налаштування звуків сповіщень.</p>
<h3 id="чи-планується-впровадження-веб-клієнта-delta-chat">
@@ -1024,10 +1071,16 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
</h3>
<ul>
<li>Додатки webxdc не можуть надсилати дані в Інтернет або завантажувати щось.</li>
<li>Програма webxdc може обмінюватися даними лише в межах чату Delta Chat з її копіями на пристроях ваших партнерів по чату. В іншому, вони повністю ізольовані від Інтернету.</li>
<li>Конфіденційність, яку пропонує додаток webxdc, є конфіденційністю вашого чату - доки ви довіряєте людям, з якими ви спілкуєтеся, ви можете довіряти і додатку webxdc.</li>
<li>Це також означає, що відкриття додатків webxdc в чатах, де ви не довіряєте учасникам, як ви знаєте з вкладень в електронній пошті, де ви відкриваєте вкладення тільки від відправників, яким довіряєте, а не від спамерів.</li>
<li>webxdc apps can not send data to the Internet, or download anything.</li>
<li>A webxdc app can only exchange data within a Delta Chat chat, with its
copies on the devices of your chat partners. Other than that, its completely
isolated from the Internet.</li>
<li>The privacy a webxdc app offers is the privacy of your chat - as long as you
trust the people you chat with, you can trust the webxdc app as well.</li>
<li>This also means: it can be a privacy risk to open apps in chats with untrusted members.
Just like with e-mail attachments, video calls or plain links:
open them only from senders you trust, and not from spammers.
Spammers can get to know any data you send to them, as well as your IP address.</li>
</ul>
<h3 id="де-я-можу-отримати-webxdc-додатки">
@@ -1095,13 +1148,10 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
</h3>
<ul>
<li>За допомогою списку розсилки ви можете надіслати повідомлення багатьом одержувачам одночасно; коли вони відповідають вам, ви отримуєте відповідь у своєму прямому чаті 1:1 з ними. Одержувачі не бачать один одного.</li>
<li>Технічно це електронний лист із багатьма одержувачами в BCC.</li>
<li>Ви можете ввімкнути функцію в розділі «експериментальні функції» в розширених налаштуваннях. Потім ви можете створити список трансляцій у діалоговому вікні «Новий чат».</li>
<li>Якщо ви використовуєте більше ніж один пристрій, списки трансляцій наразі не синхронізуються між ними.</li>
<li>Повідомлення, надіслані до списків розсилки, не шифруються. Шифрування порушило б анонімність, оскільки тоді всі одержувачі знали б, хто ще його отримав (надсилання окремих листів усім було б гіршим через обмеження швидкості та споживання мережі).</li>
</ul>
<p>With a Broadcast List you can send a message to many recipients at once;
the recipients cannot reply in that list.
Broadcast lists are still highly experimental
and will very probably be replaced by something else, stay tuned :)</p>
<h3 id="як-я-можу-поділитися-своїм-місцезнаходженням-зі-своїми-співрозмовниками-в-чаті">
@@ -1139,17 +1189,22 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<p>У цьому випадку Delta Chat не потрібно стежити за папкою «Вхідні», а достатньо лише стежити за папкою DeltaChat.</p>
<h3 id="як-я-можу-змінити-мій-обліковий-запис-на-іншу-адресу-електронної-пошти">
<h3 id="як-я-можу-використовувати-іншу-адресу-електронної-пошти-у-своєму-профілі">
Як я можу змінити мій обліковий запис на іншу адресу електронної пошти? <a href="#як-я-можу-змінити-мій-обліковий-запис-на-іншу-адресу-електронної-пошти" class="anchor"></a>
Як я можу використовувати іншу адресу електронної пошти у своєму профілі? <a href="#як-я-можу-використовувати-іншу-адресу-електронної-пошти-у-своєму-профілі" class="anchor"></a>
</h3>
<p>Note:
Changing email addresses is temporarily disabled
because of ongoing changes to the DeltaChat core.
It should be available again in a few months.</p>
<ol>
<li>
<p>Змініть свою адресу в розділі “Налаштування → Додатково → Пароль та обліковий запис” та введіть пароль вашого нового облікового запису (і, за необхідності, налаштування сервера). Ви отримаєте інформаційне повідомлення про те, що ви переїжджаєте на нову адресу. Додаткове повідомлення також з’явиться у вашому чаті “Повідомлення пристрою”.</p>
<p>Змініть свою адресу в розділі “Налаштування → Додатково → Пароль та обліковий запис” та введіть пароль вашого нового поштового акаунта (і, за необхідності, налаштування сервера). Ви отримаєте інформаційне повідомлення про те, що ви переїжджаєте на нову адресу. Додаткове повідомлення також з’явиться у вашому чаті “Повідомлення пристрою”.</p>
</li>
<li>
<p>Якщо можливо, нехай ваш старий провайдер електронної пошти пересилає всі повідомлення на вашу нову адресу.</p>
@@ -1236,17 +1291,19 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
Проте для коректної роботи деяких провайдерів потрібні специфічні налаштування. Дивіться наш <a href="https://providers.delta.chat">огляд провайдерів</a></li>
</ul>
<h3 id="я-хочу-керувати-власним-сервером-електронної-пошти-для-delta-chat-що-ви-порадите">
<h3 id="i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend">
Я хочу керувати власним сервером електронної пошти для Delta Chat. Що ви порадите? <a href="#я-хочу-керувати-власним-сервером-електронної-пошти-для-delta-chat-що-ви-порадите" class="anchor"></a>
I want to manage my own server for Delta Chat. What do you recommend? <a href="#i-want-to-manage-my-own-server-for-delta-chat-what-do-you-recommend" class="anchor"></a>
</h3>
<ul>
<li>Більшість поштових серверів працюватимуть добре. Але ми особисто рекомендуємо поєднання mailcow і mailadm, як описано <a href="https://delta.chat/en/2023-01-27-upcoming-mail-server-workshops">у цьому пості</a>.</li>
<li>Ви можете знайти <a href="https://delta.chat/uk/serverguide">посібник із встановлення на нашому веб-сайті</a>.</li>
<li>Most mail servers will work well. But what we personally recommend is a
chatmail relay server, as described <a href="https://delta.chat/en/2023-12-13-chatmail">in this
blogpost</a>.</li>
<li>You can find an <a href="https://github.com/chatmail/relay">installation guide on GitHub</a>.</li>
</ul>
<h3 id="чому-я-маю-вводити-пароль-до-моєї-електронної-пошти-у-delta-chat-чи-це-безпечно">
@@ -1259,7 +1316,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<p>Як і інші поштові програми, такі як Thunderbird, K9-Mail або Outlook, програма програма потребує пароля, щоб ви могли використовувати її для надсилання листів. Звичайно, пароль пароль зберігається лише на вашому пристрої. Пароль передається лише вашому поштовому провайдеру (коли ви входите в систему), який і так має доступ до вашої пошти.</p>
<p>Оскільки Delta Chat має відкритий код, ви можете ознайомитись із <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/src/login_param.rs">початковим кодом</a> якщо бажаєте перевірити що ваші дані для авторизації надійно зберігаються. Ми будемо раді вашим пропозиціям, які зроблять додаток більш безпечним для всіх користувачів.</p>
<p>Оскільки Delta Chat має відкритий код, ви можете ознайомитись із <a href="https://github.com/chatmail/core/blob/main/src/login_param.rs">початковим кодом</a> якщо бажаєте перевірити що ваші дані для авторизації надійно зберігаються. Ми будемо раді вашим пропозиціям, які зроблять додаток більш безпечним для всіх користувачів.</p>
<h3 id="які-повідомлення-відображаються-у-delta-chat">
@@ -1338,17 +1395,17 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
<p>Деякі люди використовують Delta Chat як звичайний поштовий клієнт і хочуть використовувати папку Вхідні для своєї пошти замість папки DeltaChat. Якщо ви вимкнете “Перегляд папки DeltaChat”, вам слід також вимкнути “переміщення повідомлень чату до DeltaChat”.
В іншому випадку видалення повідомлень або налаштування декількох пристроїв може не працювати належним чином.</p>
<h3 id="чи-сумісний-delta-chat-із-protonmail--tutanota--criptext">
<h3 id="чи-сумісний-delta-chat-із-proton-mail--tutanota--criptext">
Чи сумісний Delta Chat із Protonmail / Tutanota / Criptext? <a href="#чи-сумісний-delta-chat-із-protonmail--tutanota--criptext" class="anchor"></a>
Чи сумісний Delta Chat із Proton Mail / Tutanota / Criptext? <a href="#чи-сумісний-delta-chat-із-proton-mail--tutanota--criptext" class="anchor"></a>
</h3>
<ul>
<li>Так і ні.</li>
<li>Ні, ви не можете використовувати свій обліковий запис Protonmail, Tutanota або Criptext у Delta Chat; вони не пропонують отримання листів через IMAP.</li>
<li>Ні, ви не можете використовувати свій обліковий запис Proton Mail, Tutanota або Criptext у Delta Chat; вони не пропонують отримання листів через IMAP.</li>
<li>У будь-якому випадку, ви можете використовувати Delta Chat для надсилання повідомлень людям, які користуються Protonmail, Tutanota або Criptext. Ці повідомлення не будуть наскрізно зашифрованими. Наскрізне шифрування, яке пропонують ці провайдери, не є сумісним з <a href="https://autocrypt.org/">Autocrypt</a>, стандартним шифруванням, яке використовує Delta Chat.</li>
<li>Delta Chat може наскрізно шифрувати через будь-якого провайдера електронної пошти з будь-якою <a href="https://autocrypt.org/dev-status.html">поштовою програмою з підтримкою автошифрування</a>.</li>
</ul>
@@ -1380,7 +1437,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
</h3>
<ul>
<li>Дивіться <a href="https://github.com/deltachat/deltachat-core-rust/blob/master/standards.md#standards-used-in-delta-chat">Стандарти, що використовуються у Delta Chat</a>.</li>
<li>Дивіться <a href="https://github.com/chatmail/core/blob/main/standards.md#standards-used-in-delta-chat">Стандарти, що використовуються у Delta Chat</a>.</li>
</ul>
<h3 id="де-мої-друзі-можуть-знайти-delta-chat">
@@ -1442,7 +1499,7 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
завершення прив’язок Rust/Python та запуск екосистеми чат-ботів.</p>
</li>
<li>
<p>У 2021 році ми отримали подальше фінансування ЄС для двох Інтернет-технологій наступного покоління пропозиції, а саме для <a href="https://dapsi.ngi.eu/hall-of-fame/eppd/">EPPD - каталог перенесення електронної пошти</a> (~97 тис. євро) та <a href="https://nlnet.nl/project/EmailPorting/">AEAP - перенесення електронної адреси</a> (~90 тис. євро), що призвело до кращої підтримки кількох облікових записів, покращеного QR-коду контактів і налаштувань груп, а також багатьох покращень роботи мережі на всіх платформах.</p>
<p>У 2021 році ми отримали подальше фінансування від ЄС на дві пропозиції щодо Інтернету наступного покоління а саме на <a href="https://dapsi.ngi.eu/hall-of-fame/eppd/">EPPD - каталог перенесення провайдерів електронної пошти</a> (~97 тис. євро) та <a href="https://nlnet.nl/project/EmailPorting/">AEAP - перенесення адрес електронної пошти</a> (~90 тис. євро), що дозволило нам покращити багатопрофільну підтримку, вдосконалити налаштування контактів та груп за допомогою QR-коду та багато інших мережевих покращень на всіх платформах.</p>
</li>
<li>
<p>З кінця 2021 до березня 2023 року ми отримували фінансування <em>Internet Freedom</em> (500 тис. дол. США) від Бюро США з питань демократії, прав людини та праці (DRL). Це фінансування підтримало наші довгострокові цілі зробити Delta Chat більш зручним для використання і сумісним з широким спектром серверів електронної пошти по всьому світу, більш стійким і безпечним в місцях, які постраждали від інтернет-цензури та відключення інтернету.</p>
@@ -1470,4 +1527,4 @@ Look for something like <strong>Start Autocrypt Setup Transfer</strong> in the s
</body></html>
</body></html>
File diff suppressed because it is too large Load Diff
Binary file not shown.
@@ -35,7 +35,6 @@ public class DcAccounts {
public native void setPushDeviceToken (String token);
public native boolean backgroundFetch (int timeoutSeconds);
public native int addAccount ();
public native int migrateAccount (String dbfile);
public native boolean removeAccount (int accountId);
public native int[] getAll ();
+8 -8
View File
@@ -6,7 +6,8 @@ public class DcChat {
public static final int DC_CHAT_TYPE_SINGLE = 100;
public static final int DC_CHAT_TYPE_GROUP = 120;
public static final int DC_CHAT_TYPE_MAILINGLIST = 140;
public static final int DC_CHAT_TYPE_BROADCAST = 160;
public static final int DC_CHAT_TYPE_OUT_BROADCAST = 160;
public static final int DC_CHAT_TYPE_IN_BROADCAST = 165;
public static final int DC_CHAT_NO_CHAT = 0;
public final static int DC_CHAT_ID_ARCHIVED_LINK = 6;
@@ -38,12 +39,12 @@ public class DcChat {
public native String getMailinglistAddr();
public native String getProfileImage ();
public native int getColor ();
public native boolean isEncrypted ();
public native boolean isUnpromoted ();
public native boolean isSelfTalk ();
public native boolean isDeviceTalk ();
public native boolean canSend ();
public native boolean isProtected ();
public native boolean isProtectionBroken();
public native boolean isSendingLocations();
public native boolean isMuted ();
public native boolean isContactRequest ();
@@ -53,19 +54,18 @@ public class DcChat {
public boolean isMultiUser() {
int type = getType();
return type == DC_CHAT_TYPE_GROUP || type == DC_CHAT_TYPE_MAILINGLIST || type == DC_CHAT_TYPE_BROADCAST;
return type != DC_CHAT_TYPE_SINGLE;
}
public boolean isMailingList() {
return getType() == DC_CHAT_TYPE_MAILINGLIST;
}
public boolean isBroadcast() {
return getType() == DC_CHAT_TYPE_BROADCAST;
public boolean isInBroadcast() {
return getType() == DC_CHAT_TYPE_IN_BROADCAST;
}
public boolean isHalfBlocked() {
return isProtectionBroken() || isContactRequest();
public boolean isOutBroadcast() {
return getType() == DC_CHAT_TYPE_OUT_BROADCAST;
}
// working with raw c-data
@@ -10,8 +10,9 @@ public class DcContact {
public final static int DC_CONTACT_ID_NEW_GROUP = -2; // - " -
public final static int DC_CONTACT_ID_ADD_MEMBER = -3; // - " -
public final static int DC_CONTACT_ID_QR_INVITE = -4; // - " -
public final static int DC_CONTACT_ID_NEW_BROADCAST_LIST = -5; // - " -
public final static int DC_CONTACT_ID_NEW_BROADCAST = -5; // - " -
public final static int DC_CONTACT_ID_ADD_ACCOUNT = -6; // - " -
public final static int DC_CONTACT_ID_NEW_UNENCRYPTED_GROUP = -7; // - " -
public DcContact(long contactCPtr) {
this.contactCPtr = contactCPtr;
@@ -50,7 +51,6 @@ public class DcContact {
public native String getAuthName ();
public native String getDisplayName ();
public native String getAddr ();
public native String getNameNAddr ();
public native String getProfileImage();
public native int getColor ();
public native String getStatus ();
@@ -58,6 +58,7 @@ public class DcContact {
public native boolean wasSeenRecently();
public native boolean isBlocked ();
public native boolean isVerified ();
public native boolean isKeyContact ();
public native int getVerifierId ();
public native boolean isBot ();
@@ -17,6 +17,7 @@ public class DcContext {
public final static int DC_EVENT_MSG_READ = 2015;
public final static int DC_EVENT_CHAT_MODIFIED = 2020;
public final static int DC_EVENT_CHAT_EPHEMERAL_TIMER_MODIFIED = 2021;
public final static int DC_EVENT_CHAT_DELETED = 2023;
public final static int DC_EVENT_CONTACTS_CHANGED = 2030;
public final static int DC_EVENT_LOCATION_CHANGED = 2035;
public final static int DC_EVENT_CONFIGURE_PROGRESS = 2041;
@@ -38,6 +39,7 @@ public class DcContext {
public final static int DC_GCL_VERIFIED_ONLY = 1;
public final static int DC_GCL_ADD_SELF = 2;
public final static int DC_GCL_ADDRESS = 0x04;
public final static int DC_GCL_ARCHIVED_ONLY = 0x01;
public final static int DC_GCL_NO_SPECIALS = 0x02;
public final static int DC_GCL_ADD_ALLDONE_HINT = 0x04;
@@ -51,8 +53,8 @@ public class DcContext {
public final static int DC_QR_FPR_MISMATCH = 220;
public final static int DC_QR_FPR_WITHOUT_ADDR = 230;
public final static int DC_QR_ACCOUNT = 250;
public final static int DC_QR_BACKUP = 251;
public final static int DC_QR_BACKUP2 = 252;
public final static int DC_QR_BACKUP_TOO_NEW = 255;
public final static int DC_QR_WEBRTC = 260;
public final static int DC_QR_PROXY = 271;
public final static int DC_QR_ADDR = 320;
@@ -88,7 +90,7 @@ public class DcContext {
private static final String CONFIG_ACCOUNT_ENABLED = "ui.enabled";
private static final String CONFIG_MUTE_MENTIONS_IF_MUTED = "ui.mute_mentions_if_muted";
// when using DcAccounts, use DcAccounts.addAccount() instead
// when using DcAccounts, use Rpc.addAccount() instead
public DcContext(String osName, String dbfile) {
contextCPtr = createContextCPtr(osName, dbfile);
}
@@ -118,7 +120,6 @@ public class DcContext {
public native void setStockTranslation (int stockId, String translation);
public native String getBlobdir ();
public native String getLastError ();
public native void configure ();
public native void stopOngoingProcess ();
public native int isConfigured ();
public native boolean open (String passphrase);
@@ -137,13 +138,13 @@ public class DcContext {
public void setConfigInt (String key, int value) { setConfig(key, Integer.toString(value)); }
public native boolean setConfigFromQr (String qr);
public native String getConfig (String key);
public int getConfigInt (String key) { try{return Integer.parseInt(getConfig(key));} catch(Exception e) {} return 0; }
public int getConfigInt (String key) { return getConfigInt(key, 0); }
public int getConfigInt (String key, int defValue) { try{return Integer.parseInt(getConfig(key));} catch(Exception e) {} return defValue; }
public native String getInfo ();
public native int getConnectivity ();
public native String getConnectivityHtml ();
public native String getOauth2Url (String addr, String redirectUrl);
public native String initiateKeyTransfer ();
public native boolean continueKeyTransfer (int msg_id, String setup_code);
public native void imex (int what, String dir);
public native String imexHasBackup (String dir);
public DcBackupProvider newBackupProvider () { return new DcBackupProvider(newBackupProviderCPtr()); }
@@ -187,15 +188,17 @@ public class DcContext {
public native void blockChat (int chat_id);
public native void acceptChat (int chat_id);
public DcMsg getMsg (int msg_id) { return new DcMsg(getMsgCPtr(msg_id)); }
public native void sendEditRequest (int msg_id, String text);
public native String getMsgInfo (int id);
public native String getMsgHtml (int msg_id);
public native void downloadFullMsg (int msg_id);
public native int getFreshMsgCount (int chat_id);
public native int estimateDeletionCount(boolean from_server, long seconds);
public native void deleteMsgs (int msg_ids[]);
public native void sendDeleteRequest (int msg_ids[]);
public native void forwardMsgs (int msg_ids[], int chat_id);
public native void saveMsgs (int msg_ids[]);
public native boolean resendMsgs (int msg_ids[]);
public native int prepareMsg (int chat_id, DcMsg msg);
public native int sendMsg (int chat_id, DcMsg msg);
public native int sendTextMsg (int chat_id, String text);
public native int sendVideochatInvitation(int chat_id);
@@ -243,23 +246,6 @@ public class DcContext {
return displayname;
}
public boolean isCommunity() {
return getConfigInt("is_community") == 1;
}
public void setCommunityMode(boolean enable) {
setConfig("is_community", enable? "1" : null);
}
public String getCommunityUser() {
String name = getConfig("ui.community.selfname");
return name == null? "" : name;
}
public void setCommunityUser(String name) {
setConfig("ui.community.selfname", name);
}
public boolean isChatmail() {
return getConfigInt("is_chatmail") == 1;
}
+21 -8
View File
@@ -33,9 +33,9 @@ public class DcMsg {
public final static int DC_INFO_LOCATION_ONLY = 9;
public final static int DC_INFO_EPHEMERAL_TIMER_CHANGED = 10;
public final static int DC_INFO_PROTECTION_ENABLED = 11;
public final static int DC_INFO_PROTECTION_DISABLED = 12;
public final static int DC_INFO_INVALID_UNENCRYPTED_MAIL = 13;
public final static int DC_INFO_WEBXDC_INFO_MESSAGE = 32;
public final static int DC_INFO_CHAT_E2EE = 50;
public final static int DC_STATE_UNDEFINED = 0;
public final static int DC_STATE_IN_FRESH = 10;
@@ -123,6 +123,7 @@ public class DcMsg {
private native int getViewType ();
public int getType () { return getDownloadState()==DC_DOWNLOAD_DONE? getViewType() : DC_MSG_TEXT; }
public native int getInfoType ();
public native int getInfoContactId ();
public native int getState ();
public native int getDownloadState ();
public native int getChatId ();
@@ -142,34 +143,34 @@ public class DcMsg {
public native byte[] getWebxdcBlob (String filename);
public JSONObject getWebxdcInfo () {
try {
return new JSONObject(getWebxdcInfoJson());
String json = getWebxdcInfoJson();
if (json != null && !json.isEmpty()) return new JSONObject(json);
} catch(Exception e) {
e.printStackTrace();
return new JSONObject();
}
return new JSONObject();
}
public native String getWebxdcHref ();
public native boolean isForwarded ();
public native boolean isInfo ();
public native boolean isSetupMessage ();
public native boolean hasHtml ();
public native String getSetupCodeBegin ();
public native String getVideochatUrl ();
public native int getVideochatType ();
public native boolean isIncreation ();
public native void setText (String text);
public native void setSubject (String text);
public native void setHtml (String text);
public native void setFile (String file, String filemime);
public native void forceSticker ();
public native void setFileAndDeduplicate(String file, String name, String filemime);
public native void setDimension (int width, int height);
public native void setDuration (int duration);
public native void setLocation (float latitude, float longitude);
public native String getPOILocation ();
public void setQuote (DcMsg quote) { setQuoteCPtr(quote.msgCPtr); }
public native String getQuotedText ();
public native String getError ();
public native String getOverrideSenderName();
public native boolean isOutgoing();
public native int getSenderColor();
public native boolean isEdited ();
public String getSenderName(DcContact dcContact) {
String overrideName = getOverrideSenderName();
@@ -190,6 +191,14 @@ public class DcMsg {
return cPtr != 0 ? new DcMsg(cPtr) : null;
}
public native int getOriginalMsgId ();
public native int getSavedMsgId ();
public boolean canSave() {
// saving info-messages out of context results in confusion, see https://github.com/deltachat/deltachat-ios/issues/2567
return !isInfo() && getType() != DC_MSG_VIDEOCHAT_INVITATION;
}
public File getFileAsFile() {
if(getFile()==null)
throw new AssertionError("expected a file to be present.");
@@ -209,6 +218,10 @@ public class DcMsg {
return ids;
}
public boolean isOutgoing() {
return getFromId() == DcContact.DC_CONTACT_ID_SELF;
}
public String getDisplayBody() {
return getText();
}
@@ -0,0 +1,171 @@
package com.b44t.messenger.rpc;
public class EnteredLoginParam {
// Email address.
private final String addr;
// Password.
private final String password;
// ============ IMAP settings ============
// Server hostname or IP address.
private final String imapServer;
// Server port.
private final int imapPort;
// Socket security.
private final SocketSecurity imapSecurity;
// Username.
private final String imapUser;
// ============ SMTP settings ============
// Server hostname or IP address.
private final String smtpServer;
// Server port.
private final int smtpPort;
// Socket security.
private final SocketSecurity smtpSecurity;
// Username.
private final String smtpUser;
// SMTP Password. Only needs to be specified if different than IMAP password.
private final String smtpPassword;
// TLS options: whether to allow invalid certificates and/or
// invalid hostnames
private final EnteredCertificateChecks certificateChecks;
// If true, login via OAUTH2 (not recommended anymore)
private final boolean oauth2;
public EnteredLoginParam(String addr,
String password,
String imapServer,
int imapPort,
SocketSecurity imapSecurity,
String imapUser,
String smtpServer,
int smtpPort,
SocketSecurity smtpSecurity,
String smtpUser,
String smtpPassword,
EnteredCertificateChecks certificateChecks,
boolean oauth2) {
this.addr = addr;
this.password = password;
this.imapServer = imapServer;
this.imapPort = imapPort;
this.imapSecurity = imapSecurity;
this.imapUser = imapUser;
this.smtpServer = smtpServer;
this.smtpPort = smtpPort;
this.smtpSecurity = smtpSecurity;
this.smtpUser = smtpUser;
this.smtpPassword = smtpPassword;
this.certificateChecks = certificateChecks;
this.oauth2 = oauth2;
}
public String getAddr() {
return addr;
}
public String getPassword() {
return password;
}
public String getImapServer() {
return imapServer;
}
public int getImapPort() {
return imapPort;
}
public SocketSecurity getImapSecurity() {
return imapSecurity;
}
public String getImapUser() {
return imapUser;
}
public String getSmtpServer() {
return smtpServer;
}
public int getSmtpPort() {
return smtpPort;
}
public SocketSecurity getSmtpSecurity() {
return smtpSecurity;
}
public String getSmtpUser() {
return smtpUser;
}
public String getSmtpPassword() {
return smtpPassword;
}
public EnteredCertificateChecks getCertificateChecks() {
return certificateChecks;
}
public boolean isOauth2() {
return oauth2;
}
public enum EnteredCertificateChecks {
automatic, strict, acceptInvalidCertificates,
}
public static EnteredCertificateChecks certificateChecksFromInt(int position) {
switch (position) {
case 0:
return EnteredCertificateChecks.automatic;
case 1:
return EnteredCertificateChecks.strict;
case 2:
return EnteredCertificateChecks.acceptInvalidCertificates;
}
throw new IllegalArgumentException("Invalid certificate position: " + position);
}
public enum SocketSecurity {
// Unspecified socket security, select automatically.
automatic,
// TLS connection.
ssl,
// STARTTLS connection.
starttls,
// No TLS, plaintext connection.
plain,
}
public static SocketSecurity socketSecurityFromInt(int position) {
switch (position) {
case 0:
return SocketSecurity.automatic;
case 1:
return SocketSecurity.ssl;
case 2:
return SocketSecurity.starttls;
case 3:
return SocketSecurity.plain;
}
throw new IllegalArgumentException("Invalid socketSecurity position: " + position);
}
}
+56 -5
View File
@@ -1,5 +1,7 @@
package com.b44t.messenger.rpc;
import android.util.Log;
import com.b44t.messenger.DcJsonrpcInstance;
import com.b44t.messenger.util.concurrent.SettableFuture;
import com.google.gson.Gson;
@@ -14,9 +16,12 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
public class Rpc {
private final static String TAG = Rpc.class.getSimpleName();
private final Map<Integer, SettableFuture<JsonElement>> requestFutures = new ConcurrentHashMap<>();
private final DcJsonrpcInstance dcJsonrpcInstance;
private int requestId = 0;
private boolean started = false;
private final Gson gson = new GsonBuilder().serializeNulls().create();
public Rpc(DcJsonrpcInstance dcJsonrpcInstance) {
@@ -25,9 +30,13 @@ public class Rpc {
private void processResponse() throws JsonSyntaxException {
String jsonResponse = dcJsonrpcInstance.getNextResponse();
Response response = gson.fromJson(jsonResponse, Response.class);
if (response.id == 0) { // Got JSON-RPC notification/event, ignore
Response response = gson.fromJson(jsonResponse, Response.class);
if (response == null) {
Log.e(TAG, "Error parsing JSON: " + jsonResponse);
return;
} else if (response.id == 0) {
// Got JSON-RPC notification/event, ignore
return;
}
@@ -37,7 +46,14 @@ public class Rpc {
}
if (response.error != null) {
future.setException(new RpcException(response.error.toString()));
String message;
try {
message = response.error.getAsJsonObject().get("message").getAsString();
} catch (Exception e) {
Log.e(TAG, "Can't get response error message: " + e);
message = response.error.toString();
}
future.setException(new RpcException(message));
} else if (response.result != null) {
future.set(response.result);
} else {
@@ -46,18 +62,21 @@ public class Rpc {
}
public void start() {
started = true;
new Thread(() -> {
while (true) {
try {
processResponse();
} catch (JsonSyntaxException e) {
} catch (Exception e) {
e.printStackTrace();
}
}
}, "jsonrpcThread").start();
}
public SettableFuture<JsonElement> call(String method, Object... params) {
public SettableFuture<JsonElement> call(String method, Object... params) throws RpcException {
if (!started) throw new RpcException("RPC not started yet.");
int id;
synchronized (this) {
id = ++requestId;
@@ -125,6 +144,34 @@ public class Rpc {
return getResult("get_account_file_size", accountId).getAsInt();
}
public void changeContactName(int accountId, int contactId, String name) throws RpcException {
getResult("change_contact_name", accountId, contactId, name);
}
public int addAccount() throws RpcException {
return getResult("add_account").getAsInt();
}
public void addTransportFromQr(int accountId, String qrCode) throws RpcException {
getResult("add_transport_from_qr", accountId, qrCode);
}
public void addOrUpdateTransport(int accountId, EnteredLoginParam param) throws RpcException {
getResult("add_or_update_transport", accountId, param);
}
public int createBroadcast(int accountId, String chatName) throws RpcException {
return gson.fromJson(getResult("create_broadcast", accountId, chatName), Integer.class);
}
public int createGroupChatUnencrypted(int accountId, String chatName) throws RpcException {
return gson.fromJson(getResult("create_group_chat_unencrypted", accountId, chatName), Integer.class);
}
public void setAccountsOrder(List<Integer> order) throws RpcException {
getResult("set_accounts_order", order);
}
private static class Request {
private final String jsonrpc = "2.0";
public final String method;
@@ -138,6 +185,10 @@ public class Rpc {
}
}
public String getMigrationError(int accountId) throws RpcException {
return gson.fromJson(getResult("get_migration_error", accountId), String.class);
}
private static class Response {
public final int id;
public final JsonElement result;
@@ -0,0 +1,196 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.view.ActionMode;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
import com.google.android.material.tabs.TabLayout;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.ArrayList;
public class AllMediaActivity extends PassphraseRequiredActionBarActivity
implements DcEventCenter.DcEventDelegate
{
public static final String CHAT_ID_EXTRA = "chat_id";
public static final String CONTACT_ID_EXTRA = "contact_id";
public static final String FORCE_GALLERY = "force_gallery";
static class TabData {
final int title;
final int type1;
final int type2;
final int type3;
TabData(int title, int type1, int type2, int type3) {
this.title = title;
this.type1 = type1;
this.type2 = type2;
this.type3 = type3;
}
};
private DcContext dcContext;
private int chatId;
private int contactId;
private final ArrayList<TabData> tabs = new ArrayList<>();
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onPreCreate() {
dynamicTheme = new DynamicNoActionBarTheme();
super.onPreCreate();
dcContext = DcHelper.getContext(this);
}
@Override
protected void onCreate(Bundle bundle, boolean ready) {
tabs.add(new TabData(R.string.webxdc_apps, DcMsg.DC_MSG_WEBXDC, 0, 0));
tabs.add(new TabData(R.string.tab_gallery, DcMsg.DC_MSG_IMAGE, DcMsg.DC_MSG_GIF, DcMsg.DC_MSG_VIDEO));
tabs.add(new TabData(R.string.files, DcMsg.DC_MSG_FILE, 0, 0));
tabs.add(new TabData(R.string.audio, DcMsg.DC_MSG_AUDIO, DcMsg.DC_MSG_VOICE, 0));
setContentView(R.layout.all_media_activity);
initializeResources();
setSupportActionBar(this.toolbar);
ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
supportActionBar.setTitle(isGlobalGallery() ? R.string.menu_all_media : R.string.apps_and_media);
}
this.tabLayout.setupWithViewPager(viewPager);
this.viewPager.setAdapter(new AllMediaPagerAdapter(getSupportFragmentManager()));
if (getIntent().getBooleanExtra(FORCE_GALLERY, false)) {
this.viewPager.setCurrentItem(1, false);
}
DcEventCenter eventCenter = DcHelper.getEventCenter(this);
eventCenter.addObserver(DcContext.DC_EVENT_CHAT_MODIFIED, this);
eventCenter.addObserver(DcContext.DC_EVENT_CONTACTS_CHANGED, this);
}
@Override
public void onDestroy() {
DcHelper.getEventCenter(this).removeObservers(this);
super.onDestroy();
}
@Override
public void handleEvent(@NonNull DcEvent event) {
}
private void initializeResources() {
chatId = getIntent().getIntExtra(CHAT_ID_EXTRA, 0);
contactId = getIntent().getIntExtra(CONTACT_ID_EXTRA, 0);
if (contactId!=0) {
chatId = dcContext.getChatIdByContactId(contactId);
}
if(chatId!=0) {
DcChat dcChat = dcContext.getChat(chatId);
if(!dcChat.isMultiUser()) {
final int[] members = dcContext.getChatContacts(chatId);
contactId = members.length>=1? members[0] : 0;
}
}
this.viewPager = ViewUtil.findById(this, R.id.pager);
this.toolbar = ViewUtil.findById(this, R.id.toolbar);
this.tabLayout = ViewUtil.findById(this, R.id.tab_layout);
}
private boolean isGlobalGallery() {
return contactId==0 && chatId==0;
}
private class AllMediaPagerAdapter extends FragmentStatePagerAdapter {
private Object currentFragment = null;
AllMediaPagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
@Override
public void setPrimaryItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
super.setPrimaryItem(container, position, object);
if (currentFragment != null && currentFragment != object) {
ActionMode action = null;
if (currentFragment instanceof MessageSelectorFragment) {
action = ((MessageSelectorFragment) currentFragment).getActionMode();
}
if (action != null) {
action.finish();
}
}
currentFragment = object;
}
@NonNull
@Override
public Fragment getItem(int position) {
TabData data = tabs.get(position);
Fragment fragment;
Bundle args = new Bundle();
if (data.type1 == DcMsg.DC_MSG_IMAGE) {
fragment = new AllMediaGalleryFragment();
args.putInt(AllMediaGalleryFragment.CHAT_ID_EXTRA, (chatId==0&&!isGlobalGallery())? -1 : chatId);
} else {
fragment = new AllMediaDocumentsFragment();
args.putInt(AllMediaDocumentsFragment.CHAT_ID_EXTRA, (chatId==0&&!isGlobalGallery())? -1 : chatId);
args.putInt(AllMediaDocumentsFragment.VIEWTYPE1, data.type1);
args.putInt(AllMediaDocumentsFragment.VIEWTYPE2, data.type2);
}
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return tabs.size();
}
@Override
public CharSequence getPageTitle(int position) {
return getString(tabs.get(position).title);
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
super.onOptionsItemSelected(item);
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
finish();
return true;
}
return false;
}
}
@@ -1,12 +1,13 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import androidx.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.b44t.messenger.DcMsg;
import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter;
@@ -24,7 +25,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
class AllMediaDocumentsAdapter extends StickyHeaderGridAdapter {
private final Context context;
private final ItemClickListener itemClickListener;
@@ -56,9 +57,9 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
}
}
ProfileDocumentsAdapter(@NonNull Context context,
BucketedThreadMedia media,
ItemClickListener clickListener)
AllMediaDocumentsAdapter(@NonNull Context context,
BucketedThreadMedia media,
ItemClickListener clickListener)
{
this.context = context;
this.media = media;
@@ -101,16 +102,18 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
viewHolder.audioView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
viewHolder.audioView.disablePlayer(!selected.isEmpty());
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
viewHolder.date.setVisibility(View.VISIBLE);
}
else if (slide != null && slide.isWebxdcDocument()) {
viewHolder.audioView.setVisibility(View.GONE);
viewHolder.documentView.setVisibility(View.GONE);
viewHolder.webxdcView.setVisibility(View.VISIBLE);
viewHolder.webxdcView.setWebxdc(dcMsg, context.getString(R.string.webxdc_app));
viewHolder.webxdcView.setWebxdc(dcMsg, "");
viewHolder.webxdcView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
viewHolder.webxdcView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
viewHolder.date.setVisibility(View.GONE);
}
else if (slide != null && slide.hasDocument()) {
viewHolder.audioView.setVisibility(View.GONE);
@@ -121,11 +124,13 @@ class ProfileDocumentsAdapter extends StickyHeaderGridAdapter {
viewHolder.documentView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
viewHolder.documentView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
viewHolder.itemView.setOnClickListener(view -> itemClickListener.onMediaClicked(dcMsg));
viewHolder.date.setVisibility(View.VISIBLE);
}
else {
viewHolder.documentView.setVisibility(View.GONE);
viewHolder.audioView.setVisibility(View.GONE);
viewHolder.webxdcView.setVisibility(View.GONE);
viewHolder.date.setVisibility(View.GONE);
}
viewHolder.itemView.setOnLongClickListener(view -> { itemClickListener.onMediaLongClicked(dcMsg); return true; });
@@ -5,7 +5,6 @@ import static com.b44t.messenger.DcChat.DC_CHAT_NO_CHAT;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -34,21 +33,21 @@ import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.Set;
public class ProfileDocumentsFragment
public class AllMediaDocumentsFragment
extends MessageSelectorFragment
implements LoaderManager.LoaderCallbacks<BucketedThreadMediaLoader.BucketedThreadMedia>,
ProfileDocumentsAdapter.ItemClickListener
AllMediaDocumentsAdapter.ItemClickListener
{
public static final String CHAT_ID_EXTRA = "chat_id";
public static final String SHOW_AUDIO_EXTRA = "show_audio";
public static final String SHOW_WEBXDC_EXTRA = "show_webxdc";
public static final String VIEWTYPE1 = "viewtype1";
public static final String VIEWTYPE2 = "viewtype2";
protected TextView noMedia;
protected RecyclerView recyclerView;
private StickyHeaderGridLayoutManager gridManager;
private final ActionModeCallback actionModeCallback = new ActionModeCallback();
private boolean showAudio;
private boolean showWebxdc;
private int viewtype1;
private int viewtype2;
protected int chatId;
@@ -58,8 +57,8 @@ public class ProfileDocumentsFragment
dcContext = DcHelper.getContext(getContext());
chatId = getArguments().getInt(CHAT_ID_EXTRA, -1);
showAudio = getArguments().getBoolean(SHOW_AUDIO_EXTRA, false);
showWebxdc = getArguments().getBoolean(SHOW_WEBXDC_EXTRA, false);
viewtype1 = getArguments().getInt(VIEWTYPE1, 0);
viewtype2 = getArguments().getInt(VIEWTYPE2, 0);
getLoaderManager().initLoader(0, null, this);
}
@@ -72,7 +71,7 @@ public class ProfileDocumentsFragment
this.noMedia = ViewUtil.findById(view, R.id.no_documents);
this.gridManager = new StickyHeaderGridLayoutManager(1);
this.recyclerView.setAdapter(new ProfileDocumentsAdapter(getContext(),
this.recyclerView.setAdapter(new AllMediaDocumentsAdapter(getContext(),
new BucketedThreadMediaLoader.BucketedThreadMedia(getContext()),
this));
this.recyclerView.setLayoutManager(gridManager);
@@ -106,26 +105,26 @@ public class ProfileDocumentsFragment
@Override
public Loader<BucketedThreadMediaLoader.BucketedThreadMedia> onCreateLoader(int i, Bundle bundle) {
if (showAudio) {
return new BucketedThreadMediaLoader(getContext(), chatId, DcMsg.DC_MSG_AUDIO, DcMsg.DC_MSG_VOICE, 0);
} else if (showWebxdc) {
return new BucketedThreadMediaLoader(getContext(), chatId, DcMsg.DC_MSG_WEBXDC, 0, 0);
} else {
return new BucketedThreadMediaLoader(getContext(), chatId, DcMsg.DC_MSG_FILE, 0, 0);
}
return new BucketedThreadMediaLoader(getContext(), chatId, viewtype1, viewtype2, 0);
}
@Override
public void onLoadFinished(Loader<BucketedThreadMediaLoader.BucketedThreadMedia> loader, BucketedThreadMediaLoader.BucketedThreadMedia bucketedThreadMedia) {
((ProfileDocumentsAdapter) recyclerView.getAdapter()).setMedia(bucketedThreadMedia);
((ProfileDocumentsAdapter) recyclerView.getAdapter()).notifyAllSectionsDataSetChanged();
((AllMediaDocumentsAdapter) recyclerView.getAdapter()).setMedia(bucketedThreadMedia);
((AllMediaDocumentsAdapter) recyclerView.getAdapter()).notifyAllSectionsDataSetChanged();
noMedia.setVisibility(recyclerView.getAdapter().getItemCount() > 0 ? View.GONE : View.VISIBLE);
if (chatId == DC_CHAT_NO_CHAT) {
noMedia.setText(R.string.tab_all_media_empty_hint);
} else if (showAudio) {
if (viewtype1 == DcMsg.DC_MSG_WEBXDC) {
noMedia.setText(R.string.all_apps_empty_hint);
} else if (viewtype1 == DcMsg.DC_MSG_FILE){
noMedia.setText(R.string.all_files_empty_hint);
} else {
noMedia.setText(R.string.tab_all_media_empty_hint);
}
} else if (viewtype1 == DcMsg.DC_MSG_AUDIO) {
noMedia.setText(R.string.tab_audio_empty_hint);
} else if (showWebxdc) {
} else if (viewtype1 == DcMsg.DC_MSG_WEBXDC) {
noMedia.setText(R.string.tab_webxdc_empty_hint);
}
getActivity().invalidateOptionsMenu();
@@ -133,7 +132,7 @@ public class ProfileDocumentsFragment
@Override
public void onLoaderReset(Loader<BucketedThreadMediaLoader.BucketedThreadMedia> cursorLoader) {
((ProfileDocumentsAdapter) recyclerView.getAdapter()).setMedia(new BucketedThreadMediaLoader.BucketedThreadMedia(getContext()));
((AllMediaDocumentsAdapter) recyclerView.getAdapter()).setMedia(new BucketedThreadMediaLoader.BucketedThreadMedia(getContext()));
}
@Override
@@ -151,7 +150,7 @@ public class ProfileDocumentsFragment
}
private void handleMediaMultiSelectClick(@NonNull DcMsg mediaRecord) {
ProfileDocumentsAdapter adapter = getListAdapter();
AllMediaDocumentsAdapter adapter = getListAdapter();
adapter.toggleSelection(mediaRecord);
if (adapter.getSelectedMediaCount() == 0) {
@@ -174,7 +173,7 @@ public class ProfileDocumentsFragment
}
if (dcMsg.getType() == DcMsg.DC_MSG_WEBXDC) {
DcHelper.openWebxdc(context, dcMsg);
WebxdcActivity.openWebxdcActivity(context, dcMsg);
} else {
DcHelper.openForViewOrShare(getActivity(), dcMsg.getId(), Intent.ACTION_VIEW);
}
@@ -183,7 +182,7 @@ public class ProfileDocumentsFragment
@Override
public void onMediaLongClicked(DcMsg mediaRecord) {
if (actionMode == null) {
((ProfileDocumentsAdapter) recyclerView.getAdapter()).toggleSelection(mediaRecord);
((AllMediaDocumentsAdapter) recyclerView.getAdapter()).toggleSelection(mediaRecord);
actionMode = ((AppCompatActivity) getActivity()).startSupportActionMode(actionModeCallback);
}
@@ -216,8 +215,8 @@ public class ProfileDocumentsFragment
menu.findItem(R.id.menu_add_to_home_screen).setVisible(webxdcApp);
}
private ProfileDocumentsAdapter getListAdapter() {
return (ProfileDocumentsAdapter) recyclerView.getAdapter();
private AllMediaDocumentsAdapter getListAdapter() {
return (AllMediaDocumentsAdapter) recyclerView.getAdapter();
}
private class ActionModeCallback implements ActionMode.Callback {
@@ -243,35 +242,35 @@ public class ProfileDocumentsFragment
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.details:
handleDisplayDetails(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
mode.finish();
return true;
case R.id.delete:
handleDeleteMessages(chatId, getListAdapter().getSelectedMedia());
mode.finish();
return true;
case R.id.share:
handleShare(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
case R.id.menu_add_to_home_screen:
WebxdcActivity.addToHomeScreen(getActivity(), getSelectedMessageRecord(getListAdapter().getSelectedMedia()).getId());
mode.finish();
return true;
case R.id.show_in_chat:
handleShowInChat(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
case R.id.save:
handleSaveAttachment(getListAdapter().getSelectedMedia());
return true;
case R.id.menu_resend:
handleResendMessage(getListAdapter().getSelectedMedia());
return true;
case R.id.menu_select_all:
getListAdapter().selectAll();
updateActionModeBar();
return true;
int itemId = menuItem.getItemId();
if (itemId == R.id.details) {
handleDisplayDetails(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
mode.finish();
return true;
} else if (itemId == R.id.delete) {
handleDeleteMessages(chatId, getListAdapter().getSelectedMedia());
mode.finish();
return true;
} else if (itemId == R.id.share) {
handleShare(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
} else if (itemId == R.id.menu_add_to_home_screen) {
WebxdcActivity.addToHomeScreen(getActivity(), getSelectedMessageRecord(getListAdapter().getSelectedMedia()).getId());
mode.finish();
return true;
} else if (itemId == R.id.show_in_chat) {
handleShowInChat(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
} else if (itemId == R.id.save) {
handleSaveAttachment(getListAdapter().getSelectedMedia());
return true;
} else if (itemId == R.id.menu_resend) {
handleResendMessage(getListAdapter().getSelectedMedia());
return true;
} else if (itemId == R.id.menu_select_all) {
getListAdapter().selectAll();
updateActionModeBar();
return true;
}
return false;
}
@@ -1,12 +1,13 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import androidx.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import com.b44t.messenger.DcMsg;
import com.codewaves.stickyheadergrid.StickyHeaderGridAdapter;
@@ -20,7 +21,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
class ProfileGalleryAdapter extends StickyHeaderGridAdapter {
class AllMediaGalleryAdapter extends StickyHeaderGridAdapter {
private final Context context;
private final GlideRequests glideRequests;
@@ -49,10 +50,10 @@ class ProfileGalleryAdapter extends StickyHeaderGridAdapter {
}
}
ProfileGalleryAdapter(@NonNull Context context,
@NonNull GlideRequests glideRequests,
BucketedThreadMedia media,
ItemClickListener clickListener)
AllMediaGalleryAdapter(@NonNull Context context,
@NonNull GlideRequests glideRequests,
BucketedThreadMedia media,
ItemClickListener clickListener)
{
this.context = context;
this.glideRequests = glideRequests;
@@ -5,14 +5,7 @@ import static com.b44t.messenger.DcChat.DC_CHAT_NO_CHAT;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
@@ -21,6 +14,13 @@ import android.view.ViewGroup;
import android.view.Window;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
import androidx.recyclerview.widget.RecyclerView;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcMsg;
@@ -35,10 +35,10 @@ import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.Set;
public class ProfileGalleryFragment
public class AllMediaGalleryFragment
extends MessageSelectorFragment
implements LoaderManager.LoaderCallbacks<BucketedThreadMediaLoader.BucketedThreadMedia>,
ProfileGalleryAdapter.ItemClickListener
AllMediaGalleryAdapter.ItemClickListener
{
public static final String CHAT_ID_EXTRA = "chat_id";
@@ -67,7 +67,7 @@ public class ProfileGalleryFragment
this.noMedia = ViewUtil.findById(view, R.id.no_images);
this.gridManager = new StickyHeaderGridLayoutManager(getCols());
this.recyclerView.setAdapter(new ProfileGalleryAdapter(getContext(),
this.recyclerView.setAdapter(new AllMediaGalleryAdapter(getContext(),
GlideApp.with(this),
new BucketedThreadMediaLoader.BucketedThreadMedia(getContext()),
this));
@@ -112,8 +112,8 @@ public class ProfileGalleryFragment
@Override
public void onLoadFinished(Loader<BucketedThreadMediaLoader.BucketedThreadMedia> loader, BucketedThreadMediaLoader.BucketedThreadMedia bucketedThreadMedia) {
((ProfileGalleryAdapter) recyclerView.getAdapter()).setMedia(bucketedThreadMedia);
((ProfileGalleryAdapter) recyclerView.getAdapter()).notifyAllSectionsDataSetChanged();
((AllMediaGalleryAdapter) recyclerView.getAdapter()).setMedia(bucketedThreadMedia);
((AllMediaGalleryAdapter) recyclerView.getAdapter()).notifyAllSectionsDataSetChanged();
noMedia.setVisibility(recyclerView.getAdapter().getItemCount() > 0 ? View.GONE : View.VISIBLE);
if (chatId == DC_CHAT_NO_CHAT) {
@@ -124,7 +124,7 @@ public class ProfileGalleryFragment
@Override
public void onLoaderReset(Loader<BucketedThreadMediaLoader.BucketedThreadMedia> cursorLoader) {
((ProfileGalleryAdapter) recyclerView.getAdapter()).setMedia(new BucketedThreadMediaLoader.BucketedThreadMedia(getContext()));
((AllMediaGalleryAdapter) recyclerView.getAdapter()).setMedia(new BucketedThreadMediaLoader.BucketedThreadMedia(getContext()));
}
@Override
@@ -142,7 +142,7 @@ public class ProfileGalleryFragment
}
private void handleMediaMultiSelectClick(@NonNull DcMsg mediaRecord) {
ProfileGalleryAdapter adapter = getListAdapter();
AllMediaGalleryAdapter adapter = getListAdapter();
adapter.toggleSelection(mediaRecord);
if (adapter.getSelectedMediaCount() == 0) {
@@ -175,7 +175,7 @@ public class ProfileGalleryFragment
@Override
public void onMediaLongClicked(DcMsg mediaRecord) {
if (actionMode == null) {
((ProfileGalleryAdapter) recyclerView.getAdapter()).toggleSelection(mediaRecord);
((AllMediaGalleryAdapter) recyclerView.getAdapter()).toggleSelection(mediaRecord);
recyclerView.getAdapter().notifyDataSetChanged();
actionMode = ((AppCompatActivity) getActivity()).startSupportActionMode(actionModeCallback);
@@ -206,8 +206,8 @@ public class ProfileGalleryFragment
menu.findItem(R.id.menu_resend).setVisible(canResend);
}
private ProfileGalleryAdapter getListAdapter() {
return (ProfileGalleryAdapter) recyclerView.getAdapter();
private AllMediaGalleryAdapter getListAdapter() {
return (AllMediaGalleryAdapter) recyclerView.getAdapter();
}
private class ActionModeCallback implements ActionMode.Callback {
@@ -233,31 +233,31 @@ public class ProfileGalleryFragment
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.details:
handleDisplayDetails(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
mode.finish();
return true;
case R.id.delete:
handleDeleteMessages(chatId, getListAdapter().getSelectedMedia());
mode.finish();
return true;
case R.id.share:
handleShare(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
case R.id.show_in_chat:
handleShowInChat(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
case R.id.save:
handleSaveAttachment(getListAdapter().getSelectedMedia());
return true;
case R.id.menu_resend:
handleResendMessage(getListAdapter().getSelectedMedia());
return true;
case R.id.menu_select_all:
getListAdapter().selectAll();
updateActionModeBar();
return true;
int itemId = menuItem.getItemId();
if (itemId == R.id.details) {
handleDisplayDetails(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
mode.finish();
return true;
} else if (itemId == R.id.delete) {
handleDeleteMessages(chatId, getListAdapter().getSelectedMedia());
mode.finish();
return true;
} else if (itemId == R.id.share) {
handleShare(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
} else if (itemId == R.id.show_in_chat) {
handleShowInChat(getSelectedMessageRecord(getListAdapter().getSelectedMedia()));
return true;
} else if (itemId == R.id.save) {
handleSaveAttachment(getListAdapter().getSelectedMedia());
return true;
} else if (itemId == R.id.menu_resend) {
handleResendMessage(getListAdapter().getSelectedMedia());
return true;
} else if (itemId == R.id.menu_select_all) {
getListAdapter().selectAll();
updateActionModeBar();
return true;
}
return false;
}
@@ -26,6 +26,7 @@ import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcEventEmitter;
import com.b44t.messenger.rpc.Rpc;
import com.b44t.messenger.rpc.RpcException;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
@@ -109,6 +110,7 @@ public class ApplicationContext extends MultiDexApplication {
dcAccounts = new DcAccounts(new File(getFilesDir(), "accounts").getAbsolutePath());
rpc = new Rpc(dcAccounts.getJsonrpcInstance());
rpc.start();
AccountManager.getInstance().migrateToDcAccounts(this);
int[] allAccounts = dcAccounts.getAll();
for (int accountId : allAccounts) {
@@ -124,12 +126,13 @@ public class ApplicationContext extends MultiDexApplication {
e.printStackTrace();
}
}
if ("deltafans@nine.testrun.org".equals(ac.getConfig("configured_addr")) && !ac.isCommunity()) {
ac.setCommunityMode(true);
}
}
if (allAccounts.length == 0) {
dcAccounts.addAccount();
try {
rpc.addAccount();
} catch (RpcException e) {
e.printStackTrace();
}
}
dcContext = dcAccounts.getSelectedAccount();
notificationCenter = new NotificationCenter(this);
@@ -146,8 +149,6 @@ public class ApplicationContext extends MultiDexApplication {
Log.i("DeltaChat", "shutting down event handler");
}, "eventThread").start();
rpc.start();
// migrating global notifications pref. to per-account config, added 10/July/24
final String NOTIFICATION_PREF = "pref_key_enable_notifications";
boolean isMuted = !Prefs.getBooleanPreference(this, NOTIFICATION_PREF, true);
@@ -218,31 +219,30 @@ public class ApplicationContext extends MultiDexApplication {
}
}, filter);
// MAYBE TODO: i think the ApplicationContext is also created
// when the app is stated by FetchWorker timeouts.
// in this case, the normal threads shall not be started.
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
PeriodicWorkRequest fetchWorkRequest = new PeriodicWorkRequest.Builder(
FetchWorker.class,
PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, // usually 15 minutes
TimeUnit.MILLISECONDS,
PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS, // the start may be preferred by up to 5 minutes, so we run every 10-15 minutes
TimeUnit.MILLISECONDS)
.setConstraints(constraints)
.build();
try {
// in Android 4 this throws exception due to R8/shrinking
WorkManager.getInstance(this)
.enqueueUniquePeriodicWork("FetchWorker", ExistingPeriodicWorkPolicy.KEEP, fetchWorkRequest);
} catch (Throwable e) {}
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true);
if (Prefs.isPushEnabled(this)) {
FcmReceiveService.register(this);
} else {
Log.i(TAG, "FCM disabled at build time");
// MAYBE TODO: i think the ApplicationContext is also created
// when the app is stated by FetchWorker timeouts.
// in this case, the normal threads shall not be started.
Constraints constraints = new Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build();
PeriodicWorkRequest fetchWorkRequest = new PeriodicWorkRequest.Builder(
FetchWorker.class,
PeriodicWorkRequest.MIN_PERIODIC_INTERVAL_MILLIS, // usually 15 minutes
TimeUnit.MILLISECONDS,
PeriodicWorkRequest.MIN_PERIODIC_FLEX_MILLIS, // the start may be preferred by up to 5 minutes, so we run every 10-15 minutes
TimeUnit.MILLISECONDS)
.setConstraints(constraints)
.build();
WorkManager.getInstance(this).enqueueUniquePeriodicWork(
"FetchWorker",
ExistingPeriodicWorkPolicy.KEEP,
fetchWorkRequest);
}
}
@@ -17,22 +17,15 @@
*/
package org.thoughtcrime.securesms;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
@@ -51,9 +44,10 @@ import org.thoughtcrime.securesms.preferences.PrivacyPreferenceFragment;
import org.thoughtcrime.securesms.preferences.CorrectedPreferenceFragment;
import org.thoughtcrime.securesms.preferences.NotificationsPreferenceFragment;
import org.thoughtcrime.securesms.preferences.widgets.ProfilePreference;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.qr.BackupTransferActivity;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.IntentUtils;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.ScreenLockUtil;
/**
@@ -74,6 +68,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
private static final String PREFERENCE_CATEGORY_MULTIDEVICE = "preference_category_multidevice";
private static final String PREFERENCE_CATEGORY_ADVANCED = "preference_category_advanced";
private static final String PREFERENCE_CATEGORY_CONNECTIVITY = "preference_category_connectivity";
private static final String PREFERENCE_CATEGORY_DONATE = "preference_category_donate";
private static final String PREFERENCE_CATEGORY_HELP = "preference_category_help";
public static final int REQUEST_CODE_SET_BACKGROUND = 11;
@@ -153,6 +148,9 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
this.findPreference(PREFERENCE_CATEGORY_ADVANCED)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_ADVANCED));
this.findPreference(PREFERENCE_CATEGORY_DONATE)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_DONATE));
this.findPreference(PREFERENCE_CATEGORY_HELP)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_HELP));
@@ -203,38 +201,6 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
.setSummary(AdvancedPreferenceFragment.getVersion(getActivity()));
}
@TargetApi(11)
private void tintIcons(Context context) {
Drawable notifications = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_notifications_white_24dp));
Drawable swap = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_swap_vert_white_24dp));
Drawable appearance = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_brightness_6_white_24dp));
Drawable chats = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_forum_white_24dp));
Drawable privacy = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_lock_white_24dp));
Drawable advanced = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_advanced_white_24dp));
Drawable help = DrawableCompat.wrap(ContextCompat.getDrawable(context, R.drawable.ic_help_white_24dp));
int[] tintAttr = new int[]{R.attr.pref_icon_tint};
TypedArray typedArray = context.obtainStyledAttributes(tintAttr);
int color = typedArray.getColor(0, 0x0);
typedArray.recycle();
DrawableCompat.setTint(notifications, color);
DrawableCompat.setTint(swap, color);
DrawableCompat.setTint(appearance, color);
DrawableCompat.setTint(chats, color);
DrawableCompat.setTint(privacy, color);
DrawableCompat.setTint(advanced, color);
DrawableCompat.setTint(help, color);
this.findPreference(PREFERENCE_CATEGORY_NOTIFICATIONS).setIcon(notifications);
this.findPreference(PREFERENCE_CATEGORY_CONNECTIVITY).setIcon(swap);
this.findPreference(PREFERENCE_CATEGORY_APPEARANCE).setIcon(appearance);
this.findPreference(PREFERENCE_CATEGORY_CHATS).setIcon(chats);
this.findPreference(PREFERENCE_CATEGORY_PRIVACY).setIcon(privacy);
this.findPreference(PREFERENCE_CATEGORY_ADVANCED).setIcon(advanced);
this.findPreference(PREFERENCE_CATEGORY_HELP).setIcon(help);
}
private class CategoryClickListener implements Preference.OnPreferenceClickListener {
private final String category;
@@ -289,6 +255,9 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
case PREFERENCE_CATEGORY_ADVANCED:
fragment = new AdvancedPreferenceFragment();
break;
case PREFERENCE_CATEGORY_DONATE:
IntentUtils.showInBrowser(requireActivity(), "https://arcanechat.me/#contribute");
break;
case PREFERENCE_CATEGORY_HELP:
startActivity(new Intent(getActivity(), LocalHelpActivity.class));
break;
@@ -9,9 +9,8 @@ public class AttachContactActivity extends ContactSelectionActivity {
public static final String CONTACT_ID_EXTRA = "contact_id_extra";
@Override
public void onContactSelected(int specialId, String addr) {
public void onContactSelected(int contactId) {
Intent intent = new Intent();
int contactId = DcHelper.getContext(this).lookupContactIdByAddr(addr);
intent.putExtra(CONTACT_ID_EXTRA, contactId);
setResult(RESULT_OK, intent);
finish();
@@ -1,9 +1,7 @@
package org.thoughtcrime.securesms;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewConfiguration;
@@ -18,9 +18,8 @@ import com.b44t.messenger.rpc.Rpc;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.ViewUtil;
import java.util.HashSet;
import java.util.Set;
@@ -93,7 +92,7 @@ public abstract class BaseConversationItem extends LinearLayout
protected boolean shouldInterceptClicks(DcMsg messageRecord) {
return batchSelected.isEmpty()
&& (messageRecord.isFailed()
|| messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_DISABLED
|| messageRecord.getInfoType() == DcMsg.DC_INFO_CHAT_E2EE
|| messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_ENABLED
|| messageRecord.getInfoType() == DcMsg.DC_INFO_INVALID_UNENCRYPTED_MAIL);
}
@@ -141,9 +140,7 @@ public abstract class BaseConversationItem extends LinearLayout
.setPositiveButton(R.string.ok, null)
.create();
d.show();
} else if (messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_DISABLED) {
DcHelper.showVerificationBrokenDialog(context, conversationRecipient.getName());
} else if (messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_ENABLED) {
} else if (messageRecord.getInfoType() == DcMsg.DC_INFO_CHAT_E2EE || messageRecord.getInfoType() == DcMsg.DC_INFO_PROTECTION_ENABLED) {
DcHelper.showProtectionEnabledDialog(context);
} else if (messageRecord.getInfoType() == DcMsg.DC_INFO_INVALID_UNENCRYPTED_MAIL) {
DcHelper.showInvalidUnencryptedDialog(context);
@@ -11,19 +11,23 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.core.content.ContextCompat;
import androidx.core.content.pm.ShortcutInfoCompat;
import androidx.core.content.pm.ShortcutManagerCompat;
import androidx.core.graphics.drawable.IconCompat;
import androidx.fragment.app.Fragment;
import com.b44t.messenger.DcChat;
@@ -33,6 +37,7 @@ import com.google.android.material.snackbar.Snackbar;
import org.thoughtcrime.securesms.components.registration.PulsingFloatingActionButton;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.connect.DirectShareUtil;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.RelayUtil;
import org.thoughtcrime.securesms.util.SendRelayedMessageUtil;
import org.thoughtcrime.securesms.util.Util;
@@ -316,9 +321,41 @@ public abstract class BaseConversationListFragment extends Fragment implements A
updateActionModeItems(actionMode.getMenu());
}
private void handleAddToHomeScreen() {
final Activity activity = requireActivity();
final DcContext dcContext = DcHelper.getContext(activity);
final Set<Long> selectedChats = getListAdapter().getBatchSelections();
final DcChat chat = dcContext.getChat(selectedChats.iterator().next().intValue());
Intent intent = new Intent(activity, ShareActivity.class);
intent.setAction(Intent.ACTION_SEND);
intent.putExtra(ShareActivity.EXTRA_ACC_ID, dcContext.getAccountId());
intent.putExtra(ShareActivity.EXTRA_CHAT_ID, chat.getId());
Recipient recipient = new Recipient(activity, chat);
Util.runOnAnyBackgroundThread(() -> {
Bitmap avatar = DirectShareUtil.getIconForShortcut(activity, recipient);
ShortcutInfoCompat shortcutInfoCompat = new ShortcutInfoCompat.Builder(activity, "chat-" + dcContext.getAccountId() + "-" + chat.getId())
.setShortLabel(chat.getName())
.setIcon(IconCompat.createWithAdaptiveBitmap(avatar))
.setIntent(intent)
.build();
Util.runOnMain(() -> {
if (!ShortcutManagerCompat.requestPinShortcut(activity, shortcutInfoCompat, null)) {
Toast.makeText(activity, "ErrAddToHomescreen: requestPinShortcut() failed", Toast.LENGTH_LONG).show();
} else if (actionMode != null) {
actionMode.finish();
actionMode = null;
}
});
});
}
private void updateActionModeItems(Menu menu) {
// We do not show action mode icons when relaying (= sharing or forwarding).
if (!isRelayingMessageContent(requireActivity())) {
final int selectedCount = getListAdapter().getBatchSelections().size();
menu.findItem(R.id.menu_add_to_home_screen).setVisible(selectedCount == 1);
MenuItem archiveItem = menu.findItem(R.id.menu_archive_selected);
if (offerToArchive()) {
archiveItem.setIcon(R.drawable.ic_archive_white_24dp);
@@ -376,13 +413,28 @@ public abstract class BaseConversationListFragment extends Fragment implements A
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_select_all: handleSelectAllThreads(); return true;
case R.id.menu_delete_selected: handleDeleteAllSelected(); return true;
case R.id.menu_pin_selected: handlePinAllSelected(); return true;
case R.id.menu_archive_selected: handleArchiveAllSelected(); return true;
case R.id.menu_mute_selected: handleMuteAllSelected(); return true;
case R.id.menu_marknoticed_selected: handleMarknoticedSelected(); return true;
int itemId = item.getItemId();
if (itemId == R.id.menu_select_all) {
handleSelectAllThreads();
return true;
} else if (itemId == R.id.menu_delete_selected) {
handleDeleteAllSelected();
return true;
} else if (itemId == R.id.menu_pin_selected) {
handlePinAllSelected();
return true;
} else if (itemId == R.id.menu_archive_selected) {
handleArchiveAllSelected();
return true;
} else if (itemId == R.id.menu_mute_selected) {
handleMuteAllSelected();
return true;
} else if (itemId == R.id.menu_marknoticed_selected) {
handleMarknoticedSelected();
return true;
} else if (itemId == R.id.menu_add_to_home_screen) {
handleAddToHomeScreen();
return true;
}
return false;
@@ -25,6 +25,7 @@ public interface BindableConversationItem extends Unbindable {
interface EventListener {
void onQuoteClicked(DcMsg messageRecord);
void onJumpToOriginalClicked(DcMsg messageRecord);
void onShowFullClicked(DcMsg messageRecord);
void onDownloadClicked(DcMsg messageRecord);
void onReactionClicked(DcMsg messageRecord);
@@ -1,20 +1,20 @@
package org.thoughtcrime.securesms;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
import androidx.appcompat.app.AlertDialog;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.Loader;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
@@ -33,6 +33,8 @@ import java.util.List;
*/
public class ContactMultiSelectionActivity extends ContactSelectionActivity {
public static final String CONTACTS_EXTRA = "contacts_extra";
@Override
protected void onCreate(Bundle icicle, boolean ready) {
getIntent().putExtra(ContactSelectionListFragment.MULTI_SELECT, true);
@@ -57,11 +59,10 @@ public class ContactMultiSelectionActivity extends ContactSelectionActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.menu_add_members:
saveSelection();
finish();
return true;
if (item.getItemId() == R.id.menu_add_members) {
saveSelection();
finish();
return true;
}
return false;
@@ -69,12 +70,8 @@ public class ContactMultiSelectionActivity extends ContactSelectionActivity {
private void saveSelection() {
Intent resultIntent = getIntent();
List<String> selectedContacts = contactsFragment.getSelectedContacts();
if (selectedContacts != null) {
resultIntent.putStringArrayListExtra("contacts", new ArrayList<>(selectedContacts));
}
List<Integer> selectedContacts = contactsFragment.getSelectedContacts();
resultIntent.putIntegerArrayListExtra(CONTACTS_EXTRA, new ArrayList<>(selectedContacts));
setResult(RESULT_OK, resultIntent);
}
}
@@ -89,8 +89,8 @@ public abstract class ContactSelectionActivity extends PassphraseRequiredActionB
}
@Override
public void onContactSelected(int specialId, String number) {}
public void onContactSelected(int contactId) {}
@Override
public void onContactDeselected(int specialId, String number) {}
public void onContactDeselected(int contactId) {}
}
@@ -26,7 +26,6 @@ import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseIntArray;
@@ -84,13 +83,14 @@ public class ContactSelectionListFragment extends Fragment
public static final String MULTI_SELECT = "multi_select";
public static final String SELECT_VERIFIED_EXTRA = "select_verified";
public static final String SELECT_UNENCRYPTED_EXTRA = "select_unencrypted_extra";
public static final String ALLOW_CREATION = "allow_creation";
public static final String PRESELECTED_CONTACTS = "preselected_contacts";
public static final int CONTACT_ADDR_RESULT_CODE = 61123;
private DcContext dcContext;
private Set<String> selectedContacts;
private Set<Integer> selectedContacts;
private OnContactSelectedListener onContactSelectedListener;
private String cursorFilter;
private RecyclerView recyclerView;
@@ -149,16 +149,16 @@ public class ContactSelectionListFragment extends Fragment
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.menu_select_all:
handleSelectAll();
return true;
case R.id.menu_view_profile:
handleViewProfile();
return true;
case R.id.menu_delete_selected:
handleDeleteSelected();
return true;
int itemId = menuItem.getItemId();
if (itemId == R.id.menu_select_all) {
handleSelectAll();
return true;
} else if (itemId == R.id.menu_view_profile) {
handleViewProfile();
return true;
} else if (itemId == R.id.menu_delete_selected) {
handleDeleteSelected();
return true;
}
return false;
}
@@ -213,16 +213,9 @@ public class ContactSelectionListFragment extends Fragment
ContactSelectionListAdapter adapter = getContactSelectionListAdapter();
final SparseIntArray actionModeSelection = adapter.getActionModeSelection().clone();
new Thread(() -> {
boolean failed = false;
for (int index = 0; index < actionModeSelection.size(); index++) {
int contactId = actionModeSelection.valueAt(index);
boolean currentFailed = !dcContext.deleteContact(contactId);
failed = currentFailed || failed;
}
if (failed) {
Util.runOnMain(()-> {
Toast.makeText(getActivity(), R.string.cannot_delete_contacts_in_use, Toast.LENGTH_LONG).show();
});
dcContext.deleteContact(contactId);
}
}).start();
adapter.resetActionModeSelection();
@@ -242,8 +235,8 @@ public class ContactSelectionListFragment extends Fragment
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
}
public @NonNull List<String> getSelectedContacts() {
List<String> selected = new LinkedList<>();
public @NonNull List<Integer> getSelectedContacts() {
List<Integer> selected = new LinkedList<>();
if (selectedContacts != null) {
selected.addAll(selectedContacts);
}
@@ -259,6 +252,10 @@ public class ContactSelectionListFragment extends Fragment
return getActivity().getIntent().getBooleanExtra(SELECT_VERIFIED_EXTRA, false);
}
private boolean isUnencrypted() {
return getActivity().getIntent().getBooleanExtra(SELECT_UNENCRYPTED_EXTRA, false);
}
private void initializeCursor() {
ContactSelectionListAdapter adapter = new ContactSelectionListAdapter(getActivity(),
GlideApp.with(this),
@@ -266,7 +263,7 @@ public class ContactSelectionListFragment extends Fragment
isMulti(),
true);
selectedContacts = adapter.getSelectedContacts();
ArrayList<String> preselectedContacts = getActivity().getIntent().getStringArrayListExtra(PRESELECTED_CONTACTS);
ArrayList<Integer> preselectedContacts = getActivity().getIntent().getIntegerArrayListExtra(PRESELECTED_CONTACTS);
if(preselectedContacts!=null) {
selectedContacts.addAll(preselectedContacts);
}
@@ -281,11 +278,11 @@ public class ContactSelectionListFragment extends Fragment
@Override
public Loader<DcContactsLoader.Ret> onCreateLoader(int id, Bundle args) {
final boolean allowCreation = getActivity().getIntent().getBooleanExtra(ALLOW_CREATION, true);
final boolean addCreateContactLink = allowCreation && !isSelectVerfied();
final boolean addCreateContactLink = allowCreation && isUnencrypted();
final boolean addCreateGroupLinks = allowCreation && !isRelayingMessageContent(getActivity()) && !isMulti();
final boolean addScanQRLink = allowCreation && !isMulti();
final int listflags = DcContext.DC_GCL_ADD_SELF;
final int listflags = DcContext.DC_GCL_ADD_SELF | (isUnencrypted()? DcContext.DC_GCL_ADDRESS : 0);
return new DcContactsLoader(getActivity(), listflags, cursorFilter, addCreateGroupLinks, addCreateContactLink, addScanQRLink, false);
}
@@ -344,10 +341,9 @@ public class ContactSelectionListFragment extends Fragment
}
return;
}
int specialId = contact.getSpecialId();
String addr = contact.getNumber();
if (!isMulti() || !selectedContacts.contains(addr)) {
if (specialId == DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT) {
int contactId = contact.getSpecialId();
if (!isMulti() || !selectedContacts.contains(contactId)) {
if (contactId == DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT) {
Intent intent = new Intent(getContext(), NewContactActivity.class);
if (dcContext.mayBeValidAddr(cursorFilter)) {
intent.putExtra(NewContactActivity.ADDR_EXTRA, cursorFilter);
@@ -371,16 +367,16 @@ public class ContactSelectionListFragment extends Fragment
return;
}
selectedContacts.add(addr);
selectedContacts.add(contactId);
contact.setChecked(true);
if (onContactSelectedListener != null) {
onContactSelectedListener.onContactSelected(specialId, addr);
onContactSelectedListener.onContactSelected(contactId);
}
} else {
selectedContacts.remove(addr);
selectedContacts.remove(contactId);
contact.setChecked(false);
if (onContactSelectedListener != null) {
onContactSelectedListener.onContactDeselected(specialId, addr);
onContactSelectedListener.onContactDeselected(contactId);
}
}
}
@@ -406,8 +402,8 @@ public class ContactSelectionListFragment extends Fragment
}
public interface OnContactSelectedListener {
void onContactSelected(int specialId, String number);
void onContactDeselected(int specialId, String number);
void onContactSelected(int contactId);
void onContactDeselected(int contactId);
}
@Override
@@ -421,7 +417,10 @@ public class ContactSelectionListFragment extends Fragment
public void onActivityResult(int reqCode, int resultCode, final Intent data) {
super.onActivityResult(reqCode, resultCode, data);
if (resultCode == Activity.RESULT_OK && reqCode == CONTACT_ADDR_RESULT_CODE) {
selectedContacts.add(data.getStringExtra(NewContactActivity.ADDR_EXTRA));
int contactId = data.getIntExtra(NewContactActivity.CONTACT_ID_EXTRA, 0);
if (contactId != 0) {
selectedContacts.add(contactId);
}
getLoaderManager().restartLoader(0, null, ContactSelectionListFragment.this);
}
}
@@ -45,6 +45,7 @@ import android.text.TextWatcher;
import android.util.Log;
import android.util.Pair;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@@ -53,6 +54,7 @@ import android.view.View.OnFocusChangeListener;
import android.view.View.OnKeyListener;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -60,6 +62,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.widget.SearchView;
@@ -117,7 +120,7 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.concurrent.AssertedSuccessListener;
import org.thoughtcrime.securesms.util.guava.Optional;
import org.thoughtcrime.securesms.util.views.Stub;
import org.thoughtcrime.securesms.util.views.ProgressDialog;
import org.thoughtcrime.securesms.video.recode.VideoRecoder;
import org.thoughtcrime.securesms.videochat.VideochatUtil;
@@ -173,11 +176,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private View composePanel;
private ScaleStableImageView backgroundView;
private MessageRequestsBottomView messageRequestBottomView;
private ProgressDialog progressDialog;
private AttachmentTypeSelector attachmentTypeSelector;
private AttachmentManager attachmentManager;
private AudioRecorder audioRecorder;
private Stub<MediaKeyboard> emojiDrawerStub;
private FrameLayout emojiPickerContainer;
private MediaKeyboard emojiPicker;
protected HidingLinearLayout quickAttachmentToggle;
private InputPanel inputPanel;
@@ -191,6 +196,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private boolean isDefaultSms = true;
private boolean isSecurityInitialized = false;
private boolean successfulForwardingAttempt = false;
private boolean isEditing = false;
@Override
protected void onCreate(Bundle state, boolean ready) {
@@ -317,10 +323,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
super.onConfigurationChanged(newConfig);
composeText.setTransport(sendButton.getSelectedTransport());
if (emojiDrawerStub.resolved() && container.getCurrentInput() == emojiDrawerStub.get()) {
if (emojiPicker != null && container.getCurrentInput() == emojiPicker) {
container.hideAttachedInput(true);
}
emojiPicker = null; // force reloading next time onEmojiToggle() is called
initializeBackground();
}
@@ -358,7 +365,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
for (int i = 0; i < uriCount; i++) {
uriList.add(multipleUris.getItemAt(i).getUri());
}
askSendingFiles(uriList, () -> SendRelayedMessageUtil.sendMultipleMsgs(this, chatId, uriList, null));
askSendingFiles(uriList, () -> {
Util.runOnAnyBackgroundThread(() -> {
SendRelayedMessageUtil.sendMultipleMsgs(this, chatId, uriList, null);
});
});
}
}
}
@@ -427,7 +438,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
getMenuInflater().inflate(R.menu.conversation, menu);
if (dcChat.isSelfTalk() || dcChat.isBroadcast()) {
if (dcChat.isSelfTalk() || dcChat.isOutBroadcast()) {
menu.findItem(R.id.menu_mute_notifications).setVisible(false);
} else if(dcChat.isMuted()) {
menu.findItem(R.id.menu_mute_notifications).setTitle(R.string.menu_unmute);
@@ -437,12 +448,17 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
menu.findItem(R.id.menu_show_map).setVisible(false);
}
if (!dcChat.canSend() || dcChat.isBroadcast() || dcChat.isMailingList()) {
if (!dcChat.canSend() || dcChat.isMailingList() ) {
menu.findItem(R.id.menu_ephemeral_messages).setVisible(false);
}
if (isMultiUser()) {
if (dcChat.canSend() && !dcChat.isBroadcast() && !dcChat.isMailingList()) {
if (dcChat.isInBroadcast() && !dcChat.isContactRequest()) {
menu.findItem(R.id.menu_leave).setTitle(R.string.menu_leave_channel).setVisible(true);
} else if (dcChat.isEncrypted()
&& dcChat.canSend()
&& !dcChat.isOutBroadcast()
&& !dcChat.isMailingList()) {
menu.findItem(R.id.menu_leave).setVisible(true);
}
}
@@ -486,6 +502,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
Log.e(TAG, "cannot set up in-chat-search: ", e);
}
if (!dcChat.canSend() || isEditing) {
MenuItem attachItem = menu.findItem(R.id.menu_add_attachment);
if (attachItem!=null) {
attachItem.setVisible(false);
}
}
super.onPrepareOptionsMenu(menu);
return true;
}
@@ -493,17 +516,43 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.menu_leave: handleLeaveGroup(); return true;
case R.id.menu_archive_chat: handleArchiveChat(); return true;
case R.id.menu_clear_chat: fragment.handleClearChat(); return true;
case R.id.menu_delete_chat: handleDeleteChat(); return true;
case R.id.menu_mute_notifications: handleMuteNotifications(); return true;
case R.id.menu_show_map: WebxdcActivity.openMaps(this, chatId); return true;
case R.id.menu_search_up: handleMenuSearchNext(false); return true;
case R.id.menu_search_down: handleMenuSearchNext(true); return true;
case android.R.id.home: handleReturnToConversationList(); return true;
case R.id.menu_ephemeral_messages: handleEphemeralMessages(); return true;
int itemId = item.getItemId();
if (itemId == R.id.menu_add_attachment) {
handleAddAttachment();
return true;
} else if (itemId == R.id.menu_leave) {
handleLeaveGroup();
return true;
} else if (itemId == R.id.menu_archive_chat) {
handleArchiveChat();
return true;
} else if (itemId == R.id.menu_clear_chat) {
fragment.handleClearChat();
return true;
} else if (itemId == R.id.menu_delete_chat) {
handleDeleteChat();
return true;
} else if (itemId == R.id.menu_mute_notifications) {
handleMuteNotifications();
return true;
} else if (itemId == R.id.menu_show_map) {
WebxdcActivity.openMaps(this, chatId);
return true;
} else if (itemId == R.id.menu_all_media) {
handleAllMedia();
return true;
} else if (itemId == R.id.menu_search_up) {
handleMenuSearchNext(false);
return true;
} else if (itemId == R.id.menu_search_down) {
handleMenuSearchNext(true);
return true;
} else if (itemId == android.R.id.home) {
handleReturnToConversationList();
return true;
} else if (itemId == R.id.menu_ephemeral_messages) {
handleEphemeralMessages();
return true;
}
return false;
@@ -575,15 +624,26 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private void handleProfile() {
Intent intent = new Intent(this, ProfileActivity.class);
intent.putExtra(ProfileActivity.CHAT_ID_EXTRA, chatId);
intent.putExtra(ProfileActivity.FROM_CHAT, true);
startActivity(intent);
overridePendingTransition(0, 0);
}
private void handleAllMedia() {
Intent intent = new Intent(this, AllMediaActivity.class);
intent.putExtra(AllMediaActivity.CHAT_ID_EXTRA, chatId);
startActivity(intent);
}
private void handleLeaveGroup() {
@StringRes int leaveLabel;
if (dcChat.isInBroadcast()) {
leaveLabel = R.string.menu_leave_channel;
} else {
leaveLabel = R.string.menu_leave_group;
}
AlertDialog dialog = new AlertDialog.Builder(this)
.setMessage(getString(R.string.ask_leave_group))
.setPositiveButton(R.string.menu_leave_group, (d, which) -> {
.setPositiveButton(leaveLabel, (d, which) -> {
dcContext.removeContactFromChat(chatId, DcContact.DC_CONTACT_ID_SELF);
Toast.makeText(this, getString(R.string.done), Toast.LENGTH_SHORT).show();
})
@@ -646,7 +706,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (!dcChat.isMultiUser()) {
int[] contactIds = dcContext.getChatContacts(chatId);
if (contactIds.length == 1 || contactIds.length == 2) {
name = dcContext.getContact(contactIds[0]).getNameNAddr();
name = dcContext.getContact(contactIds[0]).getDisplayName();
}
}
new AlertDialog.Builder(this)
@@ -699,6 +759,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
* @return
*/
private ListenableFuture<Boolean> initializeDraft() {
isEditing = false;
final SettableFuture<Boolean> future = new SettableFuture<>();
DcMsg draft = dcContext.getDraft(chatId);
final String sharedText = RelayUtil.getSharedText(this);
@@ -730,8 +791,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
handleReplyMessage(quote);
}
String filename = draft.getFile();
if (filename.isEmpty() || !new File(filename).exists()) {
String file = draft.getFile();
if (file.isEmpty() || !new File(file).exists()) {
future.set(!text.isEmpty());
updateToggleButtonState();
return future;
@@ -751,26 +812,21 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
};
File file = new File(filename);
Uri uri = Uri.fromFile(file);
switch (draft.getType()) {
case DcMsg.DC_MSG_IMAGE:
setMedia(uri, MediaType.IMAGE).addListener(listener);
setMedia(draft, MediaType.IMAGE).addListener(listener);
break;
case DcMsg.DC_MSG_GIF:
setMedia(uri, MediaType.GIF).addListener(listener);
setMedia(draft, MediaType.GIF).addListener(listener);
break;
case DcMsg.DC_MSG_AUDIO:
setMedia(uri, MediaType.AUDIO).addListener(listener);
setMedia(draft, MediaType.AUDIO).addListener(listener);
break;
case DcMsg.DC_MSG_VIDEO:
setMedia(uri, MediaType.VIDEO).addListener(listener);
break;
case DcMsg.DC_MSG_WEBXDC:
setMedia(draft, MediaType.DOCUMENT).addListener(listener);
setMedia(draft, MediaType.VIDEO).addListener(listener);
break;
default:
setMedia(uri, MediaType.DOCUMENT).addListener(listener);
setMedia(draft, MediaType.DOCUMENT).addListener(listener);
break;
}
@@ -804,7 +860,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
sendButton = ViewUtil.findById(this, R.id.send_button);
attachButton = ViewUtil.findById(this, R.id.attach_button);
composeText = ViewUtil.findById(this, R.id.embedded_text_editor);
emojiDrawerStub = ViewUtil.findStubById(this, R.id.emoji_drawer_stub);
emojiPickerContainer = ViewUtil.findById(this, R.id.emoji_picker_container);
composePanel = ViewUtil.findById(this, R.id.bottom_panel);
container = ViewUtil.findById(this, R.id.layout_container);
quickAttachmentToggle = ViewUtil.findById(this, R.id.quick_attachment_toggle);
@@ -976,14 +1032,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
protected static final int ACTION_SEND_OUT = 1;
protected static final int ACTION_SAVE_DRAFT = 2;
private String getSelfReaction(int msgId) {
try {
final String [] selfReactions = rpc.getMsgReactions(dcContext.getAccountId(), msgId).getReactionsByContact().get(DcContact.DC_CONTACT_ID_SELF);
if (selfReactions != null && selfReactions.length > 0) return selfReactions[0];
} catch(Exception e) { e.printStackTrace(); }
return null;
}
protected ListenableFuture<Integer> processComposeControls(int action) {
return processComposeControls(action, composeText.getTextTrimmed(),
attachmentManager.isAttachmentPresent() ?
@@ -994,9 +1042,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
final SettableFuture<Integer> future = new SettableFuture<>();
DcMsg msg = null;
Optional<QuoteModel> quote = inputPanel.getQuote();
Integer recompress = 0;
boolean editing = isEditing;
// for a quick ui feedback, we clear the related controls immediately on sending messages.
// for drafts, however, we do not change the controls, the activity may be resumed.
@@ -1005,94 +1052,114 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
inputPanel.clearQuote();
}
if(slideDeck!=null) {
Util.runOnAnyBackgroundThread(() -> {
DcMsg msg = null;
int recompress = 0;
if (action==ACTION_SEND_OUT) {
attachmentManager.clear(glideRequests, false);
if (editing) {
int msgId = quote.get().getQuotedMsg().getId();
if (action == ACTION_SEND_OUT) {
dcContext.sendEditRequest(msgId, body);
} else {
dcContext.setDraft(chatId, null);
}
future.set(chatId);
return;
}
try {
if (slideDeck.getWebxdctDraftId() != 0) {
msg = dcContext.getDraft(chatId);
} else {
List<Attachment> attachments = slideDeck.asAttachments();
for (Attachment attachment : attachments) {
String contentType = attachment.getContentType();
if (MediaUtil.isImageType(contentType) && slideDeck.getDocumentSlide() == null) {
msg = new DcMsg(dcContext,
MediaUtil.isGif(contentType) ? DcMsg.DC_MSG_GIF : DcMsg.DC_MSG_IMAGE);
msg.setDimension(attachment.getWidth(), attachment.getHeight());
} else if (MediaUtil.isAudioType(contentType)) {
msg = new DcMsg(dcContext,
attachment.isVoiceNote() ? DcMsg.DC_MSG_VOICE : DcMsg.DC_MSG_AUDIO);
} else if (MediaUtil.isVideoType(contentType) && slideDeck.getDocumentSlide() == null) {
msg = new DcMsg(dcContext, DcMsg.DC_MSG_VIDEO);
recompress = DcMsg.DC_MSG_VIDEO;
} else {
msg = new DcMsg(dcContext, DcMsg.DC_MSG_FILE);
if(slideDeck!=null) {
if (action==ACTION_SEND_OUT) {
Util.runOnMain(() -> attachmentManager.clear(glideRequests, false));
}
try {
if (slideDeck.getWebxdctDraftId() != 0) {
msg = dcContext.getDraft(chatId);
} else {
List<Attachment> attachments = slideDeck.asAttachments();
for (Attachment attachment : attachments) {
String contentType = attachment.getContentType();
if (MediaUtil.isImageType(contentType) && slideDeck.getDocumentSlide() == null) {
msg = new DcMsg(dcContext,
MediaUtil.isGif(contentType) ? DcMsg.DC_MSG_GIF : DcMsg.DC_MSG_IMAGE);
msg.setDimension(attachment.getWidth(), attachment.getHeight());
} else if (MediaUtil.isAudioType(contentType)) {
msg = new DcMsg(dcContext,
attachment.isVoiceNote() ? DcMsg.DC_MSG_VOICE : DcMsg.DC_MSG_AUDIO);
} else if (MediaUtil.isVideoType(contentType) && slideDeck.getDocumentSlide() == null) {
msg = new DcMsg(dcContext, DcMsg.DC_MSG_VIDEO);
recompress = DcMsg.DC_MSG_VIDEO;
} else {
msg = new DcMsg(dcContext, DcMsg.DC_MSG_FILE);
}
String path = attachment.getRealPath(this);
msg.setFileAndDeduplicate(path, attachment.getFileName(), null);
}
String path = attachment.getRealPath(this);
msg.setFile(path, null);
}
if (msg != null) {
msg.setText(body);
}
}
catch(Exception e) {
e.printStackTrace();
}
}
else if (!body.isEmpty()){
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setText(body);
}
catch(Exception e) {
e.printStackTrace();
if (quote.isPresent()) {
if (msg == null) msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setQuote(quote.get().getQuotedMsg());
}
}
else if (!body.isEmpty()){
msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setText(body);
}
if (quote.isPresent()) {
if (msg == null) msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setQuote(quote.get().getQuotedMsg());
}
if (action==ACTION_SEND_OUT) {
// msg may still be null to clear drafts
new AsyncTask<Object, Void, Void>() {
@Override
protected Void doInBackground(Object... param) {
DcMsg msg = (DcMsg)param[0];
Integer recompress = (Integer)param[1];
if (action==ACTION_SEND_OUT) {
// for WEBXDC, drafts are just sent out as is.
// for preparations and other cases, cleanup draft soon.
if (msg == null || msg.getType() != DcMsg.DC_MSG_WEBXDC) {
dcContext.setDraft(dcChat.getId(), null);
}
// for WEBXDC, drafts are just sent out as is.
// for preparations and other cases, cleanup draft soon.
if (msg == null || msg.getType() != DcMsg.DC_MSG_WEBXDC) {
dcContext.setDraft(dcChat.getId(), null);
}
if(msg!=null)
{
boolean doSend = true;
if (recompress==DcMsg.DC_MSG_VIDEO) {
doSend = VideoRecoder.prepareVideo(ConversationActivity.this, dcChat.getId(), msg);
}
if (doSend) {
if (dcContext.sendMsg(dcChat.getId(), msg) == 0) {
Util.runOnMain(()-> Toast.makeText(ConversationActivity.this, dcContext.getLastError(), Toast.LENGTH_LONG).show());
return null;
if(msg!=null) {
boolean doSend = true;
if (recompress==DcMsg.DC_MSG_VIDEO) {
Util.runOnMain(() -> {
if (isFinishing()) return;
progressDialog = ProgressDialog.show(
ConversationActivity.this,
"",
getString(R.string.one_moment),
true,
false
);
});
doSend = VideoRecoder.prepareVideo(ConversationActivity.this, dcChat.getId(), msg);
Util.runOnMain(() -> {
try {
if (progressDialog != null) progressDialog.dismiss();
} catch (final IllegalArgumentException e) {
// The activity is finishing/destroyed, do nothing.
}
}
Util.runOnMain(()-> sendComplete(dcChat.getId()));
});
}
}
else {
dcContext.setDraft(dcChat.getId(), msg);
}
return null;
}
@Override
protected void onPostExecute(Void result) {
future.set(chatId);
if (doSend) {
if (dcContext.sendMsg(dcChat.getId(), msg) == 0) {
Util.runOnMain(()-> Toast.makeText(ConversationActivity.this, dcContext.getLastError(), Toast.LENGTH_LONG).show());
future.set(chatId);
return;
}
}
Util.runOnMain(() -> sendComplete(dcChat.getId()));
}
} else {
dcContext.setDraft(dcChat.getId(), msg);
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, msg, recompress);
future.set(chatId);
});
return future;
}
@@ -1127,7 +1194,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
return;
}
if (composeText.getText().length() == 0 && !attachmentManager.isAttachmentPresent()) {
if (!isEditing && composeText.getText().length() == 0 && !attachmentManager.isAttachmentPresent()) {
buttonToggle.display(attachButton);
quickAttachmentToggle.show();
} else {
@@ -1225,22 +1292,36 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
});
}
private void reloadEmojiPicker() {
emojiPickerContainer.removeAllViews();
emojiPicker = (MediaKeyboard) LayoutInflater.from(this).inflate(R.layout.conversation_activity_emojidrawer_stub, emojiPickerContainer, false);
emojiPickerContainer.addView(emojiPicker);
inputPanel.setMediaKeyboard(emojiPicker);
}
@Override
public void onEmojiToggle() {
if (!emojiDrawerStub.resolved()) {
inputPanel.setMediaKeyboard(emojiDrawerStub.get());
if (emojiPicker == null) {
reloadEmojiPicker();
}
if (container.getCurrentInput() == emojiDrawerStub.get()) {
if (container.getCurrentInput() == emojiPicker) {
container.showSoftkey(composeText);
} else {
container.show(composeText, emojiDrawerStub.get());
container.show(composeText, emojiPicker);
}
}
@Override
public void onQuoteDismissed() {
if (isEditing) composeText.setText("");
isEditing = false;
}
// media selected by the system keyboard
@Override
public void onMediaSelected(@NonNull Uri uri, String contentType) {
if (isEditing) return;
if (MediaUtil.isImageType(contentType)) {
sendSticker(uri, contentType);
} else if (MediaUtil.isVideoType(contentType)) {
@@ -1262,7 +1343,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (quote.isPresent()) {
msg.setQuote(quote.get().getQuotedMsg());
}
msg.setFile(path, null);
msg.setFileAndDeduplicate(path, null, null);
msg.forceSticker();
dcContext.sendMsg(chatId, msg);
}
@@ -1297,8 +1379,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
Toast.LENGTH_SHORT).show();
}
else {
processComposeControls(ACTION_SEND_OUT);
DcHelper.getNotificationCenter(ConversationActivity.this).maybePlaySendSound(dcChat);
processComposeControls(ACTION_SEND_OUT).addListener(new AssertedSuccessListener<Integer>() {
@Override
public void onSuccess(Integer chatId) {
DcHelper.getNotificationCenter(ConversationActivity.this).maybePlaySendSound(dcChat);
}
});
}
}
@@ -1371,6 +1457,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@Override
public void handleReplyMessage(DcMsg msg) {
if (isEditing) composeText.setText("");
isEditing = false;
// If you modify these lines you may also want to modify ConversationItem.setQuote():
Recipient author = new Recipient(this, dcContext.getContact(msg.getFromId()));
@@ -1386,11 +1474,32 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
msg.getTimestamp(),
author,
text,
slideDeck);
slideDeck,
false);
inputPanel.clickOnComposeInput();
}
@Override
public void handleEditMessage(DcMsg msg) {
isEditing = true;
Recipient author = new Recipient(this, dcContext.getContact(msg.getFromId()));
SlideDeck slideDeck = new SlideDeck();
String text = msg.getSummarytext(500);
inputPanel.setQuote(GlideApp.with(this),
msg,
msg.getTimestamp(),
author,
text,
slideDeck,
true);
setDraftText(msg.getText());
inputPanel.clickOnComposeInput();
}
@Override
public void onAttachmentChanged() {
handleSecurityChange(isSecureText, isDefaultSms);
@@ -1509,7 +1618,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
public void initializeContactRequest() {
if (!dcChat.isHalfBlocked()) {
if (!dcChat.isContactRequest()) {
messageRequestBottomView.setVisibility(View.GONE);
return;
}
@@ -1522,15 +1631,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
});
if (dcChat.isProtectionBroken()) {
messageRequestBottomView.setBlockText(R.string.more_info_desktop);
String name = dcContext.getContact(recipient.getDcContact().getId()).getDisplayName();
messageRequestBottomView.setBlockOnClickListener(v -> DcHelper.showVerificationBrokenDialog(this, name));
messageRequestBottomView.setQuestion(getString(R.string.chat_protection_broken, name));
messageRequestBottomView.setAcceptText(R.string.ok);
} else if (dcChat.getType() == DcChat.DC_CHAT_TYPE_GROUP) {
if (dcChat.getType() == DcChat.DC_CHAT_TYPE_GROUP) {
// We don't support blocking groups yet, so offer to delete it instead
messageRequestBottomView.setBlockText(R.string.delete);
messageRequestBottomView.setBlockOnClickListener(v -> handleDeleteChat());
@@ -16,17 +16,19 @@
*/
package org.thoughtcrime.securesms;
import android.content.Context;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import static org.thoughtcrime.securesms.ConversationItem.PULSE_HIGHLIGHT_MILLIS;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcMsg;
@@ -49,8 +51,6 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import static org.thoughtcrime.securesms.ConversationItem.PULSE_HIGHLIGHT_MILLIS;
/**
* A DC adapter for a conversation thread. Ultimately
* used by ConversationActivity to display a conversation
@@ -294,7 +294,7 @@ public class ConversationAdapter <V extends View & BindableConversationItem>
else if (type==DcMsg.DC_MSG_AUDIO || type==DcMsg.DC_MSG_VOICE) {
return dcMsg.isOutgoing()? MESSAGE_TYPE_AUDIO_OUTGOING : MESSAGE_TYPE_AUDIO_INCOMING;
}
else if (type==DcMsg.DC_MSG_FILE && !dcMsg.isSetupMessage()) {
else if (type==DcMsg.DC_MSG_FILE) {
return dcMsg.isOutgoing()? MESSAGE_TYPE_DOCUMENT_OUTGOING : MESSAGE_TYPE_DOCUMENT_INCOMING;
}
else if (type==DcMsg.DC_MSG_IMAGE || type==DcMsg.DC_MSG_GIF || type==DcMsg.DC_MSG_VIDEO) {
@@ -25,8 +25,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -37,12 +36,10 @@ import android.view.ViewGroup;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.view.ActionMode;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -62,8 +59,8 @@ import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.reactions.AddReactionView;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.reactions.ReactionsDetailsFragment;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.AccessibilityUtil;
import org.thoughtcrime.securesms.util.Debouncer;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
@@ -172,8 +169,8 @@ public class ConversationFragment extends MessageSelectorFragment
private void setNoMessageText() {
DcChat dcChat = getListAdapter().getChat();
if(dcChat.isMultiUser()){
if (dcChat.isBroadcast()) {
noMessageTextView.setText(R.string.chat_new_broadcast_hint);
if (dcChat.isInBroadcast() || dcChat.isOutBroadcast()) {
noMessageTextView.setText(R.string.chat_new_channel_hint);
} else if (dcChat.isUnpromoted()) {
noMessageTextView.setText(R.string.chat_new_group_hint);
}
@@ -210,7 +207,7 @@ public class ConversationFragment extends MessageSelectorFragment
public void onResume() {
super.onResume();
dcContext.marknoticedChat((int) chatId);
Util.runOnBackground(() -> dcContext.marknoticedChat((int) chatId));
if (list.getAdapter() != null) {
list.getAdapter().notifyDataSetChanged();
}
@@ -320,12 +317,16 @@ public class ConversationFragment extends MessageSelectorFragment
return;
}
menu.findItem(R.id.menu_toggle_save).setVisible(false);
if (messageRecords.size() > 1) {
menu.findItem(R.id.menu_context_details).setVisible(false);
menu.findItem(R.id.menu_context_share).setVisible(false);
menu.findItem(R.id.menu_context_reply).setVisible(false);
menu.findItem(R.id.menu_context_edit).setVisible(false);
menu.findItem(R.id.menu_context_reply_privately).setVisible(false);
menu.findItem(R.id.menu_add_to_home_screen).setVisible(false);
//menu.findItem(R.id.menu_toggle_save).setVisible(false);
} else {
DcMsg messageRecord = messageRecords.iterator().next();
DcChat chat = getListAdapter().getChat();
@@ -333,9 +334,19 @@ public class ConversationFragment extends MessageSelectorFragment
menu.findItem(R.id.menu_context_share).setVisible(messageRecord.hasFile());
boolean canReply = canReplyToMsg(messageRecord);
menu.findItem(R.id.menu_context_reply).setVisible(chat.canSend() && canReply);
boolean showReplyPrivately = !dcContext.isCommunity() && chat.isMultiUser() && !messageRecord.isOutgoing() && canReply;
boolean canEdit = canEditMsg(messageRecord);
menu.findItem(R.id.menu_context_edit).setVisible(chat.canSend() && canEdit);
boolean showReplyPrivately = chat.isMultiUser() && !messageRecord.isOutgoing() && canReply;
menu.findItem(R.id.menu_context_reply_privately).setVisible(showReplyPrivately);
menu.findItem(R.id.menu_add_to_home_screen).setVisible(messageRecord.getType() == DcMsg.DC_MSG_WEBXDC);
/*
boolean saved = messageRecord.getSavedMsgId() != 0;
MenuItem toggleSave = menu.findItem(R.id.menu_toggle_save);
toggleSave.setVisible(messageRecord.canSave() && !chat.isSelfTalk());
toggleSave.setIcon(saved? R.drawable.baseline_bookmark_remove_24 : R.drawable.baseline_bookmark_border_24);
toggleSave.setTitle(saved? R.string.unsave : R.string.save);
*/
}
// if one of the selected items cannot be saved, disable saving.
@@ -376,6 +387,10 @@ public class ConversationFragment extends MessageSelectorFragment
return canReply;
}
static boolean canEditMsg(DcMsg dcMsg) {
return dcMsg.isOutgoing() && !dcMsg.isInfo() && dcMsg.getType() != DcMsg.DC_MSG_VIDEOCHAT_INVITATION && !dcMsg.hasHtml() && !dcMsg.getText().isEmpty();
}
public void handleClearChat() {
handleDeleteMessages((int) chatId, getListAdapter().getMessageIds());
}
@@ -476,6 +491,16 @@ public class ConversationFragment extends MessageSelectorFragment
listener.handleReplyMessage(message);
}
@SuppressLint("RestrictedApi")
private void handleEditMessage(final DcMsg message) {
if (getActivity() != null) {
//noinspection ConstantConditions
((AppCompatActivity) getActivity()).getSupportActionBar().collapseActionView();
}
listener.handleEditMessage(message);
}
private void handleReplyMessagePrivately(final DcMsg msg) {
if (getActivity() != null) {
@@ -493,6 +518,15 @@ public class ConversationFragment extends MessageSelectorFragment
}
}
private void handleToggleSave(final Set<DcMsg> messageRecords) {
DcMsg msg = getSelectedMessageRecord(messageRecords);
if (msg.getSavedMsgId() != 0) {
dcContext.deleteMsgs(new int[]{msg.getSavedMsgId()});
} else {
dcContext.saveMsgs(new int[]{msg.getId()});
}
}
private void reloadList() {
reloadList(false);
}
@@ -606,6 +640,7 @@ public class ConversationFragment extends MessageSelectorFragment
public interface ConversationFragmentListener {
void handleReplyMessage(DcMsg messageRecord);
void handleEditMessage(DcMsg messageRecord);
}
private class ConversationScrollListener extends OnScrollListener {
@@ -703,81 +738,7 @@ public class ConversationFragment extends MessageSelectorFragment
index++;
}
}
dcContext.markseenMsgs(ids);
}
void querySetupCode(final DcMsg dcMsg, String[] preload)
{
if( !dcMsg.isSetupMessage()) {
return;
}
View gl = View.inflate(getActivity(), R.layout.setup_code_grid, null);
final EditText[] editTexts = {
gl.findViewById(R.id.setupCode0), gl.findViewById(R.id.setupCode1), gl.findViewById(R.id.setupCode2),
gl.findViewById(R.id.setupCode3), gl.findViewById(R.id.setupCode4), gl.findViewById(R.id.setupCode5),
gl.findViewById(R.id.setupCode6), gl.findViewById(R.id.setupCode7), gl.findViewById(R.id.setupCode8)
};
AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
builder1.setView(gl);
editTexts[0].setText(dcMsg.getSetupCodeBegin());
editTexts[0].setSelection(editTexts[0].getText().length());
for( int i = 0; i < 9; i++ ) {
if( preload != null && i < preload.length ) {
editTexts[i].setText(preload[i]);
editTexts[i].setSelection(editTexts[i].getText().length());
}
editTexts[i].addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if( s.length()==4 ) {
for ( int i = 0; i < 8; i++ ) {
if( editTexts[i].hasFocus() && editTexts[i+1].getText().length()<4 ) {
editTexts[i+1].requestFocus();
break;
}
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
builder1.setTitle(getActivity().getString(R.string.autocrypt_continue_transfer_title));
builder1.setMessage(getActivity().getString(R.string.autocrypt_continue_transfer_please_enter_code));
builder1.setNegativeButton(android.R.string.cancel, null);
builder1.setCancelable(false); // prevent the dialog from being dismissed accidentally (when the dialog is closed, the setup code is gone forever and the user has to create a new setup message)
builder1.setPositiveButton(android.R.string.ok, (dialog, which) -> {
String setup_code = "";
final String[] preload1 = new String[9];
for ( int i = 0; i < 9; i++ ) {
preload1[i] = editTexts[i].getText().toString();
setup_code += preload1[i];
}
boolean success = dcContext.continueKeyTransfer(dcMsg.getId(), setup_code);
AlertDialog.Builder builder2 = new AlertDialog.Builder(getActivity());
builder2.setTitle(getActivity().getString(R.string.autocrypt_continue_transfer_title));
builder2.setMessage(getActivity().getString(success? R.string.autocrypt_continue_transfer_succeeded : R.string.autocrypt_bad_setup_code));
if( success ) {
builder2.setPositiveButton(android.R.string.ok, null);
}
else {
builder2.setNegativeButton(android.R.string.cancel, null);
builder2.setPositiveButton(R.string.autocrypt_continue_transfer_retry, (dialog1, which1) -> querySetupCode(dcMsg, preload1));
}
builder2.show();
});
builder1.show();
Util.runOnAnyBackgroundThread(() -> dcContext.markseenMsgs(ids));
}
private class ConversationFragmentItemClickListener implements ItemClickListener {
@@ -799,9 +760,6 @@ public class ConversationFragment extends MessageSelectorFragment
actionMode.setTitleOptionalHint(false); // the title represents important information, also indicating implicitly, more items can be selected
}
}
else if(messageRecord.isSetupMessage()) {
querySetupCode(messageRecord,null);
}
else if (messageRecord.getType()==DcMsg.DC_MSG_VIDEOCHAT_INVITATION) {
new VideochatUtil().join(getActivity(), messageRecord.getId());
}
@@ -809,15 +767,29 @@ public class ConversationFragment extends MessageSelectorFragment
DozeReminder.dozeReminderTapped(getContext());
}
else if(messageRecord.getInfoType() == DcMsg.DC_INFO_WEBXDC_INFO_MESSAGE) {
WebxdcActivity.openWebxdcActivity(getContext(), messageRecord.getParent(), messageRecord.getWebxdcHref());
if (messageRecord.getParent() != null) {
// if the parent webxdc message still exists
WebxdcActivity.openWebxdcActivity(getContext(), messageRecord.getParent(), messageRecord.getWebxdcHref());
}
}
else if (!TextUtils.isEmpty(messageRecord.getPOILocation()) && messageRecord.getType() == DcMsg.DC_MSG_TEXT && !messageRecord.hasHtml()) {
WebxdcActivity.openMaps(getContext(), getListAdapter().getChat().getId(), "index.html#"+messageRecord.getPOILocation());
}
else {
String self_mail = dcContext.getConfig("configured_mail_user");
if (self_mail != null && !self_mail.isEmpty()
&& messageRecord.getText().contains(self_mail)
&& getListAdapter().getChat().isDeviceTalk()) {
// This is a device message informing the user that the password is wrong
startActivity(new Intent(getActivity(), RegistrationActivity.class));
int infoContactId = messageRecord.getInfoContactId();
if (infoContactId != 0 && infoContactId != DC_CONTACT_ID_SELF) {
Intent intent = new Intent(getContext(), ProfileActivity.class);
intent.putExtra(ProfileActivity.CONTACT_ID_EXTRA, infoContactId);
startActivity(intent);
}
else {
String self_mail = dcContext.getConfig("configured_mail_user");
if (self_mail != null && !self_mail.isEmpty()
&& messageRecord.getText().contains(self_mail)
&& getListAdapter().getChat().isDeviceTalk()) {
// This is a device message informing the user that the password is wrong
startActivity(new Intent(getActivity(), RegistrationActivity.class));
}
}
}
}
@@ -829,9 +801,6 @@ public class ConversationFragment extends MessageSelectorFragment
list.getAdapter().notifyDataSetChanged();
actionMode = ((AppCompatActivity)getActivity()).startSupportActionMode(actionModeCallback);
if (dcContext.isCommunity()) return;
addReactionView.show(messageRecord, view, () -> {
if (actionMode != null) {
actionMode.finish();
@@ -840,20 +809,18 @@ public class ConversationFragment extends MessageSelectorFragment
}
}
@Override
public void onQuoteClicked(DcMsg messageRecord) {
DcMsg quoted = messageRecord.getQuotedMsg();
if (quoted == null) {
Log.i(TAG, "Clicked on a quote whose original message we never had.");
private void jumpToOriginal(DcMsg original) {
if (original == null) {
Log.i(TAG, "Clicked on a quote or jump-to-original whose original message was deleted/non-existing.");
Toast.makeText(getContext(), R.string.ConversationFragment_quoted_message_not_found, Toast.LENGTH_SHORT).show();
return;
}
int foreignChatId = quoted.getChatId();
int foreignChatId = original.getChatId();
if (foreignChatId != 0 && foreignChatId != chatId) {
Intent intent = new Intent(getActivity(), ConversationActivity.class);
intent.putExtra(ConversationActivity.CHAT_ID_EXTRA, foreignChatId);
int start = DcMsg.getMessagePosition(quoted, dcContext);
int start = DcMsg.getMessagePosition(original, dcContext);
intent.putExtra(ConversationActivity.STARTING_POSITION_EXTRA, start);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
((ConversationActivity) getActivity()).hideSoftKeyboard();
@@ -863,15 +830,25 @@ public class ConversationFragment extends MessageSelectorFragment
Log.e(TAG, "Activity was null");
}
} else {
scrollMaybeSmoothToMsgId(quoted.getId());
scrollMaybeSmoothToMsgId(original.getId());
}
}
@Override
public void onJumpToOriginalClicked(DcMsg messageRecord) {
jumpToOriginal(dcContext.getMsg(messageRecord.getOriginalMsgId()));
}
@Override
public void onQuoteClicked(DcMsg messageRecord) {
jumpToOriginal(messageRecord.getQuotedMsg());
}
@Override
public void onShowFullClicked(DcMsg messageRecord) {
Intent intent = new Intent(getActivity(), FullMsgActivity.class);
intent.putExtra(FullMsgActivity.MSG_ID_EXTRA, messageRecord.getId());
intent.putExtra(FullMsgActivity.BLOCK_LOADING_REMOTE, getListAdapter().getChat().isHalfBlocked());
intent.putExtra(FullMsgActivity.BLOCK_LOADING_REMOTE, getListAdapter().getChat().isContactRequest());
startActivity(intent);
getActivity().overridePendingTransition(R.anim.slide_from_right, R.anim.fade_scale_out);
}
@@ -914,6 +891,7 @@ public class ConversationFragment extends MessageSelectorFragment
statusBarColor = window.getStatusBarColor();
window.setStatusBarColor(getResources().getColor(R.color.action_mode_status_bar));
Util.redMenuItem(menu, R.id.menu_context_delete_message);
setCorrectMenuVisibility(menu);
ConversationAdaptiveActionsToolbar.adjustMenuActions(menu, 10, requireActivity().getWindow().getDecorView().getMeasuredWidth());
return true;
@@ -938,45 +916,52 @@ public class ConversationFragment extends MessageSelectorFragment
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
hideAddReactionView();
switch(item.getItemId()) {
case R.id.menu_context_copy:
handleCopyMessage(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
case R.id.menu_context_delete_message:
handleDeleteMessages((int) chatId, getListAdapter().getSelectedItems());
return true;
case R.id.menu_context_share:
DcHelper.openForViewOrShare(getContext(), getSelectedMessageRecord(getListAdapter().getSelectedItems()).getId(), Intent.ACTION_SEND);
return true;
case R.id.menu_context_details:
handleDisplayDetails(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
actionMode.finish();
return true;
case R.id.menu_context_forward:
handleForwardMessage(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
case R.id.menu_add_to_home_screen:
WebxdcActivity.addToHomeScreen(getActivity(), getSelectedMessageRecord(getListAdapter().getSelectedItems()).getId());
actionMode.finish();
return true;
case R.id.menu_context_save_attachment:
handleSaveAttachment(getListAdapter().getSelectedItems());
return true;
case R.id.menu_context_reply:
handleReplyMessage(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
actionMode.finish();
return true;
case R.id.menu_context_reply_privately:
handleReplyMessagePrivately(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
return true;
case R.id.menu_resend:
handleResendMessage(getListAdapter().getSelectedItems());
return true;
}
return false;
int itemId = item.getItemId();
if (itemId == R.id.menu_context_copy) {
handleCopyMessage(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
} else if (itemId == R.id.menu_context_delete_message) {
handleDeleteMessages((int) chatId, getListAdapter().getSelectedItems());
return true;
} else if (itemId == R.id.menu_context_share) {
DcHelper.openForViewOrShare(getContext(), getSelectedMessageRecord(getListAdapter().getSelectedItems()).getId(), Intent.ACTION_SEND);
return true;
} else if (itemId == R.id.menu_context_details) {
handleDisplayDetails(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
actionMode.finish();
return true;
} else if (itemId == R.id.menu_context_forward) {
handleForwardMessage(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
} else if (itemId == R.id.menu_add_to_home_screen) {
WebxdcActivity.addToHomeScreen(getActivity(), getSelectedMessageRecord(getListAdapter().getSelectedItems()).getId());
actionMode.finish();
return true;
} else if (itemId == R.id.menu_context_save_attachment) {
handleSaveAttachment(getListAdapter().getSelectedItems());
return true;
} else if (itemId == R.id.menu_context_reply) {
handleReplyMessage(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
actionMode.finish();
return true;
} else if (itemId == R.id.menu_context_edit) {
handleEditMessage(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
actionMode.finish();
return true;
} else if (itemId == R.id.menu_context_reply_privately) {
handleReplyMessagePrivately(getSelectedMessageRecord(getListAdapter().getSelectedItems()));
return true;
} else if (itemId == R.id.menu_resend) {
handleResendMessage(getListAdapter().getSelectedItems());
return true;
} else if (itemId == R.id.menu_toggle_save) {
handleToggleSave(getListAdapter().getSelectedItems());
actionMode.finish();
return true;
}
return false;
}
}
@@ -101,6 +101,7 @@ public class ConversationItem extends BaseConversationItem
protected ViewGroup bodyBubble;
protected ReactionsConversationView reactionsView;
protected View replyView;
protected View jumptoView;
@Nullable private QuoteView quoteView;
private ConversationItemFooter footer;
private TextView groupSender;
@@ -155,6 +156,7 @@ public class ConversationItem extends BaseConversationItem
this.quoteView = findViewById(R.id.quote_view);
this.container = findViewById(R.id.container);
this.replyView = findViewById(R.id.reply_icon);
this.jumptoView = findViewById(R.id.jumpto_icon);
this.msgActionButton = findViewById(R.id.msg_action_button);
this.showFullButton = findViewById(R.id.show_full_button);
@@ -176,12 +178,23 @@ public class ConversationItem extends BaseConversationItem
{
bind(messageRecord, dcChat, batchSelected, pulseHighlight, recipients);
this.glideRequests = glideRequests;
this.showSender = dcContext.isCommunity() || (dcChat.isMultiUser() && !messageRecord.isOutgoing()) || messageRecord.getOverrideSenderName() != null;
this.showSender = ((dcChat.isMultiUser() || dcChat.isSelfTalk()) && !messageRecord.isOutgoing()) || messageRecord.getOverrideSenderName() != null;
if (showSender) {
this.dcContact = dcContext.getContact(messageRecord.getFromId());
}
if (dcChat.isSelfTalk() && messageRecord.getOriginalMsgId() != 0) {
jumptoView.setVisibility(View.VISIBLE);
jumptoView.setOnClickListener(view -> {
if (eventListener != null) {
eventListener.onJumpToOriginalClicked(messageRecord);
}
});
} else {
jumptoView.setVisibility(View.GONE);
}
setGutterSizes(messageRecord, showSender);
setMessageShape(messageRecord);
setMediaAttributes(messageRecord, showSender);
@@ -257,11 +270,10 @@ public class ConversationItem extends BaseConversationItem
R.attr.conversation_item_incoming_bubble_color,
R.attr.conversation_item_outgoing_bubble_color,
};
final TypedArray attrs = context.obtainStyledAttributes(attributes);
incomingBubbleColor = attrs.getColor(0, Color.WHITE);
outgoingBubbleColor = attrs.getColor(1, Color.WHITE);
attrs.recycle();
try (TypedArray attrs = context.obtainStyledAttributes(attributes)) {
incomingBubbleColor = attrs.getColor(0, Color.WHITE);
outgoingBubbleColor = attrs.getColor(1, Color.WHITE);
}
}
@Override
@@ -378,7 +390,7 @@ public class ConversationItem extends BaseConversationItem
}
private boolean hasDocument(DcMsg dcMsg) {
return dcMsg.getType()==DcMsg.DC_MSG_FILE && !dcMsg.isSetupMessage();
return dcMsg.getType()==DcMsg.DC_MSG_FILE;
}
private void setBodyText(DcMsg messageRecord) {
@@ -387,11 +399,7 @@ public class ConversationItem extends BaseConversationItem
String text = messageRecord.getText();
if (messageRecord.isSetupMessage()) {
bodyText.setText(context.getString(R.string.autocrypt_asm_click_body));
bodyText.setVisibility(View.VISIBLE);
}
else if (text.isEmpty()) {
if (text.isEmpty()) {
bodyText.setVisibility(View.GONE);
}
else {
@@ -429,10 +437,10 @@ public class ConversationItem extends BaseConversationItem
showFullButton.setVisibility(View.GONE);
msgActionButton.setVisibility(View.VISIBLE);
msgActionButton.setEnabled(true);
msgActionButton.setText(webxdcViewStub.get().isCommunity()? R.string.join: R.string.start_app);
msgActionButton.setText(R.string.start_app);
msgActionButton.setOnClickListener(view -> {
if (batchSelected.isEmpty()) {
DcHelper.openWebxdc(getContext(), messageRecord);
WebxdcActivity.openWebxdcActivity(getContext(), messageRecord);
} else {
passthroughClickListener.onClick(view);
}
@@ -666,9 +674,7 @@ public class ConversationItem extends BaseConversationItem
if (!showSender || dcContact ==null) {
contactPhoto.setVisibility(View.GONE);
} else {
int color = messageRecord.getSenderColor();
Recipient recipient = new Recipient(context, dcContact, messageRecord.getSenderName(dcContact), color);
contactPhoto.setAvatar(glideRequests, recipient, true);
contactPhoto.setAvatar(glideRequests, new Recipient(context, dcContact), true);
contactPhoto.setVisibility(View.VISIBLE);
}
}
@@ -693,7 +699,7 @@ public class ConversationItem extends BaseConversationItem
Recipient author = null;
SlideDeck slideDeck = new SlideDeck();
if (msg != null) {
author = new Recipient(context, dcContext.getContact(msg.getFromId()), msg.getSenderColor());
author = new Recipient(context, dcContext.getContact(msg.getFromId()));
if (msg.getType() != DcMsg.DC_MSG_TEXT) {
Slide slide = MediaUtil.getSlideForMsg(context, msg);
if (slide != null) {
@@ -707,7 +713,8 @@ public class ConversationItem extends BaseConversationItem
author,
quoteTxt,
slideDeck,
current.getType() == DcMsg.DC_MSG_STICKER);
current.getType() == DcMsg.DC_MSG_STICKER,
false);
quoteView.setVisibility(View.VISIBLE);
quoteView.getLayoutParams().width = ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -800,8 +807,7 @@ public class ConversationItem extends BaseConversationItem
}
else if (showSender && dcContact !=null) {
this.groupSender.setText(messageRecord.getSenderName(dcContact));
int color = messageRecord.getSenderColor();
this.groupSender.setTextColor(Util.rgbToArgbColor(color!=0? color : dcContact.getColor()));
this.groupSender.setTextColor(Util.rgbToArgbColor(dcContact.getColor()));
}
}
@@ -884,7 +890,7 @@ public class ConversationItem extends BaseConversationItem
if (shouldInterceptClicks(messageRecord) || !batchSelected.isEmpty()) {
performClick();
} else if (slide.isWebxdcDocument()) {
msgActionButton.performClick();
WebxdcActivity.openWebxdcActivity(context, messageRecord);
} else if (slide.isVcard()) {
try {
String path = slide.asAttachment().getRealPath(context);
@@ -894,7 +900,7 @@ public class ConversationItem extends BaseConversationItem
.setPositiveButton(android.R.string.ok, (dialog, which) -> {
try {
List<Integer> contactIds = rpc.importVcard(dcContext.getAccountId(), path);
if (contactIds.size() > 0) {
if (!contactIds.isEmpty()) {
int chatId = dcContext.createChatByContactId(contactIds.get(0));
if (chatId != 0) {
Intent intent = new Intent(context, ConversationActivity.class);
@@ -3,7 +3,6 @@ package org.thoughtcrime.securesms;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.os.Build;
import android.os.Vibrator;
import android.view.MotionEvent;
import android.view.View;
@@ -20,8 +20,8 @@ import static org.thoughtcrime.securesms.ConversationActivity.CHAT_ID_EXTRA;
import static org.thoughtcrime.securesms.ConversationActivity.STARTING_POSITION_EXTRA;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_ADDRESS;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SERVER_FLAGS;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_URL;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_SERVER_FLAGS;
import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
import static org.thoughtcrime.securesms.util.RelayUtil.getDirectSharingChatId;
import static org.thoughtcrime.securesms.util.RelayUtil.getSharedTitle;
@@ -89,7 +89,6 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
public static final String CLEAR_NOTIFICATIONS = "clear_notifications";
public static final String ACCOUNT_ID_EXTRA = "account_id";
public static final String FROM_WELCOME = "from_welcome";
public static final String WARN_CANNOT_ENCRYPT = "warn_cannot_encrypt";
private ConversationListFragment conversationListFragment;
public TextView title;
@@ -113,7 +112,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
// it is not needed to keep all past update messages, however, when deleted, also the strings should be deleted.
try {
DcContext dcContext = DcHelper.getContext(this);
final String deviceMsgLabel = "update_1_50_0_android";
final String deviceMsgLabel = "update_2_0_0_android-h";
if (!dcContext.wasDeviceMsgEverAdded(deviceMsgLabel)) {
DcMsg msg = null;
if (!getIntent().getBooleanExtra(FROM_WELCOME, false)) {
@@ -124,7 +123,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
// Util.copy(inputStream, new FileOutputStream(outputFile));
// msg.setFile(outputFile, "image/jpeg");
msg.setText(getString(R.string.update_1_50_android, "https://raw.githubusercontent.com/ArcaneChat/android/refs/heads/main/CHANGELOG.md"));
msg.setText(getString(R.string.update_2_0, "https://arcanechat.me/#contribute"));
}
dcContext.addDeviceMsg(deviceMsgLabel, msg);
@@ -137,19 +136,6 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
Prefs.setStringPreference(this, Prefs.LAST_DEVICE_MSG_LABEL, deviceMsgLabel);
}
// add info about moved "switch profile" option; added 2024-08, can be removed after ~3 months
if (!Prefs.getBooleanPreference(this, "info_about_switch_profile_added", false)) {
final DcAccounts dcAccounts = DcHelper.getAccounts(this);
if (dcAccounts.getAll().length >= 2) {
DcMsg msg = new DcMsg(dcContext, DcMsg.DC_MSG_TEXT);
msg.setText(getString(R.string.update_switch_profile_placement));
dcContext.addDeviceMsg("info_about_switch_profile", msg);
}
Prefs.setBooleanPreference(this, "info_about_switch_profile_added", true);
}
// /add info
// remove gmail oauth2
final int serverFlags = dcContext.getConfigInt(CONFIG_SERVER_FLAGS);
if ((serverFlags & DcContext.DC_LP_AUTH_OAUTH2)!=0) {
@@ -198,6 +184,8 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
refresh();
if (BuildConfig.DEBUG) checkNdkArchitecture();
DcHelper.maybeShowMigrationError(this);
}
/**
@@ -257,6 +245,10 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
@Override
protected void onNewIntent(Intent intent) {
if (isFinishing()) {
Log.w(TAG, "Activity is finishing, aborting onNewIntent()");
return;
}
super.onNewIntent(intent);
setIntent(intent);
refresh();
@@ -274,11 +266,6 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
AccountManager.getInstance().switchAccountAndStartActivity(this, accountId);
}
String warnAddr = getIntent().getStringExtra(WARN_CANNOT_ENCRYPT);
if (!TextUtils.isEmpty(warnAddr)) {
DcHelper.showEncryptionRequiredDialog(this, warnAddr);
}
refreshAvatar();
refreshUnreadIndicator();
refreshTitle();
@@ -303,6 +290,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
} else {
title.setText(DcHelper.getContext(this).getName());
// refreshTitle is called by ConversationListFragment when connectivity changes so update connectivity dot here
selfAvatar.setConnectivity(DcHelper.getContext(this).getConnectivity());
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
}
@@ -436,34 +424,31 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.menu_invite_friends:
shareInvite();
return true;
case R.id.menu_settings:
startActivity(new Intent(this, ApplicationPreferencesActivity.class));
return true;
case R.id.menu_qr:
new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan();
return true;
case R.id.menu_global_map:
WebxdcActivity.openMaps(this, 0);
return true;
case R.id.menu_proxy_settings:
startActivity(new Intent(this, ProxySettingsActivity.class));
return true;
case android.R.id.home:
onBackPressed();
return true;
case R.id.menu_all_media:
startActivity(new Intent(this, ProfileActivity.class));
return true;
case R.id.menu_webxdc_apps_store:
handleShowBot("juegos@buzon.uy", "OPENPGP4FPR:d3d403a734be71fe9293a00311fef80dbe5dbc89#a=juegos%40buzon.uy&n=&i=WQZY-8FODS3&s=ZQBkaclFzao");
return true;
case R.id.menu_public_bots:
handleShowBot("puente@buzon.uy", "OPENPGP4FPR:4B41E5AFAF78A0C71DB56138D5BEFED00A45F97A#a=puente%40buzon.uy&n=Public%20Bots&i=ZC_oaJtuvJP&s=5SE96rRovsK");
return true;
int itemId = item.getItemId();
if (itemId == R.id.menu_invite_friends) {
shareInvite();
return true;
} else if (itemId == R.id.menu_settings) {
startActivity(new Intent(this, ApplicationPreferencesActivity.class));
return true;
} else if (itemId == R.id.menu_qr) {
new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan();
return true;
} else if (itemId == R.id.menu_global_map) {
WebxdcActivity.openMaps(this, 0);
return true;
} else if (itemId == R.id.menu_proxy_settings) {
startActivity(new Intent(this, ProxySettingsActivity.class));
return true;
} else if (itemId == android.R.id.home) {
onBackPressed();
return true;
} else if (itemId == R.id.menu_all_media) {
startActivity(new Intent(this, AllMediaActivity.class));
return true;
} else if (itemId == R.id.menu_public_bots) {
handleShowBot("botsindex@arcanechat.me", "https://i.delta.chat/#67889B0362BEDBFEE05ACD92C1D737FA632A9582&a=botsindex%40arcanechat.me&n=Public%20Bots&i=336MTEz38EH-RJxM9OKWygYK&s=TpVVGK6C4KrJmRG0bwHLalXt");
return true;
}
return false;
@@ -1,5 +1,11 @@
package org.thoughtcrime.securesms;
import static org.thoughtcrime.securesms.ConversationActivity.CHAT_ID_EXTRA;
import static org.thoughtcrime.securesms.ConversationActivity.FROM_ARCHIVED_CHATS_EXTRA;
import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent;
import static org.thoughtcrime.securesms.util.RelayUtil.isSharing;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
@@ -10,12 +16,6 @@ import com.b44t.messenger.DcChat;
import org.thoughtcrime.securesms.connect.DcHelper;
import static org.thoughtcrime.securesms.ConversationActivity.CHAT_ID_EXTRA;
import static org.thoughtcrime.securesms.ConversationActivity.FROM_ARCHIVED_CHATS_EXTRA;
import static org.thoughtcrime.securesms.util.RelayUtil.acquireRelayMessageContent;
import static org.thoughtcrime.securesms.util.RelayUtil.isRelayingMessageContent;
import static org.thoughtcrime.securesms.util.RelayUtil.isSharing;
public class ConversationListArchiveActivity extends PassphraseRequiredActionBarActivity
implements ConversationListFragment.ConversationSelectedListener
{
@@ -60,14 +60,13 @@ public class ConversationListArchiveActivity extends PassphraseRequiredActionBar
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
case R.id.mark_as_read:
DcHelper.getContext(this).marknoticedChat(DcChat.DC_CHAT_ID_ARCHIVED_LINK);
return true;
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
onBackPressed();
return true;
} else if (itemId == R.id.mark_as_read) {
DcHelper.getContext(this).marknoticedChat(DcChat.DC_CHAT_ID_ARCHIVED_LINK);
return true;
}
return false;
@@ -42,7 +42,6 @@ import com.b44t.messenger.DcMsg;
import org.thoughtcrime.securesms.ConversationListAdapter.ItemClickListener;
import org.thoughtcrime.securesms.components.recyclerview.DeleteItemAnimator;
import org.thoughtcrime.securesms.components.reminder.DozeReminder;
import org.thoughtcrime.securesms.connect.AccountManager;
import org.thoughtcrime.securesms.connect.DcEventCenter;
import org.thoughtcrime.securesms.connect.DcHelper;
import org.thoughtcrime.securesms.mms.GlideApp;
@@ -81,6 +80,7 @@ public class ConversationListFragment extends BaseConversationListFragment
DcEventCenter eventCenter = DcHelper.getEventCenter(requireActivity());
eventCenter.addMultiAccountObserver(DcContext.DC_EVENT_INCOMING_MSG, this);
eventCenter.addMultiAccountObserver(DcContext.DC_EVENT_MSGS_NOTICED, this);
eventCenter.addMultiAccountObserver(DcContext.DC_EVENT_CHAT_DELETED, this);
eventCenter.addObserver(DcContext.DC_EVENT_CHAT_MODIFIED, this);
eventCenter.addObserver(DcContext.DC_EVENT_CONTACTS_CHANGED, this);
eventCenter.addObserver(DcContext.DC_EVENT_MSGS_CHANGED, this);
@@ -322,7 +322,10 @@ public class ConversationListFragment extends BaseConversationListFragment
@Override
public void handleEvent(@NonNull DcEvent event) {
if (event.getAccountId() != DcHelper.getContext(requireActivity()).getAccountId()) {
final int accId = event.getAccountId();
if (event.getId() == DcContext.DC_EVENT_CHAT_DELETED) {
DcHelper.getNotificationCenter(requireActivity()).removeNotifications(accId, event.getData1Int());
} else if (accId != DcHelper.getContext(requireActivity()).getAccountId()) {
Activity activity = getActivity();
if (activity instanceof ConversationListActivity) {
((ConversationListActivity) activity).refreshUnreadIndicator();
@@ -64,11 +64,9 @@ public class ConversationListItem extends RelativeLayout
private final static Typeface BOLD_TYPEFACE = Typeface.create("sans-serif-medium", Typeface.NORMAL);
private final static Typeface LIGHT_TYPEFACE = Typeface.create("sans-serif", Typeface.NORMAL);
private DcLot dcSummary;
private Set<Long> selectedThreads;
private long chatId;
private int msgId;
private GlideRequests glideRequests;
private TextView subjectView;
private FromTextView fromView;
private TextView dateView;
@@ -122,12 +120,10 @@ public class ConversationListItem extends RelativeLayout
boolean batchMode,
@Nullable String highlightSubstring)
{
this.dcSummary = dcSummary;
this.selectedThreads = selectedThreads;
Recipient recipient = thread.getRecipient();
this.chatId = thread.getThreadId();
this.msgId = msgId;
this.glideRequests = glideRequests;
int state = dcSummary.getState();
int unreadCount = thread.getUnreadCount();
@@ -163,9 +159,10 @@ public class ConversationListItem extends RelativeLayout
this.avatar.setAvatar(glideRequests, recipient, false);
DcContact contact = recipient.getDcContact();
avatar.setSeenRecently(contact!=null? contact.wasSeenRecently() : false);
avatar.setSeenRecently(contact != null && contact.wasSeenRecently());
boolean isProtected = thread.isProtected() || DcHelper.getContext(getContext()).getChat((int)chatId).isDeviceTalk();
DcChat dcChat = DcHelper.getContext(getContext()).getChat((int)chatId);
boolean isProtected = dcChat.isDeviceTalk() || dcChat.isSelfTalk();
fromView.setCompoundDrawablesWithIntrinsicBounds(
thread.isMuted()? R.drawable.ic_volume_off_grey600_18dp : 0,
@@ -180,7 +177,6 @@ public class ConversationListItem extends RelativeLayout
{
this.selectedThreads = Collections.emptySet();
Recipient recipient = new Recipient(getContext(), contact);
this.glideRequests = glideRequests;
fromView.setText(getHighlightedSpan(contact.getDisplayName(), highlightSubstring));
fromView.setCompoundDrawablesWithIntrinsicBounds(0, 0, contact.isVerified()? R.drawable.ic_verified : 0, 0);
@@ -205,7 +201,6 @@ public class ConversationListItem extends RelativeLayout
DcContact sender = dcContext.getContact(messageResult.getFromId());
this.selectedThreads = Collections.emptySet();
Recipient recipient = new Recipient(getContext(), sender);
this.glideRequests = glideRequests;
fromView.setText(recipient, true);
fromView.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
@@ -312,9 +307,9 @@ public class ConversationListItem extends RelativeLayout
if (thread!=null && thread.getVisibility()==DcChat.DC_CHAT_VISIBILITY_PINNED) {
bg = R.attr.pinned_list_item_background;
}
TypedArray ta = getContext().obtainStyledAttributes(new int[] { bg });
ViewUtil.setBackground(this, ta.getDrawable(0));
ta.recycle();
try (TypedArray ta = getContext().obtainStyledAttributes(new int[]{bg})) {
ViewUtil.setBackground(this, ta.getDrawable(0));
}
}
private Spanned getHighlightedSpan(@Nullable String value,
@@ -332,7 +327,10 @@ public class ConversationListItem extends RelativeLayout
String normalizedValue = value.toLowerCase(Util.getLocale());
String normalizedTest = highlight.toLowerCase(Util.getLocale());
List<String> testTokens = Stream.of(normalizedTest.split(" ")).filter(s -> s.trim().length() > 0).toList();
List<String> testTokens;
try (Stream<String> stream = Stream.of(normalizedTest.split(" "))) {
testTokens = stream.filter(s -> !s.trim().isEmpty()).toList();
}
Spannable spanned = new SpannableString(value);
int searchStartIndex = 0;
@@ -2,13 +2,12 @@ package org.thoughtcrime.securesms;
import android.content.Context;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import android.util.AttributeSet;
import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.b44t.messenger.DcLot;
import org.thoughtcrime.securesms.database.model.ThreadRecord;
@@ -71,17 +71,6 @@ public class ConversationTitleView extends RelativeLayout {
title.setText(dcChat.getName());
String subtitleStr = null;
// set icons etc.
int imgLeft = 0;
int imgRight = 0;
if (dcChat.isMuted()) {
imgLeft = R.drawable.ic_volume_off_white_18dp;
}
if (dcChat.isProtected() || dcChat.isDeviceTalk()) {
imgRight = R.drawable.ic_verified;
}
boolean isOnline = false;
int[] chatContacts = dcContext.getChatContacts(chatId);
if (dcChat.isMailingList()) {
@@ -93,16 +82,15 @@ public class ConversationTitleView extends RelativeLayout {
subtitleStr = context.getString(R.string.super_group);
}
}
} else if (dcChat.isBroadcast()) {
} else if (dcChat.isInBroadcast()) {
subtitleStr = context.getString(R.string.channel);
} else if (dcChat.isOutBroadcast()) {
if (!profileView) {
subtitleStr = context.getResources().getQuantityString(R.plurals.n_recipients, chatContacts.length, chatContacts.length);
}
} else if( dcChat.isMultiUser() ) {
if (!profileView) {
if (dcContext.isCommunity() && chatContacts.length == 1)
subtitleStr = context.getString(R.string.super_group);
else
subtitleStr = context.getResources().getQuantityString(R.plurals.n_members, chatContacts.length, chatContacts.length);
subtitleStr = context.getResources().getQuantityString(R.plurals.n_members, chatContacts.length, chatContacts.length);
}
} else if( chatContacts.length>=1 ) {
if( dcChat.isSelfTalk() ) {
@@ -114,7 +102,7 @@ public class ConversationTitleView extends RelativeLayout {
else {
DcContact dcContact = dcContext.getContact(chatContacts[0]);
isOnline = dcContact.wasSeenRecently();
if (profileView) {
if (profileView || !dcChat.isEncrypted()) {
subtitleStr = dcContact.getAddr();
} else if (dcContact.isBot()) {
subtitleStr = context.getString(R.string.bot);
@@ -122,9 +110,7 @@ public class ConversationTitleView extends RelativeLayout {
subtitleStr = context.getString(R.string.online);
} else {
long timestamp = dcContact.getLastSeen();
if (timestamp == 0) {
subtitleStr = dcContact.getAddr();
} else {
if (timestamp >= 0) {
subtitleStr = context.getString(R.string.last_seen_at, DateUtils.getExtendedTimeSpanString(context, timestamp));
}
}
@@ -133,6 +119,8 @@ public class ConversationTitleView extends RelativeLayout {
avatar.setAvatar(glideRequests, new Recipient(getContext(), dcChat), false);
avatar.setSeenRecently(isOnline);
int imgLeft = dcChat.isMuted()? R.drawable.ic_volume_off_white_18dp : 0;
int imgRight = dcChat.isSelfTalk() || dcChat.isDeviceTalk()? R.drawable.ic_verified : 0;
title.setCompoundDrawablesWithIntrinsicBounds(imgLeft, 0, imgRight, 0);
if (!TextUtils.isEmpty(subtitleStr)) {
subtitle.setText(subtitleStr);
@@ -151,13 +139,7 @@ public class ConversationTitleView extends RelativeLayout {
avatar.setAvatar(glideRequests, new Recipient(getContext(), contact), false);
avatar.setSeenRecently(contact.wasSeenRecently());
int imgRight = 0;
if (contact.isVerified()) {
imgRight = R.drawable.ic_verified;
}
title.setText(contact.getDisplayName());
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, imgRight, 0);
subtitle.setText(contact.getAddr());
subtitle.setVisibility(View.VISIBLE);
}
@@ -175,8 +157,4 @@ public class ConversationTitleView extends RelativeLayout {
public void setOnBackClickedListener(@Nullable OnClickListener listener) {
this.back.setOnClickListener(listener);
}
public void registerForContextMenu(Activity activity) {
activity.registerForContextMenu(content);
}
}
@@ -4,11 +4,11 @@ import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatImageView;
import android.util.AttributeSet;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcMsg;
@@ -26,7 +26,6 @@ public class ConversationUpdateItem extends BaseConversationItem
{
private DeliveryStatusView deliveryStatusView;
private AppCompatImageView appIcon;
private AppCompatImageView verifiedIcon;
private int textColor;
public ConversationUpdateItem(Context context) {
@@ -46,7 +45,6 @@ public class ConversationUpdateItem extends BaseConversationItem
bodyText = findViewById(R.id.conversation_update_body);
deliveryStatusView = new DeliveryStatusView(findViewById(R.id.delivery_indicator));
appIcon = findViewById(R.id.app_icon);
verifiedIcon = findViewById(R.id.verified_icon);
bodyText.setOnLongClickListener(passthroughClickListener);
@@ -113,16 +111,6 @@ public class ConversationUpdateItem extends BaseConversationItem
appIcon.setVisibility(GONE);
}
if (infoType == DcMsg.DC_INFO_PROTECTION_ENABLED) {
verifiedIcon.setVisibility(VISIBLE);
verifiedIcon.setImageResource(R.drawable.ic_verified);
} else if (infoType == DcMsg.DC_INFO_PROTECTION_DISABLED) {
verifiedIcon.setVisibility(VISIBLE);
verifiedIcon.setImageResource(R.drawable.ic_verified_broken);
} else {
verifiedIcon.setVisibility(GONE);
}
bodyText.setText(messageRecord.getDisplayBody());
bodyText.setVisibility(VISIBLE);
@@ -1,16 +1,15 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
@@ -11,7 +11,6 @@ import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -30,7 +29,6 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.textfield.TextInputLayout;
import com.soundcloud.android.crop.Crop;
import org.thoughtcrime.securesms.components.AvatarSelector;
import org.thoughtcrime.securesms.components.InputAwareLayout;
@@ -62,7 +60,6 @@ public class CreateProfileActivity extends BaseActionBarActivity {
private InputAwareLayout container;
private ImageView avatar;
private EditText name;
private EditText overridenName;
private EditText statusView;
private boolean fromWelcome;
@@ -102,13 +99,12 @@ public class CreateProfileActivity extends BaseActionBarActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
return true;
case R.id.menu_create_profile:
updateProfile();
break;
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
onBackPressed();
return true;
} else if (itemId == R.id.menu_create_profile) {
updateProfile();
}
return false;
@@ -147,10 +143,6 @@ public class CreateProfileActivity extends BaseActionBarActivity {
case ScribbleActivity.SCRIBBLE_REQUEST_CODE:
setAvatarView(data.getData());
break;
case Crop.REQUEST_CROP:
setAvatarView(Crop.getOutput(data));
break;
}
}
@@ -191,27 +183,14 @@ public class CreateProfileActivity extends BaseActionBarActivity {
TextView loginSuccessText = ViewUtil.findById(this, R.id.login_success_text);
this.avatar = ViewUtil.findById(this, R.id.avatar);
this.name = ViewUtil.findById(this, R.id.name_text);
this.overridenName = ViewUtil.findById(this, R.id.overriden_name);
this.container = ViewUtil.findById(this, R.id.container);
this.statusView = ViewUtil.findById(this, R.id.status_text);
if (fromWelcome) {
if (DcHelper.getContext(this).isCommunity()) {
ViewUtil.findById(this, R.id.community_user_container).setVisibility(View.VISIBLE);
loginSuccessText.setText(R.string.community_set_name_explain);
ViewUtil.findById(this, R.id.avatar_and_name).setVisibility(View.GONE);
} else {
loginSuccessText.setText(R.string.set_name_and_avatar_explain);
}
loginSuccessText.setText(R.string.set_name_and_avatar_explain);
ViewUtil.findById(this, R.id.status_text_layout).setVisibility(View.GONE);
ViewUtil.findById(this, R.id.information_label).setVisibility(View.GONE);
} else {
if (DcHelper.getContext(this).isCommunity()) {
ViewUtil.findById(this, R.id.community_user_container).setVisibility(View.VISIBLE);
ViewUtil.findById(this, R.id.information_label).setVisibility(View.GONE);
((TextInputLayout)ViewUtil.findById(this, R.id.name)).setHint(R.string.community);
((TextInputLayout)ViewUtil.findById(this, R.id.status_text_layout)).setHint(R.string.description);
}
loginSuccessText.setVisibility(View.GONE);
}
}
@@ -222,10 +201,6 @@ public class CreateProfileActivity extends BaseActionBarActivity {
name.setText(profileName);
name.setSelection(profileName.length(), profileName.length());
}
DcContext dcContext = DcHelper.getContext(this);
if (dcContext.isCommunity()) {
overridenName.setText(dcContext.getCommunityUser());
}
}
private void initializeProfileAvatar() {
@@ -252,22 +227,16 @@ public class CreateProfileActivity extends BaseActionBarActivity {
}
private void updateProfile() {
boolean isCommunity = DcHelper.getContext(this).isCommunity();
if (TextUtils.isEmpty(this.name.getText()) && !(isCommunity && fromWelcome)) {
if (TextUtils.isEmpty(this.name.getText())) {
Toast.makeText(this, R.string.please_enter_name, Toast.LENGTH_LONG).show();
return;
}
final String name = this.name.getText().toString();
final String ovName = this.overridenName.getText().toString().trim();
new AsyncTask<Void, Void, Boolean>() {
@Override
protected Boolean doInBackground(Void... params) {
Context context = CreateProfileActivity.this;
if (isCommunity) {
DcHelper.getContext(context).setCommunityUser(ovName);
}
DcHelper.set(context, DcHelper.CONFIG_DISPLAY_NAME, name);
setStatusText();
@@ -105,17 +105,16 @@ public class FullMsgActivity extends WebViewActivity
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_export_image:
// TODO: extract image from "data:" link or download URL
return true;
case R.id.action_copy_link:
Util.writeTextToClipboard(this, imageUrl);
Toast.makeText(this, getString(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show();
return true;
default:
return super.onContextItemSelected(item);
int itemId = item.getItemId();
if (itemId == R.id.action_export_image) {
// TODO: extract image from "data:" link or download URL
return true;
} else if (itemId == R.id.action_copy_link) {
Util.writeTextToClipboard(this, imageUrl);
Toast.makeText(this, getString(R.string.copied_to_clipboard), Toast.LENGTH_SHORT).show();
return true;
}
return super.onContextItemSelected(item);
}
private static void loadHtmlAsync(final WeakReference<FullMsgActivity> activityReference) {
@@ -157,40 +156,39 @@ public class FullMsgActivity extends WebViewActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.load_remote_content:
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle(R.string.load_remote_content)
.setMessage(R.string.load_remote_content_ask);
if (item.getItemId() == R.id.load_remote_content) {
AlertDialog.Builder builder = new AlertDialog.Builder(this)
.setTitle(R.string.load_remote_content)
.setMessage(R.string.load_remote_content_ask);
// we are using the buttons "[Always] [Never][Once]" in that order.
// 1. Checkmarks before [Always] and [Never] show the current state.
// 2. [Once] is also shown in always-mode and disables always-mode if selected
// (there was the idea to hide [Once] in always mode, but that looks more like a bug in the end)
// (maybe a usual Always-Checkbox and "[Cancel][OK]" buttons are an alternative, however, a [Once]
// would be required as well - probably as the leftmost button which is not that usable in
// not-always-mode where the dialog is used more often. Or [Ok] would mean "Once" as well as "Change checkbox setting",
// which is also a bit weird. Anyway, let's give the three buttons a try :)
final String checkmark = DynamicTheme.getCheckmarkEmoji(this) + " ";
String alwaysCheckmark = "";
String onceCheckmark = "";
String neverCheckmark = "";
if (!blockLoadingRemote && Prefs.getAlwaysLoadRemoteContent(this)) {
alwaysCheckmark = checkmark;
} else if (loadRemoteContent) {
onceCheckmark = checkmark;
} else {
neverCheckmark = checkmark;
}
// we are using the buttons "[Always] [Never][Once]" in that order.
// 1. Checkmarks before [Always] and [Never] show the current state.
// 2. [Once] is also shown in always-mode and disables always-mode if selected
// (there was the idea to hide [Once] in always mode, but that looks more like a bug in the end)
// (maybe a usual Always-Checkbox and "[Cancel][OK]" buttons are an alternative, however, a [Once]
// would be required as well - probably as the leftmost button which is not that usable in
// not-always-mode where the dialog is used more often. Or [Ok] would mean "Once" as well as "Change checkbox setting",
// which is also a bit weird. Anyway, let's give the three buttons a try :)
final String checkmark = DynamicTheme.getCheckmarkEmoji(this) + " ";
String alwaysCheckmark = "";
String onceCheckmark = "";
String neverCheckmark = "";
if (!blockLoadingRemote && Prefs.getAlwaysLoadRemoteContent(this)) {
alwaysCheckmark = checkmark;
} else if (loadRemoteContent) {
onceCheckmark = checkmark;
} else {
neverCheckmark = checkmark;
}
if (!blockLoadingRemote) {
builder.setNeutralButton(alwaysCheckmark + getString(R.string.always), (dialog, which) -> onChangeLoadRemoteContent(LoadRemoteContent.ALWAYS));
}
builder.setNegativeButton(neverCheckmark + getString(blockLoadingRemote ? R.string.no : R.string.never), (dialog, which) -> onChangeLoadRemoteContent(LoadRemoteContent.NEVER));
builder.setPositiveButton(onceCheckmark + getString(R.string.once), (dialog, which) -> onChangeLoadRemoteContent(LoadRemoteContent.ONCE));
if (!blockLoadingRemote) {
builder.setNeutralButton(alwaysCheckmark + getString(R.string.always), (dialog, which) -> onChangeLoadRemoteContent(LoadRemoteContent.ALWAYS));
}
builder.setNegativeButton(neverCheckmark + getString(blockLoadingRemote ? R.string.no : R.string.never), (dialog, which) -> onChangeLoadRemoteContent(LoadRemoteContent.NEVER));
builder.setPositiveButton(onceCheckmark + getString(R.string.once), (dialog, which) -> onChangeLoadRemoteContent(LoadRemoteContent.ONCE));
builder.show();
return true;
builder.show();
return true;
}
return false;
}
@@ -3,6 +3,7 @@ package org.thoughtcrime.securesms;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
@@ -17,16 +18,15 @@ import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.loader.app.LoaderManager;
import com.b44t.messenger.DcChat;
import com.b44t.messenger.DcContact;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.rpc.RpcException;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.SimpleTarget;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.soundcloud.android.crop.Crop;
import org.thoughtcrime.securesms.components.AvatarSelector;
import org.thoughtcrime.securesms.connect.DcHelper;
@@ -49,7 +49,8 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
{
public static final String EDIT_GROUP_CHAT_ID = "edit_group_chat_id";
public static final String CREATE_BROADCAST = "group_create_broadcast";
public static final String CREATE_BROADCAST = "create_broadcast";
public static final String UNENCRYPTED = "unencrypted";
public static final String CLONE_CHAT_EXTRA = "clone_chat";
private static final int PICK_CONTACT = 1;
@@ -59,7 +60,8 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
private DcContext dcContext;
private boolean verified;
private boolean broadcast;
private boolean unencrypted;
private boolean broadcast;
private EditText groupName;
private ListView lv;
private ImageView avatar;
@@ -76,7 +78,8 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
setContentView(R.layout.group_create_activity);
verified = false;
broadcast = getIntent().getBooleanExtra(CREATE_BROADCAST, false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
unencrypted = getIntent().getBooleanExtra(UNENCRYPTED, false);
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
groupChatId = getIntent().getIntExtra(EDIT_GROUP_CHAT_ID, 0);
@@ -89,12 +92,15 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
isEdit = true;
DcChat dcChat = dcContext.getChat(groupChatId);
verified = dcChat.isProtected();
broadcast = dcChat.isBroadcast();
broadcast = dcChat.isOutBroadcast();
unencrypted = !dcChat.isEncrypted();
}
int chatId = getIntent().getIntExtra(CLONE_CHAT_EXTRA, 0);
if (chatId != 0) {
broadcast = dcContext.getChat(chatId).isBroadcast();
DcChat dcChat = dcContext.getChat(chatId);
broadcast = dcChat.isOutBroadcast();
unencrypted = !dcChat.isEncrypted();
}
initializeResources();
@@ -121,7 +127,10 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
title = getString(R.string.global_menu_edit_desktop);
}
else if(broadcast) {
title = getString(R.string.new_broadcast_list);
title = getString(R.string.new_channel);
}
else if(unencrypted) {
title = getString(R.string.new_email);
}
else {
title = getString(R.string.menu_new_group);
@@ -137,7 +146,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
initializeAvatarView();
SelectedContactsAdapter adapter = new SelectedContactsAdapter(this, GlideApp.with(this), broadcast);
SelectedContactsAdapter adapter = new SelectedContactsAdapter(this, GlideApp.with(this), broadcast, unencrypted);
adapter.setItemClickListener(this);
lv.setAdapter(adapter);
@@ -161,9 +170,12 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
}
if (broadcast) {
groupName.setHint(R.string.channel_name);
chatHints.setVisibility(View.VISIBLE);
} else if (unencrypted) {
avatar.setVisibility(View.GONE);
groupName.setHint(R.string.broadcast_list_name);
chatHints.setVisibility(isEdit()? View.GONE : View.VISIBLE);
groupName.setHint(R.string.subject);
chatHints.setVisibility(View.GONE);
} else {
chatHints.setVisibility(View.GONE);
}
@@ -209,37 +221,22 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.menu_create_group:
String groupName = getGroupName();
if (showGroupNameEmptyToast(groupName)) return true;
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
finish();
return true;
} else if (itemId == R.id.menu_create_group) {
String groupName = getGroupName();
if (showGroupNameEmptyToast(groupName)) return true;
if (groupChatId!=0) {
updateGroup(groupName);
} else {
verified = !broadcast && allMembersVerified();
if (verified && getAdapter().getContacts().size() == 1) {
new AlertDialog.Builder(this)
.setMessage(R.string.create_verified_group_ask)
.setNeutralButton(R.string.learn_more, (d, w) -> DcHelper.openHelp(this, "#e2eeguarantee"))
.setPositiveButton(R.string.yes, (d, w) -> {
createGroup(groupName);
})
.setNegativeButton(R.string.no, (d, w) -> {
verified = false;
createGroup(groupName);
})
.setCancelable(true)
.show();
} else {
createGroup(groupName);
}
}
if (groupChatId != 0) {
updateGroup(groupName);
} else {
verified = !unencrypted && !broadcast && allMembersVerified();
createGroup(groupName);
}
return true;
return true;
}
return false;
@@ -260,10 +257,8 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
if (contactId == DcContact.DC_CONTACT_ID_ADD_MEMBER) {
Intent intent = new Intent(this, ContactMultiSelectionActivity.class);
intent.putExtra(ContactSelectionListFragment.SELECT_VERIFIED_EXTRA, verified);
ArrayList<String> preselectedContacts = new ArrayList<>();
for (int id : getAdapter().getContacts()) {
preselectedContacts.add(dcContext.getContact(id).getAddr());
}
intent.putExtra(ContactSelectionListFragment.SELECT_UNENCRYPTED_EXTRA, unencrypted);
ArrayList<Integer> preselectedContacts = new ArrayList<>(getAdapter().getContacts());
intent.putExtra(ContactSelectionListFragment.PRESELECTED_CONTACTS, preselectedContacts);
startActivityForResult(intent, PICK_CONTACT);
}
@@ -276,8 +271,19 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
private void createGroup(String groupName) {
if (broadcast) {
groupChatId = dcContext.createBroadcastList();
dcContext.setChatName(groupChatId, groupName);
try {
groupChatId = DcHelper.getRpc(this).createBroadcast(dcContext.getAccountId(), groupName);
} catch (RpcException e) {
e.printStackTrace();
return;
}
} else if (unencrypted) {
try {
groupChatId = DcHelper.getRpc(this).createGroupChatUnencrypted(dcContext.getAccountId(), groupName);
} catch (RpcException e) {
e.printStackTrace();
return;
}
} else {
groupChatId = dcContext.createGroupChat(verified, groupName);
}
@@ -349,9 +355,9 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
case PICK_CONTACT:
ArrayList<Integer> contactIds = new ArrayList<>();
for (String addr : Objects.requireNonNull(data.getStringArrayListExtra("contacts"))) {
if(addr != null) {
contactIds.add(dcContext.createContact(null, addr));
for (Integer contactId : Objects.requireNonNull(data.getIntegerArrayListExtra(ContactMultiSelectionActivity.CONTACTS_EXTRA))) {
if(contactId != null) {
contactIds.add(contactId);
}
}
getAdapter().changeData(contactIds);
@@ -360,10 +366,6 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
case ScribbleActivity.SCRIBBLE_REQUEST_CODE:
setAvatarView(data.getData());
break;
case Crop.REQUEST_CROP:
setAvatarView(Crop.getOutput(data));
break;
}
}
@@ -375,11 +377,14 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity
.diskCacheStrategy(DiskCacheStrategy.NONE)
.centerCrop()
.override(AVATAR_SIZE, AVATAR_SIZE)
.into(new SimpleTarget<Bitmap>() {
.into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
setAvatar(output, resource);
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {}
});
}
@@ -4,7 +4,6 @@ import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_ENABLED;
import static org.thoughtcrime.securesms.connect.DcHelper.CONFIG_PROXY_URL;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -16,7 +15,6 @@ import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.text.util.Linkify;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -36,12 +34,13 @@ import androidx.loader.app.LoaderManager;
import com.b44t.messenger.DcContext;
import com.b44t.messenger.DcEvent;
import com.b44t.messenger.DcLot;
import com.b44t.messenger.rpc.Rpc;
import com.b44t.messenger.rpc.RpcException;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.soundcloud.android.crop.Crop;
import org.thoughtcrime.securesms.components.AvatarSelector;
import org.thoughtcrime.securesms.connect.AccountManager;
@@ -56,6 +55,7 @@ import org.thoughtcrime.securesms.profiles.ProfileMediaConstraints;
import org.thoughtcrime.securesms.proxy.ProxySettingsActivity;
import org.thoughtcrime.securesms.qr.RegistrationQrActivity;
import org.thoughtcrime.securesms.scribbles.ScribbleActivity;
import org.thoughtcrime.securesms.util.IntentUtils;
import org.thoughtcrime.securesms.util.Prefs;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.views.ProgressDialog;
@@ -71,7 +71,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
private static final String DCACCOUNT = "dcaccount";
private static final String DCLOGIN = "dclogin";
private static final String INSTANCES_URL = "https://delta.chat/chatmail";
private static final String DEFAULT_CHATMAIL_HOST = "nine.testrun.org";
private static final String DEFAULT_CHATMAIL_HOST = "arcanechat.me";
public static final String QR_ACCOUNT_EXTRA = "qr_account_extra";
public static final String FROM_WELCOME = "from_welcome";
@@ -90,7 +90,7 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
private AttachmentManager attachmentManager;
private Bitmap avatarBmp;
private ProgressDialog progressDialog;
private @Nullable ProgressDialog progressDialog;
private DcContext dcContext;
@Override
@@ -158,14 +158,14 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case android.R.id.home:
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
getOnBackPressedDispatcher().onBackPressed();
return true;
case R.id.menu_proxy_settings:
} else if (itemId == R.id.menu_proxy_settings) {
startActivity(new Intent(this, ProxySettingsActivity.class));
return true;
case R.id.menu_view_log:
} else if (itemId == R.id.menu_view_log) {
startActivity(new Intent(this, LogViewActivity.class));
return true;
}
@@ -191,10 +191,6 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
setAvatarView(data.getData());
break;
case Crop.REQUEST_CROP:
setAvatarView(Crop.getOutput(data));
break;
case IntentIntegrator.REQUEST_CODE:
String qrRaw = data.getStringExtra(RegistrationQrActivity.QRDATA_EXTRA);
if (qrRaw == null) {
@@ -333,14 +329,14 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
privacyPolicyBtn.setOnClickListener(view -> {
if (!isDcLogin) {
WebViewActivity.openUrlInBrowser(this, "https://" + providerHost + "/privacy.html");
IntentUtils.showInBrowser(this, "https://" + providerHost + "/privacy.html");
}
});
signUpBtn.setOnClickListener(view -> createProfile());
findViewById(R.id.use_other_server).setOnClickListener((v) -> {
WebViewActivity.openUrlInBrowser(this, INSTANCES_URL);
IntentUtils.showInBrowser(this, INSTANCES_URL);
});
findViewById(R.id.login_button).setOnClickListener((v) -> {
startRegistrationActivity();
@@ -403,30 +399,34 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
if (eventId == DcContext.DC_EVENT_CONFIGURE_PROGRESS) {
long progress = event.getData1Int();
if (progress==0/*error/aborted*/) {
progressError(event.getData2Str());
} else if (progress<1000/*progress in permille*/) {
progressUpdate((int)progress);
} else if (progress==1000/*done*/) {
DcHelper.getAccounts(this).startIo();
progressSuccess();
}
progressUpdate((int)progress);
}
}
private void progressUpdate(int progress) {
int percent = progress / 10;
progressDialog.setMessage(getResources().getString(R.string.one_moment)+String.format(" %d%%", percent));
if (progressDialog != null) {
progressDialog.setMessage(getResources().getString(R.string.one_moment)+String.format(" %d%%", percent));
}
}
private void progressError(String data2) {
progressDialog.dismiss();
if (progressDialog != null) {
try {
progressDialog.dismiss();
} catch (IllegalArgumentException e) {
// see https://stackoverflow.com/a/5102572/4557005
Log.w(TAG, e);
}
}
WelcomeActivity.maybeShowConfigurationError(this, data2);
}
private void progressSuccess() {
DcHelper.getEventCenter(this).endCaptureNextError();
progressDialog.dismiss();
if (progressDialog != null) {
progressDialog.dismiss();
}
Intent intent = new Intent(getApplicationContext(), ConversationListActivity.class);
intent.putExtra(ConversationListActivity.FROM_WELCOME, true);
@@ -494,14 +494,13 @@ public class InstantOnboardingActivity extends BaseActionBarActivity implements
DcHelper.getEventCenter(this).captureNextError();
new Thread(() -> {
if (!dcContext.setConfigFromQr(qrCode)) {
Util.runOnMain(() -> {
progressError(dcContext.getLastError());
});
return;
}
DcHelper.getAccounts(this).stopIo();
dcContext.configure();
Rpc rpc = DcHelper.getRpc(this);
try {
rpc.addTransportFromQr(dcContext.getAccountId(), qrCode);
progressSuccess();
} catch (RpcException e) {
Util.runOnMain(() -> progressError(e.getMessage()));
}
}).start();
}
@@ -57,22 +57,22 @@ public class LocalHelpActivity extends WebViewActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.log_scroll_up:
webView.scrollTo(0, 0);
return true;
case R.id.learn_more:
openOnlineUrl("https://delta.chat");
return true;
case R.id.privacy_policy:
openOnlineUrl("https://delta.chat/gdpr");
return true;
case R.id.contribute:
openOnlineUrl("https://github.com/deltachat/deltachat-android");
return true;
case R.id.report_issue:
openOnlineUrl("https://github.com/deltachat/deltachat-android/issues");
return true;
int itemId = item.getItemId();
if (itemId == R.id.log_scroll_up) {
webView.scrollTo(0, 0);
return true;
} else if (itemId == R.id.learn_more) {
openOnlineUrl("https://arcanechat.me");
return true;
} else if (itemId == R.id.privacy_policy) {
openOnlineUrl("https://arcanechat.me/privacy.html");
return true;
} else if (itemId == R.id.contribute) {
openOnlineUrl("https://arcanechat.me/#contribute");
return true;
} else if (itemId == R.id.report_issue) {
openOnlineUrl("https://github.com/ArcaneChat/android/issues");
return true;
}
return false;
}
@@ -54,42 +54,42 @@ public class LogViewActivity extends BaseActionBarActivity {
super.onOptionsItemSelected(item);
Float newSize;
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.save_log:
Permissions.with(this)
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.alwaysGrantOnSdk30()
.ifNecessary()
.onAllGranted(() -> {
File outputDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
boolean success = logViewFragment.saveLogFile(outputDir) != null;
new AlertDialog.Builder(this)
.setMessage(success? R.string.pref_saved_log : R.string.pref_save_log_failed)
.setPositiveButton(android.R.string.ok, null)
.show();
})
.execute();
return true;
case R.id.share_log:
shareLog();
return true;
case R.id.log_zoom_in:
newSize = logViewFragment.getLogTextSize() + 2.0f;
logViewFragment.setLogTextSize(newSize);
return false;
case R.id.log_zoom_out:
newSize = logViewFragment.getLogTextSize() - 2.0f;
logViewFragment.setLogTextSize(newSize);
return false;
case R.id.log_scroll_down:
logViewFragment.scrollDownLog();
return false;
case R.id.log_scroll_up:
logViewFragment.scrollUpLog();
return false;
int itemId = item.getItemId();
if (itemId == android.R.id.home) {
finish();
return true;
} else if (itemId == R.id.save_log) {
Permissions.with(this)
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.alwaysGrantOnSdk30()
.ifNecessary()
.onAllGranted(() -> {
File outputDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
boolean success = logViewFragment.saveLogFile(outputDir) != null;
new AlertDialog.Builder(this)
.setMessage(success ? R.string.pref_saved_log : R.string.pref_save_log_failed)
.setPositiveButton(android.R.string.ok, null)
.show();
})
.execute();
return true;
} else if (itemId == R.id.share_log) {
shareLog();
return true;
} else if (itemId == R.id.log_zoom_in) {
newSize = logViewFragment.getLogTextSize() + 2.0f;
logViewFragment.setLogTextSize(newSize);
return false;
} else if (itemId == R.id.log_zoom_out) {
newSize = logViewFragment.getLogTextSize() - 2.0f;
logViewFragment.setLogTextSize(newSize);
return false;
} else if (itemId == R.id.log_scroll_down) {
logViewFragment.scrollDownLog();
return false;
} else if (itemId == R.id.log_scroll_up) {
logViewFragment.scrollUpLog();
return false;
}
return false;
@@ -18,14 +18,12 @@
package org.thoughtcrime.securesms;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Bundle;
import android.os.PowerManager;
import android.text.TextUtils;
@@ -16,9 +16,9 @@
*/
package org.thoughtcrime.securesms;
import android.app.Activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
@@ -207,7 +207,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
messageRecord = null;
long date = getIntent().getLongExtra(DATE_EXTRA, 0);
long size = getIntent().getLongExtra(SIZE_EXTRA, 0);
initialMedia = new MediaItem(null, getIntent().getData(), getIntent().getType(),
initialMedia = new MediaItem(null, getIntent().getData(), null, getIntent().getType(),
DcMsg.DC_MSG_NO_ID, date, size, false);
if (address != null) {
@@ -218,7 +218,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
} else {
messageRecord = dcContext.getMsg(msgId);
initialMedia = new MediaItem(Recipient.fromChat(context, msgId), Uri.fromFile(messageRecord.getFileAsFile()),
messageRecord.getFilemime(), messageRecord.getId(), messageRecord.getDateReceived(),
messageRecord.getFilename(), messageRecord.getFilemime(), messageRecord.getId(), messageRecord.getDateReceived(),
messageRecord.getFilebytes(), messageRecord.isOutgoing());
conversationRecipient = Recipient.fromChat(context, msgId);
}
@@ -232,12 +232,11 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
// if you search for the place where the media are loaded, go to 'onCreateLoader'.
Log.w(TAG, "Loading Part URI: " + initialMedia);
if (messageRecord != null) {
getSupportLoaderManager().restartLoader(0, null, this);
} else {
mediaPager.setAdapter(new SingleItemPagerAdapter(this, GlideApp.with(this),
getWindow(), initialMedia.uri, initialMedia.type, initialMedia.size));
getWindow(), initialMedia.uri, initialMedia.name, initialMedia.type, initialMedia.size));
}
}
@@ -263,16 +262,16 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
finish();
}
else if(conversationRecipient.getAddress().isDcChat()) {
Intent intent = new Intent(this, ProfileActivity.class);
intent.putExtra(ProfileActivity.CHAT_ID_EXTRA, conversationRecipient.getAddress().getDcChatId());
intent.putExtra(ProfileActivity.FORCE_TAB_EXTRA, ProfileActivity.TAB_GALLERY);
Intent intent = new Intent(this, AllMediaActivity.class);
intent.putExtra(AllMediaActivity.CHAT_ID_EXTRA, conversationRecipient.getAddress().getDcChatId());
intent.putExtra(AllMediaActivity.FORCE_GALLERY, true);
startActivity(intent);
finish();
}
else if(conversationRecipient.getAddress().isDcContact()) {
Intent intent = new Intent(this, ProfileActivity.class);
intent.putExtra(ProfileActivity.CONTACT_ID_EXTRA, conversationRecipient.getAddress().getDcContactId());
intent.putExtra(ProfileActivity.FORCE_TAB_EXTRA, ProfileActivity.TAB_GALLERY);
Intent intent = new Intent(this, AllMediaActivity.class);
intent.putExtra(AllMediaActivity.CONTACT_ID_EXTRA, conversationRecipient.getAddress().getDcContactId());
intent.putExtra(AllMediaActivity.FORCE_GALLERY, true);
startActivity(intent);
finish();
}
@@ -313,7 +312,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
private void performSavetoDisk(@NonNull MediaItem mediaItem) {
SaveAttachmentTask saveTask = new SaveAttachmentTask(MediaPreviewActivity.this);
long saveDate = (mediaItem.date > 0) ? mediaItem.date : System.currentTimeMillis();
saveTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Attachment(mediaItem.uri, mediaItem.type, saveDate, null));
saveTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, new Attachment(mediaItem.uri, mediaItem.type, saveDate, mediaItem.name));
}
private void showInChat() {
@@ -346,27 +345,32 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
DcChat dcChat = dcContext.getChat(dcMsg.getChatId());
String text = getResources().getQuantityString(
dcChat.isDeviceTalk()? R.plurals.ask_delete_messages_simple : R.plurals.ask_delete_messages,
dcChat.isDeviceTalk() ? R.plurals.ask_delete_messages_simple : R.plurals.ask_delete_messages,
1, 1);
int positiveBtnLabel = dcChat.isSelfTalk() ? R.string.delete : R.string.delete_for_me;
final int[] messageIds = new int[]{mediaItem.msgId};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(text);
builder.setCancelable(true);
builder.setPositiveButton(R.string.delete, (dialogInterface, which) -> {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... voids) {
dcContext.deleteMsgs(new int[]{mediaItem.msgId});
return null;
}
}.execute();
builder.setNeutralButton(android.R.string.cancel, null);
builder.setPositiveButton(positiveBtnLabel, (dialogInterface, which) -> {
Util.runOnAnyBackgroundThread(() -> dcContext.deleteMsgs(messageIds));
finish();
});
builder.setNegativeButton(android.R.string.cancel, null);
AlertDialog dialog = builder.show();
Util.redPositiveButton(dialog);
if(dcChat.isEncrypted() && dcChat.canSend() && !dcChat.isSelfTalk() && dcMsg.isOutgoing()) {
builder.setNegativeButton(R.string.delete_for_everyone, (d, which) -> {
Util.runOnAnyBackgroundThread(() -> dcContext.sendDeleteRequest(messageIds));
finish();
});
AlertDialog dialog = builder.show();
Util.redButton(dialog, AlertDialog.BUTTON_NEGATIVE);
Util.redPositiveButton(dialog);
} else {
AlertDialog dialog = builder.show();
Util.redPositiveButton(dialog);
}
}
@Override
@@ -396,14 +400,28 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.media_preview__edit: editAvatar(); return true;
case R.id.media_preview__overview: showOverview(); return true;
case R.id.media_preview__share: share(); return true;
case R.id.save: saveToDisk(); return true;
case R.id.delete: deleteMedia(); return true;
case R.id.show_in_chat: showInChat(); return true;
case android.R.id.home: finish(); return true;
int itemId = item.getItemId();
if (itemId == R.id.media_preview__edit) {
editAvatar();
return true;
} else if (itemId == R.id.media_preview__overview) {
showOverview();
return true;
} else if (itemId == R.id.media_preview__share) {
share();
return true;
} else if (itemId == R.id.save) {
saveToDisk();
return true;
} else if (itemId == R.id.delete) {
deleteMedia();
return true;
} else if (itemId == R.id.show_in_chat) {
showInChat();
return true;
} else if (itemId == android.R.id.home) {
finish();
return true;
}
return false;
@@ -473,9 +491,12 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
MediaItemAdapter adapter = (MediaItemAdapter)mediaPager.getAdapter();
if (adapter != null) {
MediaItem item = adapter.getMediaItemFor(position);
if (item.recipient != null) item.recipient.removeListener(MediaPreviewActivity.this);
try {
MediaItem item = adapter.getMediaItemFor(position);
if (item.recipient != null) item.recipient.removeListener(MediaPreviewActivity.this);
} catch (IllegalArgumentException e) {
Log.w(TAG, "Ignoring invalid position index");
}
adapter.pause(position);
}
}
@@ -486,18 +507,20 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
private final GlideRequests glideRequests;
private final Window window;
private final Uri uri;
private final String name;
private final String mediaType;
private final long size;
private final LayoutInflater inflater;
SingleItemPagerAdapter(@NonNull Context context, @NonNull GlideRequests glideRequests,
@NonNull Window window, @NonNull Uri uri, @NonNull String mediaType,
@NonNull Window window, @NonNull Uri uri, @Nullable String name, @NonNull String mediaType,
long size)
{
this.glideRequests = glideRequests;
this.window = window;
this.uri = uri;
this.name = name;
this.mediaType = mediaType;
this.size = size;
this.inflater = LayoutInflater.from(context);
@@ -519,7 +542,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
MediaView mediaView = itemView.findViewById(R.id.media_view);
try {
mediaView.set(glideRequests, window, uri, mediaType, size, true);
mediaView.set(glideRequests, window, uri, name, mediaType, size, true);
} catch (IOException e) {
Log.w(TAG, e);
}
@@ -539,7 +562,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
@Override
public MediaItem getMediaItemFor(int position) {
return new MediaItem(null, uri, mediaType, DcMsg.DC_MSG_NO_ID, -1, -1, true);
return new MediaItem(null, uri, name, mediaType, DcMsg.DC_MSG_NO_ID, -1, -1, true);
}
@Override
@@ -604,7 +627,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
try {
//noinspection ConstantConditions
mediaView.set(glideRequests, window, Uri.fromFile(msg.getFileAsFile()),
mediaView.set(glideRequests, window, Uri.fromFile(msg.getFileAsFile()), msg.getFilename(),
msg.getFilemime(), msg.getFilebytes(), autoplay);
} catch (IOException e) {
Log.w(TAG, e);
@@ -633,6 +656,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
return new MediaItem(Recipient.fromChat(context, msg.getId()),
Uri.fromFile(msg.getFileAsFile()),
msg.getFilename(),
msg.getFilemime(),
msg.getId(),
msg.getDateReceived(),
@@ -655,6 +679,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
private static class MediaItem {
private final @Nullable Recipient recipient;
private final @NonNull Uri uri;
private final @Nullable String name;
private final @NonNull String type;
private final int msgId;
private final long date;
@@ -663,6 +688,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
private MediaItem(@Nullable Recipient recipient,
@NonNull Uri uri,
@Nullable String name,
@NonNull String type,
int msgId,
long date,
@@ -671,6 +697,7 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity
{
this.recipient = recipient;
this.uri = uri;
this.name = name;
this.type = type;
this.msgId = msgId;
this.date = date;

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