diff --git a/.github/workflows/triage-move-labelled.yml b/.github/workflows/triage-move-labelled.yml index e5799dc61..f45257f26 100644 --- a/.github/workflows/triage-move-labelled.yml +++ b/.github/workflows/triage-move-labelled.yml @@ -44,14 +44,7 @@ jobs: name: P1 X-Needs-Design to Design project board runs-on: ubuntu-latest if: > - contains(github.event.issue.labels.*.name, 'X-Needs-Design') && - (contains(github.event.issue.labels.*.name, 'S-Critical') && - (contains(github.event.issue.labels.*.name, 'O-Frequent') || - contains(github.event.issue.labels.*.name, 'O-Occasional')) || - contains(github.event.issue.labels.*.name, 'S-Major') && - contains(github.event.issue.labels.*.name, 'O-Frequent') || - contains(github.event.issue.labels.*.name, 'A11y') && - contains(github.event.issue.labels.*.name, 'O-Frequent')) + contains(github.event.issue.labels.*.name, 'X-Needs-Design') steps: - uses: octokit/graphql-action@v2.x id: add_to_project diff --git a/CHANGES.md b/CHANGES.md index d8d1a5abf..9eec0ef00 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,41 @@ +## Changes in 1.8.24 (2022-07-26) + +✨ Features + +- Enable the new authentication and personalisation flows in the onboarding coordinator. ([#5151](https://github.com/vector-im/element-ios/issues/5151)) +- Read tile server URL from .well-known (PSG-592) ([#6472](https://github.com/vector-im/element-ios/issues/6472)) + +🙌 Improvements + +- Upgrade MatrixSDK version ([v0.23.13](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.23.13)). +- Replaces the usage of ffmpeg in the app again(Change was previously reverted). ([#6419](https://github.com/vector-im/element-ios/issues/6419)) +- Location sharing: Handle live location sharing start event reply in the timeline. ([#6423](https://github.com/vector-im/element-ios/issues/6423)) +- Location sharing: Show map credits on live location timeline tile only when map is shown. ([#6448](https://github.com/vector-im/element-ios/issues/6448)) +- Location sharing: Handle live location sharing delete in the timeline. ([#6470](https://github.com/vector-im/element-ios/issues/6470)) +- Location sharing: Display clearer error message when the user doesn't have permission to share location in the room. ([#6477](https://github.com/vector-im/element-ios/issues/6477)) + +🐛 Bugfixes + +- Registration: Trim any whitespace away when verifying the user's email address. ([#2594](https://github.com/vector-im/element-ios/issues/2594)) +- AuthenticationViewController is now correctly configured for a deep link if the link is opened before the view gets shown. ([#6425](https://github.com/vector-im/element-ios/issues/6425)) + +🧱 Build + +- Fix UI tests failing on CI but not being reported by prefixing all tests with `test`. ([#6432](https://github.com/vector-im/element-ios/issues/6432)) + +🚧 In development 🚧 + +- Update strings for FTUE authentication flow following final review. ([#6427](https://github.com/vector-im/element-ios/issues/6427)) +- Check for a phone number during login and send an MSISDN when using the new flow. ([#6428](https://github.com/vector-im/element-ios/issues/6428)) +- Fix ReCaptcha form sometimes being slow to react to taps in the new flow. ([#6429](https://github.com/vector-im/element-ios/issues/6429)) +- When entering a full MXID during registration on the new flow, update the homeserver to match. ([#6430](https://github.com/vector-im/element-ios/issues/6430)) +- Always perform the dummy stage in the registration wizard, irregardless of whether it is mandatory or optional. ([#6459](https://github.com/vector-im/element-ios/issues/6459)) + +Others + +- Crypto: Convert verification request and transaction to protocols ([#6444](https://github.com/vector-im/element-ios/pull/6444)) + + ## Changes in 1.8.23 (2022-07-15) 🙌 Improvements diff --git a/Config/AppVersion.xcconfig b/Config/AppVersion.xcconfig index 35bf08ea9..d15503f1b 100644 --- a/Config/AppVersion.xcconfig +++ b/Config/AppVersion.xcconfig @@ -15,5 +15,5 @@ // // Version -MARKETING_VERSION = 1.8.23 -CURRENT_PROJECT_VERSION = 1.8.23 +MARKETING_VERSION = 1.8.24 +CURRENT_PROJECT_VERSION = 1.8.24 diff --git a/Config/BuildSettings.swift b/Config/BuildSettings.swift index 31f0c737a..60d7b7528 100644 --- a/Config/BuildSettings.swift +++ b/Config/BuildSettings.swift @@ -384,8 +384,8 @@ final class BuildSettings: NSObject { static let authEnableRefreshTokens = false // MARK: - Onboarding - static let onboardingShowAccountPersonalization = false - static let onboardingEnableNewAuthenticationFlow = false + static let onboardingShowAccountPersonalization = true + static let onboardingEnableNewAuthenticationFlow = true // MARK: - Unified Search static let unifiedSearchScreenShowPublicDirectory = true @@ -402,7 +402,8 @@ final class BuildSettings: NSObject { // MARK: - Location Sharing - static let tileServerMapStyleURL = URL(string: "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx")! + /// Overwritten by the home server's .well-known configuration (if any exists) + static let defaultTileServerMapStyleURL = URL(string: "https://api.maptiler.com/maps/streets/style.json?key=fU3vlMsMn4Jb6dnEIFsx")! static let locationSharingEnabled = true diff --git a/Podfile b/Podfile index 0ef6e92ea..fdaa63bdf 100644 --- a/Podfile +++ b/Podfile @@ -16,7 +16,7 @@ use_frameworks! # - `{ :specHash => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for MatrixSDK repo. Used by Fastfile during CI # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixSDKVersion = '= 0.23.12' +$matrixSDKVersion = '= 0.23.13' # $matrixSDKVersion = :local # $matrixSDKVersion = { :branch => 'develop'} # $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } } diff --git a/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved index 7cce2fd2b..899701b2f 100644 --- a/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Riot.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -27,6 +27,24 @@ "version" : "5.12.2" } }, + { + "identity" : "ogg-swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vector-im/ogg-swift.git", + "state" : { + "revision" : "9d82ed838404f10b607a1a1689f404563e9115c3", + "version" : "0.8.3" + } + }, + { + "identity" : "opus-swift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vector-im/opus-swift", + "state" : { + "revision" : "11f1887767cbc87c4b64b789ee830b779cc744cb", + "version" : "0.8.4" + } + }, { "identity" : "swift-collections", "kind" : "remoteSourceControl", @@ -36,6 +54,15 @@ "version" : "1.0.2" } }, + { + "identity" : "swift-ogg", + "kind" : "remoteSourceControl", + "location" : "https://github.com/vector-im/swift-ogg", + "state" : { + "branch" : "main", + "revision" : "0ffad3f7b45a6a4760db090d503b00f094bbecc0" + } + }, { "identity" : "swiftui-introspect", "kind" : "remoteSourceControl", diff --git a/Riot/Assets/en.lproj/Untranslated.strings b/Riot/Assets/en.lproj/Untranslated.strings index b87ff55be..9ff00a53d 100644 --- a/Riot/Assets/en.lproj/Untranslated.strings +++ b/Riot/Assets/en.lproj/Untranslated.strings @@ -19,72 +19,3 @@ // MARK: Onboarding Personalization WIP "image_picker_action_files" = "Choose from files"; - -// MARK: Onboarding Authentication WIP -"authentication_registration_title" = "Create your account"; -"authentication_registration_message" = "We’ll need some info to get you set up."; -"authentication_registration_username" = "Username"; -"authentication_registration_username_footer" = "You can’t change this later"; -"authentication_registration_password_footer" = "Must be 8 characters or more"; - -"authentication_login_title" = "Welcome back!"; -"authentication_login_username" = "Username or Email"; -"authentication_login_forgot_password" = "Forgot password"; - -"authentication_server_info_title" = "Choose your server to store your data"; -"authentication_server_info_matrix_description" = "Join millions for free on the largest public server"; - -"authentication_server_selection_title" = "Choose your server"; -"authentication_server_selection_message" = "What is the address of your server? A server is like a home for all your data."; -"authentication_server_selection_server_url" = "Server URL"; -"authentication_server_selection_server_footer" = "You can only connect to a server that has already been set up"; -"authentication_server_selection_generic_error" = "Cannot find a server at this URL, please check it is correct."; - -"authentication_cancel_flow_confirmation_message" = "Your account is not created yet. Stop the registration process?"; - -"authentication_verify_email_input_title" = "Enter your email address"; -"authentication_verify_email_input_message" = "This will help verify your account and enables password recovery."; -"authentication_verify_email_text_field_placeholder" = "Email Address"; -"authentication_verify_email_waiting_title" = "Check your email to verify."; -"authentication_verify_email_waiting_message" = "To confirm your email address, tap the button in the email we just sent to %@"; -"authentication_verify_email_waiting_hint" = "Did not receive an email?"; -"authentication_verify_email_waiting_button" = "Resend email"; - -"authentication_forgot_password_input_title" = "Enter your email address"; -"authentication_forgot_password_input_message" = "We will send you a verification link."; -"authentication_forgot_password_text_field_placeholder" = "Email Address"; -"authentication_forgot_password_waiting_title" = "Check your email"; -"authentication_forgot_password_waiting_message" = "To confirm your email address, tap the button in the email we just sent to %@"; -"authentication_forgot_password_waiting_hint" = "Did not receive an email?"; -"authentication_forgot_password_waiting_button" = "Resend email"; - -"authentication_choose_password_input_title" = "Choose a new password"; -"authentication_choose_password_input_message" = "Make sure it’s 8 characters or more."; -"authentication_choose_password_text_field_placeholder" = "New Password"; -"authentication_choose_password_signout_all_devices" = "Sign out of all devices"; -"authentication_choose_password_submit_button" = "Reset Password"; - -"authentication_verify_msisdn_input_title" = "Enter your phone number"; -"authentication_verify_msisdn_input_message" = "This will help verify your account and enables password recovery."; -"authentication_verify_msisdn_text_field_placeholder" = "Phone Number"; -"authentication_verify_msisdn_otp_text_field_placeholder" = "Verification Code"; -"authentication_verify_msisdn_waiting_title" = "Confirm your phone number"; -"authentication_verify_msisdn_waiting_message" = "We just sent a code to %@. Enter it below to verify it’s you."; -"authentication_verify_msisdn_waiting_button" = "Resend code"; -"authentication_verify_msisdn_invalid_phone_number" = "Invalid phone number"; - -"authentication_terms_title" = "Privacy policy"; -"authentication_terms_message" = "Please read through T&C. You must accept in order to continue."; -"authentication_terms_policy_url_error" = "Unable to find the selected policy. Please try again later."; - -"authentication_recaptcha_message" = "This server would like to make sure you are not a robot"; - -// MARK: Password Validation -"password_validation_info_header" = "Your password should meet the criteria below:"; -"password_validation_error_header" = "Given password does not meet the criteria below:"; -"password_validation_error_min_length" = "At least %d characters."; -"password_validation_error_max_length" = "Not exceed %d characters."; -"password_validation_error_contain_lowercase_letter" = "Contain a lower-case letter."; -"password_validation_error_contain_uppercase_letter" = "Contain an upper-case letter."; -"password_validation_error_contain_number" = "Contain a number."; -"password_validation_error_contain_symbol" = "Contain a symbol."; diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 1a5e69c89..f58e68824 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -96,7 +96,7 @@ "accessibility_checkbox_label" = "checkbox"; "accessibility_button_label" = "button"; -// Onboarding +// MARK: Onboarding "onboarding_splash_register_button_title" = "Create account"; "onboarding_splash_login_button_title" = "I already have an account"; "onboarding_splash_page_1_title" = "Own your conversations."; @@ -109,19 +109,19 @@ "onboarding_splash_page_4_message" = "Element is also great for the workplace. It’s trusted by the world’s most secure organisations."; "onboarding_use_case_title" = "Who will you chat to the most?"; -"onboarding_use_case_message" = "We’ll help you get connected."; +"onboarding_use_case_message" = "We’ll help you get connected"; "onboarding_use_case_personal_messaging" = "Friends and family"; "onboarding_use_case_work_messaging" = "Teams"; "onboarding_use_case_community_messaging" = "Communities"; /* The placeholder string contains onboarding_use_case_skip_button as a tappable action */ -"onboarding_use_case_not_sure_yet" = "Not sure yet? You can %@"; -"onboarding_use_case_skip_button" = "skip this question"; +"onboarding_use_case_not_sure_yet" = "Not sure yet? %@"; +"onboarding_use_case_skip_button" = "Skip this question"; "onboarding_use_case_existing_server_message" = "Looking to join an existing server?"; "onboarding_use_case_existing_server_button" = "Connect to server"; "onboarding_congratulations_title" = "Congratulations!"; /* The placeholder string contains the user's matrix ID */ -"onboarding_congratulations_message" = "Your account %@ has been created."; +"onboarding_congratulations_message" = "Your account %@ has been created"; "onboarding_congratulations_personalize_button" = "Personalise profile"; "onboarding_congratulations_home_button" = "Take me home"; @@ -135,14 +135,95 @@ "onboarding_display_name_max_length" = "Your display name must be less than 256 characters"; "onboarding_avatar_title" = "Add a profile picture"; -"onboarding_avatar_message" = "You can change this anytime."; +"onboarding_avatar_message" = "Time to put a face to the name"; "onboarding_avatar_accessibility_label" = "Profile picture"; -"onboarding_celebration_title" = "You’re all set!"; -"onboarding_celebration_message" = "Your preferences have been saved."; +"onboarding_celebration_title" = "Looking good!"; +"onboarding_celebration_message" = "Head to settings anytime to update your profile"; "onboarding_celebration_button" = "Let's go"; -// Authentication +// MARK: Authentication +"authentication_registration_title" = "Create your account"; +"authentication_registration_username" = "Username"; +"authentication_registration_username_footer" = "You can’t change this later"; +/* The placeholder will show the full Matrix ID that has been entered. */ +"authentication_registration_username_footer_available" = "Others can discover you %@"; +"authentication_registration_password_footer" = "Must be 8 characters or more"; +"authentication_server_info_title" = "Where your conversations will live"; + +"authentication_login_title" = "Welcome back!"; +"authentication_login_username" = "Username / Email / Phone"; +"authentication_login_forgot_password" = "Forgot password"; +"authentication_server_info_title_login" = "Where your conversations live"; + +"authentication_server_selection_login_title" = "Connect to homeserver"; +"authentication_server_selection_login_message" = "What is the address of your server?"; +"authentication_server_selection_register_title" = "Select your homeserver"; +"authentication_server_selection_register_message" = "What is the address of your server? This is like a home for all your data"; +"authentication_server_selection_server_url" = "Homeserver URL"; +"authentication_server_selection_generic_error" = "Cannot find a server at this URL, please check it is correct."; + +"authentication_cancel_flow_confirmation_message" = "Your account is not created yet. Stop the registration process?"; + +"authentication_verify_email_input_title" = "Enter your email"; +/* The placeholder will show the homeserver's domain */ +"authentication_verify_email_input_message" = "%@ needs to verify your account"; +"authentication_verify_email_text_field_placeholder" = "Email"; +"authentication_verify_email_waiting_title" = "Verify your email."; +/* The placeholder will show the email address that was entered. */ +"authentication_verify_email_waiting_message" = "Follow the instructions sent to %@"; +"authentication_verify_email_waiting_hint" = "Did not receive an email?"; +"authentication_verify_email_waiting_button" = "Resend email"; + +"authentication_forgot_password_input_title" = "Enter your email"; +/* The placeholder will show the homeserver's domain */ +"authentication_forgot_password_input_message" = "%@ will send you a verification link"; +"authentication_forgot_password_text_field_placeholder" = "Email"; +"authentication_forgot_password_waiting_title" = "Check your email."; +/* The placeholder will show the email address that was entered. */ +"authentication_forgot_password_waiting_message" = "Follow the instructions sent to %@"; +"authentication_forgot_password_waiting_button" = "Resend email"; + +"authentication_choose_password_input_title" = "Choose a new password"; +"authentication_choose_password_input_message" = "Make sure it’s 8 characters or more"; +"authentication_choose_password_text_field_placeholder" = "New Password"; +"authentication_choose_password_signout_all_devices" = "Sign out of all devices"; +"authentication_choose_password_submit_button" = "Reset Password"; +"authentication_choose_password_not_verified_title" = "Email not verified"; +"authentication_choose_password_not_verified_message" = "Check your inbox"; + +"authentication_verify_msisdn_input_title" = "Enter your phone number"; +/* The placeholder will show the homeserver's domain */ +"authentication_verify_msisdn_input_message" = "%@ needs to verify your account"; +"authentication_verify_msisdn_text_field_placeholder" = "Phone Number"; +"authentication_verify_msisdn_otp_text_field_placeholder" = "Confirmation Code"; +"authentication_verify_msisdn_waiting_title" = "Verify your phone number"; +/* The placeholder will show the phone number that was entered. */ +"authentication_verify_msisdn_waiting_message" = "A code was sent to %@"; +"authentication_verify_msisdn_waiting_button" = "Resend code"; +"authentication_verify_msisdn_invalid_phone_number" = "Invalid phone number"; + +"authentication_terms_title" = "Server policies"; +/* The placeholder will show the homeserver's domain */ +"authentication_terms_message" = "Please read %@’s terms and policies"; +"authentication_terms_policy_url_error" = "Unable to find the selected policy. Please try again later."; + +"authentication_recaptcha_title" = "Are you a human?"; + +// MARK: Password Validation +"password_validation_info_header" = "Your password should meet the criteria below:"; +"password_validation_error_header" = "Given password does not meet the criteria below:"; +/* The placeholder will show a number */ +"password_validation_error_min_length" = "At least %d characters."; +/* The placeholder will show a number */ +"password_validation_error_max_length" = "Not exceed %d characters."; +"password_validation_error_contain_lowercase_letter" = "Contain a lower-case letter."; +"password_validation_error_contain_uppercase_letter" = "Contain an upper-case letter."; +"password_validation_error_contain_number" = "Contain a number."; +"password_validation_error_contain_symbol" = "Contain a symbol."; + + +// MARK: Legacy Authentication "auth_login" = "Log in"; "auth_register" = "Register"; "auth_submit" = "Submit"; @@ -2152,6 +2233,9 @@ Tap the + to start adding people."; "location_sharing_invalid_authorization_settings" = "Settings"; +"location_sharing_invalid_power_level_title" = "You don’t have permission to share live location"; +"location_sharing_invalid_power_level_message" = "You need to have the right permissions in order to share live location in this room."; + "location_sharing_open_apple_maps" = "Open in Apple Maps"; "location_sharing_open_google_maps" = "Open in Google Maps"; @@ -2445,6 +2529,7 @@ To enable access, tap Settings> Location and select Always"; "message_reply_to_sender_sent_a_voice_message" = "sent a voice message."; "message_reply_to_sender_sent_a_file" = "sent a file."; "message_reply_to_sender_sent_their_location" = "has shared their location."; +"message_reply_to_sender_sent_their_live_location" = "Live location."; "message_reply_to_message_to_reply_to_prefix" = "In reply to"; // Room members diff --git a/Riot/Assets/third_party_licenses.html b/Riot/Assets/third_party_licenses.html index 00689aa78..a9365018f 100644 --- a/Riot/Assets/third_party_licenses.html +++ b/Riot/Assets/third_party_licenses.html @@ -13,9 +13,9 @@
- This application is making use of the following third party softwares: + This application is making use of the following third party softwares:
-It is composed of 2 frameworks:
- GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 + swift-ogg (https://github.com/vector-im/swift-ogg) +Makes use of code from 5 frameworks:
+
It contains code adapted from: