Skip to content

Commit 07b8775

Browse files
authored
Merge release/23.8 into trunk (#16421)
2 parents 31c2496 + 789f773 commit 07b8775

File tree

6 files changed

+92
-46
lines changed

6 files changed

+92
-46
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<!--
22
Contains editorialized release notes. Raw release notes should go into `RELEASE-NOTES.txt`.
33
-->
4+
## 23.8
5+
This update brings smoother POS performance with a new local product catalog for lightning-fast barcode scanning, search, and selection. We’ve also improved login support for sites using captchas, fixed push notification issues, and ensured product and app stability across the board.
6+
47
## 23.7
58
This update brings Tap to Pay on iPhone to UK stores using Stripe, and automatic SSO sign-ins for web admin tasks. We made card payment onboarding error tips clearer, and fixed an intermittent bug with adding variations to an order. Lastly, iPad users can share quick feedback about Point of Sale.
69

RELEASE-NOTES.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
*** PLEASE FOLLOW THIS FORMAT: [<priority indicator, more stars = higher priority>] <description> [<PR URL>]
22
*** Use [*****] to indicate smoke tests of all critical flows should be run on the final IPA before release (e.g. major library or OS update).
33

4+
23.9
5+
-----
6+
7+
48
23.8
59
-----
610
- [*] Better support site credential login for sites with captcha plugins [https://github.com/woocommerce/woocommerce-ios/pull/16372]

WooCommerce/Resources/AppStoreStrings.pot

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ msgctxt "app_store_promo_text"
6161
msgid "Run your store from anywhere"
6262
msgstr ""
6363

64-
msgctxt "v23.7-whats-new"
64+
msgctxt "v23.8-whats-new"
6565
msgid ""
66-
"This update brings smooth UK Tap to Pay via Stripe, clearer card onboarding error tips, and automatic SSO sign-ins for key admin tasks. Order creation now picks the right variations, and eligible merchants can share quick POS feedback.\n"
66+
"This update brings smoother POS performance with a new local product catalog for lightning-fast barcode scanning, search, and selection. We’ve also improved login support for sites using captchas, fixed push notification issues, and ensured product and app stability across the board.\n"
6767
msgstr ""
6868

6969
#. translators: This is a promo message that will be attached on top of a screenshot in the App Store.

WooCommerce/Resources/en.lproj/Localizable.strings

Lines changed: 80 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1869,6 +1869,9 @@ which should be translated separately and considered part of this sentence. */
18691869
/* Title of the booking customer selector view */
18701870
"bookingCustomerSelectorView.title" = "Customer";
18711871

1872+
/* Title of the Clear button in the date time picker for booking filter */
1873+
"bookingDateTimeFilterView.clear" = "Clear";
1874+
18721875
/* Title of the Date row in the date time picker for booking filter */
18731876
"bookingDateTimeFilterView.date" = "Date";
18741877

@@ -1917,6 +1920,9 @@ which should be translated separately and considered part of this sentence. */
19171920
/* Add a booking note section in booking details view. */
19181921
"BookingDetailsView.bookingNote.addNoteRow.title" = "Add note";
19191922

1923+
/* Content of error presented when updating the not of a Booking fails. It reads: Unable to update note of Booking #{Booking number}. Parameters: %1$d - Booking number */
1924+
"BookingDetailsView.bookingNote.failureMessage." = "Unable to update note of Booking #%1$d.";
1925+
19201926
/* Footer text for the `Booking note` section in the booking details screen. */
19211927
"BookingDetailsView.bookingNote.footerText" = "This is a private note. It'll not be shared with the customer.";
19221928

@@ -1956,6 +1962,9 @@ which should be translated separately and considered part of this sentence. */
19561962
/* Header title for the 'Customer' section in the booking details screen. */
19571963
"BookingDetailsView.customer.headerTitle" = "Customer";
19581964

1965+
/* Customer note row title in customer section in booking details view. */
1966+
"BookingDetailsView.customer.note.title" = "Note";
1967+
19591968
/* 'Status' row title in attendance section in booking details view. */
19601969
"BookingDetailsView.customer.status.title" = "Status";
19611970

@@ -2040,8 +2049,11 @@ which should be translated separately and considered part of this sentence. */
20402049
/* Description for booking date range filter with only end date. Placeholder is a date. Reads as: Until October 27, 2025. */
20412050
"bookingFiltersViewModel.dateRangeFilter.until" = "Until %1$@";
20422051

2043-
/* Message displayed when searching bookings by keyword yields no results. */
2044-
"bookingList.emptySearchText" = "We couldn't find any bookings with that name — try adjusting your search term to see more results.";
2052+
/* Button to clear the filters on booking list */
2053+
"bookingList.clearFilters" = "Clear filters";
2054+
2055+
/* Message displayed when searching bookings by keyword yields no results. Version without a dash. */
2056+
"bookingList.emptySearchText.noDash" = "We couldn't find any bookings with that name. Try adjusting your search term to see more results.";
20452057

20462058
/* Error message when fetching bookings fails */
20472059
"bookingList.errorMessage" = "Error fetching bookings";
@@ -2055,20 +2067,26 @@ which should be translated separately and considered part of this sentence. */
20552067
/* Tab title for all bookings */
20562068
"bookingListView.all" = "All";
20572069

2058-
/* Description for the empty state when there's no bookings for the given filter */
2059-
"bookingListView.emptyState.filter.description" = "No bookings match your filters. Try adjusting them to see more results.";
2070+
/* Description for the empty state when there's no bookings at all so far */
2071+
"bookingListView.emptyState.all.description" = "Bookings will appear here once customers start scheduling your services or registering for events.";
20602072

2061-
/* Title for the empty state when there's no bookings for the given filter */
2073+
/* Title for the empty state when there's no bookings at all so far */
2074+
"bookingListView.emptyState.all.title" = "No bookings yet";
2075+
2076+
/* Description for the empty state when there's no bookings for the given filters */
2077+
"bookingListView.emptyState.filter.description.i3" = "Try adjusting or clearing your filters to see more results.";
2078+
2079+
/* Title for the empty state when there's no bookings for the given filters */
20622080
"bookingListView.emptyState.filter.title" = "No bookings found";
20632081

20642082
/* Description for the empty state when no bookings for today is found */
2065-
"bookingListView.emptyState.today.description" = "You don't have any appointments or events scheduled for today.";
2083+
"bookingListView.emptyState.today.description.i3" = "Any bookings scheduled for today will appear here.";
20662084

20672085
/* Title for the empty state when no bookings for today is found */
20682086
"bookingListView.emptyState.today.title" = "No bookings today";
20692087

20702088
/* Description for the empty state when there's no upcoming bookings */
2071-
"bookingListView.emptyState.upcoming.description" = "You don't have any future appointments or events scheduled yet.";
2089+
"bookingListView.emptyState.upcoming.description.i3" = "New bookings will appear here as customers schedule your services or register for events.";
20722090

20732091
/* Title for the empty state when there's no bookings for today */
20742092
"bookingListView.emptyState.upcoming.title" = "No upcoming bookings";
@@ -2094,18 +2112,6 @@ which should be translated separately and considered part of this sentence. */
20942112
/* Title of the booking list view */
20952113
"bookingListView.view.title" = "Bookings";
20962114

2097-
/* Status of a paid booking */
2098-
"bookingPaymentStatus.title.paid" = "Paid";
2099-
2100-
/* Status of a refunded booking */
2101-
"bookingPaymentStatus.title.refunded" = "Refunded";
2102-
2103-
/* Status of a booking with unexpected payment status */
2104-
"bookingPaymentStatus.title.unknown" = "Unknown";
2105-
2106-
/* Status of an unpaid booking */
2107-
"bookingPaymentStatus.title.unpaid" = "Unpaid";
2108-
21092115
/* Displayed name on the booking list when no customer is associated with a booking. */
21102116
"bookings.guest" = "Guest";
21112117

@@ -7653,6 +7659,33 @@ which should be translated separately and considered part of this sentence. */
76537659
/* Button title to retry synchronizing order and calculating order totals */
76547660
"pointOfSale.orderSync.error.tryAgain" = "Try again";
76557661

7662+
/* Button to return to order editing when products are no longer available */
7663+
"pointOfSale.orderSync.missingProductsError.editOrder" = "Edit order";
7664+
7665+
/* Button title to remove a single unavailable product and retry creating the order */
7666+
"pointOfSale.orderSync.missingProductsError.removeProductSingular" = "Remove product";
7667+
7668+
/* Button title to remove multiple unavailable products and retry creating the order */
7669+
"pointOfSale.orderSync.missingProductsError.removeProductsPlural" = "Remove products";
7670+
7671+
/* Subtitle of the error when we can't identify which specific product is no longer available. */
7672+
"pointOfSale.orderSync.missingProductsError.subtitleGenericProduct" = "A product in the cart is no longer available.";
7673+
7674+
/* Subtitle of the error when multiple products are no longer available */
7675+
"pointOfSale.orderSync.missingProductsError.subtitlePlural" = "Some products in your cart are no longer available.";
7676+
7677+
/* Subtitle of the error when a single product is no longer available. Placeholder is the product name. */
7678+
"pointOfSale.orderSync.missingProductsError.subtitleSingular" = "%@ is no longer available.";
7679+
7680+
/* Title of the error when multiple products in the cart are no longer available */
7681+
"pointOfSale.orderSync.missingProductsError.titlePlural" = "Products no longer available";
7682+
7683+
/* Title of the error when a single product in the cart is no longer available */
7684+
"pointOfSale.orderSync.missingProductsError.titleSingular" = "Product no longer available";
7685+
7686+
/* Generic product name used when we can't identify which specific product is unavailable */
7687+
"pointOfSale.orderSync.missingProductsError.unknownProductName" = "One or more products";
7688+
76567689
/* Message shown to users when payment is made. %1$@ is a placeholder for the order total, e.g $10.50. Please include %1$@ in your formatted string */
76577690
"pointOfSale.paymentSuccessful.message.card.1" = "A card payment of %1$@ was successfully made.";
76587691

@@ -7839,7 +7872,7 @@ which should be translated separately and considered part of this sentence. */
78397872
"pointOfSaleSettingsView.sidebarNavigationLocalCatalogSubtitle" = "Manage catalog settings";
78407873

78417874
/* Title of the Local catalog section within Point of Sale settings. */
7842-
"pointOfSaleSettingsView.sidebarNavigationLocalCatalogTitle" = "Catalog";
7875+
"pointOfSaleSettingsView.sidebarNavigationLocalCatalogTitle.2" = "Product catalog";
78437876

78447877
/* Description of the settings to be found within the Store section. */
78457878
"pointOfSaleSettingsView.sidebarNavigationStoreSubtitle" = "Store configuration and settings";
@@ -8033,6 +8066,9 @@ which should be translated separately and considered part of this sentence. */
80338066
/* Title for the 'Clear cart' confirmation button to remove all products from the Cart. */
80348067
"pos.cartView.clearButtonTitle.1" = "Clear cart";
80358068

8069+
/* Title appearing in a modal when there's an error refreshing the catalog. */
8070+
"pos.catalog.refreshFailedTitle" = "Unable to refresh catalog";
8071+
80368072
/* Title shown on a toast view that appears when there's no internet connection */
80378073
"pos.connectivity.title" = "No internet connection";
80388074

@@ -8268,7 +8304,7 @@ which should be translated separately and considered part of this sentence. */
82688304
"pos.orderListView.emptyOrdersSearchHint" = "Try adjusting your search term.";
82698305

82708306
/* Subtitle appearing when order search returns no results. */
8271-
"pos.orderListView.emptyOrdersSearchSubtitle" = "We couldn't find any orders matching your search.";
8307+
"pos.orderListView.emptyOrdersSearchSubtitle.1" = "We couldn't find any orders with that name.";
82728308

82738309
/* Title appearing when order search returns no results. */
82748310
"pos.orderListView.emptyOrdersSearchTitle" = "No orders found";
@@ -8304,7 +8340,7 @@ which should be translated separately and considered part of this sentence. */
83048340
"pos.parentProductCard.optionsAvailable" = "Options available";
83058341

83068342
/* Text appearing on the coupons list screen as subtitle when there's no coupons found. */
8307-
"pos.pointOfSaleItemListEmptyView.emptyCouponSearchSubtitle.2" = "We couldn’t find any coupons with that name — try adjusting your search term.";
8343+
"pos.pointOfSaleItemListEmptyView.emptyCouponSearchSubtitle.3" = "We couldn’t find any coupons with that name. Try adjusting your search term.";
83088344

83098345
/* Text appearing on the coupons list screen as subtitle when there's no coupons found. */
83108346
"pos.pointOfSaleItemListEmptyView.emptyCouponsSubtitle.2" = "Coupons can be an effective way to drive business. Would you like to create one?";
@@ -8322,7 +8358,7 @@ which should be translated separately and considered part of this sentence. */
83228358
"pos.pointOfSaleItemListEmptyView.emptyProductsSearchHint" = "Variation names can't be searched, so use the parent product name.";
83238359

83248360
/* Subtitle text suggesting to modify search terms when no products are found in the POS product search. */
8325-
"pos.pointOfSaleItemListEmptyView.emptyProductsSearchSubtitle.2" = "We couldn't find any matching products — try adjusting your search term.";
8361+
"pos.pointOfSaleItemListEmptyView.emptyProductsSearchSubtitle.3" = "We couldn't find any matching products. Try adjusting your search term.";
83268362

83278363
/* Text appearing on screen when a POS product search returns no results. */
83288364
"pos.pointOfSaleItemListEmptyView.emptyProductsSearchTitle.2" = "No products found";
@@ -8402,38 +8438,41 @@ which should be translated separately and considered part of this sentence. */
84028438
/* An error shown when the Point of Sale is used in iOS split view, but with not enough horizontal space. */
84038439
"pos.unsupportedWidth.title" = "Point of Sale is not supported in this screen width.";
84048440

8405-
/* Label for allow full sync on cellular data toggle in Point of Sale settings. */
8406-
"posSettingsLocalCatalogDetailView.allowFullSyncOnCellular.1" = "Allow full update on cellular data";
8441+
/* Label for allow sync on cellular data toggle in Point of Sale settings. */
8442+
"posSettingsLocalCatalogDetailView.allowSyncOnCellular.2" = "Allow sync using cellular data";
84078443

8408-
/* Label for catalog size field in Point of Sale settings. */
8409-
"posSettingsLocalCatalogDetailView.catalogSize" = "Catalog size";
8444+
/* Button text for closing an error after a refresh fails */
8445+
"posSettingsLocalCatalogDetailView.catalogRefresh.error.cancelButton.title" = "Cancel";
8446+
8447+
/* Button text for retrying a refresh after it fails */
8448+
"posSettingsLocalCatalogDetailView.catalogRefresh.error.retryButton.title" = "Retry";
84108449

8411-
/* Section title for catalog status in Point of Sale settings. */
8412-
"posSettingsLocalCatalogDetailView.catalogStatus" = "Catalog Status";
8450+
/* Label for catalog size field in Point of Sale settings. */
8451+
"posSettingsLocalCatalogDetailView.catalogSize.1" = "Size";
84138452

84148453
/* Label for last full sync field in Point of Sale settings. */
8415-
"posSettingsLocalCatalogDetailView.lastFullSync.1" = "Last full update";
8454+
"posSettingsLocalCatalogDetailView.lastFullSync.2" = "Last full sync";
84168455

8417-
/* Label for last incremental update field in Point of Sale settings. */
8418-
"posSettingsLocalCatalogDetailView.lastIncrementalSync" = "Last update";
8456+
/* Label for last incremental sync field in Point of Sale settings. */
8457+
"posSettingsLocalCatalogDetailView.lastIncrementalSync.1" = "Last incremental sync";
84198458

84208459
/* Section title for managing data usage in Point of Sale settings. */
8421-
"posSettingsLocalCatalogDetailView.managingDataUsage.1" = "Managing Data Usage";
8460+
"posSettingsLocalCatalogDetailView.managingDataUsage.2" = "Cellular data";
84228461

84238462
/* Section title for manual catalog update in Point of Sale settings. */
8424-
"posSettingsLocalCatalogDetailView.manualCatalogUpdate" = "Manual Catalog Update";
8425-
8426-
/* Info text explaining when to use manual catalog update. */
8427-
"posSettingsLocalCatalogDetailView.manualUpdateInfo" = "Use this refresh only when something seems off - POS keeps data current automatically.";
8463+
"posSettingsLocalCatalogDetailView.manualCatalogUpdate.1" = "Catalog update";
84288464

8429-
/* Button text for refreshing the catalog manually. */
8430-
"posSettingsLocalCatalogDetailView.refreshCatalog" = "Refresh catalog";
8465+
/* Info text explaining the usage of the manual catalog update button. */
8466+
"posSettingsLocalCatalogDetailView.manualUpdateInfo.1" = "Update the catalog manually";
84318467

84328468
/* Navigation title for the local catalog details in POS settings. */
8433-
"posSettingsLocalCatalogDetailView.title" = "Catalog Settings";
8469+
"posSettingsLocalCatalogDetailView.title.1" = "Product catalog";
8470+
8471+
/* Button text for updating the catalog manually. */
8472+
"posSettingsLocalCatalogDetailView.updateCatalog" = "Update catalog";
84348473

84358474
/* Format string for catalog size showing product count and variation count. %1$d will be replaced by the product count, and %2$ld will be replaced by the variation count. */
8436-
"posSettingsLocalCatalogViewModel.catalogSizeFormat" = "%1$d products, %2$ld variations";
8475+
"posSettingsLocalCatalogViewModel.catalogSizeFormat" = "%1$d products and %2$ld variations";
84378476

84388477
/* Text shown when catalog size cannot be determined. */
84398478
"posSettingsLocalCatalogViewModel.catalogSizeUnavailable" = "Catalog size unavailable";
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
This update brings smooth UK Tap to Pay via Stripe, clearer card onboarding error tips, and automatic SSO sign-ins for key admin tasks. Order creation now picks the right variations, and eligible merchants can share quick POS feedback.
1+
This update brings smoother POS performance with a new local product catalog for lightning-fast barcode scanning, search, and selection. We’ve also improved login support for sites using captchas, fixed push notification issues, and ensured product and app stability across the board.

config/Version.Public.xcconfig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
CURRENT_PROJECT_VERSION = $VERSION_LONG
22
MARKETING_VERSION = $VERSION_SHORT
3-
VERSION_LONG = 23.7.0.2
4-
VERSION_SHORT = 23.7
3+
VERSION_LONG = 23.8.0.0
4+
VERSION_SHORT = 23.8

0 commit comments

Comments
 (0)