Skip to content

v8.0.0

Choose a tag to compare

@tvdeyen tvdeyen released this 10 Dec 18:15
· 503 commits to main since this release
2ae0740

AlchemyCMS 8.0.0

This is a major release with significant new features, architectural improvements, and modernization of the admin interface compared to the 7.4 series.

Highlights

🌙 Dark Theme Support

A complete dark theme has been added to the admin interface (#3251), with separate CSS bundles for light and dark themes (#3379).
The UI now uses CSS custom properties instead of Sass variables for theming (#3242).

📦 Active Storage Support

Alchemy now supports Active Storage as an alternative to Dragonfly for file storage (#3283).
The Dragonfly integration has been extracted into an adapter pattern, making it easy to switch between storage backends (#3278).

⚙️ Type-Safe Configuration

A new DSL-based configuration system with type-safe options has been introduced (#3178).
Configuration options are now accessed via Alchemy.config accessors instead of hash keys (#3275).

📋 Definition Models

Page layouts, element definitions, and ingredient definitions have been converted to ActiveModel classes (#3263, #3264, #3266), providing better encapsulation and validation.

🔍 Advanced Filtering with Ransack

The admin interface now uses Ransack for filtering resources (#3215), with support for date/time pickers (#3231) and custom format validations (#3225).

New Features

Frontend/API

  • Configurable cache-control headers (#3347)

Admin

  • Element icons - Set custom icons for elements in the sidebar (#3356)
  • Attachment "deletable" filter showing usage (#3335)
  • New welcome screen design (#3260)
  • New pagination UX (#3259)
  • Turbo Confirms for confirmation dialogs (#3258)
  • Turbo Frame/Streams for clipboard operations (#3255)
  • Browser validations enabled for forms (#3401)
  • Locale select component (#3400)
  • New info dialog with light/dark logo support (#3396)
  • Delete multiple pictures in background (#3387)
  • Default picture archive order set to latest (#3369)
  • Update checks service for version notifications (#3495)

Security

  • SVG sanitization after upload (#3499)
  • Filename sanitization before upload (#3376)
  • YAML.safe_load for users.yml seeder (#3503)

Developer Experience

  • Propshaft support - Works with both Sprockets and Propshaft (#3066)
  • view_component v4 support (#3346)
  • JS test suite migrated to Vitest from Jest (#3300)
  • Bun as JavaScript bundler and script runner (#2994)
  • fetch() over XHR for AJAX requests (#3239)
  • Icon sprite compilation (#3227)
  • Tidy task to remove legacy essence tables (#3382)
  • Page.all_ingredients association for easier ingredient access (#3507)
  • Number ingredient type for numeric values (#3224)

Breaking Changes

Rails & Ruby Requirements

  • Dropped Rails 7.0 support - Requires Rails 7.1+ (#3267)
  • Stopped testing Ruby 3.1 - Ruby 3.2+ recommended (#3223)

Removed Features

  • Ingredient view partials removed - Use view components instead (#3254)
  • Frontend elements controller removed (#3057)
  • Admin attachments download action removed (#3282)
  • dragonfly_svg plugin removed (#3247)
  • 7.x deprecations removed (#3041)
  • 7.x upgraders removed (#3039)
  • Three letter urlname restriction removed (#3353)

Configuration Changes

  • Configuration now uses Alchemy.config with typed accessors instead of hash access
  • New initializer template - run the upgrade task to copy it (#3268)
  • Alchemy::Config is deprecated in favor of Alchemy.config
  • Alchemy.enable_searchable deprecated for Alchemy.config.show_page_searchable_checkbox (#3188)

Dependency Updates

Migration Guide

  1. Update your Gemfile: gem "alchemy_cms", "~> 8.0"
  2. Run bundle update alchemy_cms
  3. Run rails alchemy:upgrade
  4. Update your configuration to use the new Alchemy.config accessors
  5. If using custom ingredient views, migrate to view components
  6. Review removed deprecations and update accordingly

Full Changelog

For a complete list of all changes, see the https://github.com/AlchemyCMS/alchemy_cms/blob/main/CHANGELOG.md or compare releases on GitHub:
v7.4.0...v8.0.0