trek 0.1.26 → 2.0.0
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.
- checksums.yaml +4 -4
- data/.yarnrc.yml +0 -6
- data/AGENTS.md +1 -1
- data/CHANGELOG.md +26 -0
- data/Gemfile.lock +64 -63
- data/Makefile +24 -2
- data/README.md +13 -45
- data/docs/getting-started.md +6 -32
- data/lib/generators/trek/install/assets_generator.rb +1 -1
- data/lib/generators/trek/install/ruby_generator.rb +1 -1
- data/lib/generators/trek/install/yarn_generator.rb +5 -11
- data/lib/generators/trek/templates/.gitlab-ci.yml +1 -1
- data/lib/generators/trek/templates/AGENTS.md +2 -2
- data/lib/generators/trek/templates/Makefile +22 -0
- data/lib/generators/trek/templates/package.json.tt +2 -2
- data/lib/generators/trek/upgrade/v2_generator.rb +104 -0
- data/lib/trek/version.rb +1 -1
- data/package.json +14 -4
- data/trek.gemspec +4 -4
- data/yarn.lock +54 -54
- metadata +9 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ae0f648a6ca1125a784ae4d052017885274c6b8856eeba469b59eba1e5af8809
|
|
4
|
+
data.tar.gz: cfe7b5cf820ed4a86d519217d1f4d5a226f8a76a90edbb247d2eca9ec69c9a15
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b7bba7c7c0afc04dcbcd2413395977cf9521ef35ae433a2799292d3ae3525cb2d5a27f3d5a99c726145e5b2890455302c620adbd8405b823cca00eddeb46b721
|
|
7
|
+
data.tar.gz: 06e1be7336b7c5464d9cbcc0beffadba2a20c742fe40735f06c7cced96a28b326d1ec08f3ebc1581dc31b2e6761f3d7d617c69a96b72ef0b921b35ceb1f18b4b
|
data/.yarnrc.yml
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
1
|
nodeLinker: node-modules
|
|
2
2
|
|
|
3
|
-
npmScopes:
|
|
4
|
-
etaminstudio:
|
|
5
|
-
npmAlwaysAuth: true
|
|
6
|
-
npmAuthToken: "${NPM_AUTH_TOKEN-fallback}"
|
|
7
|
-
npmPublishRegistry: "https://git.etaminstud.io/api/v4/projects/229/packages/npm/"
|
|
8
|
-
|
|
9
3
|
plugins:
|
|
10
4
|
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
|
|
11
5
|
spec: "@yarnpkg/plugin-interactive-tools"
|
data/AGENTS.md
CHANGED
|
@@ -4,7 +4,7 @@ Guidance for AI coding agents working in this repository. Keep it accurate — u
|
|
|
4
4
|
|
|
5
5
|
## What is Trek
|
|
6
6
|
|
|
7
|
-
Trek is a customizable CMS for Ruby on Rails, shipped as a **Ruby gem** (`trek`) plus a companion **NPM package** (`@etaminstudio/trek`). It's a Rails **engine** (`lib/trek/engine.rb`) that installs a back-office/admin into a host app. Installation and features are driven by Rails generators (`rails g trek:install`, `trek:scaffold`, `trek:admin:user`, …). Authored by Etamin Studio. Private gem hosted on self-hosted GitLab (`git.
|
|
7
|
+
Trek is a customizable CMS for Ruby on Rails, shipped as a **Ruby gem** (`trek`) plus a companion **NPM package** (`@etaminstudio/trek`). It's a Rails **engine** (`lib/trek/engine.rb`) that installs a back-office/admin into a host app. Installation and features are driven by Rails generators (`rails g trek:install`, `trek:scaffold`, `trek:admin:user`, …). Authored by Etamin Studio. Private gem hosted on self-hosted GitLab (`git.etamin.studio`), not public RubyGems.
|
|
8
8
|
|
|
9
9
|
## Tech stack
|
|
10
10
|
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
## [Unreleased]
|
|
2
2
|
|
|
3
|
+
## [2.0.0] - 2026-08-18
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
|
|
7
|
+
- Trek's packages are now **public-only** (#197): the gem is consumed from [RubyGems](https://rubygems.org/gems/trek) and the npm package — renamed from `@etaminstudio/trek` to the unscoped [`trek`](https://www.npmjs.com/package/trek) — is published to npmjs.com. Nothing is published to the private GitLab registries any more, and no deploy token is needed. Because the previous owner of the npm `trek` name had already published versions up to `1.0.0` (npm never frees version numbers), Trek jumps straight to **2.0.0**, keeping gem and npm versions in lockstep. **Upgrade note:** existing apps upgrade by moving to 0.1.27 first, then running `rails g trek:upgrade:v2` (see 0.1.27's changelog entry) — the generator now also adds the `npmPreapprovedPackages` exemption below. Afterwards, remove the now-unneeded CI variables — `NPM_AUTH_TOKEN` and `BUNDLE_GIT__ETAMIN__STUDIO` (spelled `BUNDLE_GIT__ETAMINSTUD__IO` on apps created before the domain migration) — along with any local `TREK_DEPLOY_TOKEN` export, and revoke the project's Trek deploy token on GitLab.
|
|
8
|
+
- `trek:install` now wires new apps to the public packages: the generated `package.json` depends on `trek`, the JS entrypoint imports `"trek"`, and the generated `.yarnrc.yml` no longer configures the GitLab registry/scope — instead it lists `trek` under `npmPreapprovedPackages`, exempting it from Yarn's package gates (minimal age, …) so fresh releases install without the quarantine delay.
|
|
9
|
+
- The published npm tarball now only contains what host apps consume — `app/javascript`, `app/assets/{icons,images,stylesheets}` and the components' JS/CSS sidecars — instead of the whole repository (Ruby engine code, specs, docs, local config…).
|
|
10
|
+
- Package metadata refresh for the public listings: description "A modern content management & back-office system for Ruby on Rails" and homepage <https://trek.etamin.studio> on both the gemspec and `package.json`, plus an explicit MIT license on both.
|
|
11
|
+
- `make release` now publishes the npm package with `npm publish` (requires `npm login` as a `trek` maintainer) instead of `yarn npm publish` to the GitLab registry.
|
|
12
|
+
|
|
13
|
+
## [0.1.27] - 2026-08-18
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- `trek:upgrade:v2` generator: upgrades a host app to Trek 2.0 by switching it from the private GitLab packages to the public ones — the [`trek` gem on RubyGems](https://rubygems.org/gems/trek) and the unscoped [`trek` npm package](https://www.npmjs.com/package/trek). It rewrites the Gemfile (`git:` source → `gem "trek", "~> 2.0"`), drops the `git.etamin.studio` Bundler credentials, swaps the `@etaminstudio/trek` npm dependency and imports for `trek`, cleans the GitLab registry/scope out of `.yarnrc.yml`, and lists the CI credentials to remove manually. (#198) **Upgrade note:** this ships in 0.1.27 — the last version published to the private GitLab sources — so upgrade to it, then run `rails g trek:upgrade:v2` to move to Trek 2.0 and stop depending on the private GitLab sources and their deploy token.
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
|
|
21
|
+
- `trek:install:ruby` now pins **Ruby 4.0.6** (was 4.0.5), and the CI images (repo + generated `.gitlab-ci.yml` template) use the matching `4.0.6` tag. **Upgrade note:** existing apps can set `4.0.6` in `.ruby-version` and bump the `ci-ruby` image tag in `.gitlab-ci.yml`.
|
|
22
|
+
|
|
3
23
|
## [0.1.26] - 2026-07-02
|
|
4
24
|
|
|
5
25
|
### Changed
|
|
@@ -37,6 +57,12 @@
|
|
|
37
57
|
- `trek:install` now adds a `!/.env.example` exception to `.gitignore` so the generated `.env.example` template stays tracked (Rails ignores all `/.env*` files by default).
|
|
38
58
|
- `trek:install:postmark` now matches the production.rb SMTP comment with or without the `bin/` prefix, so the Postmark config is injected on Rails 8.0 as well as 8.1 (previously the injection silently did nothing when the anchor did not match).
|
|
39
59
|
|
|
60
|
+
## [0.1.8] - 2025-09-03
|
|
61
|
+
|
|
62
|
+
### Fixed
|
|
63
|
+
|
|
64
|
+
- _(documented retroactively, 2026-07-27)_ Removed the dead `option :items` from `Trek::ListComponent`, which collided with its `renders_many :items` slot. This turned out to fix a serious incompatibility: since view_component **3.15.0**, slot readers are defined in an included module, so the dry-initializer option reader (defaulting to `[]`) shadows the slot reader — `items` always returns `[]` and **every `ListComponent` list renders its empty state**, i.e. all admin index pages look empty regardless of data or permissions (tree-based indexes like pages are unaffected). With view_component ≤ 3.14 the slot reader happened to overwrite the option reader, masking the collision. **Upgrade note:** apps pinned to Trek < 0.1.8 that bump view_component to ≥ 3.15 (e.g. for its security fixes) hit this immediately; until they can upgrade Trek, they can restore the slot reader with an initializer: `Rails.application.config.to_prepare { Trek::ListComponent.class_eval { def items = get_slot(:items) } }`.
|
|
65
|
+
|
|
40
66
|
## [0.0.1] - 2023-01-24
|
|
41
67
|
|
|
42
68
|
- Initial release
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
trek (0.
|
|
4
|
+
trek (2.0.0)
|
|
5
5
|
action_policy (~> 0.6)
|
|
6
6
|
actioncable
|
|
7
7
|
acts_as_list (~> 1.1)
|
|
@@ -39,29 +39,29 @@ GEM
|
|
|
39
39
|
ruby-next-core (>= 1.0)
|
|
40
40
|
action_text-trix (2.1.18)
|
|
41
41
|
railties
|
|
42
|
-
actioncable (8.1.3)
|
|
43
|
-
actionpack (= 8.1.3)
|
|
44
|
-
activesupport (= 8.1.3)
|
|
42
|
+
actioncable (8.1.3.1)
|
|
43
|
+
actionpack (= 8.1.3.1)
|
|
44
|
+
activesupport (= 8.1.3.1)
|
|
45
45
|
nio4r (~> 2.0)
|
|
46
46
|
websocket-driver (>= 0.6.1)
|
|
47
47
|
zeitwerk (~> 2.6)
|
|
48
|
-
actionmailbox (8.1.3)
|
|
49
|
-
actionpack (= 8.1.3)
|
|
50
|
-
activejob (= 8.1.3)
|
|
51
|
-
activerecord (= 8.1.3)
|
|
52
|
-
activestorage (= 8.1.3)
|
|
53
|
-
activesupport (= 8.1.3)
|
|
48
|
+
actionmailbox (8.1.3.1)
|
|
49
|
+
actionpack (= 8.1.3.1)
|
|
50
|
+
activejob (= 8.1.3.1)
|
|
51
|
+
activerecord (= 8.1.3.1)
|
|
52
|
+
activestorage (= 8.1.3.1)
|
|
53
|
+
activesupport (= 8.1.3.1)
|
|
54
54
|
mail (>= 2.8.0)
|
|
55
|
-
actionmailer (8.1.3)
|
|
56
|
-
actionpack (= 8.1.3)
|
|
57
|
-
actionview (= 8.1.3)
|
|
58
|
-
activejob (= 8.1.3)
|
|
59
|
-
activesupport (= 8.1.3)
|
|
55
|
+
actionmailer (8.1.3.1)
|
|
56
|
+
actionpack (= 8.1.3.1)
|
|
57
|
+
actionview (= 8.1.3.1)
|
|
58
|
+
activejob (= 8.1.3.1)
|
|
59
|
+
activesupport (= 8.1.3.1)
|
|
60
60
|
mail (>= 2.8.0)
|
|
61
61
|
rails-dom-testing (~> 2.2)
|
|
62
|
-
actionpack (8.1.3)
|
|
63
|
-
actionview (= 8.1.3)
|
|
64
|
-
activesupport (= 8.1.3)
|
|
62
|
+
actionpack (8.1.3.1)
|
|
63
|
+
actionview (= 8.1.3.1)
|
|
64
|
+
activesupport (= 8.1.3.1)
|
|
65
65
|
nokogiri (>= 1.8.5)
|
|
66
66
|
rack (>= 2.2.4)
|
|
67
67
|
rack-session (>= 1.0.1)
|
|
@@ -69,36 +69,36 @@ GEM
|
|
|
69
69
|
rails-dom-testing (~> 2.2)
|
|
70
70
|
rails-html-sanitizer (~> 1.6)
|
|
71
71
|
useragent (~> 0.16)
|
|
72
|
-
actiontext (8.1.3)
|
|
72
|
+
actiontext (8.1.3.1)
|
|
73
73
|
action_text-trix (~> 2.1.15)
|
|
74
|
-
actionpack (= 8.1.3)
|
|
75
|
-
activerecord (= 8.1.3)
|
|
76
|
-
activestorage (= 8.1.3)
|
|
77
|
-
activesupport (= 8.1.3)
|
|
74
|
+
actionpack (= 8.1.3.1)
|
|
75
|
+
activerecord (= 8.1.3.1)
|
|
76
|
+
activestorage (= 8.1.3.1)
|
|
77
|
+
activesupport (= 8.1.3.1)
|
|
78
78
|
globalid (>= 0.6.0)
|
|
79
79
|
nokogiri (>= 1.8.5)
|
|
80
|
-
actionview (8.1.3)
|
|
81
|
-
activesupport (= 8.1.3)
|
|
80
|
+
actionview (8.1.3.1)
|
|
81
|
+
activesupport (= 8.1.3.1)
|
|
82
82
|
builder (~> 3.1)
|
|
83
83
|
erubi (~> 1.11)
|
|
84
84
|
rails-dom-testing (~> 2.2)
|
|
85
85
|
rails-html-sanitizer (~> 1.6)
|
|
86
|
-
activejob (8.1.3)
|
|
87
|
-
activesupport (= 8.1.3)
|
|
86
|
+
activejob (8.1.3.1)
|
|
87
|
+
activesupport (= 8.1.3.1)
|
|
88
88
|
globalid (>= 0.3.6)
|
|
89
|
-
activemodel (8.1.3)
|
|
90
|
-
activesupport (= 8.1.3)
|
|
91
|
-
activerecord (8.1.3)
|
|
92
|
-
activemodel (= 8.1.3)
|
|
93
|
-
activesupport (= 8.1.3)
|
|
89
|
+
activemodel (8.1.3.1)
|
|
90
|
+
activesupport (= 8.1.3.1)
|
|
91
|
+
activerecord (8.1.3.1)
|
|
92
|
+
activemodel (= 8.1.3.1)
|
|
93
|
+
activesupport (= 8.1.3.1)
|
|
94
94
|
timeout (>= 0.4.0)
|
|
95
|
-
activestorage (8.1.3)
|
|
96
|
-
actionpack (= 8.1.3)
|
|
97
|
-
activejob (= 8.1.3)
|
|
98
|
-
activerecord (= 8.1.3)
|
|
99
|
-
activesupport (= 8.1.3)
|
|
95
|
+
activestorage (8.1.3.1)
|
|
96
|
+
actionpack (= 8.1.3.1)
|
|
97
|
+
activejob (= 8.1.3.1)
|
|
98
|
+
activerecord (= 8.1.3.1)
|
|
99
|
+
activesupport (= 8.1.3.1)
|
|
100
100
|
marcel (~> 1.0)
|
|
101
|
-
activesupport (8.1.3)
|
|
101
|
+
activesupport (8.1.3.1)
|
|
102
102
|
base64
|
|
103
103
|
bigdecimal
|
|
104
104
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
@@ -158,7 +158,7 @@ GEM
|
|
|
158
158
|
activerecord (>= 7.2.0)
|
|
159
159
|
with_advisory_lock (>= 7.0.0)
|
|
160
160
|
zeitwerk (~> 2.7)
|
|
161
|
-
concurrent-ruby (1.3.
|
|
161
|
+
concurrent-ruby (1.3.8)
|
|
162
162
|
connection_pool (3.0.2)
|
|
163
163
|
content_disposition (1.0.0)
|
|
164
164
|
crass (1.0.7)
|
|
@@ -213,7 +213,7 @@ GEM
|
|
|
213
213
|
htmlbeautifier (1.4.3)
|
|
214
214
|
htmlentities (4.3.4)
|
|
215
215
|
http_accept_language (2.1.1)
|
|
216
|
-
i18n (1.
|
|
216
|
+
i18n (1.15.2)
|
|
217
217
|
concurrent-ruby (~> 1.0)
|
|
218
218
|
i18n-tasks (1.1.2)
|
|
219
219
|
activesupport (>= 4.0.2)
|
|
@@ -237,7 +237,7 @@ GEM
|
|
|
237
237
|
rdoc (>= 4.0.0)
|
|
238
238
|
reline (>= 0.4.2)
|
|
239
239
|
jmespath (1.6.2)
|
|
240
|
-
json (2.
|
|
240
|
+
json (2.21.2)
|
|
241
241
|
kaminari (1.2.2)
|
|
242
242
|
activesupport (>= 4.1.0)
|
|
243
243
|
kaminari-actionview (= 1.2.2)
|
|
@@ -256,7 +256,7 @@ GEM
|
|
|
256
256
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
257
257
|
rb-inotify (~> 0.9, >= 0.9.10)
|
|
258
258
|
logger (1.7.0)
|
|
259
|
-
loofah (2.25.
|
|
259
|
+
loofah (2.25.2)
|
|
260
260
|
crass (~> 1.0.2)
|
|
261
261
|
nokogiri (>= 1.12.0)
|
|
262
262
|
lookbook (2.3.14)
|
|
@@ -271,7 +271,7 @@ GEM
|
|
|
271
271
|
view_component (>= 2.0)
|
|
272
272
|
yard (~> 0.9)
|
|
273
273
|
zeitwerk (~> 2.5)
|
|
274
|
-
mail (2.9.
|
|
274
|
+
mail (2.9.1)
|
|
275
275
|
logger
|
|
276
276
|
mini_mime (>= 0.1.1)
|
|
277
277
|
net-imap
|
|
@@ -331,20 +331,20 @@ GEM
|
|
|
331
331
|
rack (>= 1.3)
|
|
332
332
|
rackup (2.3.1)
|
|
333
333
|
rack (>= 3)
|
|
334
|
-
rails (8.1.3)
|
|
335
|
-
actioncable (= 8.1.3)
|
|
336
|
-
actionmailbox (= 8.1.3)
|
|
337
|
-
actionmailer (= 8.1.3)
|
|
338
|
-
actionpack (= 8.1.3)
|
|
339
|
-
actiontext (= 8.1.3)
|
|
340
|
-
actionview (= 8.1.3)
|
|
341
|
-
activejob (= 8.1.3)
|
|
342
|
-
activemodel (= 8.1.3)
|
|
343
|
-
activerecord (= 8.1.3)
|
|
344
|
-
activestorage (= 8.1.3)
|
|
345
|
-
activesupport (= 8.1.3)
|
|
334
|
+
rails (8.1.3.1)
|
|
335
|
+
actioncable (= 8.1.3.1)
|
|
336
|
+
actionmailbox (= 8.1.3.1)
|
|
337
|
+
actionmailer (= 8.1.3.1)
|
|
338
|
+
actionpack (= 8.1.3.1)
|
|
339
|
+
actiontext (= 8.1.3.1)
|
|
340
|
+
actionview (= 8.1.3.1)
|
|
341
|
+
activejob (= 8.1.3.1)
|
|
342
|
+
activemodel (= 8.1.3.1)
|
|
343
|
+
activerecord (= 8.1.3.1)
|
|
344
|
+
activestorage (= 8.1.3.1)
|
|
345
|
+
activesupport (= 8.1.3.1)
|
|
346
346
|
bundler (>= 1.15.0)
|
|
347
|
-
railties (= 8.1.3)
|
|
347
|
+
railties (= 8.1.3.1)
|
|
348
348
|
rails-dom-testing (2.3.0)
|
|
349
349
|
activesupport (>= 5.0.0)
|
|
350
350
|
minitest
|
|
@@ -352,15 +352,15 @@ GEM
|
|
|
352
352
|
rails-healthcheck (1.4.0)
|
|
353
353
|
actionpack
|
|
354
354
|
railties
|
|
355
|
-
rails-html-sanitizer (1.7.
|
|
356
|
-
loofah (~> 2.25)
|
|
355
|
+
rails-html-sanitizer (1.7.1)
|
|
356
|
+
loofah (~> 2.25, >= 2.25.2)
|
|
357
357
|
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
|
|
358
358
|
rails-i18n (8.1.0)
|
|
359
359
|
i18n (>= 0.7, < 2)
|
|
360
360
|
railties (>= 8.0.0, < 9)
|
|
361
|
-
railties (8.1.3)
|
|
362
|
-
actionpack (= 8.1.3)
|
|
363
|
-
activesupport (= 8.1.3)
|
|
361
|
+
railties (8.1.3.1)
|
|
362
|
+
actionpack (= 8.1.3.1)
|
|
363
|
+
activesupport (= 8.1.3.1)
|
|
364
364
|
irb (~> 1.13)
|
|
365
365
|
rackup (>= 1.0.0)
|
|
366
366
|
rake (>= 12.2)
|
|
@@ -498,7 +498,7 @@ GEM
|
|
|
498
498
|
unicode-emoji (4.2.0)
|
|
499
499
|
uri (1.1.1)
|
|
500
500
|
useragent (0.16.11)
|
|
501
|
-
view_component (4.
|
|
501
|
+
view_component (4.12.0)
|
|
502
502
|
actionview (>= 7.1.0)
|
|
503
503
|
activesupport (>= 7.1.0)
|
|
504
504
|
concurrent-ruby (~> 1)
|
|
@@ -507,7 +507,7 @@ GEM
|
|
|
507
507
|
activesupport (>= 7.2.0, < 8.2)
|
|
508
508
|
view_component (>= 2.34.0, < 5.0)
|
|
509
509
|
zeitwerk (~> 2.5)
|
|
510
|
-
websocket-driver (0.8.
|
|
510
|
+
websocket-driver (0.8.2)
|
|
511
511
|
base64
|
|
512
512
|
websocket-extensions (>= 0.1.0)
|
|
513
513
|
websocket-extensions (0.1.5)
|
|
@@ -520,6 +520,7 @@ GEM
|
|
|
520
520
|
zeitwerk (2.7.5)
|
|
521
521
|
|
|
522
522
|
PLATFORMS
|
|
523
|
+
arm64-darwin-23
|
|
523
524
|
arm64-darwin-24
|
|
524
525
|
x86_64-darwin-21
|
|
525
526
|
x86_64-darwin-22
|
data/Makefile
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.PHONY:
|
|
1
|
+
.PHONY: *
|
|
2
2
|
|
|
3
3
|
release:
|
|
4
4
|
@read -p "New version (current: $$(sed -n 's/.*VERSION = "\(.*\)"/\1/p' lib/trek/version.rb)): " version; \
|
|
@@ -10,4 +10,26 @@ release:
|
|
|
10
10
|
git add -A; \
|
|
11
11
|
git commit -m "Version $$version"; \
|
|
12
12
|
bundle exec rake release; \
|
|
13
|
-
|
|
13
|
+
npm publish
|
|
14
|
+
|
|
15
|
+
audit-fix:
|
|
16
|
+
@out=$$(bundle exec bundle-audit check --update 2>&1); \
|
|
17
|
+
echo "$$out"; echo; \
|
|
18
|
+
gems=$$(echo "$$out" | awk '/^Name: /{print $$2}' | sort -u); \
|
|
19
|
+
if [ -z "$$gems" ]; then \
|
|
20
|
+
echo "No vulnerable gems 🎉"; \
|
|
21
|
+
else \
|
|
22
|
+
echo "Vulnerable gems: $$gems"; \
|
|
23
|
+
bundle update --conservative $$gems; \
|
|
24
|
+
if ! bundle exec bundle-audit check; then \
|
|
25
|
+
echo "Still vulnerable after update — the resolver may have picked an old version; add a version floor in the Gemfile (e.g. gem \"foo\", \">= x.y\") and retry"; \
|
|
26
|
+
git checkout Gemfile.lock; \
|
|
27
|
+
exit 1; \
|
|
28
|
+
elif git diff --quiet Gemfile.lock; then \
|
|
29
|
+
echo "Gemfile.lock unchanged — a version cap may be blocking the fix; try adding the capping gem to 'bundle update'"; \
|
|
30
|
+
else \
|
|
31
|
+
git add Gemfile.lock && \
|
|
32
|
+
git commit -m "Upgrade $$(echo $$gems | sed 's/ /, /g') (CVE)" && \
|
|
33
|
+
git push; \
|
|
34
|
+
fi; \
|
|
35
|
+
fi
|
data/README.md
CHANGED
|
@@ -7,8 +7,8 @@ Trek is a modern content management system for Ruby on Rails, that is designed t
|
|
|
7
7
|
- Rails 7.0+
|
|
8
8
|
- Ruby 3.1+
|
|
9
9
|
- PostgreSQL 12+
|
|
10
|
-
- Node
|
|
11
|
-
- Yarn
|
|
10
|
+
- Node 22+
|
|
11
|
+
- Yarn 4.x
|
|
12
12
|
- libvips
|
|
13
13
|
|
|
14
14
|
### Dependencies
|
|
@@ -32,19 +32,19 @@ You don't have to set them up yourself, but you can customize their configuratio
|
|
|
32
32
|
Make sure your default Rails version is 7.0+
|
|
33
33
|
|
|
34
34
|
$ rails -v
|
|
35
|
-
Rails
|
|
35
|
+
Rails 8.1.3
|
|
36
36
|
|
|
37
37
|
If not, run `gem install rails` to upgrade.
|
|
38
38
|
|
|
39
|
-
Make sure your default Yarn version is
|
|
39
|
+
Make sure your default Yarn version is 4.x
|
|
40
40
|
|
|
41
41
|
$ yarn -v
|
|
42
|
-
|
|
42
|
+
4.17.0
|
|
43
43
|
|
|
44
44
|
If not, run:
|
|
45
45
|
|
|
46
46
|
corepack enable
|
|
47
|
-
corepack install --global yarn@
|
|
47
|
+
corepack install --global yarn@4
|
|
48
48
|
|
|
49
49
|
Create your Rails project (replace `helloworld` with your own project name):
|
|
50
50
|
|
|
@@ -52,31 +52,11 @@ Create your Rails project (replace `helloworld` with your own project name):
|
|
|
52
52
|
rails new $TREK_PROJECT_NAME -j esbuild -d postgresql --skip-action-mailbox --skip-action-text --skip-action-cable --skip-active-storage --skip-jbuilder --skip-test --skip-system-test
|
|
53
53
|
cd $TREK_PROJECT_NAME
|
|
54
54
|
|
|
55
|
-
[Create a deploy token](https://git.etaminstud.io/etaminstudio/trek/-/settings/repository#js-deploy-tokens) associated to Trek project:
|
|
56
|
-
|
|
57
|
-
- Name: `helloworld` (replace with your project name)
|
|
58
|
-
- Username: `helloworld` (replace with your project name)
|
|
59
|
-
- Scopes: `read_repository`, `read_package_registry`
|
|
60
|
-
|
|
61
|
-
Copy the generated token to an ENV variable (replace `XXXXXXXXXXX` with the token generated by Gitlab):
|
|
62
|
-
|
|
63
|
-
export TREK_DEPLOY_TOKEN=XXXXXXXXXXX
|
|
64
|
-
|
|
65
55
|
### Install the gem
|
|
66
56
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
bundle config git.etaminstud.io $TREK_PROJECT_NAME:$TREK_DEPLOY_TOKEN
|
|
70
|
-
|
|
71
|
-
Install the gem and add it to the application's Gemfile by running:
|
|
72
|
-
|
|
73
|
-
bundle add trek --git https://git.etaminstud.io/etaminstudio/trek.git --branch main
|
|
57
|
+
Trek is distributed publicly: the gem on [RubyGems](https://rubygems.org/gems/trek) and the [`trek` npm package](https://www.npmjs.com/package/trek) on npmjs.com (the installer adds the latter to your `package.json`). Install the gem and add it to the application's Gemfile by running:
|
|
74
58
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
Prepare the NPM package installation by running:
|
|
78
|
-
|
|
79
|
-
export NPM_AUTH_TOKEN=$TREK_DEPLOY_TOKEN
|
|
59
|
+
bundle add trek
|
|
80
60
|
|
|
81
61
|
### Run the installer
|
|
82
62
|
|
|
@@ -134,8 +114,8 @@ The title and subtitle are customizable in the locales, with the following keys:
|
|
|
134
114
|
en:
|
|
135
115
|
admin:
|
|
136
116
|
brand:
|
|
137
|
-
|
|
138
|
-
|
|
117
|
+
title: My project
|
|
118
|
+
subtitle: Back-office
|
|
139
119
|
```
|
|
140
120
|
|
|
141
121
|
### Useful commands
|
|
@@ -146,18 +126,6 @@ Customize the credentials with `ADMIN_EMAIL` and `ADMIN_PASSWORD` ENV variables
|
|
|
146
126
|
|
|
147
127
|
rails g trek:admin:user
|
|
148
128
|
|
|
149
|
-
## CI setup
|
|
150
|
-
|
|
151
|
-
### Gitlab
|
|
152
|
-
|
|
153
|
-
Once your project is created on Gitlab, go to `Settings` > `CI/CD` > `Variables` > `Add variable` and use these values:
|
|
154
|
-
|
|
155
|
-
- Key: `BUNDLE_GIT__ETAMINSTUD__IO`
|
|
156
|
-
- Value: `helloworld:YOUR_DEPLOY_TOKEN` (replace with your project name)
|
|
157
|
-
|
|
158
|
-
- Key: `NPM_AUTH_TOKEN`
|
|
159
|
-
- Value: `YOUR_DEPLOY_TOKEN`
|
|
160
|
-
|
|
161
129
|
## Development
|
|
162
130
|
|
|
163
131
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
@@ -176,7 +144,7 @@ Let's use [Bundler `local` feature](https://bundler.io/v2.7/man/bundle-config.1.
|
|
|
176
144
|
|
|
177
145
|
First, make sure you're pointing to Trek's git repo main branch in your `Gemfile`:
|
|
178
146
|
|
|
179
|
-
gem "trek", git: "git@git.
|
|
147
|
+
gem "trek", git: "git@git.etamin.studio:etaminstudio/trek.git", branch: :main
|
|
180
148
|
|
|
181
149
|
Navigate to your project, then configure the local version of Trek:
|
|
182
150
|
|
|
@@ -196,7 +164,7 @@ When you're done, disable the local version:
|
|
|
196
164
|
|
|
197
165
|
Don't forget to revert to a released verion in your `Gemfile`:
|
|
198
166
|
|
|
199
|
-
gem "trek", "~> 0
|
|
167
|
+
gem "trek", "~> 2.0"
|
|
200
168
|
|
|
201
169
|
#### Linking to the local NPM package with Yarn
|
|
202
170
|
|
|
@@ -229,4 +197,4 @@ This will:
|
|
|
229
197
|
3. Run `bundle` to update the lockfile
|
|
230
198
|
4. Commit all changes with message "Version X.Y.Z"
|
|
231
199
|
5. Run `bundle exec rake release` (creates git tag, pushes commits/tag, pushes gem to [rubygems.org](https://rubygems.org))
|
|
232
|
-
6. Run `
|
|
200
|
+
6. Run `npm publish` (publishes the [npm package](https://www.npmjs.com/package/trek) to npmjs.com). This requires being logged in to npmjs (`npm login`) as a maintainer of the `trek` package.
|
data/docs/getting-started.md
CHANGED
|
@@ -9,8 +9,8 @@ Make sure the following are installed:
|
|
|
9
9
|
- Ruby 3.1+
|
|
10
10
|
- Rails 7.0+
|
|
11
11
|
- PostgreSQL 12+
|
|
12
|
-
- Node
|
|
13
|
-
- Yarn
|
|
12
|
+
- Node 22+
|
|
13
|
+
- Yarn 4.x
|
|
14
14
|
- libvips
|
|
15
15
|
|
|
16
16
|
Check your Rails version:
|
|
@@ -27,11 +27,11 @@ Check your Yarn version:
|
|
|
27
27
|
yarn -v
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
If it's not a
|
|
30
|
+
If it's not a 4.x version, run:
|
|
31
31
|
|
|
32
32
|
```sh
|
|
33
33
|
corepack enable
|
|
34
|
-
corepack install --global yarn@
|
|
34
|
+
corepack install --global yarn@4
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
## Create your Rails project
|
|
@@ -46,38 +46,12 @@ rails new $TREK_PROJECT_NAME -j esbuild -d postgresql \
|
|
|
46
46
|
cd $TREK_PROJECT_NAME
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
## Get access to Trek
|
|
50
|
-
|
|
51
|
-
Trek is distributed as a gem and an NPM package from Etamin Studio's GitLab. [Create a deploy token](https://git.etaminstud.io/etaminstudio/trek/-/settings/repository#js-deploy-tokens) associated to the Trek project:
|
|
52
|
-
|
|
53
|
-
- **Name**: your project name (e.g. `helloworld`)
|
|
54
|
-
- **Username**: your project name (e.g. `helloworld`)
|
|
55
|
-
- **Scopes**: `read_repository`, `read_package_registry`
|
|
56
|
-
|
|
57
|
-
Export the generated token (replace `XXXXXXXXXXX`):
|
|
58
|
-
|
|
59
|
-
```sh
|
|
60
|
-
export TREK_DEPLOY_TOKEN=XXXXXXXXXXX
|
|
61
|
-
```
|
|
62
|
-
|
|
63
49
|
## Install the gem
|
|
64
50
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
```sh
|
|
68
|
-
bundle config git.etaminstud.io $TREK_PROJECT_NAME:$TREK_DEPLOY_TOKEN
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Install the gem and add it to your `Gemfile`:
|
|
72
|
-
|
|
73
|
-
```sh
|
|
74
|
-
bundle add trek --git https://git.etaminstud.io/etaminstudio/trek.git --branch main
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Prepare the NPM package installation:
|
|
51
|
+
Trek is distributed publicly: the gem on [RubyGems](https://rubygems.org/gems/trek) and the [`trek` npm package](https://www.npmjs.com/package/trek) on npmjs.com (the installer adds the latter to your `package.json`). Install the gem and add it to your `Gemfile`:
|
|
78
52
|
|
|
79
53
|
```sh
|
|
80
|
-
|
|
54
|
+
bundle add trek
|
|
81
55
|
```
|
|
82
56
|
|
|
83
57
|
## Run the installer
|
|
@@ -55,17 +55,11 @@ module Trek
|
|
|
55
55
|
<<~YAML
|
|
56
56
|
nodeLinker: node-modules
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
npmScopes:
|
|
64
|
-
etaminstudio:
|
|
65
|
-
npmRegistryServer: "https://git.etaminstud.io/api/v4/packages/npm"
|
|
66
|
-
# Our own registry — skip Yarn's minimal-age gate so a freshly
|
|
67
|
-
# published Trek release installs without the quarantine delay.
|
|
68
|
-
npmMinimalAgeGate: 0
|
|
58
|
+
# Trek is our own package — exempt it from Yarn's package gates
|
|
59
|
+
# (minimal age, …) so a freshly published release installs without
|
|
60
|
+
# the quarantine delay.
|
|
61
|
+
npmPreapprovedPackages:
|
|
62
|
+
- trek
|
|
69
63
|
YAML
|
|
70
64
|
end
|
|
71
65
|
|
|
@@ -27,10 +27,10 @@ This is a Ruby on Rails application whose back-office/admin is built with **Trek
|
|
|
27
27
|
|
|
28
28
|
## Upgrading Trek
|
|
29
29
|
|
|
30
|
-
**Whenever you bump the `trek` gem — and its companion
|
|
30
|
+
**Whenever you bump the `trek` gem — and its companion `trek` npm package — always:**
|
|
31
31
|
|
|
32
32
|
1. **Read Trek's `CHANGELOG.md`** for every version between the installed and target version, not just the latest.
|
|
33
33
|
2. **Apply every "Upgrade note".** These are the manual steps host apps must perform (config tweaks, new initializers, regenerated files, data migrations). Do not skip them — the upgrade is not complete until each is applied.
|
|
34
34
|
3. **Remove now-redundant local code.** Where the changelog says a Trek change lets host apps drop or simplify a local patch, monkey-patch, or custom implementation, delete that code as part of the upgrade.
|
|
35
|
-
4. **Keep versions aligned**: the `trek` gem version and the
|
|
35
|
+
4. **Keep versions aligned**: the `trek` gem version and the `trek` npm version must match.
|
|
36
36
|
5. **Verify**: run `make lint` and `make test` before committing the upgrade.
|
|
@@ -30,6 +30,28 @@ scan:
|
|
|
30
30
|
bundle exec brakeman
|
|
31
31
|
bundle exec bundle-audit check --update
|
|
32
32
|
|
|
33
|
+
audit-fix:
|
|
34
|
+
@out=$$(bundle exec bundle-audit check --update 2>&1); \
|
|
35
|
+
echo "$$out"; echo; \
|
|
36
|
+
gems=$$(echo "$$out" | awk '/^Name: /{print $$2}' | sort -u); \
|
|
37
|
+
if [ -z "$$gems" ]; then \
|
|
38
|
+
echo "No vulnerable gems 🎉"; \
|
|
39
|
+
else \
|
|
40
|
+
echo "Vulnerable gems: $$gems"; \
|
|
41
|
+
bundle update --conservative $$gems; \
|
|
42
|
+
if ! bundle exec bundle-audit check; then \
|
|
43
|
+
echo "Still vulnerable after update — the resolver may have picked an old version; add a version floor in the Gemfile (e.g. gem \"foo\", \">= x.y\") and retry"; \
|
|
44
|
+
git checkout Gemfile.lock; \
|
|
45
|
+
exit 1; \
|
|
46
|
+
elif git diff --quiet Gemfile.lock; then \
|
|
47
|
+
echo "Gemfile.lock unchanged — a version cap may be blocking the fix; try adding the capping gem to 'bundle update'"; \
|
|
48
|
+
else \
|
|
49
|
+
git add Gemfile.lock && \
|
|
50
|
+
git commit -m "Upgrade $$(echo $$gems | sed 's/ /, /g') (CVE)" && \
|
|
51
|
+
git push; \
|
|
52
|
+
fi; \
|
|
53
|
+
fi
|
|
54
|
+
|
|
33
55
|
test:
|
|
34
56
|
overmind run bundle exec rails spec
|
|
35
57
|
spec: test
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"name": "<%= application_name.downcase %>",
|
|
3
3
|
"private": true,
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@etaminstudio/trek": "^<%= Trek::VERSION %>",
|
|
6
5
|
"@hotwired/stimulus": "^3.2.2",
|
|
7
|
-
"@hotwired/turbo-rails": "^8.0.0"
|
|
6
|
+
"@hotwired/turbo-rails": "^8.0.0",
|
|
7
|
+
"trek": "^<%= Trek::VERSION %>"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "node esbuild.config.js"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
require "rails/generators/actions"
|
|
2
|
+
require "generators/trek/helpers"
|
|
3
|
+
require "yaml"
|
|
4
|
+
|
|
5
|
+
module Trek
|
|
6
|
+
module Generators
|
|
7
|
+
module Upgrade
|
|
8
|
+
# The Trek 2.0 upgrade: switches a host app from the private GitLab packages (git-sourced gem +
|
|
9
|
+
# @etaminstudio/trek on the GitLab npm registry) to the public ones: the
|
|
10
|
+
# trek gem on RubyGems and the unscoped trek package on npmjs.com.
|
|
11
|
+
class V2Generator < Rails::Generators::Base
|
|
12
|
+
# 2.0.0 is the first version published to RubyGems + npmjs.com (the
|
|
13
|
+
# public npm "trek" name starts there — see the 2.0.0 changelog entry),
|
|
14
|
+
# hence a hardcoded floor rather than Trek::VERSION.
|
|
15
|
+
GEM_REQUIREMENT = "~> 2.0"
|
|
16
|
+
NPM_REQUIREMENT = "^2.0.0"
|
|
17
|
+
|
|
18
|
+
include Trek::Generators::Helpers
|
|
19
|
+
|
|
20
|
+
desc "Upgrade to Trek 2.0: switch the trek gem and npm package from the private GitLab sources to RubyGems and npmjs.com."
|
|
21
|
+
|
|
22
|
+
def switch_gemfile_to_rubygems
|
|
23
|
+
gsub_file "Gemfile", /^gem ["']trek["'],.*$/, %(gem "trek", "#{GEM_REQUIREMENT}")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def remove_bundler_credentials
|
|
27
|
+
run "bundle config unset git.etamin.studio"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def install_gems
|
|
31
|
+
bundle_install
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def rename_npm_dependency
|
|
35
|
+
gsub_file "package.json", %r{"@etaminstudio/trek":}, '"trek":'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def rewrite_imports
|
|
39
|
+
Dir.glob("app/javascript/**/*.js").each do |file|
|
|
40
|
+
next unless File.read(file).include?("@etaminstudio/trek")
|
|
41
|
+
|
|
42
|
+
gsub_file file, %r{(["'])@etaminstudio/trek(["'/])}, '\1trek\2'
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def clean_yarnrc
|
|
47
|
+
return unless File.exist?(".yarnrc.yml")
|
|
48
|
+
|
|
49
|
+
# Drop the etaminstudio scope and the git.etamin.studio registry
|
|
50
|
+
# entries (registry server, auth token, minimal-age-gate exemption).
|
|
51
|
+
# Text-based so the rest of the file keeps its comments and layout,
|
|
52
|
+
# but YAML-checked: parent keys are only removed once a parse proves
|
|
53
|
+
# they are empty, and nothing is written if the result doesn't parse.
|
|
54
|
+
content = File.read(".yarnrc.yml")
|
|
55
|
+
.gsub(%r{ "?//git\.etamin\.studio[^\n]*:\n(?: [^\n]*\n)*}, "")
|
|
56
|
+
.gsub(/ etaminstudio:\n(?: [^\n]*\n)*/, "")
|
|
57
|
+
|
|
58
|
+
%w[npmRegistries npmScopes].each do |key|
|
|
59
|
+
content.sub!(/^#{key}:\n/, "") if YAML.safe_load(content)&.fetch(key, :absent).nil?
|
|
60
|
+
end
|
|
61
|
+
content.gsub!(/\n{3,}/, "\n\n")
|
|
62
|
+
|
|
63
|
+
create_file ".yarnrc.yml", content, force: true
|
|
64
|
+
rescue Psych::Exception
|
|
65
|
+
say "Could not safely edit .yarnrc.yml — remove the git.etamin.studio registry " \
|
|
66
|
+
"and the etaminstudio scope manually.", :yellow
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def preapprove_npm_package
|
|
70
|
+
return unless File.exist?(".yarnrc.yml")
|
|
71
|
+
return if File.read(".yarnrc.yml").include?("npmPreapprovedPackages")
|
|
72
|
+
|
|
73
|
+
append_to_file ".yarnrc.yml", <<~YAML
|
|
74
|
+
|
|
75
|
+
# Trek is our own package — exempt it from Yarn's package gates
|
|
76
|
+
# (minimal age, …) so a freshly published release installs without
|
|
77
|
+
# the quarantine delay.
|
|
78
|
+
npmPreapprovedPackages:
|
|
79
|
+
- trek
|
|
80
|
+
YAML
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def install_npm_package
|
|
84
|
+
install_npm_dependencies({ "trek" => NPM_REQUIREMENT })
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def summary
|
|
88
|
+
say <<~SUMMARY
|
|
89
|
+
|
|
90
|
+
The trek gem now comes from RubyGems and the trek npm package from npmjs.com.
|
|
91
|
+
|
|
92
|
+
Manual follow-ups:
|
|
93
|
+
* Remove the NPM_AUTH_TOKEN variable and the Bundler credentials for
|
|
94
|
+
git.etamin.studio (BUNDLE_GIT__ETAMIN__STUDIO — spelled
|
|
95
|
+
BUNDLE_GIT__ETAMINSTUD__IO on apps created before the domain
|
|
96
|
+
migration) from your CI settings, and drop any local
|
|
97
|
+
TREK_DEPLOY_TOKEN export.
|
|
98
|
+
* Revoke this project's Trek deploy token on GitLab.
|
|
99
|
+
SUMMARY
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
end
|
data/lib/trek/version.rb
CHANGED
data/package.json
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "A modern
|
|
2
|
+
"name": "trek",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "A modern content management & back-office system for Ruby on Rails",
|
|
5
|
+
"homepage": "https://trek.etamin.studio",
|
|
6
|
+
"license": "MIT",
|
|
5
7
|
"main": "app/javascript/trek.js",
|
|
8
|
+
"files": [
|
|
9
|
+
"app/assets/icons/**",
|
|
10
|
+
"app/assets/images/**",
|
|
11
|
+
"app/assets/stylesheets/**",
|
|
12
|
+
"app/components/**/*.js",
|
|
13
|
+
"app/components/**/*.css",
|
|
14
|
+
"app/javascript/**"
|
|
15
|
+
],
|
|
6
16
|
"repository": {
|
|
7
17
|
"type": "git",
|
|
8
|
-
"url": "git@git.
|
|
18
|
+
"url": "git@git.etamin.studio:etaminstudio/trek.git"
|
|
9
19
|
},
|
|
10
20
|
"author": "Etamin Studio",
|
|
11
21
|
"dependencies": {
|
data/trek.gemspec
CHANGED
|
@@ -8,13 +8,13 @@ Gem::Specification.new do |spec|
|
|
|
8
8
|
spec.authors = ["Mohamed Bengrich", "Hugo Chantelauze", "Lucas Heymès", "Hans Lemuet"]
|
|
9
9
|
spec.email = ["team@etamin.studio"]
|
|
10
10
|
|
|
11
|
-
spec.summary = "A modern
|
|
12
|
-
spec.homepage = "https://etamin.studio"
|
|
11
|
+
spec.summary = "A modern content management & back-office system for Ruby on Rails"
|
|
12
|
+
spec.homepage = "https://trek.etamin.studio"
|
|
13
|
+
spec.license = "MIT"
|
|
13
14
|
spec.required_ruby_version = ">= 3.1.0"
|
|
14
15
|
|
|
15
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
16
|
-
|
|
17
|
-
# spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
|
17
|
+
spec.metadata["documentation_uri"] = spec.homepage
|
|
18
18
|
|
|
19
19
|
# Specify which files should be added to the gem when it is released.
|
|
20
20
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
data/yarn.lock
CHANGED
|
@@ -877,52 +877,6 @@ __metadata:
|
|
|
877
877
|
languageName: node
|
|
878
878
|
linkType: hard
|
|
879
879
|
|
|
880
|
-
"@etaminstudio/trek@workspace:.":
|
|
881
|
-
version: 0.0.0-use.local
|
|
882
|
-
resolution: "@etaminstudio/trek@workspace:."
|
|
883
|
-
dependencies:
|
|
884
|
-
"@hotwired/stimulus": ^3.2.2
|
|
885
|
-
"@hotwired/turbo-rails": ^8.0.20
|
|
886
|
-
"@radix-ui/colors": ^3.0.0
|
|
887
|
-
"@tiptap/core": ^2.1.11
|
|
888
|
-
"@tiptap/extension-floating-menu": ^2.1.11
|
|
889
|
-
"@tiptap/extension-link": ^2.1.11
|
|
890
|
-
"@tiptap/extension-placeholder": ^2.1.11
|
|
891
|
-
"@tiptap/pm": ^2.1.11
|
|
892
|
-
"@tiptap/starter-kit": ^2.1.11
|
|
893
|
-
"@uppy/core": ^3.0.4
|
|
894
|
-
"@uppy/locales": ^3.0.1
|
|
895
|
-
"@uppy/thumbnail-generator": ^3.0.2
|
|
896
|
-
"@uppy/xhr-upload": ^3.0.4
|
|
897
|
-
esbuild: ^0.28.0
|
|
898
|
-
esbuild-rails: ^1.0.7
|
|
899
|
-
esbuild-style-plugin: ^1.6.3
|
|
900
|
-
eslint: ^8.49.0
|
|
901
|
-
eslint-config-prettier: ^8.10.2
|
|
902
|
-
hotkeys-js: ^3.13.15
|
|
903
|
-
normalize.css: ^8.0.1
|
|
904
|
-
postcss: ^8.4.30
|
|
905
|
-
postcss-cli: ^10.1.0
|
|
906
|
-
postcss-flexbugs-fixes: ^5.0.2
|
|
907
|
-
postcss-import: ^15.1.0
|
|
908
|
-
postcss-inline-svg: ^5.0.0
|
|
909
|
-
postcss-modules: ^5.0.0
|
|
910
|
-
postcss-nesting: ^10.2.0
|
|
911
|
-
postcss-preset-env: ^7.8.3
|
|
912
|
-
postcss-url: ^10.1.3
|
|
913
|
-
prettier: 2.8.8
|
|
914
|
-
slugify: ^1.6.6
|
|
915
|
-
sortablejs: ^1.15.6
|
|
916
|
-
stimulus-use: ^0.52.3
|
|
917
|
-
stylelint: ^15.11.0
|
|
918
|
-
stylelint-config-standard: ^31.0.0
|
|
919
|
-
stylelint-order: ^6.0.4
|
|
920
|
-
tom-select: ^2.2.2
|
|
921
|
-
vitepress: ^1.6.4
|
|
922
|
-
vitepress-plugin-llms: ^1.13.1
|
|
923
|
-
languageName: unknown
|
|
924
|
-
linkType: soft
|
|
925
|
-
|
|
926
880
|
"@hotwired/stimulus@npm:^3.2.2":
|
|
927
881
|
version: 3.2.2
|
|
928
882
|
resolution: "@hotwired/stimulus@npm:3.2.2"
|
|
@@ -4693,12 +4647,12 @@ __metadata:
|
|
|
4693
4647
|
languageName: node
|
|
4694
4648
|
linkType: hard
|
|
4695
4649
|
|
|
4696
|
-
"nanoid@npm:^3.3.
|
|
4697
|
-
version: 3.3.
|
|
4698
|
-
resolution: "nanoid@npm:3.3.
|
|
4650
|
+
"nanoid@npm:^3.3.16":
|
|
4651
|
+
version: 3.3.16
|
|
4652
|
+
resolution: "nanoid@npm:3.3.16"
|
|
4699
4653
|
bin:
|
|
4700
4654
|
nanoid: bin/nanoid.cjs
|
|
4701
|
-
checksum:
|
|
4655
|
+
checksum: 2489d8f87f02178a15b901d7d06e490838383a2acdf01ec2b4e4343c02325ab648965a539eba8bdb821560a33e4c34be506b9e1c7c1bb5cb750e894f500fce92
|
|
4702
4656
|
languageName: node
|
|
4703
4657
|
linkType: hard
|
|
4704
4658
|
|
|
@@ -5567,13 +5521,13 @@ __metadata:
|
|
|
5567
5521
|
linkType: hard
|
|
5568
5522
|
|
|
5569
5523
|
"postcss@npm:^8.4.28, postcss@npm:^8.4.30, postcss@npm:^8.4.31, postcss@npm:^8.4.32, postcss@npm:^8.4.43, postcss@npm:^8.5.15":
|
|
5570
|
-
version: 8.5.
|
|
5571
|
-
resolution: "postcss@npm:8.5.
|
|
5524
|
+
version: 8.5.23
|
|
5525
|
+
resolution: "postcss@npm:8.5.23"
|
|
5572
5526
|
dependencies:
|
|
5573
|
-
nanoid: ^3.3.
|
|
5527
|
+
nanoid: ^3.3.16
|
|
5574
5528
|
picocolors: ^1.1.1
|
|
5575
5529
|
source-map-js: ^1.2.1
|
|
5576
|
-
checksum:
|
|
5530
|
+
checksum: 02fe0aac9de34914104566b3fe3a29903dc7bae4a3fffffdca1331dc51e14aa62c48e8373fc4d107ef99f8f5cae98199d9a89fbcbf43371693b22a397ff5cc34
|
|
5577
5531
|
languageName: node
|
|
5578
5532
|
linkType: hard
|
|
5579
5533
|
|
|
@@ -6653,6 +6607,52 @@ __metadata:
|
|
|
6653
6607
|
languageName: node
|
|
6654
6608
|
linkType: hard
|
|
6655
6609
|
|
|
6610
|
+
"trek@workspace:.":
|
|
6611
|
+
version: 0.0.0-use.local
|
|
6612
|
+
resolution: "trek@workspace:."
|
|
6613
|
+
dependencies:
|
|
6614
|
+
"@hotwired/stimulus": ^3.2.2
|
|
6615
|
+
"@hotwired/turbo-rails": ^8.0.20
|
|
6616
|
+
"@radix-ui/colors": ^3.0.0
|
|
6617
|
+
"@tiptap/core": ^2.1.11
|
|
6618
|
+
"@tiptap/extension-floating-menu": ^2.1.11
|
|
6619
|
+
"@tiptap/extension-link": ^2.1.11
|
|
6620
|
+
"@tiptap/extension-placeholder": ^2.1.11
|
|
6621
|
+
"@tiptap/pm": ^2.1.11
|
|
6622
|
+
"@tiptap/starter-kit": ^2.1.11
|
|
6623
|
+
"@uppy/core": ^3.0.4
|
|
6624
|
+
"@uppy/locales": ^3.0.1
|
|
6625
|
+
"@uppy/thumbnail-generator": ^3.0.2
|
|
6626
|
+
"@uppy/xhr-upload": ^3.0.4
|
|
6627
|
+
esbuild: ^0.28.0
|
|
6628
|
+
esbuild-rails: ^1.0.7
|
|
6629
|
+
esbuild-style-plugin: ^1.6.3
|
|
6630
|
+
eslint: ^8.49.0
|
|
6631
|
+
eslint-config-prettier: ^8.10.2
|
|
6632
|
+
hotkeys-js: ^3.13.15
|
|
6633
|
+
normalize.css: ^8.0.1
|
|
6634
|
+
postcss: ^8.4.30
|
|
6635
|
+
postcss-cli: ^10.1.0
|
|
6636
|
+
postcss-flexbugs-fixes: ^5.0.2
|
|
6637
|
+
postcss-import: ^15.1.0
|
|
6638
|
+
postcss-inline-svg: ^5.0.0
|
|
6639
|
+
postcss-modules: ^5.0.0
|
|
6640
|
+
postcss-nesting: ^10.2.0
|
|
6641
|
+
postcss-preset-env: ^7.8.3
|
|
6642
|
+
postcss-url: ^10.1.3
|
|
6643
|
+
prettier: 2.8.8
|
|
6644
|
+
slugify: ^1.6.6
|
|
6645
|
+
sortablejs: ^1.15.6
|
|
6646
|
+
stimulus-use: ^0.52.3
|
|
6647
|
+
stylelint: ^15.11.0
|
|
6648
|
+
stylelint-config-standard: ^31.0.0
|
|
6649
|
+
stylelint-order: ^6.0.4
|
|
6650
|
+
tom-select: ^2.2.2
|
|
6651
|
+
vitepress: ^1.6.4
|
|
6652
|
+
vitepress-plugin-llms: ^1.13.1
|
|
6653
|
+
languageName: unknown
|
|
6654
|
+
linkType: soft
|
|
6655
|
+
|
|
6656
6656
|
"trim-lines@npm:^3.0.0":
|
|
6657
6657
|
version: 3.0.1
|
|
6658
6658
|
resolution: "trim-lines@npm:3.0.1"
|
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: 0.
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Mohamed Bengrich
|
|
@@ -938,6 +938,7 @@ files:
|
|
|
938
938
|
- lib/generators/trek/templates/views/admin_mailer/invite.en.text.erb
|
|
939
939
|
- lib/generators/trek/templates/views/admin_mailer/invite.fr.html.slim
|
|
940
940
|
- lib/generators/trek/templates/views/admin_mailer/invite.fr.text.erb
|
|
941
|
+
- lib/generators/trek/upgrade/v2_generator.rb
|
|
941
942
|
- lib/trek.rb
|
|
942
943
|
- lib/trek/engine.rb
|
|
943
944
|
- lib/trek/i18n_keys_resolver.rb
|
|
@@ -950,10 +951,12 @@ files:
|
|
|
950
951
|
- trek.gemspec
|
|
951
952
|
- vendor/tom_select/css/tom-select.custom.css
|
|
952
953
|
- yarn.lock
|
|
953
|
-
homepage: https://etamin.studio
|
|
954
|
-
licenses:
|
|
954
|
+
homepage: https://trek.etamin.studio
|
|
955
|
+
licenses:
|
|
956
|
+
- MIT
|
|
955
957
|
metadata:
|
|
956
|
-
homepage_uri: https://etamin.studio
|
|
958
|
+
homepage_uri: https://trek.etamin.studio
|
|
959
|
+
documentation_uri: https://trek.etamin.studio
|
|
957
960
|
rdoc_options: []
|
|
958
961
|
require_paths:
|
|
959
962
|
- lib
|
|
@@ -968,7 +971,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
968
971
|
- !ruby/object:Gem::Version
|
|
969
972
|
version: '0'
|
|
970
973
|
requirements: []
|
|
971
|
-
rubygems_version: 4.0.
|
|
974
|
+
rubygems_version: 4.0.16
|
|
972
975
|
specification_version: 4
|
|
973
|
-
summary: A modern
|
|
976
|
+
summary: A modern content management & back-office system for Ruby on Rails
|
|
974
977
|
test_files: []
|