Skip to content

Releases: sharetribe/web-template

v5.0.0

23 Apr 15:05
e16b014
Compare
Choose a tag to compare

This major release prepares the codebase for the new concepts: user fields and categories. The
biggest changes are on PRs: #314 and #337.

Note: We will also introduce user types later on, but that concept might still change a bit from
what we have in this release.

This affects several hosted assets:

  • user-fields.json: makes it possible to add custom user fields to profile page, profile settings page and sign-up forms. The asset will support enum, multi-enum and text schema types at the moment.
  • listing-categories.json: describes the structure of nested categories (3 levels are supported)
  • listing-search.json: defines whether categories filter is in use on search page
  • listing-fields.json has added a new restriction to listing fields. You can limit fields to a specific categories in addition to specific listingTypes.

Selected category or nested categories are saved to listing's public data with these category keys:

  • categoryLevel1
  • categoryLevel2
  • categoryLevel3

There are also smaller changes and bug fixes included. Check all the changes and PRs below.

Translation changes

New translations

  "EditListingDetailsForm.categoryLabel": "Category",
  "EditListingDetailsForm.categoryPlaceholder": "Select category",
  "EditListingDetailsForm.categoryRequired": "You need to select a category.",
  "EditListingDetailsForm.subCategoryLabel": "Subcategory",
  "FilterComponent.categoryLabel": "Category",
  "ProfilePage.detailNo": "No",
  "ProfilePage.detailYes": "Yes",
  "ProfilePage.detailsTitle": "Details",

Deleted translations

  "SelectSingleFilter.plainClear": "Clear",
  "SelectSingleFilter.popupClear": "Clear",

Changes v5.0.0

  • [add] Add support for hosted category configuration

    • Prepare for a future asset: listing-categories.json
    • Prepare for a future changes to assets: listing-search.json and listing-fields.json
    • Collect (nested) category info on EditListingDetailsPanel
      • Saved to publicData as categoryLevel1, categoryLelvel2, categoryLevel3.
      • Allow listing fields to be limited to categories in addition to listing types.
    • Show listing fields on the ListingPage (category restrictions apply)
    • Show category filter on the SearchPage
    • Show listing fields on the SearchPage if category restrictions allow

    #314

  • [change] Fix a typo in translation keys.
    #365

  • [change] Update browserlist-db aka caniuse-lite.
    #363

  • [change] Update moment-timezone library to v0.5.45
    #362

  • [add] Update translations for de.json, es.json, and fr.json.
    #361

  • [add] Add support for user fields, which will be released later as a new hosted asset.

    • The hosted asset will support enums, multi-enums, and text fields in the same manner as listing
      fields.
    • User fields will be stored in public data at this point.
    • The ProfilePage will display these fields by default.
    • The ProfileSettingsPage is the default location for adding or editing user fields.
    • The AuthenticationPage (SignupForm and ConfirmSignupForm) can also collect user field data.

    #337

  • [change] Update Node.js version to >= 18.20.1 (engine) 20.12.1 (circleci)
    #360

  • [change] formatMoney should use correct formattingOptions (JPY gets correct formatting)
    #356

  • [change] Twitter's brand and logo has changed to X.
    #355

  • [fix] Verify that browser's clock is not more than a minute out of sync.
    #354

  • [change] configStripe.js: update code-comment for dayCountAvailableForBooking.
    #352

  • [add] Add a readme for the Topbar component
    #353

  • [fix] Some email templates were not using the correct helper to format currencies and dates based
    on localization. #351

v4.1.2

26 Mar 13:09
a2e8c1d
Compare
Choose a tag to compare

This release fixes SSO signup forms not displaying hosted Terms & Privacy policy assets, prevents unintended scrolling triggered by keystrokes in inputs within sticky elements, and addresses a missing htmlFor attribute in KeywordsFilter.

Changes v4.1.2

  • [fix] SSO signups didn't show hosted Terms & Privacy policy assets due to missing loadData.
    #349
  • [fix] Input inside sticky element caused scroll effect on keystrokes, when scroll-padding was
    used. #347
  • [fix] KeywordsFilter: add missing attribute: htmlFor
    #343

V4.1.1

13 Mar 12:10
203ec91
Compare
Choose a tag to compare

This release fixes a bug related to Daylight saving time handling in certain time zones, as well as a search input width issue in TopbarDesktop.

Changes v4.1.1

  • [fix] configDefault.js: fix Fb & twitter examples.
    #339
  • [fix] Daylight saving time bug on those time zones that change exactly at midnight.
    #338
  • [add] Update translations for de.json, es.json, and fr.json.
    #335
  • [fix] TopbarDesktop: when CustomLinksMenu is not in use, reduce the min-width of search input.
    #334

v4.1.0

26 Feb 14:01
cc2f3c1
Compare
Choose a tag to compare

This prepares the codebase for the possibility of custom links on the Topbar component. Those links will come through a new asset (content/top-bar.json). It also includes a possibility to link Logo to some external domain. Read more from the PR #320.

There are also a bunch of small copy-texts, bug fixes, and other improvements added. Check the changelog.

Translation changes

New translation keys

  "AuthenticationPage.idpAuthFailed": "Failed to authenticate with an external identity provider.",
  "TopbarDesktop.LinksMenu.all": "Menu",
  "TopbarDesktop.LinksMenu.more": "More",

Changed translations

Facebook & Google require a specific translations to be used for SSO:

  "AuthenticationPage.loginWithFacebook": "Continue with Facebook",
  "AuthenticationPage.loginWithGoogle": "Continue with Google",
  "AuthenticationPage.signupWithFacebook": "Continue with Facebook",
  "AuthenticationPage.signupWithGoogle": "Continue with Google",

In addition, we wanted to highlight the no-delivery-method-set scenario better:

  "TransactionPage.default-purchase.customer.purchased.extraInfo": "{deliveryMethod, select, shipping {You'll be notified when {providerName} ships the item.} pickup {Use the chat function below to agree on a time for pickup.} other {Use the chat below to agree on the order details.}}",

Changes v4.1.0

  • [add] new component CustomLinksMenu added to the Topbar. It shows custom links if there's enough
    space available, or adds a new menu component that includes those links in a dropdown list.
    #320
  • [add] Mention Sharetribe Experts in the README.md
    #332
  • [fix] AuthenticationPage: fix mobile layout issue when content was too long
    #330
  • [add] Update translations for de.json, es.json, and fr.json.
    #328
  • [change] Update social login button labels to be aligned with branding guides
    #327
  • [fix] Show an error message on the authentication page in case identity provider authentication fails
    #326
  • [change] Upgrade Sharetribe SDK to 1.20.1
    #326
  • [change] Update the copy of TransactionPage.default-purchase.customer.purchased.extraInfo
    #323
  • [add] PageBuilder/SectionContainer: break long words (e.g. links) so that the mobile layout does not
    break. #322
  • [change] OrderBreakdown: ensure that only those line-items are shown that have been included for
    the currentUser's role (customer vs provider).
    #321
  • [fix] A listing using the inquiry transaction process should not show the payout details warning
    to the user. #319
  • [add] Update translations for de.json, es.json, and fr.json.
    #317
  • [fix] When the delivery method is not set, it's still better to maintain the value as a string, because
    it's used as an argument in translations.
    #316

v4.0.0

07 Feb 13:53
100b138
Compare
Choose a tag to compare

Breaking changes:
if you have customized your transaction process, you need to update the email templates. The new customer commission (#293) adds changes to emails that contain a receipt aka order breakdown information. In addition, also PR #310 touches the email templates.

This release also prepares the codebase for future configuration possibilities:

  • Postponing the requirement (for a provider) to give payout details before publishing a listing
    • Payout details are still needed before orders can work. (see #297)
    • This feature makes it a bit more clear for operators, if potential provider needs help with Stripe onboarding.
  • Makes certain listing features optional (location, delivery method)
  • Adds infinity stock (It is emulated through a big number 10^15)

This adds a new environment variable: REACT_APP_MARKETPLACE_NAME. It makes it a bit easier to work with multiple app instances (for Live, Test, Dev).

Note: you have probably changed src/util/configDefault.js to use your own marketplace name instead of 'Biketribe'. Check that the line doesn't use 'Biketribe' if you take an update from the upstream!
marketplaceName: process.env.REACT_APP_MARKETPLACE_NAME || 'Biketribe',

More components are now code-splitted: Topbar, FieldDateInput, FieldDateRangeInput, FieldDateRangeController

Translations changes

New translation keys:

  "CheckoutPage.destinationAccountNotCompleteStripeError": "This listing is currently unavailable because the listing author's payout information is incomplete. Your card hasn't been charged. Please contact support.",

  "ListingPage.addPayoutDetails": "Add payout details",
  "ListingPage.addPayoutDetailsMessage": "Please add your payout details to start accepting orders.",
  "ListingPage.payoutDetailsWarning": "This listing is not available {processType, select, booking {for booking} other {for purchase}}. You have not added your payout details yet.",
  "ListingPage.payoutDetailsWarningLink": "Add your payout details",

  "ProductOrderForm.ownListing": "This is your own listing.",

  "EditListingPricingAndStockForm.updateToInfinite": "Update the stock of this listing to “infinite”",
  "EditListingPricingAndStockForm.updateToInfiniteInfo": "<b>The stock type of this listing type has changed.</b> The stock of this listing is currently {currentStock}, but listings in this listing type should now have “infinite” stock.",
  "EditListingPricingAndStockForm.updateToInfiniteRequired": "You need to update the stock of this listing to infinite to save changes.",

Old translations with updated arguments:

The deliveryMethod argument in the following translations has a new value 'none' if deliveryMethod doesn't exist. The change affects these (but 'none' is not included in the default translation as the other scenario works fine for it too):

  "TransactionPage.ActivityFeed.default-purchase.delivered": "{deliveryMethod, select, shipping {The listing was shipped.} other {The listing was delivered.}}",
  "TransactionPage.default-purchase.customer.purchased.extraInfo": "{deliveryMethod, select, shipping {You'll be notified when {providerName} ships the item.} other {Use the chat function below to agree on a time for pickup.}}",

The role argument added for the following translation:

  "OrderBreakdown.commission": "{role, select, customer {{marketplaceName} fee *} provider {{marketplaceName} fee *} other {}}",

Updates to existing translations:

  "CheckoutPage.providerStripeAccountMissingError": "This listing is currently unavailable because the listing author hasn't added their payout details yet. Please contact support.",

  "EditListingPricingAndStockForm.oldStockTotalWasOutOfSync": "Oops, the stock of this listing is out of sync. Someone might just have bought this item. Please refresh the page and try again.",

  "EditListingWizard.default-booking.new.saveAvailability": "Next",
  "EditListingWizard.default-booking.new.saveDetails": "Next",
  "EditListingWizard.default-booking.new.saveLocation": "Next",
  "EditListingWizard.default-booking.new.savePhotos": "Publish listing",
  "EditListingWizard.default-booking.new.savePricing": "Next",
  "EditListingWizard.default-inquiry.new.saveDetails": "Next",
  "EditListingWizard.default-inquiry.new.saveLocation": "Next",
  "EditListingWizard.default-inquiry.new.saveLocationNoPricingTab": "Next",
  "EditListingWizard.default-inquiry.new.savePhotos": "Publish listing",
  "EditListingWizard.default-inquiry.new.savePricing": "Next",
  "EditListingWizard.default-purchase.new.saveDelivery": "Next",
  "EditListingWizard.default-purchase.new.saveDetails": "Next",
  "EditListingWizard.default-purchase.new.savePhotos": "Publish listing",
  "EditListingWizard.default-purchase.new.savePricingAndStock": "Next",

Changes 2024-02-07

  • [add] Update de.json asset. #313
  • [add] Update fr.json asset. #311
  • [add] Update translation assets for German, French, and Spanish.
    #309
  • [change] Update default email templates (no need to use triple handlebars anymore).
    #310
  • [add] Add stock types: infiniteOneItem and infiniteMultipleItems (faked through 10^15)
    #299
  • [change] Make location and delivery method configurable on EditListingWizard. This just prepares
    the codebase for an upcoming feature, when the configuration is ready on Console.
    #298
  • [change] Make the requirement of payout details configurable on EditListingWizard. This just
    prepares the codebase for an upcoming feature, when the configuration is ready on Console.
    #297
  • [fix] The destructuring of undefined commissionAsset variable can't be against null.
    #308
  • [change] Allow distinguishing customer and provider commission translations in OrderBreakdown and
    email templates #307
  • [change] Add environment variable REACT_APP_MARKETPLACE_NAME and add code-comments to built-in
    configs about hosted configs, which might overwrite them. Check that the line doesn't use
    'Biketribe' if you take an update from the upstream!
    #305
  • [change] Updated a small patch of outdated libraries: express, body-parser, moment,
    moment-timezone, helmet, nodemon, decimal.js, concurrently, classnames, jose, passport
    #304
  • [add] CSP: add new rules: *.analytics.google.com and *.giphy.com
    #303
  • [change] Fetch customer commission from assets and add handling. This update introduces changes to
    the transaction process email templates, so the transaction process needs to be updated in
    Sharetribe backend. #293
  • [change] ext/ directory: update email translation defaults for no-delivery-method scenario.
    #292
  • [change] Code-split FieldDateInput, FieldDateRangeInput, FieldDateRangeController. The consequence
    is that react-dates library is code-splitted too.
    #290
  • [change] Move IconCard under SaveCardDetails (might be code-splitted later).
    #283
  • [change] Code-split Topbar component and move it under TopbarContainer.
    #282
  • [fix] AuthenticationPage/lodash: do not import the whole library.
    #288
  • [change] PageBuilder/YoutubeEmbed: add rel=0 search param (show related videos only from the same channel).
    This also adds width and height to iframe element.
    #286
  • [fix] FieldRadioButton: disabled style was missing.
    #284
  • [fix] Add missing imports to an email template file
    #279

v3.5.0

12 Dec 13:27
e7f10c9
Compare
Choose a tag to compare

Formally releasing v3.5.0.
Note: these bug fixes and features have been in the codebase for a long time (since the beginning of November - except 277 & 278).

Translations changes

New translation keys:

  "CheckoutPage.tooManyRequestsError": "Payment request failed. There have been too many requests made in a short amount of time. If the error persists, try refreshing the page or contact support.",
  "InquiryForm.tooManyRequestsError": "Sending inquiry failed. There have been too many requests made in a short amount of time. If the error persists, try refreshing the page or contact support.",

Changes v3.5.0

  • [fix] OrderPanel: showed price for inquiry on the mobile layout even if the price was marked hidden
    #278
  • [add] Add a specific message for too-many-request error on ListingPage and CheckoutPage
    #277
  • [fix] Add missing update to yarn.lock file.
    #272
  • [fix] Final Form: iOS 17.0.x initializes unreliably Object.assign. This is fixed in iOS 17.1, but
    for the transition period, we decided to introduce a patch to remedy the situation.
    #271
  • [add] Update translation assets for French.
    #269
  • [add] Limit listing fields to specific listing types through the Console.
    #268
  • [add] Update translation assets for French.
    #267
  • [fix] TransactionPage.duck.js: add another delayed refresh call for tx after transition.
    #265
  • [change] ListingPage: always render multi-enum sections.
    #264
  • [add] SectionFooter: add title attributes to social media icons.
    #261
  • [add] PageBuilder: add backgroundImage overlay to shade the image darker.
    #262
  • [fix] the keys of built-in filters could have clashed with listing field keys.
    #260
  • [fix] Use the correct translation asset in email templates.
    #259
  • [fix] When stockType is oneItem: don't show shipping fee for additional items.
    #258
  • [fix] configHelpers: undefined enumOptions was not handled properly.
    #257

v3.4.0

23 Oct 12:11
ebc10a4
Compare
Choose a tag to compare

This release adds a new section component SectionHero to PageBuilder. SectionHero component is not yet available through Console, and it is estimated to be available this week. In addition, more configurations are fetched from assets instead of environment variables.

Changes v3.4.0

  • [change] Update Console URL from https://flex-console.sharetribe.com to
    https://console.sharetribe.com #249
  • [change] Remove Flex branding from code comments.
    #248
  • [change] PageBuilder: make sectionId and blockId optional.
    #254
  • [fix] PaginationLinks: fix pagination limit handling.
    #253
  • [add] Add more config assets: analytics, googleSearchConsole, maps, localization.
    #252
  • [add] SectionHero component added to the PageBuilder.
    #244
  • [fix] Map integration is mandatory, but let's not allow error loops if not available.
    #250

v3.3.0

17 Oct 11:24
23309e7
Compare
Choose a tag to compare

This release adds support for the sitemap (using the new sitemap API endpoints). You can read more about the new sitemap setup from these links:

This also adds references to updated email texts (a content management concept for email templates). If you have made changes to the transaction processes, you need to update your transaction process with updated email templates to take email texts into use - after which you can start editing those email texts through Console. Check the updated email templates at ext/transaction-processes.

Translations changes

Old translations with updated arguments:

The marketplaceCurrency was passed as argument for these translation keys:

"EditListingPricingAndStockPanel.listingPriceCurrencyInvalid": "The listing currency is different from the marketplace currency ({marketplaceCurrency}). You cannot edit the price.",
"EditListingPricingPanel.listingPriceCurrencyInvalid": "The listing currency is different from the marketplace currency ({marketplaceCurrency}). You cannot edit the price.",

Changes v3.3.0

  • [add] Change transaction process reference to contain updated email templates, which support email
    texts (a content management concept for email templates).
    #240

  • [fix] CheckoutPage: Fix wrong pending state name at checkout page.
    #246

  • [add] This removes old express-sitemap setup and starts generating sitemaps with sitemap package.

    • Robots.txt and sitemap-* resources will be generated on request
    • There's a small in-memory cache in use for these files.

    #243

  • [fix] Prev PR (#241) changed the structure of config.stripe unintentionally.
    #242

  • [fix] Ensure that stripe currencies have valid subunit divisors and add subunit divisors for BGN,
    CZK, PLN, RON. #241

  • [change] configHelpers.js: remove trailing slash from marketplaceRootURL
    #239

  • [fix] webmanifest error should use log and not return 500 if rendering dynamic data fails.
    #238

v3.2.0

04 Oct 12:08
116a7e1
Compare
Choose a tag to compare

This adds integration to Plausible analytics and extracts analytics to their own config file: configAnalytics.js #228

This release prepares the template for new logo types managed via hosted assets #214. In addition, the template now generates a site.web.manifest file #215.

Translation changes

No new keys. French, Spanish, and German have updated translations #236

Changes v3.2.0

  • [fix] mac OS Sonoma seems to have issues with time zone handling.
    #235
  • [add] Update translation assets for French, Spanish, and Germany.
    #236
  • [change] remove caret from react-image-gallery dependency.
    #234
  • [add] Plausible analytics integration. This can be used through environment variable:
    REACT_APP_PLAUSIBLE_DOMAINS #228
  • [add] Prepare for appIcon property to come from branding asset. This generates site.webmanifest
    file and apple-touch-icon link. #215
  • [add] Prepare for configurable Logo variants. Console will support height variants of 24, 36, and
    48 pixels. #214
  • [change] FieldPhoneNumberInput: change formatter from fi locale to only format E.164. This does
    not change input strings that don't start with a '+'.
    #233

v3.1.1

22 Sep 13:06
1a7c326
Compare
Choose a tag to compare

Changes v3.1.1

There was a bug when only one listing type was used.

  • [fix] Single listing type caused a problem on the EditListingWizard.
    #231
  • [fix] ManageListingCard: fix wrong (non-existent) classname.
    #230
  • [add] util/api.js: Added rudimentary support for other HTTP Methods. There's a new 'request'
    function, which is easier to extend. #229