Orchid v0.20.0 Release Notes

Release Date: 2020-03-30 // about 4 years ago
    • ๐Ÿ†• New Snippets plugin allows you to lookup and embed snippets from code, files, and even external webpages!
    • ๐Ÿ‘Œ Improvements to Admin Panel styling. Forms and snippets located during the site build are care listed and can be previewed in the admin panel.
    • ๐Ÿ‘ Allows Forms to be embedded with a new form tag, instead of only as Components as before. See docshere
    • 0๏ธโƒฃ Replaces default accordion markup with details/summary tag for best usage in all themes
    • ๐Ÿ‘€ Tabbed TemplateTags can now be rendered dynamically! You can now use loops and conditionals to add individual tabs to the body of tabbed tags. See docs here.
    • ๐Ÿ— Both the base URL and your theme can now be set in config.yml, instead of needing to be set in your Gradle or Maven build scripts. See docs here.

    ๐Ÿ’ฅ Breaking Changes

    ๐Ÿš€ This release contains no breaking changes or deprecations of public, end-user features. Read on for important changes

    There have been some minor changes to the internal APIs. Most notable is that the ModularList primary constructor no longer accepts an injected OrchidContext. The context should instead be provided lazily when calling .get() to get the modular items from the list. In addition, I'm working on removing the requirement of an OrchidContext when creating OrchidReference objects. While it's still there for now, many of its public methods, like getServerPath()and toJSON(), and toString(), must be provided with a context when called instead of using the Context set in its constructor.

    0๏ธโƒฃ In addition, Orchid is getting more strict on places where a non-null OrchidPage must be provided.ModularPageList.get() requires a non-null page, and Themes must have a page for each time it is pushed to theThemeService with theme.doWithCurrentPage(). This also means that Generators do not globally set Themes any more, and it is the responsibility of the Generator to wrap context.render calls with theme.doWithCurrentPage() using its default ThemeRelation. If you do not override startGeneration(), this will be done automatically, but if you are overriding startGeneration() you must make sure to add this functionality.

    ๐Ÿ— Finally, the base URL is no longer available anytime during Orchid's lifetime. It is set at the start of each build, and thus is only available after indexing has started and when idle between builds. Attempting to get the base URL during Orchid startup will throw a NullPointerException.