Releases: AlchemyCMS/alchemy_cms
v8.0.2
What's Changed
- [8.0-stable] Even more style fixes by @alchemycms-ci-bot in #3540
- Release v8.0.2 by @alchemycms-bot[bot] in #3542
Full Changelog: v8.0.1...v8.0.2
v8.0.1
What's Changed
- [8.0-stable] fix(page): Add
"page_layout"toransackable_attributesby @alchemycms-bot[bot] in #3514 - [8.0-stable] fix(page filter): Only select from content pages by @alchemycms-bot[bot] in #3519
- [8.0-stable] fix(assignments): Only list draft elements by @alchemycms-bot[bot] in #3520
- [8.0-stable] fix(ElementsWindow): Focus element if element dom_id is in the url hash by @alchemycms-bot[bot] in #3521
- [8.0-stable] fix(resource-info): Fix layout for long filenames by @tvdeyen in #3523
- [8.0-stable] Fix filtering Attachments by only or except setting by @tvdeyen in #3525
- [8.0-stable] Fix overlay uploader by @alchemycms-ci-bot in #3527
- [8.0-stable] Add timeout and retry feature for preview window by @alchemycms-bot[bot] in #3528
- [8.0-stable] Fix UI glitches 2025 by @alchemycms-ci-bot in #3529
- [8.0-stable] tests: Run system tests with headless Firefox by @alchemycms-ci-bot in #3536
- [8.0-stable] fix(PictureDescriptionSelect): Add site name to identify language by @alchemycms-ci-bot in #3535
- Release v8.0.1 by @alchemycms-bot[bot] in #3539
Full Changelog: v8.0.0...v8.0.1
v8.0.0
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_loadforusers.ymlseeder (#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_ingredientsassociation for easier ingredient access (#3507)Numberingredient 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::Configis deprecated in favor ofAlchemy.configAlchemy.enable_searchabledeprecated forAlchemy.config.show_page_searchable_checkbox(#3188)
Dependency Updates
- TinyMCE 8 (#3359)
- Shoelace 2.2.0 (#3364)
- SortableJS 1.15.6 (#3365)
- Gutentag v3 allowed (#3486)
- Puma 7 (#3357)
Migration Guide
- Update your Gemfile:
gem "alchemy_cms", "~> 8.0" - Run
bundle update alchemy_cms - Run
rails alchemy:upgrade - Update your configuration to use the new
Alchemy.configaccessors - If using custom ingredient views, migrate to view components
- 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
v8.0.0.c
What's Changed
- [8.0-stable] fix(installer): Add missing configs by @alchemycms-ci-bot in #3393
- [8.0-stable] fix(element title): Do not cut off descenders by @alchemycms-ci-bot in #3394
- [8.0-stable] New info dialog with light/dark logo by @alchemycms-ci-bot in #3396
- [8.0-stable] Add Alchemy::Admin::LocaleSelect component by @alchemycms-ci-bot in #3400
- [8.0-stable] feat(alchemy_form_for): Enable browser validations by @alchemycms-ci-bot in #3401
- [8.0-stable] Add an abstract collection option to the configuration class by @mamhoff in #3409
- [8.0-stable] Convert
admin_js_importsandadmin_importmapsto configuration option by @tvdeyen in #3411 - [8.0-stable] Fix saving tags on resource by @alchemycms-ci-bot in #3412
- [8.0-stable] Convert remaining options in
Alchemymodule by @alchemycms-ci-bot in #3413 - [8.0-stable] Fix showing picture detail in overlay by @tvdeyen in #3414
- [8.0-stable] Fix
stub_alchemy_config(and make it recursive) by @alchemycms-ci-bot in #3420 - [8.0-stable] Wrap importmap drawing in
config.to_prepareblock by @alchemycms-ci-bot in #3423 - [8.0-stable] Fix Configuration base option: Use @value instead of value by @alchemycms-ci-bot in #3426
- [8.0-stable] Fix elements-editor format validations by @alchemycms-ci-bot in #3435
- [8.0-stable] Only sanitize filenames if not nil by @alchemycms-ci-bot in #3436
- [8.0-stable] Fix Propshaft >= 1.2.0 manifest format compatibility by @alchemycms-ci-bot in #3441
- [8.0-stable] Update configuration template to use map for arrays by @alchemycms-ci-bot in #3449
- [8.0-stable] Update deprecation horizon to 9.0 by @alchemycms-ci-bot in #3458
- [8.0-stable] Fix factories by @alchemycms-ci-bot in #3463
- [8.0-stable] feat(CI): Use AlchemyCMS GH App to create backports by @alchemycms-bot[bot] in #3464
- [8.0-stable] fix(CI): Build package after bun update by @alchemycms-bot[bot] in #3466
- [8.0-stable] Change default element icon by @alchemycms-bot[bot] in #3469
- [8.0-stable] fix(Node Form): Use pattern for URL matching by @alchemycms-bot[bot] in #3473
- [8.0-stable] Fix CollectionOption comparison in uploader button template by @tvdeyen in #3474
- [8.0-stable] Sitemap CSS fixes by @tvdeyen in #3478
Full Changelog: v8.0.0.b...v8.0.0.c
v7.4.11
What's Changed
- [7.4-stable] Fix elements-editor format validations by @alchemycms-ci-bot in #3432
- [7.4-stable] Only sanitize filenames if not nil by @tvdeyen in #3437
Full Changelog: v7.4.10...v7.4.11
v8.0.0.b
What's Changed
- Resources Admin: Display search string in search field by @mamhoff in #3314
- Add
image_file_formatto picture factory metadata by @mamhoff in #3317 - Fix reloading engine in dev mode by @tvdeyen in #3318
- fix(picture_fields): use correct local variable by @tvdeyen in #3319
- Add Dark theme by @tvdeyen in #3251
- Explicitly specify needed files for alchemy_cms gem by @mamhoff in #3324
- Fix css bundle by @tvdeyen in #3325
- Fix image loader by @tvdeyen in #3327
- Fix ingredient editors dirty state handling by @tvdeyen in #3328
- fix select2 styles by @tvdeyen in #3329
- Change tag active color in light theme by @tvdeyen in #3332
- Fix Picture.deletable scope by @tvdeyen in #3333
- Add explicit strict mode in components index file by @tvdeyen in #3331
- Nullify related_object_type if related_object_id is set to nil by @tvdeyen in #3334
- Harden picture descriptions integration spec by @tvdeyen in #3340
- Bump tinymce from 7.9.1 to 8.0.0 by @dependabot[bot] in #3343
- Slight color fixes by @tvdeyen in #3344
- Add attachment "deletable" filter and show usage by @tvdeyen in #3335
- Update view_component requirement from ~> 3.0 to >= 3, < 5 by @dependabot[bot] in #3346
- Update simplecov-cobertura requirement from ~> 2.1 to ~> 3.0 by @dependabot[bot] in #3323
- fix(DatetimeView): Use settings value if present by @tvdeyen in #3348
- Configurable
cache-controlheaders by @tvdeyen in #3347 - Use Alchemy
ajaxhelper for delete button by @mamhoff in #3351 - Remove three letter urlname restriction by @tvdeyen in #3353
- Fix page info url path display by @tvdeyen in #3354
- Allow to set an element icon by @tvdeyen in #3356
- Update puma requirement from ~> 6.0 to ~> 7.0 by @dependabot[bot] in #3357
- Update bundled Tinymce to v8.0.2 by @tvdeyen in #3359
- Alchemy TinyMCE: Remove frontend presence validation by @mamhoff in #3358
- Update rollup to 4.50.0 by @tvdeyen in #3362
- Update Sass to 1.92.0 by @tvdeyen in #3363
- Update shoelace to v2.2.0.1 by @tvdeyen in #3364
- Update SortableJS to v1.15.6 by @tvdeyen in #3365
- Update @rails/ujs to v7.1.502 by @tvdeyen in #3366
- Update eslint and prettier by @tvdeyen in #3367
- Fix hint color vars by @tvdeyen in #3368
- Set default order in picture archive to latest by @tvdeyen in #3369
- Add index to
created_aton attachment and pictures tables by @tvdeyen in #3370 - Allow to configure url classes in Dragonfly adapter by @tvdeyen in #3371
- fix(install generator): Init config with language by @tvdeyen in #3372
- Fix latest linting errors by @tvdeyen in #3377
- Sanitize filenames before upload by @tvdeyen in #3376
- Bump jsdom from 26.1.0 to 27.0.0 by @dependabot[bot] in #3378
- Seperate admin themes into CSS bundles by @tvdeyen in #3379
- Fix Dialog close button styles by @tvdeyen in #3380
- Add tidy task to remove legacy essence tables by @tvdeyen in #3382
- Restrict language destroy if nodes present by @tvdeyen in #3383
- Made Note About
gem propshaftin README.md by @Ted-Tash in #3386 - Forward all filter params while editing multiple pictures by @tvdeyen in #3384
- Delete multiple pictures in background by @tvdeyen in #3387
- Fix admin page preview permissions by @tvdeyen in #3388
New Contributors
Full Changelog: v8.0.0.a...v8.0.0.b
v7.4.10
v7.4.9
What's Changed
- [7.4-stable] Fix page info url path display by @alchemycms-ci-bot in #3355
- [7.4-stable] Alchemy TinyMCE: Remove frontend presence validation by @alchemycms-ci-bot in #3361
Full Changelog: v7.4.8...v7.4.9