releasehx 0.1.1 → 0.2.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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +366 -331
  3. data/build/docs/_config.yml +18 -1
  4. data/build/docs/_release_index.adoc +10 -0
  5. data/build/docs/config-reference.adoc +203 -16
  6. data/build/docs/config-reference.json +60 -10
  7. data/build/docs/index.adoc +316 -59
  8. data/build/docs/landing.adoc +11 -4
  9. data/build/docs/manpage.adoc +2 -2
  10. data/build/docs/release-procedure.adoc +365 -0
  11. data/build/docs/release-procedure.html +87 -0
  12. data/build/docs/releasehx.1 +17 -5
  13. data/build/docs/releases.adoc +28 -0
  14. data/build/docs/sample-config.adoc +2 -0
  15. data/build/docs/sample-config.yml +16 -9
  16. data/lib/releasehx/cli.rb +21 -9
  17. data/lib/releasehx/configuration.rb +0 -1
  18. data/lib/releasehx/generated.rb +1 -1
  19. data/lib/releasehx/mcp/assets/agent-config-guide.md +1 -1
  20. data/lib/releasehx/mcp/assets/config-def.yml +126 -8
  21. data/lib/releasehx/mcp/assets/config-reference.adoc +203 -16
  22. data/lib/releasehx/mcp/assets/config-reference.json +60 -10
  23. data/lib/releasehx/mcp/assets/sample-config.yml +16 -9
  24. data/lib/releasehx/mcp/server.rb +0 -1
  25. data/lib/releasehx/ops/enrich_ops.rb +161 -55
  26. data/lib/releasehx/ops/template_ops.rb +1 -1
  27. data/lib/releasehx/rhyml/adapter.rb +13 -9
  28. data/lib/releasehx/rhyml/mappings/github.yaml +3 -1
  29. data/lib/releasehx/rhyml/templates/bootstrap-overrides.css +15 -0
  30. data/lib/releasehx/rhyml/templates/changelog.adoc.liquid +2 -0
  31. data/lib/releasehx/rhyml/templates/changelog.html.liquid +6 -4
  32. data/lib/releasehx/rhyml/templates/changelog.md.liquid +1 -0
  33. data/lib/releasehx/rhyml/templates/embedded.css.liquid +263 -0
  34. data/lib/releasehx/rhyml/templates/entry.adoc.liquid +4 -7
  35. data/lib/releasehx/rhyml/templates/entry.html.liquid +21 -20
  36. data/lib/releasehx/rhyml/templates/entry.md.liquid +14 -21
  37. data/lib/releasehx/rhyml/templates/head-parser.liquid +6 -2
  38. data/lib/releasehx/rhyml/templates/header.liquid +13 -4
  39. data/lib/releasehx/rhyml/templates/history.html.liquid +152 -33
  40. data/lib/releasehx/rhyml/templates/metadata-entry.adoc.liquid +83 -49
  41. data/lib/releasehx/rhyml/templates/metadata-entry.html.liquid +60 -1
  42. data/lib/releasehx/rhyml/templates/metadata-entry.md.liquid +65 -113
  43. data/lib/releasehx/rhyml/templates/metadata-note.adoc.liquid +83 -49
  44. data/lib/releasehx/rhyml/templates/metadata-note.html.liquid +59 -22
  45. data/lib/releasehx/rhyml/templates/metadata-note.md.liquid +68 -23
  46. data/lib/releasehx/rhyml/templates/note.adoc.liquid +2 -40
  47. data/lib/releasehx/rhyml/templates/note.html.liquid +25 -19
  48. data/lib/releasehx/rhyml/templates/note.md.liquid +43 -29
  49. data/lib/releasehx/rhyml/templates/parts-listing.liquid +6 -6
  50. data/lib/releasehx/rhyml/templates/release-notes.adoc.liquid +2 -0
  51. data/lib/releasehx/rhyml/templates/release-notes.html.liquid +6 -4
  52. data/lib/releasehx/rhyml/templates/release-notes.md.liquid +1 -0
  53. data/lib/releasehx/rhyml/templates/release.adoc.liquid +2 -0
  54. data/lib/releasehx/rhyml/templates/release.md.liquid +8 -7
  55. data/lib/releasehx/rhyml/templates/rhyml-change.yaml.liquid +36 -35
  56. data/lib/releasehx/rhyml/templates/wrapper.html.liquid +103 -0
  57. data/lib/releasehx/sgyml/helpers.rb +0 -2
  58. data/lib/releasehx/transforms/adf_to_markdown.rb +1 -1
  59. data/lib/releasehx/version.rb +0 -2
  60. data/lib/releasehx.rb +2 -2
  61. data/specs/data/config-def.yml +126 -8
  62. metadata +50 -26
  63. data/build/docs/Gemfile.lock +0 -95
  64. data/build/docs/schemagraphy_readme.html +0 -0
  65. data/build/docs/sourcerer_readme.html +0 -46
  66. data/lib/schemagraphy/attribute_resolver.rb +0 -48
  67. data/lib/schemagraphy/cfgyml/definition.rb +0 -90
  68. data/lib/schemagraphy/cfgyml/doc_builder.rb +0 -52
  69. data/lib/schemagraphy/cfgyml/path_reference.rb +0 -24
  70. data/lib/schemagraphy/data_query/json_pointer.rb +0 -42
  71. data/lib/schemagraphy/loader.rb +0 -59
  72. data/lib/schemagraphy/regexp_utils.rb +0 -215
  73. data/lib/schemagraphy/safe_expression.rb +0 -189
  74. data/lib/schemagraphy/schema_utils.rb +0 -124
  75. data/lib/schemagraphy/tag_utils.rb +0 -32
  76. data/lib/schemagraphy/templating.rb +0 -104
  77. data/lib/schemagraphy.rb +0 -17
  78. data/lib/sourcerer/builder.rb +0 -120
  79. data/lib/sourcerer/jekyll/bootstrapper.rb +0 -78
  80. data/lib/sourcerer/jekyll/liquid/file_system.rb +0 -74
  81. data/lib/sourcerer/jekyll/liquid/filters.rb +0 -215
  82. data/lib/sourcerer/jekyll/liquid/tags.rb +0 -44
  83. data/lib/sourcerer/jekyll/monkeypatches.rb +0 -73
  84. data/lib/sourcerer/jekyll.rb +0 -26
  85. data/lib/sourcerer/plaintext_converter.rb +0 -75
  86. data/lib/sourcerer/templating.rb +0 -190
  87. data/lib/sourcerer.rb +0 -322
@@ -4,12 +4,24 @@ baseurl: /
4
4
 
5
5
  plugins:
6
6
  - jekyll-asciidoc
7
+ - jekyll-redirect-from
8
+
9
+ collections:
10
+ releases:
11
+ output: true
12
+ permalink: /docs/releases/:name/
7
13
 
8
14
  defaults:
9
15
  - scope:
10
- path: "api"
16
+ path: "docs/api"
11
17
  values:
12
18
  render_with_liquid: false
19
+ - scope:
20
+ path: ""
21
+ type: "releases"
22
+ values:
23
+ layout: default
24
+ nav_exclude: true
13
25
 
14
26
  include:
15
27
  - index.adoc
@@ -17,6 +29,11 @@ include:
17
29
 
18
30
  exclude:
19
31
  - manpage.adoc
32
+ - jekyll/
33
+ - payloads/
34
+ - release/
35
+ - yard/
36
+ - release-procedure.adoc
20
37
 
21
38
  # Enable Rouge for syntax highlighting in AsciiDoc blocks
22
39
  asciidoctor:
@@ -0,0 +1,10 @@
1
+ == Available Releases
2
+
3
+ Each release includes detailed notes about new features, improvements, bug fixes, and breaking changes.
4
+
5
+ * link:../release/0.2.0[0.2.0] - 2026-05-27
6
+ * link:../release/0.1.2[0.1.2] - 2026-01-30
7
+
8
+ == Latest Release
9
+
10
+ include::release/0.2.0.adoc[leveloffset=+1]
@@ -1,7 +1,4 @@
1
- :page-layout: default
2
- :page-permalink: /config-reference/
3
- :page-nav_order: 2
4
- :page-title: Configuration Reference
1
+
5
2
 
6
3
  [[conf_ppty_DOLLARSIGN_meta,config.$meta]]
7
4
  $meta::
@@ -359,6 +356,9 @@ Defaults to `issue_body` for GitHub and GitLab, but to `custom_field` for Jira.
359
356
 
360
357
  [horizontal]
361
358
  type;; String
359
+ default;;
360
+ +
361
+ `+++issue_body+++`
362
362
  path;; `xref:conf_ppty_conversions_note[config.conversions.note]`
363
363
  --
364
364
 
@@ -395,7 +395,7 @@ type;; RegExp
395
395
  default;;
396
396
  +
397
397
  ....
398
- /^((#|=)+ (Draft )?Release Note.*)|(<!-- (draft )?release note -->)\n(?<note>\w(.|\n)+)/gmi
398
+ /^(((#|=)+ (Draft )?Release Note.*?)|(<!-- (draft )?release note -->))\n+(?<note>(.| )+)/gmi
399
399
  ....
400
400
  path;; `xref:conf_ppty_conversions_note_pattern[config.conversions.note_pattern]`
401
401
  --
@@ -438,18 +438,80 @@ default;;
438
438
  path;; `xref:conf_ppty_conversions_markup[config.conversions.markup]`
439
439
  --
440
440
 
441
- [[conf_ppty_conversions_engine,config.conversions.engine]]
442
- conversions.engine:::
441
+ [[conf_ppty_conversions_engines,config.conversions.engines]]
442
+ conversions.engines:::
443
+ +
444
+ --
445
+ Specifies the conversion engines to use when enriching to various output formats.
446
+
447
+ These settings determine which tool processes the conversion from draft formats to rich output.
448
+ Intelligent defaults are applied based on source format when engines are not explicitly configured.
449
+
450
+
451
+ [horizontal]
452
+ path;; `xref:conf_ppty_conversions_engines[config.conversions.engines]`
453
+ --
454
+
455
+ [[conf_ppty_conversions_engines_html,config.conversions.engines.html]]
456
+ conversions.engines.html::::
457
+ +
458
+ --
459
+ Engine for converting to HTML format.
460
+
461
+ Valid engines:
462
+
463
+ [horizontal]
464
+ `asciidoctor-html5`:: Standard Asciidoctor HTML5 backend (nested div structure)
465
+ `asciidoctor-html5s`:: Semantic HTML5 backend (cleaner section-based markup)
466
+ `kramdown`:: Kramdown Markdown converter (for Markdown sources)
467
+ `pandoc`:: Universal document converter (if available)
468
+
469
+ When not specified, intelligent defaults apply:
470
+
471
+ - AsciiDoc → HTML: `asciidoctor-html5s` (semantic HTML5)
472
+ - Markdown → HTML: `kramdown`
473
+ - RHYML → HTML: Liquid templates (no engine needed)
474
+
475
+ The html5s backend produces cleaner, more semantic HTML with `<section>` elements
476
+ instead of nested `<div class="sect1"><div class="sectionbody">` structures.
477
+
478
+ This is particularly useful when you want to apply custom CSS or when generating
479
+ HTML that will be further processed or embedded in other systems.
480
+
481
+ For backwards compatibility or when you need the traditional Asciidoctor structure,
482
+ use `asciidoctor-html5`.
483
+
484
+
485
+ [horizontal]
486
+ type;; String
487
+ path;; `xref:conf_ppty_conversions_engines_html[config.conversions.engines.html]`
488
+ --
489
+
490
+ [[conf_ppty_conversions_engines_pdf,config.conversions.engines.pdf]]
491
+ conversions.engines.pdf::::
443
492
  +
444
493
  --
445
- The markup converter to use for the issues.
446
- Defaults to `asciidoctor` for AsciiDoc and `redcarpet` for Markdown.
447
- Options include `asciidoctor`, `redcarpet`, `commonmarker`, `kramdown`, or `pandoc`.
494
+ Engine for converting to PDF format.
495
+
496
+ Valid engines:
497
+
498
+ [horizontal]
499
+ `asciidoctor-pdf`:: Asciidoctor PDF converter (default for AsciiDoc)
500
+ `asciidoctor-web-pdf`:: Web-based PDF converter using headless Chrome
501
+ `pandoc`:: Universal document converter (if available)
502
+
503
+ When not specified, intelligent defaults apply:
504
+
505
+ - AsciiDoc → PDF: `asciidoctor-pdf`
506
+ - Markdown → PDF: `pandoc` (if available)
507
+
508
+ The default `asciidoctor-pdf` engine provides excellent typography and layout
509
+ for technical documentation with support for themes, fonts, and advanced formatting.
448
510
 
449
511
 
450
512
  [horizontal]
451
513
  type;; String
452
- path;; `xref:conf_ppty_conversions_engine[config.conversions.engine]`
514
+ path;; `xref:conf_ppty_conversions_engines_pdf[config.conversions.engines.pdf]`
453
515
  --
454
516
 
455
517
  [[conf_ppty_extensions,config.extensions]]
@@ -2497,8 +2559,8 @@ Default settings for `rhx` command executions.
2497
2559
  path;; `xref:conf_ppty_modes[config.modes]`
2498
2560
  --
2499
2561
 
2500
- [[conf_ppty_modes_wrapped,config.modes.wrapped]]
2501
- modes.wrapped:::
2562
+ [[conf_ppty_modes_html_wrap,config.modes.html_wrap]]
2563
+ modes.html_wrap:::
2502
2564
  +
2503
2565
  --
2504
2566
  Include (or exclude) head, header, and footer elements when enriching to HTML.
@@ -2509,7 +2571,7 @@ type;; Boolean
2509
2571
  default;;
2510
2572
  +
2511
2573
  `+++false+++`
2512
- path;; `xref:conf_ppty_modes_wrapped[config.modes.wrapped]`
2574
+ path;; `xref:conf_ppty_modes_html_wrap[config.modes.html_wrap]`
2513
2575
  --
2514
2576
 
2515
2577
  [[conf_ppty_modes_html_frontmatter,config.modes.html_frontmatter]]
@@ -2557,6 +2619,9 @@ Uses the `templates.asciidoc_frontmatter` template.
2557
2619
 
2558
2620
  [horizontal]
2559
2621
  type;; Boolean
2622
+ default;;
2623
+ +
2624
+ `+++false+++`
2560
2625
  path;; `xref:conf_ppty_modes_asciidoc_frontmatter[config.modes.asciidoc_frontmatter]`
2561
2626
  --
2562
2627
 
@@ -2871,6 +2936,128 @@ date: {{ release.date }}
2871
2936
  path;; `xref:conf_ppty_history_html_frontmatter[config.history.html_frontmatter]`
2872
2937
  --
2873
2938
 
2939
+ [[conf_ppty_history_html_framework,config.history.html_framework]]
2940
+ history.html_framework:::
2941
+ +
2942
+ --
2943
+ The HTML framework to use when enriching to HTML.
2944
+
2945
+ Valid entries:
2946
+
2947
+ [horizontal]
2948
+ `bare`:: minimal HTML structure
2949
+ `bootstrap4`:: Bootstrap 4 framework
2950
+ `bootstrap5`:: Bootstrap 5 framework
2951
+
2952
+
2953
+ [horizontal]
2954
+ type;; String
2955
+ default;;
2956
+ +
2957
+ `+++bare+++`
2958
+ path;; `xref:conf_ppty_history_html_framework[config.history.html_framework]`
2959
+ --
2960
+
2961
+ [[conf_ppty_history_styling,config.history.styling]]
2962
+ history.styling:::
2963
+ +
2964
+ --
2965
+ Configuration options for HTML styling and CSS framework integration.
2966
+
2967
+
2968
+ [horizontal]
2969
+ path;; `xref:conf_ppty_history_styling[config.history.styling]`
2970
+ --
2971
+
2972
+ [[conf_ppty_history_styling_mode,config.history.styling.mode]]
2973
+ history.styling.mode::::
2974
+ +
2975
+ --
2976
+ The HTML styling approach to use when generating wrapped HTML output.
2977
+
2978
+ Valid options:
2979
+
2980
+ * `minimal` -- Basic semantic HTML with minimal inline styles
2981
+ * `embedded` -- Include comprehensive CSS in `<style>` block
2982
+ * `external` -- Reference external stylesheet via `<link>` tag
2983
+ * `framework` -- Use configured CSS framework only (Bootstrap, etc.)
2984
+
2985
+ When `mode: framework`, styling relies entirely on the configured CSS framework.
2986
+ When `mode: embedded`, CSS is included inline for standalone HTML files.
2987
+ When `mode: external`, a custom CSS file must be provided via `css_url`.
2988
+
2989
+
2990
+ [horizontal]
2991
+ type;; String
2992
+ default;;
2993
+ +
2994
+ `+++framework+++`
2995
+ path;; `xref:conf_ppty_history_styling_mode[config.history.styling.mode]`
2996
+ --
2997
+
2998
+ [[conf_ppty_history_styling_theme,config.history.styling.theme]]
2999
+ history.styling.theme::::
3000
+ +
3001
+ --
3002
+ The visual theme variant to apply to HTML output.
3003
+
3004
+ Built-in themes:
3005
+
3006
+ * `default` -- Standard professional appearance
3007
+ * `compact` -- Reduced spacing and condensed layout
3008
+ * `detailed` -- Enhanced metadata display with expanded information
3009
+
3010
+ Theme selection affects spacing, typography, and metadata prominence.
3011
+
3012
+
3013
+ [horizontal]
3014
+ type;; String
3015
+ default;;
3016
+ +
3017
+ `+++default+++`
3018
+ path;; `xref:conf_ppty_history_styling_theme[config.history.styling.theme]`
3019
+ --
3020
+
3021
+ [[conf_ppty_history_styling_embed_css,config.history.styling.embed_css]]
3022
+ history.styling.embed_css::::
3023
+ +
3024
+ --
3025
+ Include comprehensive CSS directly in the HTML `<style>` block.
3026
+
3027
+ When enabled, generates standalone HTML files that display correctly
3028
+ without external dependencies. CSS includes framework customizations,
3029
+ responsive design rules, and print optimizations.
3030
+
3031
+ Automatically enabled when `mode: embedded`.
3032
+
3033
+
3034
+ [horizontal]
3035
+ type;; Boolean
3036
+ default;;
3037
+ +
3038
+ `+++false+++`
3039
+ path;; `xref:conf_ppty_history_styling_embed_css[config.history.styling.embed_css]`
3040
+ --
3041
+
3042
+ [[conf_ppty_history_styling_css_url,config.history.styling.css_url]]
3043
+ history.styling.css_url::::
3044
+ +
3045
+ --
3046
+ URL or path to external CSS stylesheet for custom styling.
3047
+
3048
+ When `mode: external`, this stylesheet is linked via `<link rel="stylesheet">`.
3049
+ Can be a relative path, absolute URL, or CDN link.
3050
+
3051
+ Example: `assets/custom-releasehx.css` or `https://example.com/styles.css`
3052
+
3053
+ When provided, framework CSS and embedded CSS are disabled.
3054
+
3055
+
3056
+ [horizontal]
3057
+ type;; String
3058
+ path;; `xref:conf_ppty_history_styling_css_url[config.history.styling.css_url]`
3059
+ --
3060
+
2874
3061
  [[conf_ppty_history_items,config.history.items]]
2875
3062
  history.items:::
2876
3063
  +
@@ -3161,7 +3348,7 @@ This value will apply either when <<conf_ppty_rhyml_max_parts>> is set to `1` or
3161
3348
  type;; String
3162
3349
  default;;
3163
3350
  +
3164
- `+++Part+++`
3351
+ `+++Component+++`
3165
3352
  path;; `xref:conf_ppty_history_labeling_part_label[config.history.labeling.part_label]`
3166
3353
  --
3167
3354
 
@@ -4101,4 +4288,4 @@ default;;
4101
4288
  +
4102
4289
  `+++false+++`
4103
4290
  path;; `xref:conf_ppty_notes_items_show_auths_label[config.notes.items.show_auths_label]`
4104
- --
4291
+ --
@@ -129,7 +129,8 @@
129
129
  "note": {
130
130
  "path": "conversions.note",
131
131
  "desc": "The source of the release notes content.\nMust be `issue_body`, `custom_field`, or `commit_message`.\n\nDefaults to `issue_body` for GitHub and GitLab, but to `custom_field` for Jira.\n",
132
- "type": "String"
132
+ "type": "String",
133
+ "default": "issue_body"
133
134
  },
134
135
  "note_custom_field": {
135
136
  "path": "conversions.note_custom_field",
@@ -140,7 +141,7 @@
140
141
  "path": "conversions.note_pattern",
141
142
  "desc": "The Regular Expressions pattern to match in the body of an issue or commit message, after which all content is considered the release `note` matter.\n\nDefaults to a Markdown or AsciiDoc header or HTML comment with the case-insensitive string `release note` in it.\n\nUses Capture group `note` in the Regular Expression to establish the entire note content.\n\nSee the `conversions.head_pattern` property for details on extracting a heading (`head` in RHYML) from the `note` content.\n",
142
143
  "type": "RegExp",
143
- "default": "/^((#|=)+ (Draft )?Release Note.*)|(<!-- (draft )?release note -->)\\n(?<note>\\w(.|\\n)+)/gmi"
144
+ "default": "/^(((#|=)+ (Draft )?Release Note.*?)|(<!-- (draft )?release note -->))\\n+(?<note>(.| )+)/gmi"
144
145
  },
145
146
  "head_pattern": {
146
147
  "path": "conversions.head_pattern",
@@ -154,10 +155,23 @@
154
155
  "type": "String",
155
156
  "default": "markdown"
156
157
  },
157
- "engine": {
158
- "path": "conversions.engine",
159
- "desc": "The markup converter to use for the issues.\nDefaults to `asciidoctor` for AsciiDoc and `redcarpet` for Markdown.\nOptions include `asciidoctor`, `redcarpet`, `commonmarker`, `kramdown`, or `pandoc`.\n",
160
- "type": "String"
158
+ "engines": {
159
+ "path": "conversions.engines",
160
+ "desc": "Specifies the conversion engines to use when enriching to various output formats.\n\nThese settings determine which tool processes the conversion from draft formats to rich output.\nIntelligent defaults are applied based on source format when engines are not explicitly configured.\n",
161
+ "properties": {
162
+ "html": {
163
+ "path": "conversions.engines.html",
164
+ "desc": "Engine for converting to HTML format.\n\nValid engines:\n\n[horizontal]\n`asciidoctor-html5`:: Standard Asciidoctor HTML5 backend (nested div structure)\n`asciidoctor-html5s`:: Semantic HTML5 backend (cleaner section-based markup)\n`kramdown`:: Kramdown Markdown converter (for Markdown sources)\n`pandoc`:: Universal document converter (if available)\n\nWhen not specified, intelligent defaults apply:\n\n- AsciiDoc → HTML: `asciidoctor-html5s` (semantic HTML5)\n- Markdown → HTML: `kramdown`\n- RHYML → HTML: Liquid templates (no engine needed)\n",
165
+ "docs": "The html5s backend produces cleaner, more semantic HTML with `<section>` elements\ninstead of nested `<div class=\"sect1\"><div class=\"sectionbody\">` structures.\n\nThis is particularly useful when you want to apply custom CSS or when generating\nHTML that will be further processed or embedded in other systems.\n\nFor backwards compatibility or when you need the traditional Asciidoctor structure,\nuse `asciidoctor-html5`.\n",
166
+ "type": "String"
167
+ },
168
+ "pdf": {
169
+ "path": "conversions.engines.pdf",
170
+ "desc": "Engine for converting to PDF format.\n\nValid engines:\n\n[horizontal]\n`asciidoctor-pdf`:: Asciidoctor PDF converter (default for AsciiDoc)\n`asciidoctor-web-pdf`:: Web-based PDF converter using headless Chrome\n`pandoc`:: Universal document converter (if available)\n\nWhen not specified, intelligent defaults apply:\n\n- AsciiDoc → PDF: `asciidoctor-pdf`\n- Markdown → PDF: `pandoc` (if available)\n",
171
+ "docs": "The default `asciidoctor-pdf` engine provides excellent typography and layout\nfor technical documentation with support for themes, fonts, and advanced formatting.\n",
172
+ "type": "String"
173
+ }
174
+ }
161
175
  }
162
176
  }
163
177
  },
@@ -995,8 +1009,8 @@
995
1009
  "path": "modes",
996
1010
  "desc": "Default settings for `rhx` command executions.\n",
997
1011
  "properties": {
998
- "wrapped": {
999
- "path": "modes.wrapped",
1012
+ "html_wrap": {
1013
+ "path": "modes.html_wrap",
1000
1014
  "desc": "Include (or exclude) head, header, and footer elements when enriching to HTML.\n",
1001
1015
  "type": "Boolean",
1002
1016
  "default": false
@@ -1016,7 +1030,8 @@
1016
1030
  "asciidoc_frontmatter": {
1017
1031
  "path": "modes.asciidoc_frontmatter",
1018
1032
  "desc": "Include frontmatter in AsciiDoc drafts.\n\nUses the `templates.asciidoc_frontmatter` template.\n",
1019
- "type": "Boolean"
1033
+ "type": "Boolean",
1034
+ "default": false
1020
1035
  },
1021
1036
  "fetch": {
1022
1037
  "path": "modes.fetch",
@@ -1125,6 +1140,41 @@
1125
1140
  "type": "Liquid",
1126
1141
  "default": "---\ntitle: Release History for {{ release.code }}\nversion: {{ release.code }}\ndate: {{ release.date }}\n---\n"
1127
1142
  },
1143
+ "html_framework": {
1144
+ "path": "history.html_framework",
1145
+ "desc": "The HTML framework to use when enriching to HTML.\n\nValid entries:\n\n[horizontal]\n`bare`:: minimal HTML structure\n`bootstrap4`:: Bootstrap 4 framework\n`bootstrap5`:: Bootstrap 5 framework\n",
1146
+ "type": "String",
1147
+ "default": "bare"
1148
+ },
1149
+ "styling": {
1150
+ "path": "history.styling",
1151
+ "desc": "Configuration options for HTML styling and CSS framework integration.\n",
1152
+ "properties": {
1153
+ "mode": {
1154
+ "path": "history.styling.mode",
1155
+ "desc": "The HTML styling approach to use when generating wrapped HTML output.\n\nValid options:\n\n* `minimal` -- Basic semantic HTML with minimal inline styles\n* `embedded` -- Include comprehensive CSS in `<style>` block \n* `external` -- Reference external stylesheet via `<link>` tag\n* `framework` -- Use configured CSS framework only (Bootstrap, etc.)\n\nWhen `mode: framework`, styling relies entirely on the configured CSS framework.\nWhen `mode: embedded`, CSS is included inline for standalone HTML files.\nWhen `mode: external`, a custom CSS file must be provided via `css_url`.\n",
1156
+ "type": "String",
1157
+ "default": "framework"
1158
+ },
1159
+ "theme": {
1160
+ "path": "history.styling.theme",
1161
+ "desc": "The visual theme variant to apply to HTML output.\n\nBuilt-in themes:\n\n* `default` -- Standard professional appearance\n* `compact` -- Reduced spacing and condensed layout\n* `detailed` -- Enhanced metadata display with expanded information\n\nTheme selection affects spacing, typography, and metadata prominence.\n",
1162
+ "type": "String",
1163
+ "default": "default"
1164
+ },
1165
+ "embed_css": {
1166
+ "path": "history.styling.embed_css",
1167
+ "desc": "Include comprehensive CSS directly in the HTML `<style>` block.\n\nWhen enabled, generates standalone HTML files that display correctly\nwithout external dependencies. CSS includes framework customizations,\nresponsive design rules, and print optimizations.\n\nAutomatically enabled when `mode: embedded`.\n",
1168
+ "type": "Boolean",
1169
+ "default": false
1170
+ },
1171
+ "css_url": {
1172
+ "path": "history.styling.css_url",
1173
+ "desc": "URL or path to external CSS stylesheet for custom styling.\n\nWhen `mode: external`, this stylesheet is linked via `<link rel=\"stylesheet\">`.\nCan be a relative path, absolute URL, or CDN link.\n\nExample: `assets/custom-releasehx.css` or `https://example.com/styles.css`\n\nWhen provided, framework CSS and embedded CSS are disabled.\n",
1174
+ "type": "String"
1175
+ }
1176
+ }
1177
+ },
1128
1178
  "items": {
1129
1179
  "path": "history.items",
1130
1180
  "desc": "Settings pertaining to displayed items across Changelog and Release Notes sections.\n\nMost of these settings can be defined separately for each section under <<conf_ppty_changelog_items>> and <<conf_ppty_notes_items>>.\nIf an identically named setting exists, it will override the primary designator defined in this `config.history.items` block.\n",
@@ -1228,7 +1278,7 @@
1228
1278
  "path": "history.labeling.part_label",
1229
1279
  "desc": "The label to use for the _singular_ part/component affected by the change, when only one part is permitted.\n\nThis value will apply either when <<conf_ppty_rhyml_max_parts>> is set to `1` or when the change has only one part _and_ <<conf_ppty_history_labeling_singularize_labels>> is `true`.\n",
1230
1280
  "type": "String",
1231
- "default": "Part"
1281
+ "default": "Component"
1232
1282
  },
1233
1283
  "parts_icon": {
1234
1284
  "path": "history.labeling.parts_icon",