Compare commits
80 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5ac6fe3ed2 | |||
| b540b5250d | |||
| af94274987 | |||
| 08b052aa93 | |||
| c4b0b6d9c7 | |||
| 6a4c73c0e6 | |||
| 78e1d11801 | |||
| 2178e555ca | |||
| a3393d43c0 | |||
| f63eb3e57f | |||
| 8ea9cfe7a1 | |||
| 092fd9603f | |||
| ed1ba1dce9 | |||
| 58b35519cb | |||
| 07bfa48588 | |||
| 96851c458a | |||
| 56a26a561d | |||
| cf6db57cb8 | |||
| 1da9fdc6b4 | |||
| 1c13a564ec | |||
| cc2f1f2270 | |||
| 3bdd16d224 | |||
| 141f326fec | |||
| 94c4e0aa92 | |||
| fc4d9df3ac | |||
| 2590b82f0e | |||
| 943d40b92e | |||
| acf840c05b | |||
| 05f7d6cd98 | |||
| 0b4d36f0cf | |||
| ee5ce97779 | |||
| f32b1f3d95 | |||
| 122de0e3ad | |||
| 8180aa9b0d | |||
| 0bfcfa1444 | |||
| 34a369fa49 | |||
| ccb8b417a6 | |||
| 8d16baed11 | |||
| 81f7022957 | |||
| b1dd60607b | |||
| 557053a25d | |||
| aa61597804 | |||
| 1fbf04ed28 | |||
| 06420e032d | |||
| 86d1350c64 | |||
| d896955077 | |||
| 9a42c26697 | |||
| 8db5e2ce01 | |||
| d4d5655e72 | |||
| 91c53ab5cf | |||
| e02674b2ca | |||
| 360dcf5bc7 | |||
| 17a5f9a266 | |||
| 46df7e5ab2 | |||
| 33ff464028 | |||
| c6c49da1f2 | |||
| c7912a0df7 | |||
| 459e57f56c | |||
| a0ff8043b0 | |||
| 9d75045fec | |||
| b8b3deaad0 | |||
| df82368327 | |||
| 377060afe1 | |||
| 06800d24ab | |||
| 030b08ddd1 | |||
| 67cc39b648 | |||
| 34d20b6c78 | |||
| 3e64619ec5 | |||
| f167e6d1d8 | |||
| 0f3d00abfa | |||
| f5932f7d42 | |||
| 912fb3e595 | |||
| b5c688232b | |||
| 4cbf12068b | |||
| 97ad251cd9 | |||
| bdc71b965e | |||
| 4f84efbfff | |||
| e91bc5d3b7 | |||
| dc08de5b3f | |||
| df03a7456f |
@@ -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.
|
||||
-->
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
name: Other
|
||||
about: Start with a new blank issue.
|
||||
title: ''
|
||||
assignees: ''
|
||||
---
|
||||
@@ -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'
|
||||
|
||||
@@ -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-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
|
||||
|
||||
@@ -46,6 +46,4 @@ jni/armeabi
|
||||
jni/armeabi-v7a
|
||||
jni/arm64-v8a
|
||||
|
||||
artwork/drawable*/
|
||||
artwork/mipmap-*/
|
||||
*~
|
||||
*~
|
||||
@@ -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
|
||||
|
||||
@@ -1,257 +1,4 @@
|
||||
# ArcaneChat Android Changelog
|
||||
|
||||
## 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
|
||||
@@ -859,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,35 +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-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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 30000706
|
||||
versionName "1.52.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,73 +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:glide-plugin:3.0.2' // APNG & 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.soundcloud.android:android-crop:1.0.1@aar' // used for profile and group avatar selection in Android SDK<19
|
||||
implementation 'com.github.amulyakhare:TextDrawable:558677ea31' // number of unread messages,
|
||||
//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'
|
||||
@@ -273,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') {
|
||||
|
||||
|
After Width: | Height: | Size: 433 KiB |
|
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 don’t 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>
|
||||
|
Before Width: | Height: | Size: 171 KiB |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 287 KiB |
|
Before Width: | Height: | Size: 256 KiB |
|
Before Width: | Height: | Size: 447 KiB |
|
Before Width: | Height: | Size: 173 KiB |
|
Before Width: | Height: | Size: 215 KiB |
@@ -1 +0,0 @@
|
||||
⚡ Fast encrypted chats for the family 🎉
|
||||
@@ -1 +0,0 @@
|
||||
ArcaneChat
|
||||
@@ -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",
|
||||
|
||||
@@ -17,9 +17,10 @@
|
||||
with sdkPkgs; [
|
||||
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
|
||||
|
||||
@@ -1,205 +0,0 @@
|
||||
# Privacy Policy ArcaneChat Apps
|
||||
|
||||
**This is the privacy policy for the ArcaneChat (Delta Chat client) apps.**
|
||||
|
||||
## Summary
|
||||
|
||||
ArcaneChat is an e-mail app that follows a strict privacy-by-design approach. All communication data remains on the end devices or on the e-mail servers selected by the user.
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Requirement</th>
|
||||
<th>Implementation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Confidentiality</td>
|
||||
<td>
|
||||
<b>End-to-end encryption</b> by implementing <a href="https://autocrypt.org">Autocrypt</a> and <a href="https://securejoin.delta.chat/en/latest/new.html">Verified groups</a>. User-friendly end-to-end encryption means that the requirements of the GDPR are already implemented at the technical level, <b>Privacy by Design</b>.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Data minimization</td>
|
||||
<td><b>No upload</b> of contact lists from your phone.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Data avoidance</td>
|
||||
<td><b>No ArcaneChat servers</b>, no processing of personal data. All data remains with your e-mail provider.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Legal basis</td>
|
||||
<td>
|
||||
There is no need to obtain consent for address book matching, <a href="https://gdpr-info.eu/art-7-gdpr/">Art.7 GDPR</a>, as no address book data is transferred. Therefore, <b>no additional legal basis</b> is required.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Data to third parties</td>
|
||||
<td>We only receive the <b>token for the push notification</b> and forward it to the provider of your operating system. If you don't want to receive push notifications, we won't forward a token.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Data from third parties</td>
|
||||
<td>
|
||||
Easy implementation in companies: ArcaneChat does not process personal data on behalf of the controller and therefore <b>does not require any instruction or data processing agreement</b>. Easy connection with the own corporate e-mail server.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
DPIA
|
||||
</td>
|
||||
<td>
|
||||
No <b>data protection impact assessment</b> needs to be carried out for ArcaneChat <a href="https://gdpr-info.eu/art-35-gdpr/">Art.35 GDPR</a>, as no specific additional data is processed beyond the e-mail messenger process.
|
||||
|
||||
The risk to the rights and freedoms of natural persons is limited to the internal company data processing of the e-mail communication and that of the e-mail providers.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Documentation
|
||||
</td>
|
||||
<td>
|
||||
Inclusion of the measures implemented by ArcaneChat in the <b>record of processing activities</b> may have a positive impact on possible evidence, <a href="https://gdpr-info.eu/art-30-gdpr/">Art.30 GDPR</a> as well as certification processes, <a href="https://gdpr-info.eu/art-25-gdpr/">Art.25 (4) GDPR</a>,<a href="https://gdpr-info.eu/art-42-gdpr/">Art.42 GDPR</a>.
|
||||
|
||||
The <b>documentation of processing activities</b> related to Messenger communication is omitted and shifts only to the record of processing activities of your e-mail provider, <a href="https://gdpr-info.eu/art-30-gdpr/">Art.30(2) GDPR</a>.
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
## Detailed data protection information
|
||||
|
||||
### 1. Name and contact information of the data controller
|
||||
|
||||
Responsible for the processing of your personal data is
|
||||
```
|
||||
Asiel Diaz Benitez
|
||||
Reichsgrafen Str. 20
|
||||
79102 Freiburg
|
||||
Germany
|
||||
```
|
||||
E-mail: [adbenitez@duck.com](mailto:adbenitez@duck.com)
|
||||
|
||||
### 2. Processing when using the ArcaneChat e-mail messenger
|
||||
|
||||
All data is stored locally on your device or with your e-mail provider. Neither we nor ArcaneChat developers have any possibility to access the end user's data, as all communication and data processing takes place on the end user's device without ArcaneChat servers being involved. Only for the optional Push Notification (see 2.2) the Push Notification Token is processed by Delta Chat servers without them having any knowledge about the messages themselves, not even in encrypted form.
|
||||
|
||||
#### 2.1 Sign up with your e-mail provider
|
||||
|
||||
ArcaneChat communication works through your e-mail account. In order to establish the connection, the app needs the access data. These are only stored locally on your end device:
|
||||
|
||||
- e-mail address
|
||||
- your password
|
||||
|
||||
The legal basis for the processing is [Art.6 (1) lit.b GDPR](https://gdpr-info.eu/art-6-gdpr/), as you have a usage contract with us by using our services.
|
||||
|
||||
Security procedures are in place to protect the confidentiality of the data:
|
||||
Only the bare data needed to fulfil the user request of login are stored,
|
||||
encryption takes place as well as local sandboxing,
|
||||
see 2.3 for further details.
|
||||
|
||||
#### 2.2 Heartbeat push notification
|
||||
|
||||
Push notifications can be sent to the user's phone at regular intervals to enable receipt of messages while the ArcaneChat app is not currently active. Current messages can then be retrieved on the end device. The token is only created if the user wants reliable receipt of messages even when the app is not active.
|
||||
|
||||
In order to use push notifications, a unique identifier or token (Push Notification Token) is created after the app is downloaded and installed. This token allows Delta Chat servers to send notifications to the user's device. The token is generated and provided by the provider. The token is then stored on our systems and sent to the device at regular intervals to cause the app to retrieve new messages from the e-mail provider. Our systems have no knowledge of whether a message arrives or who may have sent a message.
|
||||
|
||||
The aforementioned data will only be processed with your consent, in accordance with [Art.6 (1) lit.a GDPR](https://gdpr-info.eu/art-6-gdpr/).
|
||||
|
||||
#### 2.3 Data in the app
|
||||
|
||||
The ArcaneChat app works in a data-saving way. All relevant data is stored exclusively on the respective end devices:
|
||||
|
||||
```
|
||||
- chat histories (text messages, voice messages, media, ...).
|
||||
- contacts
|
||||
- settings
|
||||
```
|
||||
ArcaneChat servers have no access to this data, not even in encrypted form, as data processing takes place only on the end devices.
|
||||
|
||||
#### 2.4 App permissions
|
||||
|
||||
Within the app, you can enter, manage, and edit various information, tasks, and activities. The app also requires the following permissions:
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Permission</th>
|
||||
<th>Reason</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Internet access</td>
|
||||
<td>This is needed to send the messages to the communication partner. </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Camera access</td>
|
||||
<td>
|
||||
This is needed for you to take photos and send them via the app. In addition, the camera access allows you to scan QR codes.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Microphone access (optional)</td>
|
||||
<td>
|
||||
This permission allows you to send voice messages.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Location access (optional)</td>
|
||||
<td>
|
||||
This is needed if you want to share your location with a communication partner.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Background location access (optional)</td>
|
||||
<td>
|
||||
This will be needed if you want to share your location over a certain period of time.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Contact access (optional)</td>
|
||||
<td>
|
||||
This allows you to load and save contacts from your phone book into the app. The contact data is stored locally in the app and not forwarded and stored on ArcaneChat server.
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
Storage (optional)
|
||||
</td>
|
||||
<td>You can save images and files from the app to your device.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
The processing and use of the above permissions are performed to provide the service. The internet access is necessary for the use, therefore the legal basis of the processing is [Art.6 (1) lit.a GDPR](https://gdpr-info.eu/art-6-gdpr/), as you have a usage contract with us by using our services.
|
||||
|
||||
The optional permissions only take place based on your consent according to [Art.6 (1) lit.a GDPR](https://gdpr-info.eu/art-6-gdpr/) and can also be reduced to individual services, e.g. only internet usage to send messages without pictures or location data. ArcaneChat does not receive any access to this data.
|
||||
|
||||
### 3. Platform dependent processing
|
||||
|
||||
Certain information is already processed automatically as soon as you use the app. We have listed below which personal data is processed exactly:
|
||||
|
||||
When you download the app, certain required information is transmitted to the app store you use ( e.g. Google Play or Apple App Store), in particular the username, the email address, the customer number of your account, the time of the download, payment information as well as the individual device identification number may be processed. The processing of this data is carried out exclusively by the respective app store and is beyond our control.
|
||||
|
||||
For the rest, we refer to the data protection policies of the respective app store providers or responsible parties of the operating systems. We do not collect and/or process any other data.
|
||||
|
||||
Your personal data will not be transferred to third parties for purposes other than those listed below.
|
||||
|
||||
# 4. Rights of the data subject
|
||||
|
||||
As a data subject of a processing of personal data, you have the right to
|
||||
|
||||
1. request information about your personal data processed by us in accordance with [Art.15 GDPR](https://gdpr-info.eu/art-15-gdpr/). In particular, you can request information about the processing purposes, the category of personal data, the categories of recipients to whom your data have been or will be disclosed, the planned storage period, the existence of a right to rectification, erasure, restriction of processing or objection, the existence of a right of complaint, the origin of your data if it has not been collected by us, as well as the existence of automated decision-making including profiling and, if applicable, meaningful information about its details;
|
||||
2. in accordance with [Art.16 GDPR](https://gdpr-info.eu/art-16-gdpr/) of the GDPR, immediately request the correction of inaccurate or incomplete personal data stored by us;
|
||||
3. pursuant to [Art.17 GDPR](https://gdpr-info.eu/art-17-gdpr/) of the GDPR, to request the erasure of your personal data stored by us, unless the processing is necessary for the exercise of the right to freedom of expression and information, for compliance with a legal obligation, for reasons of public interest, or for the establishment, exercise or defence of legal claims;
|
||||
4. pursuant to [Art.18 GDPR](https://gdpr-info.eu/art-18-gdpr/), to request the restriction of the processing of your personal data, insofar as the accuracy of the data is disputed by you, the processing is unlawful, but you object to its erasure and we no longer require the data, but you need it for the assertion, exercise or defence of legal claims or you have objected to the processing pursuant to [Art.21 GDPR](https://gdpr-info.eu/art-21-gdpr/);
|
||||
5. pursuant to [Art.20 GDPR](https://gdpr-info.eu/art-20-gdpr/), to receive your personal data that you have provided to us in a structured, common and machine-readable format or to request that it be transferred to another controller;
|
||||
6. in accordance with [Art.7 (3) GDPR](https://gdpr-info.eu/art-7-gdpr/), to revoke your consent given to us at any time. This has the consequence that we may no longer continue the data processing based on this consent in the future; and
|
||||
7. complain to a supervisory authority in accordance with [Art.77 GDPR](https://gdpr-info.eu/art-77-gdpr/) of the GDPR. As a rule, you can contact the supervisory authority of your usual place of residence or workplace.
|
||||
|
||||
|
||||
# 5. Up-to-dateness and modification of this data protection declaration
|
||||
|
||||
This data protection declaration is valid as of January 2025. Due to the further development of our website and offers or due to changed legal or official requirements, it may become necessary to revise this data protection declaration from time to time.
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
After Width: | Height: | Size: 41 KiB |
@@ -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,4 +1,4 @@
|
||||
APP_PLATFORM := android-21
|
||||
APP_PLATFORM := android-16
|
||||
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
|
||||
APP_STL := none
|
||||
|
||||
|
||||
@@ -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);
|
||||
@@ -702,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));
|
||||
@@ -723,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;
|
||||
}
|
||||
@@ -795,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 */
|
||||
}
|
||||
|
||||
|
||||
@@ -825,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);
|
||||
@@ -1282,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);
|
||||
@@ -1364,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)
|
||||
{
|
||||
@@ -1411,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));
|
||||
}
|
||||
@@ -1561,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;
|
||||
@@ -1618,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);
|
||||
@@ -1634,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);
|
||||
@@ -1652,21 +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_setDimension(JNIEnv *env, jobject obj, int width, int height)
|
||||
{
|
||||
dc_msg_set_dimension(get_dc_msg(env, obj), width, height);
|
||||
@@ -1761,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));
|
||||
@@ -1849,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
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
التواصل الفوري عبر البريد الكتروني
|
||||
@@ -0,0 +1 @@
|
||||
Okamžitá komunikace prostřednictvím e-mailu
|
||||
@@ -0,0 +1 @@
|
||||
Sofort über E-Mail kommunizieren
|
||||
@@ -0,0 +1 @@
|
||||
Delta Chat
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 292 KiB |
|
After Width: | Height: | Size: 818 KiB |
|
After Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 287 KiB |
|
After Width: | Height: | Size: 648 KiB |
|
After Width: | Height: | Size: 494 KiB |
|
After Width: | Height: | Size: 556 KiB |
@@ -0,0 +1 @@
|
||||
Chat over e-mail. Elegantly Retro, Decentralized and Open. Privacy by Design.
|
||||
@@ -0,0 +1 @@
|
||||
Delta Chat
|
||||
@@ -0,0 +1 @@
|
||||
Tujmesaĝilo uzanta retpoŝton
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
Comuníquese al instante mediante correo electrónico
|
||||
@@ -0,0 +1 @@
|
||||
Delta Chat
|
||||
@@ -0,0 +1 @@
|
||||
Kiire suhtlus e-posti kaudu
|
||||
@@ -0,0 +1 @@
|
||||
Bat bateko mezularitza e-mail bidez
|
||||
@@ -0,0 +1 @@
|
||||
برقراری ارتباط فوری از طریق ایمیل
|
||||
@@ -0,0 +1 @@
|
||||
Communiquez instantanément par courriel
|
||||
@@ -0,0 +1 @@
|
||||
Dèan conaltradh sa bhad le post-d
|
||||
@@ -0,0 +1 @@
|
||||
התקשרות ישירה דרך דוא״ל
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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à
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
Chatta via e-mail. Elegantemente Retrò, Decentralizzato e Aperto. Riservatezza da Progettazione.
|
||||
@@ -0,0 +1 @@
|
||||
Delta Chat
|
||||
@@ -0,0 +1 @@
|
||||
メールで瞬時に通信する
|
||||
@@ -0,0 +1 @@
|
||||
이메일을 통해 즉각적으로 소통하세요
|
||||
@@ -0,0 +1 @@
|
||||
Sludre desentralisert via e-post.
|
||||
@@ -0,0 +1 @@
|
||||
Delta Chat
|
||||
@@ -0,0 +1 @@
|
||||
Błyskawiczna komunikacja za pośrednictwem poczty e-mail
|
||||