Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge changes from beta 19.7.0.1 + Release Notes #18411

Merged
merged 21 commits into from
Apr 21, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
d9fbe30
Changes design selection action buttons when this is the last site cr…
Apr 19, 2022
4c0a984
Changes design preview action button when this is the last site creat…
Apr 19, 2022
082306a
Removes trailing spaces
Apr 19, 2022
7a4701d
Reverts change for the skip button
Apr 19, 2022
9ecd2b8
Pass a boolean to determine if the Site Design step is the last one.
twstokes Apr 19, 2022
e2f575c
Add tests.
twstokes Apr 19, 2022
62018c4
Update release notes to point to the PR and describe the scope.
twstokes Apr 19, 2022
ed4a7a1
Update 19.7 release notes to include #18127 (#18401)
mokagio Apr 20, 2022
c153e61
Update `release_notes.txt` files for 19.7 with change from #18401
mokagio Apr 20, 2022
babc542
Groups string resources
Apr 20, 2022
7ad2a9d
Merge pull request #18400 from wordpress-mobile/feature/site-name-des…
Apr 20, 2022
00accc5
Adds all the controller resources in the group
Apr 20, 2022
fc7ddd3
Changed create site button title capitalisation to match the domains …
Apr 20, 2022
a7c675f
[Site Name] Adjusts design picker for treatment variation (#18397)
mokagio Apr 21, 2022
158c78d
Update app translations – `Localizable.strings`
mokagio Apr 21, 2022
e5c7c8d
Update WordPress metadata translations
mokagio Apr 21, 2022
3389ee5
Update Jetpack metadata translations
mokagio Apr 21, 2022
7675c47
Bump version number
mokagio Apr 21, 2022
1b92121
Add editorialized release notes for version 19.7 – Same for both apps
mokagio Apr 21, 2022
a32f73d
Update metadata strings
mokagio Apr 21, 2022
d00b8ef
Update metadata strings
mokagio Apr 21, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion RELEASE-NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
-----
* [*] a11y: VoiceOver has been improved on the Menus view and now announces changes to ordering. [#18155]
* [*] Notifications list: remove comment Trash swipe action. [#18349]
* [*] Reader: Fixed a bug that caused cut off content in reader web view [#16106]
* [*] Web previews now abide by safe areas when a toolbar is shown [#18127]
Copy link
Contributor

@AliSoftware AliSoftware Apr 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ Is that change expected (especially since that does not seem like just a wording update of a single item, but instead removal of an item related to one PR #16106 while adding a different item related to a different PR #18127)?
(cc @twstokes as author of the commit making that change)

And also, do we need to inform our freelance writer (Grace) about that change and new entry, so that she update her Editorialized Release Notes copy (included in this PR) accordingly?

Copy link
Contributor

@twstokes twstokes Apr 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👋 @AliSoftware - this PR contains the backstory of this change.

Summary:

Should I have included the Owl Team on that PR to loop everyone in? Any tips welcome! 🙇

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the helpful extra context @twstokes !

I think it's always a good idea to ping your Release Manager especially when you change either release notes (like here) or strings (like for the case of the other review comment I left) in a PR that lands in release/* branch after the code-freeze.

Both release notes and strings are frozen during code freeze and we then use those frozen versions to kick off the rest of the process (ask our freelance writer to write nice notes from this frozen draft, send frozen strings to our translation vendor, …), which is why any change to those after code freeze is important to signal to your RM so they can adjust for those last-minute tweaks appropriately 🙂.


That being said, given the additional context you shared here, I think the wording that ended up being used in the Editorialized version of the Release Notes here below is probably OK and matches what ultimately landed?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @AliSoftware, that makes sense!

I think the wording that ended up being used in the Editorialized version of the Release Notes here below is probably OK and matches what ultimately landed?

I agree!

* [*] Site creation: Adds a new screen asking the user the intent of the site [#18367]
* [**] Block Editor: Quote block: Adds support for V2 behind a feature flag [https://github.com/WordPress/gutenberg/pull/40133]
* [**] Block Editor: Update "add block" button's style in default editor view [https://github.com/WordPress/gutenberg/pull/39726]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
import UIKit

class SiteDesignPreviewViewController: TemplatePreviewViewController {
private let createsSite: Bool
let completion: SiteDesignStep.SiteDesignSelection
let siteDesign: RemoteSiteDesign

init(siteDesign: RemoteSiteDesign, selectedPreviewDevice: PreviewDevice?, onDismissWithDeviceSelected: ((PreviewDevice) -> ())?, completion: @escaping SiteDesignStep.SiteDesignSelection) {
init(siteDesign: RemoteSiteDesign, selectedPreviewDevice: PreviewDevice?, createsSite: Bool, onDismissWithDeviceSelected: ((PreviewDevice) -> ())?, completion: @escaping SiteDesignStep.SiteDesignSelection) {
self.completion = completion
self.siteDesign = siteDesign
self.createsSite = createsSite
super.init(demoURL: siteDesign.demoURL, selectedPreviewDevice: selectedPreviewDevice, onDismissWithDeviceSelected: onDismissWithDeviceSelected)
delegate = self
title = NSLocalizedString("Preview", comment: "Title for screen to preview a selected homepage design")
title = TextContent.previewTitle
}

required init?(coder: NSCoder) {
Expand All @@ -19,6 +21,17 @@ class SiteDesignPreviewViewController: TemplatePreviewViewController {
override func viewDidLoad() {
super.viewDidLoad()
navigationItem.leftBarButtonItem = CollapsableHeaderViewController.closeButton(target: self, action: #selector(closeButtonTapped))
setPrimaryActionButtonTitle()
}

private func setPrimaryActionButtonTitle() {
primaryActionButton.setTitle(createsSite ? TextContent.createSiteButton : TextContent.chooseButton, for: .normal)
}

private enum TextContent {
static let previewTitle = NSLocalizedString("Preview", comment: "Title for screen to preview a selected homepage design.")
static let createSiteButton = NSLocalizedString("Create Site", comment: "Title for the button to progress with creating the site with the selected design.")
static let chooseButton = NSLocalizedString("Choose", comment: "Title for the button to progress with the selected site homepage design.")
Comment on lines +33 to +34
Copy link
Contributor

@AliSoftware AliSoftware Apr 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Note that since those 2 new strings were not present at the time you did the code freeze and got added in release/* later, those new strings sadly won't be sent for translation and won't be translated in time for 19.7 😞

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👋 @AliSoftware thanks for all your information recently about translations. Could I get one bit clarified?

If I understand correctly, "Create Site" and "Choose" are keys* for the translated strings. These keys existed prior to this change in WPiOS and had the same meaning [one] [two].

Does this still mean the translations won't work for this view? I ran it locally and set it to a random language (German) and saw it was translated. Thanks!

*I realize we may be getting away from the English string being the key soon.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah! I might have missed something when looking at the diff then, as I was convinced that those were newly introduced strings — as opposed to already existing ones that we just moved around or reused in a different context.

If they were already part of the strings that got extracted in the generated Localizable.strings back when Gio did the code freeze (maybe because they were already used / present in another part of the code) then we should be all good for those then!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool!

"Create Site" is a "new" string to that view, but it was used (in the same context) in WPiOS prior to this change, so my hope is that the translation for that key is just reused.

"Choose" already existed on this view, it was only moved. 👍

}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class SiteDesignSection: CategorySection {

class SiteDesignContentCollectionViewController: FilterableCategoriesViewController, UIPopoverPresentationControllerDelegate {
typealias TemplateGroup = SiteDesignRequest.TemplateGroup
private let createsSite: Bool
private let templateGroups: [TemplateGroup] = [.stable, .singlePage]

let completion: SiteDesignStep.SiteDesignSelection
Expand Down Expand Up @@ -55,15 +56,16 @@ class SiteDesignContentCollectionViewController: FilterableCategoriesViewControl
return sections[sectionIndex].designs[position]
}

init(_ completion: @escaping SiteDesignStep.SiteDesignSelection) {
init(createsSite: Bool, _ completion: @escaping SiteDesignStep.SiteDesignSelection) {
self.completion = completion
self.createsSite = createsSite

super.init(
analyticsLocation: "site_creation",
mainTitle: NSLocalizedString("Choose a design", comment: "Title for the screen to pick a design and homepage for a site."),
prompt: NSLocalizedString("Pick your favorite homepage layout. You can edit and customize it later.", comment: "Prompt for the screen to pick a design and homepage for a site."),
primaryActionTitle: NSLocalizedString("Choose", comment: "Title for the button to progress with the selected site homepage design"),
secondaryActionTitle: NSLocalizedString("Preview", comment: "Title for button to preview a selected homepage design")
mainTitle: TextContent.mainTitle,
prompt: TextContent.subtitle,
primaryActionTitle: createsSite ? TextContent.createSiteButton : TextContent.chooseButton,
secondaryActionTitle: TextContent.previewButton
)
}

Expand All @@ -73,7 +75,7 @@ class SiteDesignContentCollectionViewController: FilterableCategoriesViewControl

override func viewDidLoad() {
super.viewDidLoad()
navigationItem.backButtonTitle = NSLocalizedString("Design", comment: "Shortened version of the main title to be used in back navigation")
navigationItem.backButtonTitle = TextContent.backButtonTitle
fetchSiteDesigns()
configureCloseButton()
configureSkipButton()
Expand All @@ -100,7 +102,7 @@ class SiteDesignContentCollectionViewController: FilterableCategoriesViewControl
}

private func configureSkipButton() {
let skip = UIBarButtonItem(title: NSLocalizedString("Skip", comment: "Continue without making a selection"), style: .done, target: self, action: #selector(skipButtonTapped))
let skip = UIBarButtonItem(title: TextContent.skipButtonTitle, style: .done, target: self, action: #selector(skipButtonTapped))
navigationItem.rightBarButtonItem = skip
}

Expand All @@ -115,7 +117,7 @@ class SiteDesignContentCollectionViewController: FilterableCategoriesViewControl
return
}

navigationItem.leftBarButtonItem = UIBarButtonItem(title: NSLocalizedString("Cancel", comment: "Cancel site creation"), style: .done, target: self, action: #selector(closeButtonTapped))
navigationItem.leftBarButtonItem = UIBarButtonItem(title: TextContent.cancelButtonTitle, style: .done, target: self, action: #selector(closeButtonTapped))
}

@objc func skipButtonTapped(_ sender: Any) {
Expand Down Expand Up @@ -151,7 +153,7 @@ class SiteDesignContentCollectionViewController: FilterableCategoriesViewControl
override func secondaryActionSelected(_ sender: Any) {
guard let design = selectedDesign else { return }

let previewVC = SiteDesignPreviewViewController(siteDesign: design, selectedPreviewDevice: selectedPreviewDevice, onDismissWithDeviceSelected: { [weak self] device in
let previewVC = SiteDesignPreviewViewController(siteDesign: design, selectedPreviewDevice: selectedPreviewDevice, createsSite: createsSite, onDismissWithDeviceSelected: { [weak self] device in
self?.selectedPreviewDevice = device
}, completion: completion)

Expand All @@ -162,10 +164,23 @@ class SiteDesignContentCollectionViewController: FilterableCategoriesViewControl

private func handleError(_ error: Error) {
SiteCreationAnalyticsHelper.trackError(error)
let titleText = NSLocalizedString("Unable to load this content right now.", comment: "Informing the user that a network request failed becuase the device wasn't able to establish a network connection.")
let subtitleText = NSLocalizedString("Check your network connection and try again.", comment: "Default subtitle for no-results when there is no connection.")
let titleText = TextContent.errorTitle
let subtitleText = TextContent.errorSubtitle
displayNoResultsController(title: titleText, subtitle: subtitleText, resultsDelegate: self)
}

private enum TextContent {
static let mainTitle = NSLocalizedString("Choose a design", comment: "Title for the screen to pick a design and homepage for a site.")
static let subtitle = NSLocalizedString("Pick your favorite homepage layout. You can edit and customize it later.", comment: "Prompt for the screen to pick a design and homepage for a site.")
static let createSiteButton = NSLocalizedString("Create Site", comment: "Title for the button to progress with creating the site with the selected design.")
static let chooseButton = NSLocalizedString("Choose", comment: "Title for the button to progress with the selected site homepage design.")
static let previewButton = NSLocalizedString("Preview", comment: "Title for button to preview a selected homepage design.")
static let backButtonTitle = NSLocalizedString("Design", comment: "Shortened version of the main title to be used in back navigation.")
static let skipButtonTitle = NSLocalizedString("Skip", comment: "Continue without making a selection.")
static let cancelButtonTitle = NSLocalizedString("Cancel", comment: "Cancel site creation.")
static let errorTitle = NSLocalizedString("Unable to load this content right now.", comment: "Informing the user that a network request failed becuase the device wasn't able to establish a network connection.")
static let errorSubtitle = NSLocalizedString("Check your network connection and try again.", comment: "Default subtitle for no-results when there is no connection.")
}
}

// MARK: - NoResultsViewControllerDelegate
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,17 @@ final class SiteDesignStep: WizardStep {
typealias SiteDesignSelection = (_ design: RemoteSiteDesign?) -> Void
weak var delegate: WizardDelegate?
private let creator: SiteCreator
private let isLastStep: Bool

private(set) lazy var content: UIViewController = {
return SiteDesignContentCollectionViewController { [weak self] (design) in
return SiteDesignContentCollectionViewController(createsSite: isLastStep) { [weak self] (design) in
self?.didSelect(design)
}
}()

init(creator: SiteCreator) {
init(creator: SiteCreator, isLastStep: Bool) {
self.creator = creator
self.isLastStep = isLastStep
}

private func didSelect(_ design: RemoteSiteDesign?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,9 @@ final class SiteCreationWizardLauncher {
let addressService = DomainsServiceAdapter(managedObjectContext: ContextManager.sharedInstance().mainContext)
return WebAddressStep(creator: self.creator, service: addressService)
case .design:
return SiteDesignStep(creator: self.creator)
// we call dropLast to remove .siteAssembly
let isLastStep = steps.dropLast().last == .design
return SiteDesignStep(creator: self.creator, isLastStep: isLastStep)
case .intent:
return SiteIntentStep(creator: self.creator)
case .name:
Expand Down
14 changes: 9 additions & 5 deletions WordPress/Jetpack/Resources/AppStoreStrings.po
Original file line number Diff line number Diff line change
Expand Up @@ -38,15 +38,19 @@ msgctxt "app_store_keywords"
msgid "social,notes,jetpack,writing,geotagging,media,blog,website,blogging,journal"
msgstr ""

msgctxt "v19.6-whats-new"
msgctxt "v19.7-whats-new"
msgid ""
"Big news, site fans—your My Site screen just got better. You’ll now see two new tabs you can switch between: Site Menu and Home.\n"
"We made a small but mighty change to the block editor: the “Add Block” button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to upload—it felt like overkill.\n"
"\n"
"The Home tab also contains handy cards with more information about your site, including drafts, scheduled posts, and today’s stats. Or, if you’re in a hurry, you can easily head over to another section of the app.\n"
"You’ll hear some accessibility tweaks in the VoiceOver experience when you’re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud.\n"
"\n"
"We’re all about clear communication. That’s why we’ve added new error text to the photo upload process, just in case you try to upload a photo from your device without giving the app photo permission first.\n"
"We added a new screen to the site creation process where you can enter your site’s intent. We tested this screen with a small group of users, and we think you’ll like it, too.\n"
"\n"
"Finally, when in-app notices pop up, they now fade out more smoothly when you don’t need them anymore. Exit stage left.\n"
"Web previews won’t cut off bottom-of-the-screen notifications when your browser toolbar is visible.\n"
"\n"
"What’s in a name? Well, if your site has one, you’ll see it in the My Site navigation title.\n"
"\n"
"When you swipe left on a comment in your Notifications, you won’t see the “Trash” option anymore. Instead you’ll see “Unapprove Comment” and “Approve Comment.” We approve.\n"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 I too feel this wording is safer than the more spicy 🌶️ one Grace propose 😅 (While it was funny, the alternative spicier copy might have been a lost reference that not everybody would have got, and could also have been negatively interpreted)

msgstr ""

#. translators: This is a promo message that will be attached on top of the first screenshot in the App Store.
Expand Down
19 changes: 10 additions & 9 deletions WordPress/Jetpack/Resources/release_notes.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
* [*] a11y: VoiceOver has been improved on the Menus view and now announces changes to ordering. [#18155]
* [*] Notifications list: remove comment Trash swipe action. [#18349]
* [*] Reader: Fixed a bug that caused cut off content in reader web view [#16106]
* [*] Site creation: Adds a new screen asking the user the intent of the site [#18367]
* [**] Block Editor: Quote block: Adds support for V2 behind a feature flag [https://github.com/WordPress/gutenberg/pull/40133]
* [**] Block Editor: Update "add block" button's style in default editor view [https://github.com/WordPress/gutenberg/pull/39726]
* [*] Block Editor: Remove banner error notification on upload failure [https://github.com/WordPress/gutenberg/pull/39694]
* [*] My Site: display site name in My Site screen nav title [#18373]
* [*] [internal] Site creation: Adds a new screen asking the user the name of the site [#18280]
We made a small but mighty change to the block editor: the “Add Block” button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to upload—it felt like overkill.

You’ll hear some accessibility tweaks in the VoiceOver experience when you’re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud.

We added a new screen to the site creation process where you can enter your site’s intent. We tested this screen with a small group of users, and we think you’ll like it, too.

Web previews won’t cut off bottom-of-the-screen notifications when your browser toolbar is visible.

What’s in a name? Well, if your site has one, you’ll see it in the My Site navigation title.

When you swipe left on a comment in your Notifications, you won’t see the “Trash” option anymore. Instead you’ll see “Unapprove Comment” and “Approve Comment.” We approve.
14 changes: 9 additions & 5 deletions WordPress/Resources/AppStoreStrings.po
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,19 @@ msgctxt "app_store_keywords"
msgid "blogger,writing,blogging,web,maker,online,store,business,make,create,write,blogs"
msgstr ""

msgctxt "v19.6-whats-new"
msgctxt "v19.7-whats-new"
msgid ""
"Big news, site fans—your My Site screen just got better. You’ll now see two new tabs you can switch between: Site Menu and Home.\n"
"We made a small but mighty change to the block editor: the “Add Block” button is more visible when you first open the editor with no blocks selected. We also removed one of three error notifications when a media or audio block fails to upload—it felt like overkill.\n"
"\n"
"The Home tab also contains handy cards with more information about your site, including drafts, scheduled posts, and today’s stats. Or, if you’re in a hurry, you can easily head over to another section of the app.\n"
"You’ll hear some accessibility tweaks in the VoiceOver experience when you’re rearranging menu items. Instructions and notices are clearer, and the menu hierarchy makes more sense out loud.\n"
"\n"
"We’re all about clear communication. That’s why we’ve added new error text to the photo upload process, just in case you try to upload a photo from your device without giving the app photo permission first.\n"
"We added a new screen to the site creation process where you can enter your site’s intent. We tested this screen with a small group of users, and we think you’ll like it, too.\n"
"\n"
"Finally, when in-app notices pop up, they now fade out more smoothly when you don’t need them anymore. Exit stage left.\n"
"Web previews won’t cut off bottom-of-the-screen notifications when your browser toolbar is visible.\n"
"\n"
"What’s in a name? Well, if your site has one, you’ll see it in the My Site navigation title.\n"
"\n"
"When you swipe left on a comment in your Notifications, you won’t see the “Trash” option anymore. Instead you’ll see “Unapprove Comment” and “Approve Comment.” We approve.\n"
msgstr ""

#. translators: This is a standard chunk of text used to tell a user what's new with a release when nothing major has changed.
Expand Down
Loading