Skip to content
CAI
Software that uses CAICheck a score

solidusio/solidus

42.5

Weak · 28 September 2026

48.6k

lines of production code

Ruby

with JavaScript

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a Ruby-based e-commerce platform that provides a modernized administrative interface for managing products, orders, and customers, alongside a RESTful API for external integrations. The admin engine supports complex workflows such as order fulfillment, inventory management, and returns, while the API exposes core resources with standardized JSON serialization. The codebase also includes a standardized Docker development environment and comprehensive testing infrastructure to support these capabilities.

How it got here

2008–2013 — Admin UI overhaul and API modernization

72 changes.

This period focused on a comprehensive redesign of the admin backend, migrating the interface to Bootstrap 4, Backbone.js, and a new theme system while introducing a modern promotions engine. Simultaneously, the API was hardened with stricter authentication, restructured routing, and expanded endpoints for user and order management. The work also included significant dependency updates, test coverage expansion, and the standardization of repository tooling.

2014–2017 — Admin UI modernization and Backbone.js migration

55 changes.

This period focused on modernizing the Solidus admin interface by upgrading to Bootstrap 4 and migrating the JavaScript architecture to Backbone.js with Handlebars templates. The work involved rewriting core admin views for orders, users, and inventory to improve usability and consistency, while establishing a comprehensive style guide and expanding API serialization to Jbuilder.

2018–2023 — Solidus Admin engine development

70 changes.

This period focused on building the new Solidus Admin engine, a modernized interface built on ViewComponent, TailwindCSS, and Hotwire, designed to coexist with and eventually replace the legacy backend. The work involved establishing the core architecture, including controllers, routing, and a comprehensive UI component library, while simultaneously refactoring legacy JavaScript and backend navigation systems. Extensive test coverage and developer tooling, such as Docker environments and Rake tasks, were added to support the new system's integration and maintenance.

2024–2026 — legacy promotion extraction and modernization

21 changes.

This period focused on extracting the legacy promotion system into a standalone extension while introducing a modern storefront built with Tailwind CSS and ViewComponents. Significant effort was also directed toward standardizing the admin interface through a new form builder, reusable testing helpers, and comprehensive test coverage for both the new storefront and the refactored promotion logic.

Features

Ability to remove taxon attachments

Administrators can now remove attachments from taxons. A new \AttachmentController\ has been added to handle the destruction of attachments, providing user feedback via success or error flash messages upon completion.

backend/app/controllers/spree/admin/taxons · high confidence

Add admin style guide page

A new style guide page has been added to the admin interface to help developers approach style and interaction design in smaller, manageable increments and provide a central location for reviewing design changes.

_backend/app/views/spree/admin/style\guide · high confidence

Add admin views for managing store credit reasons

New admin interface views have been added for the Store Credit Reason resource, enabling administrators to list, create, and edit store credit reasons within the Settings \> Checkout section. The index page displays a table of reasons with their active status and provides action links, while the new and edit forms allow users to set the reason name and toggle its active state.

_backend/app/views/spree/admin/store\_credit\reasons · high confidence

Add dark and dimmed theme variants to the admin UI

The admin interface now supports alternative visual themes alongside the default light mode. New stylesheet files introduce 'dark' and 'dimmed' variants that apply CSS filters to invert colors and adjust contrast, while specifically correcting image rendering (inverting filters and setting background colors) to ensure media displays correctly in these modes. This change is implemented via new Tailwind CSS configuration files and theme-specific stylesheets within the admin assets directory.

admin/app/assets/stylesheets · high confidence

Add messaging components to the admin style guide

The admin style guide now includes dedicated documentation and interactive examples for three messaging patterns: flash notifications, loading progress indicators, and Bootstrap tooltips. Users can view and test success, notice, and error flash messages, toggle a progress spinner with instant animation, and see examples of info and action tooltips to ensure consistent UI feedback in the admin interface.

_backend/app/views/spree/admin/style\guide/topics/messaging · high confidence

Add selectable table header and return item summary for return orders

The backend now supports a selectable table interface for return items, including a header row with a 'select all' checkbox and a summary row that displays the total pre-tax refund amount. This is implemented via new JavaScript components (return\_items.js, summary.js) and Handlebars templates (selectable\_label.hbs, return\_item\_sum\_amount.hbs) that initialize the selectable table behavior and render the summary footer when applicable.

_backend/app/assets/javascripts/spree/backend/components/selectable\table, backend/app/assets/javascripts/spree/backend/templates/tables · high confidence

Add selectable table summary and return item amount views

The backend selectable table component now includes dedicated views to display selection status and financial summaries. A new summary view renders a label indicating how many items are selected (none, one, all, or a specific count) and handles the 'select all' checkbox interaction. Additionally, a new view calculates and displays the total pre-tax refund amount for selected return items, formatting the currency value based on the number of decimal places found in the selected prices.

_backend/app/assets/javascripts/spree/backend/views/tables/selectable\table · high confidence

Add style guide documentation for admin tables

The admin style guide now includes a dedicated section for tables, providing developers with reference examples for building selectable tables with item details and pricing, implementing pagination controls, and following best practices for forms within table layouts.

_backend/app/views/spree/admin/style\guide/topics/tables · high confidence

Add style guide documentation for modals, pills, and tabs components

The admin style guide now includes dedicated documentation pages for three UI components: modals, pills, and tabs. The new modals page demonstrates how to use the shared modal partial with trigger buttons, specifying target, title, and content locals. The pills page showcases status indicators (such as Complete, Active, Pending, Warning, Error) in both standalone examples and realistic table contexts for orders and promotions. The tabs page provides a basic example of the tab navigation component. These additions help developers understand and correctly implement these existing visual elements within the admin interface.

_backend/app/views/spree/admin/style\guide/topics/components · high confidence

Added form design guidelines and examples to the admin style guide

The admin style guide now includes a new 'Building Forms' section with documentation and visual examples for form inputs, labels, helper text, validation states, and layout patterns. This addition provides developers with concrete guidelines on how to structure forms, handle validation errors, and arrange fields, serving as a reference for consistent UI implementation within the admin interface.

_backend/app/views/spree/admin/style\guide/topics/forms · high confidence

Added syntax highlighting and sticky navigation support

The backend vendor assets now include Prism.js for syntax highlighting code blocks (supporting markup, CSS, C-like languages, JavaScript, and Ruby) along with its default theme styles, and the jQuery Sticky Kit library to enable sticky positioning for admin navigation elements.

backend/vendor/assets/javascripts · high confidence

Admin UI for associating shipping methods with stock locations

Administrators can now explicitly associate shipping methods with specific stock locations via a new picker interface in the admin panel. This change introduces a JavaScript component that manages the visibility of the stock location selection dropdown based on a checkbox, allowing users to define which locations fulfill a given shipping method.

backend/app/assets/javascripts/spree · high confidence

Admin product properties interface now supports variant-level property rules

The admin interface for managing product properties has been updated to allow assigning properties to specific product variants. In addition to the existing product-level properties, administrators can now define variant property rules that apply to selected option values (e.g., size or color combinations). The interface includes a dedicated section for filtering variant options and adding associated properties, with support for rules that apply to all variants or specific combinations. The UI uses HTML5 datalists for property selection and includes sorting capabilities for both product and variant property lists.

_backend/app/views/spree/admin/product\properties · high confidence

Admin product search now supports filtering by SKU including discarded items

The admin product index now includes a search view that allows administrators to search for products by SKU. A new toggle enables users to include discarded products in their search results; when enabled, the search input switches to query all variants (including discarded ones), and when disabled, it restricts results to active variants only. This change ensures that SKU-based searches are comprehensive and do not inadvertently hide products that have been marked as discarded.

backend/app/assets/javascripts/spree/backend/products, backend/app/assets/javascripts/spree/backend/views/product · high confidence

Expanded Select2 locale support in the admin interface

The Solidus admin interface now includes a broader set of localization files for the Select2 dropdown component, covering languages such as Arabic, Azerbaijani, Bulgarian, Catalan, Czech, Danish, German, Greek, and many others. This ensures that error messages, search prompts, and selection limits in the admin's search fields are displayed in the user's preferred language.

_backend/vendor/assets/javascripts/solidus\_admin/select2\locales · high confidence

Expanded admin style guide with typography, color, and icon documentation

The Solidus admin style guide has been updated to include dedicated documentation sections for colors, fonts, icons, and lists. Users can now view the specific hex values and Sass variable names for the UI's color palette (including primary, success, danger, and warning states), see examples of the Inter/Helvetica font stack and heading styles, and review usage examples for Font Awesome icons and helper methods like \icon\ and \button\. Additionally, the guide now displays the styling for unordered and definition lists, providing a comprehensive reference for backend UI consistency.

_backend/app/views/spree/admin/style\guide/topics/typography · high confidence

Extract legacy promotion system into a standalone extension

The classic Spree/Solidus promotion system (including models, calculators, actions, rules, admin views, and JavaScript) has been extracted from the core gems into the new \solidus\_legacy\_promotions\ extension. This change moves promotion-specific logic out of the main codebase, meaning the legacy promotion features are now opt-in via the \solidus\_legacy\_promotions\ gem rather than being bundled by default. The extension includes the full rule-based promotion engine, admin UI for managing promotions, and the necessary assets to support the legacy workflow.

_legacy\promotions · high confidence

Initial configuration for the new Solidus Admin interface

This change introduces the foundational configuration files for the new Solidus Admin gem, establishing the frontend and routing infrastructure. It sets up an Importmap to manage JavaScript dependencies including Hotwire (Stimulus and Turbo), SortableJS, and TomSelect, while configuring Tailwind CSS with a custom color palette and plugins to define the admin's visual style. Additionally, it defines the initial routing table for the admin engine, mapping resources such as products, orders, users, and taxonomies to their respective controllers, with many features gated behind the \enable\_alpha\_features?\ configuration flag.

admin/config · high confidence

Introduce SolidusAdmin v0.4.0 as a new admin interface engine

This release introduces the new SolidusAdmin engine (v0.4.0), providing a modernized admin interface built on ViewComponent, Stimulus, Turbo, and Tailwind CSS. The engine features a configurable component registry for automatic component loading, a flexible menu system with dynamic path matching, and dedicated configuration for authentication, logout, and alpha features. It also includes an importmap-based JavaScript setup with cache sweeping and a Tailwind CSS installation script to integrate styling into the host application.

_admin/lib/solidus\admin · high confidence

Introduce custom SolidusAdmin form builder

A new \SolidusAdmin::FormBuilder\ class has been added to standardize form rendering within the admin interface. This builder delegates specific input methods (text, textarea, select, checkbox, switch, hidden) to dedicated UI components, ensuring consistent styling and behavior. Notable behaviors include automatically deriving checkbox labels from human attribute names, supporting optional hints for checkboxes, and defaulting switch fields to include a hidden input for proper form submission.

admin/app/lib · high confidence

Introduce new Solidus Promotions engine with admin UI and migration path

This change adds the \solidus\_promotions\ engine, providing a new promotion system to replace the legacy implementation. It includes a new admin interface for managing promotions, benefits, and conditions, powered by Hotwire (Turbo/Stimulus) and custom web components for product, taxon, and variant selection. The engine introduces configurable promotion lanes, coupon code normalization, and a migration guide (\MIGRATING.md\) to help users transition from \solidus\_legacy\_promotions\. It also adds background jobs for batch promotion code generation and mailers for notifications.

promotions · high confidence

Introduce solidus\_storefront as a new, modern storefront component

This change introduces the \solidus\_storefront\ component, a new Rails application template that provides a modern, minimal, and semantic storefront for Solidus. It replaces the previous \solidus\_starter\_frontend\ and is installed via the \solidus:install\ generator. The new storefront is built with Tailwind CSS for styling, ViewComponent for reusable UI parts, and Hotwire (Turbo/Stimulus) for interactivity. It includes a comprehensive test suite with system specs, a Docker-based development environment, and a sandbox for local testing. The installation process now requires Rails 7+ and Ruby 2.7+, and it automatically adds \solidus\_auth\_devise\ as a dependency.

storefront · high confidence

Introduction of the SolidusAdmin gem entry point

A new entry point file for the SolidusAdmin gem has been added, establishing the core loading sequence for the admin interface. This file explicitly requires the foundational dependencies solidus\_core and solidus\_backend, and initializes the SolidusAdmin module by loading its version, importmap configuration, menu item definitions, preview capabilities, and engine setup. This change consolidates the gem's initialization logic, ensuring that the necessary backend and core components are available before the admin-specific features are loaded.

admin/lib · high confidence

Introduction of the new Solidus Admin engine

A new \solidus\_admin\ gem has been added to the \admin/\ directory, providing a modern administrative interface for the Solidus e-commerce platform. Built on ViewComponent, TailwindCSS, StimulusJS, and Turbo, it serves as a drop-in replacement for the existing \solidus\_backend\. The engine includes its own routes, controllers, and a component generator (\solidus\_admin:component\) for extending functionality. It is designed to coexist with \solidus\_backend\, allowing users to switch between the two interfaces via a cookie or query parameter, and is included by default in new Solidus 4.3+ stores.

admin · high confidence

New API endpoints for user address books and order-scoped addresses

API clients can now manage a user's address book and update order addresses via dedicated endpoints. The new \AddressBooksController\ allows authenticated users to view, add, update, and remove addresses associated with their profile, while the \AddressesController\ enables updating the billing or shipping address on an existing order. Both controllers enforce authorization checks to ensure users can only modify their own data or orders they are permitted to access.

api/app/controllers · high confidence

New Docker-based development environment for Solidus

Developers can now use a standardized Docker setup for local development, replacing previous methods. The new environment is based on Debian Bookworm and includes pre-installed dependencies for PostgreSQL, MySQL, Node.js, and image processing (libvips, ImageMagick). It also configures git safe directories for bind-mounted volumes and sets up psql history tracking, providing a consistent and reproducible local development experience.

.dockerdev · high confidence

New Docker-based local demo environment for Solidus

Users can now run a local instance of the Solidus demo application using Docker. This change introduces a Dockerfile, an entrypoint script, and documentation in the lib/demo directory, enabling developers to quickly build and run a containerized version of the demo on port 3000 for testing and demonstration purposes.

lib/demo · high confidence

New Moveable controller concern for reordering items

A new \SolidusAdmin::Moveable\ concern has been added to the admin controllers, providing a reusable \move\ action that allows users to reorder items by position. This concern handles loading the specific record, authorizing the action, and inserting the item at the requested position via a JavaScript response, while automatically inferring the model class from the controller name or allowing explicit override.

admin/app/controllers/concerns · high confidence

New Rake tasks for importmap JSON and Tailwind CSS installation

Added two new Rake tasks to the \solidus\_admin\ namespace to streamline local development and setup. The \solidus\_admin:importmap:json\ task renders the admin's importmap configuration as JSON, aiding in debugging asset loading. The \solidus\_admin:tailwindcss:install\ task automates the installation of Tailwind CSS into the host application by invoking a Rails template, simplifying the initial styling setup for the admin interface.

admin/lib/tasks · high confidence

New SCSS mixins for caret and line-through effects

The backend stylesheets now include two new reusable mixins: \\_caret\ and \\_line\_through\. The \\_caret\ mixin generates directional arrow indicators (up, down, left, right) using CSS borders, allowing for consistent styling of dropdowns or tooltips. The \\_line\_through\ mixin creates a strikethrough text effect by positioning a horizontal line behind the text content, ensuring proper visual layering. These additions standardize how these common UI elements are rendered in the Spree backend.

backend/app/assets/stylesheets/spree/backend/globals/mixins · high confidence

New SolidusAdmin component generator with Stimulus integration and preview support

The admin now includes a specialized generator for SolidusAdmin components that produces a complete scaffold including a Ruby class inheriting from SolidusAdmin::BaseComponent, an HTML template with Stimulus controller integration, a JavaScript controller for handling input events, a ViewComponent preview class for the admin preview pane, and an RSpec test suite. This allows developers to quickly create new admin UI components with built-in testing and preview capabilities.

_admin/lib/generators/solidus\admin/component/templates · high confidence

New SolidusAdmin component generator with preview support

A new \solidus\_admin:component\ generator has been added to create SolidusAdmin components, including Ruby classes, HTML templates, i18n files, JavaScript controllers, and specs. The generator now supports creating component previews by default, allowing developers to easily test and document their components in Lookbook. It also includes options to control which files are generated (HTML, i18n, JS, spec, preview) and handles namespace setup and inflections correctly for the admin area.

_admin/lib/generators/solidus\admin/component · high confidence

New admin UI for managing adjustment reasons

Administrators can now create, edit, and delete adjustment reasons directly in the new admin interface. This includes a dedicated index page with search and batch deletion, and modal forms for creating and editing reasons, allowing users to define the name, code, and active status for order adjustments.

admin/app/components · high confidence

New admin controller for managing order customer details

A new \CustomerDetailsController\ has been added to the admin orders area, providing dedicated \show\, \edit\, and \update\ actions for managing order customer information. This change allows administrators to update order email addresses and billing/shipping addresses post-purchase, associate orders with specific users (when not using guest checkout), and handle insufficient stock errors gracefully. The controller also ensures that shipment rates are refreshed appropriately when the order is not yet complete.

backend/app/controllers/spree/admin/orders · high confidence

New admin interface for managing Spree stores

The admin panel now includes a dedicated section for managing Spree stores, allowing administrators to create, edit, and view store configurations. The new form supports fields for store name, code, URL, SEO metadata, email settings (including BCC), default currency, cart tax country, and available locales. It also conditionally displays reverse charge status fields based on backend configuration. The interface uses a two-column layout for the form, integrates Select2 for locale selection, and provides a list view showing store name, URL, and default status.

_backend/app/views/spree/admin/return\authorizations, backend/app/views/spree/admin/stores · high confidence

New admin interface for managing order adjustments

The admin backend now includes a dedicated interface for managing order adjustments, featuring an index page that lists adjustments with their label, amount, and state, along with a form to create or edit them. The index view allows administrators to add coupon codes directly and provides bulk actions to finalize or unfinalize all adjustments for an order. Edit and new forms include fields for amount, label, and adjustment reason, with edit actions restricted to non-finalized adjustments to ensure data integrity.

backend/app/views/spree/admin/adjustments · high confidence

New admin interface for managing product prices with country and currency support

The admin panel now includes a dedicated 'Prices' tab within the product overview, allowing administrators to view, create, edit, and delete prices for both master and variant items. This interface supports filtering by variant, currency, country, and amount, and displays prices in paginated tables. When editing or creating a price, users can select the variant, specify a country (including 'any country'), and input the amount with currency formatting. The system also respects user permissions for editing and deleting prices, and correctly handles discarded (soft-deleted) records.

backend/app/views/spree/admin/prices · high confidence

New admin interface for viewing stock movements

The admin panel now includes a dedicated index view for stock movements, allowing users to browse inventory changes associated with a specific stock location. This new page features a breadcrumb navigation trail, a filterable search interface (currently supporting filtering by variant SKU), and a table displaying the variant, quantity, and originator of each movement. It also includes pagination using the solidus\_admin theme and handles empty states with a standardized 'no objects found' partial.

_backend/app/views/spree/admin/stock\movements · high confidence

New admin theme system with classic and solidus\_admin variants

The backend now supports a new theming system for the admin interface, introducing two distinct visual styles: 'classic' and 'solidus\_admin'. The 'solidus\_admin' theme features a modernized color palette (including specific reds, grays, and accents) and updated table styling with rounded corners, while the 'classic' theme preserves the legacy look. Both styles are available in standard, dark, and dimmed variants, with dark/dimmed modes implemented via CSS filters to invert colors while preserving image integrity.

backend/app/assets/stylesheets/spree/backend/themes · high confidence

New admin views for managing reimbursements

The admin interface now includes dedicated views for the reimbursement workflow. The index page lists all reimbursements for a customer return, displaying status as pills and total amounts. The edit page allows administrators to review items to be reimbursed, override reimbursement types, adjust amounts, and select exchange variants, while also showing calculated reimbursement objects and warning if the order has already received other refunds. The show page provides a detailed view of reimbursed items, associated refunds, and any credits applied to the reimbursement.

_backend/app/views/spree/admin/adjustment\reasons, backend/app/views/spree/admin/reimbursements · high confidence

New autocomplete template for customer details in order admin

The backend now includes a dedicated Handlebars template for the customer details autocomplete component in the order admin interface. This template structures the display of customer information, specifically rendering the customer's email and, when available, the billing address details including name, street address, city, state, and country. This change enables the backend to properly format and present customer search results within the order management workflow.

_backend/app/assets/javascripts/spree/backend/templates/orders/customer\details · high confidence

New development and release tooling scripts

The repository now includes a suite of new executable scripts in the \bin/\ directory to streamline development, testing, and release workflows. Developers can use \bin/dev\ to start the sandbox with Foreman, \bin/sandbox\ to generate an isolated test environment, and \bin/rspec\ to run specs across specific Solidus components (admin, api, backend, core, etc.). The \bin/build\ script orchestrates the full test suite across all components, while \bin/console\ provides a pre-configured IRB session with the dummy app. Additionally, a new \bin/release/\ directory contains helper scripts for version bumping, changelog updates, and GitHub release management.

bin · high confidence

New install generator for Solidus Admin with configurable mount point and feature flags

The Solidus Admin installation process is now driven by a new \InstallGenerator\ that allows users to customize the admin's URL mount point (defaulting to the host app's route prefix plus 'admin') and control access via URL parameters or cookies. The generator supports optional installation of TailwindCSS for custom styling and Lookbook for component previews, and it generates a new initializer (\config/initializers/solidus\_admin.rb\) to manage configuration, including enabling unstable alpha features.

_admin/lib/generators/solidus\admin/install · high confidence

New order cancellations index view with inventory tabs

The admin interface now includes a dedicated index view for order cancellations, accessible via the 'Cancel Inventory' tab in the order details section. This view displays a table of inventory units with their associated product images, descriptions, SKUs, quantities, states (rendered as pills), and shipment numbers, allowing administrators to select specific units for cancellation through checkboxes.

backend/app/views/spree/admin/cancellations · high confidence

New storefront template assets and configuration

The storefront templates now include a complete set of frontend assets, including a new asset manifest linking Solidus-specific JavaScript and CSS alongside Tailwind, new SVG logos (full, white, and small variants), and a bundled RemixIcon sprite with its Apache 2.0 license. The templates also introduce dedicated JavaScript modules for checkout (handling address state lookups and form submission states), product pages (variant selection and image updates), and a product selection component, along with a Tailwind CSS configuration defining the new visual theme and utility classes.

storefront/templates · high confidence

New testing support helpers for Solidus Admin integration tests

The Solidus Admin testing support library now includes a suite of new RSpec helpers to streamline integration testing. Developers can use \mock\_component\ to easily stub component classes, and \solidus\_select\/\solidus\_unselect\ to interact with the custom select UI components, including support for selecting multiple values. Additional helpers like \select\_row\ (with synchronization for checkbox state), \accept\_turbo\_confirm\ for handling Turbo confirm dialogs, and \switch\ for toggling checkboxes are now available. The suite also includes \sign\_in\ and \stub\_authorization!\ for managing user context and permissions, and \admin\_assets\ to ensure Tailwind CSS is built before test suites run.

_admin/lib/solidus\_admin/testing\support · high confidence

Solidus sample data is now loaded via a dedicated rake task

The \solidus\_sample\ gem now provides a \spree\_sample:load\ rake task to populate the database with test data. This task seeds essential configuration entities (payment methods, shipping categories, tax settings), creates a sample store, and generates a catalog of products with variants, images, and stock. It also creates sample orders, processes payments, and sets up a complete return and reimbursement workflow, allowing users to quickly test store functionality.

sample · high confidence

Security

Require API authentication tokens and remove JSONP support

All API endpoints now require a valid authentication token, enforcing stricter access control. Additionally, JSONP support has been removed from the API, simplifying the interface and reducing potential security surface area.

core · high confidence

Architecture

Admin backend helpers moved to dedicated modules

The admin helper methods previously located in the core Spree module have been relocated into specific backend helper modules (such as AdjustmentsHelper, NavigationHelper, OrdersHelper, and StockMovementsHelper). This change organizes the codebase by separating backend-specific UI logic from the core application, ensuring that these helpers are only loaded when the admin interface is active.

backend/app/helpers · high confidence

Centralized admin routing configuration

The backend admin routes are now defined in a single, centralized configuration file (backend/config/routes.rb) within the Spree::Core::Engine namespace. This change consolidates the routing structure for the admin interface, explicitly defining paths for core resources such as products, orders, stock management, and users, while also introducing specific endpoints for theme and locale settings, order advancement, and stock transfers.

backend/config · high confidence

Behavioural changes

API attribute configuration moved to lib and expanded

The API's attribute configuration has been moved from the app directory to lib/spree/api\_configuration.rb, centralizing the definition of which fields are exposed for resources like products, variants, orders, and addresses. This change introduces new default attributes to the API responses, including primary\_taxon\_id for products, GTIN and condition for variants, and email, vat\_id, and reverse\_charge\_status for addresses. It also adds customer\_metadata support to orders, line items, payments, shipments, and users, while deprecating the direct setting of promotion\_attributes in favor of using the promotions configuration object.

api/lib/spree · high confidence

Add API configuration endpoints and restructure API routes

The API now exposes two new endpoints, /api/config and /api/config/money, allowing clients to retrieve Spree's money settings and general configuration. Additionally, the API routing structure has been reorganized to use native Rails routing concerns (such as :order\_routes) and namespaces, streamlining the definition of resources like orders, shipments, and variants while removing deprecated or duplicated route definitions.

api/config · high confidence

Add Solidus Admin pagination theme

The Solidus Admin backend now uses a custom Kaminari pagination theme that renders page controls using Bootstrap 4 classes. This change ensures pagination components are consistently centered and styled with the 'page-link' and 'page-item' classes, providing a unified look across admin interfaces.

backend/app/views/kaminari · high confidence

Add Solidus backend library shim for Spree compatibility

A new \solidus\_backend.rb\ file has been added to the backend library, which acts as a compatibility shim by requiring the existing \spree\_backend\ file. This change enables users to require the library using the \solidus\_backend\ name instead of \spree\_backend\, facilitating a smoother transition or coexistence between the two naming conventions.

backend/lib · high confidence

Add dedicated form field partials for admin preference types

The admin interface now uses specific view partials for rendering preference fields, introducing dedicated templates for boolean, decimal, encrypted string, integer, password, string, and text types. This change ensures that each preference type is rendered with the appropriate HTML input element (such as number fields for integers or password fields for sensitive data) and applies consistent styling classes like 'fullwidth' to improve the visual consistency and usability of the admin configuration forms.

_backend/app/views/spree/admin/shared/preference\fields · high confidence

Admin JavaScript stack upgraded to Hotwire (Turbo/Stimulus) with custom web components

The admin interface has been refactored to use Hotwire's Turbo and Stimulus libraries, replacing the previous JavaScript architecture. This introduces a new Stimulus application with eager loading of controllers, a custom confirmation modal handler integrated with Turbo, and a new \solidus-select\ web component built on TomSelect with support for remote pagination and custom plugins. Additionally, new controllers handle sortable lists, field locking during submission, and alert animations, while a custom elements polyfill ensures Safari compatibility.

admin/app/javascript · high confidence

Admin UI components refactored to Backbone.js views

The admin interface's JavaScript logic for managing orders, customers, stock, payments, and general UI elements (such as currency formatting and state selection) has been restructured into individual Backbone.js views. This change introduces specific view files for features like the number-with-currency widget, state selection with memoized caching, and various order/stock management tables, replacing previous inline or CoffeeScript implementations to improve code organization and maintainability.

backend/app/assets/javascripts/spree/backend/views · high confidence

Admin UI for Refund Reasons migrated to Settings Checkout Tabs

The admin interface for managing refund reasons has been updated to integrate with the new settings navigation structure. The index, new, and edit views now utilize the \settings\_checkout\_tabs\ partial for layout and employ the \admin\_breadcrumb\ helper for consistent navigation trails. The index view displays refund reasons in a table with pill-style indicators for active/inactive states, while the form views render a shared partial for input fields, ensuring a unified look and feel with other settings sections.

_backend/app/views/spree/admin/refund\reasons · high confidence

Admin UI for customer returns and reimbursements

The admin interface for managing customer returns has been updated with new views and partials. The index page now displays return totals excluding VAT and reimbursement status. The creation form allows selecting items from existing RMAs or new orders, specifying a stock location, and choosing return reasons. The edit view organizes return items into sections (manual intervention, pending, accepted, rejected) and provides buttons to accept or reject items, as well as create reimbursements. Reimbursements are displayed in a dedicated table showing status pills.

_backend/app/views/spree/admin/customer\returns · high confidence

Admin UI for shipping methods now supports carrier, service level, store, and tax category configuration

The admin interface for managing shipping methods has been updated to include new configuration fields. Administrators can now specify a carrier and service level, associate shipping methods with specific stores via a multi-select, and assign a tax category to ensure shipments are taxed correctly. The form also exposes stock location associations, tracking URL settings, and availability controls (available to all stock locations vs. specific ones, and available to users). The index view displays these details, including the admin name, associated zones, and calculator description, while the edit and new forms utilize a shared partial for consistent field rendering.

_backend/app/views/spree/admin/shipping\methods · high confidence

Admin UI now uses RemixIcon v4.9.1 for navigation and sidebar elements

The admin interface has been updated to use the RemixIcon library (version 4.9.1) for its visual assets. This change introduces a new sprite file (\remixicon.symbol.svg\) and associated license text to \admin/app/assets/images/solidus\_admin/\, replacing previous icon implementations. As a result, the main navigation items in the admin sidebar and the store link styling now utilize these standardized icons, providing a consistent and modern icon set across the admin panel.

admin/app/assets/images · high confidence

Admin UI overhaul: new navigation, themes, and localized forms

The admin backend has been refactored with a new left-sidebar navigation layout, replacing the previous structure. Administrators can now switch between light and dark themes, select their preferred locale, and choose their timezone directly from the sidebar. The address forms have been updated to include email, VAT ID, and reverse charge status fields, and the order summary sidebar now displays additional tax details (included and additional tax) alongside the standard totals. The interface also supports multiple locales with a dedicated locale selector and provides a theme selector for visual customization.

backend/app/views/spree/admin/shared · high confidence

Admin actions now use Turbo Stream for instant updates

The Solidus Admin interface now handles create, update, and destroy actions for option values via Turbo Stream responses instead of full page reloads. This change introduces specific \.turbo\_stream.erb\ view templates that dynamically update the option values table, clear the resource form frame, and refresh flash messages, resulting in a smoother, faster user experience without requiring a page refresh.

_admin/app/views/solidus\admin · high confidence

Admin adjustment reasons form uses Bootstrap 4 grid and labels

The shared form partial for adjustment reasons in the admin interface has been updated to use Bootstrap 4 classes, replacing the older Bootstrap 3 'col-xs-3' with 'col-3' and using self-closing '\<br\>' tags. Additionally, required field labels now use the 'required' class directly on the label element instead of an extra span, and the active checkbox label uses attribute translations for better localization.

_backend/app/views/spree/admin/adjustment\reasons/shared · high confidence

Admin backend controllers migrated to new ResourceController architecture

The admin backend controllers have been refactored to inherit from a new \Spree::Admin::ResourceController\ (and \BaseController\), replacing the previous implementation. This change introduces a standardized, callback-driven lifecycle for CRUD operations (new, edit, create, update, destroy) across all admin resources, including Orders, Products, Payments, and Returns. For users, this results in more consistent behavior and error handling throughout the admin interface, such as uniform flash messages, standardized authorization checks, and improved performance through eager loading and N+1 query fixes in controllers like \OrdersController\ and \ProductsController\.

backend/app/controllers/spree/admin · high confidence

Admin backend styles consolidated into section-specific partials

The admin interface's CSS has been reorganized to improve maintainability and reduce global style conflicts. All backend styles have been moved from a single large file into individual, domain-specific partials (such as orders, products, stock management, and the style guide) located in the sections directory. These partials are now imported via a central index file, ensuring that styles are scoped to their respective admin sections (e.g., order totals, product forms, stock tables) without affecting unrelated parts of the interface.

backend/app/assets/stylesheets/spree/backend/sections · high confidence

Admin backend styling variables reorganized with deprecation warnings

The admin backend's global Sass variables have been reorganized into a structured set of partials (\_variables, \_deprecated\_variables, \_deprecation, etc.) to improve maintainability and customization. A new \\_variables\_override.scss\ file is provided, allowing host applications to easily override default colors, fonts, and layout settings without modifying core files. Additionally, a deprecation system is introduced via \\_deprecation.scss\ and \\_deprecated\_variables.scss\; if custom variables are redefined in the override file, Sass warnings will be emitted during compilation to guide users toward the new variable names before the old ones are removed in version 3.0.

backend/app/assets/stylesheets/spree/backend/globals · high confidence

Admin backend uses configured unauthorized redirect handler

The Solidus Admin backend authentication adapter now delegates unauthorized access handling to the configured \Spree::Backend::Config.unauthorized\_redirect\_handler\_class\. This ensures that when a user is not authenticated, the redirect behavior is consistent with the broader Spree backend configuration rather than using a hardcoded or default logic.

_admin/app/controllers/solidus\_admin/authentication\adapters · high confidence

Admin interface adopts Inter font and updated Bootstrap styling

The admin backend now uses the Inter font family for a modernized look and applies Bootstrap 4 styling overrides via a new \\_bootstrap\_custom.scss\ file. This change adjusts the root font size to 13px, updates brand colors (primary, secondary, red, orange, green) to use internal theme variables, and modifies component styles such as breadcrumbs, dropdowns, and forms to align with the new design system.

backend/app/assets/stylesheets/spree/backend · high confidence

Admin interface visual overhaul with new typography and layout

The admin backend has been restyled to use the Inter font family and a new layout structure, replacing the previous skeleton-based grid with a flexbox sidebar and content wrapper. This change updates the visual appearance of forms, tables, and headers, ensuring consistent styling across the interface and improving the rendering of icons and responsive elements.

backend/app/assets/stylesheets/spree/backend/shared · high confidence

Admin order cart and shipping sections use Handlebars templates

The admin order interface now renders line items, adjustments, shipping methods, and shipment tracking using dedicated Handlebars partials. This change introduces inline editing capabilities for line items (with quantity validation and save/cancel actions), dynamic adjustment row rendering, and a new shipping method selector that displays available rates and costs. Shipment tracking is now editable inline with its own view, improving the overall interactivity of the order management cart.

backend/app/assets/javascripts/spree/backend/templates/orders · high confidence

Admin order management UI refactored into modular Backbone views

The admin backend's order creation and editing interface has been restructured to use dedicated Backbone views for specific sections, including address entry, customer selection, shipping method, shipment tracking, and order summary. This change introduces new fields (email, VAT ID, reverse charge status) to the address form, replaces the customer search with an AJAX-powered Select2 component using the API, and updates the shipping method selection to fetch rates via API endpoints. Additionally, the adjustments display now aggregates all adjustments rather than filtering by eligibility, and the customer details view now correctly handles guest checkout states and user ID persistence.

backend/app/assets/javascripts/spree/backend/views/order · high confidence

Admin payment source forms moved to backend and restructured

The payment source form partials (for check, gateway, and store credit) have been moved from the frontend to the backend admin area. The gateway form now explicitly includes fields for the cardholder's name and billing address, and uses Bootstrap grid classes for layout. Store credit payments now display a 'not supported' message in the admin interface.

_backend/app/views/spree/admin/payments/source\forms · high confidence

Admin payment views rewritten with new UI components and logging

The admin payment interface has been updated to display payment state using pill badges, show payment capture events and log entries on the payment detail page, and allow inline editing of payment amounts in the list view. The new payment form now uses radio buttons for method selection and conditionally renders source forms only when required, while the index page displays outstanding balance and handles empty states with a specific message.

backend/app/views/spree/admin/payments · high confidence

Admin properties views migrated to Bootstrap 4 and Solidus Admin theme

The admin properties interface has been updated to use Bootstrap 4 grid classes (e.g., \col-6\ instead of \col-xs-6\) and the Solidus Admin pagination theme. The property list now includes a search filter for property names and displays a specific message when no properties are found. The form and edit views have been refactored to use new breadcrumb helpers and standardized button tags, improving consistency with the rest of the admin panel.

backend/app/views/spree/admin/properties · high confidence

Admin search API now returns expanded user address details

The admin search endpoints for products and users have been migrated from RABL to Jbuilder views. The user search response now includes comprehensive address information (shipping and billing), specifically adding the name, vat\_id, and reverse\_charge\_status fields to the address data returned for each user, alongside existing fields like email, city, and state/country names.

backend/app/views/spree/admin/search · high confidence

Admin shipping category views migrated to new layout and helper conventions

The admin interface for managing shipping categories has been updated to use the new shared shipping tabs partial and the modern breadcrumb helper system, replacing the previous content\_for-based title approach. The list, create, and edit pages now utilize standardized helper methods for resource naming and action links, and the 'no objects found' state is rendered via a shared partial for consistency across the admin panel.

_backend/app/views/spree/admin/shipping\categories · high confidence

Admin tax category views migrated to Bootstrap 4 and modern helpers

The admin interface for managing tax categories has been updated to use Bootstrap 4 grid classes (e.g., \col-3\ instead of \col-xs-3\) and modern Rails view helpers. The form layout now uses a row-based structure with specific column widths for name, tax code, default status, and description fields. Breadcrumbs are implemented using the new \admin\_breadcrumb\ helper, and the index page utilizes the shared \no\_objects\_found\ partial for consistent empty-state messaging. These changes improve the visual consistency and responsiveness of the tax category management screens within the admin panel.

_backend/app/views/spree/admin/tax\categories · high confidence

Admin taxonomies views migrated to new layout and helper conventions

The taxonomy management interface in the admin panel has been updated to use the new breadcrumb helper system, replacing the previous content\_for(:page\_title) approach. The edit and new forms now utilize button\_tag for submission actions and render shared partials for the taxonomy name field and list display. The index view now correctly handles empty states by rendering a shared 'no objects found' partial instead of showing an empty list, and the taxonomy tree structure is rendered via a dedicated partial that supports nested taxons with icons.

backend/app/views/spree/admin/taxonomies · high confidence

Admin variant management restructured with new form, table, and filtering UI

The admin interface for managing product variants has been reorganized into dedicated partials (\_form, \_table, \_table\_filter) and updated views (index, new, edit). Users can now search and filter variants by name, with an option to include deleted variants in the results. The variant form has been restructured to group fields into logical sections (SKU, GTIN, condition, inventory tracking, options, dimensions, pricing, tax, and shipping categories), and the pricing section now supports rebuilding VAT prices. The variant list view includes pagination, sortable rows, and displays deleted variants with a distinct style. The new variant creation flow is now integrated directly into the product tabs, and the update action returns JSON for potential AJAX handling.

backend/app/views/spree/admin/variants · high confidence

Adopt manifest-based asset pipeline for Solidus Admin

The Solidus Admin engine now uses a centralized manifest file to manage asset linking, replacing the previous approach of precompiling specific admin assets. This change introduces a standard Sprockets configuration that automatically includes images, JavaScript, and CSS files from the builds, stylesheets, and components directories, ensuring a more consistent and maintainable asset pipeline for the admin interface.

admin/app/assets/config · high confidence

Adopts Flatpickr for date and time selection UI

The admin interface now uses the Flatpickr library for date and time inputs, replacing the previous jQuery UI datepicker. This change introduces a new stylesheet for Flatpickr, which updates the visual appearance of calendar popups, navigation arrows, and input fields to match Flatpickr's default styling and animation behaviors.

_backend/vendor/assets/stylesheets/solidus\admin/flatpickr · high confidence

Automated Tailwind CSS build integration for the dummy application

The dummy application now includes a Rake task that automatically builds Tailwind CSS styles during asset precompilation and test preparation. This ensures that the admin interface's styling is correctly generated in development and testing environments without manual intervention.

_admin/lib/solidus\_admin/testing\_support/dummy\app · high confidence

Backend JavaScript rewritten in plain JS with Backbone.js and modernized APIs

The backend admin interface has been significantly refactored: all CoffeeScript files have been converted to plain JavaScript, and the codebase has been migrated to use Backbone.js for view and model management. API interactions now use the new \Spree.ajax\ helper and authenticate via Bearer tokens in headers rather than query parameters. UI components have been upgraded, including a switch from jQuery UI datepicker to flatpickr, replacement of powerTip with Bootstrap tooltips, and integration of Sortable.js for drag-and-drop ordering. Additionally, the codebase now supports Turbolinks and uses \Spree.ready\ for DOM initialization.

backend/app/assets/javascripts/spree/backend · high confidence

Backend callback system and configuration restructured

The backend's internal architecture has been refactored to support more flexible lifecycle management and configuration. A new callback system (ActionCallbacks) allows developers to register before, after, and failure hooks for standard actions (new, create, update, destroy) as well as custom actions, enabling custom logic to run during these phases. Additionally, backend configuration has been moved to a dedicated module (Spree::Backend::Config) that wraps the existing BackendConfiguration, ensuring proper initialization checks are performed when the Rails engine loads.

backend/lib/spree/backend · high confidence

Backend configuration and theme system overhaul

The backend's configuration structure has been reorganized into the lib directory, introducing a new theme system that allows administrators to switch between classic and Solidus Admin variants (including dark and dimmed modes) via configurable preferences. The default theme behavior is versioned, migrating from 'classic' to 'solidus\_admin' in version 4.2.0 and to 'solidus' in 4.4.0. Additionally, order search fields are now fully configurable through the backend configuration, and the admin navigation bar has been updated to support Remix icons and a new layout style controlled by a versioned preference.

backend/lib/spree · high confidence

Bootstrap solidus\_api via spree\_api with jbuilder dependency

The API library now initializes by requiring the spree\_api gem, which in turn loads the core API components (spree/api and responders) and explicitly requires the jbuilder library. This establishes the foundational bootstrapping sequence for the API extension, ensuring the necessary JSON serialization support is available upon load.

api/lib · high confidence

Cart management UI refactored into modular Backbone views

The cart interface in the admin backend has been restructured from a single CoffeeScript file into distinct, modular JavaScript views (AddLineItemButton, EmptyCartButton, LineItemRow, and LineItemTable). This change introduces specific behaviors for cart operations: the 'Add Line Item' button is now disabled if any item in the cart is new or if the cart is empty; the 'Empty Cart' button is additionally disabled for completed orders and includes a confirmation dialog before clearing the cart; and line item rows now support inline editing, validation of quantity and variant selection, and direct deletion with confirmation. These views handle the rendering and event logic for the cart table, improving code maintainability and user interaction clarity.

backend/app/assets/javascripts/spree/backend/views/cart · high confidence

Centralize backend asset precompilation and enhance form builder capabilities

The backend now explicitly configures asset precompilation via a new initializer that includes the Solidus backend manifest, ensuring consistent asset loading. Additionally, the form builder has been extended to support field hints and standardized error wrapping, allowing admin forms to display contextual help text and consistent error styling out of the box.

backend/config/initializers · high confidence

Centralized API attribute configuration and admin-restricted fields

The API helper module has been refactored to define all exposed attributes (such as product, order, and variant details) as class-level constants sourced from a central API configuration object. This change introduces role-based access control for sensitive data: the \cost\_price\ attribute is now only included in variant responses for users with admin roles, while other users see standard attributes. Additionally, the helper now dynamically generates attribute methods based on configuration metadata and automatically excludes \permalink\ and \slug\ from required field validations, as these are system-generated.

api/app/helpers · high confidence

Configurable order search fields via new partials

The admin order search interface now supports configurable search fields by introducing new view partials for checkbox, date range, select, text, and variant autocomplete inputs. This allows administrators to customize which search criteria are available and how they are rendered in the order search form.

_backend/app/views/spree/admin/shared/search\fields · high confidence

Configure asset manifest for theme support and Select2 localization

The backend asset pipeline is now configured via a new manifest file that explicitly links the theme stylesheets located in the themes directory, ensuring dark and dimmed UI variants are available to users. It also includes the main application JavaScript and CSS bundles and adds a specific link for Solidus Admin's Select2 locale files, enabling proper language support for the Select2 component in the backend interface.

backend/app/assets/config · high confidence

Database schema updates for user API keys

The database schema for user API keys has been updated to support longer keys and improved query performance. The \api\_key\ column in the \spree\_users\ table is now resized from 40 to 48 characters to accommodate larger generated keys, and the column has been renamed to \spree\_api\_key\. Additionally, an index has been added to the \spree\_api\_key\ column to optimize lookups.

api/db · high confidence

Deprecation of the legacy Spree admin dashboard

The legacy admin dashboard view at /spree has been replaced with a placeholder that displays a deprecation warning. Users are now notified that the Home view is deprecated and instructed to copy all controllers and views from solidus\_backend into their own application if they wish to continue using custom dashboards.

backend/app/views/spree/admin/dashboards · high confidence

Enable View Component instrumentation and logging in development/test

The admin application now enables View Component instrumentation and disables deprecated instrumentation names in development and test environments. Additionally, a custom notification subscriber logs the rendering of SolidusAdmin components with their duration, helping developers monitor component performance and rendering behavior during local development and testing.

admin/config/initializers · high confidence

Enable bin/rails execution in Solidus engines

Added bin/rails scripts to the api and backend directories, allowing developers to run Rails commands directly from these engine locations. This change ensures that the Rails executable is available within the engine contexts, facilitating easier development and testing workflows specific to the API and backend components.

api/bin, backend/bin · high confidence

Extracts admin locale key setting into a dedicated concern

A new concern, \Spree::Admin::SetsUserLanguageLocaleKey\, has been added to the backend. This module defines the \set\_user\_language\_locale\_key\ method, which returns the symbol \:admin\_locale\, centralizing the definition of the admin user's language locale key for reuse across the admin interface.

backend/app/concerns · high confidence

Improved stock adjustment UX with relative counting and negative value prevention

The stock management interface now allows users to adjust inventory counts relative to the current value rather than setting an absolute number, making it easier to add or remove specific quantities. Additionally, the UI prevents stock levels from dropping below zero during manual adjustments and highlights negative numbers in red to draw attention to low-stock situations. These changes are implemented in the new AddStockItem and EditStockItemRow views, which also streamline the workflow by linking directly to the stock location name on the product stock page.

backend/app/assets/javascripts/spree/backend/views/stock · high confidence

Initialize customer details with Backbone in checkout edit

The checkout edit page now initializes the customer details section using a Backbone view (Spree.Views.Order.CustomerDetails) and model (Spree.Models.Order) when the element with class js-customer-details is present. This replaces previous implementation methods with a structured Backbone-based approach for managing customer information in the backend checkout flow.

backend/app/assets/javascripts/spree/backend/checkouts · high confidence

Introduce Backbone models for backend admin entities

The backend JavaScript architecture now includes dedicated Backbone models for core admin entities, including Order, LineItem, Shipment, Payment, Address, StockItem, Taxonomy, and ImageUpload. These models centralize API interaction logic using \Spree.pathFor\ for endpoint resolution, define default values (such as line item quantity defaulting to 1), and establish relationships between entities (e.g., Order containing LineItems and Shipments). This change provides a structured, reusable data layer for the admin interface, replacing ad-hoc or scattered model definitions with a consistent namespace under \Spree.Models\.

backend/app/assets/javascripts/spree/backend/models · high confidence

Introduce Handlebars template system and modularize backend views

The backend admin interface now uses Handlebars for rendering templates, starting with a new reusable image partial that conditionally displays images or placeholders. To support this shift, the previous \require\_tree\ auto-loading mechanism has been replaced by an explicit \index.js\ manifest that individually requires specific template files (such as selectable labels, line items, shipment tracking, and shipping methods), ensuring only necessary assets are loaded and improving modularity.

backend/app/assets/javascripts/spree/backend/templates · high confidence

Modernized backend JavaScript components and introduced new UI widgets

The backend interface has been updated with several JavaScript improvements: the admin navigation now supports a collapsible sidebar that respects user preferences via cookies, and a new toggle allows switching between the legacy and new admin views. Table interactions have been enhanced with new selectable and sortable table components (the latter using Sortable.js for drag-and-drop reordering), while existing tabs and tooltips have been converted to plain JavaScript to reduce jQuery dependencies. Additionally, new UI widgets have been added, including a 'number with currency' formatter and a hint component for tooltips.

backend/app/assets/javascripts/spree/backend/components · high confidence

Move API documentation to OpenAPI 3.0.3 with Stoplight Hub

The API documentation has been migrated to the OpenAPI Specification 3.0.3 format and is now hosted via Stoplight Hub. This update provides a structured reference for all endpoints, including detailed guides for authentication (API keys and order tokens), pagination, filtering, and the complete checkout flow. The documentation is now available as a standalone OpenAPI YAML file (\solidus-api.oas.yml\) alongside supporting markdown guides, replacing the previous documentation structure.

api/openapi · high confidence

New Backbone collections for managing line items, shipments, and states

The backend JavaScript now includes dedicated Backbone collections for LineItems, Shipments, and States, centralizing how these data sets are managed in the UI. The LineItems collection dynamically constructs its API URL based on its parent resource, while the States collection fetches state data from the API filtered by a specific country ID. These collections are registered in a centralized index file, providing a structured foundation for backend views that interact with order components.

backend/app/assets/javascripts/spree/backend/collections · high confidence

New Handlebars templates for variant autocomplete and item splitting

The backend now uses dedicated Handlebars templates to render variant-related UI components. A new autocomplete template displays variant details, including the first associated image and option values, in search results. Additionally, new templates support the item-splitting workflow: one template shows stock levels for line items, while another provides a form to move variants between existing shipments or new stock locations, including quantity inputs and action buttons.

backend/app/assets/javascripts/spree/backend/templates/variants · high confidence

New Solidus Admin controllers for the redesigned admin interface

The admin area now uses a new set of controllers under \SolidusAdmin\ to power the redesigned UI. This introduces dedicated controllers for managing core resources such as orders, products, users, stock, and taxonomies, alongside a generic \ResourcesController\ base class that standardizes CRUD operations, search scopes, and Turbo Stream responses. Key behavioral changes include the ability to manage order line items and adjustments directly, detach customers from orders, and handle address updates via Turbo frames, all rendering new UI components instead of legacy views.

_admin/app/controllers/solidus\admin · high confidence

New SolidusAdmin configuration initializer with alpha features and menu import support

The installation generator now includes a new \config/initializers/solidus\_admin.rb\ template that allows users to configure the admin interface. Key additions include an option to enable alpha features (with a warning about potential instability), a setting to import menu items from the existing Spree backend to ease migration, and commented-out examples for customizing the main navigation menu and importmap paths.

_admin/lib/generators/solidus\admin/install/templates · high confidence

New admin helper modules for UI components and layout

The admin area now includes a suite of new helper modules to standardize UI rendering and layout. Flash messages are now differentiated by type, with :alert messages displayed as UI alerts and others as toasts. Layout titles are automatically generated based on the store and controller. Stimulus data attributes are simplified via helper methods, and a custom form builder is applied to all forms. Additionally, helpers are provided for organizing permission sets, displaying user last login times, and managing HTML void elements.

admin/app/helpers · high confidence

New admin layout with theme support and Turbo integration

The admin interface now uses a new layout structure that supports light and dark themes based on system preferences, integrates Turbo for navigation with caching disabled, and includes accessibility features like skip links and proper language attributes. Flash messages are rendered via dedicated components, and the layout includes a sidebar navigation and main content area with Tailwind CSS styling.

admin/app/views/layouts · high confidence

New admin stock management interface with variant-centric table

The admin stock management view has been replaced with a new variant-centric table layout. The index page now renders a dedicated partial that displays variants with their option values, associated stock locations, and inventory counts in a nested structure. Users can now modify stock counts directly, add stock items to new locations via a form within the table, and remove stock items, with the interface respecting inventory tracking settings and user permissions.

_backend/app/views/spree/admin/stock\items · high confidence

New admin views for payment source details

The admin interface now includes dedicated view templates for displaying credit card and store credit payment details. The credit card view presents cardholder information, expiration, and security responses (AVS/CVV), while the store credit view shows category, memo, and issuance details, providing a structured layout for reviewing payment sources in the backend.

_backend/app/views/spree/admin/payments/source\views · high confidence

New drag-and-drop image upload interface for product admin

The product admin image management now supports drag-and-drop uploads via a dedicated upload zone. This change replaces the previous inline form mechanism with a Backbone.js-based view that handles file selection, tracks upload progress in a dedicated progress zone, and appends uploaded images to the existing table. The legacy CoffeeScript implementation has been removed in favor of this new JavaScript logic, providing a more consistent and visual upload experience.

backend/app/assets/javascripts/spree/backend/images · high confidence

New order confirmation view templates in admin

The admin order confirmation interface now uses a set of new partial views (\_customer\_details, \_line\_items, \_payments, \_shipment, \_shipment\_manifest) to render order details. This change updates how customer information, line items, payments, and shipments are displayed in the admin panel, including the use of model attribute translations for labels and the inclusion of a link to the payment in the order confirm screen.

backend/app/views/spree/admin/orders/confirm · high confidence

New precompiled templates for product sorting and image upload progress

The product admin interface now uses dedicated Handlebars templates to render the sortable product list and image upload progress indicators. A new \sortable.hbs\ template defines the structure for individual product items in the sort view, while \upload\_progress.hbs\ replaces previous HTML progress elements with a Bootstrap-based card layout that displays the image thumbnail, an animated progress bar, file details, and localized error messages for upload failures.

backend/app/assets/javascripts/spree/backend/templates/products · high confidence

New taxon tree template with sortable items and child management

The backend taxon tree UI now uses a new Handlebars template structure that renders taxons as a nested list. Root taxons are displayed without sorting handles, while child taxons are marked as sortable with a drag icon. Each taxon entry now includes an 'add child' button alongside existing edit and delete actions, allowing users to easily create sub-taxons directly from the tree view.

backend/app/assets/javascripts/spree/backend/templates/taxons · high confidence

Payment views migrated to Backbone.js

The payment interface in the admin backend has been refactored to use Backbone.js views, replacing the previous implementation. This change introduces specific views for managing credit card editing (including automatic card type detection and field formatting), selecting payment methods, and editing payment rows (handling edit, save, and cancel actions via form submission). Users will experience the same payment management functionality but driven by this new client-side architecture.

backend/app/assets/javascripts/spree/backend/views/payment · high confidence

Rake tasks reorganized into modular files with new linting and release capabilities

The monolithic Rakefile has been split into distinct task files (cleaning, linting, releasing, testing) to improve maintainability. A new linting system enforces code standards using StandardRB, ERB format, and ESLint, and includes a custom RuboCop cop that prevents ActiveRecord migrations from using versions higher than the minimum required Rails version (7.2). The release process has been updated to build and push all Solidus gems (including promotions and legacy\_promotions) to RubyGems, while the testing suite now explicitly includes backend JavaScript specs and provides a coverage reporting task.

tasks · high confidence

Redesign of Option Types admin interface

The admin views for managing Option Types have been rewritten to improve structure and usability. The new layout uses Bootstrap grid classes (col-6) for form fields, replaces legacy jQuery event handlers with modern data attributes, and implements proper breadcrumbs for navigation. The edit view now clearly separates the Option Type definition from its associated Option Values using fieldsets, and the index view provides a sortable table with distinct actions for new versus existing records.

_backend/app/views/spree/admin/option\_types, backend/app/views/spree/admin/shared/named\types · high confidence

Redesign of admin refund creation and editing interfaces

The admin refund views for creating and editing refunds have been rewritten to modernize the user interface. The forms now utilize Bootstrap grid classes (col-3) and custom-select dropdowns for selecting refund reasons, replacing older layout structures. The new refund page incorporates a dedicated number\_with\_currency widget for amount entry and displays payment amount and credit allowed using localized money helpers. Breadcrumb navigation has been updated to use the new admin\_breadcrumb helper, and action buttons are now rendered using button\_tag and link\_to helpers for better semantic HTML and accessibility.

backend/app/views/spree/admin/refunds · high confidence

Redesigned Select2 and Tooltip styling in the admin interface

The admin interface now features updated styling for Select2 dropdowns and tooltips to better align with the Bootstrap 4 design system. Select2 components have been restyled to use Bootstrap input variables for borders, focus states, and arrow icons, ensuring a consistent look with native form controls. Tooltips are now color-coded based on action types (e.g., success, warning, danger) and are configured to ignore pointer events, preventing interaction issues. Additionally, a basic style for Sortable.js ghost elements has been added to improve visual feedback during drag-and-drop operations.

backend/app/assets/stylesheets/spree/backend/plugins · high confidence

Redesigned admin layout with collapsible sidebar and new style guide

The admin interface now features a modernized layout with a collapsible left sidebar navigation, replacing the previous structure. The main content area dynamically adjusts its width based on the presence of a sidebar or tabs, utilizing Bootstrap grid classes. A new style guide layout has been introduced to help developers preview and test UI components, featuring a dedicated sidebar for navigation and a main content area for displaying topics and subjects. The layout also supports multiple flash messages and includes a pure CSS spinner, improving the user experience during asynchronous operations.

backend/app/views/spree/layouts · high confidence

Redesigned admin order management with cart, confirm, and carton views

The admin order interface has been restructured into a multi-step workflow mirroring the frontend checkout, introducing dedicated Cart and Confirm views for building and reviewing orders. Administrators can now add line items to a cart, review adjustments (line item, shipment, and order) separately, and complete orders via a confirmation step. The edit view now displays shipments and cartons in a consolidated form, supporting carton grouping with external numbers and tracking links. A new Risk Analysis section highlights risky payments using pill indicators, and the orders index supports configurable search fields and full-width layout with pagination.

backend/app/views/spree/admin/orders · high confidence

Redesigned admin product management interface with enhanced search and metadata support

The admin product views have been completely rewritten to improve usability and data handling. The product index now features a full-width layout with a refined search form that includes specific fields for SKU filtering and a 'Show Deleted' checkbox to view discarded products. The product creation and editing forms have been restructured to include dedicated fields for SEO metadata (title, keywords, description), a Master SKU input, and date pickers for 'Available On' and 'Discontinue On' dates. Additionally, the interface now supports structured data entry via GTIN and Condition fields for variants without multiple SKUs, and provides clearer navigation links to view the product on the frontend or manage its variants.

backend/app/views/spree/admin/products · high confidence

Redesigned admin store credit management interface

The admin store credit views have been completely rewritten to provide a more structured and permission-aware experience. The new interface groups store credits by currency in the index view, displays yes/no indicators for invalidation status, and utilizes custom-select dropdowns for reason selection. It enforces edit and invalidation permissions on action links, uses standardized breadcrumb navigation, and presents a detailed history of store credit events with short time formats and reason names. The forms for creating, editing amounts, and invalidating credits are now consistent, using fieldsets and proper error handling.

_backend/app/views/spree/admin/store\credits · high confidence

Redesigned admin user management interface with permission-based access and new address book

The admin user management views have been completely rewritten to introduce a tabbed interface (Account, Addresses, Order History, Items, Store Credits) and a sidebar displaying lifetime stats. A new dedicated address book page allows admins to manage billing and shipping addresses. Access to these sections and specific actions (such as updating email, managing roles, editing passwords, and deleting users) is now strictly controlled by CanCanCan permission guards, ensuring users only see and can modify data they are authorized to access. The user index table now includes columns for order count, lifetime value, and creation date, and API keys are hidden for non-self-administrators.

backend/app/views/spree/admin/users · high confidence

Redesigned admin zones interface with improved layout and navigation

The admin zones views have been rewritten to use a modern, two-column layout for creating and editing zones, separating general settings from member selection. The interface now supports selecting countries and states via multi-select inputs, with radio buttons to toggle between country-based and state-based zone types. Navigation has been standardized using new breadcrumb helpers, and the zones list view now includes pagination and a consistent 'no objects found' message.

backend/app/views/spree/admin/zones · high confidence

Redesigned product image management with inline editing and modal previews

The admin interface for managing product images has been overhauled to improve usability and workflow. Users can now upload images via drag-and-drop, which appends new images directly to the existing list without reloading the page. The image list table supports inline editing, allowing administrators to update the associated variant and alt text for each image directly in the row, with changes saved via AJAX. Additionally, clicking a thumbnail opens a modal preview of the full-size image instead of navigating to a separate page, and the interface now hides the table entirely when no images are present.

backend/app/views/spree/admin/images · high confidence

Redesigned stock item row template with linked location names and inline editing

The stock item row template has been rewritten to support a new editing flow and improved usability. Stock location names are now clickable links that filter stock movements by the variant SKU. The count on hand display highlights negative values in red, and the input field for modifying stock counts is now part of an inline form. Action buttons use specific class names (submit/cancel) and icons to indicate their function, replacing previous icon-based bindings.

_backend/app/assets/javascripts/spree/backend/templates/stock\items · high confidence

Redesigned stock location management interface

The admin interface for managing stock locations has been completely overhauled to improve usability and consistency. The new layout uses a two-column form design, separating general information and address details from configuration settings such as active status, default location, backorder defaults, and inventory propagation options. The interface now supports additional fields including a unique code, an internal admin name, and phone number, while also allowing stock locations to be marked as inactive. The listing page features a sortable table with pill-based status indicators and direct links to stock movements, replacing the previous table layout with a more structured, breadcrumb-driven navigation experience.

_backend/app/views/spree/admin/stock\locations · high confidence

Redesigned tax rate management with validity periods and improved filtering

The admin tax rates interface has been updated to support a validity period, allowing users to set start and end dates for when a tax rate is active. The new form includes radio buttons for selecting the tax rate level (zone, category, or default) and displays a short explanation to clarify amount entry. The index view now features a filterable table with pagination, enabling admins to search by zone and tax category, while the list displays the calculator name and expiration date. Breadcrumbs and navigation have been standardized using new helper methods, and the UI utilizes custom-select components and Font Awesome icons for a consistent look.

_backend/app/views/spree/admin/tax\rates · high confidence

Refactor API testing support helpers and add caching setup

The API testing support library has been restructured to improve reliability and consistency. A new \caching.rb\ module was added to automatically enable and clear the Rails cache for tests tagged with \caching: true\. The \helpers.rb\ module now provides a \json\_response\ method that returns hashes with indifferent access, standardizes error assertions for 404 and 401 responses, and updates the \upload\_image\ helper to use \Rack::Test::UploadedFile\ instead of Rails' \fixture\_file\_upload\. Additionally, the \sign\_in\_as\_admin!\ helper in \setup.rb\ has been updated to stub \spree\_roles\ on \Spree::LegacyUser\ instead of using \has\_role?\, aligning with the internal role-checking changes.

_api/lib/spree/api/testing\support · high confidence

Refactor admin authentication, authorization, and locale handling into dedicated controller helpers

The admin interface now uses extracted, dedicated controller helpers to manage core concerns, improving modularity and clarity. Authentication is handled by a new \SolidusAdmin::ControllerHelpers::Authentication\ module that delegates to configurable methods for user authentication, current user retrieval, and logout paths. Authorization is separated into \SolidusAdmin::ControllerHelpers::Authorization\, which enforces CanCanCan policies and renders a forbidden view on unauthorized access, using a dynamic subject inference based on the controller name. Locale management is now centralized in \SolidusAdmin::ControllerHelpers::Locale\, which sets the I18n locale from the session, updates the user's preferred locale in the session upon change, and falls back to the default locale if the requested one is unavailable, while also keeping the account menu open during locale switches. Additionally, search functionality is enhanced via \SolidusAdmin::ControllerHelpers::Search\, which supports configurable search scopes and ensures distinct results in Ransack queries, and theme preferences are managed by \SolidusAdmin::ControllerHelpers::Theme\, allowing users to switch between available themes (e.g., dark/light) with system theme detection support.

_admin/app/controllers/solidus\_admin/controller\helpers · high confidence

Refactor admin refund reason form to use Bootstrap 4 grid and semantic HTML

The shared form partial for admin refund reasons has been updated to use Bootstrap 4's responsive grid classes (replacing legacy col-xs-N with col-N) and standard HTML5 void tags (using \<br\> instead of \<br/\>). The layout now uses a single column container with a col-3 width for the form fields, and labels are marked as required using the class attribute directly on the label element rather than an extra span. The active checkbox label uses the I18n helper t() instead of Spree.t().

_backend/app/views/spree/admin/refund\reasons/shared · high confidence

Refactor backend CSS architecture to support themes and modernize dependencies

The backend styling system has been restructured to improve modularity and theme support. A new manifest file (\backend.css\) now serves as a legacy entry point that explicitly requires the 'classic' theme, directing users to configure themes via \Spree::Config\. The core styles are now organized under \vendor/index.scss\, which consolidates imports for key libraries including Select2, Flatpickr, Prism (for syntax highlighting), Bootstrap, and Font Awesome. This change replaces older, removed dependencies like jQuery UI datepicker and powertip with these modern, vendored assets, ensuring a cleaner and more maintainable stylesheet structure for the admin interface.

backend/app/assets/stylesheets/spree · high confidence

Refactor cart and order editing into modular JavaScript files

The backend order management interface has been restructured to use separate, modular JavaScript files for the cart and order editing views. The cart page now initializes specific UI components (summary, line item table, add/empty buttons, and totals) via a dedicated \Spree.Order.initCartPage\ function, while order editing and search functionality are isolated in \edit.js\ and \index.js\. This change improves code maintainability and ensures that Spree's assets are loaded correctly without interfering with the main application's asset pipeline.

backend/app/assets/javascripts/spree/backend/orders · high confidence

Refactor image upload views into dedicated files

The image upload interface logic has been reorganized by extracting the upload progress display and the upload zone handling into their own dedicated JavaScript files. This change improves code maintainability by separating the concerns of tracking upload progress (including visual updates and clearing) from the file selection mechanisms (drag-and-drop and file browser), without altering the user-facing functionality of the image upload process.

backend/app/assets/javascripts/spree/backend/views/images · high confidence

Refactored backend navigation to use configurable MenuItem objects

The backend navigation system has been refactored to use a new \Spree::BackendConfiguration::MenuItem\ class, replacing the previous static constant-based approach. This change introduces support for dynamic menu items with features such as callable URLs, regex-based path matching, and conditional visibility, allowing for more flexible and programmatic control over the admin interface. The legacy \\*\_TABS\ constants (e.g., \ORDER\_TABS\, \PRODUCT\_TABS\) are now deprecated in favor of the new \MenuItem\ API, ensuring a smoother transition for existing configurations while maintaining backward compatibility through deprecation warnings.

_backend/lib/spree/backend\configuration · high confidence

Refactored table views to JavaScript and added automatic selection for return items

The table view components in the backend have been converted from CoffeeScript to plain JavaScript, including the editable table and row logic. Additionally, a new selectable table view has been introduced to manage item selection states. Specifically for the RMA form, changes to the return items view now automatically check the 'add-item' checkbox whenever a user modifies any input or select field within a row, streamlining the process of selecting return items.

backend/app/assets/javascripts/spree/backend/views/tables · high confidence

Reimbursement types index view now uses checkout tabs layout

The reimbursement types administration page has been updated to render within the shared checkout tabs layout, replacing the previous standalone page structure. This change integrates the reimbursement types list into the broader settings navigation flow, utilizing new breadcrumb helpers for navigation context and standardizing the table presentation with updated helper methods for resource naming and attribute translation.

_backend/app/views/spree/admin/reimbursement\types · high confidence

Restores Jbuilder template rendering support in API responders

The API responder system now supports rendering responses using Jbuilder templates. A new \JbuilderTemplate\ module has been added to \api/lib/spree/api/responders\, which overrides the \to\_format\ method to check for a specific template option and render it with the appropriate status code, or fall back to the default behavior if no template is specified. This change effectively reinstates the capability to use Jbuilder for API response formatting, replacing the previous deprecation state.

api/lib/spree/api/responders · high confidence

Restructure API engine with new configuration and responder defaults

The Spree API engine has been reorganized to improve modularity and default behavior. A new configuration module (Spree::Api::Config) is now initialized via the engine, ensuring proper loading defaults are checked. The engine's responder logic has been updated to use a custom AppResponder that includes JbuilderTemplate support, replacing previous RABL-based rendering. Additionally, the engine now isolates its namespace and registers a backward-compatible initializer to ensure smooth integration with existing applications.

api/lib/spree/api · high confidence

Rework backend UI components with new styling and layout

The backend admin interface has been restyled to align with the Solidus Admin design language, introducing a collapsible sidebar navigation, a sticky top header, and a dark/light theme toggle. Visual updates include a new pill component for displaying entity states (e.g., orders, payments), improved inline-editable tables, and a pure CSS loading spinner replacing the previous JavaScript implementation. The layout also supports better print styles and fixes alignment issues in the currency selector and flash messages.

backend/app/assets/stylesheets/spree/backend/components · high confidence

Reworked admin order customer details view with guest checkout support

The admin interface for managing order customer details has been updated to provide a clearer distinction between registered and guest accounts. The new layout displays the customer's email and explicitly indicates whether the order is associated with a guest user. The editing form now includes radio buttons to toggle guest checkout status, allowing administrators to easily switch between guest and registered customer modes. Additionally, the billing and shipping address sections are presented side-by-side for better visibility, and the form utilizes modern Bootstrap grid classes for improved responsiveness.

_backend/app/views/spree/admin/orders/customer\details · high confidence

Reworked admin payment methods form and index views

The admin interface for managing payment methods has been updated with a redesigned form and index page. The new form includes a store selector to assign payment methods to specific stores, a preference source selector, and a per-payment auto-capture setting with clearer yes/no options. The index view now features a sortable table with pill-based status indicators and uses custom-select dropdowns for improved usability.

_backend/app/views/spree/admin/payment\methods · high confidence

Rewrite API JSON views to Jbuilder

The API JSON serialization for all resources (orders, products, variants, users, etc.) has been migrated from RABL to Jbuilder. This change standardizes the view templates, introduces caching for expensive lookups, and ensures consistent handling of nil associations and payment sources across the API responses.

api/app/views/spree · high confidence

Rewrite payment forms in plain JavaScript with Backbone views

The payment edit and new forms in the admin backend have been converted from CoffeeScript to plain JavaScript and refactored to use Backbone views (Spree.Views.Payment). This change updates how payment rows and new payment interfaces are rendered and managed in the DOM, ensuring they are initialized via Spree.ready and leveraging the new Backbone-based models and views for better structure and maintainability.

backend/app/assets/javascripts/spree/backend/payments · high confidence

Solidus gem now loads core components by default

The Solidus gem now automatically requires its core components (solidus\_core, solidus\_api, solidus\_backend, solidus\_sample, and solidus\_legacy\_promotions) when loaded, removing the need for applications to manually require these individual gems. A legacy spree.rb shim is also provided to maintain backward compatibility by delegating to the new solidus.rb entry point.

lib · high confidence

Solidus i18n extension restructured as a translation-only package

The solidus\_i18n extension has been refactored to contain only translation files, removing previous functionality such as locale selectors and routing-filter configuration which is now built into Solidus 2.6+. The extension now provides a comprehensive set of locale files (e.g., bg, ca, cs, da, de, de-CH, en-AU, en-GB) for internationalization, along with updated documentation and a new CHANGELOG.md pointing to GitHub releases for version history.

i18n · high confidence

Standardize Return Reasons admin views with shared named-types partials

The admin interface for managing return reasons (RMA reasons) now uses a shared set of partials for the index, new, and edit pages. This change unifies the layout and navigation structure, placing the feature under Settings \> Checkout in the admin sidebar, and ensures consistent use of pluralized resource names and localized labels for creating and editing return reasons.

_backend/app/views/spree/admin/return\reasons · high confidence

Standardize repository configuration and linting tooling

The repository now uses StandardRB as the primary Ruby linter, replacing the previous RuboCop configuration, and introduces a comprehensive set of configuration files including .editorconfig for consistent editor settings, .backportrc.json for automated backporting workflows, and .git-blame-ignore-revs to filter out bulk formatting commits. These changes standardize code style enforcement and improve the developer experience by aligning editor behaviors and CI linting processes.

(repo-wide) · high confidence

Taxon management views migrated to Bootstrap 4 and Jbuilder

The admin taxon views have been updated to use Bootstrap 4 grid classes (e.g., \col-5\ instead of \col-xs-5\) and modern HTML5 void tags. The edit and index forms now utilize Jbuilder for JSON responses and standard Bootstrap button components, while the form layout has been restructured to include fields for taxon icons, meta tags, and product sorting capabilities.

backend/app/views/spree/admin/taxons · high confidence

Updated Select2 component styles for Solidus Admin

The Select2 dropdown component in the Solidus Admin backend has been updated to version 3.5.4. This change refreshes the visual styling of the select controls, including the container, dropdown menu, and choice items, ensuring consistent rendering and proper box-sizing. It also includes specific formatting for the 'load more' indicator and support for right-to-left (RTL) layouts, improving the user experience when browsing or selecting options in the admin interface.

_backend/vendor/assets/stylesheets/solidus\admin · high confidence

Updated Solidus Admin to Bootstrap 4

The Solidus Admin interface has been upgraded to Bootstrap 4, replacing the previous version with its modern Flexbox-based layout system. This change updates core UI components—including alerts, badges, buttons, cards, dropdowns, forms, and modals—to the new Bootstrap 4 styling and behavior, ensuring a consistent and responsive admin experience.

_backend/vendor/assets/stylesheets/solidus\_admin/bootstrap, backend/vendor/assets/stylesheets/solidus\admin/bootstrap/mixins · high confidence

Test coverage

Added API feature specs for checkout flows; Added API feature specs for checkout workflows; Added API test support helpers and matchers; Added JavaScript test suite for backend utilities; Added JavaScript tests for the NumberWithCurrency view; Added backend feature specs for legacy promotions; Added component previews and specs for the UI Modal; Added component previews for the Ransack filter UI table component; Added component previews for the UI select form field; Added component previews for the admin address form; Added component specs for SolidusAdmin::BaseComponent; Added component specs for UI table, pagination, and ransack filter; Added component tests for the Solidus Admin UI input form field; Added component tests for the new select form field; Added component tests for the payment methods form; Added comprehensive test coverage for core library components and generators; Added controller specs for SolidusAdmin base controller; Added controller tests for API base behavior; Added custom RSpec matcher for element ordering; Added feature specs for admin configuration and order management; Added feature tests for Solidus Admin promotions and orders; Added feature tests for stock location management; Added feature tests for the new admin UI; Added feature tests for the new admin orders interface; Added i18n validation and API configuration specs; Added preview and test infrastructure for the UI Badge component; Added preview components for the UI thumbnail component; Added preview for the Solidus Admin layout confirm component; Added preview tests for the Solidus Admin UI button component; Added preview tests for the UI details list component; Added preview tests for the UI pages index component; Added preview tests for the admin UI checkbox form component; Added preview tests for the products/stock component; Added request specs for Jbuilder caching and Ransackable attribute whitelisting; Added request specs for new Solidus Admin controllers; Added shared examples for product action authorization; Added test coverage for SolidusAdmin core components and configuration; Added test coverage for SolidusPromotions configuration, engine, and migration logic; Added test coverage for admin helper modules; Added test coverage for admin layout components; Added test coverage for backend admin helper methods; Added test coverage for backend configuration and menu item logic; Added test coverage for legacy promotions configuration and factories; Added test coverage for the Toast UI component; Added test coverage for the UI pages index component; Added tests for LegacyUser API key generation and role-based auto-grant logic; Added tests for SolidusAdmin UI button component helpers; Added tests for admin order customer details controller; Added tests for product status and stock components; Added tests for sample loading idempotency; Added tests for the CheckboxRow admin component; Added tests for the ResourceItem UI component; Added tests for the Solidus Admin UI Radio component; Added tests for the Solidus Admin component generator; Added tests for the SwitchField UI component; Added view specs for admin widget forms; Added view tests for admin navigation footer fallback; Establish test infrastructure and initial specs for the Solidus Admin gem; Expanded API request test coverage for core commerce endpoints; Expanded controller test coverage for the admin backend; New shared testing examples for admin CRUD, sorting, and promotion categories; New spec helpers for navigation and order line items.

Dependencies

Solidus v4.3 dependency updates and Rails 8.1 support

This release updates the Solidus dependency graph to support Rails 8.1 and requires Ruby 3.2 or higher. Key library upgrades include \kaminari\ to version 1.1, \cancancan\ to the 2.x–3.x range, and \state\_machines\ to 0.6. The \solidus\_admin\ gem now depends on \turbo-rails\ 2.0 and \view\_component\ 3.9, while the \solidus\_backend\ gem has been updated to use \font-awesome-rails\ 4.0 and \handlebars\_assets\ 0.23. Additionally, the \solidus\_core\ gem now explicitly depends on \omnes\ 0.2.2 and \db-query-matchers\ 0.14.

(dependencies) · high confidence

Upgrade backend JavaScript libraries and add new UI capabilities

The Solidus Admin backend has upgraded its core JavaScript dependencies, including Bootstrap to v4.0.0, Backbone to v1.3.2, and Underscore to v1.8.3, while adding new libraries such as Select2 (v3.5.4), Popper.js, Sortable.js, and accounting.js. These changes introduce enhanced dropdown selection, drag-and-drop sorting, and precise currency formatting capabilities to the admin interface, alongside necessary polyfills for older browser support.

_backend/vendor/assets/javascripts/solidus\admin · high confidence

Vendored flatpickr v4.2.3 library added to admin assets

The Solidus admin interface now includes the flatpickr v4.2.3 JavaScript library and its associated license text in the vendor assets directory. This addition provides the underlying date-picker functionality for the admin UI, replacing previous dependencies as indicated by the commit context, and ensures proper attribution for the MIT-licensed library and its embedded tslib helpers.

_backend/vendor/assets/javascripts/solidus\admin/flatpickr · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 46 → 43 (-3.6)
  • Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 53 → 61 (+8.1)
  • Architecture 100 → 79 (-20.3)
  • Maturity 65 → 65 (-0.0)
  • Readiness 41 → 41 (+0.4)
  • Security 36 → 48 (+12.0)
  • Domain Modelling 100 → 100 (+0.0)
  • Accessibility 32 (new)
  • Performance 100 (new)

Resolved (7)

  • Change-coupling hub: routes.rb → orders_controller.rb, store_credits_controller.rb, users_controller.rb (admin/config/routes.rb)
  • Duplicated block (10 lines × 2) (admin/app/controllers/solidus_admin/option_types_controller.rb)
  • Duplicated block (6 lines × 6) (admin/app/controllers/solidus_admin/option_types_controller.rb)
  • High CVE: [GHSA redacted] (Gemfile)
  • Hotspot: core/lib/generators/solidus/install/install_generator.rb (core/lib/generators/solidus/install/install_generator.rb)
  • Medium CVE: [GHSA redacted] (admin/solidus_admin.gemspec)
  • Off-boarding risk: anonymized user #1

New (18)

  • Change coupling: customer_return.rb ↔ order.rb (core/app/models/spree/customer_return.rb)
  • Change coupling: customer_return.rb ↔ shipment.rb (core/app/models/spree/customer_return.rb)
  • Change coupling: store_credits_controller.rb ↔ routes.rb (admin/app/controllers/solidus_admin/store_credits_controller.rb)
  • Change coupling: users_controller.rb ↔ routes.rb (admin/app/controllers/solidus_admin/users_controller.rb)
  • Duplicated block (6 lines × 4) (admin/app/controllers/solidus_admin/shipping_methods_controller.rb)
  • FixmeComment (admin/spec/features/product_spec.rb)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • Inconsistent method naming for generating edit links: edit_url vs edit_path. edit_url implies a full URL, while edit_path implies a path segment. This creates ambiguity for consumers regarding whether they need to prepend a host or if the value is ready for use in a href attribute directly.
  • Inconsistent naming for the primary navigation action in Index components. Some components use edit_path (implying a specific action), while others use row_url (implying a generic resource link). In many contexts, the row link IS the edit path, but the naming inconsistency forces consumers to check the method name to determine if it's a generic show/edit link or specifically an edit link.
  • Medium: security finding (details withheld)
  • No ADRs found
  • Off-boarding risk: anonymized user #1
  • Off-boarding risk: anonymized user #2
  • Projects may be oversized for their cohesion
  • While search_url and search_key are consistent across most index components, SolidusAdmin.UI.Pages.Index.Component also exposes search_name() and search_params(). This suggests a deviation in how search configuration is exposed. Other components rely on search_key (likely for the input name) and search_url (for the endpoint), whereas the Pages component exposes more granular search parameters. This inconsistency in the 'search contract' between generic resource indexes and the Pages index makes it harder to build a unified search component.
  • address.window.addEventListener("DOMContentLoaded") (cognitive 28) (storefront/templates/app/assets/javascripts/checkout/address.js)

Changes since last survey

  • 106 commits — 96 feature/other, 10 fixes

By area

  • admin/app — 40 commits
  • (repo) — 26 commits
  • admin/spec — 12 commits
  • core/app — 8 commits
  • admin/config — 4 commits
  • core/spec — 3 commits
  • admin/lib — 2 commits
  • api/app — 2 commits
  • i18n/config — 2 commits
  • .github/release.yml — 1 commit
  • .github/workflows — 1 commit
  • backend/app — 1 commit
  • core/config — 1 commit
  • promotions/app — 1 commit
  • sample/db — 1 commit
  • storefront/templates — 1 commit

Notable commits

  • fix: Fix bug where taxon_ids would not be updated
  • fix: Fix rubocop offence
  • fix: Merge pull request #6566 from SuperGoodSoft/fix/vat-price-generator-nil-amount
  • fix: Merge pull request #6607 from blish/admin-fix-font-size
  • fix: Merge pull request #6609 from SuperGoodSoft/alistair/3931-fix-taxon-touch-deadlocks
  • fix: Merge pull request #6636 from SuperGoodSoft/bug/reduce-permitted-attributes-cart-update
  • fix: Merge pull request #6647 from solidusio/revert-6638-taxon-pretty-name-perf
  • fix: Revert "Avoid N+1s when calling Spree::Taxon#pretty_name"
  • fix: fix(admin): Lower base font size
  • fix: fix(products/show): Use secondary buttons for panel actions
  • change: Add "#switch" feature helper
  • change: Add component for edit tax rate page
  • change: Add component for new tax rate page
  • change: Add component with tax rate form
  • change: Add correct label translation
  • change: Add feature tests
  • change: Add missing "Add new" button for tax rates page
  • change: Add missing feature tests
  • change: Add request specs
  • change: Add request tests
  • …and 86 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

solidusio/solidus was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ed57fa24762a41cd0a04a04e1e00b8277be86917 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.