ultimate-jekyll-manager 1.5.0 → 1.6.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.
package/CHANGELOG.md CHANGED
@@ -14,6 +14,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
14
14
  - `Fixed` for any bug fixes.
15
15
  - `Security` in case of vulnerabilities.
16
16
 
17
+ ---
18
+ ## [1.6.0] - 2026-06-02
19
+
20
+ ### Changed
21
+
22
+ - **`getEnvironment()` is now the single source of truth for environment detection** (and `testing` is a first-class environment). [src/utils/mode-helpers.js](src/utils/mode-helpers.js) — `getEnvironment()` is the ONLY function that reads the raw signals (`UJ_TEST_MODE` / `window.Configuration.uj.environment` / `UJ_BUILD_MODE` / `UJ_IS_SERVER` / `NODE_ENV`) and resolves them to exactly one of `'development' | 'testing' | 'production'` (mutually exclusive; **testing wins**). `isDevelopment()` / `isProduction()` / `isTesting()` now **derive** from it, so they can never disagree and exactly one is always true. `isProduction()` is a real positive check, not `!isDevelopment()`. [src/build.js](src/build.js) drops its own `getEnvironment()` (now mixed in via `attachTo`). Doc renamed `cross-context-helpers.md` → [docs/environment-detection.md](docs/environment-detection.md).
23
+ - **Redirect delay now keys off non-production (dev OR testing), not dev-only.** [src/assets/js/modules/redirect.js](src/assets/js/modules/redirect.js) delays the redirect whenever `environment !== 'production'` so it's observable in tests too.
24
+ - **Footer language dropdown gates the extra-languages list on `translation.enabled`** (+ vertical-alignment fix). [footer.html](src/defaults/dist/_includes/themes/classy/frontend/sections/footer.html)
25
+
26
+ ### Added
27
+
28
+ - **`test/_init.js` pre-test lifecycle hook (setup-only).** [src/test/runner.js](src/test/runner.js) loads an optional `test/_init.js` from BOTH the framework and consumer test roots and runs its `setup()` once before any suite (the `_`-prefix keeps it out of discovery). Mirrors BEM/EM/BXM. Default scaffold at [src/defaults/test/_init.js](src/defaults/test/_init.js). [docs/test-framework.md](docs/test-framework.md) adds a "NEVER mock — test against the real harness" section + `_init.js` reference, and tests now assert the env invariant across every signal scenario.
29
+ - **`translation.exclude` config** — folder or page paths excluded from AI translation (added to both the files and folders match sets). Default [_config.yml](src/defaults/src/_config.yml) excludes `blog`. [src/gulp/tasks/translation.js](src/gulp/tasks/translation.js)
30
+ - **`setup` prunes legacy first-name-only default team members** (e.g. `team/alex`) and their image dirs via `removeLegacyTeamMembers()`. [src/commands/setup.js](src/commands/setup.js)
31
+ - **`npx mgr install live`** accepted as an alias for `prod`/`production`. [src/commands/install.js](src/commands/install.js); docs use `install dev` / `install live` consistently.
32
+
33
+ ### Fixed
34
+
35
+ - **Download buttons use a `[data-download]` hook** instead of the brittle `.btn-primary:not([type="submit"])` selector. [download.html](src/defaults/dist/_layouts/themes/classy/frontend/pages/download.html) + [download/index.js](src/assets/js/pages/download/index.js)
36
+ - **Feedback review modal:** $100 gift-card incentive + an explicit "you must actually post your review" warning, and copy normalized "Write a review" → "Post your review". [feedback.html](src/defaults/dist/_layouts/themes/classy/frontend/pages/feedback.html) + [feedback/index.js](src/assets/js/pages/feedback/index.js)
37
+ - Removed a leftover `package copy.json` from the repo root.
38
+
17
39
  ---
18
40
  ## [1.5.0] - 2026-06-02
19
41
 
@@ -17,12 +17,6 @@ export default () => {
17
17
  setupForm();
18
18
  setupRatingButtons();
19
19
 
20
- // TEMP: expose for manual modal testing — remove before commit
21
- window.__testReviewModal = () => showReviewModal('https://www.trustpilot.com/review/example.com', {
22
- positive: 'This product is amazing and saved me hours!',
23
- comments: 'Highly recommend to anyone.',
24
- });
25
-
26
20
  // Resolve after initialization
27
21
  return resolve();
28
22
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultimate-jekyll-manager",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Ultimate Jekyll dependency manager",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -1,75 +0,0 @@
1
- {
2
- "name": "ultimate-jekyll-manager",
3
- "version": "1.0.0",
4
- "description": "Ultimate Jekyll dependency manager",
5
- "main": "index.js",
6
- "scripts": {
7
-
8
- },
9
- "engines": {
10
- "node": ">=18.x"
11
- },
12
- "repository": {
13
- "type": "git",
14
- "url": "https://github.com/itw-creative-works/ultimate-jekyll.git"
15
- },
16
- "keywords": [
17
- "Autoprefixer",
18
- "Browsersync",
19
- "gulp",
20
- "imagemin",
21
- "Jekyll",
22
- "PostCSS",
23
- "Sass",
24
- "Webpack"
25
- ],
26
- "author": "ITW Creative Works",
27
- "license": "MIT",
28
- "bugs": {
29
- "url": "https://github.com/itw-creative-works/ultimate-jekyll/issues"
30
- },
31
- "homepage": "https://template.itwcreativeworks.com",
32
- "noteDeps": {
33
- "browser-sync": "2.23.7 (6-22-2023): Hard lock because every version after uses socket.io@4.7.0 which uses engine.io@6.5.0 which is incompatible with node 10.15.1 due to TextDecoder() in build process",
34
- "sharp": "0.23.1 (sometime before 2021ish): Hard lock because later versions had issues. Possibly solved in higher node versions"
35
- },
36
- "dependencies": {
37
- "@babel/core": "7.24.7",
38
- "@babel/preset-env": "7.24.7",
39
- "autoprefixer": "9.8.8",
40
- "browser-sync": "2.23.7",
41
- "del": "6.1.1",
42
- "eslint-config-google": "0.14.0",
43
- "eslint-webpack-plugin": "3.2.0",
44
- "event-stream": "4.0.1",
45
- "fs-jetpack": "4.3.1",
46
- "glob": "7.2.3",
47
- "gulp": "3.9.1",
48
- "gulp-babel": "8.0.0",
49
- "gulp-cached": "1.1.1",
50
- "gulp-eslint": "6.0.0",
51
- "gulp-newer": "1.4.0",
52
- "gulp-plumber": "1.2.1",
53
- "gulp-postcss": "9.0.1",
54
- "gulp-responsive": "3.0.1",
55
- "gulp-sass": "4.1.1",
56
- "gulp-watch": "5.0.1",
57
- "js-yaml": "4.1.0",
58
- "json5": "2.2.3",
59
- "mocha": "8.4.0",
60
- "node-fetch": "2.6.12",
61
- "require-dir": "1.2.0",
62
- "sharp": "0.23.1",
63
- "source-map-loader": "2.0.2",
64
- "terser-webpack-plugin": "5.3.10",
65
- "through2": "4.0.2",
66
- "ultimate-jekyll-poster": "1.0.1",
67
- "vinyl-named": "1.1.0",
68
- "web-manager": "3.2.60",
69
- "webpack": "5.89.0",
70
- "webpack-stream": "6.1.2",
71
- "wonderful-fetch": "1.1.12",
72
- "yargs": "16.2.0",
73
- "zzzzzzzzzz": "9.9.9"
74
- }
75
- }