Skip to content

Releases: Alipsa/GroovyMarkdown

Ver 3.2.0

Choose a tag to compare

@perNyfelt perNyfelt released this 24 Sep 22:13

gmd-core

  • Breaking: the print(GgChart, double) / println(GgChart, double) width-only
    overload that Groovy default arguments generated is removed. Pass explicit width and
    height, or omit both and let the chart's own dimensions apply.
  • Output from a Groovy code block that does not end in a newline now gains one, so
    out.print('x') no longer glues the next source line onto the output. Visible change:
    out.print('Hello ') followed by prose now yields Hello \nworld instead of
    Hello world in the Markdown (rendered identically by CommonMark).
  • Inline = expr is no longer expanded inside CommonMark indented code blocks (a line
    indented four or more spaces beyond the document's own base indent). Indent is measured
    relative to the indent of the document's first non-blank line, so a .gmd written inside an
    indented Groovy string is unaffected. Lazy paragraph continuations and list-item
    continuations still expand.
  • Indented ```{groovy} fences now execute with their body dedented by the fence's own
    indent, and the echoed fence and body line up. Visible change: a multi-line string
    literal whose continuation lines sit below the fence indent loses those spaces in the
    evaluated source as well as the echo.
  • render Chart/MatrixXChart output (and Html) as a raw <img> HTML tag instead of ![alt](data-uri){attrs}, since CommonMark's image syntax doesn't support Pandoc-style attribute suffixes. This means outputType=md output can now contain raw HTML for charts instead of portable Markdown image syntax; the tag is followed by a blank line so it doesn't swallow subsequent Markdown as an HTML block.
  • restore the HtmlDecorator.BOOTSTRAP_CSS and HIGHLIGHT_JS_CSS compatibility constants
  • upgrade the JUnit BOM from 6.1.2 to 6.1.3
  • upgrade OpenHTMLToPDF from 1.1.65 to 1.1.86
  • upgrade CommonMark from 0.29.0 to 0.30.0
  • remove obsolete JavaFX filtering from the fat jar assembly
  • upgrade groovy to 5.1.3
  • Upgrade matrix bom to 2.6.0
  • exclude xml-apis, which bundles pre-Java-5 javax.xml.parsers classes.
    On a child-first classloader (e.g. Groovy's RootLoader / @grab) its FactoryFinder shadows the JDK's JAXP and fails with FactoryConfigurationError looking for org.apache.xerces.jaxp.DocumentBuilderFactoryImpl. The JDK already provides these APIs.

highlightjs-jvm

  • upgrade the JUnit BOM used by module tests to 6.1.3
  • require Node 22 for bundle generation and verify the generated bundle in CI
  • add Maven publication metadata and attach source and Javadoc artifacts
  • configure the versions Maven plugin to use the shared repository version rules
  • add Javadocs to the public highlighter APIs
  • upgrade the Babel build dependencies

gmd-gradle-plugin

  • Breaking: GmdGradlePlugin.hasRepository(Project, MavenArtifactRepository) is removed.
    It was public static API on the plugin class; nothing in the repo called it. The plugin now
    checks for an existing Maven Central declaration itself before adding one, and also detects
    when repositories are settings-managed (PREFER_SETTINGS or FAIL_ON_PROJECT_REPOS) so it
    never adds a project-level repository Gradle would ignore or reject.
  • derive the default GMD core version from a generated plugin-version resource populated from the root Maven revision, failing clearly if metadata is unavailable
  • derive the development artifact version from the root Maven revision and require an explicit version when publishing
  • upgrade the Gradle Versions Plugin from 0.58.0 to 0.61.0
  • upgrade the JUnit BOM from 6.1.2 to 6.1.3
  • validate the Gradle Plugin Portal publication before uploading the plugin
  • upgrade groovy to 5.1.3
  • clean stale generated files only from the dedicated default build/gmd output directory; custom target directories retain pre-existing and orphaned GMD output when sources are deleted, renamed, or change output type, while Gradle tracks their expected generated files individually for up-to-date checks
  • track the actual GMD processor runtime classpath for up-to-date checks, including changed dynamic or transitive dependencies; avoid resolving it when no .gmd source exists so the no-op and stale-output cleanup paths remain dependency-free
  • expose that runtime through ProcessGmdTask.runtimeClasspath; the established classpath property remains as a deprecated compatibility alias for directly registered tasks

gmd-maven-plugin

  • make the default GMD core version follow the Maven plugin version to prevent release drift
  • validate Maven Central release artifacts before publishing
  • publish source and Javadoc artifacts as part of the release workflow
  • replace deprecated Maven @Component injection with JSR-330 @Inject
  • wait up to 30 seconds after forcibly stopping an interrupted GMD processor, while preserving a subsequent interrupt so Maven cancellation cannot hang indefinitely
  • upgrade groovy to 5.1.3

Ver 3.1.0

Choose a tag to compare

@perNyfelt perNyfelt released this 02 Aug 20:55

highlightjs-jvm

  • add the independent highlightjs-jvm module
  • expose Highlight.js string highlighting through the SyntaxHighlighter API
  • add Jsoup-based HTML code-block highlighting with HtmlSyntaxHighlighter
  • run Highlight.js 11.7.0 on Rhino 1.9.1 with all 192 languages
  • generate the bundle reproducibly from the upstream distribution with buildBundle.sh;
    syntax-only transpile, no polyfills, no hand-editing
  • return null instead of auto-detecting when a language is unknown or absent
  • synchronize access because Highlight.js keeps mutable state in the shared scope

gmd-core

  • add the independent highlightjs-jvm module using Rhino and a syntax-transpiled Highlight.js bundle
  • highlight code blocks synchronously before PDF rendering
  • remove JavaFX and WebView from core PDF processing
  • render Matrix Chart and MatrixXChart output as SVG data URIs instead of PNGs
  • use explicit UTF-8 file I/O and validate source, target, and output paths
  • reset template echo state per block and reject unterminated Groovy blocks
  • update the test GUI to perform JavaFX UI updates on the application thread
  • wrap unchecked PDF rendering failures in GmdException
  • remove obsolete Highlight.js JavaScript and language resources from gmd-core
  • add idempotency coverage for already-highlighted HTML blocks
  • leave untagged and unknown-language code blocks unhighlighted
  • write complete html documents from GmdProcessor (affects the Maven and Gradle plugins)
  • make toPdfRaw produce an undecorated pdf, distinct from toPdf
  • stop expanding inline expressions inside plain (backtick and tilde) code fences
  • close th tags and quote attribute values in Html
  • omit missing stylesheets instead of emitting a link with an empty href
  • restore the Highlight.js stylesheet lost in the source tree move; the jar now ships exactly one theme

The fat jar is attached below

gmd-gradle-plugin

  • resolve all output types without JavaFX dependencies
  • declare processGmd inputs and outputs and remove stale generated files
  • validate output types and source/target directories before processing

gmd-maven-plugin

  • resolve all output types without JavaFX dependencies
  • resolve relative source and target paths from the Maven project base directory
  • validate output types and source/target directories before processing
  • remove JavaFX runtime dependency from the plugin

Ver 3.0.2

Choose a tag to compare

@perNyfelt perNyfelt released this 06 Feb 22:24

Gmd-core

  • use CI-friendly parent version (${revision}) instead of a fixed parent version
  • openhtmltopdf [1.1.31 -> 1.1.37]
  • commonmark [0.26.0 -> 0.27.1]
  • junit [5.13.4 -> 6.0.2]
  • se.alipsa.matrix:matrix-bom [2.3.0 -> 2.4.0]
  • add compile-time JavaFX dependencies (javafx-controls, javafx-swing, javafx-web) for Java 21 compatibility
  • do not attach the fat jar assembly by default during package

Gmd-gradle-plugin

  • use CI-friendly parent version (${revision}) instead of a fixed parent version
  • upgrade Gradle wrapper [8.13 -> 9.3.1]
  • upgrade test baseline to JUnit BOM [5.13.4 -> 6.0.2]
  • add configurable javaFxVersion parameter
  • include platform-specific JavaFX runtime dependencies (javafx-base, javafx-graphics, javafx-controls, javafx-swing, javafx-web)
  • update plugin defaults to current stack (groovy 5.0.4, log4j 2.25.3, gmd 3.0.2)
  • upgrade Maven-side exec-maven-plugin [3.5.1 -> 3.6.3]

Gmd-maven-plugin

  • use CI-friendly parent version (${revision}) instead of a fixed parent version
  • add configurable dependency versions: groovyVersion, log4jVersion, gmdVersion, ivyVersion, javaFxVersion
  • resolve runtime dependencies dynamically with Maven Resolver and execute GmdProcessor in a forked JVM classpath
  • add platform-aware JavaFX dependency resolution (mac, mac-aarch64, linux, win)
  • add fallback mode to bundled dependencies when dynamic resolution is unavailable
  • upgrade plugin/dependency tooling (maven.version 3.9.11 -> 3.9.12, maven-plugin-annotations 3.15.1 -> 3.15.2, maven-plugin-testing-harness 3.3.0 -> 3.5.0)

GMD 3.0.1

Choose a tag to compare

@perNyfelt perNyfelt released this 21 Sep 20:39

Published to maven central, fat jar attached.

gmd parent

  • use new central publish plugin
  • consolidate dependencies and configuration

Gmd core

  • Depend on parent pom
  • upgrade dependencies
    • commons-io:commons-io [2.18.0 -> 2.20.0]
    • io.github.openhtmltopdf:openhtmltopdf-core [1.1.26 -> 1.1.31]
    • io.github.openhtmltopdf:openhtmltopdf-mathml-support [1.1.26 -> 1.1.31]
    • io.github.openhtmltopdf:openhtmltopdf-pdfbox [1.1.26 -> 1.1.31]
    • io.github.openhtmltopdf:openhtmltopdf-svg-support [1.1.26 -> 1.1.31]
    • org.apache.commons:commons-lang3 [3.17.0 -> 3.18.0]
    • org.apache.logging.log4j:log4j-api [2.24.3 -> 2.25.1]
    • org.apache.logging.log4j:log4j-core [2.24.3 -> 2.25.1]
    • org.apache.pdfbox:fontbox [3.0.4 -> 3.0.5]
    • org.commonmark:commonmark [0.24.0 -> 0.26.0]
    • org.commonmark:commonmark-ext-gfm-tables [0.24.0 -> 0.26.0]
    • org.jsoup:jsoup [1.19.1 -> 1.21.2]
    • org.junit:junit-bom [5.12.1 -> 5.13.4]
    • org.junit.jupiter:junit-jupiter-api [5.12.1 -> 5.13.4]
    • org.junit.jupiter:junit-jupiter-engine [5.12.1 -> 5.13.4]
    • org.junit.platform:junit-platform-launcher [1.12.1 -> 1.13.4]
    • org.webjars:bootstrap [5.3.5 -> 5.3.8]
    • se.alipsa.matrix:matrix-charts [0.3.0 -> 0.3.1]
    • se.alipsa.matrix:matrix-core [3.2.0 -> 3.5.0]
    • se.alipsa.matrix:matrix-xchart [0.2.0 -> 0.2.2]

Gmd gradle-plugin

  • use 3.0.1 per default

Gmd maven plugin

  • use 3.0.1 per default

GMD Gradle Plugin v1.0.0

Choose a tag to compare

@perNyfelt perNyfelt released this 01 May 14:26

Intial release

GMD Maven Plugin v 1.0.0

Choose a tag to compare

@perNyfelt perNyfelt released this 29 Apr 19:47
  • initial release

GMD core v3.0.0

Choose a tag to compare

@perNyfelt perNyfelt released this 28 Apr 20:47
  • change group name to se.alipsa.gmd
  • change artifact name to gmd-core
  • improve error output
  • moved into gmd-core subdir
  • Explicitly set matrix versions as the gradle plugin cannot handle the bom

Gmd v2.2.0

Choose a tag to compare

@perNyfelt perNyfelt released this 10 Apr 19:59
  • upgrade matrix, gradle wrapper, junit, groovy, openhtmltopdf and jsoup
  • add support for matrix-xchart
  • rethrow exceptions as GdmException when processing code blocks
  • Hide scrollbar but allow scrolling instead of just removing it
  • add an empty string to the end of the code block to not have the return value added to the result.

Ver 2.1.0

Choose a tag to compare

@perNyfelt perNyfelt released this 24 Feb 19:38
  • Add methods for direct output i.e.
    • gmdToHtml(String gmd, File outFile, Map bindings = [:])
    • gmdToHtml(String gmd, Writer out, Map bindings = [:])
    • gmdToPdf(String gmd, File file, Map bindings = [:]
  • Add Javafx gui example

Ver 2.0.0

Choose a tag to compare

@perNyfelt perNyfelt released this 18 Feb 19:26
  • upgrade dependencies (require java 21, bootstrap 5.3.3, etc.)
  • add support for Matrix (se.alipsa.groovy.matrix) data
  • add support for Matrix charts which (currently) requires java fx
  • Remove the use of the SimpleTemplateEngine due to the size limitation
    as a consequence, scriptlet syntax is no longer supported
  • Add Html class for convenient groovy -> html generation
  • Change from flexmark to commonmark
  • Change to active openhtmltopdf fork
  • Use Matrix toHtml implementation to render tables instead of the OOTB GFM support
  • Add support for command line invocation
  • Add support for styled pdf by running the javascript in a javafx WebView