Statiq.Framework Release 1.0.0-beta.18
Wednesday, July 29, 2020 in Release Notes
  • Breaking change: Changed the IPipelineOutputs indexer to filter documents by destination path from all pipelines instead of get documents from a specified pipeline. To use the previous behavior, call IPipelineOutputs.FromPipeline(string). This will make the more common case (finding a document or documents among all pipelines) easier. To refactor your code to match the old behavior, do a string search for "Outputs[" and replace with Outputs.FromPipeline().
  • Breaking change: Changed the DocumentList<TDocument> indexer to return all matching documents instead of the first matching document. To refactor your code to match the old behavior add a .FirstOrDefault() after the call to the indexer.
  • Breaking change: Removed the CompileScript module in favor of global script caching (so using the EvaluateScript module will also cache the script compilation, removing the need for a separate cached assembly).
  • Breaking change: Removed all but a single string-based evaluation method from IScriptHelper to promote global script compilation caching.
  • Breaking change: Removed global metadata properties from scripted documents, metadata, and shortcodes due to performance penalty and inability to cache across documents. Uses of global properties that refer to other metadata will have to be replaced with Get() variants. For example, a scripted metadata value => Foo should become => Get("Foo").
  • Breaking change: Renamed the AbsolutizeLinks module to MakeLinksAbsolute for clarity and to match with the new MakeLinksRootRelative module.
  • Added a new MakeLinksRootRelative module.
  • Added a IEnumerable<IDocument>.ContainsById(IDocument) extension method to determine if a sequence contains an equivalent document by ID.
  • Added a new ConcurrentCache<TKey, TValue> helper class that uses Lazy<T>, which improves performance of internals by avoiding duplicate value factory evaluation.
  • Script compilations are now globally cached, dramatically improving performance of scripted documents, metadata, and shortcodes.
  • Fixed some bugs with the CacheDocuments module and document hash code generation.
  • Added a IComparer<T>.ToConvertingComparer() extension method that converts a typed comparer into a IComparer<object> that performs type conversions.
  • Added a IEqualityComparer<T>.ToConvertingComparer() extension method that converts a typed comparer into a IComparer<object> that performs type conversions.
  • Added a RemoveTreePlaceholders module to remove tree placeholder documents without flattening.
  • The MergeMetadata and MergeDocuments modules no longer merge settings (since they're inherited by the document regardless).
  • Added IMetadata.WithoutSettings() to return filtered metadata without any settings values.
  • Added the key being requested to IMetadataValue.Get() so that metadata values can use it if needed.
  • Added recursive metadata expansion detection of IMetadataValue metadata values (it will now throw an error so you know which key is recursively expanding).
  • Added a RenderSectionOrPartial(string sectionName, string partialName) helper to the base Razor page.
  • Added feed metadata to the output documents from GenerateFeeds.
  • Added a new AddRtlSupport module in Statiq.Html that automatically adds RTL attributes to HTML elements (#113, #15, thanks @@encrypt0r).
  • Added a IEnumerable<IDocument>.RemoveTreePlaceholders() extension method.
  • Added an option to remove tree placeholder documents in the FlattenTree module and the IEnumerable<IDocument>.Flatten() extension methods.
  • Added settings as a default settings file name (with support for JSON, YAML, or XML formats).
  • Added support for appsettings and statiq YAML (.yml and .yaml) and XML (.xml) configuration files.
  • Added containing types to the symbol ID for nested symbols in the AnalyzeCSharp module (#116).
  • Added a message about using a higher log level when an error occurs (#115).
  • Fixed a bug on engine reruns (I.e. the Statiq.Web preview command).