trek 2.2.0 → 2.3.1

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.
Files changed (126) hide show
  1. checksums.yaml +4 -4
  2. data/.slim-lint.yml +0 -3
  3. data/AGENTS.md +9 -2
  4. data/CHANGELOG.md +73 -0
  5. data/Gemfile +4 -0
  6. data/Gemfile.lock +23 -3
  7. data/Makefile +11 -9
  8. data/README.md +1 -1
  9. data/app/assets/icons/trek/chevron-down.svg +1 -0
  10. data/app/assets/icons/trek/chevron-up.svg +1 -0
  11. data/app/assets/icons/trek/external.svg +1 -0
  12. data/app/assets/icons/trek/theme-auto.svg +1 -0
  13. data/app/assets/icons/trek/theme-dark.svg +1 -0
  14. data/app/assets/icons/trek/theme-light.svg +1 -0
  15. data/app/assets/stylesheets/trek/base.css +13 -0
  16. data/app/components/trek/button_component/button_component.css +9 -0
  17. data/app/components/trek/button_component.rb +13 -1
  18. data/app/components/trek/dashboard/tile_component/tile_component.html.slim +1 -1
  19. data/app/components/trek/dashboard/tile_component.rb +14 -0
  20. data/app/components/trek/dialog_component/dialog_component.html.slim +6 -2
  21. data/app/components/trek/dialog_component/dialog_component.js +62 -2
  22. data/app/components/trek/dropdown_component/dropdown_component.css +69 -0
  23. data/app/components/trek/dropdown_component/dropdown_component.html.slim +31 -0
  24. data/app/components/trek/dropdown_component/dropdown_component.js +114 -0
  25. data/app/components/trek/dropdown_component.rb +34 -0
  26. data/app/components/trek/form/group_component/group_component.css +34 -0
  27. data/app/components/trek/header_component/header_component.css +9 -4
  28. data/app/components/trek/header_component/header_component.html.slim +17 -10
  29. data/app/components/trek/header_component/header_component.js +29 -5
  30. data/app/components/trek/header_component.rb +24 -3
  31. data/app/components/trek/menu_component/menu_component.css +6 -0
  32. data/app/components/trek/menu_component.rb +29 -4
  33. data/app/components/trek/toaster/toast_component.rb +1 -1
  34. data/app/controllers/concerns/trek/authorization.rb +12 -0
  35. data/app/controllers/concerns/trek/filters.rb +18 -1
  36. data/app/helpers/trek/page_path_helper.rb +4 -3
  37. data/app/helpers/trek/theme_helper.rb +16 -1
  38. data/app/models/concerns/trek/phonable.rb +15 -3
  39. data/app/models/concerns/trek/sectionable.rb +5 -0
  40. data/app/models/concerns/trek/users/validations.rb +15 -6
  41. data/app/uploaders/audio_uploader.rb +11 -0
  42. data/app/uploaders/record_image_uploader.rb +3 -0
  43. data/config/locales/trek.en.yml +3 -2
  44. data/config/locales/trek.fr.yml +1 -0
  45. data/docs/.vitepress/config.mjs +20 -1
  46. data/docs/.vitepress/theme/style.css +36 -8
  47. data/docs/changelog.md +9 -0
  48. data/docs/customize.md +18 -2
  49. data/docs/deploy.md +7 -2
  50. data/docs/getting-started.md +1 -1
  51. data/docs/index.md +8 -8
  52. data/docs/public/apple-touch-icon.png +0 -0
  53. data/docs/public/favicon.ico +0 -0
  54. data/docs/public/favicon.png +0 -0
  55. data/docs/public/trek-mark.webp +0 -0
  56. data/docs/reference/components.md +15 -0
  57. data/docs/reference/concerns/phonable.md +27 -1
  58. data/docs/reference/controllers.md +8 -3
  59. data/docs/reference/environment-variables.md +2 -0
  60. data/docs/reference/forms.md +2 -0
  61. data/docs/reference/generators/install.md +4 -1
  62. data/docs/reference/icons.md +1 -1
  63. data/docs/reference/models/tag.md +1 -1
  64. data/docs/reference/models/user.md +6 -4
  65. data/docs/reference/uploaders.md +31 -6
  66. data/docs/what-is-trek.md +1 -1
  67. data/lib/generators/trek/install/admin/routes_generator.rb +7 -1
  68. data/lib/generators/trek/install/appsignal_generator.rb +102 -0
  69. data/lib/generators/trek/install/model_specs_generator.rb +64 -0
  70. data/lib/generators/trek/install/postmark_generator.rb +3 -0
  71. data/lib/generators/trek/install/ruby_generator.rb +1 -1
  72. data/lib/generators/trek/install/scalingo_generator.rb +1 -1
  73. data/lib/generators/trek/install/uploaders_generator.rb +2 -0
  74. data/lib/generators/trek/install_generator.rb +5 -0
  75. data/lib/generators/trek/taxonomies_generator.rb +7 -0
  76. data/lib/generators/trek/templates/.gitlab-ci.yml +1 -1
  77. data/lib/generators/trek/templates/config/appsignal.rb.tt +25 -0
  78. data/lib/generators/trek/templates/controllers/admin/uploads_controller.rb +4 -0
  79. data/lib/generators/trek/templates/controllers/admin/user_password_resets_controller.rb +7 -0
  80. data/lib/generators/trek/templates/controllers/admin/users_controller.rb +4 -1
  81. data/lib/generators/trek/templates/controllers/concerns/appsignal_context.rb +37 -0
  82. data/lib/generators/trek/templates/db/seeds/setup/fragments.rb +3 -0
  83. data/lib/generators/trek/templates/db/seeds/setup/users.rb +6 -0
  84. data/lib/generators/trek/templates/db/seeds/test/cases/page_tree.rb +5 -0
  85. data/lib/generators/trek/templates/initializers/appsignal_context.rb +5 -0
  86. data/lib/generators/trek/templates/locales/scaffold/model.en.yml.tt +1 -1
  87. data/lib/generators/trek/templates/migrations/fragments.rb.erb +1 -1
  88. data/lib/generators/trek/templates/migrations/menu_nodes.rb.erb +0 -1
  89. data/lib/generators/trek/templates/migrations/tag_categories.rb.erb +1 -1
  90. data/lib/generators/trek/templates/migrations/taggings.rb.erb +1 -1
  91. data/lib/generators/trek/templates/migrations/users.rb.erb +2 -1
  92. data/lib/generators/trek/templates/models/tag.rb +6 -1
  93. data/lib/generators/trek/templates/policies/admin/tag_policy.rb +1 -1
  94. data/lib/generators/trek/templates/policies/external_link_policy.rb +1 -1
  95. data/lib/generators/trek/templates/spec/fixtures/files/image.png +0 -0
  96. data/lib/generators/trek/templates/spec/fixtures/files/sound.mp3 +0 -0
  97. data/lib/generators/trek/templates/spec/models/page_spec.rb +24 -0
  98. data/lib/generators/trek/templates/spec/models/user_spec.rb +109 -0
  99. data/lib/generators/trek/templates/spec/policies/admin/external_link_policy_spec.rb +17 -0
  100. data/lib/generators/trek/templates/spec/policies/admin/fragment_policy_spec.rb +33 -0
  101. data/lib/generators/trek/templates/spec/policies/admin/page_policy_spec.rb +39 -0
  102. data/lib/generators/trek/templates/spec/policies/admin/preview_policy_spec.rb +9 -0
  103. data/lib/generators/trek/templates/spec/policies/admin/tag_category_policy_spec.rb +31 -0
  104. data/lib/generators/trek/templates/spec/policies/admin/tag_policy_spec.rb +31 -0
  105. data/lib/generators/trek/templates/spec/policies/admin/user_policy_spec.rb +58 -0
  106. data/lib/generators/trek/templates/spec/requests/admin/fragments_spec.rb +50 -0
  107. data/lib/generators/trek/templates/spec/requests/admin/pages_spec.rb +47 -0
  108. data/lib/generators/trek/templates/spec/requests/admin/uploads_spec.rb +22 -0
  109. data/lib/generators/trek/templates/spec/requests/admin/user_password_resets_spec.rb +78 -0
  110. data/lib/generators/trek/templates/spec/requests/admin/user_sessions_spec.rb +51 -0
  111. data/lib/generators/trek/templates/spec/requests/admin/users_spec.rb +99 -0
  112. data/lib/generators/trek/templates/views/admin/user_password_resets/edit.html.slim +1 -1
  113. data/lib/generators/trek/templates/views/admin/user_password_resets/new.html.slim +1 -1
  114. data/lib/generators/trek/templates/views/admin/user_sessions/new.html.slim +2 -2
  115. data/lib/generators/trek/templates/views/admin/users/theme.turbo_stream.slim +2 -0
  116. data/lib/generators/trek/upgrade/v2_generator.rb +3 -0
  117. data/lib/tasks/trek/attachments.rake +18 -0
  118. data/lib/trek/cached_attachments.rb +53 -0
  119. data/lib/trek/saved_attachments_reload.rb +44 -0
  120. data/lib/trek/version.rb +1 -1
  121. data/lib/trek.rb +4 -0
  122. data/package.json +1 -1
  123. data/postcss.config.js +36 -0
  124. data/trek.gemspec +6 -0
  125. metadata +89 -3
  126. data/app/assets/icons/trek/theme.svg +0 -11
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Trek
4
+ # Shrine plugin keeping, across a reload, the attachers whose file was saved with the record.
5
+ #
6
+ # Shrine's `activerecord` plugin resets every attacher when the record is reloaded, which is
7
+ # right for an explicit reload but loses a pending attachment when something reloads the record
8
+ # *during* the save: closure_tree does exactly that in its `after_save` callback when it
9
+ # reorders siblings (on create, or when the parent changes) on a numerically ordered tree.
10
+ # The attacher is then no longer `changed?` when Shrine's `after_commit` runs, so the file is
11
+ # never promoted from the temporary `cache` storage to `store` and breaks once the cache is
12
+ # cleaned up.
13
+ #
14
+ # An attachment that was *not* saved is still discarded, as on any reload.
15
+ module SavedAttachmentsReload
16
+ module ReloadGuard
17
+ def reload(...)
18
+ saved_attachers = instance_variables.filter_map do |ivar|
19
+ attacher = instance_variable_get(ivar)
20
+ [ivar, attacher.dup] if attacher.is_a?(::Shrine::Attacher) && attacher.changed?
21
+ end
22
+
23
+ super.tap do
24
+ saved_attachers.each do |ivar, attacher|
25
+ # Only the attacher whose file is the one now in the column: anything else was
26
+ # assigned but not saved, and a reload drops it.
27
+ instance_variable_set(ivar, attacher) if attacher.file == instance_variable_get(ivar).file
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ module AttachmentMethods
34
+ def included(model)
35
+ super
36
+
37
+ # Prepended rather than included: Shrine's own `reload` is defined on this attachment
38
+ # module, which the model includes — a prepended module wraps it whatever the order the
39
+ # model includes its concerns in.
40
+ model.prepend(ReloadGuard)
41
+ end
42
+ end
43
+ end
44
+ end
data/lib/trek/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Trek
4
- VERSION = "2.2.0"
4
+ VERSION = "2.3.1"
5
5
  end
data/lib/trek.rb CHANGED
@@ -6,6 +6,7 @@ require "blurhash"
6
6
  require "closure_tree"
7
7
  require "deepl"
8
8
  require "dry-initializer"
9
+ require "email_validator"
9
10
  require "fastimage"
10
11
  require "http_accept_language"
11
12
  require "image_processing"
@@ -19,12 +20,15 @@ require "shrine"
19
20
  require "shrine/plugins/blurhash"
20
21
  require "slim-rails"
21
22
  require "strip_attributes"
23
+ require "turbo-rails"
22
24
  require "view_component"
23
25
  require "view_component/form"
24
26
 
25
27
  module Trek
28
+ require_relative "trek/cached_attachments"
26
29
  require_relative "trek/engine"
27
30
  require_relative "trek/i18n_keys_resolver"
31
+ require_relative "trek/saved_attachments_reload"
28
32
  require_relative "trek/typography_formatter"
29
33
  require_relative "trek/version"
30
34
 
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trek",
3
- "version": "2.2.0",
3
+ "version": "2.3.1",
4
4
  "description": "A modern content management & back-office system for Ruby on Rails",
5
5
  "homepage": "https://trek.etamin.studio",
6
6
  "license": "MIT",
data/postcss.config.js CHANGED
@@ -1,6 +1,42 @@
1
+ // Radix Colors only ship light (`:root, .light-theme`) and dark (`.dark-theme`)
2
+ // variables, with no way to follow the system preference
3
+ // (https://github.com/radix-ui/colors/issues/26). Copy every rule targeting
4
+ // `.dark-theme` into a `prefers-color-scheme: dark` media query, with
5
+ // `.auto-theme` in place of `.dark-theme`. The media query is appended last so
6
+ // it wins over the light defaults, and each rule keeps its enclosing at-rules
7
+ // (e.g. the Display P3 `@supports`/`@media` blocks).
8
+ const DARK_THEME = /\.dark-theme(?![\w-])/;
9
+ const autoDarkTheme = {
10
+ postcssPlugin: "auto-dark-theme",
11
+ OnceExit(root, { AtRule }) {
12
+ const media = new AtRule({
13
+ name: "media",
14
+ params: "(prefers-color-scheme: dark)",
15
+ });
16
+
17
+ root.walkRules((rule) => {
18
+ const selectors = rule.selectors
19
+ .filter((selector) => DARK_THEME.test(selector))
20
+ .map((selector) => selector.replace(DARK_THEME, ".auto-theme"));
21
+ if (!selectors.length) return;
22
+
23
+ let node = rule.clone({ selectors });
24
+ let parent = rule.parent;
25
+ while (parent.type === "atrule") {
26
+ node = parent.clone({ nodes: [] }).append(node);
27
+ parent = parent.parent;
28
+ }
29
+ media.append(node);
30
+ });
31
+
32
+ if (media.nodes?.length) root.append(media);
33
+ },
34
+ };
35
+
1
36
  module.exports = {
2
37
  plugins: [
3
38
  require("postcss-import"),
39
+ autoDarkTheme,
4
40
  // call the `postcss-modules` plugin ourselves
5
41
  require("postcss-modules")({
6
42
  generateScopedName: (name, filename, _css) => {
data/trek.gemspec CHANGED
@@ -35,10 +35,15 @@ Gem::Specification.new do |spec|
35
35
  spec.add_dependency "closure_tree", "~> 9.0"
36
36
  spec.add_dependency "deepl-rb", "~> 3.0"
37
37
  spec.add_dependency "dry-initializer", "~> 3.1"
38
+ spec.add_dependency "email_validator", "~> 2.2"
38
39
  spec.add_dependency "fastimage", "~> 2.2"
39
40
  spec.add_dependency "http_accept_language", "~> 2.1"
40
41
  spec.add_dependency "i18n-tasks", "~> 1.0"
41
42
  spec.add_dependency "image_processing", "~> 1.8"
43
+ # json 3's `JSON.parse` takes keyword options only, but ActiveSupport (up to 8.1.3.1) passes them
44
+ # positionally, which breaks `db/schema.rb` for jsonb columns with a default. Lift once Rails
45
+ # supports json 3 (spec/dummy/generated_files_spec.rb checks the schema dump).
46
+ spec.add_dependency "json", "< 3"
42
47
  spec.add_dependency "kaminari"
43
48
  spec.add_dependency "listen"
44
49
  spec.add_dependency "lookbook", ">= 2.3.13"
@@ -53,6 +58,7 @@ Gem::Specification.new do |spec|
53
58
  spec.add_dependency "shrine-blurhash", "~> 0.2"
54
59
  spec.add_dependency "slim-rails", "~> 4.0"
55
60
  spec.add_dependency "strip_attributes", "~> 2.0"
61
+ spec.add_dependency "turbo-rails", ">= 1.0"
56
62
  spec.add_dependency "view_component", "< 5.0"
57
63
  spec.add_dependency "view_component-form", "~> 0.3"
58
64
  spec.add_dependency "zeitwerk", "~> 2.6"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trek
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mohamed Bengrich
@@ -124,6 +124,20 @@ dependencies:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
126
  version: '3.1'
127
+ - !ruby/object:Gem::Dependency
128
+ name: email_validator
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '2.2'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '2.2'
127
141
  - !ruby/object:Gem::Dependency
128
142
  name: fastimage
129
143
  requirement: !ruby/object:Gem::Requirement
@@ -180,6 +194,20 @@ dependencies:
180
194
  - - "~>"
181
195
  - !ruby/object:Gem::Version
182
196
  version: '1.8'
197
+ - !ruby/object:Gem::Dependency
198
+ name: json
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "<"
202
+ - !ruby/object:Gem::Version
203
+ version: '3'
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "<"
209
+ - !ruby/object:Gem::Version
210
+ version: '3'
183
211
  - !ruby/object:Gem::Dependency
184
212
  name: kaminari
185
213
  requirement: !ruby/object:Gem::Requirement
@@ -382,6 +410,20 @@ dependencies:
382
410
  - - "~>"
383
411
  - !ruby/object:Gem::Version
384
412
  version: '2.0'
413
+ - !ruby/object:Gem::Dependency
414
+ name: turbo-rails
415
+ requirement: !ruby/object:Gem::Requirement
416
+ requirements:
417
+ - - ">="
418
+ - !ruby/object:Gem::Version
419
+ version: '1.0'
420
+ type: :runtime
421
+ prerelease: false
422
+ version_requirements: !ruby/object:Gem::Requirement
423
+ requirements:
424
+ - - ">="
425
+ - !ruby/object:Gem::Version
426
+ version: '1.0'
385
427
  - !ruby/object:Gem::Dependency
386
428
  name: view_component
387
429
  requirement: !ruby/object:Gem::Requirement
@@ -459,13 +501,16 @@ files:
459
501
  - app/assets/icons/trek/check.svg
460
502
  - app/assets/icons/trek/chevron-double-left.svg
461
503
  - app/assets/icons/trek/chevron-double-right.svg
504
+ - app/assets/icons/trek/chevron-down.svg
462
505
  - app/assets/icons/trek/chevron-left.svg
463
506
  - app/assets/icons/trek/chevron-right.svg
507
+ - app/assets/icons/trek/chevron-up.svg
464
508
  - app/assets/icons/trek/close.svg
465
509
  - app/assets/icons/trek/cursor.svg
466
510
  - app/assets/icons/trek/danger.svg
467
511
  - app/assets/icons/trek/download.svg
468
512
  - app/assets/icons/trek/eraser.svg
513
+ - app/assets/icons/trek/external.svg
469
514
  - app/assets/icons/trek/eye.svg
470
515
  - app/assets/icons/trek/grid.svg
471
516
  - app/assets/icons/trek/hr.svg
@@ -487,7 +532,9 @@ files:
487
532
  - app/assets/icons/trek/reorder.svg
488
533
  - app/assets/icons/trek/return.svg
489
534
  - app/assets/icons/trek/search.svg
490
- - app/assets/icons/trek/theme.svg
535
+ - app/assets/icons/trek/theme-auto.svg
536
+ - app/assets/icons/trek/theme-dark.svg
537
+ - app/assets/icons/trek/theme-light.svg
491
538
  - app/assets/icons/trek/undo.svg
492
539
  - app/assets/images/trek/favicon.png
493
540
  - app/assets/images/trek/favicon.svg
@@ -528,6 +575,10 @@ files:
528
575
  - app/components/trek/dialog_component/dialog_component.css
529
576
  - app/components/trek/dialog_component/dialog_component.html.slim
530
577
  - app/components/trek/dialog_component/dialog_component.js
578
+ - app/components/trek/dropdown_component.rb
579
+ - app/components/trek/dropdown_component/dropdown_component.css
580
+ - app/components/trek/dropdown_component/dropdown_component.html.slim
581
+ - app/components/trek/dropdown_component/dropdown_component.js
531
582
  - app/components/trek/entries/item_component.rb
532
583
  - app/components/trek/entries/item_component/item_component.css
533
584
  - app/components/trek/entries/item_component/item_component.html.slim
@@ -715,6 +766,7 @@ files:
715
766
  - app/policies/trek/preview_policy.rb
716
767
  - app/policies/trek/resource_policy.rb
717
768
  - app/policies/trek/user_policy.rb
769
+ - app/uploaders/audio_uploader.rb
718
770
  - app/uploaders/image_uploader.rb
719
771
  - app/uploaders/model_image_uploader.rb
720
772
  - app/uploaders/record_image_uploader.rb
@@ -743,11 +795,16 @@ files:
743
795
  - docs/.vitepress/config.mjs
744
796
  - docs/.vitepress/theme/index.js
745
797
  - docs/.vitepress/theme/style.css
798
+ - docs/changelog.md
746
799
  - docs/customize.md
747
800
  - docs/deploy.md
748
801
  - docs/getting-started.md
749
802
  - docs/index.md
803
+ - docs/public/apple-touch-icon.png
804
+ - docs/public/favicon.ico
805
+ - docs/public/favicon.png
750
806
  - docs/public/logo.svg
807
+ - docs/public/trek-mark.webp
751
808
  - docs/reference/components.md
752
809
  - docs/reference/concerns/contentable.md
753
810
  - docs/reference/concerns/formattable.md
@@ -800,6 +857,7 @@ files:
800
857
  - lib/generators/trek/install/admin_generator.rb
801
858
  - lib/generators/trek/install/agents_generator.rb
802
859
  - lib/generators/trek/install/application_generator.rb
860
+ - lib/generators/trek/install/appsignal_generator.rb
803
861
  - lib/generators/trek/install/assets_generator.rb
804
862
  - lib/generators/trek/install/attachments_generator.rb
805
863
  - lib/generators/trek/install/authentication_generator.rb
@@ -823,6 +881,7 @@ files:
823
881
  - lib/generators/trek/install/mailer_generator.rb
824
882
  - lib/generators/trek/install/makefile_generator.rb
825
883
  - lib/generators/trek/install/menu_node_generator.rb
884
+ - lib/generators/trek/install/model_specs_generator.rb
826
885
  - lib/generators/trek/install/package_json_generator.rb
827
886
  - lib/generators/trek/install/page_generator.rb
828
887
  - lib/generators/trek/install/postcss_generator.rb
@@ -850,6 +909,7 @@ files:
850
909
  - lib/generators/trek/templates/Makefile
851
910
  - lib/generators/trek/templates/README.md
852
911
  - lib/generators/trek/templates/components/index.js
912
+ - lib/generators/trek/templates/config/appsignal.rb.tt
853
913
  - lib/generators/trek/templates/config/i18n-tasks.yml.erb
854
914
  - lib/generators/trek/templates/controllers/admin/base_controller.rb
855
915
  - lib/generators/trek/templates/controllers/admin/dashboards_controller.rb
@@ -861,9 +921,14 @@ files:
861
921
  - lib/generators/trek/templates/controllers/admin/user_password_resets_controller.rb
862
922
  - lib/generators/trek/templates/controllers/admin/user_sessions_controller.rb
863
923
  - lib/generators/trek/templates/controllers/admin/users_controller.rb
924
+ - lib/generators/trek/templates/controllers/concerns/appsignal_context.rb
864
925
  - lib/generators/trek/templates/controllers/concerns/trek/authentication.rb
926
+ - lib/generators/trek/templates/db/seeds/setup/fragments.rb
927
+ - lib/generators/trek/templates/db/seeds/setup/users.rb
928
+ - lib/generators/trek/templates/db/seeds/test/cases/page_tree.rb
865
929
  - lib/generators/trek/templates/helpers/application_helper.rb
866
930
  - lib/generators/trek/templates/helpers/external_link_path_helper.rb
931
+ - lib/generators/trek/templates/initializers/appsignal_context.rb
867
932
  - lib/generators/trek/templates/initializers/healthcheck.rb
868
933
  - lib/generators/trek/templates/initializers/shrine.rb
869
934
  - lib/generators/trek/templates/javascript/application.js
@@ -911,7 +976,24 @@ files:
911
976
  - lib/generators/trek/templates/policies/page.rb
912
977
  - lib/generators/trek/templates/policies/preview.rb
913
978
  - lib/generators/trek/templates/policies/user.rb
979
+ - lib/generators/trek/templates/spec/fixtures/files/image.png
980
+ - lib/generators/trek/templates/spec/fixtures/files/sound.mp3
981
+ - lib/generators/trek/templates/spec/models/page_spec.rb
982
+ - lib/generators/trek/templates/spec/models/user_spec.rb
983
+ - lib/generators/trek/templates/spec/policies/admin/external_link_policy_spec.rb
984
+ - lib/generators/trek/templates/spec/policies/admin/fragment_policy_spec.rb
985
+ - lib/generators/trek/templates/spec/policies/admin/page_policy_spec.rb
986
+ - lib/generators/trek/templates/spec/policies/admin/preview_policy_spec.rb
987
+ - lib/generators/trek/templates/spec/policies/admin/tag_category_policy_spec.rb
988
+ - lib/generators/trek/templates/spec/policies/admin/tag_policy_spec.rb
989
+ - lib/generators/trek/templates/spec/policies/admin/user_policy_spec.rb
990
+ - lib/generators/trek/templates/spec/requests/admin/fragments_spec.rb
914
991
  - lib/generators/trek/templates/spec/requests/admin/n_plus_one_spec.rb
992
+ - lib/generators/trek/templates/spec/requests/admin/pages_spec.rb
993
+ - lib/generators/trek/templates/spec/requests/admin/uploads_spec.rb
994
+ - lib/generators/trek/templates/spec/requests/admin/user_password_resets_spec.rb
995
+ - lib/generators/trek/templates/spec/requests/admin/user_sessions_spec.rb
996
+ - lib/generators/trek/templates/spec/requests/admin/users_spec.rb
915
997
  - lib/generators/trek/templates/views/admin/dashboards/index.html.slim
916
998
  - lib/generators/trek/templates/views/admin/fragments/_form.html.slim
917
999
  - lib/generators/trek/templates/views/admin/fragments/_fragment.json.jb
@@ -944,14 +1026,18 @@ files:
944
1026
  - lib/generators/trek/templates/views/admin/users/index.html.slim
945
1027
  - lib/generators/trek/templates/views/admin/users/new.html.slim
946
1028
  - lib/generators/trek/templates/views/admin/users/show.html.slim
1029
+ - lib/generators/trek/templates/views/admin/users/theme.turbo_stream.slim
947
1030
  - lib/generators/trek/templates/views/admin_mailer/invite.en.html.slim
948
1031
  - lib/generators/trek/templates/views/admin_mailer/invite.en.text.erb
949
1032
  - lib/generators/trek/templates/views/admin_mailer/invite.fr.html.slim
950
1033
  - lib/generators/trek/templates/views/admin_mailer/invite.fr.text.erb
951
1034
  - lib/generators/trek/upgrade/v2_generator.rb
1035
+ - lib/tasks/trek/attachments.rake
952
1036
  - lib/trek.rb
1037
+ - lib/trek/cached_attachments.rb
953
1038
  - lib/trek/engine.rb
954
1039
  - lib/trek/i18n_keys_resolver.rb
1040
+ - lib/trek/saved_attachments_reload.rb
955
1041
  - lib/trek/typography_formatter.rb
956
1042
  - lib/trek/version.rb
957
1043
  - netlify.toml
@@ -981,7 +1067,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
981
1067
  - !ruby/object:Gem::Version
982
1068
  version: '0'
983
1069
  requirements: []
984
- rubygems_version: 4.0.16
1070
+ rubygems_version: 4.0.20
985
1071
  specification_version: 4
986
1072
  summary: A modern content management & back-office system for Ruby on Rails
987
1073
  test_files: []
@@ -1,11 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
2
- <path d="M8,4.8A3.2,3.2,0,1,1,4.8,8,3.2,3.2,0,0,1,8,4.8ZM8,9.6A1.6,1.6,0,1,0,6.4,8,1.6,1.6,0,0,0,8,9.6Z"/>
3
- <path d="M8,3.2a.8.8,0,0,1-.8-.8V.8A.8.8,0,0,1,8.8.8V2.4A.8.8,0,0,1,8,3.2Z"/>
4
- <path d="M4.04,4.84a.8.8,0,0,1-.566-.234L2.343,3.474A.8.8,0,0,1,3.474,2.343L4.606,3.474A.8.8,0,0,1,4.04,4.84Z"/>
5
- <path d="M2.4,8.8H.8a.8.8,0,0,1,0-1.6H2.4a.8.8,0,0,1,0,1.6Z"/>
6
- <path d="M2.909,13.891a.8.8,0,0,1-.566-1.366l1.131-1.131a.8.8,0,0,1,1.131,1.131L3.474,13.657A.8.8,0,0,1,2.909,13.891Z"/>
7
- <path d="M8,16a.8.8,0,0,1-.8-.8V13.6a.8.8,0,0,1,1.6,0v1.6A.8.8,0,0,1,8,16Z"/>
8
- <path d="M13.091,13.891a.8.8,0,0,1-.566-.234l-1.131-1.131a.8.8,0,1,1,1.131-1.131l1.131,1.131a.8.8,0,0,1-.566,1.366Z"/>
9
- <path d="M15.2,8.8H13.6a.8.8,0,1,1,0-1.6h1.6a.8.8,0,0,1,0,1.6Z"/>
10
- <path d="M11.96,4.84a.8.8,0,0,1-.566-1.366l1.131-1.131a.8.8,0,0,1,1.131,1.131L12.526,4.606A.8.8,0,0,1,11.96,4.84Z"/>
11
- </svg>