Workarea 3.3.0

Changes System Emails to Improve Responsiveness & Developer Experience

Updates all system email views to use an improved template (improved responsiveness, more thoroughly tested across email clients). Moves shared markup into partials. Moves inline styles to external stylesheets for easier management (the styles are automatically inlined when the views are rendered). Removes plain text emails, since they are now created automatically from the HTML version.

This change modifies all system email views. Overriding all email views before upgrading is highly recommended to avoid unexpected changes to system emails. Or, if you've already upgraded, manually create overrides for all email views from the views included with your previous Workarea version.

Issues

Pull Requests

Commits

Changes Browser/Driver for System Tests to Chrome/Selenium

Uses Chrome and Selenium for system tests instead of PhantomJS and Poltergeist.

Existing applications and plugins should update all system tests to work with Chrome/Selenium. Applying the following changes to your existing tests will cover most of the API differences:

If you can't update some or all of your existing tests, you can continue to use PhantomJS/Poltergeist for specific tests, test cases, or your entire suite of system tests. See Drive System Tests with PhantomJS/Poltergeist.

The necessary dependencies for this change are already installed in Workarea Hosting environments. For local development environments, you must have Chrome installed. The other dependencies are handled by Bundler.

This change disables HTTP caching in test environments (using Rack middleware), since Chrome does not provide a reliable way to clear the cache. If you need to re-enable HTTP caching (e.g. to test caching headers), set Workarea.config.strip_http_caching_in_tests = false for the duration of the test.

This change also extends Capybara to make XHR requests blocking, which reduces performance but increases stability.

Issues

Pull Requests

Commits

Changes “Active” to an Internationalized Field

Internationalizes Releasable#active, allowing admins to localize the “activeness” of each releasable.

This change requires a data migration within existing environments. The value of each active field must be updated, since prior to this change, the value is stored as a scalar boolean value rather than a hash keyed by locale.

You may opt out of this change. Workarea.config.localized_active_fields is a feature flag. Set the value to false to disable this feature and avoid the data migration.

Issues

Pull Requests

Commits

Removes Bespoke CSV Imports; Adds Generic Import/Export from JSON/CSV; Changes Bulk Action UI; Adds Bulk Deletion

Removes CSV imports for specific model types and adds a general solution for importing and exporting most models through the Admin. Supports JSON and CSV files.

Improves the bulk selection and action UI, incorporating import/export. Also adds bulk deletion.

Issues

Pull Requests

Commits

Changes Storefront Image Collection Logic; Adds Product Templates

Changes image collection logic to improve matching of images in the Storefront regardless of product template.

Adds “Option Selects” and “Option Thumbnails” product templates. Adds methods to the Details interface.

Issues

Pull Requests

Commits

Deprecates Releases Calendar; Changes Setting of Super Admin Permissions; Adds Releases Calendar Feed

Deprecates the releases calendar within the Admin, which will be removed in Workarea 3.4. Removes link to the releases calendar from the releases index. Retailers are encouraged to use the releases calendar feed instead (see below).

Changes how permissions are set for super admins.

Adds to the Admin a releases calendar feed, which is accessible to administrators with an authentication token for this feature (and super admins). Allows admins to view and subscribe to the calendar of releases within an external calendar client, such as Google Calendar, Apple Calendar, or Outlook.

Issues

Pull Requests

Commits

Adds Low Inventory Report in Admin

Adds a “low inventory report” to the Admin, which includes all inventory SKUs whose sellable is below the configured low inventory threshold. The report is accessible from the inventory SKUs index. The sellable field, which is affected by inventory policy, is new in this change and considered experimental (may be removed in the future).

Data changes are required to ensure the low inventory report is accurate in an existing environment. Touch each existing inventory SKU to populate the sellable field. The field is set during the before_validation callback, or explicitly using Inventory::Sku#set_sellable.

Issues

Pull Requests

Commits

Adds “Displayable When Out of Stock” Inventory Policy

Adds new inventory policy for “Displayable When Out of Stock”. Changes product display rules in the Storefront to incorporate this change (the matching product is included in results, but sorted to the bottom). Changes product purchasable? logic in the Storefront to include inventory.

Issues

Pull Requests

Commits

Changes Setting of Cache Expirations; Adds Cache Varying

Moves cache expirations into configuration. This includes fragment cache expirations, which were previously declared in views/partials.

If you are overriding any of the changed views/partials, your application will continue to use the values in the views instead of the values in configuration.

Adds an easy way to vary Rack cache and fragment caches. This is very dangerous, and should be used with great care. See the documentation on Workarea::Cache::Varies.on for more details.

Issues

Pull Requests

Commits

Changes Address Modeling; Adds Configuration for PO Box Acceptance

Restructures the modeling of addresses to introduce the idea of PO Box acceptance. Adds configs for PO Box acceptance. Improves regex for matching PO Boxes.

Issues

Pull Requests

Commits

Changes Source Location of Categorized Autocomplete

Moves the implementation of categorized autocomplete from Core, duplicating it within Admin and Storefront. This change allows the feature to be extended separately for each UI.

If your application is overriding the categorized autocomplete sources or the Admin or Storefront manifests, you will need to update those files accordingly. You should see a message in the JavaScript console about these changes.

Issues

Pull Requests

Commits

Removes jQuery Validation from Admin

Removes jQuery Validation as an Admin dependency, relying on native validation within each browser instead. Also moves the previously shared configuration from Core to Storefront (where it is now used exclusively).

If your application happens to be overriding the JavaScript configuration file (not recommended), you'll need to move the changes from Core to Storefront manually.

Issues

Pull Requests

Commits

Removes Deprecated Feature Spec Helpers

Removes the feature_spec_helper.* assets, which were renamed to feature_test_helper.* and deprecated by Workarea 3.2.0.

Issues

Commits

Adds Favicon Administration & Automation

Allows admins to select images to be used as favicons. Automates the creation of the necessary images and code for user agents to support the varying favicon formats.

Issues

Pull Requests

Commits

Adds Configurations for Search Facet Sorting

Adds several configs to allow applications to control the ordering of search facet values.

Issues

Pull Requests

Commits

Changes Admin Alerts for Consistency; Adds New Alerts

Updates all Admin alerts messaging for consistency and internationalization. Adds two additional Admin alerts: “Variant Missing Details” and “Inconsistent Variant Details”.

Issues

Pull Requests

Commits

Changes Insights Cards; Adds Sparklines to Admin

Improves the UI of insights cards throughout Admin show pages. Adds sparklines to various Admin screens to provide inline insights.

Issues

Pull Requests

Commits

Adds Admin Guest Browsing

Adds guest browsing for admins, allowing them to create and place orders on behalf of customers without requiring the customers to have or create accounts. Accessible from the users index.

Issues

Pull Requests

Commits

Adds Email Signups Admin

Adds email signups index page to the Admin, accessible from the primary navigation, jump-to navigation, and marketing dashboard. Allows admins to remove users from email signups and delete email signups.

Issues

Pull Requests

Commits

Changes Error Pages

Changes error pages to always use the Workarea error page controller and view rather than falling back to Rails' static HTML pages. Creates the corresponding system content if it does not exist.

Issues

Pull Requests

Commits

Changes Product Rule Logic & Previewing

Allows admins to include undisplayable products when previewing rules in the Storefront. Adds a “not equal” operator to category product rule fields. Changes boolean values in category rules to be case insensitive.

Issues

Pull Requests

Commits

Changes Display Logic for Flash Error Messages

Changes flash messages in the Admin and Storefront to not auto-dismiss if the message type is error.

Issues

Pull Requests

Commits

Adds Shipping Instructions

Allows consumers to provide shipping instructions during checkout. Stored on the Shipping instance. Displays in most order UIs throughout the Admin and Storefront.

Issues

Pull Requests

Commits

Adds “Range” Content Fields

Adds a new content field type, Range, which presents a range control for selecting a numerical value (float).

Issues

Pull Requests

Commits

Adds Polyfill for “Color” Fields

Adds a polyfill for <input type=color> elements, which are used within content fields of type Color. The fields are also used by platform extensions, such as the Swatches plugin.

Issues

Pull Requests

Commits

Changes Storefront UI According to Baymard Recommendations

Applies various changes throughout the Storefront user interface to improve user experience. Changes are based on research and reports from Baymard Institute.

Issues

Pull Requests

Commits

Changes Admin & Storefront UIs to “Clean Up”

Applies various changes to the Admin and Storefront web interfaces and/or their implementations to clean up minor issues.

Issues

Pull Requests

Commits

Changes Interfaces & Implementations to Support Plugins

Applies small changes throughout Base to facilitate new plugins and changes to existing plugins.

Issues

Pull Requests

Commits

Adds Options for Manual Search Indexing

Allows disabling the default “inlining” of search indexing, when run manually from the command line. Use INLINE=false to disable the default behavior. Example: INLINE=false bin/rails workarea:search_index:storefront

Adds BulkIndexAdmin worker and uses the worker to implement the workarea:search_index:admin task, improving performance.

Issues

Pull Requests

Commits

Adds Test Runner for Application-Specific Tests

Adds a test runner which runs only the test files located within the application. Example usage: bin/rails test:app

Issues

Pull Requests

Commits

Adds More Analytics Seeds

Adds more analytics seeds to improve local development.

Issues

Pull Requests

Commits

Changes Scroll-To Buttons Top Offset to a Configurable Value

In the Storefront, makes the WORKAREA.scrollToButtons top offset value configurable via WORKAREA.config.scrollToButtons.topOffset.

Issues

Pull Requests

Commits

Changes Paths to Fix View Overriding

Changes paths to explicitly specify the format as JSON when the endpoint responds to JSON and HTML. Fixes unexpected behavior from Rails when overriding only the JSON view from an application.

Issues

Pull Requests

Commits

Changes Admin Users Index JSON Response to Include All

Changes the Admin users index JSON to include all matching users, instead of excluding the current user. Use the parameter exclude_current_user: true to access the original behavior.

Pull Requests

Commits

Changes Logic for “Canceled” Fulfillment Status

Changes Fulfillment::Status to be canceled even if items have shipped.

Pull Requests

Commits

Changes “Find Pipeline Asset” Query to Include Plugin Paths

Changes FindPipelineAsset#path to search plugin paths in addition to the application and Core.

Issues

Pull Requests

Commits

Changes Cleaning of Expired Orders

Improves order cleaning to remove all expired orders, including those that expired after starting checkout. Previously, these orders weren't cleaned due to oversight.

Issues

Pull Requests

Commits

Adds Locking of Promo Code Lists

Locks promo code lists while generating to avoid unexpected behavior.

Issues

Pull Requests

Commits

Changes Promo Code Discount Condition to Improve Performance

Changes the PromoCodes discount condition to disqualify immediately if there are no promo codes, thereby improving the performance of the qualification.

Issues

Pull Requests

Commits

Changes Seeds to Not Send Email

Disables sending email while seeding.

Pull Requests

Commits

Changes Credit Card Tests

Replaces several unit tests with integration tests for credit card operations. Applies minor changes to the credit card interface to improve compatibility with Active Merchant and improve extensibility.

Issues

Pull Requests

Commits

Adds Automatic Sidekiq Configuration

Adds programmatic configuration of Sidekiq to the platform, removing the need to configure Sidekiq from each application. Removes the Sidekiq configuration file from the app template, since it is no longer needed for new applications.

Issues

Pull Requests

Commits

Changes Mongoid Configuration

Updates the Mongoid configuration to match recommendations from MongoDB and the actual infrastructure configuration used in Workarea Hosting environments.

Commits

Adds Dragonfly Configuration to Ensure CDN; Adds Warning When Data Store is File System

Adds additional Dragonfly configuration to ensure a CDN is used in Production environments. Also adds a warning on boot of the application if the Dragonfly file store is set to file system when the Rails environment is not test or development.

Issues

Pull Requests

Commits

Adds Geocoder Config to Read API Key from Secrets

Adds geocoder configuration which reads from secrets, allowing an API to be included in the configuration.

Issues

Pull Requests

Commits

Deprecates running_in_gem? for Test Cases; Adds Alternative Test Case Methods

Deprecates the test case method running_in_gem?. Adds two new test case methods, which are now preferred: running_from_source? and running_in_dummy_app?.

Issues

Pull Requests

Commits

Removes Running Generators from Plugins

Removes the ability to run generators from plugins because the implementation was causing tests to run with the incorrect Rails environment.

Pull Requests

Commits