* add a warning to the existing hint; desktop and iOS will pick that up without code changes
* add hint to the relay list
* add padding
* move relay up
* update CHANGELOG
* make spotless happy
* show 'remove relay' items in red
* show concrete meaning of 'default' or 'main'
* prepare for showing 'unpublished' state
* rework 'remove relay' dialog
* fix RPC building doc and remove temp. file
* add hint to be shown below relay list
* adapt to new core api
* use listTransportsEx()
* use rpc.setTransportUnpublished()
* keep hidden
* tweak remove dialog in case the relay is already hidden
* adapt to chat.delta.rpc.types.TransportListEntry classname
* remove outdated autogenerated file
* update CHANGELOG
* simplify deletion
* make spotless happy
* change button order so hide/delete are not together usually; this matches also more the gist of positive/negative/neutral
* Update src/main/res/values/strings.xml
Co-authored-by: Hocuri <hocuri@gmx.de>
* the dialog wording fits better when already hidden now
* move similar strings together, make translation easier
* actions are 'Title Case', however, this usually applies to nouns, verbs, adjectives, first and last word only, not to prepositions as 'from'
---------
Co-authored-by: Hocuri <hocuri@gmx.de>
Add locks to avoid race conditions
Remove bottom card from CallActivity
Fix audio endpoint and ringtone problem
Add proximity wake lock
Other bug fixes
processComposeControls() spawns a background thread that uses the
class field chatId, but by the time `setDraft(chatId, null)` is called
to clear the draft, the chatId might be already the new selected chat
for "reply privately"
* fix: leave and delete finishes activity
the chat is gone - otherwise, we end up in ghost chat zero :)
moreover, the fix removes shortcuts from the homescreen.
a toast is no longer needed, as there is enough visual feedback;
we're also not showing a toast on plain deletion.
* use consistent string and clarify deletion scope
* deleting groups/channels is available after leaving only
* update CHANGELOG
* Update src/main/java/org/thoughtcrime/securesms/ConversationActivity.java
Co-authored-by: adb <adb@merlinux.eu>
* mailing lists are not encrypted
---------
Co-authored-by: adb <adb@merlinux.eu>
when user creates a channel, only call rpc.setChatDescription if
there is actually some description to set, otherwise there will be a
"you changed the description" info-message when the user didn't set anything
Avatar-images with a resolution larger than 512x512 will be resized by Chatmail Core, while media-quality is set to balanced, which is currently the highest quality-setting.
Co-authored-by: Hocuri <hocuri@gmx.de>
that way, the end is always visible,
which contains important information more often than the middle.
this is common knowledge since the 90's or so
however, as quite some previously stable ux patterns, lost on the way.
(cmp. Scott Jensen, https://www.youtube.com/watch?v=1fZTOjd_bOQ )
clarify, that the "Add Second Device" settings are within Delta Chat,
not within system or app settings.
we got reports of ppl searching within system settings,
esp. on iOS, some apps have additional settings there,
so it is not so far fetched.
but also for other OS, the hint to start Delta Chat is useful
and not only noise.
even if that is done for non-chatmail only,
it raises false expectations for other profiles,
and here it is easy to avoid - if that is really an important information for the user,
they can add it to the label.
also, this synchronizes UI which what is done on desktop/iOS
Counterpart of https://github.com/chatmail/core/pull/6851
* Make sending of statistics into a setting
* feat: Count securejoin sources and UI paths
* feat: Rename self_reporting to send_statistics
* Adapt core's API change
* WIP, untested: Adapt to a rename on the core side
* Adapt to generated jsonrpc
* New strings and a new dialog
* Adapt to the API change
* Rewording: `...and support research`
* "More Info" button rather than link
* Small fixes
* Open the correct survey (though it doesn't work yet)
* Changelog
* Update help
* Fix compile error
* Fix compilation
* Revert submodule change
* Don't show a device message yet
* Move "Send Statistics" setting
* Fix compilation error
* Remove unused constant
---------
Co-authored-by: adb <adb@merlinux.eu>
it was renamed first on iOS from 'Chats and Media' to 'Chats'
to not confuse with 'All Apps and Media' -
however, that point is also valid for android,
but even if not, it is good for inner consistency and simpler documentation.
moreover, the settings are in reality also about contacts and more,
so just a broad chats is fine.
but also for outer consistency,
this seems better - also in quite some other apps,
it is just called 'chats'
this removes the addendum 'on all your devices'
from the 'really delete?' questions.
- after polls, and looking at what other apps are doing,
it is just the default expectation, that a message is deleted from all devices,
also, we do not have an option (nor do not want to have)
- so, at that point - fresh user, one device -
there is no need to clutter with other convepts and relativation.
also, most user will never have more devices.
- ppl anyway do not read -
but if they do, it is good to have things as much on point as possible :)
- the question fits better to the "delete for everyone" option
- simplify code and strings,
as device message deletion is no longer special
(there, we never said "on all your devices")
the addendum 'from your devices' was added as
one year ago, for technical limitations, deletion was really on one device.
when we removed that limitation, we added to addendum,
so ppl used to old apps have a chance to get the change.
meanwhile, the new default is clear and settled and the addendum
does more harm and raise questions than doing good.
instead, one should be asked whether to add a transport.
- it is very probably the more wanted action -
when one wants a new profile, it is better to learn first,
that one has to go over "switch profil"
- less can go wrong -
if ppl play around,
adding a transport is less harmful than a new profile
where they do not know how to switch, send from different ones etc.
by the bare title, this is not clear to everyone.
technically, i also tried <PreferenceCategory summary>,
but that does not wrap text.
moved down 'app picker' for better layout and to match
order of other UI.
- 'backgound' term is used in many other contextes
- 'messages' may also be confused with what the user usually thinks of being a 'message',
similar for 'send'
* deprecate 'what is webxdc?' string"
it is used when an in-app is on the screen (on desktop),
however, instead of helping, immediately raises another question,
as the user just did not know about webxdc at all at that point
(we are not using the term in the apps at all).
better just use the string 'Help' and open
offline help at #webxdc - the entry is also just improved :)
* add 'help' to app-menu
* just 'help' may be confused with 'help about that app', be little more specific
* update CHANGELOG
Before this PR, when a QR code couldn't be loaded because of https://github.com/chatmail/core/pull/7399, Delta Chat crashed.
Now, the button does nothing.
It's not perfect, but easy to do, and only about an edge case where the user tried out the experimental broadcast channels in the past, and now tries to add a new member to a broadcast channel created with an old version of DC.
The hollistic alternative would be to switch to RPC for getSecurejoinQrSvg, so that the UI can get a proper error message.
---------
Co-authored-by: adb <adb@merlinux.eu>
Determinate Systems server is installing its own fork of Nix
that is apparently not open source:
<https://lobste.rs/s/be78ef/dropping_upstream_nix_from_determinate#c_m3hq6r>
The company behind it also pushes the users to use FlakeHub
and has other problems.
[Lix] installer is a fork of The Determinate Nix Installer.
I uninstalled Nix preivously installed with The Determinate Nix Installer
and installed Lix, it works just the same for Android builds.
Upstream Nix would also be fine,
but it still has old installer that does not enable Flakes
and breaks on macOS on upgrades apparently,
so we cannot recommend it as the easiest way.
[Lix]: https://lix.systems/
the string can be used for the action to put a message to 'Saved Messages'.
it will be useful esp. on desktop,
where plain 'Save' often has the mindset of 'Files',
esp. for older ppl :)
the added noun tries to break that.
additionally, desktop can resort menu items,
but that alone would not solve the issue.
there are also thoughs about renaming that alltogether,
eg. to bookmark, but that is a larger and more breaking change,
also the messages are not just 'bookmarked' on purpose,
to eg. survive auto deletion.
- with the recent change to start the timer when the chat is opened,
one minute is too easy too short to miss important information
- "30 minutes" does not really fit into the distribution;
all other option have at least the factor 5 to the previous one,
from "30 minutes" to "60 minutes", the time is doubled only.
removing the overall number of options and dropping the ones without larger usecases,
does not only simplifies UI;
having less tiny details also reduces noise in groups
where ppl people changing it very often for various weird reasons
(found the latter point somewhere in the Signal forum, btw)
this improves readability of info messages
by setting the foreground to while.
`universal_overlay` was made for that;
it is in use like that on iOS/desktop since a long time.
moreover, other parts using the combination of
`conversation_item_update_bg_color`/`conversation_item_update_text_color`
are improved equally, eg. the day titles.
Since buildToolsVersion is not specified in `build.gradle`,
default version is set by Android Gradle Plugin.
Gradle plugin was updated in a77b1a5dd6,
so build tools version should be updated in flake.nix
to the corresponding version, otherwise building
fails while trying to install 35.0.0 into
read-only path managed by Nix.
* 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>
* 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>
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
* 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
* 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>
* 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
* 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.
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
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.
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.
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 :)
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.
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.
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 :)
* 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>
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.
* 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>
* 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>
* 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
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 :)
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 ...'" :)
* remove deprecated strings, usage was checked with ./scripts/grep-string.sh
* add new 'Chat with...', needed currently only for iOS
* update translations
# GitHub Copilot Instructions for ArcaneChat Android
## Project Overview
ArcaneChat is a Delta Chat Android client built on top of the official Delta Chat client with several improvements. It is a messenger app that uses email infrastructure for secure communication.
**Technology Stack:**
- **Language:** Java (Java 8 compatibility)
- **Build System:** Gradle with Android Gradle Plugin 8.11.1
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)'
- Executing `./gradlew assembleDebug` inside the container fails with `The SDK directory '/home/user/Android/Sdk' does not exist.`:
The problem is that Android Studio (outside the container) automatically creates a file `local.properties` with a content like `sdk.dir=/home/username/Android/Sdk`,
so, Gradle-inside-the-container looks for the Sdk at `/home/username/Android/Sdk`, where it can't find it.
You could:
- either: remove the file or just the line starting with `sdk.dir`
- or: run `./gradlew assembleDebug` from outside the container (however, there may be incompatibility issues if different versions are installed inside and outside the container)
- Running the image fails with `ERRO[0000] The storage 'driver' option must be set in /etc/containers/storage.conf, guarantee proper operation.`:
In /etc/containers/storage.conf, replace the line: `driver = ""` with: `driver = "overlay"`.
You can also set the `driver` option to something else, you just need to set it to _something_.
[Read about possible options here](https://github.com/containers/storage/blob/master/docs/containers-storage.conf.5.md#storage-table).
## <a name="setup-podman"></a>Setup Podman
These instructions were only tested on a Manjaro machine so far. If anything doesn't work, please open an issue.
See https://wiki.archlinux.org/index.php/Podman#Rootless_Podman for more information.
## <a name="install-build-environment"></a>Install Build Environment (without Docker or Podman)
To setup build environment manually:
- _Either_, in Android Studio, go to "Tools / SDK Manager / SDK Tools", enable "Show Package Details",
select "CMake" and the desired NDK (install the same NDK version as the [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile)), hit "Apply".
- _Or_ read [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile) and mimic what it does.
Then, in both cases, install Rust using [rustup](https://rustup.rs/)
and Rust toolchains for cross-compilation by executing `scripts/install-toolchains.sh`.
Then, configure `ANDROID_NDK_ROOT` environment variable to point to the Android NDK
installation directory e.g. by adding this to your `.bashrc`:
```bash
exportANDROID_NDK_ROOT=${HOME}/Android/Sdk/ndk/[version]# (or wherever your NDK is) Note that there is no `/` at the end!
`obj/local/armeabi-v7a` is the extracted path from `deltachat-gplay-release-X.X.X.apk-symbols.zip` file from https://download.delta.chat/android/symbols/
Replace `armeabi-v7a` by the correct architecture the logs come from (can be guessed by trial and error)
### Deobfuscating Java/Kotlin Stack Traces
Because the app uses code minification (ProGuard/R8), Java stack traces in crash reports are obfuscated.
To decode them, use `retrace` with the `mapping.txt` file that is included in the symbols zip:
```
retrace mapping.txt crash.txt > decoded-crash.txt
```
`mapping.txt` is extracted from the same `deltachat-gplay-release-X.X.X.apk-symbols.zip` file available at https://download.delta.chat/android/symbols/
* Calls are not experimental anymore and don't need to be manually enabled
* Display a permanent notification when doing location streaming and get rid of dangerous "Access Location in Background" permission
* Allow mini-apps to play audio without user interaction
* Mark chats as unread (long tap a chat and select the corresponding option from the three-dot-menu)
## v2.49.0
2026-04
* Fix file sharing to certain apps (e.g. Material Files, etc.)
* Fix problem with calls when microphone permission is not granted
* Fix taking pictures and videos in devices with SD cards
* Fix flipped orientation for some images
* Fix: avoid empty contact request chats when using invite links in a multi-device setup
* Remove proxy toggle from profile editing to avoid confusion
* Updated translations
* Update to core 2.49.0
## v2.48.0
2026-03
* Add a warning when editing relays
* Fix message reordering problems in multi-relay setups
* Some more bug fixes and updated translations
* Update to core 2.48.0
## v2.47.0
2026-03
* Allow to set chat description
* Unified date display in call bubbles
* Explain at "Settings / Chats / Outgoing Media Quality" how to send original quality
* Add a basic sticker picker
* Leave groups and channels before deletion
* Further minimize metadata in messages and while getting in contact.
* Increase resilience of multi-relay usage: if on relay goes down, messages are still received in the others.
* Allow to hide a relay from contacts instead of removing, allowing smoother relay changes
* HTML emails: allow to review and copy links before opening them
* Mark call message as seen when accepting/declining a call
* Fix: keep original sent timestamp for resent messages
* Fix: make clicking on broadcast member-added messages work always
* Fix: remove notification when a message is deleted by sender
* Fix: avoid "reply privately" not quoting the selected message sometimes
* Fix: properly hide the calls button
* Some more bug fixes and updated translations
* Update to core 2.47.0
## v2.43.0
2026-02
* Improve switch speed when changing profiles
* Allow to switch profile when sharing or forwarding
* Display message views count for channel owners
* Don't notify notification-to-all from in-chat apps if the chat is muted
* Allow to see inbox quota for all relays in connectivity screen
* Truncate file names in the middle, not at the end; important information are more often at the end
* Remove email address from user profile
* Mark external links with " ↗" to make them clear
* Make QR code larger on "Add Second Device" screen
* Add indication for blocked contacts in user profile
* Allow to start calls with video disabled
* Show hint for empty contact search results
* Add background playing for voice messages and other audio files
* Allow scanning Invitation Code when creating a new profile
* Add context menu in long-pressing relays items instead of showing buttons
* Enhanced video player UI
* Fix: Show dialog if pasted QR codes are invalid
* Fix: Refresh chat list when returning from conversation if selected profile changed
* Fix: Update menu when using "select all" in contact selection
* Fix: Avoid empty profiles after using "add as second device" from welcome screen
* Fix: Remove from group deselected members in the contact selection list
* Fix multi-device seen messages synchronization when using multiple relays
* Fix mailto handling
* Fix layout problems inside in-chat apps
* Fix real-time for in-chat apps that need it
* Avoid crash when the app is minimized with profile switcher or reactions dialogs open
* Remove "trash icon" option from contact selection list when adding members to group
* Update to core 2.43.0
## v2.35.0
2026-01
* Protect profile deletion and relays management with system lock/pin
* Fix: Remove address from profile switcher
* Fix: Avoid crash if the system doesn't allow to start foreground service
* Remove deprecated "real-time apps" switch
* Update to core 2.35.0
## v2.34.0
2025-12
* Allow to add relay from clipboard or image if camera permission is not granted
* Avoid crash in the "View Log" screen
* Update to core 2.34.0
## v2.33.1
2025-12
* Target Android 16
* Change color of links in text messages
* Improve edge-to-edge support
* Add the option (opt-in) to send anonymous statistics to Delta Chat's developers
* Metadata protection: protect message recipients
* Allow to withdraw channel invite links and QR codes
* Allow to open externally links clicked inside in-chat apps
* Do not show "1 member" when the process of joining the group is not finished
* Make search case-insensitive for non-ASCII chat and contact names
* Improve handling of video recoding
* Send .webm videos as file, they are not supported by all platforms
* Tweak advanced section and wording of some advanced options
* Fix: avoid crash in push notifications handling
* Fix: avoid freezing in background
* Fix: clean up web storage of deleted in-chat apps
* Fix: avoid crash when exporting some files with wrong image MIME type
* Expose new "Multi-device mode" option instead of "Delete from server" for chatmail profiles
* Opened in-chat apps got a 'About Apps' menu item
* Avoid gray avatar on profile creation
* Avoid last item in chat list being covered by the floating button
* Add disk usage statistics to log
* New experimental feature: several addresses per profile
* Update to core 2.33.0
## v2.25.0
2025-11
* Make it possible to invite members into a channel via a QR code,
and make channels more secure
* metadata protection: protect Date header
* metadata protection: protect Autocrypt header
* better multi-device: synchronize group creation across devices
* data saving: do not send Autocrypt header in read receipts
* improve onboarding speed
* allow to save to storage files shared from inside in-chat apps
* reduce app size
* don't show badge counter in app icon for the permanent background notification
* fix sorting of old media in gallery
* fix text direction in "x members" subtitle for RTL languages
* fix group invite QR screen's layout
* tweak text hints in advanced classic e-mail configuration
* remove deprecated "companion app" code
* remove deprecated "Watch Sent Folder" preference
* remove deprecated "send self-report" preference
* don't show email address in shared vcard
* update to core 2.25.0
## v2.22.0
2025-10
* target Android 15
* improve readability of info messages in dark mode
* drop too short disappearing messages options
* fix Direct Share shortcuts
* fix: don't show error message when cancelling profile creation
* enable permanent notification by default if push notifications are not available
* hide "clone chat" and member list for incoming channels
* show warning if background notifications will be unreliable
* warn if the app has not been updated after 6 months instead of 1 year
* avoid "unknown sender for this chat" error
* properly display "Messages are end-to-end encrypted." in all encrypted groups
* show dialog if user has permanently denied camera permission and tries to take picture for group avatar
* several small fixes and improvements
* add experimental built-in calls
* update to core 2.22.0
## v2.11.0
2025-08
* add "After 1 year" option to disappearing messages
* improve image quality when setting group avatars
* add Estonian translation, update other translations
* allow to clone email chats
* fix some small bugs
* update to core 2.11.0
## v2.10.0
2025-08
* fix "Archived" item's layout in chat-list
* don't enlarge "Saved Messages" and "Devices Messages" avatars on click
* share email address for email contacts instead of vCard
* open existing encrypted chat when opening a mailto link or clicking an email address in a message bubble
* update to core 2.10.0
## v2.9.0
2025-07
* hide contact email addresses in search results
* disable non-functional message editing and ephemeral messages timer settings in classic email thread chat
* don't enlarge email chats avatar placeholder
* improve message date/status footer layout, also in RTL languages
* display correct text when receiving a "Disappearing messages enabled" system message
* Update to core 2.9.0
## v2.8.0
2025-07
* Profiles focus on recognizing contacts
* See the number of media directly in the profile, no need to tap around
* Clearer app lists by removing redundant "App" subtitle
* New button for quick access to the apps sent in current chat
* New icon for the in-chat apps button
* Improve hint for app drafts
* Add Text-To-Speech (TTS) support for in-chat apps
* New icon for the QR icon
* Start rebuilding the experimental broadcast lists
into proper channels - note that this is work-in-progress
* Improved separation between unencrypted chats/contacts and encrypted ones, avoiding mixing of encrypted and unencrypted messages in the same chat
* Removed padlocks, as encrypted is the default "normal" state. Instead, unencrypted email is marked with a small email / letter (✉️) icon
* Classic email chats/threads get a big email / letter icon making it easy to recognize
* After some time, add a device message asking to donate. Can't wait? Donate today at https://delta.chat/donate
* Allow to sort profiles up in the profile switcher
* Add new option to create unencrypted email thread
* Green checkmarks are removed where they mostly refer to guaranteed encryption, which is the default now. They are still used for profile's "Introduced by"
* Update to core 2.8.0
## v1.58.4
2025-05
* make in-chat apps properly work when they are not sent yet, in draft mode
* better avatar quality
* some more bug fixes and updated translations
* update to core 1.159.5
## v1.58.3
2025-05
* fix: webxdc.selfName uses the name otherwise displayed
* fix potential crash on startup
* add donation link to app settings
* update to core 1.159.3
## v1.58.2
2025-04
* fix draft writing area disappearing for some chats
* update to core 1.159.2
## v1.58.1
2025-04
* tapping info messages with contacts open the contact's profile
* hide superfluous "Show Classic E-mails" advanced setting for chatmail
* show profile bio/status under name in main settings screen
* remove mostly non-telling transport addresses when referring to a contact;
the contact's profile gives a much better overview
* Disable AEAP to enable us to overhaul some things - there are big changes underway in this area, which will come in a few months
* don't display email address in contact list and member list for contacts with green-checkmark
* avoid crash in Notifications preferences if ringtone title can't be read
* don't display forwarded messages as "edited" if original message was edited
* support importing contact from ProtonMail vCard attachments received in chats
* send encrypted in the experimental broadcast lists feature
* wait for QR scan (or invite link click) process to complete before allowing to send messages
* show connectivity status dot when profile is connecting or not connected
* never send Autocrypt-Gossip in broadcast lists.
* update to core 1.159.1
## v1.56.1
2025-03
* ignore click in info-messages from deleted in-chat apps
* data saving: do not send messages to the server if user is the only member of the chat in single-device usage
* protect metadata: encrypt message's sent date
* do not fail to send messages in groups if some encryption keys are missing
* synchronize contact name changes across devices
* fix changing group names that was not working in some situations
* fix: do not show outdated message text in "Message Info" of an edited message
* some more small bug fixes and updated translations
* update to core 1.158.0
## v1.56.0
2025-03
* allow to edit messages
* allow to delete messages for everyone
* add mute option "8 hours"
* add menu option to easily save/unsave selected message
* improve deletion confirmation for "Device Messages"
* remove dangerous encryption options
* always paste as plain text in message draft area
* some small bug fixes and updated translations
* update to core 1.157.2
## v1.54.4
2025-03
* 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
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:
@@ -32,4 +30,4 @@ This app has some extended support for WebXDC apps:
This app is based on the [official Delta Chat client](https://github.com/deltachat/deltachat-android) with several improvements.
This app uses a [modified](https://github.com/ArcaneChat/core) version of the [Delta Chat Core Library](https://github.com/deltachat/deltachat-core-rust).
This app uses a [modified](https://github.com/ArcaneChat/core) version of the [Chatmail Core Library](https://github.com/chatmail/core).
implementation'com.google.android.exoplayer:exoplayer-core:2.19.1'// plays video and audio
implementation'com.google.android.exoplayer:exoplayer-core:2.19.1'// FIXME: exoplayer dependencies kept for Video, but we shall migrate them at some point
implementation'com.google.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"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.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.makeramen:roundedimageview:2.3.0'// crops the avatars to circles
implementation'com.github.amulyakhare:TextDrawable:558677ea31'// number of unread messages,
// the one-letter circle for the contacts (when there is not avatar) and a white background.
implementation'com.googlecode.mp4parser:isoparser:1.0.6'// MP4 recoding; upgrading eg. to 1.1.22 breaks recoding, however, i have not investigated further, just reset to 1.0.6
implementation('com.davemorrissey.labs:subsampling-scale-image-view:3.6.0'){// for the zooming on photos / media
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:
• Private. Instant on-boarding without a phone number or other private data.
💬 Reliable instant messaging with multi-profile and multi-device support.
• Friends & Family: Only chat with people you know. Unknown users cannot message or follow you without mutual consent.
⚡️ Sign-up easily using secure fast chatmail servers. You don’t need a phone number or any private data.
• Flexible. Supports multiple chat profiles and is easy to setup on multiple devices.
📧 Alternatively, use your existing classic e-mail address to read your inbox as chats.
• Extensible. Use mini-apps in chats like shopping lists, calendars or games.
🎮 Interactive mini-apps in chats for gaming and collaboration.
• Reliable. Works under bad and adversarial network conditions.
🔒 Audited end-to-end encryption safe against network and server attacks.
• Secure. 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.
@@ -23,17 +25,14 @@ ArcaneChat is a Delta Chat client and was created with a focus on usability, goo
<li>Multiple color themes/skins</li>
<li>It is possible to disable profiles to completely disconnect them saving data/bandwidth</li>
<li>You can easily see the connection status of all your profiles in the profile switcher</li>
<li>A videochat instance is set by default</li>
<li>Location streaming feature enabled by default and extra option to share location for 12 hours</li>
<li>Extra option to share location for 24 hours</li>
<li>Clicking on a message with a POI location, will open the POI on the map</li>
<li>Last-seen status of contacts is shown in your contact list, like in WhatsApp, Telegram, etc.</li>
<li>Videos are played in loop, useful for short GIF videos</li>
<li>Verified icon is shown in the chat list for the "Device Messages" chat</li>
<li>Verified icon is shown in the chat list for the "Device Messages" and "Saved Messages" chat to avoid fishing attempts by scammer pretending to be the official chats</li>
<li>Voice messages have more aggressive compression in "worse quality" mode to save data plan</li>
<li>Automatic download of messages limited to 640KB by default</li>
<li>Profile's display name is always shown in the app's title bar instead of the name of the app</li>
<li>Your avatar is visible to other users in Mailing Lists</li>
<li>Can be selected as app to open .xdc files</li>
<li>For mini-apps developers: there are some extra features in the WebXDC API, check https://github.com/ArcaneChat/android/#webxdc</li>
<li>Better settings organization with additional "Privacy" section</li>
ArcaneChat — децентрализованный и защищённый мессенджер, удобный для друзей и семьи.
• Анонимность. Мгновенный вход без номера телефона, e-mail или других личных данных.
• Гибкость. Поддерживает несколько профилей чатов и легко настраивается на нескольких устройствах.
• Расширяемость. В чатах можно использовать мини-приложения: списки покупок, календари или игры.
• Надёжность. Работает даже при плохом соединении и в сложных сетевых условиях.
• Безопасность. Проверенное сквозное шифрование, защищённое от сетевых и серверных атак.
• Самостоятельность. Может работать с вашим собственным e-mail-адресом или сервером.
ArcaneChat — клиент Delta Chat, разработанный с акцентом на удобство, качественный UX и экономию трафика. Также приложение часто экспериментирует с новыми функциями, которые со временем могут быть добавлены в официальный клиент Delta Chat.
<b>Основные отличия от официального клиента Delta Chat:</b>
<ul>
<li>Поддержка некоторых стилей markdown в текстовых сообщениях (жирный, курсив, зачёркнутый и т.д.)</li>
**This is the privacy policy for the ArcaneChat (Delta Chat client) apps.**
## Summary
ArcaneChat is an e-mail app that follows a strict privacy-by-design approach. All communication data remains on the end devices or on the e-mail servers selected by the user.
<table>
<thead>
<tr>
<th>Requirement</th>
<th>Implementation</th>
</tr>
</thead>
<tbody>
<tr>
<td>Confidentiality</td>
<td>
<b>End-to-end encryption</b> by implementing <a href="https://autocrypt.org">Autocrypt</a> and <a href="https://securejoin.delta.chat/en/latest/new.html">Verified groups</a>. User-friendly end-to-end encryption means that the requirements of the GDPR are already implemented at the technical level, <b>Privacy by Design</b>.
</td>
</tr>
<tr>
<td>Data minimization</td>
<td><b>No upload</b> of contact lists from your phone.</td>
</tr>
<tr>
<td>Data avoidance</td>
<td><b>No ArcaneChat servers</b>, no processing of personal data. All data remains with your e-mail provider.
</td>
</tr>
<tr>
<td>Legal basis</td>
<td>
There is no need to obtain consent for address book matching, <a href="https://gdpr-info.eu/art-7-gdpr/">Art.7 GDPR</a>, as no address book data is transferred. Therefore, <b>no additional legal basis</b> is required.
</td>
</tr>
<tr>
<td>Data to third parties</td>
<td>We only receive the <b>token for the push notification</b> and forward it to the provider of your operating system. If you don't want to receive push notifications, we won't forward a token.</td>
</tr>
<tr>
<td>Data from third parties</td>
<td>
Easy implementation in companies: ArcaneChat does not process personal data on behalf of the controller and therefore <b>does not require any instruction or data processing agreement</b>. Easy connection with the own corporate e-mail server.
</td>
</tr>
<tr>
<td>
DPIA
</td>
<td>
No <b>data protection impact assessment</b> needs to be carried out for ArcaneChat <a href="https://gdpr-info.eu/art-35-gdpr/">Art.35 GDPR</a>, as no specific additional data is processed beyond the e-mail messenger process.
The risk to the rights and freedoms of natural persons is limited to the internal company data processing of the e-mail communication and that of the e-mail providers.
</td>
</tr>
<tr>
<td>
Documentation
</td>
<td>
Inclusion of the measures implemented by ArcaneChat in the <b>record of processing activities</b> may have a positive impact on possible evidence, <a href="https://gdpr-info.eu/art-30-gdpr/">Art.30 GDPR</a> as well as certification processes, <a href="https://gdpr-info.eu/art-25-gdpr/">Art.25 (4) GDPR</a>,<a href="https://gdpr-info.eu/art-42-gdpr/">Art.42 GDPR</a>.
The <b>documentation of processing activities</b> related to Messenger communication is omitted and shifts only to the record of processing activities of your e-mail provider, <a href="https://gdpr-info.eu/art-30-gdpr/">Art.30(2) GDPR</a>.
</td>
</tr>
</tbody>
</table>
## Detailed data protection information
### 1. Name and contact information of the data controller
Responsible for the processing of your personal data is
### 2. Processing when using the ArcaneChat e-mail messenger
All data is stored locally on your device or with your e-mail provider. Neither we nor ArcaneChat developers have any possibility to access the end user's data, as all communication and data processing takes place on the end user's device without ArcaneChat servers being involved. Only for the optional Push Notification (see 2.2) the Push Notification Token is processed by Delta Chat servers without them having any knowledge about the messages themselves, not even in encrypted form.
#### 2.1 Sign up with your e-mail provider
ArcaneChat communication works through your e-mail account. In order to establish the connection, the app needs the access data. These are only stored locally on your end device:
- e-mail address
- your password
The legal basis for the processing is [Art.6 (1) lit.b GDPR](https://gdpr-info.eu/art-6-gdpr/), as you have a usage contract with us by using our services.
Security procedures are in place to protect the confidentiality of the data:
Only the bare data needed to fulfil the user request of login are stored,
encryption takes place as well as local sandboxing,
see 2.3 for further details.
#### 2.2 Heartbeat push notification
Push notifications can be sent to the user's phone at regular intervals to enable receipt of messages while the ArcaneChat app is not currently active. Current messages can then be retrieved on the end device. The token is only created if the user wants reliable receipt of messages even when the app is not active.
In order to use push notifications, a unique identifier or token (Push Notification Token) is created after the app is downloaded and installed. This token allows Delta Chat servers to send notifications to the user's device. The token is generated and provided by the provider. The token is then stored on our systems and sent to the device at regular intervals to cause the app to retrieve new messages from the e-mail provider. Our systems have no knowledge of whether a message arrives or who may have sent a message.
The aforementioned data will only be processed with your consent, in accordance with [Art.6 (1) lit.a GDPR](https://gdpr-info.eu/art-6-gdpr/).
#### 2.3 Data in the app
The ArcaneChat app works in a data-saving way. All relevant data is stored exclusively on the respective end devices:
ArcaneChat servers have no access to this data, not even in encrypted form, as data processing takes place only on the end devices.
#### 2.4 App permissions
Within the app, you can enter, manage, and edit various information, tasks, and activities. The app also requires the following permissions:
<table>
<thead>
<tr>
<th>Permission</th>
<th>Reason</th>
</tr>
</thead>
<tbody>
<tr>
<td>Internet access</td>
<td>This is needed to send the messages to the communication partner. </td>
</tr>
<tr>
<td>Camera access</td>
<td>
This is needed for you to take photos and send them via the app. In addition, the camera access allows you to scan QR codes.
</td>
</tr>
<tr>
<td>Microphone access (optional)</td>
<td>
This permission allows you to send voice messages.
</td>
</tr>
<tr>
<td>Location access (optional)</td>
<td>
This is needed if you want to share your location with a communication partner.
</td>
</tr>
<tr>
<td>Background location access (optional)</td>
<td>
This will be needed if you want to share your location over a certain period of time.
</td>
</tr>
<tr>
<td>Contact access (optional)</td>
<td>
This allows you to load and save contacts from your phone book into the app. The contact data is stored locally in the app and not forwarded and stored on ArcaneChat server.
</td>
</tr>
<tr>
<td>
Storage (optional)
</td>
<td>You can save images and files from the app to your device.</td>
</tr>
</tbody>
</table>
The processing and use of the above permissions are performed to provide the service. The internet access is necessary for the use, therefore the legal basis of the processing is [Art.6 (1) lit.a GDPR](https://gdpr-info.eu/art-6-gdpr/), as you have a usage contract with us by using our services.
The optional permissions only take place based on your consent according to [Art.6 (1) lit.a GDPR](https://gdpr-info.eu/art-6-gdpr/) and can also be reduced to individual services, e.g. only internet usage to send messages without pictures or location data. ArcaneChat does not receive any access to this data.
### 3. Platform dependent processing
Certain information is already processed automatically as soon as you use the app. We have listed below which personal data is processed exactly:
When you download the app, certain required information is transmitted to the app store you use ( e.g. Google Play or Apple App Store), in particular the username, the email address, the customer number of your account, the time of the download, payment information as well as the individual device identification number may be processed. The processing of this data is carried out exclusively by the respective app store and is beyond our control.
For the rest, we refer to the data protection policies of the respective app store providers or responsible parties of the operating systems. We do not collect and/or process any other data.
Your personal data will not be transferred to third parties for purposes other than those listed below.
# 4. Rights of the data subject
As a data subject of a processing of personal data, you have the right to
1. request information about your personal data processed by us in accordance with [Art.15 GDPR](https://gdpr-info.eu/art-15-gdpr/). In particular, you can request information about the processing purposes, the category of personal data, the categories of recipients to whom your data have been or will be disclosed, the planned storage period, the existence of a right to rectification, erasure, restriction of processing or objection, the existence of a right of complaint, the origin of your data if it has not been collected by us, as well as the existence of automated decision-making including profiling and, if applicable, meaningful information about its details;
2. in accordance with [Art.16 GDPR](https://gdpr-info.eu/art-16-gdpr/) of the GDPR, immediately request the correction of inaccurate or incomplete personal data stored by us;
3. pursuant to [Art.17 GDPR](https://gdpr-info.eu/art-17-gdpr/) of the GDPR, to request the erasure of your personal data stored by us, unless the processing is necessary for the exercise of the right to freedom of expression and information, for compliance with a legal obligation, for reasons of public interest, or for the establishment, exercise or defence of legal claims;
4. pursuant to [Art.18 GDPR](https://gdpr-info.eu/art-18-gdpr/), to request the restriction of the processing of your personal data, insofar as the accuracy of the data is disputed by you, the processing is unlawful, but you object to its erasure and we no longer require the data, but you need it for the assertion, exercise or defence of legal claims or you have objected to the processing pursuant to [Art.21 GDPR](https://gdpr-info.eu/art-21-gdpr/);
5. pursuant to [Art.20 GDPR](https://gdpr-info.eu/art-20-gdpr/), to receive your personal data that you have provided to us in a structured, common and machine-readable format or to request that it be transferred to another controller;
6. in accordance with [Art.7 (3) GDPR](https://gdpr-info.eu/art-7-gdpr/), to revoke your consent given to us at any time. This has the consequence that we may no longer continue the data processing based on this consent in the future; and
7. complain to a supervisory authority in accordance with [Art.77 GDPR](https://gdpr-info.eu/art-77-gdpr/) of the GDPR. As a rule, you can contact the supervisory authority of your usual place of residence or workplace.
# 5. Up-to-dateness and modification of this data protection declaration
This data protection declaration is valid as of January 2025. Due to the further development of our website and offers or due to changed legal or official requirements, it may become necessary to revise this data protection declaration from time to time.
- 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
- 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)
createChatAndGoBack("Group #1",true,"Hello!","Some links: https://testrun.org","And a command: /help");
createChatAndGoBack(
"Group #1",true,"Hello!","Some links: https://testrun.org","And a command: /help");
}
String[]times=newString[50];
@@ -82,7 +86,18 @@ public class EnterChatsBenchmark {
longend=System.currentTimeMillis();
longdiff=end-start;
pressBack();
Log.i(TAG,"Measured (Benchmark) "+(i+1)+"/"+times.length+": Entering 1 filled chat took "+diff+"ms "+"(going back took "+(System.currentTimeMillis()-end)+"ms)");
Log.i(
TAG,
"Measured (Benchmark) "
+(i+1)
+"/"
+times.length
+": Entering 1 filled chat took "
+diff
+"ms "
+"(going back took "
+(System.currentTimeMillis()-end)
+"ms)");
times[i]=""+diff;
}
@@ -91,16 +106,37 @@ public class EnterChatsBenchmark {
privatevoidcreate10Chats(booleanfillWithMsgs){
if(!USE_EXISTING_CHATS){
createChatAndGoBack("Group #1",fillWithMsgs,"Hello!","Some links: https://testrun.org","And a command: /help");
* <li><a href="mailto:abc@example.org">Just an email address</a> - should open a chat with <code>abc@example.org</code> (and maybe ask whether a chat should be created if it does not exist already)</li>
* <li><a href="mailto:abc@example.org?subject=testing%20mailto%20uris">email address with subject</a> - should open a chat with <code>abc@example.org</code> and fill <code>testing mailto uris</code>; as we created the chat in the previous step, it should not ask <code>Chat with …</code> but directly open the chat</li>
* <li><a href="mailto:abc@example.org?body=this%20is%20a%20test">email address with body</a> - should open a chat with <code>abc@example.org</code>, draft <code>this is a test</code></li>
* <li><a href="mailto:abc@example.org?subject=testing%20mailto%20uris&body=this%20is%20a%20test">email address with subject and body</a> - should open a chat with <code>abc@example.org</code>, draft <code>testing mailto uris</code> <newline> <code>this is a test</code></li>
* <li><a href="mailto:%20info@example.org">HTML encoding</a> - should open a chat with <code>info@example.org</code></li>
* <li><a href="mailto:simplebot@example.org?body=!web%20https%3A%2F%2Fduckduckgo.com%2Flite%3Fq%3Dduck%2520it">more HTML encoding</a> - should open a chat with <code>simplebot@example.org</code>, draft <code>!web https://duckduckgo.com/lite?q=duck%20it</code></li>
* <li><a href="mailto:?subject=bla&body=blub">no email, just subject&body</a> - this should let you choose a chat and create a draft <code>bla</code> <newline> <code>blub</code> there</li>
* <li><a href="mailto:abc@example.org">Just an email address</a> - should open a chat with
* <code>abc@example.org</code> (and maybe ask whether a chat should be created if it does
* not exist already)
* <li><a href="mailto:abc@example.org?subject=testing%20mailto%20uris">email address with
* subject</a> - should open a chat with <code>abc@example.org</code> and fill <code>
* testing mailto uris</code>; as we created the chat in the previous step, it should not
* ask <code>Chat with …</code> but directly open the chat
* <li><a href="mailto:abc@example.org?body=this%20is%20a%20test">email address with body</a> -
* should open a chat with <code>abc@example.org</code>, draft <code>this is a test</code>
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.