alchemy_cms 7.4.6 → 8.0.0.a

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of alchemy_cms might be problematic. Click here for more details.

Files changed (349) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +86 -0
  3. data/Gemfile +13 -6
  4. data/README.md +13 -5
  5. data/alchemy_cms.gemspec +14 -5
  6. data/app/assets/builds/alchemy/admin/page-select.css +1 -1
  7. data/app/assets/builds/alchemy/admin/print.css +1 -1
  8. data/app/assets/builds/alchemy/admin.css +2 -2
  9. data/app/assets/builds/alchemy/custom-properties.css +1 -1
  10. data/app/assets/builds/alchemy/welcome.css +1 -1
  11. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
  12. data/app/assets/builds/tinymce/skins/ui/alchemy/content.min.css +1 -0
  13. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -1
  14. data/app/assets/config/alchemy_manifest.js +0 -2
  15. data/app/assets/images/alchemy/icons-sprite.svg +1 -0
  16. data/app/components/alchemy/admin/resource/applied_filter.rb +29 -0
  17. data/app/components/alchemy/admin/resource/checkbox_filter.rb +36 -0
  18. data/app/components/alchemy/admin/resource/datepicker_filter.rb +42 -0
  19. data/app/components/alchemy/admin/resource/select_filter.rb +43 -0
  20. data/app/components/alchemy/admin/toolbar_button.rb +5 -2
  21. data/app/components/alchemy/ingredients/number_view.rb +18 -0
  22. data/app/controllers/alchemy/admin/attachments_controller.rb +8 -15
  23. data/app/controllers/alchemy/admin/clipboard_controller.rb +2 -6
  24. data/app/controllers/alchemy/admin/elements_controller.rb +1 -1
  25. data/app/controllers/alchemy/admin/languages_controller.rb +1 -1
  26. data/app/controllers/alchemy/admin/pages_controller.rb +15 -15
  27. data/app/controllers/alchemy/admin/pictures_controller.rb +9 -5
  28. data/app/controllers/alchemy/admin/resources_controller.rb +16 -106
  29. data/app/controllers/alchemy/attachments_controller.rb +43 -14
  30. data/app/controllers/alchemy/messages_controller.rb +1 -1
  31. data/app/controllers/alchemy/pages_controller.rb +7 -2
  32. data/app/controllers/concerns/alchemy/admin/resource_filter.rb +92 -0
  33. data/app/decorators/alchemy/element_editor.rb +5 -48
  34. data/app/decorators/alchemy/ingredient_editor.rb +3 -53
  35. data/app/helpers/alchemy/admin/base_helper.rb +14 -84
  36. data/app/helpers/alchemy/admin/elements_helper.rb +4 -4
  37. data/app/helpers/alchemy/admin/pages_helper.rb +1 -1
  38. data/app/helpers/alchemy/base_helper.rb +0 -30
  39. data/app/helpers/alchemy/elements_block_helper.rb +0 -14
  40. data/app/helpers/alchemy/pages_helper.rb +1 -1
  41. data/{lib → app/helpers}/alchemy/resources_helper.rb +5 -45
  42. data/app/javascript/alchemy_admin/components/action.js +2 -0
  43. data/app/javascript/alchemy_admin/components/alchemy_html_element.js +3 -3
  44. data/app/javascript/alchemy_admin/components/datepicker.js +10 -2
  45. data/app/javascript/alchemy_admin/components/element_editor/delete_element_button.js +7 -7
  46. data/app/javascript/alchemy_admin/components/element_editor.js +1 -1
  47. data/app/javascript/alchemy_admin/components/index.js +1 -0
  48. data/app/javascript/alchemy_admin/components/remote_select.js +4 -1
  49. data/app/javascript/alchemy_admin/components/tags_autocomplete.js +5 -1
  50. data/app/javascript/alchemy_admin/components/tinymce.js +4 -2
  51. data/app/javascript/alchemy_admin/components/update_check.js +42 -0
  52. data/app/javascript/alchemy_admin/components/uploader/file_upload.js +15 -8
  53. data/app/javascript/alchemy_admin/components/uploader/progress.js +12 -6
  54. data/app/javascript/alchemy_admin/components/uploader.js +4 -2
  55. data/app/javascript/alchemy_admin/confirm_dialog.js +27 -57
  56. data/app/javascript/alchemy_admin/dirty.js +3 -2
  57. data/app/javascript/alchemy_admin/i18n.js +15 -16
  58. data/app/javascript/alchemy_admin/initializer.js +1 -49
  59. data/app/javascript/alchemy_admin/utils/ajax.js +51 -44
  60. data/app/javascript/alchemy_admin.js +3 -8
  61. data/app/models/alchemy/admin/filters/base.rb +38 -0
  62. data/app/models/alchemy/admin/filters/checkbox.rb +24 -0
  63. data/app/models/alchemy/admin/filters/datepicker.rb +53 -0
  64. data/app/models/alchemy/admin/filters/select.rb +70 -0
  65. data/app/models/alchemy/admin/resource_name.rb +27 -0
  66. data/app/models/alchemy/attachment.rb +51 -34
  67. data/app/models/alchemy/base_record.rb +2 -0
  68. data/app/models/alchemy/element/definitions.rb +1 -1
  69. data/app/models/alchemy/element/element_ingredients.rb +6 -6
  70. data/app/models/alchemy/element/presenters.rb +3 -12
  71. data/app/models/alchemy/element.rb +9 -27
  72. data/app/models/alchemy/element_definition.rb +160 -0
  73. data/app/models/alchemy/ingredient.rb +10 -43
  74. data/app/models/alchemy/ingredient_definition.rb +134 -0
  75. data/app/models/alchemy/ingredient_validator.rb +7 -3
  76. data/app/models/alchemy/ingredients/number.rb +19 -0
  77. data/app/models/alchemy/language.rb +0 -14
  78. data/app/models/alchemy/message.rb +3 -7
  79. data/app/models/alchemy/node.rb +1 -1
  80. data/app/models/alchemy/page/{page_layouts.rb → definitions.rb} +12 -19
  81. data/app/models/alchemy/page/fixed_attributes.rb +1 -1
  82. data/app/models/alchemy/page/page_elements.rb +13 -14
  83. data/app/models/alchemy/page/page_natures.rb +7 -7
  84. data/app/models/alchemy/page/page_scopes.rb +1 -1
  85. data/app/models/alchemy/page.rb +11 -33
  86. data/app/models/alchemy/page_definition.rb +115 -0
  87. data/app/models/alchemy/picture.rb +69 -79
  88. data/app/models/alchemy/picture_variant.rb +115 -5
  89. data/{lib → app/models}/alchemy/resource.rb +4 -18
  90. data/{lib → app/models}/alchemy/searchable_resource.rb +15 -0
  91. data/app/models/alchemy/site/layout.rb +5 -5
  92. data/app/models/alchemy/site.rb +0 -15
  93. data/app/models/alchemy/storage_adapter/active_storage/attachment_url.rb +41 -0
  94. data/app/models/alchemy/storage_adapter/active_storage/picture_url.rb +55 -0
  95. data/app/models/alchemy/storage_adapter/active_storage/preprocessor.rb +40 -0
  96. data/app/models/alchemy/storage_adapter/active_storage.rb +173 -0
  97. data/app/models/alchemy/{attachment/url.rb → storage_adapter/dragonfly/attachment_url.rb} +12 -12
  98. data/app/models/alchemy/{picture/url.rb → storage_adapter/dragonfly/picture_url.rb} +28 -12
  99. data/app/models/alchemy/{picture → storage_adapter/dragonfly}/preprocessor.rb +4 -4
  100. data/app/models/alchemy/storage_adapter/dragonfly.rb +183 -0
  101. data/app/models/alchemy/storage_adapter.rb +74 -0
  102. data/app/models/concerns/alchemy/picture_thumbnails.rb +19 -6
  103. data/app/serializers/alchemy/element_serializer.rb +0 -1
  104. data/app/services/alchemy/dragonfly_to_image_processing.rb +100 -0
  105. data/app/stylesheets/alchemy/_defaults.scss +3 -0
  106. data/app/stylesheets/alchemy/_extends.scss +69 -0
  107. data/app/{assets/stylesheets → stylesheets}/alchemy/_mixins.scss +36 -49
  108. data/app/stylesheets/alchemy/_variables.scss +5 -0
  109. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/archive.scss +20 -37
  110. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/base.scss +16 -14
  111. data/app/stylesheets/alchemy/admin/buttons.scss +160 -0
  112. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/clipboard.scss +2 -2
  113. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/dashboard.scss +13 -16
  114. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/dialogs.scss +23 -16
  115. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/elements.scss +150 -105
  116. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/errors.scss +5 -5
  117. data/app/stylesheets/alchemy/admin/filters.scss +58 -0
  118. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/flatpickr.scss +53 -60
  119. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/form_fields.scss +21 -7
  120. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/forms.scss +31 -19
  121. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/frame.scss +20 -16
  122. data/app/stylesheets/alchemy/admin/hints.scss +5 -0
  123. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/icons.scss +10 -1
  124. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/image_library.scss +10 -8
  125. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/images.scss +1 -1
  126. data/app/stylesheets/alchemy/admin/labels.scss +5 -0
  127. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/lists.scss +3 -3
  128. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/navigation.scss +61 -55
  129. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/nodes.scss +21 -18
  130. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/notices.scss +18 -18
  131. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/page-select.scss +2 -2
  132. data/app/stylesheets/alchemy/admin/pagination.scss +144 -0
  133. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/preview_window.scss +8 -6
  134. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/print.scss +1 -1
  135. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/resource_info.scss +8 -5
  136. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/search.scss +9 -6
  137. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/selects.scss +49 -37
  138. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/shoelace.scss +5 -6
  139. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/sitemap.scss +38 -33
  140. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/tables.scss +6 -4
  141. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/tags.scss +6 -4
  142. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/toolbar.scss +12 -6
  143. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/typography.scss +2 -2
  144. data/app/{assets/stylesheets → stylesheets}/alchemy/admin/upload.scss +7 -5
  145. data/app/stylesheets/alchemy/admin.scss +44 -0
  146. data/app/stylesheets/alchemy/custom-properties.css +244 -0
  147. data/app/stylesheets/alchemy/welcome.scss +75 -0
  148. data/app/{assets/stylesheets → stylesheets}/tinymce/skins/content/alchemy/content.scss +8 -9
  149. data/app/stylesheets/tinymce/skins/ui/alchemy/content.scss +1 -0
  150. data/app/{assets/stylesheets → stylesheets}/tinymce/skins/ui/alchemy/skin.scss +133 -136
  151. data/app/views/alchemy/admin/attachments/_files_list.html.erb +2 -2
  152. data/app/views/alchemy/admin/attachments/_overlay_file_list.html.erb +1 -1
  153. data/app/views/alchemy/admin/{elements/_clipboard_button.html.erb → clipboard/_button.html.erb} +3 -5
  154. data/app/views/alchemy/admin/clipboard/_update_nested_element_button.turbo_stream.erb +11 -0
  155. data/app/views/alchemy/admin/clipboard/clear.turbo_stream.erb +4 -0
  156. data/app/views/alchemy/admin/clipboard/index.html.erb +15 -13
  157. data/app/views/alchemy/admin/clipboard/insert.turbo_stream.erb +18 -0
  158. data/app/views/alchemy/admin/clipboard/remove.turbo_stream.erb +9 -0
  159. data/app/views/alchemy/admin/dashboard/info.html.erb +17 -31
  160. data/app/views/alchemy/admin/elements/_element.html.erb +4 -8
  161. data/app/views/alchemy/admin/elements/_form.html.erb +1 -1
  162. data/app/views/alchemy/admin/elements/_header.html.erb +1 -0
  163. data/app/views/alchemy/admin/elements/_toolbar.html.erb +4 -6
  164. data/app/views/alchemy/admin/elements/create.turbo_stream.erb +2 -1
  165. data/app/views/alchemy/admin/elements/index.html.erb +2 -2
  166. data/app/views/alchemy/admin/ingredients/_file_fields.html.erb +3 -16
  167. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +0 -9
  168. data/app/views/alchemy/admin/languages/_form.html.erb +1 -1
  169. data/app/views/alchemy/admin/languages/_table.html.erb +1 -1
  170. data/app/views/alchemy/admin/languages/index.html.erb +5 -2
  171. data/app/views/alchemy/admin/layoutpages/index.html.erb +1 -12
  172. data/app/views/alchemy/admin/pages/_form.html.erb +2 -2
  173. data/app/views/alchemy/admin/pages/_page.html.erb +2 -3
  174. data/app/views/alchemy/admin/pages/_toolbar.html.erb +1 -15
  175. data/app/views/alchemy/admin/pages/index.html.erb +1 -1
  176. data/app/views/alchemy/admin/partials/_remote_search_form.html.erb +9 -12
  177. data/app/views/alchemy/admin/partials/_search_form.html.erb +4 -9
  178. data/app/views/alchemy/admin/pictures/_archive.html.erb +4 -7
  179. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +2 -1
  180. data/app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb +1 -1
  181. data/app/views/alchemy/admin/pictures/index.html.erb +2 -7
  182. data/app/views/alchemy/admin/resources/_applied_filters.html.erb +8 -0
  183. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +11 -21
  184. data/app/views/alchemy/admin/resources/_pagination.html.erb +6 -0
  185. data/app/views/alchemy/admin/resources/_per_page_select.html.erb +4 -2
  186. data/app/views/alchemy/admin/resources/_resource_table.html.erb +1 -1
  187. data/app/views/alchemy/admin/resources/_table_header.html.erb +1 -15
  188. data/app/views/alchemy/admin/sites/index.html.erb +5 -1
  189. data/app/views/alchemy/admin/styleguide/index.html.erb +8 -0
  190. data/app/views/alchemy/admin/tags/index.html.erb +1 -1
  191. data/app/views/alchemy/admin/tinymce/_setup.html.erb +7 -7
  192. data/app/{javascript/alchemy_admin/locales/en.js → views/alchemy/admin/translations/_en.js} +5 -2
  193. data/app/views/alchemy/admin/uploader/_button.html.erb +1 -1
  194. data/app/views/alchemy/admin/uploader/_setup.html.erb +4 -4
  195. data/app/views/alchemy/base/redirect.js.erb +1 -1
  196. data/app/views/alchemy/ingredients/_number_editor.html.erb +24 -0
  197. data/app/views/alchemy/no_index.html.erb +31 -0
  198. data/app/views/alchemy/welcome.html.erb +12 -10
  199. data/app/views/kaminari/alchemy/_first_page.html.erb +5 -3
  200. data/app/views/kaminari/alchemy/_last_page.html.erb +5 -3
  201. data/app/views/kaminari/alchemy/_next_page.html.erb +5 -3
  202. data/app/views/kaminari/alchemy/_paginator.html.erb +18 -13
  203. data/app/views/kaminari/alchemy/_prev_page.html.erb +5 -3
  204. data/app/views/layouts/alchemy/admin.html.erb +5 -9
  205. data/bun.lockb +0 -0
  206. data/bundles/remixicon.mjs +153 -0
  207. data/config/alchemy/config.yml +3 -2
  208. data/config/initializers/dragonfly.rb +0 -1
  209. data/config/initializers/mime_types.rb +1 -0
  210. data/config/locales/alchemy.en.yml +32 -14
  211. data/config/routes.rb +0 -2
  212. data/eslint.config.js +2 -1
  213. data/lib/alchemy/admin/preview_url.rb +4 -5
  214. data/lib/alchemy/cache_digests/template_tracker.rb +6 -9
  215. data/lib/alchemy/config_missing.rb +14 -0
  216. data/lib/alchemy/configuration/base_option.rb +24 -0
  217. data/lib/alchemy/configuration/boolean_option.rb +16 -0
  218. data/lib/alchemy/configuration/class_option.rb +15 -0
  219. data/lib/alchemy/configuration/class_set_option.rb +46 -0
  220. data/lib/alchemy/configuration/integer_list_option.rb +13 -0
  221. data/lib/alchemy/configuration/integer_option.rb +12 -0
  222. data/lib/alchemy/configuration/list_option.rb +22 -0
  223. data/lib/alchemy/configuration/regexp_option.rb +11 -0
  224. data/lib/alchemy/configuration/string_list_option.rb +13 -0
  225. data/lib/alchemy/configuration/string_option.rb +11 -0
  226. data/lib/alchemy/configuration.rb +115 -0
  227. data/lib/alchemy/configuration_methods.rb +3 -1
  228. data/lib/alchemy/configurations/default_language.rb +12 -0
  229. data/lib/alchemy/configurations/default_site.rb +10 -0
  230. data/lib/alchemy/configurations/format_matchers.rb +11 -0
  231. data/lib/alchemy/configurations/mailer.rb +16 -0
  232. data/lib/alchemy/configurations/main.rb +216 -0
  233. data/lib/alchemy/configurations/preview.rb +32 -0
  234. data/lib/alchemy/configurations/sitemap.rb +10 -0
  235. data/lib/alchemy/configurations/uploader.rb +34 -0
  236. data/lib/alchemy/engine.rb +65 -17
  237. data/lib/alchemy/hints.rb +3 -7
  238. data/lib/alchemy/on_page_layout.rb +2 -2
  239. data/lib/alchemy/propshaft/tinymce_asset.rb +15 -0
  240. data/lib/alchemy/seeder.rb +2 -2
  241. data/lib/alchemy/tasks/usage.rb +4 -4
  242. data/lib/alchemy/test_support/config_stubbing.rb +1 -7
  243. data/lib/alchemy/test_support/factories/attachment_factory.rb +13 -2
  244. data/lib/alchemy/test_support/factories/language_factory.rb +1 -1
  245. data/lib/alchemy/test_support/factories/page_factory.rb +2 -3
  246. data/lib/alchemy/test_support/factories/picture_factory.rb +30 -2
  247. data/lib/alchemy/test_support/factories/site_factory.rb +2 -2
  248. data/lib/alchemy/test_support/having_crop_action_examples.rb +2 -2
  249. data/lib/alchemy/test_support/having_picture_thumbnails_examples.rb +80 -26
  250. data/lib/alchemy/test_support/shared_ingredient_examples.rb +5 -5
  251. data/lib/alchemy/upgrader/.keep +0 -0
  252. data/lib/alchemy/upgrader/eight_zero.rb +14 -0
  253. data/lib/alchemy/upgrader.rb +33 -20
  254. data/lib/alchemy/version.rb +1 -1
  255. data/lib/alchemy.rb +192 -170
  256. data/lib/alchemy_cms.rb +1 -7
  257. data/lib/generators/alchemy/ingredient/ingredient_generator.rb +0 -3
  258. data/lib/generators/alchemy/install/files/_article.html.erb +6 -4
  259. data/lib/generators/alchemy/install/files/alchemy.en.yml +22 -3
  260. data/lib/generators/alchemy/install/files/application.html.erb +5 -0
  261. data/lib/generators/alchemy/install/install_generator.rb +5 -14
  262. data/lib/generators/alchemy/install/templates/alchemy.rb.tt +196 -0
  263. data/lib/generators/alchemy/install/templates/dragonfly.rb.tt +0 -1
  264. data/lib/generators/alchemy/install/templates/elements.yml.tt +3 -1
  265. data/lib/generators/alchemy/install/templates/menus.yml.tt +1 -1
  266. data/lib/generators/alchemy/install/templates/page_layouts.yml.tt +2 -2
  267. data/lib/generators/alchemy/page_layouts/page_layouts_generator.rb +2 -2
  268. data/lib/tasks/alchemy/assets.rake +14 -0
  269. data/lib/tasks/alchemy/upgrade.rake +12 -47
  270. data/vendor/javascript/tinymce.min.js +1 -1
  271. data/vitest.config.js +21 -0
  272. metadata +181 -180
  273. data/app/assets/builds/alchemy/admin/page-select.css.map +0 -1
  274. data/app/assets/builds/alchemy/admin/print.css.map +0 -1
  275. data/app/assets/builds/alchemy/admin.css.map +0 -1
  276. data/app/assets/builds/alchemy/custom-properties.css.map +0 -1
  277. data/app/assets/builds/alchemy/welcome.css.map +0 -1
  278. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map +0 -1
  279. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map +0 -1
  280. data/app/assets/javascripts/alchemy/admin.js +0 -10
  281. data/app/assets/stylesheets/alchemy/_defaults.scss +0 -3
  282. data/app/assets/stylesheets/alchemy/_deprecated_variables.scss +0 -45
  283. data/app/assets/stylesheets/alchemy/_deprecation.scss +0 -17
  284. data/app/assets/stylesheets/alchemy/_extends.scss +0 -62
  285. data/app/assets/stylesheets/alchemy/_variables.scss +0 -201
  286. data/app/assets/stylesheets/alchemy/admin/buttons.scss +0 -124
  287. data/app/assets/stylesheets/alchemy/admin/hints.scss +0 -5
  288. data/app/assets/stylesheets/alchemy/admin/labels.scss +0 -3
  289. data/app/assets/stylesheets/alchemy/admin/pagination.scss +0 -92
  290. data/app/assets/stylesheets/alchemy/admin.scss +0 -42
  291. data/app/assets/stylesheets/alchemy/custom-properties.css +0 -98
  292. data/app/assets/stylesheets/alchemy/welcome.scss +0 -57
  293. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css +0 -711
  294. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css +0 -705
  295. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css +0 -7
  296. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css +0 -7
  297. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css +0 -29
  298. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css +0 -7
  299. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css +0 -677
  300. data/app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css +0 -7
  301. data/app/controllers/alchemy/elements_controller.rb +0 -32
  302. data/app/models/alchemy/element/dom_id.rb +0 -31
  303. data/app/models/alchemy/picture/calculations.rb +0 -49
  304. data/app/models/alchemy/picture/transformations.rb +0 -115
  305. data/app/views/alchemy/admin/attachments/destroy.js.erb +0 -1
  306. data/app/views/alchemy/admin/clipboard/clear.js.erb +0 -3
  307. data/app/views/alchemy/admin/clipboard/insert.js.erb +0 -29
  308. data/app/views/alchemy/admin/clipboard/remove.js.erb +0 -10
  309. data/app/views/alchemy/admin/resources/_filter.html.erb +0 -12
  310. data/app/views/alchemy/admin/resources/_resource.html.erb +0 -34
  311. data/app/views/alchemy/admin/resources/_table.html.erb +0 -29
  312. data/app/views/alchemy/elements/show.html.erb +0 -1
  313. data/app/views/alchemy/elements/show.js.erb +0 -1
  314. data/app/views/alchemy/ingredients/_audio_view.html.erb +0 -1
  315. data/app/views/alchemy/ingredients/_boolean_view.html.erb +0 -1
  316. data/app/views/alchemy/ingredients/_datetime_view.html.erb +0 -3
  317. data/app/views/alchemy/ingredients/_file_view.html.erb +0 -4
  318. data/app/views/alchemy/ingredients/_headline_view.html.erb +0 -4
  319. data/app/views/alchemy/ingredients/_html_view.html.erb +0 -1
  320. data/app/views/alchemy/ingredients/_link_view.html.erb +0 -4
  321. data/app/views/alchemy/ingredients/_node_view.html.erb +0 -1
  322. data/app/views/alchemy/ingredients/_page_view.html.erb +0 -1
  323. data/app/views/alchemy/ingredients/_picture_view.html.erb +0 -4
  324. data/app/views/alchemy/ingredients/_richtext_view.html.erb +0 -3
  325. data/app/views/alchemy/ingredients/_select_view.html.erb +0 -1
  326. data/app/views/alchemy/ingredients/_text_view.html.erb +0 -4
  327. data/app/views/alchemy/ingredients/_video_view.html.erb +0 -3
  328. data/babel.config.js +0 -12
  329. data/config/initializers/assets.rb +0 -4
  330. data/lib/alchemy/config.rb +0 -114
  331. data/lib/alchemy/element_definition.rb +0 -73
  332. data/lib/alchemy/page_layout.rb +0 -73
  333. data/lib/alchemy/resource_filter.rb +0 -40
  334. data/lib/alchemy/upgrader/seven_point_four.rb +0 -26
  335. data/lib/alchemy/upgrader/seven_point_three.rb +0 -52
  336. data/lib/generators/alchemy/ingredient/templates/view.html.erb +0 -1
  337. data/lib/generators/alchemy/install/files/alchemy_admin.js +0 -1
  338. data/lib/generators/alchemy/install/files/all.js +0 -11
  339. data/lib/generators/alchemy/install/files/article.css +0 -25
  340. data/vendor/assets/images/remixicon.symbol.svg +0 -11
  341. /data/app/{assets/stylesheets → stylesheets}/alchemy/_fonts.scss +0 -0
  342. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/attachment-select.scss +0 -0
  343. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/attachments.scss +0 -0
  344. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/flash.scss +0 -0
  345. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/list_filter.scss +0 -0
  346. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/node-select.scss +0 -0
  347. /data/app/{assets/stylesheets → stylesheets}/alchemy/admin/spinner.scss +0 -0
  348. /data/app/{assets/stylesheets → stylesheets}/tinymce/skins/skintool.json +0 -0
  349. /data/app/{assets/stylesheets → stylesheets}/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff +0 -0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.4.6
4
+ version: 8.0.0.a
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: '7.0'
23
+ version: '7.1'
24
24
  - - "<"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '8.1'
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '7.0'
33
+ version: '7.1'
34
34
  - - "<"
35
35
  - !ruby/object:Gem::Version
36
36
  version: '8.1'
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirements:
41
41
  - - ">="
42
42
  - !ruby/object:Gem::Version
43
- version: '7.0'
43
+ version: '7.1'
44
44
  - - "<"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '8.1'
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ">="
52
52
  - !ruby/object:Gem::Version
53
- version: '7.0'
53
+ version: '7.1'
54
54
  - - "<"
55
55
  - !ruby/object:Gem::Version
56
56
  version: '8.1'
@@ -60,7 +60,7 @@ dependencies:
60
60
  requirements:
61
61
  - - ">="
62
62
  - !ruby/object:Gem::Version
63
- version: '7.0'
63
+ version: '7.1'
64
64
  - - "<"
65
65
  - !ruby/object:Gem::Version
66
66
  version: '8.1'
@@ -70,7 +70,7 @@ dependencies:
70
70
  requirements:
71
71
  - - ">="
72
72
  - !ruby/object:Gem::Version
73
- version: '7.0'
73
+ version: '7.1'
74
74
  - - "<"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '8.1'
@@ -80,7 +80,7 @@ dependencies:
80
80
  requirements:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: '7.0'
83
+ version: '7.1'
84
84
  - - "<"
85
85
  - !ruby/object:Gem::Version
86
86
  version: '8.1'
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - ">="
92
92
  - !ruby/object:Gem::Version
93
- version: '7.0'
93
+ version: '7.1'
94
94
  - - "<"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '8.1'
@@ -100,7 +100,7 @@ dependencies:
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '7.0'
103
+ version: '7.1'
104
104
  - - "<"
105
105
  - !ruby/object:Gem::Version
106
106
  version: '8.1'
@@ -110,7 +110,7 @@ dependencies:
110
110
  requirements:
111
111
  - - ">="
112
112
  - !ruby/object:Gem::Version
113
- version: '7.0'
113
+ version: '7.1'
114
114
  - - "<"
115
115
  - !ruby/object:Gem::Version
116
116
  version: '8.1'
@@ -120,7 +120,7 @@ dependencies:
120
120
  requirements:
121
121
  - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: '7.0'
123
+ version: '7.1'
124
124
  - - "<"
125
125
  - !ruby/object:Gem::Version
126
126
  version: '8.1'
@@ -130,7 +130,27 @@ dependencies:
130
130
  requirements:
131
131
  - - ">="
132
132
  - !ruby/object:Gem::Version
133
- version: '7.0'
133
+ version: '7.1'
134
+ - - "<"
135
+ - !ruby/object:Gem::Version
136
+ version: '8.1'
137
+ - !ruby/object:Gem::Dependency
138
+ name: activestorage
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '7.1'
144
+ - - "<"
145
+ - !ruby/object:Gem::Version
146
+ version: '8.1'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '7.1'
134
154
  - - "<"
135
155
  - !ruby/object:Gem::Version
136
156
  version: '8.1'
@@ -140,7 +160,7 @@ dependencies:
140
160
  requirements:
141
161
  - - ">="
142
162
  - !ruby/object:Gem::Version
143
- version: '7.0'
163
+ version: '7.1'
144
164
  - - "<"
145
165
  - !ruby/object:Gem::Version
146
166
  version: '8.1'
@@ -150,7 +170,7 @@ dependencies:
150
170
  requirements:
151
171
  - - ">="
152
172
  - !ruby/object:Gem::Version
153
- version: '7.0'
173
+ version: '7.1'
154
174
  - - "<"
155
175
  - !ruby/object:Gem::Version
156
176
  version: '8.1'
@@ -160,7 +180,7 @@ dependencies:
160
180
  requirements:
161
181
  - - ">="
162
182
  - !ruby/object:Gem::Version
163
- version: '7.0'
183
+ version: '7.1'
164
184
  - - "<"
165
185
  - !ruby/object:Gem::Version
166
186
  version: '8.1'
@@ -170,7 +190,7 @@ dependencies:
170
190
  requirements:
171
191
  - - ">="
172
192
  - !ruby/object:Gem::Version
173
- version: '7.0'
193
+ version: '7.1'
174
194
  - - "<"
175
195
  - !ruby/object:Gem::Version
176
196
  version: '8.1'
@@ -277,59 +297,53 @@ dependencies:
277
297
  - !ruby/object:Gem::Version
278
298
  version: '1.4'
279
299
  - !ruby/object:Gem::Dependency
280
- name: dragonfly_svg
300
+ name: gutentag
281
301
  requirement: !ruby/object:Gem::Requirement
282
302
  requirements:
283
303
  - - "~>"
284
304
  - !ruby/object:Gem::Version
285
- version: 0.0.4
305
+ version: '2.2'
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: 2.2.1
286
309
  type: :runtime
287
310
  prerelease: false
288
311
  version_requirements: !ruby/object:Gem::Requirement
289
312
  requirements:
290
313
  - - "~>"
291
314
  - !ruby/object:Gem::Version
292
- version: 0.0.4
315
+ version: '2.2'
316
+ - - ">="
317
+ - !ruby/object:Gem::Version
318
+ version: 2.2.1
293
319
  - !ruby/object:Gem::Dependency
294
- name: gutentag
320
+ name: image_processing
295
321
  requirement: !ruby/object:Gem::Requirement
296
322
  requirements:
297
323
  - - "~>"
298
324
  - !ruby/object:Gem::Version
299
- version: '2.2'
300
- - - ">="
301
- - !ruby/object:Gem::Version
302
- version: 2.2.1
325
+ version: '1.14'
303
326
  type: :runtime
304
327
  prerelease: false
305
328
  version_requirements: !ruby/object:Gem::Requirement
306
329
  requirements:
307
330
  - - "~>"
308
331
  - !ruby/object:Gem::Version
309
- version: '2.2'
310
- - - ">="
311
- - !ruby/object:Gem::Version
312
- version: 2.2.1
332
+ version: '1.14'
313
333
  - !ruby/object:Gem::Dependency
314
334
  name: importmap-rails
315
335
  requirement: !ruby/object:Gem::Requirement
316
336
  requirements:
317
337
  - - "~>"
318
338
  - !ruby/object:Gem::Version
319
- version: '1.2'
320
- - - ">="
321
- - !ruby/object:Gem::Version
322
- version: 1.2.1
339
+ version: '2.0'
323
340
  type: :runtime
324
341
  prerelease: false
325
342
  version_requirements: !ruby/object:Gem::Requirement
326
343
  requirements:
327
344
  - - "~>"
328
345
  - !ruby/object:Gem::Version
329
- version: '1.2'
330
- - - ">="
331
- - !ruby/object:Gem::Version
332
- version: 1.2.1
346
+ version: '2.0'
333
347
  - !ruby/object:Gem::Dependency
334
348
  name: kaminari
335
349
  requirement: !ruby/object:Gem::Requirement
@@ -398,26 +412,6 @@ dependencies:
398
412
  - - "<"
399
413
  - !ruby/object:Gem::Version
400
414
  version: '6'
401
- - !ruby/object:Gem::Dependency
402
- name: sprockets-rails
403
- requirement: !ruby/object:Gem::Requirement
404
- requirements:
405
- - - ">="
406
- - !ruby/object:Gem::Version
407
- version: '3.5'
408
- - - "<"
409
- - !ruby/object:Gem::Version
410
- version: '4'
411
- type: :runtime
412
- prerelease: false
413
- version_requirements: !ruby/object:Gem::Requirement
414
- requirements:
415
- - - ">="
416
- - !ruby/object:Gem::Version
417
- version: '3.5'
418
- - - "<"
419
- - !ruby/object:Gem::Version
420
- version: '4'
421
415
  - !ruby/object:Gem::Dependency
422
416
  name: turbo-rails
423
417
  requirement: !ruby/object:Gem::Requirement
@@ -556,14 +550,14 @@ dependencies:
556
550
  requirements:
557
551
  - - "~>"
558
552
  - !ruby/object:Gem::Version
559
- version: '6.1'
553
+ version: '8.0'
560
554
  type: :development
561
555
  prerelease: false
562
556
  version_requirements: !ruby/object:Gem::Requirement
563
557
  requirements:
564
558
  - - "~>"
565
559
  - !ruby/object:Gem::Version
566
- version: '6.1'
560
+ version: '8.0'
567
561
  - !ruby/object:Gem::Dependency
568
562
  name: simplecov
569
563
  requirement: !ruby/object:Gem::Requirement
@@ -651,91 +645,22 @@ files:
651
645
  - SECURITY.md
652
646
  - alchemy_cms.gemspec
653
647
  - app/assets/builds/alchemy/admin.css
654
- - app/assets/builds/alchemy/admin.css.map
655
648
  - app/assets/builds/alchemy/admin/page-select.css
656
- - app/assets/builds/alchemy/admin/page-select.css.map
657
649
  - app/assets/builds/alchemy/admin/print.css
658
- - app/assets/builds/alchemy/admin/print.css.map
659
650
  - app/assets/builds/alchemy/custom-properties.css
660
- - app/assets/builds/alchemy/custom-properties.css.map
661
651
  - app/assets/builds/alchemy/preview.min.js
662
652
  - app/assets/builds/alchemy/welcome.css
663
- - app/assets/builds/alchemy/welcome.css.map
664
653
  - app/assets/builds/tinymce/skins/content/alchemy/content.min.css
665
- - app/assets/builds/tinymce/skins/content/alchemy/content.min.css.map
654
+ - app/assets/builds/tinymce/skins/ui/alchemy/content.min.css
666
655
  - app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css
667
- - app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css.map
668
656
  - app/assets/config/alchemy_manifest.js
669
657
  - app/assets/images/alchemy/alchemy-logo.png
670
658
  - app/assets/images/alchemy/alchemy-logo.svg
671
659
  - app/assets/images/alchemy/favicon.ico
672
660
  - app/assets/images/alchemy/icon-white.svg
673
661
  - app/assets/images/alchemy/icon.svg
662
+ - app/assets/images/alchemy/icons-sprite.svg
674
663
  - app/assets/images/alchemy/missing-image.svg
675
- - app/assets/javascripts/alchemy/admin.js
676
- - app/assets/stylesheets/alchemy/_defaults.scss
677
- - app/assets/stylesheets/alchemy/_deprecated_variables.scss
678
- - app/assets/stylesheets/alchemy/_deprecation.scss
679
- - app/assets/stylesheets/alchemy/_extends.scss
680
- - app/assets/stylesheets/alchemy/_fonts.scss
681
- - app/assets/stylesheets/alchemy/_mixins.scss
682
- - app/assets/stylesheets/alchemy/_variables.scss
683
- - app/assets/stylesheets/alchemy/admin.scss
684
- - app/assets/stylesheets/alchemy/admin/archive.scss
685
- - app/assets/stylesheets/alchemy/admin/attachment-select.scss
686
- - app/assets/stylesheets/alchemy/admin/attachments.scss
687
- - app/assets/stylesheets/alchemy/admin/base.scss
688
- - app/assets/stylesheets/alchemy/admin/buttons.scss
689
- - app/assets/stylesheets/alchemy/admin/clipboard.scss
690
- - app/assets/stylesheets/alchemy/admin/dashboard.scss
691
- - app/assets/stylesheets/alchemy/admin/dialogs.scss
692
- - app/assets/stylesheets/alchemy/admin/elements.scss
693
- - app/assets/stylesheets/alchemy/admin/errors.scss
694
- - app/assets/stylesheets/alchemy/admin/flash.scss
695
- - app/assets/stylesheets/alchemy/admin/flatpickr.scss
696
- - app/assets/stylesheets/alchemy/admin/form_fields.scss
697
- - app/assets/stylesheets/alchemy/admin/forms.scss
698
- - app/assets/stylesheets/alchemy/admin/frame.scss
699
- - app/assets/stylesheets/alchemy/admin/hints.scss
700
- - app/assets/stylesheets/alchemy/admin/icons.scss
701
- - app/assets/stylesheets/alchemy/admin/image_library.scss
702
- - app/assets/stylesheets/alchemy/admin/images.scss
703
- - app/assets/stylesheets/alchemy/admin/labels.scss
704
- - app/assets/stylesheets/alchemy/admin/list_filter.scss
705
- - app/assets/stylesheets/alchemy/admin/lists.scss
706
- - app/assets/stylesheets/alchemy/admin/navigation.scss
707
- - app/assets/stylesheets/alchemy/admin/node-select.scss
708
- - app/assets/stylesheets/alchemy/admin/nodes.scss
709
- - app/assets/stylesheets/alchemy/admin/notices.scss
710
- - app/assets/stylesheets/alchemy/admin/page-select.scss
711
- - app/assets/stylesheets/alchemy/admin/pagination.scss
712
- - app/assets/stylesheets/alchemy/admin/preview_window.scss
713
- - app/assets/stylesheets/alchemy/admin/print.scss
714
- - app/assets/stylesheets/alchemy/admin/resource_info.scss
715
- - app/assets/stylesheets/alchemy/admin/search.scss
716
- - app/assets/stylesheets/alchemy/admin/selects.scss
717
- - app/assets/stylesheets/alchemy/admin/shoelace.scss
718
- - app/assets/stylesheets/alchemy/admin/sitemap.scss
719
- - app/assets/stylesheets/alchemy/admin/spinner.scss
720
- - app/assets/stylesheets/alchemy/admin/tables.scss
721
- - app/assets/stylesheets/alchemy/admin/tags.scss
722
- - app/assets/stylesheets/alchemy/admin/toolbar.scss
723
- - app/assets/stylesheets/alchemy/admin/typography.scss
724
- - app/assets/stylesheets/alchemy/admin/upload.scss
725
- - app/assets/stylesheets/alchemy/custom-properties.css
726
- - app/assets/stylesheets/alchemy/welcome.scss
727
- - app/assets/stylesheets/tinymce/skins/content/alchemy/content.scss
728
- - app/assets/stylesheets/tinymce/skins/skintool.json
729
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.css
730
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.css
731
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.inline.min.css
732
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.min.css
733
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.css
734
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/content.mobile.min.css
735
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff
736
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.css
737
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.mobile.min.css
738
- - app/assets/stylesheets/tinymce/skins/ui/alchemy/skin.scss
739
664
  - app/components/alchemy/admin/attachment_select.rb
740
665
  - app/components/alchemy/admin/icon.rb
741
666
  - app/components/alchemy/admin/link_dialog/anchor_tab.rb
@@ -749,8 +674,12 @@ files:
749
674
  - app/components/alchemy/admin/node_select.rb
750
675
  - app/components/alchemy/admin/page_select.rb
751
676
  - app/components/alchemy/admin/resource/action.rb
677
+ - app/components/alchemy/admin/resource/applied_filter.rb
752
678
  - app/components/alchemy/admin/resource/cell.rb
679
+ - app/components/alchemy/admin/resource/checkbox_filter.rb
680
+ - app/components/alchemy/admin/resource/datepicker_filter.rb
753
681
  - app/components/alchemy/admin/resource/header.rb
682
+ - app/components/alchemy/admin/resource/select_filter.rb
754
683
  - app/components/alchemy/admin/resource/table.rb
755
684
  - app/components/alchemy/admin/tags_autocomplete.rb
756
685
  - app/components/alchemy/admin/toolbar_button.rb
@@ -763,6 +692,7 @@ files:
763
692
  - app/components/alchemy/ingredients/html_view.rb
764
693
  - app/components/alchemy/ingredients/link_view.rb
765
694
  - app/components/alchemy/ingredients/node_view.rb
695
+ - app/components/alchemy/ingredients/number_view.rb
766
696
  - app/components/alchemy/ingredients/page_view.rb
767
697
  - app/components/alchemy/ingredients/picture_view.rb
768
698
  - app/components/alchemy/ingredients/richtext_view.rb
@@ -795,13 +725,13 @@ files:
795
725
  - app/controllers/alchemy/api/pages_controller.rb
796
726
  - app/controllers/alchemy/attachments_controller.rb
797
727
  - app/controllers/alchemy/base_controller.rb
798
- - app/controllers/alchemy/elements_controller.rb
799
728
  - app/controllers/alchemy/messages_controller.rb
800
729
  - app/controllers/alchemy/pages_controller.rb
801
730
  - app/controllers/concerns/alchemy/admin/archive_overlay.rb
802
731
  - app/controllers/concerns/alchemy/admin/crop_action.rb
803
732
  - app/controllers/concerns/alchemy/admin/current_language.rb
804
733
  - app/controllers/concerns/alchemy/admin/picture_descriptions_form_helper.rb
734
+ - app/controllers/concerns/alchemy/admin/resource_filter.rb
805
735
  - app/controllers/concerns/alchemy/admin/uploader_responses.rb
806
736
  - app/controllers/concerns/alchemy/legacy_page_redirects.rb
807
737
  - app/controllers/concerns/alchemy/site_redirects.rb
@@ -820,6 +750,7 @@ files:
820
750
  - app/helpers/alchemy/elements_block_helper.rb
821
751
  - app/helpers/alchemy/elements_helper.rb
822
752
  - app/helpers/alchemy/pages_helper.rb
753
+ - app/helpers/alchemy/resources_helper.rb
823
754
  - app/helpers/alchemy/url_helper.rb
824
755
  - app/javascript/alchemy_admin.js
825
756
  - app/javascript/alchemy_admin/components/action.js
@@ -854,6 +785,7 @@ files:
854
785
  - app/javascript/alchemy_admin/components/spinner.js
855
786
  - app/javascript/alchemy_admin/components/tags_autocomplete.js
856
787
  - app/javascript/alchemy_admin/components/tinymce.js
788
+ - app/javascript/alchemy_admin/components/update_check.js
857
789
  - app/javascript/alchemy_admin/components/uploader.js
858
790
  - app/javascript/alchemy_admin/components/uploader/file_upload.js
859
791
  - app/javascript/alchemy_admin/components/uploader/progress.js
@@ -871,7 +803,6 @@ files:
871
803
  - app/javascript/alchemy_admin/ingredient_anchor_link.js
872
804
  - app/javascript/alchemy_admin/initializer.js
873
805
  - app/javascript/alchemy_admin/link_dialog.js
874
- - app/javascript/alchemy_admin/locales/en.js
875
806
  - app/javascript/alchemy_admin/node_tree.js
876
807
  - app/javascript/alchemy_admin/page_publication_fields.js
877
808
  - app/javascript/alchemy_admin/page_sorter.js
@@ -899,21 +830,26 @@ files:
899
830
  - app/jobs/alchemy/publish_page_job.rb
900
831
  - app/mailers/alchemy/base_mailer.rb
901
832
  - app/mailers/alchemy/messages_mailer.rb
833
+ - app/models/alchemy/admin/filters/base.rb
834
+ - app/models/alchemy/admin/filters/checkbox.rb
835
+ - app/models/alchemy/admin/filters/datepicker.rb
836
+ - app/models/alchemy/admin/filters/select.rb
837
+ - app/models/alchemy/admin/resource_name.rb
902
838
  - app/models/alchemy/attachment.rb
903
- - app/models/alchemy/attachment/url.rb
904
839
  - app/models/alchemy/base_record.rb
905
840
  - app/models/alchemy/current.rb
906
841
  - app/models/alchemy/eager_loading.rb
907
842
  - app/models/alchemy/element.rb
908
843
  - app/models/alchemy/element/definitions.rb
909
- - app/models/alchemy/element/dom_id.rb
910
844
  - app/models/alchemy/element/element_ingredients.rb
911
845
  - app/models/alchemy/element/presenters.rb
846
+ - app/models/alchemy/element_definition.rb
912
847
  - app/models/alchemy/element_to_page.rb
913
848
  - app/models/alchemy/elements_repository.rb
914
849
  - app/models/alchemy/folded_page.rb
915
850
  - app/models/alchemy/image_cropper_settings.rb
916
851
  - app/models/alchemy/ingredient.rb
852
+ - app/models/alchemy/ingredient_definition.rb
917
853
  - app/models/alchemy/ingredient_validator.rb
918
854
  - app/models/alchemy/ingredients/audio.rb
919
855
  - app/models/alchemy/ingredients/boolean.rb
@@ -923,6 +859,7 @@ files:
923
859
  - app/models/alchemy/ingredients/html.rb
924
860
  - app/models/alchemy/ingredients/link.rb
925
861
  - app/models/alchemy/ingredients/node.rb
862
+ - app/models/alchemy/ingredients/number.rb
926
863
  - app/models/alchemy/ingredients/page.rb
927
864
  - app/models/alchemy/ingredients/picture.rb
928
865
  - app/models/alchemy/ingredients/richtext.rb
@@ -935,21 +872,18 @@ files:
935
872
  - app/models/alchemy/message.rb
936
873
  - app/models/alchemy/node.rb
937
874
  - app/models/alchemy/page.rb
875
+ - app/models/alchemy/page/definitions.rb
938
876
  - app/models/alchemy/page/fixed_attributes.rb
939
877
  - app/models/alchemy/page/page_elements.rb
940
- - app/models/alchemy/page/page_layouts.rb
941
878
  - app/models/alchemy/page/page_naming.rb
942
879
  - app/models/alchemy/page/page_natures.rb
943
880
  - app/models/alchemy/page/page_scopes.rb
944
881
  - app/models/alchemy/page/publisher.rb
945
882
  - app/models/alchemy/page/url_path.rb
883
+ - app/models/alchemy/page_definition.rb
946
884
  - app/models/alchemy/page_mutex.rb
947
885
  - app/models/alchemy/page_version.rb
948
886
  - app/models/alchemy/picture.rb
949
- - app/models/alchemy/picture/calculations.rb
950
- - app/models/alchemy/picture/preprocessor.rb
951
- - app/models/alchemy/picture/transformations.rb
952
- - app/models/alchemy/picture/url.rb
953
887
  - app/models/alchemy/picture_description.rb
954
888
  - app/models/alchemy/picture_thumb.rb
955
889
  - app/models/alchemy/picture_thumb/create.rb
@@ -957,8 +891,19 @@ files:
957
891
  - app/models/alchemy/picture_thumb/signature.rb
958
892
  - app/models/alchemy/picture_thumb/uid.rb
959
893
  - app/models/alchemy/picture_variant.rb
894
+ - app/models/alchemy/resource.rb
895
+ - app/models/alchemy/searchable_resource.rb
960
896
  - app/models/alchemy/site.rb
961
897
  - app/models/alchemy/site/layout.rb
898
+ - app/models/alchemy/storage_adapter.rb
899
+ - app/models/alchemy/storage_adapter/active_storage.rb
900
+ - app/models/alchemy/storage_adapter/active_storage/attachment_url.rb
901
+ - app/models/alchemy/storage_adapter/active_storage/picture_url.rb
902
+ - app/models/alchemy/storage_adapter/active_storage/preprocessor.rb
903
+ - app/models/alchemy/storage_adapter/dragonfly.rb
904
+ - app/models/alchemy/storage_adapter/dragonfly/attachment_url.rb
905
+ - app/models/alchemy/storage_adapter/dragonfly/picture_url.rb
906
+ - app/models/alchemy/storage_adapter/dragonfly/preprocessor.rb
962
907
  - app/models/alchemy/tag.rb
963
908
  - app/models/concerns/alchemy/dom_ids.rb
964
909
  - app/models/concerns/alchemy/picture_thumbnails.rb
@@ -976,8 +921,64 @@ files:
976
921
  - app/serializers/alchemy/site_serializer.rb
977
922
  - app/services/alchemy/copy_page.rb
978
923
  - app/services/alchemy/delete_elements.rb
924
+ - app/services/alchemy/dragonfly_to_image_processing.rb
979
925
  - app/services/alchemy/duplicate_element.rb
980
926
  - app/services/alchemy/tag_validations.rb
927
+ - app/stylesheets/alchemy/_defaults.scss
928
+ - app/stylesheets/alchemy/_extends.scss
929
+ - app/stylesheets/alchemy/_fonts.scss
930
+ - app/stylesheets/alchemy/_mixins.scss
931
+ - app/stylesheets/alchemy/_variables.scss
932
+ - app/stylesheets/alchemy/admin.scss
933
+ - app/stylesheets/alchemy/admin/archive.scss
934
+ - app/stylesheets/alchemy/admin/attachment-select.scss
935
+ - app/stylesheets/alchemy/admin/attachments.scss
936
+ - app/stylesheets/alchemy/admin/base.scss
937
+ - app/stylesheets/alchemy/admin/buttons.scss
938
+ - app/stylesheets/alchemy/admin/clipboard.scss
939
+ - app/stylesheets/alchemy/admin/dashboard.scss
940
+ - app/stylesheets/alchemy/admin/dialogs.scss
941
+ - app/stylesheets/alchemy/admin/elements.scss
942
+ - app/stylesheets/alchemy/admin/errors.scss
943
+ - app/stylesheets/alchemy/admin/filters.scss
944
+ - app/stylesheets/alchemy/admin/flash.scss
945
+ - app/stylesheets/alchemy/admin/flatpickr.scss
946
+ - app/stylesheets/alchemy/admin/form_fields.scss
947
+ - app/stylesheets/alchemy/admin/forms.scss
948
+ - app/stylesheets/alchemy/admin/frame.scss
949
+ - app/stylesheets/alchemy/admin/hints.scss
950
+ - app/stylesheets/alchemy/admin/icons.scss
951
+ - app/stylesheets/alchemy/admin/image_library.scss
952
+ - app/stylesheets/alchemy/admin/images.scss
953
+ - app/stylesheets/alchemy/admin/labels.scss
954
+ - app/stylesheets/alchemy/admin/list_filter.scss
955
+ - app/stylesheets/alchemy/admin/lists.scss
956
+ - app/stylesheets/alchemy/admin/navigation.scss
957
+ - app/stylesheets/alchemy/admin/node-select.scss
958
+ - app/stylesheets/alchemy/admin/nodes.scss
959
+ - app/stylesheets/alchemy/admin/notices.scss
960
+ - app/stylesheets/alchemy/admin/page-select.scss
961
+ - app/stylesheets/alchemy/admin/pagination.scss
962
+ - app/stylesheets/alchemy/admin/preview_window.scss
963
+ - app/stylesheets/alchemy/admin/print.scss
964
+ - app/stylesheets/alchemy/admin/resource_info.scss
965
+ - app/stylesheets/alchemy/admin/search.scss
966
+ - app/stylesheets/alchemy/admin/selects.scss
967
+ - app/stylesheets/alchemy/admin/shoelace.scss
968
+ - app/stylesheets/alchemy/admin/sitemap.scss
969
+ - app/stylesheets/alchemy/admin/spinner.scss
970
+ - app/stylesheets/alchemy/admin/tables.scss
971
+ - app/stylesheets/alchemy/admin/tags.scss
972
+ - app/stylesheets/alchemy/admin/toolbar.scss
973
+ - app/stylesheets/alchemy/admin/typography.scss
974
+ - app/stylesheets/alchemy/admin/upload.scss
975
+ - app/stylesheets/alchemy/custom-properties.css
976
+ - app/stylesheets/alchemy/welcome.scss
977
+ - app/stylesheets/tinymce/skins/content/alchemy/content.scss
978
+ - app/stylesheets/tinymce/skins/skintool.json
979
+ - app/stylesheets/tinymce/skins/ui/alchemy/content.scss
980
+ - app/stylesheets/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff
981
+ - app/stylesheets/tinymce/skins/ui/alchemy/skin.scss
981
982
  - app/views/alchemy/_edit_mode.html.erb
982
983
  - app/views/alchemy/_menubar.html.erb
983
984
  - app/views/alchemy/_preview_mode_code.html.erb
@@ -989,14 +990,15 @@ files:
989
990
  - app/views/alchemy/admin/attachments/_tag_list.html.erb
990
991
  - app/views/alchemy/admin/attachments/archive_overlay.js.erb
991
992
  - app/views/alchemy/admin/attachments/assign.js.erb
992
- - app/views/alchemy/admin/attachments/destroy.js.erb
993
993
  - app/views/alchemy/admin/attachments/edit.html.erb
994
994
  - app/views/alchemy/admin/attachments/index.html.erb
995
995
  - app/views/alchemy/admin/attachments/show.html.erb
996
- - app/views/alchemy/admin/clipboard/clear.js.erb
996
+ - app/views/alchemy/admin/clipboard/_button.html.erb
997
+ - app/views/alchemy/admin/clipboard/_update_nested_element_button.turbo_stream.erb
998
+ - app/views/alchemy/admin/clipboard/clear.turbo_stream.erb
997
999
  - app/views/alchemy/admin/clipboard/index.html.erb
998
- - app/views/alchemy/admin/clipboard/insert.js.erb
999
- - app/views/alchemy/admin/clipboard/remove.js.erb
1000
+ - app/views/alchemy/admin/clipboard/insert.turbo_stream.erb
1001
+ - app/views/alchemy/admin/clipboard/remove.turbo_stream.erb
1000
1002
  - app/views/alchemy/admin/crop.html.erb
1001
1003
  - app/views/alchemy/admin/dashboard/_dashboard.html.erb
1002
1004
  - app/views/alchemy/admin/dashboard/_left_column.html.erb
@@ -1010,7 +1012,6 @@ files:
1010
1012
  - app/views/alchemy/admin/dashboard/widgets/_sites.html.erb
1011
1013
  - app/views/alchemy/admin/dashboard/widgets/_users.html.erb
1012
1014
  - app/views/alchemy/admin/elements/_add_nested_element_form.html.erb
1013
- - app/views/alchemy/admin/elements/_clipboard_button.html.erb
1014
1015
  - app/views/alchemy/admin/elements/_element.html.erb
1015
1016
  - app/views/alchemy/admin/elements/_footer.html.erb
1016
1017
  - app/views/alchemy/admin/elements/_form.html.erb
@@ -1108,13 +1109,12 @@ files:
1108
1109
  - app/views/alchemy/admin/pictures/index.js.erb
1109
1110
  - app/views/alchemy/admin/pictures/show.html.erb
1110
1111
  - app/views/alchemy/admin/pictures/update.turbo_stream.erb
1111
- - app/views/alchemy/admin/resources/_filter.html.erb
1112
+ - app/views/alchemy/admin/resources/_applied_filters.html.erb
1112
1113
  - app/views/alchemy/admin/resources/_filter_bar.html.erb
1113
1114
  - app/views/alchemy/admin/resources/_form.html.erb
1115
+ - app/views/alchemy/admin/resources/_pagination.html.erb
1114
1116
  - app/views/alchemy/admin/resources/_per_page_select.html.erb
1115
- - app/views/alchemy/admin/resources/_resource.html.erb
1116
1117
  - app/views/alchemy/admin/resources/_resource_table.html.erb
1117
- - app/views/alchemy/admin/resources/_table.html.erb
1118
1118
  - app/views/alchemy/admin/resources/_table_header.html.erb
1119
1119
  - app/views/alchemy/admin/resources/_tag_list.html.erb
1120
1120
  - app/views/alchemy/admin/resources/edit.html.erb
@@ -1131,6 +1131,7 @@ files:
1131
1131
  - app/views/alchemy/admin/tags/index.html.erb
1132
1132
  - app/views/alchemy/admin/tags/new.html.erb
1133
1133
  - app/views/alchemy/admin/tinymce/_setup.html.erb
1134
+ - app/views/alchemy/admin/translations/_en.js
1134
1135
  - app/views/alchemy/admin/uploader/_button.html.erb
1135
1136
  - app/views/alchemy/admin/uploader/_setup.html.erb
1136
1137
  - app/views/alchemy/attachments/show.html.erb
@@ -1145,36 +1146,21 @@ files:
1145
1146
  - app/views/alchemy/breadcrumb/_separator.html.erb
1146
1147
  - app/views/alchemy/breadcrumb/_wrapper.html.erb
1147
1148
  - app/views/alchemy/elements/_view_not_found.html.erb
1148
- - app/views/alchemy/elements/show.html.erb
1149
- - app/views/alchemy/elements/show.js.erb
1150
1149
  - app/views/alchemy/ingredients/_audio_editor.html.erb
1151
- - app/views/alchemy/ingredients/_audio_view.html.erb
1152
1150
  - app/views/alchemy/ingredients/_boolean_editor.html.erb
1153
- - app/views/alchemy/ingredients/_boolean_view.html.erb
1154
1151
  - app/views/alchemy/ingredients/_datetime_editor.html.erb
1155
- - app/views/alchemy/ingredients/_datetime_view.html.erb
1156
1152
  - app/views/alchemy/ingredients/_file_editor.html.erb
1157
- - app/views/alchemy/ingredients/_file_view.html.erb
1158
1153
  - app/views/alchemy/ingredients/_headline_editor.html.erb
1159
- - app/views/alchemy/ingredients/_headline_view.html.erb
1160
1154
  - app/views/alchemy/ingredients/_html_editor.html.erb
1161
- - app/views/alchemy/ingredients/_html_view.html.erb
1162
1155
  - app/views/alchemy/ingredients/_link_editor.html.erb
1163
- - app/views/alchemy/ingredients/_link_view.html.erb
1164
1156
  - app/views/alchemy/ingredients/_node_editor.html.erb
1165
- - app/views/alchemy/ingredients/_node_view.html.erb
1157
+ - app/views/alchemy/ingredients/_number_editor.html.erb
1166
1158
  - app/views/alchemy/ingredients/_page_editor.html.erb
1167
- - app/views/alchemy/ingredients/_page_view.html.erb
1168
1159
  - app/views/alchemy/ingredients/_picture_editor.html.erb
1169
- - app/views/alchemy/ingredients/_picture_view.html.erb
1170
1160
  - app/views/alchemy/ingredients/_richtext_editor.html.erb
1171
- - app/views/alchemy/ingredients/_richtext_view.html.erb
1172
1161
  - app/views/alchemy/ingredients/_select_editor.html.erb
1173
- - app/views/alchemy/ingredients/_select_view.html.erb
1174
1162
  - app/views/alchemy/ingredients/_text_editor.html.erb
1175
- - app/views/alchemy/ingredients/_text_view.html.erb
1176
1163
  - app/views/alchemy/ingredients/_video_editor.html.erb
1177
- - app/views/alchemy/ingredients/_video_view.html.erb
1178
1164
  - app/views/alchemy/ingredients/shared/_anchor.html.erb
1179
1165
  - app/views/alchemy/ingredients/shared/_link_tools.html.erb
1180
1166
  - app/views/alchemy/ingredients/shared/_picture_css_class.html.erb
@@ -1185,6 +1171,7 @@ files:
1185
1171
  - app/views/alchemy/messages_mailer/contact_form_mail.en.text.erb
1186
1172
  - app/views/alchemy/messages_mailer/contact_form_mail.es.text.erb
1187
1173
  - app/views/alchemy/messages_mailer/new.html.erb
1174
+ - app/views/alchemy/no_index.html.erb
1188
1175
  - app/views/alchemy/pages/_meta_data.html.erb
1189
1176
  - app/views/alchemy/pages/show.html.erb
1190
1177
  - app/views/alchemy/pages/sitemap.xml.erb
@@ -1198,20 +1185,19 @@ files:
1198
1185
  - app/views/kaminari/alchemy/_prev_page.html.erb
1199
1186
  - app/views/layouts/alchemy/admin.html.erb
1200
1187
  - app/views/layouts/alchemy/sitemap.xml.erb
1201
- - babel.config.js
1202
1188
  - bin/importmap
1203
1189
  - bin/rails
1204
1190
  - bin/rspec
1205
1191
  - bin/setup
1206
1192
  - bin/start
1207
1193
  - bun.lockb
1194
+ - bundles/remixicon.mjs
1208
1195
  - bundles/shoelace.js
1209
1196
  - bundles/tinymce.js
1210
1197
  - config/alchemy/config.yml
1211
1198
  - config/alchemy/modules.yml
1212
1199
  - config/brakeman.ignore
1213
1200
  - config/importmap.rb
1214
- - config/initializers/assets.rb
1215
1201
  - config/initializers/dragonfly.rb
1216
1202
  - config/initializers/mime_types.rb
1217
1203
  - config/initializers/mini_profiler.rb
@@ -1233,15 +1219,33 @@ files:
1233
1219
  - lib/alchemy/admin/preview_url.rb
1234
1220
  - lib/alchemy/auth_accessors.rb
1235
1221
  - lib/alchemy/cache_digests/template_tracker.rb
1236
- - lib/alchemy/config.rb
1222
+ - lib/alchemy/config_missing.rb
1223
+ - lib/alchemy/configuration.rb
1224
+ - lib/alchemy/configuration/base_option.rb
1225
+ - lib/alchemy/configuration/boolean_option.rb
1226
+ - lib/alchemy/configuration/class_option.rb
1227
+ - lib/alchemy/configuration/class_set_option.rb
1228
+ - lib/alchemy/configuration/integer_list_option.rb
1229
+ - lib/alchemy/configuration/integer_option.rb
1230
+ - lib/alchemy/configuration/list_option.rb
1231
+ - lib/alchemy/configuration/regexp_option.rb
1232
+ - lib/alchemy/configuration/string_list_option.rb
1233
+ - lib/alchemy/configuration/string_option.rb
1237
1234
  - lib/alchemy/configuration_methods.rb
1235
+ - lib/alchemy/configurations/default_language.rb
1236
+ - lib/alchemy/configurations/default_site.rb
1237
+ - lib/alchemy/configurations/format_matchers.rb
1238
+ - lib/alchemy/configurations/mailer.rb
1239
+ - lib/alchemy/configurations/main.rb
1240
+ - lib/alchemy/configurations/preview.rb
1241
+ - lib/alchemy/configurations/sitemap.rb
1242
+ - lib/alchemy/configurations/uploader.rb
1238
1243
  - lib/alchemy/controller_actions.rb
1239
1244
  - lib/alchemy/deprecation.rb
1240
1245
  - lib/alchemy/dev_support/live_reload_watcher.rb
1241
1246
  - lib/alchemy/dragonfly/processors/auto_orient.rb
1242
1247
  - lib/alchemy/dragonfly/processors/crop_resize.rb
1243
1248
  - lib/alchemy/dragonfly/processors/thumbnail.rb
1244
- - lib/alchemy/element_definition.rb
1245
1249
  - lib/alchemy/elements_finder.rb
1246
1250
  - lib/alchemy/engine.rb
1247
1251
  - lib/alchemy/error_tracking.rb
@@ -1257,14 +1261,10 @@ files:
1257
1261
  - lib/alchemy/name_conversions.rb
1258
1262
  - lib/alchemy/on_page_layout.rb
1259
1263
  - lib/alchemy/on_page_layout/callbacks_runner.rb
1260
- - lib/alchemy/page_layout.rb
1261
1264
  - lib/alchemy/paths.rb
1262
1265
  - lib/alchemy/permissions.rb
1263
- - lib/alchemy/resource.rb
1264
- - lib/alchemy/resource_filter.rb
1265
- - lib/alchemy/resources_helper.rb
1266
+ - lib/alchemy/propshaft/tinymce_asset.rb
1266
1267
  - lib/alchemy/routing_constraints.rb
1267
- - lib/alchemy/searchable_resource.rb
1268
1268
  - lib/alchemy/seeder.rb
1269
1269
  - lib/alchemy/shell.rb
1270
1270
  - lib/alchemy/taggable.rb
@@ -1298,8 +1298,8 @@ files:
1298
1298
  - lib/alchemy/test_support/shared_uploader_examples.rb
1299
1299
  - lib/alchemy/tinymce.rb
1300
1300
  - lib/alchemy/upgrader.rb
1301
- - lib/alchemy/upgrader/seven_point_four.rb
1302
- - lib/alchemy/upgrader/seven_point_three.rb
1301
+ - lib/alchemy/upgrader/.keep
1302
+ - lib/alchemy/upgrader/eight_zero.rb
1303
1303
  - lib/alchemy/upgrader/tasks/.keep
1304
1304
  - lib/alchemy/version.rb
1305
1305
  - lib/alchemy_cms.rb
@@ -1311,17 +1311,14 @@ files:
1311
1311
  - lib/generators/alchemy/ingredient/ingredient_generator.rb
1312
1312
  - lib/generators/alchemy/ingredient/templates/editor.html.erb
1313
1313
  - lib/generators/alchemy/ingredient/templates/model.rb.tt
1314
- - lib/generators/alchemy/ingredient/templates/view.html.erb
1315
1314
  - lib/generators/alchemy/ingredient/templates/view_component.rb.tt
1316
1315
  - lib/generators/alchemy/install/files/_article.html.erb
1317
1316
  - lib/generators/alchemy/install/files/_standard.html.erb
1318
1317
  - lib/generators/alchemy/install/files/alchemy.en.yml
1319
- - lib/generators/alchemy/install/files/alchemy_admin.js
1320
- - lib/generators/alchemy/install/files/all.js
1321
1318
  - lib/generators/alchemy/install/files/application.html.erb
1322
- - lib/generators/alchemy/install/files/article.css
1323
1319
  - lib/generators/alchemy/install/files/custom.css
1324
1320
  - lib/generators/alchemy/install/install_generator.rb
1321
+ - lib/generators/alchemy/install/templates/alchemy.rb.tt
1325
1322
  - lib/generators/alchemy/install/templates/dragonfly.rb.tt
1326
1323
  - lib/generators/alchemy/install/templates/elements.yml.tt
1327
1324
  - lib/generators/alchemy/install/templates/menus.yml.tt
@@ -1347,6 +1344,7 @@ files:
1347
1344
  - lib/generators/alchemy/site_layouts/templates/layout.html.slim
1348
1345
  - lib/generators/alchemy/views/views_generator.rb
1349
1346
  - lib/non_stupid_digest_assets.rb
1347
+ - lib/tasks/alchemy/assets.rake
1350
1348
  - lib/tasks/alchemy/db.rake
1351
1349
  - lib/tasks/alchemy/install.rake
1352
1350
  - lib/tasks/alchemy/sitemap.rake
@@ -1355,7 +1353,6 @@ files:
1355
1353
  - lib/tasks/alchemy/upgrade.rake
1356
1354
  - lib/tasks/alchemy/usage.rake
1357
1355
  - rollup.config.mjs
1358
- - vendor/assets/images/remixicon.symbol.svg
1359
1356
  - vendor/assets/stylesheets/alchemy_admin/select2.css
1360
1357
  - vendor/javascript/clipboard.min.js
1361
1358
  - vendor/javascript/cropperjs.min.js
@@ -1369,10 +1366,14 @@ files:
1369
1366
  - vendor/javascript/sortable.min.js
1370
1367
  - vendor/javascript/tinymce.min.js
1371
1368
  - vendor/javascript/ungap-custom-elements.min.js
1369
+ - vitest.config.js
1372
1370
  homepage: https://alchemy-cms.com
1373
1371
  licenses:
1374
1372
  - BSD-3-Clause
1375
- metadata: {}
1373
+ metadata:
1374
+ homepage_uri: https://alchemy-cms.com
1375
+ source_code_uri: https://github.com/AlchemyCMS/alchemy_cms
1376
+ changelog_uri: https://github.com/AlchemyCMS/alchemy_cms/blob/main/CHANGELOG.md
1376
1377
  post_install_message: |+
1377
1378
  -------------------------------------------------------------
1378
1379
  Thank you for installing Alchemy CMS