releasehx 0.1.2 → 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 (81) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +363 -330
  3. data/build/docs/_config.yml +1 -0
  4. data/build/docs/_release_index.adoc +3 -2
  5. data/build/docs/config-reference.adoc +197 -10
  6. data/build/docs/config-reference.json +56 -7
  7. data/build/docs/index.adoc +315 -59
  8. data/build/docs/landing.adoc +1 -1
  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/sample-config.yml +14 -7
  14. data/lib/releasehx/cli.rb +5 -2
  15. data/lib/releasehx/configuration.rb +0 -1
  16. data/lib/releasehx/generated.rb +1 -1
  17. data/lib/releasehx/mcp/assets/agent-config-guide.md +1 -1
  18. data/lib/releasehx/mcp/assets/config-def.yml +122 -6
  19. data/lib/releasehx/mcp/assets/config-reference.adoc +197 -10
  20. data/lib/releasehx/mcp/assets/config-reference.json +56 -7
  21. data/lib/releasehx/mcp/assets/sample-config.yml +14 -7
  22. data/lib/releasehx/mcp/server.rb +0 -1
  23. data/lib/releasehx/ops/enrich_ops.rb +161 -55
  24. data/lib/releasehx/ops/template_ops.rb +1 -1
  25. data/lib/releasehx/rhyml/adapter.rb +0 -3
  26. data/lib/releasehx/rhyml/templates/bootstrap-overrides.css +15 -0
  27. data/lib/releasehx/rhyml/templates/changelog.adoc.liquid +2 -0
  28. data/lib/releasehx/rhyml/templates/changelog.html.liquid +6 -4
  29. data/lib/releasehx/rhyml/templates/changelog.md.liquid +1 -0
  30. data/lib/releasehx/rhyml/templates/embedded.css.liquid +263 -0
  31. data/lib/releasehx/rhyml/templates/entry.adoc.liquid +1 -0
  32. data/lib/releasehx/rhyml/templates/entry.html.liquid +21 -20
  33. data/lib/releasehx/rhyml/templates/entry.md.liquid +15 -21
  34. data/lib/releasehx/rhyml/templates/head-parser.liquid +6 -2
  35. data/lib/releasehx/rhyml/templates/header.liquid +13 -4
  36. data/lib/releasehx/rhyml/templates/history.html.liquid +152 -33
  37. data/lib/releasehx/rhyml/templates/metadata-entry.adoc.liquid +83 -38
  38. data/lib/releasehx/rhyml/templates/metadata-entry.html.liquid +60 -1
  39. data/lib/releasehx/rhyml/templates/metadata-entry.md.liquid +65 -113
  40. data/lib/releasehx/rhyml/templates/metadata-note.adoc.liquid +83 -38
  41. data/lib/releasehx/rhyml/templates/metadata-note.html.liquid +59 -22
  42. data/lib/releasehx/rhyml/templates/metadata-note.md.liquid +68 -23
  43. data/lib/releasehx/rhyml/templates/note.html.liquid +25 -19
  44. data/lib/releasehx/rhyml/templates/note.md.liquid +44 -26
  45. data/lib/releasehx/rhyml/templates/release-notes.adoc.liquid +2 -0
  46. data/lib/releasehx/rhyml/templates/release-notes.html.liquid +6 -4
  47. data/lib/releasehx/rhyml/templates/release-notes.md.liquid +1 -0
  48. data/lib/releasehx/rhyml/templates/release.adoc.liquid +2 -0
  49. data/lib/releasehx/rhyml/templates/release.md.liquid +8 -7
  50. data/lib/releasehx/rhyml/templates/rhyml-change.yaml.liquid +36 -36
  51. data/lib/releasehx/rhyml/templates/wrapper.html.liquid +103 -0
  52. data/lib/releasehx/sgyml/helpers.rb +0 -2
  53. data/lib/releasehx/transforms/adf_to_markdown.rb +1 -1
  54. data/lib/releasehx/version.rb +0 -2
  55. data/lib/releasehx.rb +2 -2
  56. data/specs/data/config-def.yml +122 -6
  57. metadata +48 -25
  58. data/build/docs/schemagraphy_readme.html +0 -0
  59. data/build/docs/sourcerer_readme.html +0 -46
  60. data/lib/schemagraphy/attribute_resolver.rb +0 -48
  61. data/lib/schemagraphy/cfgyml/definition.rb +0 -90
  62. data/lib/schemagraphy/cfgyml/doc_builder.rb +0 -52
  63. data/lib/schemagraphy/cfgyml/path_reference.rb +0 -24
  64. data/lib/schemagraphy/data_query/json_pointer.rb +0 -42
  65. data/lib/schemagraphy/loader.rb +0 -59
  66. data/lib/schemagraphy/regexp_utils.rb +0 -235
  67. data/lib/schemagraphy/safe_expression.rb +0 -189
  68. data/lib/schemagraphy/schema_utils.rb +0 -124
  69. data/lib/schemagraphy/tag_utils.rb +0 -32
  70. data/lib/schemagraphy/templating.rb +0 -104
  71. data/lib/schemagraphy.rb +0 -17
  72. data/lib/sourcerer/builder.rb +0 -120
  73. data/lib/sourcerer/jekyll/bootstrapper.rb +0 -78
  74. data/lib/sourcerer/jekyll/liquid/file_system.rb +0 -74
  75. data/lib/sourcerer/jekyll/liquid/filters.rb +0 -215
  76. data/lib/sourcerer/jekyll/liquid/tags.rb +0 -44
  77. data/lib/sourcerer/jekyll/monkeypatches.rb +0 -73
  78. data/lib/sourcerer/jekyll.rb +0 -26
  79. data/lib/sourcerer/plaintext_converter.rb +0 -75
  80. data/lib/sourcerer/templating.rb +0 -190
  81. data/lib/sourcerer.rb +0 -322
@@ -1,33 +1,51 @@
1
- {% if config.conversions.markup == "markdown" -%}
2
- {% assign change_note = change.note | default: "NO RELEASE NOTE PROVIDED" | trim -%}
1
+ <!-- .release-note -->
2
+ {% if config.conversions.markup == 'markdown' -%}
3
+ {% assign change_note = change.note | default: 'NO RELEASE NOTE PROVIDED' | trim -%}
3
4
  {% else -%}
4
- {% assign change_note = change.note | default: "NO RELEASE NOTE PROVIDED" | adoc_to_md | trim -%}
5
+ {% assign change_note = change.note | default: 'NO RELEASE NOTE PROVIDED' | adoc_to_md | trim -%}
5
6
  {% endif -%}
7
+ {%- comment -%} Remove "## Release Note" heading if it appears in the note content {%- endcomment -%}
8
+ {%- assign change_note = change_note | replace: '## Release Note', '' | trim -%}
9
+ {% embed metadata-note.md.liquid -%}
6
10
 
7
11
  <a id="note-{{ change.chid }}"></a>
8
- {%- if config.notes.items.frame == "table" %}
9
- | Details |
10
- |---------|
11
- | {% if change.head %}**{{ change.head }}**<br>{% endif %}{{ change_note }} |
12
- {%- elsif config.notes.items.frame == "desc-list" %}
13
- **{{ change.head | default: change.summ }}**
14
- {{ change_note }}
15
- {% elsif config.notes.items.frame == "admonition" %}
16
- {% if change.type == "removal" or change.type == "deprecation" or change.type == "breaking" %}
17
- {% assign admonition_type = "Warning" %}
18
- {% elsif change.type == "security" %}
19
- {% assign admonition_type = "Important" %}
20
- {% elsif change.type == "experimental" %}
21
- {% assign admonition_type = "Tip" %}
22
- {% else %}
23
- {% assign admonition_type = "Note" %}
24
- {% endif %}
25
12
 
26
- > **{{ admonition_type }}**: {% if change.head %}**{{ change.head }}** - {% endif %}{{ change_note }}
13
+ {%- if config.notes.items.frame == 'table' %}
14
+ | Change | Details | |--------|---------| | {{ change_metadata }} |
15
+ {% if change.head %}**{{ change.head }}**<br>{% endif -%}
16
+ {{- change_note }} |
17
+ {%- elsif config.notes.items.frame == 'table-cols-1' %}
18
+ | Note | |------| | {{ change_metadata -}}
19
+ <br>
20
+ {% if change.head %}**{{ change.head }}**<br>{% endif -%}
21
+ {{- change_note }} |
22
+ {%- elsif config.notes.items.frame == 'table-cols-2' %}
23
+ | Note | Metadata | |------|----------| | {% if change.head %}**{{ change.head }}**<br>{% endif -%}
24
+ {{- change_note }} | {{ change_metadata }} |
25
+ {%- elsif config.notes.items.frame == 'desc-list' %}
26
+ {% if change.head -%}
27
+ **{{ change.head }}**
28
+ {% endif -%}
29
+ {{ change_note }}
30
+ {{ change_metadata }}
31
+ {% elsif config.notes.items.frame == 'admonition' %}
32
+ {% if change.type == 'removal' or change.type == 'deprecation' or change.type == 'breaking' %}
33
+ {% assign admonition_type = '⚠️ Warning' %}
34
+ {% elsif change.type == 'security' %}
35
+ {% assign admonition_type = '🔒 Security' %}
36
+ {% elsif change.type == 'experimental' %}
37
+ {% assign admonition_type = '💡 Tip' %}
38
+ {% else %}
39
+ {% assign admonition_type = '📝 Note' %}
40
+ {% endif %}
41
+
42
+ > **{{ admonition_type }}**: {% if change.head %}**{{ change.head }}** — {% endif -%}
43
+ {{- change_note }} > {{ change_metadata }}
27
44
  {% else -%}
28
- {% if change.head -%}
29
- ### {{ change.head }}
30
- {% endif -%}
31
- {{ change_note }}
32
- {% endif %}
45
+ {% if change.head -%}
46
+ ### {{ change.head }}
47
+ {% endif -%}
48
+ {{ change_note }}
33
49
 
50
+ {{ change_metadata }}
51
+ {% endif %}
@@ -11,4 +11,6 @@
11
11
  {%- assign item_count = 0 %}
12
12
  {%- embed section-text.liquid %}
13
13
 
14
+ [.notes-section]
15
+
14
16
  {%- embed groupings.liquid %}
@@ -4,11 +4,13 @@
4
4
  {%- assign dflt_next_header_level = level | plus: 1 -%}
5
5
  {%- assign item_count = 0 %}
6
6
 
7
- <div class="notes-section">
8
- {%- include header.liquid format=format level=level text=content_config.head %}
7
+ <section class="notes-section py-4 px-3 mb-4">
8
+ {%- include header.liquid format=format level=level text=content_config.head %}
9
9
 
10
- {%- embed section-text.liquid %}
10
+ {%- embed section-text.liquid %}
11
11
 
12
+ <div class="notes-content mt-4">
12
13
  {%- embed groupings.liquid %}
13
- </div>
14
+ </div>
15
+ </section>
14
16
 
@@ -1,3 +1,4 @@
1
+ <!-- .notes-section -->
1
2
  {%- assign content_config = config.notes %}
2
3
  {%- assign section_type = "notes" %}
3
4
  {%- embed config-cascade.liquid %}
@@ -6,6 +6,8 @@
6
6
  :icons: font
7
7
  {% embed head-parser.liquid %}
8
8
 
9
+ [.release-section]
10
+
9
11
  {%- if release.hash and release.hash != "" and config.links.git and config.links.git.trim != "" %}
10
12
  link:{{ config.links.git | render: release }}[icon:{{ config.links.git_icon | default: 'code-fork' }}[]{{ release.hash | slice: 0, 7 }}]
11
13
  {%- endif %}
@@ -1,12 +1,13 @@
1
- {% assign format = "markdown" -%}
2
- {% assign config = vars.config -%}
3
- {% assign release = vars.release -%}
4
- {% assign changes = vars.changes -%}
5
- {% assign sorted = vars.sorted -%}
1
+ {%- assign format = "markdown" -%}
2
+ {%- assign config = vars.config -%}
3
+ {%- assign release = vars.release -%}
4
+ {%- assign changes = vars.changes -%}
5
+ {%- assign sorted = vars.sorted -%}
6
6
  {%- embed head-parser.liquid %}
7
- {% if release.memo -%}
7
+ <!-- .release-section -->
8
+ {%- if release.memo -%}
8
9
  {{ release.memo }}
9
- {% endif -%}
10
+ {%- endif -%}
10
11
 
11
12
  {% if release.hash and release.hash != "" and config.links.git and config.links.git.trim != "" -%}
12
13
  **Git:** [{{ release.hash | slice: 0, 7 }}]({{ config.links.git | render: release }})
@@ -1,40 +1,40 @@
1
- {%- assign change = include.change %}
2
- {%- assign config = include.config %}
3
- - chid: {{ change.chid }}
4
- {%- if change.tick %}
5
- tick: {{ change.tick }}
6
- {%- endif %}
7
- {%- if change.type %}
8
- type: {{ change.type }}
9
- {%- endif %}
10
- {%- if change.parts.size > 0 %}
11
- {%- if change.parts.size == 1 %}
1
+ {%- assign change = include.change %}
2
+ {%- assign config = include.config %}
3
+ - chid: {{ change.chid }}
4
+ {%- if change.tick %}
5
+ tick: {{ change.tick }}
6
+ {%- endif %}
7
+ {%- if change.type %}
8
+ type: {{ change.type }}
9
+ {%- endif %}
10
+ {%- if change.parts.size > 0 %}
11
+ {%- if change.parts.size == 1 %}
12
12
  part: {{ change.parts[0] }}
13
- {%- else %}
13
+ {%- else %}
14
14
  parts:
15
- {%- for part in change.parts %}
15
+ {%- for part in change.parts %}
16
16
  - {{ part }}
17
- {%- endfor %}
18
- {%- endif %}
19
- {%- endif %}
20
- {%- if change.hash %}
21
- hash: {{ change.hash }}
22
- {%- endif %}
23
- summ: |
24
- {{ change.summ }}
25
- {%- if change.head %}
26
- head: {{ change.head }}
27
- {%- endif %}
28
- {%- if change.note and change.note.strip != "" %}
29
- note: |
30
- {{ change.note | indent: 6 }}
31
- {%- endif %}
32
- {%- if change.tags.size > 0 %}
33
- tags:
34
- {%- for tag in change.tags %}
35
- - {{ tag }}
36
17
  {%- endfor %}
37
- {%- endif %}
38
- {%- if change.lead %}
39
- lead: {{ change.lead }}
40
- {%- endif %}
18
+ {%- endif %}
19
+ {%- endif %}
20
+ {%- if change.hash %}
21
+ hash: {{ change.hash }}
22
+ {%- endif %}
23
+ summ: |
24
+ {{ change.summ }}
25
+ {%- if change.head %}
26
+ head: {{ change.head }}
27
+ {%- endif %}
28
+ {%- if change.note and change.note.strip != '' %}
29
+ note: |
30
+ {{ _note | indent: 6 }}
31
+ {%- endif %}
32
+ {%- if change.tags.size > 0 %}
33
+ tags:
34
+ {%- for tag in change.tags %}
35
+ - {{ tag }}
36
+ {%- endfor %}
37
+ {%- endif %}
38
+ {%- if change.lead %}
39
+ lead: {{ change.lead }}
40
+ {%- endif %}
@@ -0,0 +1,103 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="description" content="Release history and changelog">
7
+ {% assign title = config.history.head | default: 'Release History' | escape %}
8
+ <title>{{ title }}</title>
9
+
10
+ {%- assign styling_mode = config.history.styling.mode | default: 'framework' %}
11
+ {%- assign css_url = config.history.styling.css_url %}
12
+ {%- assign embed_css = config.history.styling.embed_css | default: false %}
13
+ {%- assign theme = config.history.styling.theme | default: 'default' %}
14
+
15
+ {%- if styling_mode == 'external' and css_url %}
16
+ <link rel="stylesheet" href="{{ css_url }}">
17
+ {%- elsif styling_mode == 'framework' or styling_mode == 'embedded' %}
18
+ {%- if framework == 'bootstrap' %}
19
+ {%- case framework_version %}
20
+ {%- when '5.3.0' %}
21
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
22
+ {%- when '4.6.2' %}
23
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" rel="stylesheet">
24
+ {%- else %}
25
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap@{{ framework_version }}/dist/css/bootstrap.min.css" rel="stylesheet">
26
+ {%- endcase %}
27
+ {%- endif %}
28
+
29
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
30
+
31
+ {%- comment %}Load Bootstrap overrides (can be customized in _templates/bootstrap-overrides.css){%- endcomment %}
32
+ <style>
33
+ {% embed bootstrap-overrides.css %}
34
+ </style>
35
+ {%- endif %}
36
+
37
+ {%- if styling_mode == 'embedded' or embed_css %}
38
+ <style>
39
+ {% embed embedded.css.liquid %}
40
+ </style>
41
+ {%- elsif styling_mode == 'minimal' %}
42
+ <style>
43
+ /* Minimal Styling Mode */
44
+ body {
45
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
46
+ line-height: 1.6;
47
+ max-width: 1000px;
48
+ margin: 0 auto;
49
+ padding: 2rem;
50
+ }
51
+
52
+ .release-section {
53
+ margin-bottom: 3rem;
54
+ }
55
+
56
+ .changelog-section, .notes-section {
57
+ margin-bottom: 2rem;
58
+ padding-left: 1rem;
59
+ border-left: 3px solid #ccc;
60
+ }
61
+
62
+ .release-note {
63
+ margin-bottom: 1.5rem;
64
+ padding: 1rem;
65
+ border: 1px solid #eee;
66
+ }
67
+
68
+ .change-entry {
69
+ margin-bottom: 0.75rem;
70
+ padding: 0.5rem 0;
71
+ border-bottom: 1px solid #f0f0f0;
72
+ }
73
+ </style>
74
+ {%- endif %}
75
+ </head>
76
+ <body>
77
+ <div class="container-lg py-5">
78
+ <article class="release-history">
79
+ {{ content }}
80
+ </article>
81
+ </div>
82
+ {%- if framework == 'bootstrap' %}
83
+ {%- case framework_version %}
84
+ {%- when '5.3.0' %}
85
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
86
+ <script>
87
+ // Auto-detect and apply Bootstrap 5 dark mode
88
+ if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
89
+ document.documentElement.setAttribute('data-bs-theme', 'dark');
90
+ }
91
+ // Listen for system theme changes
92
+ window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {
93
+ document.documentElement.setAttribute('data-bs-theme', e.matches ? 'dark' : 'light');
94
+ });
95
+ </script>
96
+ {%- when '4.6.2' %}
97
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
98
+ {%- else %}
99
+ <script src="https://cdn.jsdelivr.net/npm/bootstrap@{{ framework_version }}/dist/js/bootstrap.bundle.min.js"></script>
100
+ {%- endcase %}
101
+ {%- endif %}
102
+ </body>
103
+ </html>
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../../schemagraphy/templating'
4
-
5
3
  module ReleaseHx
6
4
  module SgymlHelpers
7
5
  # Precompiles a schema into a set of templates, using the provided data and schema.
@@ -135,7 +135,7 @@ module ReleaseHx
135
135
  end
136
136
 
137
137
  # Converts a list (bullet or ordered)
138
- def self.convert_list node, excluded, depth, unordered: true
138
+ def self.convert_list node, excluded, depth, unordered: true # rubocop:disable Lint/UnusedMethodArgument
139
139
  content = node['content'] || []
140
140
  items = content.map { |item| convert_node(item, excluded, depth + 1) }
141
141
  "#{items.join}\n"
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../sourcerer'
4
-
5
3
  module ReleaseHx
6
4
  VERSION = ReleaseHx::ATTRIBUTES[:globals]['this_prod_vrsn']
7
5
  end
data/lib/releasehx.rb CHANGED
@@ -4,8 +4,8 @@ require 'thor'
4
4
  require 'logger'
5
5
  require 'liquid'
6
6
  require 'yaml'
7
- require_relative 'sourcerer'
8
- require_relative 'schemagraphy'
7
+ require 'schemagraphy'
8
+ require 'asciisourcerer'
9
9
  begin
10
10
  require_relative 'releasehx/generated'
11
11
  rescue LoadError
@@ -203,12 +203,59 @@ properties:
203
203
  The origin markup format for notes.
204
204
  May be `markdown` or `asciidoc`.
205
205
  dflt: markdown
206
- engine:
207
- type: String
206
+ engines:
208
207
  desc: |
209
- The markup converter to use for the issues.
210
- Defaults to `asciidoctor` for AsciiDoc and `redcarpet` for Markdown.
211
- Options include `asciidoctor`, `redcarpet`, `commonmarker`, `kramdown`, or `pandoc`.
208
+ Specifies the conversion engines to use when enriching to various output formats.
209
+
210
+ These settings determine which tool processes the conversion from draft formats to rich output.
211
+ Intelligent defaults are applied based on source format when engines are not explicitly configured.
212
+ properties:
213
+ html:
214
+ type: String
215
+ desc: |
216
+ Engine for converting to HTML format.
217
+
218
+ Valid engines:
219
+
220
+ [horizontal]
221
+ `asciidoctor-html5`:: Standard Asciidoctor HTML5 backend (nested div structure)
222
+ `asciidoctor-html5s`:: Semantic HTML5 backend (cleaner section-based markup)
223
+ `kramdown`:: Kramdown Markdown converter (for Markdown sources)
224
+ `pandoc`:: Universal document converter (if available)
225
+
226
+ When not specified, intelligent defaults apply:
227
+
228
+ - AsciiDoc → HTML: `asciidoctor-html5s` (semantic HTML5)
229
+ - Markdown → HTML: `kramdown`
230
+ - RHYML → HTML: Liquid templates (no engine needed)
231
+ docs: |
232
+ The html5s backend produces cleaner, more semantic HTML with `<section>` elements
233
+ instead of nested `<div class="sect1"><div class="sectionbody">` structures.
234
+
235
+ This is particularly useful when you want to apply custom CSS or when generating
236
+ HTML that will be further processed or embedded in other systems.
237
+
238
+ For backwards compatibility or when you need the traditional Asciidoctor structure,
239
+ use `asciidoctor-html5`.
240
+ pdf:
241
+ type: String
242
+ desc: |
243
+ Engine for converting to PDF format.
244
+
245
+ Valid engines:
246
+
247
+ [horizontal]
248
+ `asciidoctor-pdf`:: Asciidoctor PDF converter (default for AsciiDoc)
249
+ `asciidoctor-web-pdf`:: Web-based PDF converter using headless Chrome
250
+ `pandoc`:: Universal document converter (if available)
251
+
252
+ When not specified, intelligent defaults apply:
253
+
254
+ - AsciiDoc → PDF: `asciidoctor-pdf`
255
+ - Markdown → PDF: `pandoc` (if available)
256
+ docs: |
257
+ The default `asciidoctor-pdf` engine provides excellent typography and layout
258
+ for technical documentation with support for themes, fonts, and advanced formatting.
212
259
 
213
260
  extensions:
214
261
  desc: Default file extensions.
@@ -837,7 +884,7 @@ properties:
837
884
  desc: |
838
885
  Default settings for `rhx` command executions.
839
886
  properties:
840
- wrapped:
887
+ html_wrap:
841
888
  type: Boolean
842
889
  desc: |
843
890
  Include (or exclude) head, header, and footer elements when enriching to HTML.
@@ -862,6 +909,7 @@ properties:
862
909
  Include frontmatter in AsciiDoc drafts.
863
910
 
864
911
  Uses the `templates.asciidoc_frontmatter` template.
912
+ dflt: false
865
913
  fetch:
866
914
  type: String
867
915
  desc: |
@@ -1043,6 +1091,74 @@ properties:
1043
1091
 
1044
1092
  It may include `{{ title }}`, `{{ version }}`, `{{ date }}`, as well as any `vars`-scoped variables as you pass in.
1045
1093
  dflt: *markdown_frontmatter_tplt
1094
+ html_framework:
1095
+ type: String
1096
+ desc: |
1097
+ The HTML framework to use when enriching to HTML.
1098
+
1099
+ Valid entries:
1100
+
1101
+ [horizontal]
1102
+ `bare`:: minimal HTML structure
1103
+ `bootstrap4`:: Bootstrap 4 framework
1104
+ `bootstrap5`:: Bootstrap 5 framework
1105
+ dflt: bare
1106
+ styling:
1107
+ desc: |
1108
+ Configuration options for HTML styling and CSS framework integration.
1109
+ properties:
1110
+ mode:
1111
+ type: String
1112
+ desc: |
1113
+ The HTML styling approach to use when generating wrapped HTML output.
1114
+
1115
+ Valid options:
1116
+
1117
+ * `minimal` -- Basic semantic HTML with minimal inline styles
1118
+ * `embedded` -- Include comprehensive CSS in `<style>` block
1119
+ * `external` -- Reference external stylesheet via `<link>` tag
1120
+ * `framework` -- Use configured CSS framework only (Bootstrap, etc.)
1121
+
1122
+ When `mode: framework`, styling relies entirely on the configured CSS framework.
1123
+ When `mode: embedded`, CSS is included inline for standalone HTML files.
1124
+ When `mode: external`, a custom CSS file must be provided via `css_url`.
1125
+ dflt: framework
1126
+ theme:
1127
+ type: String
1128
+ desc: |
1129
+ The visual theme variant to apply to HTML output.
1130
+
1131
+ Built-in themes:
1132
+
1133
+ * `default` -- Standard professional appearance
1134
+ * `compact` -- Reduced spacing and condensed layout
1135
+ * `detailed` -- Enhanced metadata display with expanded information
1136
+
1137
+ Theme selection affects spacing, typography, and metadata prominence.
1138
+ dflt: default
1139
+ embed_css:
1140
+ type: Boolean
1141
+ desc: |
1142
+ Include comprehensive CSS directly in the HTML `<style>` block.
1143
+
1144
+ When enabled, generates standalone HTML files that display correctly
1145
+ without external dependencies. CSS includes framework customizations,
1146
+ responsive design rules, and print optimizations.
1147
+
1148
+ Automatically enabled when `mode: embedded`.
1149
+ dflt: false
1150
+ css_url:
1151
+ type: String
1152
+ desc: |
1153
+ URL or path to external CSS stylesheet for custom styling.
1154
+
1155
+ When `mode: external`, this stylesheet is linked via `<link rel="stylesheet">`.
1156
+ Can be a relative path, absolute URL, or CDN link.
1157
+
1158
+ Example: `assets/custom-releasehx.css` or `https://example.com/styles.css`
1159
+
1160
+ When provided, framework CSS and embedded CSS are disabled.
1161
+ dflt: null
1046
1162
  items:
1047
1163
  desc: |
1048
1164
  Settings pertaining to displayed items across Changelog and Release Notes sections.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: releasehx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DocOpsLab
@@ -107,6 +107,20 @@ dependencies:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0.4'
110
+ - !ruby/object:Gem::Dependency
111
+ name: asciidoctor-html5s
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: '0.5'
117
+ type: :runtime
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '0.5'
110
124
  - !ruby/object:Gem::Dependency
111
125
  name: asciidoctor-pdf
112
126
  requirement: !ruby/object:Gem::Requirement
@@ -121,6 +135,20 @@ dependencies:
121
135
  - - "~>"
122
136
  - !ruby/object:Gem::Version
123
137
  version: '2.3'
138
+ - !ruby/object:Gem::Dependency
139
+ name: asciisourcerer
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - "~>"
143
+ - !ruby/object:Gem::Version
144
+ version: '0.4'
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '0.4'
124
152
  - !ruby/object:Gem::Dependency
125
153
  name: commonmarker
126
154
  requirement: !ruby/object:Gem::Requirement
@@ -233,6 +261,20 @@ dependencies:
233
261
  - - "~>"
234
262
  - !ruby/object:Gem::Version
235
263
  version: '1.5'
264
+ - !ruby/object:Gem::Dependency
265
+ name: schemagraphy
266
+ requirement: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '0.1'
271
+ type: :runtime
272
+ prerelease: false
273
+ version_requirements: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '0.1'
236
278
  - !ruby/object:Gem::Dependency
237
279
  name: to_regexp
238
280
  requirement: !ruby/object:Gem::Requirement
@@ -273,13 +315,13 @@ files:
273
315
  - build/docs/index.adoc
274
316
  - build/docs/landing.adoc
275
317
  - build/docs/manpage.adoc
318
+ - build/docs/release-procedure.adoc
319
+ - build/docs/release-procedure.html
276
320
  - build/docs/releasehx.1
277
321
  - build/docs/releasehx_readme.html
278
322
  - build/docs/releases.adoc
279
323
  - build/docs/sample-config.adoc
280
324
  - build/docs/sample-config.yml
281
- - build/docs/schemagraphy_readme.html
282
- - build/docs/sourcerer_readme.html
283
325
  - build/snippets/helpscreen.txt
284
326
  - lib/docopslab/mcp.rb
285
327
  - lib/docopslab/mcp/asset_packager.rb
@@ -320,11 +362,13 @@ files:
320
362
  - lib/releasehx/rhyml/mappings/jira.yaml
321
363
  - lib/releasehx/rhyml/mappings/verb_past_tenses.yml
322
364
  - lib/releasehx/rhyml/release.rb
365
+ - lib/releasehx/rhyml/templates/bootstrap-overrides.css
323
366
  - lib/releasehx/rhyml/templates/changelog.adoc.liquid
324
367
  - lib/releasehx/rhyml/templates/changelog.html.liquid
325
368
  - lib/releasehx/rhyml/templates/changelog.md.liquid
326
369
  - lib/releasehx/rhyml/templates/changes-sorter.liquid
327
370
  - lib/releasehx/rhyml/templates/config-cascade.liquid
371
+ - lib/releasehx/rhyml/templates/embedded.css.liquid
328
372
  - lib/releasehx/rhyml/templates/entry.adoc.liquid
329
373
  - lib/releasehx/rhyml/templates/entry.html.liquid
330
374
  - lib/releasehx/rhyml/templates/entry.md.liquid
@@ -359,31 +403,10 @@ files:
359
403
  - lib/releasehx/rhyml/templates/section-text.liquid
360
404
  - lib/releasehx/rhyml/templates/sections.liquid
361
405
  - lib/releasehx/rhyml/templates/tags-listing.liquid
406
+ - lib/releasehx/rhyml/templates/wrapper.html.liquid
362
407
  - lib/releasehx/sgyml/helpers.rb
363
408
  - lib/releasehx/transforms/adf_to_markdown.rb
364
409
  - lib/releasehx/version.rb
365
- - lib/schemagraphy.rb
366
- - lib/schemagraphy/attribute_resolver.rb
367
- - lib/schemagraphy/cfgyml/definition.rb
368
- - lib/schemagraphy/cfgyml/doc_builder.rb
369
- - lib/schemagraphy/cfgyml/path_reference.rb
370
- - lib/schemagraphy/data_query/json_pointer.rb
371
- - lib/schemagraphy/loader.rb
372
- - lib/schemagraphy/regexp_utils.rb
373
- - lib/schemagraphy/safe_expression.rb
374
- - lib/schemagraphy/schema_utils.rb
375
- - lib/schemagraphy/tag_utils.rb
376
- - lib/schemagraphy/templating.rb
377
- - lib/sourcerer.rb
378
- - lib/sourcerer/builder.rb
379
- - lib/sourcerer/jekyll.rb
380
- - lib/sourcerer/jekyll/bootstrapper.rb
381
- - lib/sourcerer/jekyll/liquid/file_system.rb
382
- - lib/sourcerer/jekyll/liquid/filters.rb
383
- - lib/sourcerer/jekyll/liquid/tags.rb
384
- - lib/sourcerer/jekyll/monkeypatches.rb
385
- - lib/sourcerer/plaintext_converter.rb
386
- - lib/sourcerer/templating.rb
387
410
  - specs/data/api-client-schema.yaml
388
411
  - specs/data/config-def.yml
389
412
  - specs/data/mcp-manifest.yml
File without changes