ultimate-jekyll-manager 0.0.294 → 0.0.296

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/CLAUDE.md CHANGED
@@ -407,6 +407,48 @@ asset_path: blog/post
407
407
 
408
408
  Uses `/assets/css/pages/{{ asset_path }}.bundle.css` instead of deriving from `page.canonical.path`. Useful when multiple pages share assets (e.g., all blog posts).
409
409
 
410
+ ## Blog Post Images
411
+
412
+ ### Inline Images with `@post/` Shortcut
413
+
414
+ Blog posts use standard markdown syntax for inline images. The `@post/` prefix provides a shortcut to reference images in the post's own image directory:
415
+
416
+ ```markdown
417
+ ![Alt text](@post/my-image.jpg)
418
+ ```
419
+
420
+ This resolves at build time to `/assets/images/blog/post-{id}/my-image.jpg`, where `{id}` comes from the post's `post.id` frontmatter value.
421
+
422
+ **All image types work:**
423
+
424
+ | Syntax | Result |
425
+ |--------|--------|
426
+ | `![alt](@post/file.jpg)` | Local post image (shortcut) |
427
+ | `![alt](/assets/images/other.jpg)` | Absolute path (any image) |
428
+ | `![alt](https://example.com/img.jpg)` | External URL |
429
+
430
+ **How it works:** The `markdown-images.rb` hook in `jekyll-uj-powertools` intercepts `![alt](url)` patterns during `pre_render`, resolves `@post/` prefixes, then converts each image to a responsive `<picture>` element with WebP sources and lazy loading via `{% uj_image %}`.
431
+
432
+ **Image directory structure:** Images for post ID `42` live at `src/assets/images/blog/post-42/`.
433
+
434
+ **Image class customization:** Set via frontmatter:
435
+ ```yaml
436
+ ---
437
+ theme:
438
+ post:
439
+ image:
440
+ class: "img-fluid rounded-3 shadow my-5"
441
+ ---
442
+ ```
443
+
444
+ ### BEM `admin/post` Image Handling
445
+
446
+ When posts are created via BEM's `POST /admin/post` endpoint:
447
+ 1. External image URLs in the markdown body (e.g., Unsplash) are downloaded
448
+ 2. Images are uploaded to `src/assets/images/blog/post-{id}/` on GitHub
449
+ 3. The body is rewritten to use `@post/{filename}` format
450
+ 4. Failed downloads are skipped (original external URL preserved)
451
+
410
452
  ## Icon System
411
453
 
412
454
  Ultimate Jekyll uses Font Awesome icons but does NOT include the Font Awesome JavaScript or CSS library. All icons must be rendered server-side using Jekyll's `{% uj_icon %}` tag.
@@ -992,6 +1034,7 @@ When the form transitions to `ready` state, FormManager automatically focuses th
992
1034
  | `getInputGroup()` | Get current input group filter |
993
1035
  | `showSuccess(msg)` | Show success notification |
994
1036
  | `showError(msg)` | Show error notification |
1037
+ | `submit()` | Programmatically trigger form submission (fires native submit event) |
995
1038
  | `reset()` | Reset form and go to ready state |
996
1039
  | `isDirty()` | Check if form has unsaved changes |
997
1040
  | `setDirty(bool)` | Set dirty state |
@@ -946,6 +946,14 @@ export class FormManager {
946
946
  this._setState('ready');
947
947
  }
948
948
 
949
+ /**
950
+ * Programmatically trigger form submission
951
+ * Fires the native submit event so FormManager's _handleSubmit() processes it
952
+ */
953
+ submit() {
954
+ this.$form.requestSubmit();
955
+ }
956
+
949
957
  /**
950
958
  * Check if form has unsaved changes
951
959
  */
@@ -231,7 +231,7 @@ function generateBlogContent(images) {
231
231
  // Add local image every other section if we have images left
232
232
  if (i % 2 === 1 && imageIndex < contentImages.length) {
233
233
  const image = contentImages[imageIndex];
234
- content += `![${image.alt}](${image.path})\n\n`;
234
+ content += `![${image.alt}](@post/${path.basename(image.path)})\n\n`;
235
235
  imageIndex++;
236
236
  }
237
237
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultimate-jekyll-manager",
3
- "version": "0.0.294",
3
+ "version": "0.0.296",
4
4
  "description": "Ultimate Jekyll dependency manager",
5
5
  "main": "dist/index.js",
6
6
  "exports": {
@@ -71,13 +71,13 @@
71
71
  "@popperjs/core": "^2.11.8",
72
72
  "@prettier/plugin-xml": "^3.4.2",
73
73
  "adm-zip": "^0.5.16",
74
- "babel-loader": "^10.1.0",
74
+ "babel-loader": "^10.1.1",
75
75
  "browser-sync": "^3.0.4",
76
76
  "chalk": "^5.6.2",
77
77
  "cheerio": "^1.2.0",
78
78
  "chrome-launcher": "^1.2.1",
79
79
  "dotenv": "^17.3.1",
80
- "fast-xml-parser": "^5.4.2",
80
+ "fast-xml-parser": "^5.5.1",
81
81
  "fs-jetpack": "^5.1.0",
82
82
  "glob": "^13.0.6",
83
83
  "gulp-clean-css": "^4.3.0",
@@ -98,10 +98,10 @@
98
98
  "npm-api": "^1.0.1",
99
99
  "postcss": "^8.5.8",
100
100
  "prettier": "^3.8.1",
101
- "sass": "^1.97.3",
101
+ "sass": "^1.98.0",
102
102
  "spellchecker": "^3.7.1",
103
103
  "through2": "^4.0.2",
104
- "web-manager": "^4.1.15",
104
+ "web-manager": "^4.1.18",
105
105
  "webpack": "^5.105.4",
106
106
  "wonderful-fetch": "^1.3.4",
107
107
  "wonderful-version": "^1.3.2",