Merge with Conversations @ 2.12.2

This commit is contained in:
Jonas Schäfer 2023-03-25 10:47:17 +01:00
commit 9d3eb1c19c
369 changed files with 19857 additions and 7036 deletions

View File

@ -1,21 +0,0 @@
[main]
host = https://www.transifex.com
lang_map = af_ZA: af-rZA, am_ET: am-rET, ar_AE: ar-rAE, ar_BH: ar-rBH, ar_DZ: ar-rDZ, ar_EG: ar-rEG, ar_IQ: ar-rIQ, ar_JO: ar-rJO, ar_KW: ar-rKW, ar_LB: ar-rLB, ar_LY: ar-rLY, ar_MA: ar-rMA, ar_OM: ar-rOM, ar_QA: ar-rQA, ar_SA: ar-rSA, ar_SY: ar-rSY, ar_TN: ar-rTN, ar_YE: ar-rYE, arn_CL: arn-rCL, as_IN: as-rIN, az_AZ: az-rAZ, ba_RU: ba-rRU, be_BY: be-rBY, bg_BG: bg-rBG, bn_BD: bn-rBD, bn_IN: bn-rIN, bo_CN: bo-rCN, br_FR: br-rFR, bs_BA: bs-rBA, ca_ES: ca-rES, co_FR: co-rFR, cs_CZ: cs-rCZ, cy_GB: cy-rGB, da_DK: da-rDK, de_AT: de-rAT, de_CH: de-rCH, de_DE: de-rDE, de_LI: de-rLI, de_LU: de-rLU, dsb_DE: dsb-rDE, dv_MV: dv-rMV, el_GR: el-rGR, en_AU: en-rAU, en_BZ: en-rBZ, en_CA: en-rCA, en_GB: en-rGB, en_IE: en-rIE, en_IN: en-rIN, en_JM: en-rJM, en_MY: en-rMY, en_NZ: en-rNZ, en_PH: en-rPH, en_SG: en-rSG, en_TT: en-rTT, en_US: en-rUS, en_ZA: en-rZA, en_ZW: en-rZW, es_AR: es-rAR, es_BO: es-rBO, es_CL: es-rCL, es_CO: es-rCO, es_CR: es-rCR, es_DO: es-rDO, es_EC: es-rEC, es_ES: es-rES, es_GT: es-rGT, es_HN: es-rHN, es_MX: es-rMX, es_NI: es-rNI, es_PA: es-rPA, es_PE: es-rPE, es_PR: es-rPR, es_PY: es-rPY, es_SV: es-rSV, es_US: es-rUS, es_UY: es-rUY, es_VE: es-rVE, et_EE: et-rEE, eu_ES: eu-rES, fa_IR: fa-rIR, fi_FI: fi-rFI, fil_PH: fil-rPH, fo_FO: fo-rFO, fr_BE: fr-rBE, fr_CA: fr-rCA, fr_CH: fr-rCH, fr_FR: fr-rFR, fr_LU: fr-rLU, fr_MC: fr-rMC, fy_NL: fy-rNL, ga_IE: ga-rIE, gd_GB: gd-rGB, gl_ES: gl-rES, gsw_FR: gsw-rFR, gu_IN: gu-rIN, ha_NG: ha-rNG, hi_IN: hi-rIN, hr_BA: hr-rBA, hr_HR: hr-rHR, hsb_DE: hsb-rDE, hu_HU: hu-rHU, hy_AM: hy-rAM, id_ID: id-rID, ig_NG: ig-rNG, ii_CN: ii-rCN, is_IS: is-rIS, it_CH: it-rCH, it_IT: it-rIT, iu_CA: iu-rCA, ja_JP: ja-rJP, ka_GE: ka-rGE, kk_KZ: kk-rKZ, kl_GL: kl-rGL, km_KH: km-rKH, kn_IN: kn-rIN, ko_KR: ko-rKR, kok_IN: kok-rIN, ky_KG: ky-rKG, lb_LU: lb-rLU, lo_LA: lo-rLA, lt_LT: lt-rLT, lv_LV: lv-rLV, mi_NZ: mi-rNZ, mk_MK: mk-rMK, ml_IN: ml-rIN, mn_CN: mn-rCN, mn_MN: mn-rMN, moh_CA: moh-rCA, mr_IN: mr-rIN, ms_BN: ms-rBN, ms_MY: ms-rMY, mt_MT: mt-rMT, nb_NO: nb-rNO, ne_NP: ne-rNP, nl_BE: nl-rBE, nl_NL: nl-rNL, nn_NO: nn-rNO, nso_ZA: nso-rZA, oc_FR: oc-rFR, or_IN: or-rIN, pa_IN: pa-rIN, pl_PL: pl-rPL, prs_AF: prs-rAF, ps_AF: ps-rAF, pt_BR: pt-rBR, pt_PT: pt-rPT, qut_GT: qut-rGT, quz_BO: quz-rBO, quz_EC: quz-rEC, quz_PE: quz-rPE, rm_CH: rm-rCH, ro_RO: ro-rRO, ru_RU: ru-rRU, rw_RW: rw-rRW, sa_IN: sa-rIN, sah_RU: sah-rRU, se_FI: se-rFI, se_NO: se-rNO, se_SE: se-rSE, si_LK: si-rLK, sk_SK: sk-rSK, sl_SI: sl-rSI, sma_NO: sma-rNO, sma_SE: sma-rSE, smj_NO: smj-rNO, smj_SE: smj-rSE, smn_FI: smn-rFI, sms_FI: sms-rFI, sq_AL: sq-rAL, sr_BA: sr-rBA, sr_CS: sr-rCS, sr_ME: sr-rME, sr_RS: sr-rRS, sv_FI: sv-rFI, sv_SE: sv-rSE, sw_KE: sw-rKE, syr_SY: syr-rSY, ta_IN: ta-rIN, te_IN: te-rIN, tg_TJ: tg-rTJ, th_TH: th-rTH, tk_TM: tk-rTM, tn_ZA: tn-rZA, tr_TR: tr-rTR, tt_RU: tt-rRU, tzm_DZ: tzm-rDZ, ug_CN: ug-rCN, uk_UA: uk-rUA, ur_PK: ur-rPK, uz_UZ: uz-rUZ, vi_VN: vi-rVN, wo_SN: wo-rSN, xh_ZA: xh-rZA, yo_NG: yo-rNG, zh_CN: zh-rCN, zh_HK: zh-rHK, zh_MO: zh-rMO, zh_SG: zh-rSG, zh_TW: zh-rTW, zu_ZA: zu-rZA, no_NO: no-rNO, he_IL: iw-rIL, he: iw
[conversations.main-strings]
file_filter = src/main/res/values-<lang>/strings.xml
source_file = src/main/res/values/strings.xml
source_lang = en
[conversations.quicksy-strings]
file_filter = src/quicksy/res/values-<lang>/strings.xml
source_file = src/quicksy/res/values/strings.xml
source_lang = en
type = ANDROID
[conversations.conversations-strings]
file_filter = src/conversations/res/values-<lang>/strings.xml
source_file = src/conversations/res/values/strings.xml
source_lang = en
type = ANDROID

View File

@ -1,5 +1,85 @@
# Changelog
### Version 2.12.2
* Increase corner radius on profile pictures
### Version 2.12.1
* Fix crash in UnifiedPush Distributor
### Version 2.12.0
* Integrate UnifiedPush Distributor to facilitate push messages to other UnifiedPush enabled apps like Tusky and Fedilab
### Version 2.11.3
* Fix messages getting resend when using SASL2
* Fix black video between some devices
* Fix crash on empty passwords
### Version 2.11.2
* Fixed regression in P2P file transfer
### Version 2.11.1
* Fix resend loop on servers that support only sm:2
* Show 'Switch to video' only if other party supports video
### Version 2.11.0
* Implement Extensible SASL Profile, Bind 2.0 and Fast for faster reconnects
* Implement Channel Binding
* Add ability to switch from audio call to video call
* Add ability to delete own avatar
* Add notification for missed calls
### Version 2.10.10
* Minor bug fixes
* Restore ability to call out via JMP and other services (Playstore version)
### Version 2.10.9
* Ask for Bluetooth permissions when making A/V calls (You can reject this if you dont use Bluetooth headsets)
* Fix bug when calling Movim
### Version 2.10.8
* Fix wrong avatar being shown for group chats
### Version 2.10.7
* always ask for battery optimizations opt-out
* set local only flag on 'x connected accounts' notifications
* Minor bug fixes
### Version 2.10.6
* Minor bug fixes
### Version 2.10.5
* Security: Stop downloading files that exceed advertised file size
* Security: Limit POSH files to 10K
### Version 2.10.4
* Fix interaction with Google Maps Share Location Plugin
* Remove footnote with regards to server fee
### Version 2.10.3
* Store files in location appropriate for Android 11
* Attempt to reconnect call after network switch
* Show caller JID and account JID in incoming call screen
### Version 2.10.2
* Fix crash when rendering some quotes
* Fix crash in welcome screen
### Version 2.10.1
* Fix issue with some videos not being compressed

View File

@ -6,9 +6,9 @@ This is the source code for the Snikket Android client.
Snikket for Android is based on [Conversations](https://conversations.im/) by Daniel Gultsch.
The official Conversations repository is available at: https://github.com/iNPUTmice/Conversations
The official Conversations repository is available at: https://codeberg.org/iNPUTmice/Conversations
Copyright (c) 2014-2021 Daniel Gultsch and Snikket Community Interest Company.
Copyright (c) 2014-2023 Daniel Gultsch and Snikket Community Interest Company.
Snikket and the Snikket logo are trademarks of Snikket Community Interest Company.

View File

@ -1,167 +1,157 @@
#!/bin/env ruby
# frozen_string_literal: true
require 'xml'
resolutions = {
'mdpi' => 1,
'hdpi' => 1.5,
'xhdpi' => 2,
'xxhdpi' => 3,
'xxxhdpi' => 4,
}
'mdpi' => 1,
'hdpi' => 1.5,
'xhdpi' => 2,
'xxhdpi' => 3,
'xxxhdpi' => 4
}
images = {
'main_logo.svg' => ['conversations/main_logo', 200],
'quicksy_main_logo.svg' => ['quicksy/main_logo', 200],
'splash_logo.svg' => ['conversations/splash_logo', 144],
'quicksy_splash_logo.svg' => ['quicksy/splash_logo', 144],
'ic_search_black.svg' => ['ic_search_background_black', 144],
'ic_search_white.svg' => ['ic_search_background_white', 144],
'ic_no_results_white.svg' => ['ic_no_results_background_white', 144],
'ic_no_results_black.svg' => ['ic_no_results_background_black', 144],
'play_video_white.svg' => ['play_video_white', 128],
'play_gif_white.svg' => ['play_gif_white', 128],
'play_video_black.svg' => ['play_video_black', 128],
'play_gif_black.svg' => ['play_gif_black', 128],
'open_pdf_black.svg' => ['open_pdf_black', 128],
'open_pdf_white.svg' => ['open_pdf_white', 128],
'conversations_mono.svg' => ['conversations/ic_notification', 24],
'quicksy_mono.svg' => ['quicksy/ic_notification', 24],
'flip_camera_android-black-24dp.svg' => ['ic_flip_camera_android_black_24dp', 24],
'ic_send_text_offline.svg' => ['ic_send_text_offline', 36],
'ic_send_text_offline_white.svg' => ['ic_send_text_offline_white', 36],
'ic_send_text_online.svg' => ['ic_send_text_online', 36],
'ic_send_text_away.svg' => ['ic_send_text_away', 36],
'ic_send_text_dnd.svg' => ['ic_send_text_dnd', 36],
'ic_send_photo_online.svg' => ['ic_send_photo_online', 36],
'ic_send_photo_offline.svg' => ['ic_send_photo_offline', 36],
'ic_send_photo_offline_white.svg' => ['ic_send_photo_offline_white', 36],
'ic_send_photo_away.svg' => ['ic_send_photo_away', 36],
'ic_send_photo_dnd.svg' => ['ic_send_photo_dnd', 36],
'ic_send_location_online.svg' => ['ic_send_location_online', 36],
'ic_send_location_offline.svg' => ['ic_send_location_offline', 36],
'ic_send_location_offline_white.svg' => ['ic_send_location_offline_white', 36],
'ic_send_location_away.svg' => ['ic_send_location_away', 36],
'ic_send_location_dnd.svg' => ['ic_send_location_dnd', 36],
'ic_send_voice_online.svg' => ['ic_send_voice_online', 36],
'ic_send_voice_offline.svg' => ['ic_send_voice_offline', 36],
'ic_send_voice_offline_white.svg' => ['ic_send_voice_offline_white', 36],
'ic_send_voice_away.svg' => ['ic_send_voice_away', 36],
'ic_send_voice_dnd.svg' => ['ic_send_voice_dnd', 36],
'ic_send_cancel_online.svg' => ['ic_send_cancel_online', 36],
'ic_send_cancel_offline.svg' => ['ic_send_cancel_offline', 36],
'ic_send_cancel_offline_white.svg' => ['ic_send_cancel_offline_white', 36],
'ic_send_cancel_away.svg' => ['ic_send_cancel_away', 36],
'ic_send_cancel_dnd.svg' => ['ic_send_cancel_dnd', 36],
'ic_send_picture_online.svg' => ['ic_send_picture_online', 36],
'ic_send_picture_offline.svg' => ['ic_send_picture_offline', 36],
'ic_send_picture_offline_white.svg' => ['ic_send_picture_offline_white', 36],
'ic_send_picture_away.svg' => ['ic_send_picture_away', 36],
'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36],
'ic_send_videocam_online.svg' => ['ic_send_videocam_online', 36],
'ic_send_videocam_offline.svg' => ['ic_send_videocam_offline', 36],
'ic_send_videocam_offline_white.svg' => ['ic_send_videocam_offline_white', 36],
'ic_send_videocam_away.svg' => ['ic_send_videocam_away', 36],
'ic_send_videocam_dnd.svg' => ['ic_send_videocam_dnd', 36],
'ic_notifications_none_white80.svg' => ['ic_notifications_none_white80', 24],
'ic_notifications_off_white80.svg' => ['ic_notifications_off_white80', 24],
'ic_notifications_paused_white80.svg' => ['ic_notifications_paused_white80', 24],
'ic_notifications_white80.svg' => ['ic_notifications_white80', 24],
'ic_verified_fingerprint.svg' => ['ic_verified_fingerprint', 36],
'qrcode-scan.svg' => ['ic_qr_code_scan_white_24dp', 24],
'message_bubble_received.svg' => ['message_bubble_received.9', 0],
'message_bubble_received_grey.svg' => ['message_bubble_received_grey.9', 0],
'message_bubble_received_dark.svg' => ['message_bubble_received_dark.9', 0],
'message_bubble_received_warning.svg' => ['message_bubble_received_warning.9', 0],
'message_bubble_received_white.svg' => ['message_bubble_received_white.9', 0],
'message_bubble_sent.svg' => ['message_bubble_sent.9', 0],
'message_bubble_sent_grey.svg' => ['message_bubble_sent_grey.9', 0],
'date_bubble_white.svg' => ['date_bubble_white.9', 0],
'date_bubble_grey.svg' => ['date_bubble_grey.9', 0],
'marker.svg' => ['marker', 0]
}
'main_logo.svg' => ['conversations/main_logo', 200],
'quicksy_main_logo.svg' => ['quicksy/main_logo', 200],
'splash_logo.svg' => ['conversations/splash_logo', 144],
'quicksy_splash_logo.svg' => ['quicksy/splash_logo', 144],
'ic_search_black.svg' => ['ic_search_background_black', 144],
'ic_search_white.svg' => ['ic_search_background_white', 144],
'ic_no_results_white.svg' => ['ic_no_results_background_white', 144],
'ic_no_results_black.svg' => ['ic_no_results_background_black', 144],
'play_video_white.svg' => ['play_video_white', 128],
'play_gif_white.svg' => ['play_gif_white', 128],
'play_video_black.svg' => ['play_video_black', 128],
'play_gif_black.svg' => ['play_gif_black', 128],
'open_pdf_black.svg' => ['open_pdf_black', 128],
'open_pdf_white.svg' => ['open_pdf_white', 128],
'conversations_mono.svg' => ['conversations/ic_notification', 24],
'quicksy_mono.svg' => ['quicksy/ic_notification', 24],
'flip_camera_android-black-24dp.svg' => ['ic_flip_camera_android_black_24dp', 24],
'ic_send_text_offline.svg' => ['ic_send_text_offline', 36],
'ic_send_text_offline_white.svg' => ['ic_send_text_offline_white', 36],
'ic_send_text_online.svg' => ['ic_send_text_online', 36],
'ic_send_text_away.svg' => ['ic_send_text_away', 36],
'ic_send_text_dnd.svg' => ['ic_send_text_dnd', 36],
'ic_send_photo_online.svg' => ['ic_send_photo_online', 36],
'ic_send_photo_offline.svg' => ['ic_send_photo_offline', 36],
'ic_send_photo_offline_white.svg' => ['ic_send_photo_offline_white', 36],
'ic_send_photo_away.svg' => ['ic_send_photo_away', 36],
'ic_send_photo_dnd.svg' => ['ic_send_photo_dnd', 36],
'ic_send_location_online.svg' => ['ic_send_location_online', 36],
'ic_send_location_offline.svg' => ['ic_send_location_offline', 36],
'ic_send_location_offline_white.svg' => ['ic_send_location_offline_white', 36],
'ic_send_location_away.svg' => ['ic_send_location_away', 36],
'ic_send_location_dnd.svg' => ['ic_send_location_dnd', 36],
'ic_send_voice_online.svg' => ['ic_send_voice_online', 36],
'ic_send_voice_offline.svg' => ['ic_send_voice_offline', 36],
'ic_send_voice_offline_white.svg' => ['ic_send_voice_offline_white', 36],
'ic_send_voice_away.svg' => ['ic_send_voice_away', 36],
'ic_send_voice_dnd.svg' => ['ic_send_voice_dnd', 36],
'ic_send_cancel_online.svg' => ['ic_send_cancel_online', 36],
'ic_send_cancel_offline.svg' => ['ic_send_cancel_offline', 36],
'ic_send_cancel_offline_white.svg' => ['ic_send_cancel_offline_white', 36],
'ic_send_cancel_away.svg' => ['ic_send_cancel_away', 36],
'ic_send_cancel_dnd.svg' => ['ic_send_cancel_dnd', 36],
'ic_send_picture_online.svg' => ['ic_send_picture_online', 36],
'ic_send_picture_offline.svg' => ['ic_send_picture_offline', 36],
'ic_send_picture_offline_white.svg' => ['ic_send_picture_offline_white', 36],
'ic_send_picture_away.svg' => ['ic_send_picture_away', 36],
'ic_send_picture_dnd.svg' => ['ic_send_picture_dnd', 36],
'ic_send_videocam_online.svg' => ['ic_send_videocam_online', 36],
'ic_send_videocam_offline.svg' => ['ic_send_videocam_offline', 36],
'ic_send_videocam_offline_white.svg' => ['ic_send_videocam_offline_white', 36],
'ic_send_videocam_away.svg' => ['ic_send_videocam_away', 36],
'ic_send_videocam_dnd.svg' => ['ic_send_videocam_dnd', 36],
'ic_notifications_none_white80.svg' => ['ic_notifications_none_white80', 24],
'ic_notifications_off_white80.svg' => ['ic_notifications_off_white80', 24],
'ic_notifications_paused_white80.svg' => ['ic_notifications_paused_white80', 24],
'ic_notifications_white80.svg' => ['ic_notifications_white80', 24],
'ic_verified_fingerprint.svg' => ['ic_verified_fingerprint', 36],
'qrcode-scan.svg' => ['ic_qr_code_scan_white_24dp', 24],
'message_bubble_received.svg' => ['message_bubble_received.9', 0],
'message_bubble_received_grey.svg' => ['message_bubble_received_grey.9', 0],
'message_bubble_received_dark.svg' => ['message_bubble_received_dark.9', 0],
'message_bubble_received_warning.svg' => ['message_bubble_received_warning.9', 0],
'message_bubble_received_white.svg' => ['message_bubble_received_white.9', 0],
'message_bubble_sent.svg' => ['message_bubble_sent.9', 0],
'message_bubble_sent_grey.svg' => ['message_bubble_sent_grey.9', 0],
'date_bubble_white.svg' => ['date_bubble_white.9', 0],
'date_bubble_grey.svg' => ['date_bubble_grey.9', 0],
'marker.svg' => ['marker', 0]
}
# Executable paths for Mac OSX
# "/Applications/Inkscape.app/Contents/Resources/bin/inkscape"
inkscape = "inkscape"
imagemagick = "magick"
inkscape = 'inkscape'
imagemagick = 'convert'
def execute_cmd(cmd)
puts cmd
system cmd
puts cmd
system cmd
end
images.each do |source_filename, settings|
svg_content = File.read(source_filename)
svg_content = File.read(source_filename)
output_filename, base_size = settings
svg = XML::Document.string(svg_content)
base_width = svg.root["width"].to_i
base_height = svg.root["height"].to_i
svg = XML::Document.string(svg_content)
base_width = svg.root['width'].to_i
base_height = svg.root['height'].to_i
guides = svg.find(".//sodipodi:guide","sodipodi:http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd")
guides = svg.find('.//sodipodi:guide', 'sodipodi:http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd')
resolutions.each do |resolution, factor|
output_filename, base_size = settings
resolutions.each do |resolution, factor|
if base_size.positive?
width = factor * base_size
height = factor * base_size
else
width = factor * base_width
height = factor * base_height
end
if base_size > 0
width = factor * base_size
height = factor * base_size
else
width = factor * base_width
height = factor * base_height
end
output_parts = output_filename.split('/')
output_parts = output_filename.split('/')
path = if output_parts.count != 2
"../src/main/res/drawable-#{resolution}/#{output_filename}.png"
else
"../src/#{output_parts[0]}/res/drawable-#{resolution}/#{output_parts[1]}.png"
end
execute_cmd "#{inkscape} #{source_filename} -C -w #{width.to_i} -h #{height.to_i} --export-filename=#{path}"
if output_parts.count != 2
path = "../src/main/res/drawable-#{resolution}/#{output_filename}.png"
else
path = "../src/#{output_parts[0]}/res/drawable-#{resolution}/#{output_parts[1]}.png"
end
execute_cmd "#{inkscape} #{source_filename} -C -w #{width} -h #{height} -o #{path}"
top = []
right = []
bottom = []
left = []
top = []
right = []
bottom = []
left = []
guides.each do |guide|
orientation = guide['orientation']
x, y = guide['position'].split(',')
x = x.to_i
y = y.to_i
guides.each do |guide|
orientation = guide["orientation"]
x, y = guide["position"].split(",")
x, y = x.to_i, y.to_i
top.push(x * factor) if (orientation == '1,0') && (y == base_height)
if orientation == "1,0" and y == base_height
top.push(x * factor)
end
right.push((base_height - y) * factor) if (orientation == '0,1') && (x == base_width)
if orientation == "0,1" and x == base_width
right.push((base_height - y) * factor)
end
bottom.push(x * factor) if (orientation == '1,0') && y.zero?
if orientation == "1,0" and y == 0
bottom.push(x * factor)
end
left.push((base_height - y) * factor) if (orientation == '0,1') && x.zero?
end
if orientation == "0,1" and x == 0
left.push((base_height - y) * factor)
end
end
next if top.length != 2
next if right.length != 2
next if bottom.length != 2
next if left.length != 2
next if top.length != 2
next if right.length != 2
next if bottom.length != 2
next if left.length != 2
execute_cmd "#{imagemagick} -background none PNG32:#{path} -gravity center -extent #{width + 2}x#{height + 2} PNG32:#{path}"
execute_cmd "#{imagemagick} -background none PNG32:#{path} -gravity center -extent #{width+2}x#{height+2} PNG32:#{path}"
draw_format = '-draw "line %d,%d %d,%d"'
top_line = format(draw_format, top.min + 1, 0, top.max, 0)
right_line = format(draw_format, width + 1, right.min + 1, width + 1, right.max)
bottom_line = format(draw_format, bottom.min + 1, height + 1, bottom.max, height + 1)
left_line = format(draw_format, 0, left.min + 1, 0, left.max)
draws = "#{top_line} #{right_line} #{bottom_line} #{left_line}"
draw_format = "-draw \"line %d,%d %d,%d\""
top_line = draw_format % [top.min + 1, 0, top.max, 0]
right_line = draw_format % [width + 1, right.min + 1, width + 1, right.max]
bottom_line = draw_format % [bottom.min + 1, height + 1, bottom.max, height + 1]
left_line = draw_format % [0, left.min + 1, 0, left.max]
draws = "#{top_line} #{right_line} #{bottom_line} #{left_line}"
execute_cmd "#{imagemagick} -background none PNG32:#{path} -fill black -stroke none #{draws} PNG32:#{path}"
end
execute_cmd "#{imagemagick} -background none PNG32:#{path} -fill black -stroke none #{draws} PNG32:#{path}"
end
end

View File

@ -6,7 +6,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.3'
classpath 'com.android.tools.build:gradle:7.4.0'
}
}
@ -20,39 +20,37 @@ repositories {
configurations {
playstoreImplementation
compatImplementation
conversationsFreeCompatImplementation
conversationsPlaystoreCompatImplementation
conversationsPlaystoreSystemImplementation
quicksyPlaystoreCompatImplementation
quicksyPlaystoreSystemImplementation
quicksyFreeCompatImplementation
freeImplementation
conversationsFreeImplementation
conversationsPlaystorImplementation
conversationsPlaystoreImplementation
quicksyPlaystoreImplementation
quicksyPlaystoreImplementation
quicksyFreeImplementation
quicksyImplementation
}
dependencies {
implementation 'androidx.viewpager:viewpager:1.0.0'
playstoreImplementation('com.google.firebase:firebase-messaging:22.0.0') {
playstoreImplementation('com.google.firebase:firebase-messaging:23.1.1') {
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'
}
conversationsPlaystoreCompatImplementation("com.android.installreferrer:installreferrer:2.2")
conversationsPlaystoreSystemImplementation("com.android.installreferrer:installreferrer:2.2")
quicksyPlaystoreCompatImplementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
quicksyPlaystoreSystemImplementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2")
quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1'
implementation 'org.sufficientlysecure:openpgp-api:10.0'
implementation 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation 'androidx.exifinterface:exifinterface:1.3.3'
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.exifinterface:exifinterface:1.3.5'
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
implementation 'androidx.emoji:emoji:1.1.0'
implementation 'com.google.android.material:material:1.4.0'
compatImplementation 'androidx.emoji:emoji-appcompat:1.1.0'
conversationsFreeCompatImplementation 'androidx.emoji:emoji-bundled:1.1.0'
quicksyFreeCompatImplementation 'androidx.emoji:emoji-bundled:1.1.0'
implementation 'com.google.android.material:material:1.7.0'
implementation "androidx.emoji2:emoji2:1.2.0"
freeImplementation "androidx.emoji2:emoji2-bundled:1.2.0"
implementation 'org.bouncycastle:bcmail-jdk15on:1.64'
//zxing stopped supporting Java 7 so we have to stick with 3.3.3
//https://github.com/zxing/zxing/issues/1170
@ -62,10 +60,11 @@ dependencies {
implementation 'org.whispersystems:signal-protocol-java:2.6.2'
implementation 'com.makeramen:roundedimageview:2.3.0'
implementation "com.wefika:flowlayout:0.4.1"
implementation 'com.otaliastudios:transcoder:0.10.4'
//noinspection GradleDependency
implementation 'com.otaliastudios:transcoder:0.9.1'
implementation 'org.jxmpp:jxmpp-jid:1.0.2'
implementation 'org.osmdroid:osmdroid-android:6.1.10'
implementation 'org.jxmpp:jxmpp-jid:1.0.3'
implementation 'org.osmdroid:osmdroid-android:6.1.11'
implementation 'org.hsluv:hsluv:0.2'
implementation 'org.conscrypt:conscrypt-android:2.5.2'
implementation 'me.drakeet.support:toastcompat:1.1.0'
@ -73,33 +72,33 @@ dependencies {
implementation "com.squareup.retrofit2:retrofit:2.9.0"
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
implementation "com.squareup.okhttp3:okhttp:4.9.2"
implementation "com.squareup.okhttp3:okhttp:4.10.0"
implementation 'com.google.guava:guava:30.1.1-android'
quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.12.18'
implementation 'org.snikket:webrtc-android:107.0.0'
implementation 'com.google.guava:guava:31.1-android'
quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.12.49'
implementation 'im.conversations.webrtc:webrtc-android:104.0.0'
}
ext {
travisBuild = System.getenv("TRAVIS") == "true"
preDexEnabled = System.getProperty("pre-dex", "true")
abiCodes = ['armeabi-v7a': 1, 'x86': 2, 'x86_64': 3, 'arm64-v8a': 4]
}
android {
compileSdkVersion 29
namespace 'eu.siacs.conversations'
compileSdkVersion 32
defaultConfig {
minSdkVersion 21
targetSdkVersion 29
versionCode 42025
versionName "2.10.3"
targetSdkVersion 32
versionCode 42050
versionName "2.12.2"
archivesBaseName += "-$versionName"
applicationId "org.snikket.android"
resValue "string", "applicationId", applicationId
def appName = "Snikket"
resValue "string", "app_name", appName
buildConfigField "String", "APP_NAME", "\"$appName\"";
buildConfigField "String", "APP_NAME", "\"$appName\""
}
splits {
@ -122,7 +121,7 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}
flavorDimensions("mode", "distribution", "emoji")
flavorDimensions("mode", "distribution")
productFlavors {
@ -133,7 +132,7 @@ android {
def appName = "Quicksy"
resValue "string", "app_name", appName
buildConfigField "String", "APP_NAME", "\"$appName\"";
buildConfigField "String", "APP_NAME", "\"$appName\""
}
conversations {
@ -142,45 +141,21 @@ android {
playstore {
dimension "distribution"
versionNameSuffix "+p"
versionNameSuffix "+playstore"
}
free {
dimension "distribution"
versionNameSuffix "+f"
}
system {
dimension "emoji"
versionNameSuffix "s"
}
compat {
dimension "emoji"
versionNameSuffix "c"
versionNameSuffix "+free"
}
}
sourceSets {
quicksyFreeSystem {
quicksyFree {
java {
srcDir 'src/quicksyFree/java'
}
}
quicksyFreeCompat {
java {
srcDir 'src/freeCompat/java'
srcDir 'src/quicksyFree/java'
}
}
quicksyPlaystoreCompat {
java {
srcDir 'src/playstoreCompat/java'
srcDir 'src/quicksyPlaystore/java'
}
res {
srcDir 'src/playstoreCompat/res'
srcDir 'src/quicksyPlaystore/res'
}
}
quicksyPlaystoreSystem {
quicksyPlaystore {
java {
srcDir 'src/quicksyPlaystore/java'
}
@ -188,28 +163,12 @@ android {
srcDir 'src/quicksyPlaystore/res'
}
}
conversationsFreeCompat {
java {
srcDir 'src/freeCompat/java'
srcDir 'src/conversationsFree/java'
}
}
conversationsFreeSystem {
conversationsFree {
java {
srcDir 'src/conversationsFree/java'
}
}
conversationsPlaystoreCompat {
java {
srcDir 'src/playstoreCompat/java'
srcDir 'src/conversationsPlaystore/java'
}
res {
srcDir 'src/playstoreCompat/res'
srcDir 'src/conversationsPlaystore/res'
}
}
conversationsPlaystoreSystem {
conversationsPlaystore {
java {
srcDir 'src/conversationsPlaystore/java'
}
@ -224,13 +183,11 @@ android {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
versionNameSuffix "r"
}
debug {
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
versionNameSuffix "d"
}
}
@ -250,9 +207,6 @@ android {
buildTypes.release.signingConfig = signingConfigs.release
}
lintOptions {
disable 'MissingTranslation', 'InvalidPackage','AppCompatResource'
}
subprojects {
@ -267,17 +221,22 @@ android {
}
}
packagingOptions {
exclude 'META-INF/BCKEY.DSA'
exclude 'META-INF/BCKEY.SF'
resources {
excludes += ['META-INF/BCKEY.DSA', 'META-INF/BCKEY.SF']
}
}
lint {
disable 'MissingTranslation', 'InvalidPackage', 'AppCompatResource'
}
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def baseAbiVersionCode = project.ext.abiCodes.get(output.getFilter(com.android.build.OutputFile.ABI))
if (baseAbiVersionCode != null) {
output.versionCodeOverride = (100 * variant.versionCode) + baseAbiVersionCode
output.versionCodeOverride = (100 * project.android.defaultConfig.versionCode) + baseAbiVersionCode
} else {
output.versionCodeOverride = 100 * project.android.defaultConfig.versionCode
}
}

View File

@ -15,12 +15,12 @@
<homepage rdf:resource="https://conversations.im/"/>
<download-page rdf:resource="https://play.google.com/store/apps/details?id=eu.siacs.conversations"/>
<bug-database rdf:resource="https://github.com/iNPUTmice/Conversations/issues"/>
<bug-database rdf:resource="https://codeberg.org/iNPUTmice/Conversations/issues"/>
<!-- See https://github.com/ewilderj/doap/issues/53 -->
<developer-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
<support-forum rdf:resource="xmpp:conversations@siacs.conference.eu?join"/>
<license rdf:resource="https://github.com/iNPUTmice/Conversations/blob/master/LICENSE"/>
<license rdf:resource="https://codeberg.org/iNPUTmice/Conversations/src/branch/master/LICENSE"/>
<!-- See https://github.com/ewilderj/doap/issues/49 -->
<language>en</language>
@ -53,8 +53,8 @@
<repository>
<GitRepository>
<browse rdf:resource="https://github.com/iNPUTmice/Conversations"/>
<location rdf:resource="https://github.com/iNPUTmice/Conversations.git"/>
<browse rdf:resource="https://codeberg.org/iNPUTmice/Conversations"/>
<location rdf:resource="https://codeberg.org/iNPUTmice/Conversations.git"/>
</GitRepository>
</repository>

19
docs/user/backup.md Normal file
View File

@ -0,0 +1,19 @@
# Making a backup of Conversations
This tutorial explains how you can backup your Conversations data.
**WARNING**: Do not use the restore backup feature in an attempt to clone (run simultaneously) an installation. Restoring a backup is only meant for migrations or in case youve lost the original device.
1. Make sure that you know the password to your account(s)! You will need it later to decrypt your backup.
2. Deactivate all your account(s): on the chat screen, tap on the three buttons in the upper right, and go to "manage accounts".
3. Go back to Settings, scroll down until you find the option to create a new backup. Tap on that option.
4. Wait, until the notification tells you that the backup is finished.
5. Move the backup to whatever location you feel save with.
Done!
## Further information / troubleshooting
### Unable to decrypt
This backup method will include your OMEMO keys. Due to forward secrecy you will not be able to recover messages sent and received between creating the backup and restoring it. If you have a server side archive (MAM) those messages will be retrieved but displayed as *unable to decrypt*. For technical reasons you might also lose the first message you either sent or receive after the restore; for each conversation you have. This message will then also show up as *unable to decrypt*, but this will automatically recover itself as long as both participants are on Conversations 2.3.11+. Note that this doesnt happen if you just transfer to a new phone and no messages have been exchanged between backup and restore.
In the vast, vast majority of cases you wont have to manually delete OMEMO keys or do anything like that. Conversations only introduced the official backup feature in 2.4.0 after making sure the *OMEMO self healing* mechanism introduced in 2.3.11 works fine.

View File

@ -0,0 +1,42 @@
# Migrating to a new device
This tutorial explains how you can transfer your Conversations data from an old to a new device. It assumes that you do not have Conversations installed on your new device, yet. It basically consists of three steps:
1. Make a backup (old device)
2. Move that backup to your new device
3. Import the backup (new device)
**WARNING**: Do not use the restore backup feature in an attempt to clone (run simultaneously) an installation. Restoring a backup is only meant for migrations or in case youve lost the original device.
## 1. Make a backup (old device)
1. Make sure that you know the password to your account(s)! You will need it later to decrypt your backup.
2. Deactivate all your account(s): on the chat screen, tap on the three buttons in the upper right, and go to "manage accounts".
3. Go back to Settings, scroll down until you find the option to create a new backup. Tap on that option.
4. Wait, until the notification tells you that the backup is finished.
## 2. Move that backup to your new device
1. Locate the backup. You should find it in your Files, either in *Conversations/Backup* or in *Download/Conversations/Backup*. The file is named after your account (*e.g. kim@example.org*). If you have multiple accounts, you find one file for each.
2. Use your USB cable or bluetooth, your Nextcloud or other cloud storage or pretty much anything you want to copy the backup from the old device to the new device.
3. Remember the location you saved your backup to. For instance, you might want to save them to the *Download* folder.
## 3. Import the backup (new device)
1. Install Conversations on your new device.
2. Open Conversations for the first time.
3. Tap on "Use other server"
4. Tap on the three dot menu in the upper right corner and tap on "Import backup"
5. If your backup files are not listed, tap on the cloud symbol in the upper right corner to choose the files from the where you saved them.
6. Enter your account password to decrypt the backup.
7. Remember to activate your account (head back to "manage accounts", see step 1.2).
8. Check if chats work.
Once confirmed that the new device is running fine you can just uninstall the app from the old device.
Note: The backup only contains your text chats and required encryption keys, all the files need to be transferred separately and put on the new device in the same locations.
Done!
## Further information / troubleshooting
### Unable to decrypt
This backup method will include your OMEMO keys. Due to forward secrecy you will not be able to recover messages sent and received between creating the backup and restoring it. If you have a server side archive (MAM) those messages will be retrieved but displayed as *unable to decrypt*. For technical reasons you might also lose the first message you either sent or receive after the restore; for each conversation you have. This message will then also show up as *unable to decrypt*, but this will automatically recover itself as long as both participants are on Conversations 2.3.11+. Note that this doesnt happen if you just transfer to a new phone and no messages have been exchanged between backup and restore.
In the vast, vast majority of cases you wont have to manually delete OMEMO keys or do anything like that. Conversations only introduced the official backup feature in 2.4.0 after making sure the *OMEMO self healing* mechanism introduced in 2.3.11 works fine.

View File

@ -0,0 +1,4 @@
* Einführung einer Experteneinstellung zur Channel-Erkennung auf dem lokalen Server anstelle von search.jabber.network
* Standardmäßig Zustellungshäkchen aktiviert und Einstellung entfernt
* Standardmäßig 'Sendetaste zeigt Status an' aktiviert und die Einstellung entfernt
* Einstellungen für Sicherung und Vordergrunddienst in den Hauptbereich verschoben

View File

@ -0,0 +1,3 @@
* Fehlerkorrektur für Jingle IBB Dateitransfer
* Fehlerkorrektur für wiederholende Korrekturen, welche die Datenbank füllen
* Wechsel zu Last Message Correction v1.1

View File

@ -0,0 +1,4 @@
* Benutzer können ihren eigenen Nicknamen festlegen
* Wiederaufnahme des Downloads von OMEMO-verschlüsselten Dateien
* Channels verwenden jetzt '#' als Symbol im Profilbild
* Quicksy verwendet 'immer' als OMEMO-Verschlüsselungsstandard (versteckt das Schlosssymbol)

View File

@ -0,0 +1 @@
* Unterstützung für ?register und ?register;preauth XMPP URI-Parameter

View File

@ -0,0 +1 @@
* Unterstützung für automatischen Designwechsel in Android 10

View File

@ -0,0 +1,2 @@
* Bereitstellen von PDF-Vorschau ab Android 5+
* Nutzung von 12 byte IVs für OMEMO

View File

@ -0,0 +1,2 @@
* Profilbildauswahl auf einigen Android 10 Geräten korrigiert
* Dateiübertragung für größere Dateien korrigiert

View File

@ -0,0 +1 @@
* Audio-/Videoanrufe (erfordert Serverunterstützung in Form von STUN- und TURN-Servern, die über XEP-0215 ermittelt werden können)

View File

@ -0,0 +1,2 @@
* Akustische Rückmeldungen (Wählen, Anruf begonnen, Anruf beendet) für Audioanrufe
* Problem mit der Wiederholung eines fehlgeschlagenen Videoanrufs behoben

View File

@ -0,0 +1,2 @@
* Schaltfläche zum Umschalten der Kamera während eines Videoanrufs hinzugefügt
* Audioanrufe auf Tablets repariert

View File

@ -0,0 +1,3 @@
* Anrufsymbol nach links verschoben, damit die anderen Symbole der Symbolleiste an einer einheitlichen Stelle bleiben
* Anzeige der Gesprächsdauer bei Sprachanrufen
* Unterbrechung der Verbindung bei A/V-Anrufen (zwei Personen rufen sich gleichzeitig an)

View File

@ -0,0 +1,2 @@
* Überarbeitung der UI für die Anmeldung mit Zertifikat
* Integration der Möglichkeit, Chats ganz oben anzuheften (zu den Favoriten hinzufügen)

View File

@ -0,0 +1,3 @@
* Reduzierung des Echos bei Anrufen auf einigen Geräten
* Anmeldung korrigiert, wenn Passwörter Sonderzeichen enthalten
* Wähl- und Besetztzeichen bei Videoanrufen auf dem Lautsprecher abspielen

View File

@ -0,0 +1 @@
* Möglichkeit zur Aufnahme einer Sprachnachricht, wenn der Anrufer beschäftigt ist

View File

@ -0,0 +1,3 @@
* Hilfe-Schaltfläche anzeigen, wenn A/V-Anruf fehlschlägt
* Einige lästige Abstürze behoben
* Jingle-Verbindungen (Dateiübertragung + Anrufe) mit bloßen JIDs behoben

View File

@ -0,0 +1,2 @@
* Benachrichtigungen wurden unter bestimmten Bedingungen nicht mehr angezeigt
* Kompatibilitätsprobleme und Abstürze im Zusammenhang mit A/V-Anrufen behoben

View File

@ -0,0 +1,3 @@
* Hinzufügen von 'Zurück zum Chat' zum Audio-Anruf-Bildschirm
* Verbesserung der Tastaturkürzel
* Fehlerbehebungen

View File

@ -0,0 +1,3 @@
* Verarbeitung von GPX-Dateien
* Verbesserte Leistung bei der Wiederherstellung von Sicherungen
* Fehlerbehebungen

View File

@ -0,0 +1,4 @@
* Suche in einzelnen Unterhaltungen
* Benutzer werden benachrichtigt, wenn die Nachrichtenzustellung fehlschlägt
* Anzeigenamen (Nicks) von Quicksy-Benutzern über Neustarts hinweg speichern
* Hinzufügen einer Schaltfläche zum Starten von Orbot (Tor) aus der Benachrichtigung heraus, falls erforderlich

View File

@ -0,0 +1,2 @@
* Suche auf Android <= 5 korrigiert
* Optimierung des Speicherverbrauchs

View File

@ -0,0 +1,3 @@
* Bietet einfache Einladungserstellung auf unterstützenden Servern
* GIFs anzeigen, die von Movim gesendet werden
* Profilbilder im Cache speichern

View File

@ -0,0 +1,3 @@
* Behebung von Verbindungsproblemen, wenn verschiedene Konten unterschiedliche SCRAM-Mechanismen verwenden
* Unterstützung für SCRAM-SHA-512 hinzugefügt
* P2P (Jingle) Dateiübertragung mit eigenem Kontakt zulassen

View File

@ -0,0 +1 @@
* Kleinere Stabilitätsverbesserungen für A/V-Anrufe

View File

@ -0,0 +1 @@
* Quicksy: Automatischer Empfang der Bestätigungs-SMS

View File

@ -0,0 +1,3 @@
* Anzeige der Anruftaste für Offline-Kontakte, wenn diese zuvor Unterstützung gemeldet haben
* Zurück-Taste beendet den Anruf nicht mehr, wenn der Anruf gerade läuft
* Fehlerbehebungen

View File

@ -0,0 +1,4 @@
* Möglichkeit zur Auswahl des Klingeltons für eingehende Anrufe
* Behebung der OpenPGP-Schlüsselerkennung für OpenKeychain 5.6+
* Korrekte Verifizierung von Punycode-TLS-Zertifikaten
* Verbesserte Stabilität des RTP-Sitzungsaufbaus (Anrufe)

View File

@ -0,0 +1,2 @@
* Verifizierung von A/V-Anrufen mit bereits bestehenden OMEMO-Sitzungen
* Verbesserung der Kompatibilität mit WebRTC-Implementierungen, die nicht von libwebrtc stammen

View File

@ -0,0 +1,2 @@
* Verschiedene Fehlerbehebungen rund um die Tor-Unterstützung
* Verbesserung der Anrufkompatibilität mit Dino

View File

@ -0,0 +1 @@
* Problembehebung beim HTTP-Upload/Download für Benutzer, die den System-CAs nicht vertrauen

View File

@ -0,0 +1 @@
* Probleme mit "Keine Verbindung" unter Android 7.1 behoben

View File

@ -0,0 +1,2 @@
* Domänenname immer überprüfen. Kein Überschreiben von Benutzern
* Unterstützung der Kontaktlisten-Vorauthentifizierung

View File

@ -0,0 +1 @@
* Kleinere A/V-Verbesserungen

View File

@ -0,0 +1,3 @@
* Schwarze Balken anzeigen, wenn das entfernte Video nicht dem Seitenverhältnis des Bildschirms entspricht
* Verbesserung der Suchleistung
* Einstellung hinzugefügt, um Bildschirmfotos zu verhindern

View File

@ -0,0 +1,2 @@
* Fehler behoben, bei dem einige Videos nicht komprimiert wurden
* Seltenen Absturz beim Öffnen von Benachrichtigungen behoben

View File

@ -0,0 +1,2 @@
* Absturz beim Rendern einiger Anführungszeichen behoben
* Absturz im Willkommensbildschirm behoben

View File

@ -0,0 +1,9 @@
* Abfrage der Bluetooth-Berechtigung bei A/V-Anrufen (nur bei Bluetooth-Headsets erforderlich)
* Fehler beim Anrufen von Movim behoben
* Anzeige eines falschen Profilbilds bei Gruppenchats behoben
* Immer nach dem Opt-Out für Akku-Optimierungen fragen
* Interaktion mit Google Maps Share Location Plugin behoben
* Fußnote bezüglich der Servergebühr entfernt
* Dateien an einem für Android 11 geeigneten Ort speichern
* Anruf nach Netzwechsel erneut versuchen zu verbinden
* JID des Anrufers und JID des Kontos im Bildschirm für eingehende Anrufe anzeigen

View File

@ -0,0 +1,2 @@
* Kleinere Fehlerbehebungen
* Wiederherstellung der Möglichkeit, über JMP und andere Dienste aufzurufen (Playstore-Version)

View File

@ -0,0 +1,5 @@
* Implementierung von Extensible SASL Profile, Bind 2.0 und Fast für schnellere Wiederverbindungen
* Implementierung von Channel Binding
* Möglichkeit von einem Audioanruf zu einem Videoanruf zu wechseln
* Möglichkeit zum Löschen des eigenen Profilbildes hinzugefügt
* Benachrichtigung für verpasste Anrufe hinzugefügt

View File

@ -0,0 +1,2 @@
* Wiederholungsschleife auf Servern beheben, die nur sm:2 unterstützen
* "Umschalten auf Video" nur anzeigen, wenn die Gegenseite Video unterstützt

View File

@ -0,0 +1 @@
* Fehler bei der P2P-Dateiübertragung behoben

View File

@ -0,0 +1,3 @@
* Nachrichten werden bei Verwendung von SASL2 nicht mehr erneut gesendet
* Schwarzes Video zwischen einigen Geräten behoben
* Absturz bei leeren Passwörtern behoben

View File

@ -0,0 +1 @@
* Integration eines UnifiedPush-Verteilers, um Push-Nachrichten für andere UnifiedPush-fähige Apps wie Tusky und Fedilab zu ermöglichen

View File

@ -0,0 +1 @@
* Absturz im UnifiedPush-Verteiler behoben

View File

@ -0,0 +1,39 @@
Einfach zu bedienen, zuverlässig, batteriefreundlich. Mit integrierter Unterstützung für Bilder, Gruppenchats und E2E-Verschlüsselung.
Designprinzipien:
* Möglichst schön und benutzerfreundlich, ohne Abstriche bei der Sicherheit und Privatsphäre
* Auf bestehende, gut etablierte Protokolle zurückgreifen
* Kein Google-Konto oder speziell Google Cloud Messaging (GCM) erforderlich
* So wenig Berechtigungen wie möglich erfordern
Funktionen:
* Ende-zu-Ende-Verschlüsselung entweder mit <a href="http://conversations.im/omemo/">OMEMO</a> oder <a href="http://openpgp.org/about/">OpenPGP</a>
* Senden und Empfangen von Bildern
* Verschlüsselte Audio- und Videoanrufe (DTLS-SRTP)
* Intuitives UI, das den Android Design Richtlinien folgt
* Bilder / Profilbilder für deine Kontakte
* Synchronisation mit Desktop-Client
* Konferenzen (mit Unterstützung für Lesezeichen)
* Adressbucheinbindung
* Mehrere Konten / einheitlicher Posteingang
* Sehr geringe Auswirkungen auf die Akkulaufzeit
Mit Conversations ist es sehr einfach, ein Konto auf dem kostenlosen conversations.im-Server zu erstellen. Dennoch funktioniert Conversations auch mit jedem anderen XMPP-Server. Zahlreiche XMPP-Server werden von Freiwilligen betrieben und sind kostenlos.
XMPP-Funktionen:
Conversations funktioniert mit jedem XMPP-Server. XMPP ist jedoch ein erweiterbares Protokoll. Diese Erweiterungen sind ebenfalls in sogenannten XEP's standardisiert. Conversations unterstützt einige davon, um die Benutzerfreundlichkeit zu verbessern. Es besteht die Möglichkeit, dass Ihr aktueller XMPP-Server diese Erweiterungen nicht unterstützt. Um Conversations optimal nutzen zu können, solltest du daher entweder zu einem XMPP-Server wechseln, der dies unterstützt, oder - noch besser - einen eigenen XMPP-Server für dich und deine Freunde betreiben.
Diese XEPs sind es derzeit:
* XEP-0065: SOCKS5 Bytestreams (oder mod_proxy65). Wird für die Übertragung von Dateien verwendet, wenn sich beide Parteien hinter einer Firewall (NAT) befinden.
* XEP-0163: Personal Eventing Protocol für Profilbilder
* XEP-0191: Mit dem Blockierungsbefehl kannst du Spammer auf eine schwarze Liste setzen oder Kontakte blockieren, ohne sie aus deiner Liste zu entfernen.
* XEP-0198: Stream Management ermöglicht es XMPP, kleinere Netzwerkausfälle und Änderungen der zugrunde liegenden TCP-Verbindung zu überstehen.
* XEP-0280: Message Carbons, das die von dir gesendeten Nachrichten automatisch mit deinem Desktop-Client synchronisiert und es dir somit ermöglicht, innerhalb einer Unterhaltung nahtlos von deinem mobilen Client zu deinem Desktop-Client und zurück zu wechseln.
* XEP-0237: Roster Versioning hauptsächlich, um Bandbreite bei schlechten mobilen Verbindungen zu sparen
* XEP-0313: Nachrichtenarchiv-Management synchronisiert den Nachrichtenverlauf mit dem Server. Aufholen von Nachrichten, die gesendet wurden, während Conversations offline war.
* XEP-0352: Client State Indication lässt den Server wissen, ob Conversations im Hintergrund läuft oder nicht. Ermöglicht es dem Server, Bandbreite zu sparen, indem er unwichtige Pakete zurückhält.
* XEP-0363: HTTP File Upload ermöglicht den Austausch von Dateien in Konferenzen und mit Offline-Kontakten. Erfordert eine zusätzliche Komponente auf deinem Server.

View File

@ -0,0 +1 @@
Verschlüsselter, benutzerfreundlicher XMPP-Instant-Messenger für dein Smartphone

View File

@ -0,0 +1,2 @@
* Fix crash when rendering some quotes
* Fix crash in welcome screen

View File

@ -0,0 +1,11 @@
Version 2.10.9
* Ask for Bluetooth permissions when making A/V calls (You can reject this if you dont use Bluetooth headsets)
* Fix bug when calling Movim
* Fix wrong avatar being shown for group chats
* Always ask for battery optimizations opt-out
* Set local only flag on 'x connected accounts' notifications
* Fix interaction with Google Maps Share Location Plugin
* Remove footnote with regards to server fee
* Store files in location appropriate for Android 11
* Attempt to reconnect call after network switch
* Show caller JID and account JID in incoming call screen

View File

@ -0,0 +1,2 @@
* Minor bug fixes
* Restore ability to call out via JMP and other services (Playstore version)

View File

@ -0,0 +1,5 @@
* Implement Extensible SASL Profile, Bind 2.0 and Fast for faster reconnects
* Implement Channel Binding
* Add ability to switch from audio call to video call
* Add ability to delete own avatar
* Add notification for missed calls

View File

@ -0,0 +1,2 @@
* Fix resend loop on servers that support only sm:2
* Show 'Switch to video' only if other party supports video

View File

@ -0,0 +1 @@
* Fixed regression in P2P file transfer

View File

@ -0,0 +1,3 @@
* Fix messages getting resend when using SASL2
* Fix black video between some devices
* Fix crash on empty passwords

View File

@ -0,0 +1 @@
* Integrate UnifiedPush Distributor to facilitate push messages to other UnifiedPush enabled apps like Tusky and Fedilab

View File

@ -0,0 +1 @@
* Fix crash in UnifiedPush Distributor

View File

@ -0,0 +1,39 @@
Facile da usare, affidabile, leggero sulla batteria. Con supporto integrato per immagini, chat di gruppo e crittografia e2e.
Principi di design:
* Essere il più bello e facile da usare possibile senza sacrificare la sicurezza o la privacy
* Affidarsi a protocolli esistenti ben affermati
* Non richiedere un account Google o nello specifico Google Cloud Messaging (GCM)
* Richiedere il minor numero di autorizzazioni possibile
Caratteristiche:
* Crittografia end-to-end con <a href="http://conversations.im/omemo/">OMEMO</a> o <a href="http://openpgp.org/about/">OpenPGP</a>
* Invio e ricezione di immagini
* Chiamate audio e video crittografate (DTLS-SRTP)
* Interfaccia utente intuitiva che segue le linee guida del design di Android
* Immagini / Avatar per i tuoi contatti
* Sincronizzazione con client desktop
* Conferenze (con supporto ai segnalibri)
* Integrazione della rubrica
* Profili multipli / messaggi unificati
* Consumo molto basso della batteria
Conversations rende veramente facile creare un profilo sul server gratuito conversations.im. Tuttavia Conversations funzionerà anche con qualsiasi altro server XMPP. Molti server XMPP vengono gestiti da volontari e sono gratuiti.
Caratteristiche di XMPP:
Conversations funziona con tutti i server XMPP. Tuttavia XMPP è un protocollo estensibile. Anche queste estensioni sono standardizzate, con il nome XEP. Conversations supporta alcune di esse per rendere migliore l'esperienza utente. È possibile che il server XMPP che stai usando non supporti queste estensioni. Perciò, per ottenere il meglio da Conversations dovresti considerare di passare ad un server XMPP che le supporta o, ancora meglio, installarne uno tuo per te e i tuoi amici.
Queste XEP sono, ad oggi:
* XEP-0065: SOCKS5 Bytestreams (o mod_proxy65). Usata per trasferire file se entrambe le parti sono dietro un firewall (NAT).
* XEP-0163: Personal Eventing Protocol. Per gli avatar.
* XEP-0191: Blocking command. Ti consente di bloccare lo spam o i contatti senza rimuoverli dal tuo elenco.
* XEP-0198: Stream Management. Consente a XMPP di resistere a brevi disconnessioni e cambi della connessione TCP sottostante.
* XEP-0280: Message Carbons. Sincronizza automaticamente i messaggi che invii al client desktop, quindi ti consente di passare senza problemi dal mobile al desktop e viceversa con un'unica conversazione.
* XEP-0237: Roster Versioning. Principalmente per risparmiare banda di rete in connessioni mobili deboli
* XEP-0313: Message Archive Management. Sincronizza la cronologia dei messaggi con il server. Recupera i messaggi che sono stati inviati mentre Conversations era offline.
* XEP-0352: Client State Indication. Fa sapere al server se Conversations è in secondo piano o no. Permette al server di risparmiare banda di rete trattenendo i pacchetti non importanti.
* XEP-0363: HTTP File Upload. Ti consente di condividere file nelle conferenze e con i contatti offline. Richiede un componente aggiuntivo sul tuo server.

View File

@ -0,0 +1 @@
Client di messaggistica XMPP facile e criptato, per il tuo dispositivo mobile

View File

@ -0,0 +1 @@
* Naprawiono regresję w przesyłaniu plików P2P

View File

@ -0,0 +1,3 @@
* Naprawiono ponowne wysyłanie wiadomości podczas używania SASL2
* Naprawiono czarny obraz wideo pomiędzy niektórymi urządzeniami
* Naprawiono awarię przy użyciu pustych haseł

View File

@ -0,0 +1 @@
* Zintegrowano dystrybutora UnifiedPush aby ułatwić przesyłanie wiadomości push do innych aplikacji obsługujących UnifiedPush, takich jak Tusky czy Fedilab

View File

@ -0,0 +1 @@
* Naprawiono awarię w dystrybutorze UnifiedPush

View File

@ -0,0 +1,39 @@
Łatwy w użyciu, godny zaufania, przyjazny dla baterii. Wbudowane wsparcie dla obrazków, rozmów grupowych i szyfrowania od nadawcy do odbiorcy.
Zasady projektu:
* ma być tak ładny i prosty w użyciu jak to możliwe bez uszczerbku na bezpieczeństwie lub prywatności;
* używa istniejących, dobrze znanych protokołów;
* nie wymaga Konta Google ani, w szczególności, Google Cloud Messaging (GCM);
* wymaga tylko naprawdę koniecznych uprawnień.
Funkcjonalność:
* szyfrowanie od nadawcy do odbiorcy (E2EE) z użyciem <a href="http://conversations.im/omemo/">OMEMO</a> lub <a href="http://openpgp.org/about/">OpenPGP</a>;
* wysyłanie i odbieranie obrazków;
* szyfrowane rozmowy głosowe i wideo;
* intuicyjny interfejs użytkownika, zgodny z wytycznymi Android Design;
* obrazki/awatary dla Twoich kontaktów;
* synchronizacja z klientem desktopowym;
* konferencje (z obsługą zakładek);
* integracja z książką adresową;
* wiele kont, zintegrowana skrzynka odbiorcza;
* bardzo ograniczony wpływ na zużycie baterii.
Conversations bardzo ułatwia rejestrację konta na darmowym serwerze conversations.im, jednak będzie działać również z każdym innym serwerem XMPP. Wiele serwerów jest uruchamianych przez wolontariuszy i są dostępne bez opłat.
Funkcjonalność XMPP:
Conversations działa z każdym dostępnym serwerem XMPP, jednak XMPP to rozszerzalny protokół. Rozszerzenia są ustandaryzowane w tak zwanych XEP. Conversations obsługuje sporo z nich, dzięki czemu można go przyjemniej używać. Jest jednak możliwość, że Twój obecny serwer nie obsługuje tych rozszerzeń. Aby wyciągnąć jak najwięcej z Conversations rozważ przeniesienie się na taki serwer, który je obsługuje, lub — jeszcze lepiej — uruchom własny serwer dla Ciebie i Twoich przyjaciół.
Obecnie są obsługiwane następujące rozszerzenia:
* XEP-0065: SOCKS5 Bytestreams (lub mod_proxy65). Będzie używany do przesyłania plików jeżeli obie strony znajdują się za zaporą (NAT);
* XEP-0163: Personal Eventing Protocol dla awatarów;
* XEP-0191: Blocking Command umożliwia ochronę przed spamerami lub blokowanie bez usuwanie ich z rostera;
* XEP-0198: Stream Management pozwala na przetrwanie krótkich braków połączenia z siecią oraz zmian używanego połączenia TCP;
* XEP-0280: Message Carbons automatycznie synchronizuje wysyłane wiadomości z klientem desktopowym i w ten sposób pozwala na proste używanie zarówno klienta mobilnego, jak i desktopowego, w jednej konwersacji;
* XEP-0237: Roster Versioning, dzięki któremu można ograniczyć używanie sieci na słabych połączeniach komórkowych;
* XEP-0313: Message Archive Management synchronizuje historię wiadomości z serwerem. Bądź na bieżąco z wiadomości wysłanymi gdy Conversations był rozłączony;
* XEP-0352: Client State Indication informuje serwer o tym, czy Conversations działa w tle. Pozwala to na oszczędzanie łącza przez wstrzymywanie mniej ważnych komunikatów;
* XEP-0363: HTTP File Upload umożliwia udostępnianie plików w konferencjach oraz rozłączonym kontaktom. Wymaga dodatkowego komponentu na Twoim serwerze.

View File

@ -0,0 +1 @@
Szyfrowany, prosty w użyciu komunikator XMPP dla Twojego urządzenia mobilnego

View File

@ -0,0 +1 @@
Client de mesagerie XMPP ușor de folosit, criptat, și optimizat pentru mobile

View File

@ -0,0 +1,4 @@
* Sjellje për herë të parë rregullimi ekspertësh për të kryer pikasje kanalesh në shërbyes vendor, në vend se në search.jabber.network
* Aktivizim, si parazgjedhje, i shenjave të për dërgim dhe heqje e rregullimit
* Aktivizim, si parazgjedhje, i “Send button indicates status” dhe heqje e rregullimit
* Kalim i rregullimit “Shërbim Move Backup and Foreground Service” te skena kryesore

View File

@ -0,0 +1,3 @@
* ndreqje për shpërngulje kartelash Jingle IBB
* ndreqje për saktësime të përsëritura që zënë vend te baza e të dhënave
* u kalua te Last Message Correction v1.1

View File

@ -0,0 +1,4 @@
* lejim i përdoruesve të caktojnë nofkën e vet
* rimarrje shkarkimi kartela të fshehtëzuara me OMEMO
* Kanali tani përdor '#' si simbol në një avatar
* Quicksy përdor “përherë”, si parazgjedhje për fshehtëzim OMEMO (e fsheh ikonën e kyçjes)

View File

@ -0,0 +1 @@
* Mbulim për parametra URI XMPP ?register dher ?register;preauth

View File

@ -0,0 +1 @@
* Mbulim për ndërrim të automatizuar teme në Android 10

View File

@ -0,0 +1,2 @@
* Sjellje e paraparjes për PDF në Android 5+
* Përdor 12 byte IV për OMEMO

View File

@ -0,0 +1,2 @@
* Ndreqje përzgjedhjesh avatari në disa pajisje Android 10
* Ndreqje shpërnguljesh kartelash për kartela të mëdha

View File

@ -0,0 +1 @@
* Thirrje audio/video (Lyp mbulim nga shërbyesi në formë shërbyesish STUN dhe TURN të zbulueshëm përmes XEP-0215)

View File

@ -0,0 +1,2 @@
* Sinjalizim i dëgjueshëm (rënie të zilesh, për fillim thirrjeje, për mbarim thirrjeje) për thirrje zanore.
* U ndreq problem me dështim riprovimi thirrjeje video

View File

@ -0,0 +1,2 @@
* Shtim butoni për të ndërruar kamerën gjatë thirrjeje video
* U ndreqën thirrje me zë në tablete

View File

@ -0,0 +1,3 @@
* Kalim i ikonës së thirrjes në të majtë, për të mbajtur ikonat e paneleve të tjerë në një vend të qëndrueshëm
* Shfaq kohëzgjatje thirrjeje gjatë thirrjesh audio
* Ndërprerje komunikimi për thirrje A/V (të njëjtët dy persona që i bëjnë thirrje njëri-tjetrit në të njëjtën kohë)

View File

@ -0,0 +1,2 @@
* Ripunim i ndërfaqes për “Hyni me dëshmi”
* Shtim aftësie për të fiksuar fjalosje në krye (shtoje te të parapëlqyer)

View File

@ -0,0 +1,3 @@
* Zvogëlim jehone gjatë thirrjesh në disa pajisje
* Ndreqje hyrjeje, kur fjalëkalimet përmbajnë shenja speciale
* Luajtje tonesh për “rënie numri” dhe “i zënë” në altoparlant, gjatë thirrjesh video

View File

@ -0,0 +1 @@
* Ofrim regjistrimi mesazhi zanor, kur i thirruri është i zënë

View File

@ -0,0 +1,3 @@
* Shfaqje butoni ndihme, nëse thirrja A/V dështon
* U ndreqën disa vithisje të bezdisshme
* U ndreqën lidhje Jingle (shpërngulje kartelash + thirrje) me JID-ra të zhveshura

View File

@ -0,0 +1,2 @@
* U ndreq mosshfaqje njoftimesh nën disa kushte
* U ndreqën probleme përputhshmërie dhe vithisje të lidhura me thirrje A/V

View File

@ -0,0 +1,3 @@
* shtim “Kthehuni te fjalosje”, te skena e thirrjeve audio
* Përmirësim shkurtoresh tastiere
* ndreqje të metash

View File

@ -0,0 +1,3 @@
* Shtim aftësie për trajtim kartelash GPX
* Përmirësim funksionimi për rikthim me kopjeruajtje
* ndreqje të metash

View File

@ -0,0 +1,4 @@
* Kërkim te biseda individuale
* Njoftim përdoruesish, nëse dështon dërgimi i mesazhit
* Mbajtje mend i emrave në ekran (nofkave) prej përdoruesish të Quicksy-t nga një rinisje në tjetrën
* Shtim butoni për nisje të Orbot-it (Tor) që nga njoftim, në qoftë e nevojshme

View File

@ -0,0 +1,2 @@
* u ndreq kërkim në Android <= 5
* optimizim konsumi kujtese

View File

@ -0,0 +1,3 @@
* Ofrim prodhimi Ftese të Kollajtë, për shërbyes që e mbulojnë
* Shfaqje GIF-esh dërguar prej Movim
* depozitim avatarësh në fshehtinë

View File

@ -0,0 +1,3 @@
* U ndreqën probleme lidhjeje, kur llogari të ndryshme përdornin mekanizma të ndryshëm SCRAM
* Shtim mbulimi për SCRAM-SHA-512
* Lejim shpërngulje kartelash P2P (Jingle) me kontakt veten

View File

@ -0,0 +1 @@
* përmirësime të vockla qëndrueshmërie për thirrje A/V

View File

@ -0,0 +1 @@
* Quicksy: Marrje e automatizuar SMS-je verifikimi

View File

@ -0,0 +1,3 @@
* Shfaq buton thirrjeje, për kontakte jo në linjë, nëse kanë deklaruar më parë mbulim të kësaj
* Butoni “mbrapsht” nuk përfundon më thirrjen, kur thirrja është e lidhur
* ndreqje të metash

View File

@ -0,0 +1,4 @@
* Aftësi për të përzgjedhur zilen për thirrje ardhëse
* Ndreqje pikasjeje ID-je kyçi OpenPGP për OpenKeychain 5.6+
* Verifikim si duhet dëshmish TLS punycode
* Përmirësim qëndrueshmërie vendosjeje sesioni RTP (thirrje)

View File

@ -0,0 +1,2 @@
* Verifikim thirrjesh A/V me sesioni OMEMO që ekzistojnë që më parë
* Përmirësim përputhshmërie me sendërtime WebRTC jo të bazuara libwebrt

View File

@ -0,0 +1,2 @@
* Ndreqje të metash të ndryshme që lidhen me mbulim Tor-i
* Përmirësim përputhshmërie thirrjesh me Dino

View File

@ -0,0 +1 @@
* Ndreqje ngarkimesh/shkarkime HTTP për përdorues që nuk besojnë AD-ra sistemi

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