Compare commits

..

80 Commits

Author SHA1 Message Date
adbenitez 5ac6fe3ed2 add allow to enable location streaming again, remove dead code 2024-07-07 21:37:51 +02:00
adbenitez b540b5250d Merge remote-tracking branch 'upstream/main' into lite 2024-07-07 21:25:07 +02:00
adbenitez af94274987 update core 2023-11-19 13:51:41 +01:00
adbenitez 08b052aa93 add back 40KiB download limit 2023-11-19 13:18:01 +01:00
adbenitez c4b0b6d9c7 update core 2023-11-17 20:45:46 +01:00
adbenitez 6a4c73c0e6 fix BaseConversationItem 2023-11-17 20:44:39 +01:00
adbenitez 78e1d11801 Merge remote-tracking branch 'upstream/main' into lite 2023-11-17 19:26:07 +01:00
adbenitez 2178e555ca Merge remote-tracking branch 'upstream/main' into lite 2023-10-28 01:41:57 +02:00
adbenitez a3393d43c0 modify release message 2023-10-12 23:24:57 +02:00
adbenitez f63eb3e57f Merge remote-tracking branch 'upstream/main' into lite 2023-10-12 23:11:40 +02:00
adbenitez 8ea9cfe7a1 remove built-in camera 2023-10-11 13:54:21 +02:00
adbenitez 092fd9603f update proguard-rules.pro 2023-10-11 13:25:08 +02:00
adbenitez ed1ba1dce9 remove emoji picker 2023-10-11 13:24:24 +02:00
adbenitez 58b35519cb fix merging bug 2023-10-11 12:58:10 +02:00
adbenitez 07bfa48588 Merge remote-tracking branch 'upstream/feat/verified-1to1' into lite 2023-10-10 18:50:57 +02:00
adbenitez 96851c458a Merge remote-tracking branch 'upstream/main' into lite 2023-10-10 18:44:09 +02:00
adbenitez 56a26a561d update release workflow 2023-07-26 20:21:31 +02:00
adbenitez cf6db57cb8 update submodule 2023-07-26 20:16:47 +02:00
adbenitez 1da9fdc6b4 remove old ndk-make.sh 2023-07-26 20:15:13 +02:00
adbenitez 1c13a564ec remove stickers in the image editor 2023-07-26 20:14:43 +02:00
adbenitez cc2f1f2270 add proguard-rules.pro 2023-07-26 18:43:02 +02:00
adbenitez 3bdd16d224 Merge remote-tracking branch 'upstream/master' into lite 2023-07-26 18:24:39 +02:00
adbenitez 141f326fec Merge remote-tracking branch 'upstream/master' into lite 2022-11-17 01:07:04 -05:00
adbenitez 94c4e0aa92 Merge remote-tracking branch 'upstream/master' into lite 2022-08-25 18:01:12 -04:00
adbenitez fc4d9df3ac Merge remote-tracking branch 'upstream/master' into lite 2022-08-24 02:20:20 -04:00
adbenitez 2590b82f0e Merge remote-tracking branch 'upstream/master' into lite 2022-07-15 03:11:09 -04:00
adbenitez 943d40b92e Merge remote-tracking branch 'upstream/master' into lite 2022-05-17 21:20:40 -04:00
adbenitez acf840c05b Merge remote-tracking branch 'upstream/master' into lite 2022-05-05 02:44:40 -04:00
adbenitez 05f7d6cd98 update submodule 2022-05-05 02:44:11 -04:00
adbenitez 0b4d36f0cf Merge remote-tracking branch 'upstream/master' into lite 2022-05-01 20:25:53 -04:00
adbenitez ee5ce97779 Merge remote-tracking branch 'upstream/master' into lite 2022-04-07 17:44:28 -04:00
adbenitez f32b1f3d95 Merge remote-tracking branch 'upstream/master' into lite 2022-01-29 02:07:06 -05:00
adbenitez 122de0e3ad Merge remote-tracking branch 'upstream/master' into lite 2022-01-18 14:57:26 -05:00
adbenitez 8180aa9b0d tweak release 2021-12-16 14:03:03 -05:00
adbenitez 0bfcfa1444 test release 2021-12-16 13:51:26 -05:00
adbenitez 34a369fa49 test release 2021-12-16 13:43:31 -05:00
adbenitez ccb8b417a6 test release 2021-12-16 13:31:55 -05:00
adbenitez 8d16baed11 test release 2021-12-16 13:25:12 -05:00
adbenitez 81f7022957 test release 2021-12-16 13:16:47 -05:00
adbenitez b1dd60607b tweak release 2021-12-16 13:07:06 -05:00
adbenitez 557053a25d tweak release 2021-12-16 12:57:29 -05:00
adbenitez aa61597804 tweak release 2021-12-16 12:38:45 -05:00
adbenitez 1fbf04ed28 tweak release 2021-12-16 12:25:43 -05:00
adbenitez 06420e032d try to fix CI 2021-12-16 12:13:11 -05:00
adbenitez 86d1350c64 fix release.yml 2021-12-16 01:31:56 -05:00
adbenitez d896955077 fix release.yml 2021-12-16 00:27:54 -05:00
adbenitez 9a42c26697 update version name 2021-12-16 00:14:59 -05:00
adbenitez 8db5e2ce01 improve release process, generate split apks for each arch 2021-12-16 00:14:16 -05:00
adbenitez d4d5655e72 Merge remote-tracking branch 'upstream/master' into lite 2021-12-15 12:31:19 -05:00
adbenitez 91c53ab5cf tweak CI 2021-11-12 15:52:54 -05:00
adbenitez e02674b2ca fix CI 2021-11-12 15:49:52 -05:00
adbenitez 360dcf5bc7 Merge remote-tracking branch 'upstream/master' into lite 2021-11-12 01:17:05 -05:00
adbenitez 17a5f9a266 fix crash when opening Advanced settings 2021-11-08 20:00:15 -05:00
adbenitez 46df7e5ab2 update build.gradle 2021-11-08 19:37:38 -05:00
adbenitez 33ff464028 Merge remote-tracking branch 'upstream/master' into lite 2021-11-08 17:30:58 -05:00
adbenitez c6c49da1f2 Merge remote-tracking branch 'upstream/master' into lite 2021-10-24 02:59:52 -04:00
adbenitez c7912a0df7 Merge remote-tracking branch 'upstream/master' into lite 2021-10-15 16:25:12 -04:00
adbenitez 459e57f56c Merge remote-tracking branch 'upstream/master' into lite 2021-10-03 02:32:27 -04:00
adbenitez a0ff8043b0 update version number 2021-09-13 21:56:05 -04:00
adbenitez 9d75045fec Merge remote-tracking branch 'upstream/master' into lite 2021-09-13 21:45:32 -04:00
adbenitez b8b3deaad0 update version name 2021-08-20 16:30:49 -04:00
adbenitez df82368327 add missing import 2021-08-20 16:29:08 -04:00
adbenitez 377060afe1 Merge remote-tracking branch 'upstream/master' into lite 2021-08-20 16:19:17 -04:00
adbenitez 06800d24ab Merge remote-tracking branch 'upstream/master' into lite 2021-06-25 19:11:16 -04:00
adbenitez 030b08ddd1 update submodule 2021-05-22 18:33:22 -04:00
adbenitez 67cc39b648 Merge remote-tracking branch 'upstream/master' into lite 2021-05-22 18:27:28 -04:00
adbenitez 34d20b6c78 Merge remote-tracking branch 'upstream/master' into lite 2021-05-22 15:08:22 -04:00
adbenitez 3e64619ec5 Merge remote-tracking branch 'upstream/master' into lite 2021-04-22 15:13:46 -04:00
adbenitez f167e6d1d8 update version name 2021-04-15 14:02:41 -04:00
adbenitez 0f3d00abfa remove APNG and animated webp support 2021-04-15 13:59:34 -04:00
adbenitez f5932f7d42 Merge remote-tracking branch 'upstream/master' into lite 2021-04-15 13:58:56 -04:00
adbenitez 912fb3e595 update release.yml 2021-04-15 13:56:21 -04:00
adbenitez b5c688232b don't requests location permission 2021-03-27 23:18:27 -04:00
adbenitez 4cbf12068b delete maps 2021-03-27 00:01:11 -04:00
adbenitez 97ad251cd9 update version number 2021-03-26 15:46:32 -04:00
adbenitez bdc71b965e update release.yml 2021-03-26 15:44:02 -04:00
adbenitez 4f84efbfff tweak AudioCodec.java 2021-03-26 15:15:26 -04:00
adbenitez e91bc5d3b7 Merge remote-tracking branch 'upstream/master' into lite 2021-03-26 14:41:32 -04:00
adbenitez dc08de5b3f update submodule 2021-02-06 19:47:38 -05:00
adbenitez df03a7456f Merge remote-tracking branch 'upstream/master' into lite 2021-02-06 19:46:33 -05:00
681 changed files with 13572 additions and 16973 deletions
-3
View File
@@ -1,3 +0,0 @@
ko_fi: adbenitez
liberapay: adbenitez
custom: "https://arcanechat.me/#contribute"
+7 -2
View File
@@ -7,12 +7,14 @@ labels: bug
---
<!--
This is a bug report tracker. New features are discussed in the forum: https://support.delta.chat
Please fill out as much of this form as you can (leaving out stuff that is not applicable is ok).
-->
- Android version:
- Device:
- ArcaneChat version:
- Delta Chat version:
- Expected behavior:
- Actual behavior:
- Steps to reproduce the problem:
@@ -20,9 +22,12 @@ Please fill out as much of this form as you can (leaving out stuff that is not a
- Logs:
<!--
Debug logs can be copied from within the app with
Debug logs can be copied from within the Delta Chat app with
Settings menu -> Advanced -> View log
Alternatively from the Android system log:
`adb logcat -v time -s DeltaChat`
Logs may contain private data
which shall be removed or anonymised prior to posting.
-->
+8 -1
View File
@@ -1 +1,8 @@
blank_issues_enabled: false
blank_issues_enabled: true
contact_links:
- name: Feature requests
url: https://support.delta.chat/c/features/6
about: Please discuss feature requests on our Community forum.
- name: General Questions
url: https://support.delta.chat/c/help/5
about: Please ask general Questions on our Community forum.
-15
View File
@@ -1,15 +0,0 @@
---
name: Feature request
about: Request a new feature.
title: ''
assignees: ''
labels: enhancement
---
<!--
Please fill out as much of this form as you can (leaving out stuff that is not applicable is ok).
-->
### Describe your feature:
### Why do you think it is useful:
-6
View File
@@ -1,6 +0,0 @@
---
name: Other
about: Start with a new blank issue.
title: ''
assignees: ''
---
+5 -7
View File
@@ -14,8 +14,6 @@ jobs:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Validate Fastlane Metadata
uses: ashutoshgngwr/validate-fastlane-supply-metadata@v2
- uses: Swatinem/rust-cache@v2
with:
working-directory: jni/deltachat-core-rust
@@ -35,23 +33,23 @@ jobs:
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27
ndk-version: r23c
- name: Compile core
env:
ANDROID_NDK_ROOT: ${{ steps.setup-ndk.outputs.ndk-path }}
run: |
export PATH="${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/"
scripts/install-toolchains.sh && scripts/ndk-make.sh armeabi-v7a
scripts/install-toolchains.sh && scripts/ndk-make.sh
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v1
- name: Build APK
run: ./gradlew --no-daemon -PABI_FILTER=armeabi-v7a assembleFossDebug
run: ./gradlew --no-daemon assembleGplayDebug
- name: Upload APK
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v3
with:
name: app-preview.apk
path: 'build/outputs/apk/foss/debug/*.apk'
path: 'build/outputs/apk/gplay/debug/*.apk'
+13 -18
View File
@@ -23,21 +23,20 @@ jobs:
name: Upload Release APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v2
with:
submodules: recursive
- uses: Swatinem/rust-cache@v2
- uses: Swatinem/rust-cache@v1
with:
working-directory: jni/deltachat-core-rust
- uses: actions/setup-java@v3
- uses: actions/setup-java@v1.4.3
with:
java-version: 17
distribution: 'temurin'
- uses: android-actions/setup-android@v3
java-version: 11
- uses: android-actions/setup-android@v2
- uses: nttld/setup-ndk@v1
id: setup-ndk
with:
ndk-version: r27
ndk-version: r23c
- name: Compile core
env:
@@ -49,22 +48,18 @@ jobs:
- name: Build APK
run: |
mkdir -p ~/.gradle
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
mv build/outputs/apk/gplay/release/*universal* build/outputs/apk/foss/release/ArcaneChat-gplay.apk
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
./gradlew --no-daemon assembleFossRelease
- name: Release
uses: softprops/action-gh-release@v1
with:
token: "${{ secrets.GITHUB_TOKEN }}"
body: '[<img src="store/get-it-on-gplay.png" alt="Get it on Google Play" height="48">](https://play.google.com/store/apps/details?id=com.github.arcanechat) [<img src="store/get-it-on-fdroid.png" alt="Get it on F-Droid" height="48">](https://f-droid.org/packages/chat.delta.lite) [<img src="store/get-it-on-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: "WARNING: DeltaChat Lite is not DeltaLab! it is a lightweight version of Delta Chat"
prerelease: ${{ contains(github.event.ref, '-beta') }}
fail_on_unmatched_files: true
files: build/outputs/apk/foss/release/*.apk
+1 -3
View File
@@ -46,6 +46,4 @@ jni/armeabi
jni/armeabi-v7a
jni/arm64-v8a
artwork/drawable*/
artwork/mipmap-*/
*~
*~
+1 -1
View File
@@ -1,3 +1,3 @@
[submodule "jni/deltachat-core-rust"]
path = jni/deltachat-core-rust
url = https://github.com/ArcaneChat/core
url = https://github.com/adbenitez/deltalab-core
+2 -278
View File
@@ -1,280 +1,4 @@
# ArcaneChat Android Changelog
## 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
* Encrypt notification tokens
* update to core 1.151.5
## v1.50.0
2024-12
* New emoji picker with support for more emojis
* Webxdc apps can now trigger notifications
* Webxdc apps can now deep-link to internal sections when you click their info-messages in chat
* Add "Show in Chat" to the menu of opened Webxdc apps
* Reverse order of messages in the notification group
* Notify reactions to own messages
* Improve the button to start Webxdc apps
* Make account deletion confirmation dialog faster
* Rename "Back up Chats to External Storage" to "Export Backup"
* Improve compatibility with classic email clients in the outgoing messages
* Removed internal font scaling setting in favor of the better system settings
* Use privacy-preserving webxdc addresses
* Use Rustls for connections with strict TLS
* QR codes for adding contacts and joining groups provide help when opened in a normal browser
* Mark Saved Messages chat as protected
* Allow the user to replace maps integration
* fix: Trim whitespace from scanned QR codes
* fix quotes: Line-before-quote may be up to 120 character long instead of 80
* fix: Prevent accidental wrong-password-notifications
* fix: Remove footers from "Show Full Message..."
* fix: Only add "member added/removed" messages if they actually do that
* fix: Update state of message when fully downloading it
* fix: send message: Do not fail if the message does not exist anymore
* fix: Do not percent-encode dot when passing to autoconfig server (so, fix handling of some servers)
* fix displaynames not being updated when intially scanned by a QR code
* several bug fixes
* update to core 1.151.3
## v1.48.3
2024-10
* new Proxy settings screen available at "Advanced / Proxy"
* manage a list of HTTP(S), SOCKS5 or Shadowsocks Proxies
* Proxies icon shown on the chatlist if proxies are used
* share Proxies by showing a QR code
* scan Proxies' QR code and use them
* make Proxy URLs inside Delta Chat tappable
* open Delta Chat when tapping Proxy URLs in other apps
* support for realtime webxdc apps moved out of experimental and enabled by default
* realtime webxdc apps can be disabled at "Settings / Advanced"
* "New Contact / Link" button to view, share or copy the invite line
* "New Contact / Scan" button to easier access the scanner functionality
* open "New Contact" scan/show activities directly, do not try to be too smart and open the last active tab
* allow to attach multiple images in one step
* to easier differ between multiple profiles, set a "Private Tag" (long tap profile switcher)
* "Private Tag" is shown in notifications
* improve profile deletion dialog: show name, size and avatar of the profile being deleted
* show profile name in title bar when the user has multiple profiles
* improve profile switcher layout
* improve notification: allow to "Mark Read" from the notification
* search for unread chats in the search's three-dot-menu
* allow pasting QR codes from "Add As Second Device" screen
* save traffic by supporting "IMAP COMPRESS"
* automatic reconfiguration, e.g. switching to implicit TLS if STARTTLS port stops working
* parallelize IMAP and SMTP connection attempts
* improve DNS caching
* always use preloaded DNS results
* prioritize cached results if DNS resolver returns many results
* always move auto-generated messages to DeltaChat folder
* ignore invalid securejoin messages silently
* delete messages from a chatmail server immediately by default
* make resending pending messages possible
* don't SMTP-send messages to self-chat if BccSelf is disabled
* HTTP(S) tunneling
* don't put displayname into From/To/Sender if it equals to address
* hide sync messages from INBOX (use IMAP APPEND command to upload sync messages)
* more verbose SMTP connection establishment errors
* add "Learn More" button to "Manage keys"
* visual feedback when tapping the action button of a message
* log unexpected message state when resending fails
* smoother backup and "Add Second Device" progress bars
* assign messages to ad-hoc group with matching name and members
* use stricter TLS checks for HTTPS downloads (images in HTML mails, Autoconfig)
* improve logging for failed QR code scans, AEAP, Autocrypt, notification permissions and sending errors
* improve logging of multi account setup (log account ID)
* show more context for the "Cannot establish guaranteed..." info message
* show file name in "Message Info"
* show root SMTP connection failure in connectivity view
* fix: Sort received outgoing message down if it's fresher than all non fresh messages
* fix: avoid app being killed when processing a PUSH notification
* fix crash when refreshing avatar
* fix crash in gallery
* fix: shorten message text in locally sent messages too
* fix: Set http I/O timeout to 1 minute rather than whole request timeout
* fix: don't sync QR code token before populating the group
* fix: do not get stuck if the message to download does not exist anymore
* fix: do not attempt to reference info messages
* fix: do not get stuck if there is an error transferring backup
* fix: make it possible to cancel ongoing backup transfer
* fix: reset quota when entering a new address
* fix: better detection of file extensions
* fix: "database locked" errors
* fix: never initialize realtime channels if realtime is disabled
* fix reception of realtime channels
* fix: normalize proxy URLs
* fix connections getting stuck in "Updating..." sometimes
* fix scanning "add second device" QR code from scanner above chatlist
* fix warning about wrong password
* fix app getting stale when receiving a PUSH notifications takes longer
* fix app getting stale on network changes
* fix: skip IDLE if we got unsolicited FETCH
* update translations and local help
* update to core 1.148.6
## v1.46.14
2024-09
* add monochrome/themed launcher icon support
* allow to remove the selected profile in "Switch Profile" dialog
* improve display of selected profile in "Switch Profile" dialog
* improve the hit/tap area to open "Switch Profile" dialog in the main screen's toolbar
* add support for system per-app language and remove in-app language selector
* remove the experimental "encrypt database" checkbox in classic registration screen
* fix various bugs
* update to core 1.142.12
## v1.46.13
2024-08
* improve contact profile's "Edit Name" dialog
* upgrade the status bar to modern Android look and feel
* add direct support for android14, required to be able to continue shipping to Google Play
* increase minimal supported android to 5; as required by updating several outdated dependencies
* drop support for gmail oauth2, gmail can still be used using "App Passwords", you'll get hints as needed
(reason for dropping was unmaintainable bureaucracy and costs added by google)
* update various dependencies for added security and stability
* jcenter (a dependency origin) is closing, move dependencies to other origins
* when SOCKS5 is enabled, route autoconfig and oauth2 config there
* fix encryption compatibility with old Delta Chat clients
* fix crashes when opening log view with many lines
* fix: hide copy to clipboard while QR is not ready
* fix moving outgoing auto-generated messages to the "DeltaChat" folder
* fix: try to create "INBOX.DeltaChat" if "DeltaChat" is not possible for some provider
* fix receiving messages with "DeltaChat" folder cannot be selected
* fix: do not crash on unknown "Certificate Checks" values
* update provider database
* update to core 1.142.8
## v1.46.10
2024-08
* mark bots in chat titles and profiles as such
* if the experimental videochat is enabled, invitations can be sent via the "Attach" menu now
* show potentially dangerous buttons with red color
* focus on name and profile images in reaction details; the address is available on tap
* focus on name and profile image in profile switcher; the address is still shown for classic e-mail profiles
* add device message about new placement of "Switch Profile" if more than one profile is in use before update
* update translations
* using core 1.142.2
## v1.46.8
2024-08
* "Share Contact" directly from a contact's profile
* add "Share Invite Link" to "New Contact" screen
* add "Invite Friends" to main menu
* cleanup "Profile Switcher", long tap to delete profiles
* "Mute Notifications" via a long tap directly from "Profile Switcher"
* search non-english messages case-insensitive
* display attached contact's names in summaries and quotes
* protect From: and To: metadata where possible
* do not reveal sender's language metadata in read receipts
* allow importing contacts exported by Proton Mail
* for chatmail profile, hide error prone "add contact manually" in favor to invite links
* automatically expand "Password and Account / Advanced" if there were advanced options set before
* show potentially dangerous menu entries with red color
* remove "Switch Profile" from main menu, as this very often used option causes confusion with finger memory and other menus;
instead, just tap your profile image in the upper left corner to add or to switch profiles
* prevent creating contact without encryption in chatmail profiles via mailto:-links
* no unarchiving of groups on member removal messages
* improve caching of DNS results
* focus on name for QR code titles
* report first error instead of the last on connection failure
* long tap email address in contact's profile for copying to clipboard
* fix battery drain due to endless IMAP loop
* fix: remove push notification toggle, it is not needed as raised false expectations
* fix: keep "chatmail" state after failed reconfiguration
* fix issues with failed backup imports
* fix: avoid group creation on member removal messages
* fix downloading partially downloaded messages
* fix various networking bugs
* update translations and local help
* update to core 1.142.2
## v1.46.7
2024-07
* add option to mark all selected chats as being "Read" (long tap a chat to start select mode)
* new, single-device chatmail profiles default to "Delete Messages after Download"
* when using a chatmail profile on multiple devices, deletion is changed to "Automatic"
(deletion strategy is up to the server then)
* fix back-button behaviour in the welcome screen
* update translations and local help
* using core 1.140.2
# Delta Chat Android Changelog
## v1.46.5
2024-06
@@ -882,7 +606,7 @@
* fix sending status updates of private apps
* show full messages: do not load remote content for requests automatically
* using core107.1
* using to core107.1
## v1.34.12
+3 -3
View File
@@ -34,10 +34,10 @@ ENV PATH ${PATH}:${ANDROID_SDK_ROOT}/cmdline-tools/bin
# Install NDK manually. Other SDK parts are installed automatically by gradle.
#
# If you change the NDK version here, also change it in `flake.nix`.
# NDK version r27 LTS aka 27.0.11902837
RUN sdkmanager --sdk_root=${ANDROID_SDK_ROOT} 'ndk;27.0.11902837'
# NDK version r23c LTS aka 23.2.8568313
RUN sdkmanager --sdk_root=${ANDROID_SDK_ROOT} 'ndk;23.2.8568313'
ENV ANDROID_NDK_ROOT ${ANDROID_SDK_ROOT}/ndk/27.0.11902837
ENV ANDROID_NDK_ROOT ${ANDROID_SDK_ROOT}/ndk/23.2.8568313
ENV PATH ${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain none
+236 -25
View File
@@ -1,36 +1,247 @@
## ArcaneChat Android Client
## Delta Chat Android Client
A [Delta Chat](https://delta.chat/) client for Android. Learn more at: https://arcanechat.me
This is the Android client for [Delta Chat](https://delta.chat/).
It is available on [F-Droid](https://f-droid.org/app/com.b44t.messenger) and
the [Google Play Store](https://play.google.com/store/apps/details?id=chat.delta).
The APK can also be downloaded from [get.delta.chat](https://get.delta.chat).
[<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)
For the core library and other common info, please refer to the
[Delta Chat Core Library](https://github.com/deltachat/deltachat-core-rust).
For general contribution hints, please refer to [CONTRIBUTING.md](./CONTRIBUTING.md).
<img alt="Screenshot Chat List" src="docs/images/2019-01-chatlist.png" width="298" /> <img alt="Screenshot Chat View" src="docs/images/2019-01-chat.png" width="298" />
<img alt="Screenshot" src="fastlane/metadata/android/en-US/images/phoneScreenshots/1.png" width="298" /> <img alt="Screenshot" src="fastlane/metadata/android/en-US/images/phoneScreenshots/2.png" width="298" />
# Check Out Repository
# WebXDC
When checking out _deltachat-android_, make sure also to check out the
subproject _deltachat-core-rust_:
This app has some extended support for WebXDC apps:
- When using Git, you can do this initially by
`$ git clone --recursive https://github.com/deltachat/deltachat-android`
or later by `git submodule update --init --recursive`. If you do this in your
home directory, this results in the folder `~/deltachat-android` which is just fine.
- `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:
* `"sticker"`
* `"image"`
* `"audio"`
* `"video"`
* `"file"` (default if `type` field is not present)
- Inside apps, clicking external links is supported, ex. to open in browser, so you can include links to your website or donation pages.
- `manifest.toml` field: `orientation`, if you set it to `"landscape"` your app will be launched in landscape mode.
# Build Using Nix
The repository contains [Nix](https://nixos.org/) development environment
described in `flake.nix` file.
If you don't have Nix installed,
the easiest way is to use [The Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer)
which installs Nix with [Flakes](https://nixos.wiki/wiki/Flakes) feature enabled out of the box
and can be cleanly uninstalled with `/nix/nix-installer uninstall` once you don't need it anymore.
Once you have Nix with Flakes feature set up start the development environment shell:
```
nix develop
```
Nix development environment contains Rust with cross-compilation toolchains and Android SDK.
To [build an APK](https://developer.android.com/studio/build/building-cmdline) run the following 2 steps.
Note that the first step may take some time to build for all architectures. You can optionally read
[the first comment block in the `ndk-make.sh` script](https://github.com/deltachat/deltachat-android/blob/master/scripts/ndk-make.sh)
for pointers on how to build for a specific architecture.
```
$ scripts/ndk-make.sh
$ ./gradlew assembleDebug
```
Resulting APK files can be found in
`build/outputs/apk/gplay/debug/` and
`build/outputs/apk/fat/debug/`.
# Build Using Dockerfile
Another way to build APK is to use provided `Dockerfile`
with [Docker](https://www.docker.com/) or [Podman](https://podman.io/).
Podman is a drop-in replacement for Docker that does not require root privileges.
If you don't have Docker or Podman setup yet, read [how to setup Podman](#setup-podman)
below. If you don't want to use Docker or Podman, read [how to manually install the
build environment](#install-build-environment).
First, build the image `deltachat-android` by running
```
podman build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
```
or
```
docker build --build-arg UID=$(id -u) --build-arg GID=$(id -g) . -t deltachat-android
```
Then, run the image:
```
podman run --userns=keep-id -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
```
or
```
docker run -it --name deltachat -v $(pwd):/home/app:z -w /home/app localhost/deltachat-android
```
You can leave the container with Ctrl+D or by typing `exit` and re-enter it with
`docker start -ia deltachat` or `podman start -ia deltachat`.
Within the container, install toolchains and build the native library:
```
deltachat@6012dcb974fe:/home/app$ scripts/install-toolchains.sh
deltachat@6012dcb974fe:/home/app$ scripts/ndk-make.sh
```
Then, [build an APK](https://developer.android.com/studio/build/building-cmdline):
```
deltachat@6012dcb974fe:/home/app$ ./gradlew assembleDebug
```
## Troubleshooting
- Executing `./gradlew assembleDebug` inside the container fails with `The SDK directory '/home/user/Android/Sdk' does not exist.`:
The problem is that Android Studio (outside the container) automatically creates a file `local.properties` with a content like `sdk.dir=/home/username/Android/Sdk`,
so, Gradle-inside-the-container looks for the Sdk at `/home/username/Android/Sdk`, where it can't find it.
You could:
- either: remove the file or just the line starting with `sdk.dir`
- or: run `./gradlew assembleDebug` from outside the container (however, there may be incompatibility issues if different versions are installed inside and outside the container)
- Running the image fails with `ERRO[0000] The storage 'driver' option must be set in /etc/containers/storage.conf, guarantee proper operation.`:
In /etc/containers/storage.conf, replace the line: `driver = ""` with: `driver = "overlay"`.
You can also set the `driver` option to something else, you just need to set it to _something_.
[Read about possible options here](https://github.com/containers/storage/blob/master/docs/containers-storage.conf.5.md#storage-table).
# <a name="setup-podman"></a>Setup Podman
These instructions were only tested on a Manjaro machine so far. If anything doesn't work, please open an issue.
First, [Install Podman](https://podman.io/getting-started/installation).
Then, if you want to run Podman without root, run:
```
sudo touch /etc/subgid
sudo touch /etc/subuid
sudo usermod --add-subuids 165536-231072 --add-subgids 165536-231072 yourusername
```
(replace `yourusername` with your username).
See https://wiki.archlinux.org/index.php/Podman#Rootless_Podman for more information.
# <a name="install-build-environment"></a>Install Build Environment (without Docker or Podman)
To setup build environment manually:
- _Either_, in Android Studio, go to "Tools / SDK Manager / SDK Tools", enable "Show Package Details",
select "CMake" and the desired NDK (install the same NDK version as the [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile)), hit "Apply".
- _Or_ read [Dockerfile](https://github.com/deltachat/deltachat-android/blob/master/Dockerfile) and mimic what it does.
Then, in both cases, install Rust using [rustup](https://rustup.rs/)
and Rust toolchains for cross-compilation by executing `scripts/install-toolchains.sh`.
Then, configure `ANDROID_NDK_ROOT` environment variable to point to the Android NDK
installation directory e.g. by adding this to your `.bashrc`:
```bash
export ANDROID_NDK_ROOT=${HOME}/Android/Sdk/ndk/[version] # (or wherever your NDK is) Note that there is no `/` at the end!
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
After that, call `scripts/ndk-make.sh` in the root directory to build core-rust.
Afterwards run the project in Android Studio. The project requires API 25.
With chance, that's it :) - if not, read on how to set up a proper development
environment.
# Install Development Environment
1. Some libs required by Android Studio may be missing on 64 bit Linux machines
[Source](https://developer.android.com/studio/install.html)], so for Ubuntu execute
`$ sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386`
and for Fedora execute
`$ sudo yum install zlib.i686 ncurses-libs.i686 bzip2-libs.i686`.
2. Download Android Studio from <https://developer.android.com> (android-studio-ide-...-linux.zip)
and unpack the archive which contains a single folder called `android-studio`;
move this folder e.g. to `~/android-studio`.
3. To launch Android Studio for the first time, open a terminal, navigate to
`~/android-studio/bin`, execute `./studio.sh` and use all the standard values
from the wizard.
4. Android Studio now asks you if you want to open an existing project;
choose `~/deltachat-android` as created in the "Build" chapter (Android Studio starts to
build the project, however, there are some steps missing before this will
succeed).
5. If components are missing, click on the corresponding error
message and install eg. required SDKs and the "Build-Tools" (you should
also find the option at "Tools / Android / SDK Manager / SDK Platforms").
Now the build should succeed - but the app still misses the native part.
6. Download Android NDK from
[NDK Archives](https://developer.android.com/ndk/downloads)
and extract the archive containing a single folder
called something like `android-ndk-r23b-linux`; move this folder e.g. to `~/android-ndk`.
7. Export the folder path to your environment as `ANDROID_NDK_ROOT` and add it to `PATH`.
You can achieve this e.g. by adding this to your `.bashrc`
```bash
export ANDROID_NDK_ROOT=${HOME}/android-ndk
export PATH=${PATH}:${ANDROID_NDK_ROOT}/toolchains/llvm/prebuilt/linux-x86_64/bin/:${ANDROID_NDK_ROOT}
```
# Run UI Tests and Benchmarks
- You don't necessarily need a dedicated testing device.
Backup your current account first, maybe there are some bugs in switching accounts.
- You can run benchmarks on either an emulated device or a real device.
You need at least Android 9. For better benchmark results,
you should run the benchmark on a real device and make sure that the core is compiled in release mode.
- Disable animations on your device, otherwise the test may fail:
at "Developer options"
set all of "Window animation scale", "Transition animation scale" and "Animator duration scale" to 0x
- In Android Studio: "File" / "Sync project with gradle files"
- In Android Studio: "Run" / "Edit configurations" / "+" / "Android Instrumented test":
Either select a specific class or select "All in Module" / "OK" /
Select your configuration in the toolbar / Click on the green "run" button in the toolbar to run the tests
## Get the benchmark results
When the benchmark is done, you will get a result like
`MEASURED RESULTS (Benchmark) - Going thorough all 10 chats: 11635,11207,11363,11352,11279,11183,11137,11145,11032,11057`.
You can paste `11635,11207,11363,11352,11279,11183,11137,11145,11032,11057`
into a cell in a LibreOffice spreadsheet, do "Data" / "Text to columns",
choose `,` as a separator, hit "OK", and create a diagram.
## Run online tests
For some tests, you need to provide the credentials to an actual email account.
You have 2 ways to do this:
1. (Recommended): Put them into the file ~/.gradle/gradle.properties (create it if it doesn't exist):
```
TEST_ADDR=youraccount@yourdomain.org
TEST_MAIL_PW=youpassword
```
2. Or set them via environment variables.
# Translations
Android metadata and changelogs are translated using [Weblate](https://hosted.weblate.org/projects/deltachat/android-metadata/).
<a href="https://hosted.weblate.org/engage/deltachat/">
<img src="https://hosted.weblate.org/widget/deltachat/android-metadata/svg-badge.svg" alt="Translation status" />
</a>
# Credits
This app is based on the [official Delta Chat client](https://github.com/deltachat/deltachat-android) with several improvements.
The user interface classes are based on the Signal messenger.
This app uses a [modified](https://github.com/ArcaneChat/core) version of the [Delta Chat Core Library](https://github.com/deltachat/deltachat-core-rust).
# License
Licensed GPLv3+, see the LICENSE file for details.
Copyright © 2022 Delta Chat contributors.
+26 -38
View File
@@ -3,8 +3,6 @@
## Generate APKs
on the command-line, in a PR called "update-core-and-stuff-DATE":
1. update core:
```
./scripts/update-core.sh # shows used branch
@@ -19,23 +17,16 @@ on the command-line, in a PR called "update-core-and-stuff-DATE":
./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`
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>.
avoid technical terms, library versions etc. the changelog is for the end user.
do not forget to update/mention used core version and release month.
in case previous entries of the changelog refer to betas or to not officially released versions,
the entries can be summarized.
this makes it easier for the end user to follow changes by showing major changes atop.
this makes it easier for the end user to follow changes by showing major changes atop
4. add a device message to `ConversationListActivity::onCreate()` or remove the old one.
do not repeat the CHANGELOG here: write what really is the ux outcome
@@ -48,8 +39,7 @@ the following steps are done in a PR called `prep-VERSION` (no leading "v"):
6. build APKs:
a) generate debug APK at "Build / Build Bundle(s)/APK / Build APK(s)"
b) generate release APK at "Build / Generate Signed Bundle or APK",
select "APK", add keys, flavor `gplayRelease`.
this APK will go to the stores and is located at `gplay/release`
select "APK", add keys, flavor `gplayRelease`
## Push Test Releases
@@ -80,35 +70,32 @@ only afterwards, push the APK to stores. **consider a blog post.**
on <https://play.google.com/apps/publish/>:
9. a) open "Delta Chat / Test and release / Production"
then "Create new release" and upload APK from above
9. a) open "Delta Chat/Release/Production"
then "Create new release" and upload APK from above
b) fill out "Release details/Release notes" (500 chars), add the line
"These features will roll out over the coming days. Thanks for using Delta Chat!";
release name should be default ("123 (1.2.3)")
c) click "Next", set "Rollout Percentage" to 50%, click "Save"
d) Go to "Publishing Overview", "Managed publishing" is usually off;
click "Send change for review", confirm
2 days later, change "Rollout Percentage" to 99%. Two more days later to 100%.
Rollout is anyways slower in practise, however,
only as long as we do not enter 100%, we can retract the version
(Once we reach 100%, we have to submit a new version for approval.
During these up to 4 days, sometimes longer, we cannot do anything on existing rollout)
c) click "Next", set "Rollout Percentage" to 1% (later 2%, 5%, 10%, 20%, 50%, 100%),
click "Start rollout to Production"
## Tag for F-Droid and create Github release
## Release on F-Droid
10. make sure, everything is pushed, then:
$ git tag v1.2.1 COMMIT; git push --tags
10. Add "4" at the end of versionCode to calculate F-Droid version code number.
E.g. for versionCode 456 you get number 4564
(this version conversion is due to `VercodeOperation` in
<https://gitlab.com/fdroid/fdroiddata/blob/master/metadata/com.b44t.messenger.yml>
metadata file, see <https://f-droid.org/docs/Build_Metadata_Reference/#VercodeOperation> for
documentation)
Add `metadata/en-US/changelogs/4564.txt` file with a changelog for F-Droid.
The changelog must not be longer than 500 characters.
11. make sure, everything is pushed, then:
$ git tag v1.2.1; git push --tags
F-Droid picks on the tags starting with "v" and builds the version.
This may take some days.
11. a) on <https://github.com/deltachat/deltachat-android/releases>,
tap "Draft a new Release", choose just created tag, fill changelog
b) add APK from above using "Attach binary".
c) tap "Publish release"
## Release on Amazon Appstore
@@ -117,8 +104,9 @@ on <https://developer.amazon.com/dashboard>:
12. a) for "Delta Chat", select "Add upcoming version" on the left
b) at "Step 1 / Existing file(s)" hit "Replace", upload the APK from above
c) on the "Step 1" page, add "Release notes" from CHANGELOG.md, hit "Next"
d) on "Step 2" and "Step 3" pages, hit "Next"
e) on "Step 4" page: "Submit app"
d) on "Step 2" page: "Does your app collect or transfer user data to third parties?" -> No, then "Next"
e) on "Step 3" page: "Next"
f) on "Step 4" page: "Submit app"
## Release on Huawei AppGallery
+69 -116
View File
@@ -1,24 +1,20 @@
plugins {
id 'com.android.application' version '8.5.2'
id 'com.google.gms.google-services' version '4.4.1'
id 'com.android.application' version '8.1.4'
// id 'com.google.gms.google-services' version '4.4.1'
}
repositories {
google()
mavenCentral()
maven {
// Used only for PhotoView
url "https://www.jitpack.io"
name 'JitPack Github wrapper'
}
jcenter()
}
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
namespace "org.thoughtcrime.securesms"
flavorDimensions "none"
compileSdk 34
@@ -29,18 +25,18 @@ android {
// > Task :stripFatDebugDebugSymbols
// Unable to strip the following libraries, packaging them as they are: libanimation-decoder-gif.so, libnative-utils.so.
// See <https://issuetracker.google.com/issues/237187538> for details.
ndkVersion "27.0.12077973"
ndkVersion "23.2.8568313"
useLibrary 'org.apache.http.legacy'
defaultConfig {
versionCode 30000710
versionName "1.54.0"
versionCode 688
versionName "1.46.5"
applicationId "chat.delta.lite"
applicationId "com.b44t.messenger"
multiDexEnabled true
minSdkVersion 21
targetSdkVersion 34
minSdkVersion 16
targetSdkVersion 33
vectorDrawables.useSupportLibrary = true
@@ -49,15 +45,6 @@ android {
buildConfigField "boolean", "DEV_BUILD", "false"
ndk {
if(project.hasProperty("ABI_FILTER")) {
abiFilters ABI_FILTER
} else {
abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "TEST_ADDR", buildConfigProperty("TEST_ADDR"))
@@ -71,7 +58,6 @@ android {
}
packagingOptions {
jniLibs {
doNotStrip '**/*.so'
keepDebugSymbols += ['*/mips/*.so', '*/mips64/*.so']
}
resources {
@@ -87,53 +73,20 @@ android {
storeFile file(DC_DEBUG_STORE_FILE )
}
}
releaseFdroid {
release {
// 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_FDROID
keyAlias DC_RELEASE_KEY_ALIAS
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 {
debug {
minifyEnabled false
applicationIdSuffix ".beta"
}
release {
applicationIdSuffix ".lite2"
// minification and proguard disabled for now.
//
// when enabled, it can cut down apk size about 6%,
@@ -144,38 +97,49 @@ android {
// nb: it is highly recommended to use the same settings in debug+release -
// otherwise problems might be noticed delayed only
minifyEnabled true
productFlavors.foss.signingConfig signingConfigs.releaseFdroid
productFlavors.gplay.signingConfig signingConfigs.releaseApk
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
if(project.hasProperty("DC_RELEASE_STORE_FILE")) {
signingConfig signingConfigs.release
}
}
}
if(!project.hasProperty("ABI_FILTER")) {
splits {
productFlavors {
foss {
dimension "none"
buildConfigField "boolean", "USE_PLAY_SERVICES", "false"
}
gplay {
dimension "none"
applicationId "chat.delta"
//apply plugin: "com.google.gms.google-services"
buildConfigField "boolean", "USE_PLAY_SERVICES", "true"
}
}
splits {
abi {
enable true
reset()
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
universalApk true
}
}
}
project.ext.versionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4]
project.ext.versionCodes = ['armeabi': 1, 'armeabi-v7a': 2, 'arm64-v8a': 3, 'mips': 5, 'mips64': 6, 'x86': 8, 'x86_64': 9]
android.applicationVariants.all { variant ->
variant.outputs.all { output ->
output.outputFileName = output.outputFileName
.replace("android", "ArcaneChat")
.replace("-release", "")
.replace("deltalab-android", "deltachat-lite")
.replace("-gplay", "")
.replace("-release", "")
.replace(".apk", "-${variant.versionName}.apk")
if(project.hasProperty("ABI_FILTER")) {
output.versionCodeOverride =
variant.versionCode * 10 + project.ext.versionCodes.get(ABI_FILTER)
} else {
output.versionCodeOverride =
variant.versionCode * 10 + project.ext.versionCodes.get(output.getFilter(com.android.build.OutputFile.ABI), 4)
}
output.versionCodeOverride =
project.ext.versionCodes.get(output.getFilter(
com.android.build.OutputFile.ABI), 0) * 10000000 + android.defaultConfig.versionCode
}
}
@@ -184,11 +148,6 @@ android {
jniLibs.srcDirs = ['libs']
}
}
androidResources {
generateLocaleConfig true
}
lint {
abortOnError false
}
@@ -199,72 +158,66 @@ android {
}
final def markwon_version = '4.6.2'
dependencies {
// ArcaneChat-only dependencies:
implementation "io.noties.markwon:core:$markwon_version"
implementation "io.noties.markwon:ext-strikethrough:$markwon_version"
implementation "io.noties.markwon:inline-parser:$markwon_version"
implementation 'com.airbnb.android:lottie:4.2.2' // Lottie animations support.
implementation 'androidx.sharetarget:sharetarget:1.2.0'
implementation 'androidx.webkit:webkit:1.12.1'
implementation 'androidx.webkit:webkit:1.8.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
implementation ('androidx.preference:preference:1.2.1') {
exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel'
exclude group: 'androidx.lifecycle', module:'lifecycle-viewmodel-ktx'
}
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
implementation 'androidx.exifinterface:exifinterface:1.3.7'
implementation 'androidx.exifinterface:exifinterface:1.3.6'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
implementation 'androidx.lifecycle:lifecycle-common-java8:2.6.2'
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.6.2'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2'
implementation 'androidx.work:work-runtime:2.9.1'
implementation 'androidx.emoji2:emoji2-emojipicker:1.5.0'
implementation 'com.google.guava:guava:31.1-android'
implementation 'com.google.android.exoplayer:exoplayer-core:2.19.1' // plays video and audio
implementation 'com.google.android.exoplayer:exoplayer-ui:2.19.1'
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 'androidx.work:work-runtime:2.8.1'
implementation 'androidx.emoji2:emoji2-emojipicker:1.4.0'
implementation 'com.google.guava:guava:29.0-android'
implementation 'com.google.android.exoplayer:exoplayer-core:2.9.6' // plays video and audio
implementation 'com.google.android.exoplayer:exoplayer-ui:2.9.6'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.journeyapps:zxing-android-embedded:3.4.0' // 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.github.penfeizhou.android.animation:awebp:3.0.2' // animated webp support.
implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.25.0' // APNG & 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.9.1'
annotationProcessor 'androidx.annotation:annotation:1.7.0'
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.github.amulyakhare:TextDrawable:558677ea31' // number of unread messages,
implementation 'com.soundcloud.android:android-crop:1.0.1@aar' // used for profile and group avatar selection in Android SDK<19
//implementation 'com.nineoldandroids:library:2.4.0' // DEPRECATED! Used to slide in the half-camera.
implementation 'mobi.upod:time-duration-picker:1.1.3' // Used to pick the time for inactivity.
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' // 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
exclude group: 'com.android.support', module: 'support-annotations'
}
implementation 'com.annimon:stream:1.1.8' // brings future java streams api to SDK Version < 24
implementation 'com.codewaves.stickyheadergrid:stickyheadergrid:0.9.4' // glues the current time segment text in the gallery to the top.
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'
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'
}
// gplayImplementation('com.google.firebase:firebase-messaging:23.4.1') { // 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'
// }
testImplementation 'junit:junit:4.13.2'
testImplementation 'junit:junit:4.13.1'
testImplementation 'org.assertj:assertj-core:1.7.1'
testImplementation 'org.mockito:mockito-core:1.9.5'
testImplementation 'org.powermock:powermock-api-mockito:1.6.1'
@@ -272,11 +225,11 @@ 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.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.6.1'
androidTestImplementation 'androidx.test:rules:1.6.1'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
androidTestImplementation 'androidx.test:rules:1.4.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation ('org.assertj:assertj-core:1.7.1') {
Binary file not shown.

After

Width:  |  Height:  |  Size: 433 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

@@ -1,39 +0,0 @@
ArcaneChat is a decentralized and secure messenger app that is compatible with the existing e-mail infrastructure.
Some features at a glance:
💬 Reliable instant messaging with multi-profile and multi-device support.
⚡️ Sign-up easily using secure fast chatmail servers. You dont need a phone number or any private data.
📧 Alternatively, use your existing classic e-mail address to read your inbox as chats.
🎮 Interactive mini-apps in chats for gaming and collaboration.
🔒 Audited end-to-end encryption safe against network and server attacks.
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>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 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>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>Profile's display name is always shown in the app's title bar instead of the name of the app</li>
<li>Your avatar is visible to other users in Mailing Lists</li>
<li>Can be selected as app to open .xdc files</li>
<li>For mini-apps developers: there are some extra features in the WebXDC API, check https://github.com/ArcaneChat/android/#webxdc</li>
<li>Better settings organization with additional "Privacy" section</li>
</ul>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 171 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 447 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 215 KiB

@@ -1 +0,0 @@
⚡ Fast encrypted chats for the family 🎉
@@ -1 +0,0 @@
ArcaneChat
Generated
+94 -26
View File
@@ -3,15 +3,15 @@
"android": {
"inputs": {
"devshell": "devshell",
"flake-utils": "flake-utils",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1733948466,
"narHash": "sha256-o/uq/tU458Ykudi8Zk3sRga5iazkuSczt9wDOCUDOSU=",
"lastModified": 1710633978,
"narHash": "sha256-yemnwSvW7cdWtXGpivFA5jDO35rGPs6fqxlQ4l6ODXs=",
"owner": "tadfisher",
"repo": "android-nixpkgs",
"rev": "0bf99ffaea6a7c0948ae10cf2e40c2905e4e4d6b",
"rev": "e91fb3d8517538e5ad9b422c9a4f604b56008a9e",
"type": "github"
},
"original": {
@@ -22,17 +22,18 @@
},
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"android",
"nixpkgs"
]
},
"locked": {
"lastModified": 1728330715,
"narHash": "sha256-xRJ2nPOXb//u1jaBnDP56M7v5ldavjbtR6lfGqSvcKg=",
"lastModified": 1708939976,
"narHash": "sha256-O5+nFozxz2Vubpdl1YZtPrilcIXPcRAjqNdNE8oCRoA=",
"owner": "numtide",
"repo": "devshell",
"rev": "dd6b80932022cea34a019e2bb32f6fa9e494dfef",
"rev": "5ddecd67edbd568ebe0a55905273e56cc82aabe3",
"type": "github"
},
"original": {
@@ -46,11 +47,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
@@ -64,11 +65,47 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"lastModified": 1709126324,
"narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"rev": "d465f4819400de7c8d874d50b982301f28a84605",
"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",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_4": {
"inputs": {
"systems": "systems_4"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
@@ -79,11 +116,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1733759999,
"narHash": "sha256-463SNPWmz46iLzJKRzO3Q2b0Aurff3U1n0nYItxq7jU=",
"lastModified": 1709237383,
"narHash": "sha256-cy6ArO4k5qTx+l5o+0mL9f5fa86tYUX3ozE1S+Txlds=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a73246e2eef4c6ed172979932bc80e1404ba2d56",
"rev": "1536926ef5621b09bba54035ae2bb6d806d72ac8",
"type": "github"
},
"original": {
@@ -95,11 +132,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1733749988,
"narHash": "sha256-+5qdtgXceqhK5ZR1YbP1fAUsweBIrhL38726oIEAtDs=",
"lastModified": 1710889954,
"narHash": "sha256-Pr6F5Pmd7JnNEMHHmspZ0qVqIBVxyZ13ik1pJtm2QXk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bc27f0fde01ce4e1bfec1ab122d72b7380278e68",
"rev": "7872526e9c5332274ea5932a0c3270d6e4724f3b",
"type": "github"
},
"original": {
@@ -111,11 +148,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1728538411,
"narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=",
"lastModified": 1706487304,
"narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221",
"rev": "90f456026d284c22b3e3497be980b2e47d0b28ac",
"type": "github"
},
"original": {
@@ -128,21 +165,22 @@
"root": {
"inputs": {
"android": "android",
"flake-utils": "flake-utils_2",
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
}
},
"rust-overlay": {
"inputs": {
"flake-utils": "flake-utils_4",
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1733970833,
"narHash": "sha256-sPEKtSaZk2CtfF9cdhtbY93S6qGq+d2PKI1fcoDfDaI=",
"lastModified": 1711073443,
"narHash": "sha256-PpNb4xq7U5Q/DdX40qe7CijUsqhVVM3VZrhN0+c6Lcw=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "f7f4c59ccdf1bec3f1547d27398e9589aa94e3e8",
"rev": "eec55ba9fcde6be4c63942827247e42afef7fafe",
"type": "github"
},
"original": {
@@ -180,6 +218,36 @@
"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"
}
},
"systems_4": {
"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",
+4 -3
View File
@@ -15,11 +15,12 @@
pkgs = import nixpkgs { inherit system overlays; };
android-sdk = android.sdk.${system} (sdkPkgs:
with sdkPkgs; [
build-tools-34-0-0
build-tools-33-0-1
cmdline-tools-latest
ndk-bundle
platform-tools
platforms-android-34
ndk-27-0-11902837
ndk-23-2-8568313
]);
rust-version = pkgs.lib.removeSuffix "\n"
(builtins.readFile ./scripts/rust-toolchain);
@@ -27,7 +28,7 @@
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/23.2.8568313";
buildInputs = [
android-sdk
pkgs.openjdk17
+4 -23
View File
@@ -28,26 +28,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:6f54e2c4e49405673e2bb9",
"android_client_info": {
"package_name": "com.github.arcanechat.beta"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyBYH8Iznh8btYX7g_udv_bu68VH30zzxho"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
},
{
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:aff82fbc40c8172e3e2bb9",
"android_client_info": {
"package_name": "com.github.arcanechat"
"package_name": "chat.delta.beta"
}
},
"oauth_client": [],
@@ -66,7 +47,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:92b4cf12669cc2083e2bb9",
"android_client_info": {
"package_name": "chat.delta.lite"
"package_name": "com.b44t.messenger"
}
},
"oauth_client": [],
@@ -85,7 +66,7 @@
"client_info": {
"mobilesdk_app_id": "1:922391085500:android:228a205b8aa2bacc3e2bb9",
"android_client_info": {
"package_name": "chat.delta.lite.beta"
"package_name": "com.b44t.messenger.beta"
}
},
"oauth_client": [],
@@ -102,4 +83,4 @@
}
],
"configuration_version": "1"
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=544c35d6bd849ae8a5ed0bcea39ba677dc40f49df7d1835561582da2009b961d
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionSha256Sum=ff7bf6a86f09b9b2c40bb8f48b25fc19cf2b2664fd1d220cd7ab833ec758d0d7
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

-1
View File
@@ -31,6 +31,5 @@ LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DFIXED_POINT -DUSE_ALLOCA -DHAVE_LRINT
LOCAL_CFLAGS += -DANDROID_NDK -DDISABLE_IMPORTGL -fno-strict-aliasing -DAVOID_TABLES -DANDROID_TILE_BASED_DECODE -DANDROID_ARMV6_IDCT -ffast-math -D__STDC_CONSTANT_MACROS
LOCAL_SRC_FILES := dc_wrapper.c
LOCAL_LDFLAGS += -Wl,--build-id=none
include $(BUILD_SHARED_LIBRARY)
+1 -1
View File
@@ -1,4 +1,4 @@
APP_PLATFORM := android-21
APP_PLATFORM := android-16
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
APP_STL := none
+82 -107
View File
@@ -7,6 +7,57 @@
#include "deltachat-core-rust/deltachat-ffi/deltachat.h"
#if __ANDROID_API__ == 16
unsigned long getauxval(unsigned long type) {
return 0;
}
#include <sys/socket.h>
#include <unistd.h>
int sendmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
int flags)
{
if (flags != 0) {
// Not supported by the fallback.
return -1;
}
if (vlen == 0) {
return 0;
}
ssize_t n = sendmsg(sockfd, &msgvec->msg_hdr, flags);
if (n == -1) {
return -1;
}
(*msgvec).msg_len = n;
return 1;
}
int recvmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
int flags, struct timespec *timeout)
{
if (flags != 0) {
// Not supported by the fallback.
return -1;
}
if (vlen == 0) {
return 0;
}
int n = recvmsg(sockfd, &msgvec->msg_hdr, flags);
if (n == -1) {
return -1;
}
(*msgvec).msg_len = n;
return 1;
}
#endif
static dc_msg_t* get_dc_msg(JNIEnv *env, jobject obj);
@@ -199,7 +250,7 @@ JNIEXPORT jlong Java_com_b44t_messenger_DcAccounts_getJsonrpcInstanceCPtr(JNIEnv
}
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_startIo2(JNIEnv *env, jobject obj)
JNIEXPORT void Java_com_b44t_messenger_DcAccounts_startIo(JNIEnv *env, jobject obj)
{
dc_accounts_start_io(get_dc_accounts(env, obj));
}
@@ -225,18 +276,18 @@ JNIEXPORT void Java_com_b44t_messenger_DcAccounts_setPushDeviceToken(JNIEnv *env
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcAccounts_backgroundFetch(JNIEnv *env, jobject obj, jint timeout_seconds)
{
return dc_accounts_background_fetch(get_dc_accounts(env, obj), timeout_seconds) != 0;
}
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_addClosedAccount(JNIEnv *env, jobject obj)
{
return dc_accounts_add_closed_account(get_dc_accounts(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcAccounts_migrateAccount(JNIEnv *env, jobject obj, jstring dbfile)
{
CHAR_REF(dbfile);
@@ -691,13 +742,6 @@ 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)
{
@@ -709,6 +753,12 @@ 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));
@@ -730,10 +780,12 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContext_sendVideochatInvitation(JNIEnv
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_sendWebxdcStatusUpdate(JNIEnv *env, jobject obj, jint msg_id, jstring payload)
JNIEXPORT jboolean Java_com_b44t_messenger_DcContext_sendWebxdcStatusUpdate(JNIEnv *env, jobject obj, jint msg_id, jstring payload, jstring descr)
{
CHAR_REF(payload);
jboolean ret = dc_send_webxdc_status_update(get_dc_context(env, obj), msg_id, payloadPtr, NULL) != 0;
CHAR_REF(descr);
jboolean ret = dc_send_webxdc_status_update(get_dc_context(env, obj), msg_id, payloadPtr, descrPtr) != 0;
CHAR_UNREF(descr);
CHAR_UNREF(payload);
return ret;
}
@@ -802,7 +854,7 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getConfig(JNIEnv *env, jobje
}
dc_str_unref(temp);
CHAR_UNREF(key);
return ret;
return ret; /* returns NULL only if key is unset and "def" is NULL */
}
@@ -832,16 +884,6 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContext_getSecurejoinQrSvg(JNIEnv *e
return ret;
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContext_createQrSvg(JNIEnv *env, jobject obj, jstring payload)
{
CHAR_REF(payload);
char* temp = dc_create_qr_svg(payloadPtr);
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
CHAR_UNREF(payload);
return ret;
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_joinSecurejoin(JNIEnv *env, jobject obj, jstring qr)
{
CHAR_REF(qr);
@@ -1289,6 +1331,12 @@ JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMedia(JNIEnv *env,
}
JNIEXPORT jint Java_com_b44t_messenger_DcContext_getNextMedia(JNIEnv *env, jobject obj, jint msg_id, jint dir, jint type1, jint type2, jint type3)
{
return dc_get_next_media(get_dc_context(env, obj), msg_id, dir, type1, type2, type3);
}
JNIEXPORT jintArray Java_com_b44t_messenger_DcContext_getChatMsgs(JNIEnv *env, jobject obj, jint chat_id, jint flags, jint marker1before)
{
dc_array_t* ca = dc_get_chat_msgs(get_dc_context(env, obj), chat_id, flags, marker1before);
@@ -1371,10 +1419,6 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getId(JNIEnv *env, jobject obj)
return dc_msg_get_id(get_dc_msg(env, obj));
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getSenderColor(JNIEnv *env, jobject obj)
{
return dc_msg_get_sender_color(get_dc_msg(env, obj));
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getText(JNIEnv *env, jobject obj)
{
@@ -1418,7 +1462,7 @@ JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_hasLocation(JNIEnv *env, jobjec
}
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getViewType(JNIEnv *env, jobject obj)
JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getType(JNIEnv *env, jobject obj)
{
return dc_msg_get_viewtype(get_dc_msg(env, obj));
}
@@ -1568,21 +1612,18 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getWebxdcInfoJson(JNIEnv *env, j
}
JNIEXPORT jstring Java_com_b44t_messenger_DcMsg_getWebxdcHref(JNIEnv *env, jobject obj)
{
char* temp = dc_msg_get_webxdc_href(get_dc_msg(env, obj));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcMsg_isForwarded(JNIEnv *env, jobject obj)
{
return dc_msg_is_forwarded(get_dc_msg(env, obj))!=0;
}
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;
@@ -1625,14 +1666,6 @@ JNIEXPORT jint Java_com_b44t_messenger_DcMsg_getVideochatType(JNIEnv *env, jobje
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setSubject(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
dc_msg_set_subject(get_dc_msg(env, obj), textPtr);
CHAR_UNREF(text);
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setText(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
@@ -1641,14 +1674,6 @@ JNIEXPORT void Java_com_b44t_messenger_DcMsg_setText(JNIEnv *env, jobject obj, j
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setHtml(JNIEnv *env, jobject obj, jstring text)
{
CHAR_REF(text);
dc_msg_set_html(get_dc_msg(env, obj), textPtr);
CHAR_UNREF(text);
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setFile(JNIEnv *env, jobject obj, jstring file, jstring filemime)
{
CHAR_REF(file);
@@ -1659,33 +1684,6 @@ JNIEXPORT void Java_com_b44t_messenger_DcMsg_setFile(JNIEnv *env, jobject obj, j
}
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 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_and_deduplicate(get_dc_msg(env, obj), filePtr, namePtr, filemimePtr);
CHAR_UNREF(filemime);
CHAR_UNREF(name);
CHAR_UNREF(file);
}
JNIEXPORT void Java_com_b44t_messenger_DcMsg_setDimension(JNIEnv *env, jobject obj, int width, int height)
{
dc_msg_set_dimension(get_dc_msg(env, obj), width, height);
@@ -1730,15 +1728,6 @@ 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)
{
@@ -1789,15 +1778,6 @@ JNIEXPORT jstring Java_com_b44t_messenger_DcContact_getName(JNIEnv *env, jobject
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContact_getAuthName(JNIEnv *env, jobject obj)
{
char* temp = dc_contact_get_auth_name(get_dc_contact(env, obj));
jstring ret = JSTRING_NEW(temp);
dc_str_unref(temp);
return ret;
}
JNIEXPORT jstring Java_com_b44t_messenger_DcContact_getDisplayName(JNIEnv *env, jobject obj)
{
char* temp = dc_contact_get_display_name(get_dc_contact(env, obj));
@@ -1877,11 +1857,6 @@ JNIEXPORT jint Java_com_b44t_messenger_DcContact_getVerifierId(JNIEnv *env, jobj
return dc_contact_get_verifier_id(get_dc_contact(env, obj));
}
JNIEXPORT jboolean Java_com_b44t_messenger_DcContact_isBot(JNIEnv *env, jobject obj)
{
return dc_contact_is_bot(get_dc_contact(env, obj)) != 0;
}
/*******************************************************************************
* DcLot
+1
View File
@@ -0,0 +1 @@
التواصل الفوري عبر البريد الكتروني
+1
View File
@@ -0,0 +1 @@
Okamžitá komunikace prostřednictvím e-mailu
+1
View File
@@ -0,0 +1 @@
Sofort über E-Mail kommunizieren
+1
View File
@@ -0,0 +1 @@
Delta Chat
+10
View File
@@ -0,0 +1,10 @@
If a classical-email-user sends an email to a group and adds new recipients, the new recipients will become group members.
Treat attached PGP keys from classical-email-user as a signal to prefer mutual encryption.
Treat encrypted or signed messages from classical-email-user as a signal to prefer mutual encryption.
Fix migration of old databases.
Fix: send ephemeral timer change messages only of the chat is already known by other members.
Fix: use relative paths to database and avoid problems eg. on migration to other devices or paths.
Fix read/write timeouts for IMAP over SOCKS5.
Fix: do not send "group name changes" if no character was modified.
Add Greek translation, update other translations.
Update to core104.
+13
View File
@@ -0,0 +1,13 @@
fix: make archived chats visible that don't get unarchived automatically (muted chats): add an unread counter and move the archive to the top
fix: send AVIF, HEIC, TXT, PPT, XLS, XML files as such
fix: trigger reconnection when failing to fetch existing messages
fix: do not retry fetching existing messages after failure, prevents infinite reconnection loop
fix: do not add an error if the message is encrypted but not signed
fix: do not strip leading spaces from message lines
fix corner cases on sending quoted texts
fix STARTTLS connection
fix: do not treat invalid email addresses as an exception
fix: flush relative database paths introduced in 1.34.8 in time
faster updates of chat lists and contact list
update translations
update to core106
+5
View File
@@ -0,0 +1,5 @@
* add SOCKS5 options to "Add Account" and "Configure"
* introduce DNS cache: if DNS stops working on a network, Delta Chat will still be able to connect to IMAP by using previous IP addresses
* show full messages: do not load remote content for requests automatically
* fix various bugs and improve logging
* update translations
+8
View File
@@ -0,0 +1,8 @@
* new, easy way to add a second device to your account: select "Add as a Second Device" after installation and scan a QR code from the first device
* view "All Media" of all chats
* new "Clear Chat" option
* show notifications for all accounts
* make better use of dark/light mode in "Show full message"
* show icon beside info messages of apps
* resilience against outages by caching DNS results for SMTP and IMAP connections
* speed and reliability improvements, fixes
+9
View File
@@ -0,0 +1,9 @@
* add a device message after setting up a second device using "Settings / Add Second Device"
* speed up "Add as Second Device" connection time significantly on the getter side
* if possible, show Wi-Fi-name directly after scanning an "Add Second Device" QR code
* fix immediate restarts of "Add Second Device"
* fix: do not show just trashed media in "All Media" view
* fix: update database if needed after "Add Second Device"
* update translations and local help
* update to core112.6
+6
View File
@@ -0,0 +1,6 @@
* start with light/dark theme depending on system theme
* fix verification icons for one-to-one chats
* fix fetch errors due to erroneous EOF detection in long IMAP responses
* more bug fixes
* update translations and local help
* update to core112.7
+4
View File
@@ -0,0 +1,4 @@
* use SOCKS5 configuration also for loading remote images in HTML mails
* bug fixes
* update translations and local help
* update to core112.8
+6
View File
@@ -0,0 +1,6 @@
* new webxdc APIs: importFiles() and sendToChat()
* remove upper size limit of attachments
* save traffic and storage: recode large PNG and other supported image formats (large JPEG were always recoded; images send as "File" are still not recorded or changed otherwise)
* save local storage: compress HTML emails in the database
* improve group membership consistency
* lots of bug fixes
+5
View File
@@ -0,0 +1,5 @@
* use image editor for avatar selection when possible
* improve loading screen in dark mode
* update "verified icon"
* add Luri Bakhtiari translation, update other translations
* lots of bug fixes
+5
View File
@@ -0,0 +1,5 @@
* use image editor for avatar selection when possible
* improve loading screen in dark mode
* update "verified icon"
* add Luri Bakhtiari translation, update other translations
* lots of bug fixes
+6
View File
@@ -0,0 +1,6 @@
- One-to-one chats guarantee end-to-end encryption for contacts with a green checkmark now
- For everyone\'s simplicity, we also mark these chats with green checkmarks
- Groups are created automatically with guaranteed end-to-end encryption if possible
- Accept/Blocked, Archived, Pinned, Mute is synced across all your devices
- More improvements in camera, voice messages, backup-all, screen reader, per-account wallpapers, gallery select-all, webxdc landscape
- Tons of bug fixes
+6
View File
@@ -0,0 +1,6 @@
- One-to-one chats guarantee end-to-end encryption for contacts with a green checkmark now
- For everyone\'s simplicity, we also mark these chats with green checkmarks
- Groups are created automatically with guaranteed end-to-end encryption if possible
- Accept/Blocked, Archived, Pinned, Mute is synced across all your devices
- More improvements in camera, voice messages, backup-all, screen reader, per-account wallpapers, gallery select-all, webxdc landscape
- Tons of bug fixes
+6
View File
@@ -0,0 +1,6 @@
- sync changes on "Your Profile Name", "Show Class Mails", "Read Receipts" options across devices
- remove receiver limit on .xdc size
- fix log in errors for providers as 163.com
- fix decryption errors when using multiple private keys
- fix database locked errors on webxdc updates
- update translations
+8
View File
@@ -0,0 +1,8 @@
- "Reactions": long tap a message to react to it
- If you cannot scan QR codes, share them as "invite links"
- Unread messages of all accounts are counted and shown in title now
- Webxdc sending limit removed
- Long-tapping chatlist items now allow to mute/unmute chats directly
- Ask for system unlock secret before opening "Password & Account"
- New option "Settings / Advanced / Read System Address Book"
- Tons of bug fixes
+7
View File
@@ -0,0 +1,7 @@
- new onboarding: you can create a new profile with one tap on "Create New Profile" - or use an existing login or second-device-setup as usual
- contacts can be attached as "Cards" at "Attach / Contact"; when the receiver taps the cards, guaranteed end-to-end encrypted can be established
- add contacts manually at "New Chat / New Contact / Add Contact Manually"
- send any emoji as reaction
- show reactions in summaries
- pin/archive/etc chats directly from search result
- bug fixed and more
+20
View File
@@ -0,0 +1,20 @@
Delta Chat is a messaging app that is completely compatible with the existing
e-mail infrastructure.
So, with Delta Chat you get the ease of well-known messengers with the reach of
e-mail. Moreover, you're independent from other companies or services -- as your
data are not related to Delta Chat, you won't even add new dependencies here.
Some features at a glance:
* Secure with automatic end-to-end-encryption, supporting the new <a href="https://autocrypt.org">Autocrypt</a> standard
* Fast by the use of Push-IMAP
* Largest userbase -- receivers not using Delta Chat can be reached as well
* Compatible -- not only to itself
* Elegant and simple user interface
* Distributed system
* No Spam -- only messages of known users are shown by default
* Reliable -- safe for professional use
* Trustworthy -- can even be used for business messages
* Fully OpenSource and Standards based
Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 648 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 494 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 KiB

+1
View File
@@ -0,0 +1 @@
Chat over e-mail. Elegantly Retro, Decentralized and Open. Privacy by Design.
+1
View File
@@ -0,0 +1 @@
Delta Chat
+1
View File
@@ -0,0 +1 @@
Tujmesaĝilo uzanta retpoŝton
+19
View File
@@ -0,0 +1,19 @@
Delta Chat es una aplicación de mensajería totalmente compatible con
infraestructura de correo electrónico.
Por lo tanto, con Delta Chat se obtiene la facilidad de conocidos mensajeros con el alcance de
e-mail. Además, eres independiente de otras empresas o servicios, ya que tu
Los datos no están relacionados con Delta Chat, ni siquiera agregará nuevas dependencias aquí.
Algunas características de un vistazo:
* Seguro con cifrado automático de extremo a extremo, compatible con el nuevo estándar <a href="https://autocrypt.org">Autocrypt</a>
* Rápido mediante el uso de Push-IMAP
* Mayor base de usuarios -- también se puede llegar a los receptores que no usan Delta Chat
* Compatible -- no sólo consigo mismo
* Interfaz de usuario elegante y sencilla
* Sistema distribuido
* Sin spam -- sólo los mensajes de usuarios conocidos se muestran por defecto
* Fiable -- seguro para uso profesional
* Confiable -- incluso se puede utilizar para mensajes de negocios
* Totalmente OpenSource y basado en estándares
+1
View File
@@ -0,0 +1 @@
Comuníquese al instante mediante correo electrónico
+1
View File
@@ -0,0 +1 @@
Delta Chat
+1
View File
@@ -0,0 +1 @@
Kiire suhtlus e-posti kaudu
+1
View File
@@ -0,0 +1 @@
Bat bateko mezularitza e-mail bidez
+1
View File
@@ -0,0 +1 @@
برقراری ارتباط فوری از طریق ایمیل
+1
View File
@@ -0,0 +1 @@
Communiquez instantanément par courriel
+1
View File
@@ -0,0 +1 @@
Dèan conaltradh sa bhad le post-d
+1
View File
@@ -0,0 +1 @@
התקשרות ישירה דרך דוא״ל
+10
View File
@@ -0,0 +1,10 @@
Se un utente e-mail classica invia un'e-mail a un gruppo e aggiunge nuovi destinatari, i nuovi destinatari diventeranno membri del gruppo.
Tratta le chiavi PGP allegate dall'utente di posta elettronica classica come un segnale per preferire la crittografia reciproca.
Tratta i messaggi crittografati o firmati provenienti dall'utente di posta elettronica classica come un segnale per preferire la crittografia reciproca.
Corretta la migrazione dei vecchi database.
Correzione: invia messaggi di modifica temporanei del timer solo nella chat già conosciuta da altri membri.
Correzione: utilizza percorsi relativi al database ed evita problemi ad es. sulla migrazione verso altri dispositivi o percorsi.
Correzione: timeout di lettura/scrittura per IMAP su SOCKS5.
Correzione: non inviare "modifiche al nome del gruppo" se nessun carattere è stato modificato.
Aggiungi la traduzione greca, aggiornate altre traduzioni.
Aggiornamento al core104.
+13
View File
@@ -0,0 +1,13 @@
correzione: rendere visibili le chat archiviate che non vengono annullate automaticamente (chat disattivate): aggiunge un contatore non letto e sposta l'archivio in alto
correzione: invia file AVIF, HEIC, TXT, PPT, XLS, XML come tali
correzione: attiva la riconnessione quando non si riesce a recuperare i messaggi esistenti
correzione: non riprova a recuperare i messaggi esistenti dopo un errore, impedisce il ciclo infinito di riconnessione
correzione: non aggiunge un errore se il messaggio è crittografato ma non firmato
correzione: non rimuove gli spazi iniziali dalle righe del messaggio
risolvere i casi limite relativi all'invio di testi citati
corretta la connessione STARTTLS
correzione: non trattare gli indirizzi email non validi come un'eccezione
correzione: svuotamento dei percorsi relativi del database introdotti in 1.34.8 in tempo
aggiornamenti rapidi degli elenchi di chat e dell'elenco dei contatti
aggiornare le traduzioni
aggiornamento al core106
+5
View File
@@ -0,0 +1,5 @@
* aggiunge le opzioni SOCKS5 a "Aggiungi Account" e "Configura"
* introdurre la cache DNS: se il DNS smette di funzionare su una rete, Delta Chat sarà comunque in grado di connettersi ad IMAP utilizzando gli indirizzi IP precedenti
* mostra messaggi completi: non carica automaticamente il contenuto remoto per le richieste
* Corretti vari bug e migliorata la registrazione
* aggiornate le traduzioni
+8
View File
@@ -0,0 +1,8 @@
* nuovo e semplice modo per aggiungere un secondo dispositivo al tuo account: seleziona "Aggiungi Secondo Dispositivo" dopo l'installazione e scansiona un codice QR dal primo dispositivo
* visualizza "Tutti i Media" di tutte le chat
* nuova opzione "Cancella Chat".
* mostra le notifiche per tutti gli account
* utilizza meglio la modalità buio/luce in "Mostra messaggio completo"
* mostra l'icona accanto ai messaggi informativi delle app
* resilienza contro le interruzioni memorizzando nella cache i risultati DNS per le connessioni SMTP e IMAP
* Miglioramenti e correzioni velocità e affidabilità
+8
View File
@@ -0,0 +1,8 @@
* aggiungi un messaggio sul dispositivo dopo aver configurato un secondo dispositivo utilizzando "Impostazioni/Aggiungi Secondo Dispositivo"
* velocizza significativamente il tempo di connessione "Aggiungi come Secondo Dispositivo" dal lato intermediario
* se possibile, mostra il nome Wi-Fi direttamente dopo aver scansionato il codice QR "Aggiungi Secondo Dispositivo".
* risolto il riavvio immediato di "Aggiungi Secondo Dispositivo"
* correzione: non vengono visualizzati solo i media cestinati nella vista "Tutti i Media".
* correzione: aggiornamento del database se necessario dopo "Aggiungi Secondo Dispositivo"
* aggiornate traduzioni e aiuto locale
* aggiornamento al core112.6
+6
View File
@@ -0,0 +1,6 @@
* inizia con un tema chiaro/scuro a seconda del tema del sistema
* corrette le icone di verifica per le chat individuali
* corretti gli errori di recupero dovuti al rilevamento EOF errato nelle risposte IMAP lunghe
* ulteriori correzioni di bug
* aggiornate le traduzioni e aiuto locale
* aggiornamento al core112.7
+4
View File
@@ -0,0 +1,4 @@
* utilizza la configurazione SOCKS5 anche per caricare immagini remote nelle mail HTML
* correzioni di bug
* aggiornate le traduzioni e aiuto locale
* aggiornamento al core112.8
+6
View File
@@ -0,0 +1,6 @@
* nuove API webxdc: importFiles() e sendToChat()
* rimosso il limite di dimensione superiore degli allegati
* risparmia traffico e spazio di archiviazione: ricodifica PNG di grandi dimensioni e altri formati di immagine supportati (i JPEG di grandi dimensioni venivano sempre ricodificati; le immagini inviate come "File" non vengono ancora registrate o modificate in altro modo)
* salva spazio di archiviazione locale: comprimi le email HTML nel database
* migliorata coerenza dell'appartenenza al gruppo
* molte correzioni di bug
+5
View File
@@ -0,0 +1,5 @@
* usa l'editor immagini per la selezione dell'avatar quando possibile
* migliora la schermata di caricamento in modalità oscura
* aggiornamento "icona verificata"
* aggiunta la traduzione di Luri Bakhtiari, aggiornate altre traduzioni
* molte correzioni di bug
+5
View File
@@ -0,0 +1,5 @@
* usa l'editor immagini per la selezione dell'avatar quando possibile
* migliora la schermata di caricamento in modalità oscura
* aggiornamento "icona verificata"
* aggiunta la traduzione di Luri Bakhtiari, aggiornate altre traduzioni
* molte correzioni di bug
+6
View File
@@ -0,0 +1,6 @@
- Le chat individuali garantiscono ora la crittografia end-to-end per i contatti con un segno di spunta verde
- Per la semplicità di tutti, contrassegniamo queste chat anche con segni di spunta verdi
- I gruppi vengono creati automaticamente con crittografia end-to-end garantita, se possibile
- Accetta/Bloccato, Archiviato, Appuntato, Disattiva Audio è sincronizzato su tutti i tuoi dispositivi
- Ulteriori miglioramenti alla fotocamera, ai messaggi vocali, al backup di tutto, alla lettura dello schermo, agli sfondi per account, alla selezione di tutto nella galleria, all'orientamento orizzontale webxdc
- Tonnellate di correzioni bug
+6
View File
@@ -0,0 +1,6 @@
- Le chat individuali garantiscono ora la crittografia end-to-end per i contatti con un segno di spunta verde
- Per la semplicità di tutti, contrassegniamo queste chat anche con segni di spunta verdi
- I gruppi vengono creati automaticamente con crittografia end-to-end garantita, se possibile
- Accetta/Bloccato, Archiviato, Appuntato, Disattiva Audio è sincronizzato su tutti i tuoi dispositivi
- Ulteriori miglioramenti alla fotocamera, ai messaggi vocali, al backup di tutto, alla lettura dello schermo, agli sfondi per account, alla selezione di tutto nella galleria, all'orientamento orizzontale webxdc
- Tonnellate di correzioni bug
+6
View File
@@ -0,0 +1,6 @@
- sincronizza le modifiche alle opzioni "Nome Tuo Profilo", "Mostra E-Mails Tradizionali", "Ricevute di Lettura" su tutti i dispositivi
- rimosso il limite del ricevitore sulla dimensione .xdc
- corretti gli errori di accesso per provider come 163.com
- corretti gli errori di decrittazione quando si utilizzano più chiavi private
- corretti gli errori di blocco del database sugli aggiornamenti webxdc
- aggiornate le traduzioni
+8
View File
@@ -0,0 +1,8 @@
- "Reazioni": tocca a lungo un messaggio per reagire ad esso
- Se non riesci a scansionare i codici QR, condividili come "link di invito"
- I messaggi non letti di tutti gli account ora vengono conteggiati e mostrati nel titolo
- Rimosso limite di invio di webxdc
- Gli elementi dell'elenco chat a tocco prolungato ora consentono di disattivare/attivare l'audio delle chat direttamente
- Richiede lo sblocco segreto del sistema prima di aprire "Password & Account"
- Nuova opzione "Impostazioni/Avanzate/Leggi Rubrica di Sistema"
- Tonnellate di correzioni bug
-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
+19
View File
@@ -0,0 +1,19 @@
Delta Chat è un'app di messaggistica completamente compatibile con
l'infrastruttura e-mail esistente.
Quindi, con Delta Chat ottieni la facilità di messaggistica ben nota alla portata di
e-mail. Inoltre, sei indipendente da altre società o servizi, come i tuoi
dati non sono correlati a Delta Chat, qui non aggiungerai nemmeno nuove dipendenze.
Alcune caratteristiche in breve:
* Proteggi con la crittografia end-to-end automatica, che supporta il nuovo standard <a href="https://autocrypt.org">Autocrypt</a>
* Veloce grazie all'uso di Push-IMAP
* Base utenti più ampia -- è possibile raggiungere anche i destinatari che non utilizzano Delta Chat
* Compatibile -- non solo con se stesso
* Interfaccia utente elegante e semplice
* Sistema distribuito
* Nessuno Spam -- per impostazione predefinita vengono visualizzati solo i messaggi di utenti conosciuti
* Affidabile -- sicuro per l'uso professionale
* Affidabile -- può essere utilizzato anche per messaggi aziendali
* Completamente OpenSource e basato su Standards
+1
View File
@@ -0,0 +1 @@
Chatta via e-mail. Elegantemente Retrò, Decentralizzato e Aperto. Riservatezza da Progettazione.
+1
View File
@@ -0,0 +1 @@
Delta Chat
+1
View File
@@ -0,0 +1 @@
メールで瞬時に通信する
+1
View File
@@ -0,0 +1 @@
이메일을 통해 즉각적으로 소통하세요
+1
View File
@@ -0,0 +1 @@
Sludre desentralisert via e-post.
+1
View File
@@ -0,0 +1 @@
Delta Chat
+1
View File
@@ -0,0 +1 @@
Błyskawiczna komunikacja za pośrednictwem poczty e-mail

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