Changelog
0.21.1
- Fix bug preventing use of Netlify base URL
- Properly use page themes for asset functions
- Fixes issue linking to sourcedoc elements in signature
0.21.0
Improvements
- Experimental sourcedocs are now enabled by default
- Adds
collectionPages
menu item, which matches the same lookup behavior as the findAll() function. See Menus for usage. - Use
0.5
as default sitemap entry priority and always add priority to sitemap entries - Updates Kodiak version to 0.5.0, with several bugfixes for Dokka output, and preparation for generation of class hierarchy diagrams (still WIP)
- Sourcedocs modules can now link to one another. Projects such as multi-module Java libraries or Kotlin multiplatform projects can now associate Orchid's documentation modules to one another, cross-linking to base classes or packages. See docs here
- Deprecation messages are now only shown in diagnose mode. A warning notifying of detected deprecation usage or diagnosed problems is now shown on normal builds.
- Major improvements to asset management, external asset downloading, and asset inlining
- Extra CSS/JS can now be configured as objects, and options like
download
andinline
are available in extra CSS - A regression causing external assets to not download has been fixed
- See docs here
- Extra CSS/JS can now be configured as objects, and options like
- New config DSL for setting up the
config.yml
in integration tests, and dramatically improved diagnostics for page html assertion failures
Bug Fixes
- Fixes bugs with
orchidSearch
component- homepage is now included in search results
- SourceDocs element names and comments are now included in search results
- Improves diagnostic output of OrchidTest APIs
- Support various different lettercasing for homepage file
- Fixes several cosmetic issues with Copper theme
- Fixes issue of
-SNAPSHOT
being included in the Orchid version logs - Formatting issues with Kotlindocs have been fixed
Breaking Changes
This release includes 1 major breaking change to end-users, and the deprecation of several other end-user features which will be removed in a future release:
- The
--experimentalSourceDoc
is no longer needed, as experiemental SourceDocs are now the default functionality. If you are still using the legacy sourcedocs, you can still use them for a short time longer, but you must now add the--legacySourceDoc
flag to Orchid. Sites still building docs on legacy SourceDocs will not work without that flag, but you must now migrate to the new SourceDocs. Legacy sourcedocs will be removed entirely in the next major release. {% styles %}
is now included within the{% head %}
template tag. The{% styles %}
tag now does nothing, and in the next major version will be removed, causing template errors.{% scripts %}
has been replaced by the{% body %}
and{% endbody %}
template tags.{% scripts %}
will be removed in the next major version, causing template errors.
In additional, there are several changes to both internal and public code APIs. The following are only of importance to developers making custom Orchid plugins, but can be ignored by anyone else as they do not impact end-user functionality.
- The signature for
fun loadAssets()
in themes, pages, and components has been changed toloadAssets(delegate: AssetManagerDelegate)
.- In
loadAssets
, calls toaddCss
andaddJs
should now be made on that delegate:delegate.addCss("...")
,delegate.addJs("...")
. You can also usewith(delegate) { ... }
in Kotlin to reduce the boilerplate. - Previously, custom code needed to be written to prevent some external assets from being downloaded, but now the
addCss
andaddJs
methods accept a configuration lambda or object with these available options. They are the same options available toextraCss
andextraJs
, so there is now difference between assets loaded inloadAssets()
or attached from the extra assets.
- In
- OrchidTest methods for directly selecting and testing HTML have been removed. Instead, you should use the
htmlHeadMatches
andhtmlBodyMatches
methods to build DOM subtrees. However, diagnostic output is greatly improved for these matchers. - Meta-components can now render content to the page head, or the start or end of the HTML body. This is currently only reserved for future use with official Orchid plugins, but may be of interest to develoers making custom plugins in the Orchid community.
- Methods from
ResourceService
for locating assets has been significantly improved. Rather than calling methods likegetResourceEntry()
andlocateLocalResource()
on thecontext
, they have now been moved into dedicatedOrchidResourceSources
which can be gotten through the context. TheResourceService
now only has methods to get the following types of resource sources:getDefaultResourceSource()
- ReplacesgetResourceEntry()
andgetResourceEntries()
, which are now implemented on this default resource source. This will delegate the actual resource lookup to the site resources, theme, and registered plugins. They are also cached to improve lookup performance.getFlexibleResourceSource()
- Wraps the default resource source to add more flexible resource-lookup logic to it. Normal lookups must match both filename and extension, but flexible lookups will be abel to match by filename only, selecting a resource of any file extension. Replaces call tolocateLocalResourceEntry()
andfindClosestFile()
. Note thatfindClosestFile()
is deprecated as it does not delegate to the default resource source, and so should be avoided.getTemplateResourceSource()
- Wraps the default resource source to add template-locating logic to it. Replaces call tolocateTemplate()
.getDataResourceSource()
- Wraps the default resource source to add functionality for loading data markup into aMap
. Replaces call togetDatafile
andgetDatafiles()
.
0.20.0
- 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 docs here - 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.
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 Theme
s must have a page for each time it is pushed to the
ThemeService
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.
0.19.0
- Improve Asciidoc formatting. Specifically, other files relative to the source file can now be included. See caveats here.
- Automatically add
CNAME
files to GithubPages deploys, if not already present in the deployed site. The CNAME value will be inferred from the base URL of the site during the deploy. See docs here. - Adds
feedLinks
metaComponent to Posts plugin, which adds<link rel='alternate'>
tags to page heads, pointing to the generated feed pages. See docs here. - Partial support for JDK 12+. Note that changes to the Javadoc since JDK 12 make the OrchidJavadoc plugin incompatible with JDK 12+. This will resolved in a future release, but for now you will have to run Orchid on a JDK less than 12 for it to work.
- The dev server now dynamically renders indexed pages, instead of directly returning files from disk. This will prevent
pages from old builds from being rendered, makimg the dev server experience closer to what would actually be
rendered in production. This is still a work in progres, and if you encounter issues, you can go back to the old
functionality by adding the
--legacyFileServer
CLI flag. - Copy over images uploaded and referenced from GitLab wikis
- Various bugfixes for Kotlindoc plugin
Breaking Changes
This version includes the removal of several features that were deprecated since 0.18.0, outlined below:
- Themes will no longer add search functionality automatically through the use of the
legacySearch
option. You must now migrate to theorchidSearch
oralgoliaDocsearch
meta-component config instead, as described in the OrchidSearch docs. - Usage of
index.queryPages
, introduced as a deprecated feature for backward-compatibility in 0.18.0, has now been removed. You must set up custom taxonomies now.
In addition, there has been a moderate reworking of the resource APIs that are not backward-compatible. This is part of
an ongoing effort to extract this functionality into a reusable library outside of Orchid, which will eventually live
in the copper-leaf/arcana repo. The rest of these release notes are only
relevant to folks writing custom plugins, and in particular, custom OrchidGenerators
. Custom Components, Menus, Tags,
and Functions are unaffected by these changes.
Below is a summary of the changes to Orchid's OrchidResource, OrchidPage, and OrchidGenerator APIs:
- Collections created by
OrchidGenerators
are now part of the model returned fromstartIndexing()
, instead of being a discrete method on the Generator class itself. - Generators now run in 4 discrete stages instead of being ordered based on priority. This will enable future
improvements to performance and greater clarity of the intention behind Generator ordering. There is a 1-1 mapping
from older priority constants to new Generator Stages. The priority constants remain in place by name, but are now
instances of
OrchidGenerator.Stage
enums instead of integer priorities. The stages are as follows:Stage.WARM_UP
(previously `PRIORITY_INIT): A Stage for Generators that produce pages that Content pages depend on, like registering global assets and warming up other caches which improve overall build performance.Stage.CONTENT
(previously `PRIORITY_EARLY): A Stage for Generators that produce content pages. These are pages that are generally standalone pages, only having relationships to other pages from the same Generator.Stage.COLLECTION
(previously `PRIORITY_DEFAULT): A Stage for Generators that collect Content pages into groups, taxonomies, etc, and optionally generate additional Content pages displaying those collections of pages.Stage.META
(previously `PRIORITY_LATE): A Stage for Generators that produce metadata about your site. These are not Content pages, and are usually intended for computers to read, not humans, such as sitemaps, search indices, etc.
OrchidPages
must now be constructed with an additionalRenderService.RenderMode
constant in their constructor. This constant replaces calls tocontext.render*()
calls, typically done from theOrchidGenerator.startGenerating()
callback, and enables Orchid to determine how to render each page automatically without needing to override that method. Orchid will also render pages on-the-fly when running the dev server, which will eventually be able to significantly improve the development experience. The mapping ofcontext.render*()
calls to the new constants are as follows:context.renderString()
-> Removed, as it was a development-only API.context.renderTemplate()
->RenderService.RenderMode.TEMPLATE
context.renderRaw()
->RenderService.RenderMode.RAW
context.renderBinary()
->RenderService.RenderMode.BINARY
- The APIs for creating Resources has been partially rewritten. All of these classes have been rewritten in Kotlin and
are now null-safe in Kotlin, and the contract is expected to be followed when used from Java. These APIs will
continue to evolve as I continue to extract them to a separate library. The following are the main differences from
the old APIs to the new ones:
- All resources are now considered "freeable", but this is much more of an implementation detail now instead of
something developers must think about. Resources now simply return an
InputStream
describing their contents, and the framework will take care of the rest, including caching and freeing that content as appropriate. - The interfaces for
LocalResourceSource
,ThemeResourceSource
, andPluginResourceSource
are now singleton scope objects. Internally, resource sources are now initialized with one of these markers. Instead of having separatecontext.get*ResourceEntry()
orget*ResourceEntries
methods, there is a single context method for each that accepts one of these Scope objects to filer resource sources by. AbstractTheme
no longer implements theOrchidResourceSource
interface. Themes now return a resource source instead.OrchidIntegrationTest
can now take any type of resource in its test methods, instead of only being able to create String resources. In particular, the newclasspathResource()
function in the testing DSL loads a resource from the classpath (especially useful for using binary resources in integration tests).- Resources should now be passed to
context.compile()
. This allows compilers to know the source location of a resource they are processing, and can then import other resources relative to their source, such as when resolving includes from Asciidoc markup.
- All resources are now considered "freeable", but this is much more of an implementation detail now instead of
something developers must think about. Resources now simply return an
OrchidCompiler.compile()
now writes to anOutputStream
passed to it, instead of returning compiled String content.
0.18.2
- Enables single-file Changelogs such as the Keep A Changelog format. See docs here.
- Enables
include
directives in Asciidoc markup and changing SafeMode settings. Thanks to @tomb50 for help getting this set up!
0.18.1
- Removes
bible()
function, since the API it used underneath has been shut down and the function was unusable - Adds Faithlife Reftagger meta-component
- Improves YouTube tag to support full-width aspect ratios, with help from @DanySK
- Adds Mermaid JS component to OrchidDiagrams plugin
- Allows customization of sourcedoc module slug independently of module name
0.18.0
New Features
- New OrchidTest library, for running integration tests of custom Orchid components.
- Diagnosis Mode for detecting broken links in your site.
- Meta Components improve workflow for adding asset-only components and other metadata to pages.
- Algolia Docsearch native integration
- Introduction of experimental OrchidSourceDoc, to replace existing code documentation plugins (currently an opt-in feature).
- Addition of Predefined Collection Archives for easier creation of archives based on familiar page collections.
Improvements and Bugfixes
- Components are now rendered using the Pebble
embed
tag by default, making it easier for themes to add wrapper markup - Orchid is now being tested on JDKs 8, 9, 10, and 11
itemId
is now a static property of pages and can be viewed from the Admin Panel- Completely redesigned documentation site, with a new logo and a new domain
- Repo has been moved to the @orchidhd Github organization
0.17.7
- New Spotify tag added OrchidWritersBlocks plugin, to embed a Spotify track or playlist. Thanks @singularsyntax for the great addition!
- Great news for Scala users, you can now run Orchid from an SBT build! Thanks to the incredible work by @swaldman,
adding the
orchidSbtPlugin
will allow you to run and serve Orchid builds directly from your existing SBT projects. Full setup instructions and commands can be found on the Quick-Start page.
0.17.6
- Removes restrictions on filenames that can be used for assets. CSS assets no longer requires a
.css
extension, and likewise JavaScript assets no longer require a.js
extension. It's up to you to make sure an asset is valid or not before it gets added to the page. - When creating a Reference to a file that is not a child of the base dir, remove relative path segments so that it will be copied properly to the rendered site, and not outside of the build dir.
- Adds
kotlinPlayground
component to theOrchidSyntaxHighlighter
artifact, for converting Kotlin code snippets into runnable playgrounds.
0.17.5
- Fixed bug #312: Orchid terminates entire Maven build process when it completes
- Fixed bug #308: missing source directory prevents app from being served locally
0.17.4
- Allows to specify the
target_commitish
for GithubReleasesPublisher withcommitish
in the publisher config - Tweak CSS to make images fit page content boundaries in FutureImperfect theme
0.17.3
- Adds
siteCopyright
option tosite.about
object inconfig.yml
, which defaults tosite.about.siteName
0.17.2
- Fixes issue with null CLI parameters when running Orchid with maven plugin
0.17.1
- Fixes Gradle plugin to stay compatible with versions of Gradle before 5.x. Fixes #281
0.17.0
Orchid 0.17.0 contains many new and breaking changes, which are briefly outlined in these relase notes. Be sure to review the Migration Guide for a complete list of breaking changes and how to address them.
New Features
- New "integrations" projects
- Wiki sections can now be imported from Github and Gitlab project wikis (see integrations above)
- Sites can now be published to Bitbucket and Gitlab (see integrations above)
- New Shared Configurations allow user-defined archetype option groups. See full documentation here
Improvements and Bugfixes
- Netlify Publisher
- Now handles uploads of really large sites. Previously, deploys of more than a couple thousand pages or so would time out and fail.
- It can infer the Netlify siteId from the Orchid base URL, and is now an optional property
- Wikis
- PDF ebooks generated by Wiki plugin are now included in a Collection, so they can be linked to with the linking functions and in menus
- Fixed bug creating PDF ebooks for multiple sections
- Changelogs
- Adds Archetype to Changelog entries from
changelog.allVersions
inconfig.yml
- Version bumps are inferred from changelog entries, and no longer need to be manually entered
- Improves formatting of
meta/versions.json
file. Release notes can now be embedded in this JSON file
- Adds Archetype to Changelog entries from
- Other
- Improves console output of Git-based publishers and Swiftdoc plugin
- Swiftdoc plugin now accepts a list of source roots to find Swift sources, rather than a single directory
.puml
file extension is now recognized as a PlantUML file by default- Fixed NPE calling a TemplateFunction as a Clog-formatted string
- Fixes formatting of dates in sitemap XML files so as to not cause warnings from Google indices
0.16.10
- Allows use of relative URLs as a base URL
- Update Pebble to 3.0.9, with support for
embed
tag
0.16.9
- Allows "/" to be properly used as a base URL
- Adds
baseUrl
andhomepageUrl
filters to avoid directly usingsite.baseUrl
in templates, which doesn't work correctly with URLs ending with "/" - improves error-reporting for syntax errors in Pebble templates and YAML config files
0.16.8
- "Delombok" entire project (#249, thank you @Sumo99!)
- Makes Gradle tasks discoverable with
gradlew --tasks
(#256) - Properly render link tags from Javadoc comment text (#251)
- Build pipeline now fails if GithubPagesPublisher fails to push to remote (#238)
0.16.7
- Fixes issues rendering PlantUML diagrams
0.16.6
- Allows Changelog entries to be annotated with additional data referencable from templates
- Removed Google Plus from social model since the service is shutting down
0.16.5
- Use correct email social icon (thanks @alejandrohdezma!)
0.16.4
- Fixes a couple issues with wiki sidebar
0.16.3
- Adds wiki layout to Copper theme with sidebar menu
0.16.2
- Adds responsive content classes for Copper theme
0.16.1
- Makes some styling tweaks to Copper theme
- allows changelog entries to be loaded recursively
- Fixes issue of favicons getting mangled
0.16.0
New Features
- Adds new Copper theme! See a demo here.
- Adds new OrchidDocs bundle, for easier setup when using Orchid for project documentation. See a full docs
here. It includes the following plugins:
- Orchid Editorial
- Orchid Pages
- Orchid Wiki
- Orchid Forms
- Orchid Changelog
- Orchid Search
- Orchid Diagrams
- Orchid Syntax Highlighter
- Adds new Groovydoc plugin for documenting Groovy/Java source code. See full docs here
Bug Fixes
- Improves importing and compiling of SASS/SCSS files
- Sass (indented) syntax is now partially supported. JSass is limited in that it does not allow indented-style imports, so Orchid will fully compile all indented-style imports at the import site, essentially copying the compiled CSS to the import site. This means that you can import indented-style Sass code, but variables, functions, mixins etc. will not be imported from indented-style Sass files, and already-declared variables, functions, mixins etc. will not be accessible to the file being imported.
- Relative imports are now supported. The first file is expected to be loaded from
assets/css
as normal, but subsequent relative imports will be imported relative to the existing file location. - Absolute imports are now supported, by prefixing an import path with
/
. These files are then located absolute to your site's resources directory, rathern than the normalassets/css
directory. Files imported from within the absolutely-imported file follow the new directory as the context for further relative imports.
- Fixes issue using default favicons. Now, sites that do not specify a favicon will use Orchid's default one, rather than showing an empty/broken image as the favicon.
- Fixes Krow table display in Windows terminals. As windows terminals do not support many UTF-8 characters, the borders used for the summary table displayed poorly. Now, standard ASCII characters are used to draw the borders of the results table on Windows so that it is readable.
Potentially-Breaking Changes
There were no major updates to the Orchid framework in this release, but many of its dependencies have been updated to newer versions which might cause issues.
0.15.4
- Updates docs in admin panel, adds code samples for template function and tags
- Verifies Orchid works in JRE 9
- Compiles multiple plantuml groups in a template into multiple diagrams
- Javadoc and Kotlindoc runners now embed the formatters and work offline, no more runtime dependency resolution
0.15.3
- Updates OrchidBible dependency to hit correct endpoints and improves usability
- Parses external URLs better
- Passes command line args directly through to Dokka so Gradle can supply the proper documentation classpath
0.15.2
- Updates dependency versions
0.15.1
- Fixes issue of CLI args not using env vars when run via Gradle or Maven
- Improves display of build summary
0.15.0
- Fixes Archetype ordering for Static Pages, Posts, and Wikis, so that the archtype data overrides correctly according to intended priority
Breaking Changes
- Archetypes for Static Page groups are no longer nested under
staticPages
inconfig.yml
. The new Archetype location is simplypages.{pageGroup}
, instead ofpages.staticPages.{pageGroup}
. - Archetypes for Post Categories groups are no longer nested under
postPages
inconfig.yml
. The new Archetype location is simplyposts.{postCategory}
, instead ofposts.postPages.{postCategory}
. - Archetypes for Wiki Sections groups are no longer nested under
wikiPages
inconfig.yml
. The new Archetype location is simplywiki.{wikiSection}
, instead ofwiki.wikiPages.{wikiSection}
.
0.14.0
Bug Fixes
- Fixes broken excerpt function
- Updates FutureImperfect theme to work with new Asset Manager
- Improves asset functions to prevent collisions with AssetRelation assets
- Updates to Kotlin 1.3! And updates other dependencies to match
Breaking Changes
- Updates to Kotlin 1.3. You may need to update some of your Kotlin code to work properly with 1.3.
- Pebble template syntax for
set
tag has been changed. The identifier must be a plain name, evaluated expressions are no longer supported. (e.g.{% set 'identifier' = 'value' %}
is not longer valid, use{% set identifier = 'value' %}
instead)
0.13.0
This is a major release which contains numerous breaking changes. Please review the following changes carefully to make sure your site is updated properly.
New Features
- Adds Radio Buttons as available form field types.
- Archetypes are now auto-documented in the admin panel alongside options fields.
.properties
files can now be used as data files, or used as the Front Matter format.- Netlify CMS configs are now set up to generate modular list form definitions. When this PR on Netlify CMS is merged, Orchid will already be set up to work with it.
- Wikis can now generate offline documentation! Add
createPdf: true
to each Wiki section's config that you want offline docs, and Orchid will compile all the content for that section into a PDF. - A new Asset Management API! You can use the
asset()
template function to load an asset dynamically load and render an asset. Asset rendering is lazy, which allows you to transform your assets, such as rotating, scaling, or resizing an image. - Added a
parseAs
function which works similarly tocompileAs
, but returns parsed data instead of a rendered String.
Bug Fixes
- Menu items were not the most intuitive, especially when trying to render a submenu that also had an index page at its root. A single menu item can now have both a page it references itself, and a list of children menu items, leaving the theme to decide how to display such a situation.
- Fixes issue setting asset directories as Strings in
config.yml
. - Makes option types linkable in admin panel again.
- Fixed several issues with bad configurations in Netlify CMS config, and errors using it locally with Orchid's server.
- Prevents assets from being rendered more than once, especially when added as extra CSS or JS. Orchid now tracks the assets rendered throughout the entire build cycle, and only renders whats necessary.
- Assets attached to Posts (and other similar objects) now reference an actual asset rather than just being Strings. These assets are rendered lazily, and so can be transformed using the normal asset transformation functions.
Breaking Changes
- Menu classes have been renamed and its public method signatures have changed significantly.
OrchidMenuItemImpl
is nowMenuItem
. In addition, creating menu items now follows a Java-style Builder pattern rather then using overloaded constructors.OrchidMenuItem
is nowOrchidMenuFactory
.
- Default assets directory is now
assets/media
rather than justassets
. - Breadcrumbs APIs have been simplified, and many of its classes have been removed. Instead of the possibility of
multiple breadcrumb types, there is just a single
BreadcrumbStrategy
, and Orchid expects plugins to manage the breadcrumb structure by setting parent pages appropriately. - The Forms plugin no longer creates its own pages, and forms are only loaded from data files (
.yaml
, etc.). A form should link to an arbitrary submission page using a PageReference atredirectionPage
. - Updates Orchid Gradle plugin so extra args are passed directly, instead of split and reformatted.
0.12.17
- Fixes issues starting Orchid when there are params that are null
0.12.16
- Fixes deadlock when trying to run Javadoc
- Adds port and githubToken to Gradle and Maven property objects, so they can be passed as command-line properties
0.12.15
- Allows Maven plugin to pass parameters through system properties
0.12.14
- Adds new Maven plugin to run Orchid (thanks, @bjansen!)
0.12.13
- Removes logs accidentally left in
- More tweaks to Wiki Pages menu item
0.12.12
- Various bugfixes and theming improvements for Editorial theme, and wiki, pages, and posts plugins
0.12.11
- Updates dependency versions to resolve Clog version conflict
0.12.10
- Fixes bug parsing Front Matter when there is no page content
- Fixes bug processing Editorial theme assets
- Fixes issue of Gradle plugin released with incorrect version
0.12.9
- Fixes bug parsing Front Matter which left unwanted whitespace at top of file
- Moves Javadoc execution to external library, so the plugin no longer depends on Java
tools.jar
- Adds Github Releases publisher
- Generally improves formatting of Javadoc and Kotlindoc plugins
0.12.8
- Updates rendering of Kotlindocs to fix issue with param types, and adds comments to params, receivers, return values.
0.12.7
- Moves
tabs
andaccordion
tags to Core. - Allows users to choose a custom template for tags, similar to pages and components
- Updates
docs
tag to display the same on the front end as in the admin panel - Adds async and defer attributes to JsPage
- Fixes issue in search widget in Firefox
- Adds receiver info and richer signatures to Kotlindoc
0.12.6
- Changes standard ordering of collection search params to ['itemId', 'collectionType', 'collectionId'], which is more natural to think about and better matches the order in which the params would be needed.
- Adds changelog publisher to require a changelog entry for publishing.
- Orchid now exits with a failure status code when the
deploy
task deployment fails for any reason.
0.12.5
- Includes Kotlindoc primary comments in searchable content.
- Makes OrchidView class extend OrchidPage.
0.12.4
- Updates rendering of Kotlindoc signatures
0.12.3
- Allows attaching additional properties directly to menu items, components, and social items
0.12.2
- Fixes crash using Wiki plugin when a summary page is missing
0.12.1
- Fixes crash creating Author pages
- Ignores Mac .DS_Store files at the ResourceSource level
0.12.0
- Fixes bugs in querying index, and makes more useful overall
- Adds menu items to link to pages relative to the current page, or a page queried from the index
- Allows CSS and JS to be placed inline in a page from Front Matter
- Updates Netlify CMS to 2.0
- Adds descriptions to all common plugins items, like components, menu items, etc. Descriptions are viewable from admin panel, to make it easier to understand what you can do to build your site.
- Improves styling of admin panel to be more useful
0.11.1
- Adds extension method docs to Kotlin classes, bare methods in packages
- Updates docs for Kotlindoc plugin
- Adds global collection for external index.
0.11.0
- Adds Kotlin documentation with Dokka
- Allows page previous, next, and parent links to be overridden in Front Matter configs
- Makes Homepage URL "pretty"
0.10.1
- Adds recentPosts function, adds social links to Authors
- Adds server port as command line arg
- Improves how flags are parsed
0.10.0
This is a major release, which contains several breaking changes. Read carefully, your site might not properly if you do not update you site in line with these changes.
Notable New Features
- OrchidJavadoc no longer requires a separate Gradle plugin! The Orchid plugin will take care of starting and running
the Javadoc program and does not rely on Gradle doing it for you. This means that the
com.eden.orchidJavadocPlugin
Gradle plugin has been removed, and you must remove it from yourbuild.gradle
scripts. - Parsing command line flags now uses the same Options extraction framework as the rest of Orchid, and so is much easier to add custom flags.
- Refactors resource source APIs to be more extensible.
Breaking Changes for End-users
com.eden.orchidJavadocPlugin
no longer exists in v0.10.0 and above, and must be removed from your build scripts- FastClasspathScanner APIs have been changed significantly, and the project renamed to ClassGraph. Refer to the new ClassGraph Wiki to see how to migrate your code.
0.9.3
- Makes config and data immutable once loaded, fixing stackoverflow errors when rendering 404 and directory index pages
- Allows user-configurable regex patterns for extracting front matter, useful for putting front matter data inside a comment block to not break IDE syntax highlighting
- Orders changelog entries properly
0.9.2
- fixes crash running Orchid when build directory doesn't previously exist
0.9.1
- fixes issue rendering admin pages introduced with adding the page template functions and tags
0.9.0
This is a major release, which contains several breaking changes. Read carefully, your site might not properly if you do not update you site in line with these changes.
Notable New Features
- Tags can now be easily set up to used tabbed content. The Writer's Blocks plugin includes implementations for Tabs and an Accordion
- Publishing to Github Pages now has several publishing modes, which will allow you to publish without overwriting the old site. This is perfect for managing library documentation, as it will allow you to keep the docs around for every older version of your project.
- The
data
directory has been changed toconfig
to match theconfig.yml
file it corresponds to. In addition, you can now create adata.yml
and use datafiles in thedata
directory to host arbitrary data used in your site. The data indata
is not included as options, so there is no fear of your data accidentally changing the configuration of your site in any way, it is just data and nothing more. - Layouts are now much easier to set up and are more prescriptive, with no more "magic" included you need to know. Anything that should be included in your layouts is automatically documented in your admin panel's TemplateTags.
All Changes
- Makes TemplateTags and TemplateFunctions page-aware
- Changes Parsers to return a Map rather than a JSONObject
- Updates Pebble to 3.0.0 release version. Adds 'serialize' method to Parsers so we can write objects back into that representation if needed
- Caches compiled page content in the Page, frees the page directly instead of just its resource
- Adds accordion tabbed tag. Displays tabs in the order they are parsed
- Updates dependency versions
- Adds Tabs tabbed tag to WritersBlocks plugin
- Changes API of TemplateTags to support tags with inner tabs
- Adds multiple publishing modes for GithubPages publisher, adds bean validation to all Publishers
- Changes signature of TemplateFunctions so that filtered input is just set as an Option
- Makes all options extraction use Maps and Lists instead of JSONObjects and JSONArrays
- Sets up Hibernate Validator for validating classes with Options
- Implements scripts, styles, head, and page tags to remove the 'magic' includes previously used.
- Fixes issue in docs where bundles landing pages were not linking to their plugin pages
- Updates to Pebble 3.0, adds custom AttributeResolver to call a 'get' method with the String attribute, which allows for accessing front matter of pages and also for JSONObjects
- Renames 'dropdown' menu item to 'submenu'
- Changes name of
data
directory toconfig
, changestemplates
parameter in OrchidPage, OrchidComponent, and FormField totemplate
Breaking Changes for End-users
- Changes name of
data
directory toconfig
- changes
templates
parameter in OrchidPage, OrchidComponent, and FormField totemplate
(it still accepts either a String or an array of strings) - Renames
dropdown
menu item tosubmenu
- Many classes and methods have been changed in a non-backwards-compatible way. Updating should be pretty straightforward, but you may need to view the changes in the commit history to know exactly what to change.
- Updates to Pebble 3.0.0. Old templates will still work as they did previously, but there is some new functionality available, and some behavior might be different than it was. View the Pebble changelog to know more.
0.8.12
- Increases timeout for OkHttpClient, adds caching.
- Adds support auto-generated documentation for OrchidCollections within admin panel.
0.8.11
- Fixes some bugs with homepages, makes searching collections from templates easier.
0.8.10
New Features
- New Breadcrumbs API
- New Menu Item types
pageIds
in Pages plugin
- Helpful Kotlin extensions for registering types in
OrchidModule
and for resolving objects or sets fromOrchidContext
.
Bugfixes
- Manually specifies UTF-8 rather than relying on
Charset.defaultCharset()
- Overall improvements to Javadoc templates
Breaking Changes
- Wiki no longer adds section meus by default. You can easily add them to all Wiki pages if desired in the
wikiPages.menu
archetype. OrchidCollection.find
now returns aStream<T>
instead of aList<T>
. Its base class constructors have also been changed so that a Generator is now no longer necessary.
0.8.9
- Improves messaging with Netlify publisher
- Moves all plugin documentation into the main Orchid build, rather than each having separate Orchid sites. This makes it easier to and faster to build the main Orchid docs, and also allows for greater customization and automatic menu generation for each plugin's docs pages.
0.8.8
0.8.7
0.8.6
New Features
- Adds API for managing deployments within Orchid. API is set up and tested, but there are no Publisher implementations yet. See docs for OrchidPublisher for building custom publishers, and Publication for how to implement and use a deployment pipeline.
Bugfixes
- Fixes issue where an empty
config.yml
caused a crash. (#123) - Prevents Pebble from stripping whitespace. While this may increase the resulting size of your site, it prevents some issues it was causing when using Pebble for pre-compiling Markdown and other content that is sensitive to whitespace.
0.8.5
- Adds plugin to document Swift source code, OrchidSwiftdoc
0.8.4
- Allows fully custom directories to be used for Javadoc sources instead of only the module's
main
java sources.
0.8.3
Improvements
- Improves asset management
- Allows adding arbitrary assets to AssetHolders
- You can now set alt text and title on any AssetRelation
- Adds debug comments to pages with useful information about the classes and resources used
- Improves permalink formatting. You can now use bracketed placeholders as part of a path segment, instead of the entire segment.
Bugfixes
- Fixes bugs with Social icons, where linkedin used the wrong URL, and where custom icons were not being created
- Fixes rendering issues with server directory listing and 404
0.8.2
- Fixes regressions introduced by setting up the ModularList implementations
- Adds external URL to JavaEden/Common Javadocs
0.8.1
- Refactors options extraction into fully separate library (now managed in JavaEden/Common)
- Refactors ComponentHolder, OrchidMenu and FormFields to all inherit from a common base class of ModularList
0.8.0
- Splits Gradle plugin into a base a Javadoc plugin
- Base:
com.eden.orchidPlugin
- Javadoc:
com.eden.orchidJavadocPlugin
- Base:
- Gradle plugins now use the same version as the rest of Orchid
- Refactored options framework to make it simpler to extend and easier to use
0.7.37
- Splits Gradle plugin into a base a Javadoc plugin
0.7.36
- Adds collections for Javadoc classes, packages, and external pages
- Fixes bug where asset relation did not properly apply default configs
- Updates BsDoc theme colors to be more flexible
0.7.35
- In asset relation, only apply base URL is the source isn't already an absolute URL
- Fixes bug where drafts still showed up in recent posts lists
- Fixes bug where pages with tags would crash Netlify CMS
0.7.34
- Replaces CoreUI as the admin framework with UIkit
- Refactors admin UI to be easier to use and more helpful
- Fixes crash in admin UI when the SyntaxHighlighter plugin was not installed by removing all instances of the
highlight
tag from the admin templates
0.7.33
- Improvements to tag handling in NetlifyCMS
- Updates dependency versions
0.7.32
- Adds in lazy-loaded relations as an Option type
- Improves integration with NetlifyCMS a bit
0.7.31
- Fixes bug with new Page menu item
- Adds Authors as a Folder Collection from the Posts generator
0.7.30
- Moves index generator and search functionality out of Core and into a new plugin. It is still currently up to the theme to actually implement the search with the OrchidSearch plugin.
0.7.29
- ConfigArchetype now broadcasts an event so we can configure an item through code as well as in
config.yml
- Set config archetypes so they are all namespaced under their Generator's key, making it less likely to have options
collisions, and also makes it easier to pull all information relevant to a plugin into a single
data/
file
0.7.28
- Cleans up themes styling and layouts
0.7.27
- Added a lot of documentation to User Manual and for each plugin's README
- Fixed some bugs along the way
- Adds initial support for Netlify CMS local backend with the Orchid development server
0.7.26
- Makes BsDoc theme more flexible
- Moves Lunr search JS to core, adds it as an option to BsDoc theme
- Allows themes to be set with custom options for a specific Generator, and improves theme assets handling so the same theme with different assets don't overwrite each other
- Sets up Orchid Search to be more contextual. Setting the
searchIndices
with an array of generator keys will restrict searches to only from those indices. - Fixed several other bugs with themes and precompiling
0.7.25
- Fixes some more bugs with Forms plugin
- Improves display of command-line flags so sensitive values can be hidden from console
- Updates gradle wrapper and dependency versions
0.7.24
- Fixes a couple bugs with Forms plugin, adds Bootstrap form styling to BsDoc theme
0.7.23
- Fixes a couple regressions with BsDoc theme's JS and favicons
0.7.22
- Improves self-documentation with a much-improved admin UI
- Adds Orchid logo to documentation site and to admin UI
- Improves styling and layout of BsDoc theme
- Adds support for custom 404 page and favicon
0.7.21
- Improves documentation
- Updated several Wiki pages
- Added descriptions for all Options in all plugins, themes, and core
- Ensures all plugin and theme Orchid sites show options for every relevant class
- Auto-generates Admin lists for every injected set
- Improves several APIs
- Allows Components and Menus to directly access their current Page
- Allows the precompiler language to be customized with a Compiler service option, instead of always being Pebble
- Fixes some bugs
- Fixes issue where drafts weren't being rendered, but were still leaking through the index and being added to Taxonomy archives
- Allows pages to request not being precompiled, even when they include Front Matter
- Moves primary site hosting to Netlify. Github Pages will probably stick around to show the latest stable release, while Netlify will be updated much more frequently, be where plugin/theme submissions are added, and include the latest development features.
0.7.20
- Waits to print them until after the build has completed, to make them more noticeable.
- Adds security manager to ensure files are only written in the input, output, and temp directories.
- Adds collections for taxonomies so we can generate links to post tags and categories.
- Improves templates for FutureImperfect theme a bit.
0.7.19
- Allows taxonomies to get terms from page methods as lists or as arrays, which fixes bug making hierarchical post categories' archives
0.7.18
- clears template cache every build
- Fully implements hierarchical categories in Posts plugin
- Fixes several bugs in Core and in Posts plugin
0.7.17
- Adds RSS and Atom feeds to Posts plugin
0.7.16
- Improves Javadocs more, adds optional stylesheet for non-bootstrap themes
- Ironically, converts Javadoc plugin entirely to Kotlin
0.7.15
- Improves styling and usability of Javadocs plugin
- More improvements to design of documentation site
- Sets up all single-injected classes to be able to be overridden by 3rd-party plugins, so now there is nothing that cannot be customized or extended.
0.7.14
- Updates design of docs site
- Minor bugfixes
0.7.13
- Adds tag to embed Twitter tweets or timelines
- Adds tag to embed Instagram posts
0.7.12
- Creates components and menu item types for Taxonomies plugin:
- MenuItem to display all Taxonomies
- MenuItem to link to a Taxonomy archive, or a dropdown of the terms in the Taxonomy
- MenuItem to link to a Taxonomy Term archive, or a dropdown of the pages in the Taxonomy Term
- Component to link to a Taxonomy archive, or a dropdown of the terms in the Taxonomy
- Component to link to a Taxonomy Term archive, or a dropdown of the pages in the Taxonomy Term
0.7.11
- Creates Taxonomies plugin, which makes it possible to manage custom taxonomies and archives across many plugins. It was inspired by and modelled after Hugo's custom taxonomies, but adds its own spin that makes it much more flexible and powerful with Orchid's content model.
- Removes the Category and Tag archive pages from the Posts plugin. These archives are now created with the taxonomies plugin.
- Adds generation
sitemap.xml
androbots.txt
in Core. - Adds generation of author pages for the Posts plugin. Authors that are set in the config (as before) or that have
pages in
posts/authors/
will have pages generated for them. Authors added to individual posts are "guest authors".
0.7.10
- Adds tags for Gist and Youtube in OrchidWritersBlocks plugin
- Adds functions for Pluralize, nl2br, and EncodeSpaces in OrchidWritersBlocks plugin
- Adds tags for Highlight via pygments in OrchidSyntaxHighlighter plugin
- Adds function for Load in core
- Adds Archetypes that target specific sections of pages in the Posts, Pages, and Wiki plugins
0.7.9
- Creates a new Language Extension which will include various additional Components and TemplateTags for better composition
- Creates basic structure for generating NetlifyCMS from Orchid configuration
0.7.8
- Move site About to OrchidSite class to better define site-wide data
- Adds better self-documentation with tables of options
- Moves AdminTheme to PluginDocs plugin
- Adds check to make sure a Page exists for every official plugin in OrchidCore docs
0.7.7
- Completely removes jTiwg as a dependency, trims down Flexmark dependencies
- Adds API to more easily add custom Pebble tags
- Changes Alert from a function to a tag
- Travis CI now deploys to gh-pages branch
0.7.6
- Relaxes some task dependencies that weren't necessary
- Fixes issue of docs from subprojects not being copied to final output directory
- Bundles release notes in the docs archives
0.7.5
- Fixes issue of Travis CI Github Pages plugin suddenly breaking
0.7.4
- Adds publish and expiry dates, which are used to check for time-based draft status.
- Runs
orchidBuild
task on subprojects with no Java source, so that we still have all subprojects generating Orchid documentation. - Adds short debounce to rebuilds.
- Deep-merges config, environment-specific config, and datafiles.
- Adds injectable template globals.
- Improves user manual documentation.
0.7.3
- Improves design of FutureImperfect theme
- Adds Gravatar support in OrchidPosts
- Fixes issue of post archives being reversed
- Allows Homepage to choose own next and previous links
0.7.2
- Adds APIs to RenderService to allow for dynamic rendering modes
- Allows StaticPages to configure its own renderMode
- Allows StaticPages to set whether it uses a pretty URL
- AssetsGenerator now only loads assets from local resources
- Fixes issue of Options in kotlin having different setter names than expected, causing Options Extraction to fail
- Improves process of adding assets to themes, pages, and components which eliminates issue of assets being added more than once
- Adds interface for Components declared on Themes to add their assets to the theme. Previously, only Components declared on Pages had their assets added to the page.
0.7.1
- Archetype objects and arrays now get merged together instead of replacing one another. Useful for site- or generator-wide Components or Menus.
- Hides Components based on 'hidden' flag.
- Sorts Components according to order.
- Allows OptionsExtractor to add entire Options object to its OptionsHolder with a new @OptionsData annotated field.
- Posts generator now supports different pagination options for each category.
0.7.0
- Adds basic concept of Options Archetypes, applies it to all OrchidPage types
- Updates dependency versions
0.6.0
- Updates all plugins to Kotlin
- Minor bugfixes and behavior improvements across all plugins
- Sets up all plugins to generate their own reference documentation